Loading...
Person
Fernando Sérgio Rodrigues de Brito da Mota Barbosa
16 results
Search Results
Now showing 1 - 10 of 16
- Mobile applications for accessible tourism: overview, challenges and a proposed platformPublication . Ribeiro, Fernando Reinaldo; Silva, Arlindo F.; Barbosa, Fernando Sérgio; Silva, Ana Paula; Metrôlho, J.C.M.M.In the Travel & Tourism sector, mobile applications could do much more than simply provide information about specific locations or recommend places and itineraries based on the user location. They could leverage a wide range of technologies to be aware of the interests and specific needs of disabled tourists, providing them with appropriate and tailored information. This information should be presented using appropriate interaction mechanisms, able to help this specific, but large, group of the population in their everyday tourist activities, thus contributing to even more accessible tourism and travel activities. We present an overview of mobile applications that, in some perspective, may be used to support people with disabilities in their tourist activities. This overview allows us to explore the key challenges involved and some available alternatives, as well as to identify their positive aspects. However, it also underlines some issues that could be addressed more carefully and extensively in the application ecosystem. We also present some preliminary recommendations for a collaborative and personalized system framework to support people with disabilities in their tourist and travel activities. Ongoing work on a first prototype has already given us valuable insights into the identified challenges and we expect it to be a major step towards a more formal specification of our platform, as well as its development and test.
- Using roles to model crosscutting concernsPublication . Barbosa, F.S.; Aguiar, AdemarIn object oriented languages the problem of crosscutting concerns, due to limitations in the composition mechanisms, is recurrent. In order to reduce this problem we propose to use roles as a way of composing classes that extends the Object Oriented approach and can be used to model crosscutting concerns. To support our approach we developed a role language that extends Java, while being compatible with existing virtual machines. As validation we conducted a case study using three open source systems. We identified crosscutting concerns in the systems and then modeled them using our role approach. Results show that roles are a viable option for modeling crosscutting concerns.
- PVC pieces processing using a 3 axes platform based machinePublication . Garrudo, Paulo; Parreiras, Nuno; Barbosa, F.S.; Metrôlho, J.C.M.M.; Martins, CostaThis paper describes a machine designed to process little quantities of small PVC pieces, used in automobile test equipment. The system should provide a easy way of reconfiguring to process all the pieces used, as they are very much alike, but with significant differences. The machine this paper proposes is based in a 3 axes moving platform controlled by a PC equipped with commercial I/O boards. The next sections will explain the different modules that constitute the above-mentioned system.
- Roles as modular units of compositionPublication . Barbosa, F.S.; Aguiar, AdemarObject oriented decomposition is the most successful decomposition strategy used nowadays. But a single decomposition strategy cannot capture all aspects of a concept. Roles have been successfully used to model the different views a concept may provide but, despite this, roles have not been used as building blocks. Roles are mostly used to extend objects at runtime. In this paper we propose roles as a way to compose classes that provides a modular way of capturing and reusing those aspects that fall outside a concept’s main purpose, while being close to the OO approach. We present how roles can be made modular and reusable. We also show how we can use roles to compose classes using JavaStage, a java extension that support roles To validate our approach we developed generic and reusable roles for the Gang of Four patterns. We were able to develop reusable roles for 10 out of 23 patterns, which is a good outcome.
- Modeling and programming with roles: introducing JavaStagePublication . Barbosa, F.S.; Aguiar, AdemarRoles are not a new concept, but they have been used in two different ways: as modeling concepts in a static view and as instance extensions in a dynamic view. For these views only the dynamic offers supporting languages. The static view, although proving the utility of roles in modeling, does not offer a programming language that allows developers to use roles all the way from modeling to programming. We try to overcome this by presenting our role language JavaStage, based on the Java language. We do this by designing and implementing a simple framework and then compare the results with its OO equivalent. Our results show that static roles are in fact useful when used in code and that JavaStage features expand role reuse.
- Generic roles: reducing code replicationPublication . Barbosa, F.S.; Aguiar, AdemarFor many years the concept of modularity has been considered a very important part in the development of large software systems. Modules help to manage the system’s complexity by decomposing it in smaller parts. These parts can be assigned to individuals or teams for development. Modules hide the information they manipulate behind an interface, allowing its developers to develop the module independently of any other module in the system. Developers can change the information their module manipulates and even the way it does it without the need to consult other developers, and breaking their code. This enables the interchangeability of modules, allowing one module to be substituted by another without further modifications to the system. It also reduces compiling time as modules can be precompiled. The concept of modularization lead to the dawn of several decompositions techniques, each with its own ideas on how a system should be decomposed into modules. For each decomposition technique and to help programmers extract the most benefits from modularization, several programming languages provide support for expressing modules. In object-oriented decomposition, for example, several programming languages provide support to define abstract data types, usually in the form of classes. Ideally, each module would capture one coherent concept that would deal with a set of coherent concerns related to the module’s concept. Unfortunately that is not always true. Sometimes, modules need to interact in more complicated and intertwined manners. Sometimes, the need to communicate with other modules lead one module to assume concerns that are not related to its main concern. This is, as argued by many authors, because only a single decomposition strategy is used . To avoid this we may need to use more than one decompositions strategy or extend an existing one. Code clones are an outcome of the lack of other decomposition strategies, among others sources. Code cloning in a system is considered a bad thing with multiple drawbacks. One of the more known problems is the inconsistent maintenance: bugs are fixed in some clones, but not in others. Another major objection to the use of cloning is that it degrades the design of the system over time. Awkward, verbose designs lead to the accumulation of irrelevant code that ends up obscuring the original intent of the code. In this dissertation we study the reduction of the code replication using modularity as a cornerstone around which our solution must be based. We intend to reduce code replication using another kind of module, which we can use to extend the object-oriented strategy. The module that we will study is the role. Roles have been used to specify na object’s behavior related to a specific collaboration in the modeling stages of a system. But in the implementation that specification is merged with all the object’s other collaboration behaviors, inside a class. It is a purpose of this dissertation to take the specification from the design phase to the implementation phase and study its impact on the code replication problem. The solution proposed in this dissertation is to use roles as a way to compose classes and thus reducing code replication. To pursue this goal a role language is designed and a suitable compiler is implemented. The JavaStage language allows a programmer to “program with roles”. It introduces several features like a powerful renaming mechanism and to state role dependencies easily. Using JavaStage and roles we were able to identify several refactorings that enables us to write the replicated code as roles thus removing the code clone. The use of these refactorings proved their value when applied to a series of case studies developed to assess the amount of duplicated code that could be removed using roles. As already mentioned, the modularity principles were followed throughout the design of the proposed solution and, to assess the reusability of roles, a role library was started. Its evolution corroborates the idea that roles are reusable modules and can be used as a compositional element.
- A new framework for accessible tourism mobile application developmentPublication . Ribeiro, Fernando Reinaldo; Silva, Arlindo F.; Metrôlho, J.C.M.M.; Silva, Ana Paula; Barbosa, Fernando SérgioRecent years have seen an increasing realization of the importance and potential of accessible tourism. To support it, the ICT industries have provided many different applications, especially for mobile computing frameworks. An analysis of these applications allows us to identify some issues that are not yet fully addressed. These include the absence of collaborative features; the lack of involvement of all stakeholders; the inexistence of synergies; the lack of widely accessible geographic databases and the limited scope of focus within the disability range. To tackle some of these issues, we propose a common framework for development of tourism accessible related applications. This framework stores and manages tourism information and makes this information available to be used by mobile applications developers through specific web services. This approach can represent an important contribution to accessible tourism, by decreasing the cost and facilitating the development of new applications supporting new products and services.
- Reusable roles, a test with patternsPublication . Barbosa, F.S.; Aguiar, AdemarAlthough roles have been around for a long time they have not yet reached mainstream programming languages. The variety of existing role models may be a limiting factor. We believe that for roles to be widely accepted they must enhance code reuse. An outcome would be a library of roles. We present and discuss what we feel are the characteristics that a role model must have to enable reusable and player independent roles. In this paper we present our role model and JavaStage, a role language that extends Java, with examples of reusable roles. Finally, we present our steps towards the building of a role library, by presenting the roles developed from the analysis of the GoF Design Patterns. The results obtained, we developed roles for 10 of the 23 GoF patterns, are promising.
- Composing classes: roles vs traitsPublication . Barbosa, F.S.; Aguiar, AdemarCode replication has significant drawbacks in system maintenance. Code replication can have its origins in the composition limitations of the language. Several proposals have tried to overcome these limitations. A popular one is traits. However, traits do not support state or visibility control. Static roles are also a way of composing classes that has the benefits of traits and offers state, visibility control and other advantages as block renaming. We compare both approaches on how they are used to compose classes, and how they can be used to reduce code replication caused by composition limitations. As a case study we will compare how both approaches can reduce code replication by detecting and removing code clones within the JHotDraw framework. Results show that roles are capable of reducing a larger amount of replicated code than traits.
- Three axis machine to process small piecesPublication . Garrudo, Paulo; Parreiras, Nuno; Barbosa, F.S.; Metrôlho, J.C.M.M.; Martins, CostaThis paper describes a machine designed to process small PVC pieces, used in automobile cable testing equipment. This machine should allow several different processing tasks without too much reconfiguration, thus providing a high level of automation. The solution is based on a three axis movable platform moving inside a cage structure where several tools are attached. This paper describes the machine control hardware and software, not the mechanical structure. The machine processes a piece at a time. The piece is placed in the platform and held in place by a gripper. The platform moves inside the cage placing the piece in the appropriate tool position, following a checklist of operations. The machine is controlled by a PC (Personal Computer), equipped with a commercial I/O interface board and a motion control board. The software developed is composed of three modules for the different control and configuration needs. One used after the machine is physically reconfigured. The second module allows the definition of the operations to be performed and respective coordinates. This module is used when a new series of pieces is to be processed. The third module controls the manufacturing process.