Anais – ELA-ES – Sessão de Estudantes
Transcription
Anais – ELA-ES – Sessão de Estudantes
PUC! Anais da Primeira Escola Latino America de Engenharia de Software ELA-ES 2013 Volume II Sessão de Estudantes PUC-Rio, Rio de Janeiro, Brasil 9 a 12 de Julho de 2013 Departamento de Informática PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO DE JANEIRO RUA MARQUÊS DE SÃO VICENTE, 225 - CEP 22451-900 RIO DE JANEIRO - BRASIL Organização Coordenador Geral Carlos José Pereira de Lucena (PUC-Rio, BR) Coordenadores de Programa Alessandro Garcia (PUC-Rio, BR) Nelly Bencomo (Aston University, UK) Coordenadores de Organização Ingrid Oliveira de Nunes (UFRGS, BR) Bruno Barbieri de Pontes Cafeo (PUC-Rio, BR) Coordenadores da Sessão de Estudante Elder José Reioli Cirilo (PUC-Rio, BR) Bruno Barbieri de Pontes Cafeo (PUC-Rio, BR) Eiji Adachi Medeiros Barbosa (PUC-Rio, BR) Coordenador do Painel da Indústria Isela Macia Bertran (General Electric Global Research, BR) Coordenador Financeiro Francisco Dantas de Medeiros Neto (UERN, BR) Coordenador de Publicidade Vanius Zapalowski (UFRGS, BR) Organizadores Locais Davy Baía (PUC-Rio, BR) Carolina Valadares (PUC-Rio, BR) Eiji Adachi Medeiros Barbosa (PUC-Rio, BR) Supporting Requirements Engineering Processes in Small Software Enterprises Alcides Quispe, Sergio F. Ochoa Computer Science Department, Universidad de Chile, Santiago, Chile {aquispe, sochoa}@dcc.uchile.cl Abstract. Selecting software development practices according to the features of the project to address, has been emphasized as relevant research topic by the software engineering community. A one-size fits-all approach does not work for software development in general, and also to perform the Requirements Engineering (RE) activities. RE practices play an important role in the success of a software project, particularly when they are run by Small Software Enterprises (SSEs), due these organizations are usually fragile in terms of human, technological and economic resources. Therefore, selecting the most appropriate RE practices according to the project features, tends to be mandatory for them. Although several RE practices have been included in software processes proposed for SSEs (e.g. ISO/IEC 29110, MoproSoft, MPS.BR, Tutelkan Reference Process, REPM, Uni-REPM, and OWPL), it is difficult to identify which RE practices are specifically appropriate to address specific projects. The current proposals do not provide guidelines to support this selection of RE practices. Trying to address this problem, this thesis work has developed a general RE process that embeds a minimal set of RE best practices and includes variability points. This process can be tailored according to the project characteristics, which have been captured through a project context meta-model. It includes several project attributes (e.g. project type, application domain, customer type, project duration, etc.) that they have been obtained from the empirical observation of various SSE in Chile. Once developed the RE general process for SSE, we used a MDE tailoring approach to support the adaptation of the RE process according to the characteristics of particular projects. Two types of scenarios were used as support for the development and validation of the proposed approach: a) an academic scenario, where real software projects are undertaken by undergraduate students of the fifth year of Computer Science at the Universidad de Chile; and b) a software industry scenario, where four Chilean SSEs (that are part of the ADAPTE research project: www.adapte.cl) contributed in this research. The preliminary results indicate that the eighteen practices embedded in the RE general process are good enough to cover the RE practices needed for project types usually developed by SSEs. Considering that SSEs represent an important percentage of the software industry in Latin America, as elsewhere in the world (88% in Chile; 70% in Brazil; 78% in Canada; 94% in the USA; and 91% in Finland), the results of this research work could have a major impact. Keywords: Requirement Engineering Practices, Requirement Engineering Process, Small Software Companies, Software Process Tailoring. Analyzing Architectural Properties During Design of Architectures Using SysML Models Daniel Cunha da Silva, Jair Cavalcanti Leite Department of Computer Science and Applied Mathematics (DIMAp) Federal University of Rio Grande do Norte (UFRN) [email protected], [email protected] Abstract. Decisions to design software architectures of software-intensive systems are driven mainly by functional and non-functional requirements. Requirements have a significant impact on the overall structure of the architecture. Thus, the decisionmaking performed by architects for tradeoff between different requirements is not, in most cases, a trivial task. This problem is recognized by the literature that says there is currently a lack of tools or techniques to assist the architect in this sense, and when there are, many of them are carried out on an ad hoc or through non-integrated methods. In order to assist the design activity and solve the problem mentioned above, this work presents a way to anticipate possible conflicts among non-functional requirements occasioned by architectural decisions taken by analyzing the properties of the architecture. To assist in this analysis were used software metrics associated with the properties. The idea is to verify that during the design of architecture, the decisions are taken that, consequently, generate adjustments in the architectural properties, affect the non-functional requirements. This effect can be measured by a metric associated with such architectural properties. Currently, work has raised the following architectural properties: number of elements, number of ports, number of connections, coupling and introducing security mechanisms. These properties, which are not unique to particular requirement, impact the requirements for performance, security, maintainability and modifiability, and their respective measured by software metrics. In order to extract the architectural properties evaluated in architecture, this paper uses the modeling language SysML, which is a general purpose language that includes information about hardware, software, processes and stakeholders, extended UML. It allows modeling the behavior and design of a system and its environment, and its relationship with non-functional requirements using constraints and parameters. In this approach we use SysML to include the specification of requirements and traceability relationships between architectural elements that fit into our purpose. SysML allows the representation through notes and use the requirements diagram, architectural properties as derived requirements. The work was implemented as proof of concept in a web system for evaluating postgraduate courses developed by UFRN. The study showed that, through the use of SysML, changes in architectural properties affected their nonfunctional requirements of the system, assisting architects in decision-making. It was also verified that the analysis was facilitated by the use of SysML. As future work we intend to identify other architectural properties of other non-functional requirements and applying SysML to represent other elements involved in the design activity, such rationales, architectural patterns and styles, among others. Keywords: Non-functional requirements, architectural properties, decision-making and SysML. Tecnologias Facilitadoras de Aprendizagem Organizacional em Programas de Melhoria de Processo de Software Davi Viana e Tayana Conte Instituto de Computação – Universidade Federal do Amazonas (UFAM) {davi.viana, tayana}@icomp.ufam.edu.br Resumo. A Melhoria de Processo de Software (MPS) tem se tornado uma estratégia constante em organizações para aumentar a qualidade dos seus produtos. Essas organizações partem da premissa que a qualidade do software pode ser elevada devido ao aumento da qualidade do processo de desenvolvimento. Contudo, é preciso criar mecanismos que institucionalizem a melhoria contínua dos processos. Esses programas envolvem diversos conhecimentos que podem ser novos para os membros da organização. Um programa de MPS não deve ser visto como esforço único, mas sim como algo evolutivo necessitando, assim, de constante aprendizagem. Desta forma, busca-se focar no seguinte questão de pesquisa: “Como facilitar a aprendizagem organizacional em programas de Melhorias de Processo de Software?”. A aprendizagem organizacional é um processo de aperfeiçoar ações por meio de compreensão e conhecimento, ampliando os conhecimentos existentes. Além disso, a aprendizagem organizacional consiste em uma série de interações entre a adaptação no nível individual (ou de subgrupo) e adaptação no nível organizacional. Pesquisas tem sido realizadas buscando apoiar organizações que aprendem no contexto de aplicação, evolução e desenvolvimento de software. Essas pesquisas utilizam mecanismos tecnológicos para apoiar a aprendizagem, como wikis e sistemas de gerenciamento do conhecimento. Contudo, somente a tecnologia não é suficiente, uma vez que as pessoas estão no centro do processo de aprendizagem, pois são elas que criam e compartilham o conhecimento. Desta forma, esta proposta de Doutorado visa pesquisar tecnologias (técnicas, métodos, processos e ferramentas) que apoiem a aprendizagem organizacional em programas de MPS do ponto de vista dos profissionais de software, contando com as seguintes inovações: identificação do ciclo de vida das lições aprendidas/conhecimento da organização; questões que podem influenciar positivamente e negativamente a aprendizagem organizacional em MPS; identificação e avaliação de meios de transferência do conhecimento. Como resultados obtidos até o momento, tem-se uma revisão sistemática da literatura (RSL), onde foi possível identificar formas de disseminar o conhecimento em organizações de software. A revisão permitiu identificar também fatores que influenciam no compartilhamento de conhecimento, como a influência das comunidades de prática e treinamentos. Adicionalmente, foi realizado um estudo qualitativo que analisou como as lições aprendidas de projetos são compartilhadas na organizações. A partir dos resultados da RSL, serão criados modelos visuais das tecnologias disponíveis com o objetivo de identificar melhores formas de facilitar a aprendizagem organizacional em organizações de software. Em seguida, as tecnologias identificadas e as novas tecnologias propostas serão validadas através de diferentes Estudos Experimentais em Engenharia de Software e irão compor o arcabouço de tecnologias facilitadoras. Espera-se que essas tecnologias integrem-se às atividades do programa de MPS promovendo meios de aprendizagem dos conhecimentos necessários. Palavras-chave: Melhoria de Processo de Software, Aprendizagem Organizacional, Engenharia de Software Experimental. MoDre4CLouD - A Framework for Agile Requirements Modelling for Cloud Computing Fernando Wanderley1 1 Departamento de Informática – Faculdade de Ciências e Tecnologia – Universidade Nova de Lisboa (FCT/UNL), Lisboa, Portugal. [email protected], [email protected] Abstract. The complexity and social impact of emerging technologies is dramatically growing and poses new challenges to many engineering disciplines. Requirements Engineering (RE) is not an exception, and will be our target one. Among these emerging technologies we highlight the strong growth of Cloud Computing (CC) adoption. CC represents a fundamental shift on how cloud applications need to be built and run. The different nature of cloud application development will drive changes in software development process frameworks, which will become more agile and practice-oriented. So, the traditional requirements models need to be flexible enough making them able to adapt quickly to environment dynamic behaviour changes (e.g. CC environment) especially related to context-aware systems. Another important factor is that there is much less work covering the usage of MDD for early requirements models in general and mainly for cloud requirements models in particular. It would be desirable to integrate dynamically and consistently these requirements to cloud architecture. More recently, models for requirements at runtime have been developed, aiming at managing the complexity of evolving software behavior while it is executing. Other works proposes an approach for the design of adaptive systems based on requirements and inspired in control theory to monitor its requirements at runtime. Other proposals focus on requirements adaptive systems. KAOS-based proposals use linear temporal logic to specify requirements. For example, RELAX is based on SHALL statements and fuzzy branching temporal logic, which is also more complex than the approach we propose. Tropos-based proposals use the Belief-Desire-Intention model as reference architecture for cloud systems. Therefore, the main goal here is to propose an Agile Requirements Modelling Framework for Cloud Systems (MoDrE4Cloud), flexible (autoconfiguration) and able to represent a set of dynamic variations in the context of cloud systems architecture. The main components of this framework are: (i) Agile requirements elicitation with Mind Map Modelling used as a seed for generation of Goaloriented models; (ii) Composition (Safe) of Partial goal Models representing the variabilities of goals and soft-goals; (iii) and then the architectural derivation from these models by MDD techniques. As the main contributions, we’ll have: (i) The representation of variability of goals through partial goal-oriented model definition; (ii) the formal definition of the dynamic composition of these partial models to represent more flexible dynamic behavior; (iii) an agile process of generating these partial models through Mind Maps adoption; (iv) finally, to develop MDD techniques to build early RE models for cloud applications and from them derive architectural models. Keywords: Goal-Oriented Requirements, Model-Driven Engineering, Agile Requirements Modelling, Cloud Computing, Software Architecture. Providing real-time decision support in flood management using volunteered information Flávio E. A. Horita1, João Porto de Albuquerque1 1 Department of Computer Systems, ICMC/USP – University of São Paulo (USP) {horita, jporto}@icmc.usp.br Abstract. The recent catastrophic events in Haiti, Pakistan and Chile in 2010, Queensland in 2010-11, Christchurch and Japan in 2011 and the United States in 2012-13, highlighted the growing problem of natural disasters and the numerous economic and social damages caused. Within this context, floods have an important role, they occur when the water level exceeds its usual state, causing significant losses for both residents and governments of the affected region. As a result, the Flood Management (FM) acquires pronounced importance as a measure of adaptation to climate change and the consequent increasing frequency in the occurrence of floods. Thus, FM is composed by three phases, pre-flood planning, emergency management and post-flood, all these phases aims to execute activities to improve the capacity of communities on resist to changes or adapt in order to achieve a new level of functioning or structure. In all its phases, information plays a key role in ensuring the reduction of impacts. Therefore, it is important that there are accurate, timely and complete information about the current state of environmental, social, structural and economic variables. Geographical information is particularly important in this context, since environmental changes and floods are always bound to a geographical context. Thus, Spatial Decision Support Systems (SDSS) can be important technological resources. These are interactive systems designed to support one or more users in making decisions in a semi-structured decision context. SDSS thus integrate technologies related to Geographic Information Systems (GIS) with the features of Decision Support Systems (DSS). However, these traditional systems in most cases use static and limited data to simulate or help on the decision-making. Thus, it becomes necessary to develop procedures for their modification in accordance with changing conditions in the local emergency. In this context, VGI (Volunteered Geographic Information), i.e. information provided by the local population, who are smart, familiar with the area and equipped with appropriate devices, presents itself as an alternative to provide rich and updated information in order to facilitate community organization and reaction measures of official agencies. Nevertheless, these voluntary information create a huge number information that highlight issues related with its, credibility, quality and integration. In this sense, this proposal aims to develop an approach to support the process of decision making in FM exploring the integration of VGI and SDSS focused on increasing the capacity of prevention, control and response of communities affected by floods. Among its expected results, we highlight the development of software tools and processes to integrate of available data, increase and analyze the quality of volunteer information and support the decision making process by community members, agencies and official organizations. Keywords: Spatial Decision Support Systems, VGI, Floods Management, Decision Support Systems, Crowdsourcing. Do Language Constructs for Concurrent Execution Have Impact on Energy Efficiency? Gustavo Pinto1 and Fernando Castor¹ 1 Centro de Informática – Universidade Federal de Pernambuco (UFPE) [email protected], [email protected] Abstract. Multicore applications can use many different approaches to manage parallel execution. These techniques have different trade-offs in terms of performance and generality. In this study, we present an approach that aims analyze whether taking energy consumption into account creates additional trade-offs. Furthermore, since parallel programming enables programmers to run their applications faster, a common belief is that this application will also consume less energy. We call this as the “Race to idle” philosophy. In summary: faster programs will consume less energy because they will have the machine idle fast. In this poster, we demonstrate that it could not be necessarily true, at least for concurrent systems. Our study has analyzed the performance and energy consumption of three benchmark applications written in Java and Scala, using a number of techniques to manage parallel execution. We ran these experiments in a number of different configurations while varying a group of attributes (the number of threads in use, the JVM implementation and the clock frequency), in order to verify if these changes have impact on the application energy consumption, energy efficiency and performance. Our study shows that these factors could create great variations. For example, for a CPU-bound problem, the ForkJoin framework can perform better while using less energy. At the same time for a heavily IO-bound problem, it can consume about 10% more energy than a sequential implementation, although still 30% faster. Other techniques have great differences as well, and no single solution was the best in all aspects. Moreover, our experiments show that factors such as the nature of the problem to be solved, the CPU clock frequency, and the JVM implementation can create variations. The general conclusion that we can draw from this study is that yes, language constructs for parallel execution can impact energy consumption. Our approach indicates that it is possible to switch from one technique to another in order to consume less energy. These results lead us to conclude that it is very difficult to generalize a relationship between performance and energy consumption for concurrent systems. For these systems, winning the race to idle does not imply in more energy efficiency. This study is a step towards a better understanding of the interplay between energy efficiency and performance. Currently, however, it would still be very difficult to organize this information in a catalog. In the future, we intent to address this problem by conducting a broader-scoped study. The results of this new study will provide input for us to derive a catalog of energy code smell for concurrent software. Then we plan to proceed with the design of refactoring catalog that will enable application programmer to safely restructure their applications to use less energy. Keywords: Energy-Efficiency, Language Constructs, Parallel Execution Agrupamento Automático de Solicitações de Manutenção Henrique S. C. Rocha1, Marco Túlio de Oliveira Valente 1 1 Departamento de Ciência da Computação – Universidade Federal de Minas Gerais [email protected], [email protected] Resumo. Manutenção de software é uma das fases mais relevantes no ciclo de vida de projetos de software. Alguns estudos apontam, por exemplo, que essa fase pode representar até 80% dos recursos alocados durante o ciclo de vida de um sistema. Tipicamente, tarefas de manutenção são criadas a partir de requisições dos usuários de um sistema. Entretanto, em diversos sistemas, requisições de manutenção são tratadas de forma ad-hoc e isolada, à medida que as mesmas são criadas em um sistema de gerenciamento de issues, como Bugzilla. Essa política contínua para tratamento de manutenções tem como desvantagem o fato de não propiciar ganhos de escala, que ocorrem tipicamente quando requisições individuais são agrupadas, gerando-se projetos de manutenção de software. Em outras palavras, uma abordagem mais adequada consiste no agrupamento de diversas requisições de usuários durante um determinado período de tempo, com a consequente criação de projetos de manutenção. Se esses projetos incluírem requisições similares, então os desenvolvedores poderão implementá-los de uma forma mais rápida e ágil. Como benefício final, tais políticas podem propiciar uma economia de escala se comparadas ao tratamento clássico tradicional. No entanto, uma dificuldade de abordagens periódicas é que elas dependem de uma autoridade com conhecimento global sobre todo desenvolvimento do software, a qual será como responsável pela criação anual dos projetos de manutenção. O estabelecimento de tal autoridade é particularmente complexa em projetos código-aberto. Assim, o principal objetivo desse trabalho é propor uma abordagem automática e não-supervisionada para criação de projetos de manutenção agrupando requisições semanticamente similares. A abordagem proposta funciona conforme descrito a seguir: (i) cada requisição é inicialmente pré-processada usando-se técnicas de processamento de linguagem natural, para, por exemplo, remover stop-words, tratamento de stemming, etc; (ii) dada uma nova requisição, se ela for semanticamente similar àquelas contidas em um projeto de manutenção ainda em aberto, então ela será alocada ao mesmo; (iii) caso contrário, cria-se um novo projeto para essa requisição. No estágio atual do trabalho, usa-se a similaridade do cosseno para verificar a similaridade entre as descrições textuais de duas requisições de manutenção. Por fim, cada projeto de manutenção fica aberto por um período de tempo pré-definido. Após esse período, o projeto é fechado e designado para uma equipe de desenvolvimento. Para testar e avaliar a abordagem, estamos criando um dataset sobre requisições de manutenção em sistemas de código aberto. Para validar a qualidade dos projetos propostos por nossa solução, pretende-se adotar uma variação do coeficiente de Jaccard, com o objetivo de expressar a existência de arquivos modificados em comuns pelas requisições incluídas em cada projeto. Se existirem muitos arquivos em comum, então isto é uma evidência de que nossa abordagem é capaz de introduzir ganhos efetivos de escala no tratamento de manutenções de software. Palavras-chave: Manutenção de Software; Mineração de Texto; Economia de escala. Evidence of Software Inspection on Requirement Specification for Software Product Lines Iuri Santos Souza1,3, Gecynalda Soares da Silva Gomes1, Ivan do Carmo Machado1,3, Paulo Anselmo da Mota Silveira Neto2,3, Eduardo Santana de Almeida1,3,4, Silvio Romero de Lemos Meira2,3 1 2 Center for Informatics - Federal University of Pernambuco (UFPE) 3 4 Math Institute - Federal University of Bahia (UFBA) Reuse in Software Engineering Group (RiSE), Brazil Fraunhofer Project Center (FPC) for Software and Systems Engineering, Brazil [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] Abstract. Requirement engineering is the discipline responsible for capturing, specifying, and detailing the software and systems requirements, and their behaviors and interactions. In Software Product Line (SPL) engineering, it is also responsible for capturing, specifying, and detailing the variations. Requirements are usually specified in natural language, which might lead to issues such as ambiguity, inconsistency, omissions, and lack of clarity. This poster reports on a portion of the analysis of the effects of applying an inspection approach in the specification of functional requirements, in the light of an industrial SPL project, in which the inspection team assessed one hundred and forty-four requirements. We performed an empirical study in order to investigate and identify correlations, tendencies, define predictive models and estimate non-conformities. The results showed that issues of completeness and ambiguity presented the highest non-conformity occurrences, and that the inspection meeting was the task, which demanded most effort. Errors coming from domain knowledge understanding, specification, and organization, were the main responsible for the non-conformities. This poster is a good opportunity to show and discuss practical and open issues revealed by the industrial study and also it can raise questions for other contributions. This work is a step toward a precise guide for the inspection activity in SPL, and interesting directions can be revealed from the work started here. Keywords: Software Product Line Engineering; Requirement Engineering; Software Inspection; Causal Analysis; Experimental Study Fault Model-Based Variability Testing Ivan do Carmo Machado, Eduardo Santana de Almeida Computer Science Department – Federal University of Bahia (UFBA), Salvador, BA, Brazil [email protected], [email protected] Abstract. Software Product Line (SPL) engineering has emerged as an important strategy to cope with the increasing demand of large-scale products customization. Owing to its capability of systematically reusing software artifacts, SPL has provided companies with an efficient and effective means of delivering products with higher quality at a reduced cost, when compared to traditional software engineering strategies. However, such a benefit does not come for free. SPL demands cost-effective quality assurance techniques that attempt to minimize the overall effort, while improving fault detection rates. Software testing, as one of the most important quality assurance techniques, have been largely explored to address this particular topic. An extensive analysis of existing techniques showed us that current SPL testing practices are mainly focused on handling variability at a higher level of abstraction, e.g., through the analysis of feature models, rather than carrying out about issues faced at the source code level. However, we believe that improvements in fault detection rates for variability testing in an SPL entail a more in-depth attention, that is, one should care about the variability implementation mechanisms particularities, which traverses abstractions at source code level. In this effect, this work analyzes the most occurring problems in variability implementation, aiming at constructing a fault model for variability testing, to serve as a driver for test case generation. Our research goal is to analyze the test effectiveness improvements enabled by the use of fault models in variability testing. We intend to build a defect classification scheme for variability implementation, that consists of the synthesis of evidence from three main sources: literature analysis; analysis of open source repositories; and case studies involving the development of SPL projects. The resulting scheme will serve as a basis for the fault model that will emerge. We are currently underway on such synthesis of evidence. It has been supported by a series of empirical studies. The literature analysis aims at leveraging reports on commonly occurring error in the mechanisms. The analysis of open source repositories will aid in the identification of reported defects in variability implementation. Next, the case studies, involving the use of variability implementation mechanisms in three different programming languages, namely Java, C, and the iOS platform, might strengthen our generalizations. We plan to build the fault model by looking at software projects developed in such different programming languages, and compare the outcomes, so as to enable further refinements. Keywords: Software product line engineering, software testing, variability testing, fault model, empirical software engineering. Beauty Technology as an Interactive Computing Platform Katia Vega1 Hugo Fuks1 1 Departamento de Informática – Pontificia Universidade Católica do Rio de Janeiro [email protected], [email protected] Abstract. Wearables add more than physical, social and psychological variables. The accessibility, reliability and miniaturization of technology give the opportunity to embed sensors and actuators into wearables to increase the possibilities of interacting with the world. Nowadays we cannot think of Wearable Computers just as an exploration of the capabilities of devices into clothing but also about breaking through barriers of technology to make them useful to us in a way never imagined. This work introduces the term ‘Beauty Technology’ as an emerging field in Wearable Computers. We propose the use of products on the skin surface that hides electronics, are easy to attach and remove, are ergonomic to the human body and highlight the wearer’s personality. Imagine that you don't need a card for opening your office door, or for paying your bus ticket. Imagine that you don't need any ticket for entering to your show or movie session. Go and buy at the supermarket or rent a book at the library without any wallet or ID card, just point and have it, everything at the top of your finger: your nails. Beauty Technology Nails embed technology components into false nails in order to interact with the world in different ways and through different surfaces. They could create personalized gestures and musical instruments. These nails contain embedded magnets for amplifying the wearers’ capabilities by giving the sense of reading magnetic fields but also give them access to different objects with magnetic switches and interact with magnetic sensors. A RFID nails’ wearer made a secret combination of finger movements to open the door in the project called “Abrete Sesamo”. “Aquadjing” is another project that a Dj could change between different tracks by touching into the water with her RFID nails. Blinking is something fascinating. It acts by the natural movement of your eyes and also gives us the possibility to understand different physical or psychological illness just with blinking. Even more, we could make gestures or create our own ones. What if we are not just could understand blinking but also activate the world with just a blink? Beauty Technology proposes the use of makeup for understanding blinking and other face movements. We used conductive makeup that connects sensors and actuators by the use of conductive materials that stick to the skin as well-defined eyeliners and eyebrows. Removable tattoos were used as aesthetics lights on the body skin and for enacting with the world by skin capacitance sensitivity. We also used black false eyelashes that were chemically metalized to react to blinking. As an example, a character called “Arcana” is a futuristic angel that communicates by amplifying her blinking and creates gestures that activates different music tracks and displays different images. Superhero is another example of the conductive false eyelashes and makeup used to levitate objects just by blinking. Keywords: Beauty Technology, Wearable Computers. A Methodology for the Elicitation of Usability Requirements in the Development of Web Applications Luis Rivero and Tayana Conte Instituto de Computação – Universidade Federal do Amazonas (UFAM) {luisrivero,tayana}@icomp.ufam.edu.br Abstract. Non-functional requirements play a fundamental role in software development because they specify software restrictions and how well the software shall perform its function. Usability has been pointed as the most important type of nonfunctional requirement for guaranteeing software quality. In Web applications, usability is crucial because it can determine whether the application succeeds or fails due to its effects in the users’ productivity and satisfaction. Usability requirements describe needs for the outlined system, such as the ability to prevent errors and reduce mental workload. However, despite their importance, usability requirements are usually forgotten or unconsidered during the software development process. The main reason for this lack of attention to usability requirements is that the technologies (techniques, processes or tools) that have been proposed to address them, are usually applied late in the development, where it is too expensive to develop usability requirements or fix usability problems. In this doctorate project, we aim to provide a solution for the late identification of usability requirements in Web projects. We are proposing an approach that will integrate several technologies to understand the users’ needs and identify usability requirements in the beginning of the development process. First, we will perform a systematic literature review to understand the current state of the field of Web usability requirements, and identify research opportunities. We will use these results to propose a set of techniques for the elicitation of usability requirements that will allow software engineers to produce descriptive elicitation documents such as: textual specifications, mockups specifications and navigational models. Such documents will guide the development team through the implementation of Web applications meeting usability principals. Then, we will develop a tool support for the identification and validation of usability requirements, and a monitoring system to examine how users perform tasks in low fidelity prototypes in order to identify further usability requirements. Also, to evaluate and evolve our approach, we will follow a research methodology based on empirical studies. During feasibility studies, we will evaluate the set of technologies by comparing them with other technologies that have been proposed for similar purposes. Thus, we will perform quantitative analyses and measure the accuracy (number of correct usability requirements), effectiveness (percentage of elicited usability requirements), and efficiency (speed when performing the elicitation) of our approach. Also, the qualitative results from observational and industrial case studies will be used to improve the performance of our approach in order to be used in the software industry. Our goal is to provide our approach, allowing the software development industry to: (a) develop Web applications that are intuitive and easy to navigate; and (b) reduce the cost in the development of Web applications by addressing usability problems in the beginning of the development. Keywords: Usability; Requirements Elicitation Technologies; Elicitation Artifacts; Web Applications. Predicting Requirements Based on Organizational Changes Marília Guterres Ferreira1 Julio Cesar Sampaio do Prado Leite1 1 Pontifícia Universidade Católica do Rio de Janeiro, PUC - Rio, Brasil {mferreira, julio}@inf.puc-rio.br Abstract. Software evolution is a fact in industry life. Most of the changes in softwarebased systems are caused by changes in organizations from their need to adapt to a more and more competitive and dynamic environment. Those changes’ costs are far higher than the initial software development costs. In those software evolution projects, most of the time the software has to be developed from scratch because the maintenance on the running system is very difficult and consequently expensive and time-consuming. This research comes from the realization that some of the problems could be avoided if some requirements could be elicited in advance. If when we develop new software systems, we try to anticipate the ways in which they might change, then the software can be modified more easily to implement the new requirements. As most changes in software come from organizational change, to be able to predict how the organization will evolve, we should first define what its current state is and then determine for which state it will go. In this context Organizational Semiotics seems to be a promising theory. Organizational Semiotics is a discipline that studies the use of signs and their effects on social practices. On this subject, there is Stamper’s School which proposes a set of methods, MEASUR research program, to the design of information systems based on the social-technical paradigm, considering social, political, cultural and ethical issues involved in understanding the problem in the process of requirements engineering. The general objective of this research is defining a strategy to anticipate requirements change and consequently make the software evolution less traumatic, less expensive and in less time. For this, we propose a 5-steps preliminary method. First we define the current state of the organization in two steps, the problems and then the semantic and norms, based in methods from Organizational Semiotics, PAM, SAM and NAM respectively. Then, based on the changes that the system might cause in the organization, the steps 3 and 4 define the future state of the organization, i.e., the new problems and the new requirements, again supported by Organizational Semiotics. Finally, the software-based system to be develop should address the current needs and be prepared for the ones anticipated, thus the software evolution will be less difficult. The strategy presented in this study is incremental, once the current model is defined, the next steps determine what is needed to be added, excluded or modified. It is an epistemic tool that aims to help in the design of the problems and requirements of the organization, either in the present and in the future. The expected results are to make the software evolution process less difficult and in a shorter time. Keywords: Requirements Engineering, Software Evolution, Organizational Semiotics, Anticipating Requirements, Organizational Change. ONTOREQ: Um Processo para Identificação e Classificação de Interesses em Documentos de Requisitos com base em Ontologias de Domínio Paulo Afonso Parreira Júnior1,2, Rosângela Aparecida Dellosso Penteado1 1 Departamento de Computação – Universidade Federal de São Carlos (UFSCar) 2 Curso de Bacharelado em Ciência da Computação – Universidade Federal de Goiás/Câmpus Jataí (CAJ/UFG) [email protected], [email protected] Resumo. Um software produzido com qualidade deve possuir módulos específicos que agrupam um conjunto de requisitos relacionados (interesses). Entretanto, há alguns tipos de interesses para os quais essa clara alocação em módulos não é possível, apenas com a utilização das abstrações usuais de engenharia de software, tais como casos de uso, classes e objetos, entre outros. Tais interesses são denominados Interesses Transversais (ITs) e referem-se a requisitos de software que se encontram espalhados ou entrelaçados com outros requisitos, o que pode dificultar o desenvolvimento e a evolução do software. Exemplos clássicos de ITs são logging, persistência, distribuição, entre outros. Este trabalho está inserido no contexto da Engenharia de Requisitos Orientada a Aspectos (EROA) e seu enfoque está na identificação de interesses, a partir do documento de requisitos do software, e na classificação desses interesses como “base” ou “transversais”. Na literatura, há estudos comparativos de abordagens para EROA, os quais mostram que o processo de identificação e classificação de interesses tem apresentado baixa cobertura e precisão, principalmente em relação aos ITs. Isso se deve, em grande parte, a dois problemas principais: i) a baixa qualidade do documento de requisitos; e ii) a existência de interesses não explícitos no texto do documento de requisitos, isto é, interesses que emergem a partir do relacionamento entre outros interesses. Como exemplo desse segundo caso, pode-se citar o interesse de concorrência que, em geral, pode emergir da necessidade de se atender, simultaneamente, a outros dois interesses do software, a saber: segurança e desempenho. Este trabalho difere dos demais existentes, pois tem como objetivo o desenvolvimento e avaliação de um processo semiautomatizado, denominado ONTOREQ, para identificação e classificação de interesses em documentos de requisitos, com base em ontologias de domínio. A inovação está na utilização de ontologias de domínio como base para minimizar os problemas citados anteriormente. Para isso, propõe-se: i) criar ontologias específicas para ITs, com o intuito de auxiliar na identificação de interesses implícitos no texto dos requisitos; e ii) criar/reutilizar ontologias específicas para o domínio do software a ser tratado, para verificar a qualidade de seus requisitos. A execução manual do processo proposto pode ser custosa, pouco escalável e propensa a erros, sendo assim, uma suíte de ferramentas, denominada ONTOREQ-Toolkit, para automatização de algumas das atividades desse processo deve ser desenvolvida. A avaliação do processo ONTOREQ será realizada por meio de estudos de caso, cujo objetivo é averiguar se a eficácia e a eficiência desse processo são maiores do que as das abordagens existentes na literatura, quando o mesmo é aplicado a sistemas de software de diversos domínios e níveis de complexidade. Para avaliação da ONTOREQ-Toolkit, quanto a sua utilidade e usabilidade, serão utilizados questionários confeccionados com base no modelo TAM (Technology Acceptance Model). Palavras-chave: Processo, Identificação e Classificação de Interesses, Engenharia de Requisitos Orientada a Aspectos, Early Aspects, Ontologias de Domínio. An Ecological Perspective Towards the Evolution of Quantitative Studies in Software Engineering Rafael M. de Mello, Guilherme H. Travassos COPPE/ PESC– Universidade Federal do Rio de Janeiro (UFRJ) rmaiani, [email protected] Abstract. Context: Two of the most common external threats to validity in quantitative studies in software engineering (SE) are concerned with defining the population by convenience and nonrandom sampling assignment. Although these limitations can be reduced by increasing the number of replications and aggregating their results, the acquired evidence rarely can be generalized to the field. Objective: To investigate the state of practice of meta-analysis in SE and its limitations, intending to propose an alternative perspective to understand the relationships among experimentation, production, threats to validity and evidence. To propose and evaluate means to strengthen quantitative studies in software engineering and making them less risky due to population and sampling issues. Method: To use the underlying idea from the Theory of Food Chains to alternatively understand the impact of external threats to validity in the SE experimental cycle (experimental chains). Next, to accomplish an initial technical literature survey to observe basic features of secondary studies aggregating primary studies results. Third, to organize a set of experimental chain’s concepts and make initial discussions regarding the observed secondary studies concerned with this metaphor. Results: By applying the experimental chains concepts it was initially observed that, although important and necessary, most of the current effort in the conduction of quantitative studies in SE does not produce (mainly due to population/sampling constraints) results strong enough to positively impact the engineering of software. It promotes an imbalance between research and practice. However, more investigation is necessary to support this claim. Conclusion: We argue that research energy has been lost in SE studies due to population/sampling constraints. Therefore, we believe more investigation must be undertaken to understand how better organizing, enlarging, setting up and sampling SE quantitative studies’ population by using, for instance, alternative technologies such as social networks or other crowdsourcing technologies. Keywords: population sampling, meta-analysis, food chains, experimental chains, evidence based software engineering. Satisfying Requirements by Cloud Resources Using Models at Runtime Raphael Aquino Gomes1,2 Fábio Moreira Costa1 1 Institute of Informatics – Federal University of Goiás (UFG), Brazil 2 Federal Institute of Goiás (IFG), Brazil [email protected], [email protected] Abstract. Besides the definition of Non-Functional Requirements (NFR) in software development, another problem is to establish the hardware resources needed to meet these requirements. Cloud computing is a promising alternative for providing these required resources. However to enable and enhance the dynamic management of shared cloud resources two issues need to be addressed. They refer to how the customers of cloud services express their resource requirements and how additional resources are provided by the complementary use of external cloud infrastructures. To reduce these difficulties it is crucial to move some activities performed at design time to development and execution time. One strategy to achieve this goal is the use of models at runtime, which allows the customer to express their resource requirements based on the needs of the applications that will run on these resources; and a more precise management of available computational power. This work presents a group of solutions for requirements specification and resource discovery using cloud computing. The general goal of this research proposal is to develop a specification language for NFRs as well the mechanisms needed to dynamically transform NFR specifications into a specification of the resources needed to host the application on cloud environments. Several works propose the use of [email protected] but most of them focus on the development of architectural models of the system, especially in the self-adaptive systems area. Despite the existence of a series of works related to the specification of requirements for systems in general, the ones that are related to cloud environments are those that consider SOA environments. In our research the definition of the resources needed to run an application is built by the system based on application requirements specified by the user. After defining the necessary resources application deployment is performed taking into account both organization’s local resources and third party resources allocated from public clouds. Resource allocation is made according to the resource model generated. Initially, the private cloud formed by the organization’s computing infrastructure is analyzed to check the possibility of admitting a new application given the resource model derived from thhe requirements specification. During application execution continuous monitoring is carried out to assess possible changes in the application requirements and/or resource availability. In the case is made a requirements change, the resource specification is again generated and compared with the current one. If the two models are not compatible it is necessary perform again the derivation of resources, its discovery and allocation. The implementation of the proposed approach will be made in the form of a working prototype, which will be used to demonstrate and evaluate concepts, also serving as a basis for a subsequent complete implementation. Keywords: Requirements Specification, [email protected], Cloud Computing. Understanding Lehman’s Laws of Software Evolution in Software Product Lines: An Experimental Study Raphael Pereira de Oliveira1, Eduardo Santana de Almeida1, Gecynalda Soares da Silva Gomes2, Silvia Abrahão3 and Emilio Insfran3 1 Department of Computer Science, 2Department of Statistics Federal University of Bahia, Av. Adhemar de Barros, s/n, 40170-110, Salvador, Brazil {raphaeloliveira, esa}@dcc.ufba.br, [email protected] 3Department of Information Systems and Computation Universitat Politècnica de València, Camino de Vera, s/n, 46022, Valencia, Spain {sabrahao, einsfran}@dsic.upv.es Abstract. Software Product Lines (SPL) has gained the attention of the software engineering community lately, however, the issue of how common, variable and productspecific assets evolve needs a broader investigation. This study evaluated the Lehman’s Laws of Software Evolution in an SPL industrial project in order to understand how the SPL assets evolve over the time. The industrial project has 45 modules and a total of 70.652 requests in the bug tracking system collected over 10 years. We applied the Augmented Dickey-Fuller Test and linear regression analysis to evaluate the statistical trends over the years of the collected data related to the laws. The results of the study showed that three laws were completely accepted (continuous change, increasing complexity and declining quality) and one was completely rejected (feedback system). The other laws were partly accepted or partly rejected, depending on the SPL asset (common, variable or product-specific). So far, the study has been evaluated in the medical domain with just one small (roughly 50 employees) company. Finally, besides the continuous change for all assets in an SPL, we found that complexity is raising and quality is decreasing in an SPL industrial project over the years. Based on this study, we intend to propose some guidelines for evolving an SPL. Keywords: Software Product Lines; Software Evolution; Lehman’s Laws of Software Evolution; Empirical Study. An Approach to Prioritize Code Smells for Refactoring Santiago Vidal, Claudia Marcos, Andrés Diaz Pace ISISTAN Research Institute, UNICEN University, Argentina [email protected], cmarcos@ exa.unicen.edu.ar, adiaz@ exa.unicen.edu.ar Abstract. Software evolution and maintenance involve high costs in the development process, particularly as systems become larger and complex. A usual concern that makes system maintenance and evolution difficult is the existence of structural design problems, which were not sufficiently taken care of in early development stages. These design problems are often described as code smells. A code smell is a symptom in the source code that helps to identify a design problem. In this way, code smells allow developers to detect fragments of code that should be re-structured, in order to improve the quality of the system. A technique commonly used to fix code smells is refactoring. Different semi-automated tools can be applied to identify code smells in a system. However, a major limitation of existing tools is that they usually find numerous code smells. This is a challenging problem for the developer, for a number of reasons. First, she can get overwhelmed by the amount of information to be analyzed. Second, the effort needed to fix all the code smells usually exceeds the budget that the developer has available for refactoring. Third, in practice, not all code smells are equally important for the goals of the system or its health. Therefore, the developer has to manually peruse the list of code smells and select a set of smells that will be fixed. In this context, the provision of tool support for assisting the developer to quickly identify high-priority code smells becomes essential. In our research, we propose a semiautomated approach called SpIRIT (Smart Identification of Refactoring opportunITies) that treats refactoring as a cost-effective activity. By cost-effective, we mean that the analysis and re-structuring efforts are driven by a handful of code problems considered as critical for the current system, so that solving those problems will positively contribute to the system quality but with a limited refactoring expenditure. Given an object-oriented system with a number of code smells, SpIRIT assists the developer in two tasks: (i) prioritizing the code smells, and (ii) suggesting candidate refactorings for each smell using a cost-benefit analysis. The novel aspect of our approach is the prioritization of code smells based on assessing their relationships with modifiability issues. Our assessment of a code smell instance is determined by the following factors: past component modifications, important modifiability scenarios for the system, and types of code smells. Regarding the suggestion of refactorings, SpIRIT seeks to determine refactoring alternatives for each code smell of its ranking. After searching through the design space of refactoring alternatives, the tool should assess a set of candidate refactorings in terms of the improvement that their application would produce in the system. Keywords: Software evolution, Code Smells, Refactoring Variability Realization in Service-Oriented Product Lines Tassio Vale1,2 Eduardo Santana de Almeida1,2 1 Computer Science Department- Federal University of Bahia (UFBA) 2 RiSE Labs - Reuse in Software Engineering [email protected], [email protected] Abstract. The combination of Service-Oriented Computing (SOC) and Software Product Lines (SPL) together has started to receive attention from researchers and practitioners seven years ago, since SOC and SPL can address issues of each other. This combination results in a specific type of product line, called Service-Oriented Product Line (SOPL), and the area that studies the development of SOPLs is called Service-Oriented Product Line Engineering (SOPLE). Dynamic product reconfiguration involves making changes to a deployed product configuration at runtime, and SOPLE is a way to handle it for context-aware computing and adaptive systems scenarios. There is a lack of implementation proposals for SOPLs. Therefore, we propose an investigation of available implementation techniques for dynamic variability, aiming to create a systematic approach for developing SOPLs. As first results, our systematic mapping study did not identified processes for implementing service-oriented product lines. In fact, there are studies addressing specific issues of SOPL implementation without looking the big picture. On the other hand, we investigate existing variability implementation techniques trying to figure out their applicability in a SOPLE environment. As future work, we intend to perform an exploratory study by developing a testbed in order to identify similarities and differences among single system, service-oriented, product line and SOPLE implementations. After, evidence from the mapping study and testbed will guide the conception of the approach, that will be evaluated through a case study. Keywords: Service-Oriented Computing, Software Product Lines, Service-Oriented Product Lines, Variability Implementation Techniques. i Using Run-Time Data and Maintenance Knowledge to Reduce Mean Time to Recovery Thiago Araújo, Arndt von Staa Departamento de Informática, Pontifícia Universidade Católica (PUC-Rio), Brasil {taraujo, arndt}@inf.puc-rio.br Abstract. Even software systems developed with strict quality control may expect failures during its lifetime. A maintenance team must identify these failures, diagnose them and correct the system state. In many cases some of these steps can be automatically handled by a self-healing mechanism. However, it is necessary to provide specific knowledge about the system to allow proper healing. This work proposes a self- healing mechanism to correct the system state at runtime, which uses knowledge ac- quired while maintaining the software to incrementally build the knowledge base. This mechanism is composed by a new instrumentation technique to trace the system execution, an inspection tool to aid in failures diagnosis, a contract validator to uses the diagnosis results to detect future failures from known faults, and a recovery tool that may trigger routines based in the detected failures. The main contribution of this work is the knowledge representation that facilitates the autonomic steps integration. The instrumentation technique and the inspection tool were evaluated in a real software system, presenting low effort to instrument and diagnose failures. The contract verifier and the recovery tool will be evaluated in an on-going research. Palavras-chave: software quality, software maintenance, fault tolerant systems, autonomic- computing, self-healing. Identificação e Gerenciamento da Dívida Técnica na Evolução e Manutenção de Software Utilizando Recursos de Visualização de Software Thiago Souto Mendes12, Rodrigo Oliveira Spínola3, Manoel Mendonça14 1 Departamento de Ciência da Computação – Universidade Federal da Bahia (UFBA) 2 Departamento de Tecnologia da Informação – Instituto Federal da Bahia (IFBA) 3 Departamento de Ciência da Computação – Universidade Salvador (UNIFACS) 4 Instituto Fraunhofer-BA (Fraunhofer-BA) [email protected], [email protected], [email protected] Resumo. A qualidade de softwares que passam por manutenção frequentemente diminui ao longo do tempo ao se considerar aspectos como sua estrutura interna, adesão a normas, documentação, e facilidade de entendimento para futuras manutenções. Lidar com esta questão considerando a metáfora de dívida técnica, do inglês technical debt, tem ajudado alguns profissionais a debater questões associadas à manutenção de software. O conceito de dívida técnica contextualiza o problema das tarefas de manutenção pendentes (por exemplo, não execução de testes, refatoração de código pendente, atualização de documentação pendente) como um tipo de dívida que traz um benefício a curto prazo para o projeto (normalmente em termos de maior produtividade ou menor tempo de liberação de versões do software), mas que poderão ter de ser pagas com juros mais tarde no processo de desenvolvimento. É comum que projetos de software incorram em dívidas durante o processo de desenvolvimento uma vez que pequenas quantidades de dívida podem aumentar a produtividade. No entanto, sua presença traz riscos para o projeto e dificulta a gestão de projetos de software uma vez que os gerentes terão que decidir se a dívida será paga e, em caso positivo, quanto da dívida deve ser paga e quando. Mas, antes mesmo de gerenciar a dívida em projetos de software, é necessário identificá-la. Neste contexto, a compreensão do software pode ser considerada um pré-requisito para as atividades de manutenção. As técnicas de visualização de informação e de software têm sido utilizadas na Engenharia de Software como uma possível solução para a árdua tarefa de compreender, e ajudar a manter e evoluir sistemas de software. Entretanto, elas ainda não têm sido usadas como recurso para apoiar a identificação e acompanhamento da dívida técnica em projetos de software. Neste cenário, este projeto de pesquisa busca investigar soluções para o seguinte problema: aprimorar práticas de manutenção de software de forma que seja possível monitorar a qualidade do software em manutenção utilizando a metáfora da dívida técnica. Para isso, busca-se responder à seguinte questão de pesquisa: “É possível utilizar técnicas de visualização de software para apoiar a identificação e gerenciamento da dívida técnica em projetos de software?”. Ao final deste projeto de pesquisa espera-se alcançar os seguintes resultados: (a) Realização de um mapeamento sistemático sobre dívida técnica e visualização de software; (b) Definição de técnicas de visualização de software que podem apoiar a identificação de dívida técnica em projetos de software;(c) Construção de um ambiente de gestão da dívida técnica que considere técnicas de visualização de software; (d) Estudos de casos referentes ao trabalhos executados e resultados analisados. O trabalho conta com a colaboração dos professores D.Sc Rodrigo Spínola (UNIFACS), Carolyn Seaman, PhD (UMBC, EUA), Forrest Shull, PhD (Fraunhofer-MD, EUA), Davide Falessi, PhD (Fraunhofer-MD, EUA). Palavras-chave: Dívida Técnica, Visualização de Software, Engenharia de Software Experimental, Manutenção de Software, Evolução de Software. Expansão Automática de Query baseada em vocabulário para busca de código Adriano Carvalho de Paula1 Otávio Augusto Lazzarini Lemos1 1 Instituto de Ciência e Tecnologia – Universidade Federal do São Paulo (UNIFESP) {adriano.carvalho, otavio.lemos}@unifesp.br Aprimorando a Verificação de Conformidade em Programas Utilizando a Metodologia Design by Contract Alysson Milanez1 Tiago Massoni1 Rohit Gheyi1 1 Departamento de Sistemas e Computação – Universidade Federal de Campina Grande (UFCG) [email protected], [email protected], [email protected] Resumo. Programação por Contratos (Design by Contract - DBC) é uma metodologia que estabelece contratos entre módulos fornecedores (que proveem alguma funcionalidade) e módulos clientes (que fazem uso da(s) funcionalidade(s) provida(s)), determinando os direitos e deveres de cada parte. Um dos benefícios de DBC é a verificação baseada em contratos, como forma de verificar a conformidade destes com os programas. Neste contexto, verificação dinâmica é uma técnica comum, em virtude da verificação por meio de provas formais ser de difícil escalabilidade. Com a verificação, é possível detectar violações dos contratos - não-conformidades (por parte do módulo cliente ou fornecedor). Uma vez detectadas, tais não- conformidades precisam ser corrigidas. As ferramentas que atualmente realizam verificação dinâmica de programas com contratos não fornecem informações ao programador acerca do que causou o problema; informam apenas que há uma não-conformidade em determinado trecho do programa e o tipo da não-conformidade detectada. O processo para categorização é completamente manual: o programador, de posse da lista de não-conformidades presentes em seu sistema vai ao código e inspeciona-o em busca de entender e solucionar o(s) problema(s) detectado(s). Com o intuito de tornar este processo mais prático, pretende-se obter como resultados do presente trabalho de Mestrado uma técnica semiautomática para a categorização de não-conformidades, uma implementação desta técnica para programas Java/JML - por meio do aprimoramento da ferramenta JMLOK já existente, e o relato de estudos de caso e experimentos avaliando o potencial desta ferramenta e de seu método de aplicação. Deste modo, estaremos contribuindo para o desenvolvimento de sistemas que utilizem DBC como forma de aprimorar o projeto dos programas, e por consequência, sua qualidade geral. Recentemente propusemos um modelo para a classificação de não-conformidades, com suas causas prováveis. As categorias e suas causas são: invariant error - pré-condição fraca ou invariante forte ou restrição de valor nulo; precondition error - pré-condição forte ou pós-condição fraca; postcondition error - pós-condição forte ou pré-condição fraca; history constraint error pré-condição fraca ou restrição forte ou restrição de valor nulo; evaluation error - quando uma expressão não pode ser avaliada em virtude do lançamento de uma exceção. Este modelo foi usado para manualmente classificar 79 não-conformidades detectadas pela ferramenta JMLOK em projetos JML de código aberto - mais de 29 KLOC e de 9 K linhas de especificação JML (que chamamos KLJML). As não-conformidades categorizadas foram reportadas aos autores dos projetos; que nos reportaram que estão de acordo com nossa categorização. Atualmente estamos no processo de implementação do módulo de categorização na ferramenta JMLOK. Palavras-chave: Design by Contract, conformidade, categorização. verificação baseada em contrato, não- Validação Experimental da Abordagem SMarty para Gerenciamento de Variabilidade em Linha de Produto de Software Anderson da Silva Marcolino, Edson A. Oliveira Junior Departamento de Informática – Universidade Estadual de Maringá (UEM) [email protected], [email protected] Resumo. Este projeto se propõe a validação experimental da abordagem Stereotypebased Management of Variability (SMarty). SMarty é uma abordagem para gerenciamento de variabilidades em Linha de Produto de Software (LPS) baseada em UML. A abordagem de LPS vem sendo consolidado nos últimos anos como uma forma efetiva de reutilização de artefatos de software. LPSs baseadas em UML vêm sendo bem vistas pela comunidade com base na literatura existente. Ao utilizar modelos UML para identificação e representação de variabilidades, a abordagem SMarty mantém um padrão já estabelecido pela OMG, visto que a UML é amplamente conhecida na indústria. Porém, nota-se a necessidade das abordagens existentes, para gerenciamento de variabilidades, serem validadas experimentalmente antes da transferência dessas para a indústria. Como a abordagem SMarty vem sendo consolidada nos últimos anos, com base na sua adoção por diversos projetos, surge a necessidade de validá-la experimentalmente. Para tanto, um conjunto de experimentos e possíveis replicações serão planejadas e conduzidas para SMarty em seus vários níveis de abstração como, por exemplo, casos de uso e classes. As principais contribuições deste trabalho referem-se à validação experimental da abordagem SMarty fornecendo evidências de sua efetividade em LPSs baseadas em UML permitindo, assim, apresentar indícios à indústria para a sua efetiva adoção como uma forma padronizada e sistemática de gerenciamento de variabilidades e retorno de investimento, bem como, com base nos diversos estudos experimentais propostos, desenvolver um framework de experimentação para abordagens de gerenciamento de variabilidade para LPSs baseadas em UML. Palavras-chave: Linha de Produto de Software, Gerenciamento de Variabilidades, SMarty, Validação Experimental, UML. Geração de Bechmarks para Avaliação de Diferentes Métodos de Desenvolvimento de Algoritmos para Plataforma Android Andrws Aires Vieiras1 Cristian Maruan2 Felipe Marques2 Júlio C. B. Mattos2 1 Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS) 2 Centro de Desenvolvido Tecnológico – Universidade Federal de Pelotas (UFPel) [email protected], {cmbosin, felipem, julius}@inf.ufpel.edu.br Resumo. Em aplicações embarcadas, as características como, desempenho, consumo de energia, redução do tamanho de software e/ou hardware, entre outros aspectos, devem ser consideradas. Dentre os atuais sistemas embarcados, os dispositivos móveis com sistema operacional Android estão em pleno destaque no mercado atual devido ao grande número de dispositivos comercializados. Com isso se faz necessário avaliar a qualidade do software desenvolvido. Dentro os aspectos de qualidade de um software embarcado, pode-se destacar que um bom software embarcado é aquele aproveita da melhor forma os recursos computacionais disponíveis, deste modo uma análise de requisitos não funcionais durante o desenvolvimento de aplicativos para estes dispositivos é de extrema importância, tendo em vista que a energia destes aparelhos é fornecida por uma bateria, logo um software que desperdiça energia (ou deixa de economizar) não é um software que apresenta um bom nível de qualidade, pois normalmente o consumidor deseja que a bateria de seu dispositivo móvel resista o maior tempo possível. Neste contexto, este trabalho propõe a implementação de diversas aplicações (benchmarks) para a plataforma Android, fazendo uso de diferentes métodos, estruturas e paradigmas de projetos de algoritmos, para então avaliar o impacto dessas técnicas na plataforma Android. Para avaliar as aplicações que foram desenvolvidas neste trabalho, foram usadas ferramentas e aplicações de profiling (Traceview, PowerTutor, etc) que forneceram dados de energia consumida, potência dissipada, tempo de execução, entre outros dados. Com base nos resultados alcançados foi possível determinar quais técnicas utilizadas durante o desenvolvimento de software foram mais eficientes do ponto de vista de desempenho, economia de energia e uso do de memória. Em geral as estruturas recursivas demostram ter um desempenho inferior quando comparados aos demais, também foi comprovado que a substituição de cálculos extensos por tabelas estáticas apresenta ganhos de desempenho e energéticos bem significados com apenas um irrelevante acréscimo no uso de memória para os padrões atuais. Já quanto as Collections do Java quando submetidas ao benchmark desenvolvido neste trabalho, a que apresentou melhor performance foi a ArrayList. A contribuição dos resultados obtidos neste trabalho está no fato de apresentar diversas alterações no projeto de desenvolvimento software que impactam diretamente no desempenho e consumo de energia de aplicações móveis para a plataforma Android, com isso prologando o tempo de duração da bateria dos dispositivos móveis como smartphones e tablets. Como trabalhados futuros serão analisadas novas metodologias de desenvolvimento de software e novos benchmarks serão desenvolvidos para que novas análises possam ser realizadas. E ainda como principal futuro objetivo será desenvolvida uma ferramenta que dado um código fonte Android como entrada, otimize tal código a fim de obter um melhor desempenho e menor consumo energético. Palavras-chave: Plataforma Android, Sistemas Embarcados, Sistemas Móveis, Técnicas de Desenvolvimento de Software, Análise de Requisitos não Funcionais. Uso de sistemas baseado em conhecimento como facilitadores na elicitação de requisitos para especificação usando iStar Cristiane Aparecida Lana1 José Luis Braga1 Antônio de Pádua Oliveira2 1 Departamento de Informática – Programa de Pós-Graduação em Ciência da Computação (PPGCC) – Universidade Federal de Viçosa (UFV), Viçosa, MG. 2 Departamento de Informática e Ciências da Computação – Universidade Estadual do Rio de Janeiro (UERJ), Rio de Janeiro, RJ. [email protected], [email protected], [email protected] Resumo. O desenvolvimento de sistemas de informações cada dia mais complexos exige modelos que descrevem aspectos além das entidades e atividades. Pesquisas da década de 90 já apontavam a importância de capturar as intenções dentro de um contexto organizacional. Diversos são os métodos propostos para elicitação de Requisitos Não-Funcionais (RNF) entre eles está o Léxico Ampliado de Linguagem (LAL), que elicita, analisa e rastreia RNFs. Baseado nas técnicas de elicitação do LAL e de sistemas baseados em conhecimento da inteligência artificial, este trabalho visa a aplicação de sinônimos para melhorar a elicitação de requisitos não-funcionais, fornecendo elementos mais precisos para preenchimento dos frameworks do LAL. Este procedimento auxiliará um melhor entendimento do contexto do problema, e as intenções dos agentes que atuam em seu ambiente. Intenções podem estar explícitas e facilmente identificáveis em termos utilizados nas descrições de requisitos, ou podem estar implícitas no contexto, escondidas por detrás de sinônimos ou frases que representam intenções. Esta é a parte mais difícil da explicitação dos requisitos, e existem técnicas da inteligência artificial que podem conduzir o engenheiro de requisitos a olhar termos ou seus sinônimos dentro do contexto, levando-o a descobrir requisitos escondidos. O ambiente de desenvolvimento escolhido para aplicar as técnicas de inteligência artificial é o CLIPS - C Language Integrated Production System, que será utilizado para representar a base de conhecimentos sobre o problema, emprestando a máquina de inferência para auxiliar o analista de requisitos na elicitação. Inicialmente, será escolhido a forma de representar o conhecimento para gerar a base de sinônimos (BS) que conterá todos os RNFs (extraídos dos trabalhos de Lawrence Chung) e seus sinônimos. Após a elaboração da BS, será feita a descrição do modelo do LAL e sua descrição em formato de fatos (base de fatos – BF) utilizando a sintaxe do CLIPS. Em seguida será necessário criar regras que implementem o conhecimento e que será utilizado para verificar a ocorrência de sinônimos na BF, representado como regras de produção (regras de inferência) do CLIPS. Os resultados deste trabalho permitirá gerar modelos de Dependências Estratégicas (SD) e de Razões Estratégicas (SR) do iStar mais precisos, com menos ambiguidades. Palavras-chave: Requisitos, Requisitos Não-funcionais, Clips, Léxico Ampliado de Linguagem, Engenharia de Software Quantifying Usability of Domain-Specific Languages Diego de Lara e Albuquerque1,2 , Bruno Cafeo2, Alessandro Garcia2, Simone Barbosa2, Silvia Abrahão3 António Nestor Ribeiro1 1 Informatics Department, Minho University, Portugal 2 Informatics Department, PUC-Rio, Brazil 3 Faculty of Computer Science, Universidad Politecnica de Valencia, Spain [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] Abstract. A domain-specific language (DSL) aims to improve the maintainability of artifacts otherwise produced with general-purpose languages. However, the maintainability of the DSL artifacts and, hence, their adoption in mainstream software development, is largely dependent on the usability of the language. More than a single DSL is often proposed to address the same software engineering problem. However, it is often hard to early identify their usability strengths and weaknesses if there is no guidance on how to objectively reveal them. Usability is a multi-faceted quality characteristic, which is challenging to quantify before a DSL is actually used by its stakeholders. There is even less support and experience on how to quantitatively evaluate the usability of DSLs used in software maintenance. In this context, this paper reports a study to compare the usability of textual DSLs under the perspective of software maintenance. A usability metrics suite was developed based on the Cognitive Dimensions of Notations (CDN) framework. We compared two textual DSLs to detect architectural degradation problems through several versions of two evolving systems. The results suggested the proposed metrics were useful: (1) to early identify the DSL usability limitations to be addressed, (2) to reveal specific features of the DSLs favoring software maintenance tasks, and (3) to successfully analyze eight usability dimensions that are critical in many DSLs. Keywords: DSL, architectural degradation, code anomalies, usability, maintenance i Using Interest Management to Improve Load Balancing in Distributed Simulations Felipe C. Bacelar1, Carlos J. P. de Lucena1 Pierre Bommel2 1 Departamento de Informática, Pontifícia Universidade Católica (PUC-Rio), Brasil 2 CIRAD, Unidade Green, Montpellier, France {fbacelar, lucena}@inf.puc-rio.br, [email protected] Abstract. This paper presents an approach to distribute an agent-based simulation over a network of computers. The developed work aims at improving the load balancing of the simulation distribution. In order to reach such objective, we propose to use an Interest Management technique presented by Brian Logan and Georgios Theodoropoulos who proposed to distribute a simulation by dynamically partitioning the environment according to the Interest of the agents. In order to assess its efficiency, we have re- implemented this model using the distribution mechanisms provided by some of the main multi-agent system platforms. Palavras-chave: Load Balancing; Interest Management; Spheres of Influence; Distributed Simulation; Multi-agent Systems. Choosing between automatically tailored and predefined software processes Felipe González Martínez, María Cecilia Bastarrica Computer Science Department, Universidad de Chile, Chile [email protected], [email protected] Abstract. Software companies define processes to guide their development activities. This de- finition is complex and expensive, and still no single process is efficient to deal with different projects. The company has a series of alternatives: either use the same process for all projects being inefficient and producing low quality products, or having project specific processes. Coun- ting on project specific processes may be achieved through different strategies. We will consider having a series of pre-defined processes, or tailoring a general process in order to adapt it to the characteristics of each project. For the last years we have developed a MDE-based solution for optimal process tailoring according to the project context. However, this solution is complex and we wonder when it is worthy to apply it. Even though we assume that pre-defined processes may not be optimal for certain cases, their definition and maintenance simplicity may still be cost- effective. Moreover, we hypothesize that automatically tailoring is only convinient when there is the need for a large number of pre-defined processes. There is a series of stategies that have been proposed for dealing with process tailoring. Among them we can find: template-based tailoring (e.g., Crystal Methodology), frameworkbased approaches (e.g., RUP), constructive approaches (e.g., Situational Method Engineering), and self-emerging process tailoring (e.g., agile methods). However there is no empirically based comparison about the convenience of using one or another. We have been already developed and applied the MDE-based tailoring in real world companies, so we have already defined Method Libraries. For a particular company, we will predefine three different processes and specify the project context that fits each of them. Then, for three pro- jects, we will define their context, and we will follow both approaches comparing the results. For the MDE-based tailoring, the optimal context-adapted process will be computed. For selecting one of the pre-defined processes, the project context will be compared with the context of each pre-defined process, and we will select the one whose distance is the shortest. Both approaches will be compared according to two dimensions. On the one hand, the productivity of the resul- ting process, i.e., number of unnecessary process elements included, and on the other hand the difficulty of either selecting the appropriate process or computing the optimal one. The most commonly tailoring approach used in industry is manually tailoring processes, that is expensive and error prone. Automatically tailoring and pre-defined processes are more consistent ways of dealing with this issue. Our work intends to clarify when it is better to apply each of them. Palavras-chave: Software process tailoring, model-driven engineering. A New Approach for Mining Software Repositories using Semantic Web Tools Fernando Silva1 Daniel Schwabe1 1 Department of Informatics, PUC-Rio, Rio de Janeiro, Brazil [email protected], [email protected] Abstract. The Mining of Software Repositories is a field of research that extracts and analyzes information available in software repositories,such as version control systems and issue trackers. By the fact that these repositories have distinct access forms and different formats, the research community has mirrored the artifacts present in these sources into a centralized relational database. However, this complicates the information sharing between the various research groups, because it imposed a single , inflexible and centralized data schema. On the other hand, the Semantic Web technologies such as RDF representations, ontologies based on OWL and SPARQL queries have enabled this and other information domains to represent the same information that would be represented by a relational mode. One of the main advantages of this new model is that these tools are designed to deal with decentralized information, but in allowing the integration and extension of the information in a simpler manner. Another advantage is the fact that these technologies provide for semantic expressiveness not hitherto exists in other forms of representation, allowing specialized tools to check the logical consistency of the data and perform derivations of new facts from existing facts. The objective of this work is to extend the existing approaches that use Semantic Web tools to mine information not considered in these works. This extension will be through the introduction of a set of ontologies and a extraction platform capable of extracting and representing these new data. One of these information is the relationship between revisions of version control and the changes that occur in the Abstract Syntax Trees of files modified by these revisions. Additionally, this new approach also allows modeling the interdependence of software projects, their licenses and extracting information from builds generated by continuous integration tools. The validation of this approach is demonstrated through a set of questions that are asked by developers and managers during the execution of a project and have been identified in various works in the literature. We show how these questions were translated into SPARQL queries and how this approach can answer the questions that are not answered or are partially answered in other tools. Keywords: Software Maintenance, Semantic Software Engineering, Software Repositories i Análise do impacto de mudanças no esquema de dados com a utilização de padrões de persistência Gabriel Fernandes Pereira1 Alexandre Torres¹ Marcelo S. Pimenta¹ Renata Galante¹ 1 Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS) [email protected], [email protected], [email protected], [email protected] Resumo. O uso de linguagens orientadas a objetos, em conjunto com bancos de dados relacionais, cria a necessidade da utilização de ferramentas de mapeamento objetorelacional (ORM), de modo a contornar as diferenças geradas pelos distintos paradigmas dessas tecnologias. As ferramentas ORM implementam um ou mais padrões arquiteturais para persistência de dados, que foram catalogados por diferentes autores. Cada padrão de mapeamento possui características que indicam a sua aplicabilidade em um determinado contexto. Padrões mais simples, costumam ser indicados para softwares pequenos, e padrões mais elaborados são indicados para softwares de maior porte. A indicação do padrão de mapeamento a ser utilizado é fortemente baseada na quantidade de esforço que o padrão irá gerar para sua implementação e sua manutenção ao longo do ciclo de vida do software. Visto que a manutenção é considerada a fase mais custosa de um software, a escolha de um padrão que minimize os recursos utilizados nessa fase é um ponto importante para o gerenciamento do software. Deste modo, propomos uma análise empírica, realizada com estudo de caso, para a avaliação do comportamento dos padrões de persistência frente a determinadas modificações em esquema de dados. Analisaremos o quanto um padrão de persistência consegue isolar a lógica de domínio de modificações desnecessárias. Estudaremos o histórico de softwares através de ferramentas de versionamento, de modo a buscar determinadas modificações em esquema de dados, e assim, analisar o seu impacto ao restante do software. Para a mensuração do impacto causado pela modificação do esquema de dados, será realizado um estudo analítico e manual, de modo a interpretar os tipos de modificações existentes. Temos como objetivo realizar um estudo inicial para identificação do impacto que cada tipo de modificação de dados pode causar ao restante do software. Com isso, teremos uma base para uma avaliação empírica automatizada que verificará o comportamento em aplicações de maior porte. Ao final do trabalho pretendemos criar uma classificação do impacto causado por cada tipo de modificação no esquema de dados, auxiliando assim na análise de impacto que uma modificação causará ao software. Palavras-chave: Engenharia de Software, Padrões, Orientação a Objetos, Banco de Dado Relacional, Manutenção de Software. Software Remodularization Analysis Using Semantic Clustering Gustavo Jansen de Souza Santos, Marco Tulio Oliveira Valente1 1 Departamento de Ciência da Computação – Universidade Federal de Minas Gerais (UFMG) {gustavojss, mtov}@dcc.ufmg.br Abstract. As a software system evolves, it gets larger and complex, and its structure erodes unless work is explicitly performed. This slow phenomenon, called architectural erosion, leads to high costs with maintenance accumulating over time. Future modifications and improvements will take more time to understand which part of the system needs to be modified. Also, these changes may require other changes that were not planned, in scattered parts of the system. Remodularization consists in a sequence of modifications to organize a system’s architecture into a set of modules. The state of the art recommends the use of structural, static dependencies in source code to access the quality of a modularization. Thus, a new architecture is applied if it improves cohesion inside the modules and reduces the coupling between classes of different modules. However, recent work started to argue about this structural evaluation, stating that coupling and cohesion do not seem to be the dominant driving forces when it comes to modularization. In our work, we propose that software architects consider conceptual relation of classes, extracted from the identifiers and comments that define vocabulary of a software system. We used Semantic Clustering, an approach that extracts a set of semantic clusters, i.e. sets of classes with similar vocabularies. Semantic Clustering combines Information Retrieval techniques for text manipulation and Hierarchical Clustering algorithms to retrieve semantic clusters. In our work, the vocabulary is obtained from the identifiers in a class, including attributes and methods, and also from comments. We also use a set of conceptual quality metrics proposed in recent work; these metrics measure the semantic information presented in the vocabulary. Next, we applied Semantic Clustering in two versions of a given remodularization effort (before and after) in order to analyze the evolution of semantic clusters in comparison to the system’s architecture. Our case study consists in two remodularizations of JHotDraw, both driven by its own developers. We compared the semantic clusters and, with the support of conceptual quality metrics, we concluded that the semantic clusters are more spread over the JHotDraw’s architecture as new packages were created. On the other hand, these clusters are more concentrated in both existing and new packages. Thus, the semantic clusters are closest to the package structure after remodularization tasks. This fact is an indication that developer’s efforts in remodularization may consider conceptual aspects, by splitting and grouping architectural entities regarding the intent semantics expressed in their vocabularies. Keywords: Software Architecture, Software Maintenance, Information Retrieval. APIMiner 2.0: Recomendação de Exemplos de Uso de APIs usando Regras de Associação Hudson Silva Borges1 Heitor Augustus Xavier Costa2 Marco Tulio Valente1 1 Departamento de Ciência da Computação – Universidade Federal de Minas Gerais 2 Departamento de Ciência da Computação – Universidade Federal de Lavras [email protected], [email protected], [email protected] Resumo. Atualmente, a utilização de código de terceiros no processo de desenvolvimento de sistemas consolidou-se como uma prática comum. Geralmente disponíveis na forma de bibliotecas ou frameworks, a utilização desse tipo de código ocorre por meio de uma API (Application Programming Interface). Entretanto, a inexistência de documentação adequada leva a um contexto em que a compreensão e domínio de APIs têm se mostrado cada vez mais difícil. Nesse contexto, propõe-se o sistema APIMiner 2.0, que estende a plataforma APIMiner utilizando regras de associação envolvendo elementos de APIs para extração e agregação automatizada de exemplos de uso em documentação, disponibilizada no formato JavaDoc. Dentre as principais características da abordagem implementada pelo sistema, destacam-se: (i) fornecimento de exemplos de uso que envolvem mais de um método da API, com o objetivo de expressar diferentes formas de usar essa API. Essa característica faz com que os exemplos apresentados sejam mais úteis aos desenvolvedores que exemplos de uso incluindo métodos únicos; (ii) a utilização de diversos artifícios para melhorar a legibilidade de exemplos de uso obtidos por meio de técnicas de slicing estático. Por exemplo, problemas como a não identificação de variáveis em um slicing tradicional são contornados com a inserção de declarações abstratas de variáveis; (iii) a utilização de técnicas de mineração de dados, mais precisamente mineração de conjuntos de itens frequentes e regras de associação, com o objetivo de identificar co-ocorrências de chamadas de métodos de uma API. Por exemplo, suponha que um determinado usuário de uma API solicite exemplos de uso para o método M1() e que no processo de mineração, identificou-se que na maioria das vezes esse método é utilizado em conjunto com o método M2(). Assim, a solução proposta recomenda exemplos de uso que envolvem esses dois métodos aos usuários. Uma instanciação da plataforma para a API do sistema operacional Android está publicamente disponível na web (www.apiminer.org) e tem recebido milhares de acessos mensais. Ela dispõe de 287.263 exemplos de uso extraídos de 155 projetos, sendo 21.598 exemplos relativos a 1.952 padrões de uso extraídos para a API do Android. Palavras-chave: API, Compreensão de Programas, Regras de Associação, Slicing de Programas. Tratando Exceções em Aplicações Android Juliana Oliveira1 Nélio Cacho1 Thiago Sena1 1 Departamento de Informática e Matemática Aplicada – Universidade Federal do Rio Grande do Norte (UFRN) [email protected], [email protected], [email protected] Resumo. O crescente uso de dispositivos móveis tem impulsionado o desenvolvimento de aplicações que fornecem diversos serviços para auxiliar à população nas atividades cotidianas, esses serviços vão desde uma aplicação que funciona como agenda ou que recomenda locais turísticos. A plataforma Android tem se estabelecido como principal sistema operacional usado por esses dispositivos. Tal plataforma provê um conjunto de abstrações que suportam o desenvolvimento dos mais variados tipos de soluções. Uma destas abstrações é chamada de Intent. O Intent é um mecanismo de envio de mensagem que possibilita a comunicação de uma aplicação com os recursos fornecidos pelo sistema operacional Android. Por exemplo, através dos Intents, componentes podem trocar mensagens ou inicializar serviços. No desenvolvimento de aplicações Android os problemas conhecidos com tratamento de exceção da linguagem Java persistem e, adicionalmente a plataforma possui algumas limitações de robustez, principalmente em relação aos Intents. Por exemplo, não existe um contrato explícito entre o emissor e o receptor de um Intent, não existe um formato para os dados que um Intent pode enviar e receber, e finalmente não existe uma definição das mensagens que são consideradas inválidas. Portanto a plataforma é vulnerável e não fornece tratamento de exceção adequado entre seus componentes. Isto possibilita a ocorrência de muitas exceções não checadas que podem gerar erros e o possível crash da aplicação, o que pode tornar a experiência do usuário muito negativa. Temos como objetivos deste trabalho: (a) definição de um modelo de tratamento de exceções específico para aplicações Android, definindo abstrações para separação do código normal do código excepcional, nesse estágio iremos definir se utilizaremos Java Annotations para descrever tais abstrações, ou se as mesmas deverão ser incorporadas à linguagem, este modelo deve levar em conta às características inerentes à plataforma, no que diz respeito às abstrações definidas pela mesma, sua característica assíncrona e o seu ciclo de vida; (b) implementação de um mecanismo de tratamento de exceções baseado no modelo propostos para a linguagem de programação Java; (c) aplicação do modelo em, pelo menos, duas aplicações Android; (d) avaliação da solução proposta por meio de analise de robustez. Palavras-chave: Tratamento de exceções, Android. Reengenharia por Exemplos: Uma proposta para evolução de sistemas legados baseada em comportamento Laís Berlatto, Duncan Dubugras A. Ruiz, Sabrina Marczak Faculdade de Informática – Pontifícia Universidade Católica do Rio Grande do Sul [email protected], [email protected], [email protected] Resumo. Sistemas legados representam um grande problema para empresas no que tange à mantenabilidade e integração de novas soluções, pois possuem um alto risco associado, principalmente ao processo de reengenharia. Exemplificando, incluir uma nova funcionalidade no sistema pode gerar erros pela falta de conhecimento da dependência entre funcionalidades. Essa falta, poderia ser minimizada se existisse documentação, o que raramente ocorre, visto que o conhecimento em geral está centralizado em poucas pessoas. Sendo assim, este trabalho tem por objetivo construir uma proposta que por meio de especificações executáveis escritas colaborativamente, as quais expressam os requisitos do sistema através de exemplificações do comportamento esperados deste, sejam capazes de envolver e guiar todo o projeto de reengenharia em um processo de validação contínua. Este processo será suportado por um sistema de métricas de controle, garantindo assim a consistência e o conhecimento agregado ao software legado também à sua evolução. Estas especificações são escritas em linguagem natural possibilitando redução na lacuna de comunicação entre membros da equipe e aumentando a concisão do desenvolvimento, formalizando uma única fonte de verdade, construindo em conjunto uma documentação viva, que quando executada, é capaz de garantir a integração de um novo módulo ao sistema e que este possuirá o comportamento equivalente ao substituído. Para realizar este processo, propõe-se uma análise modular, tendo em vista o acoplamento de módulos para focar o redesenvolvimento produzindo o mínimo produto viável, derivando-se os exemplos do comportamento do sistema através da análise de satisfatibilidade dos requisitos do negócio, provendo assim uma otimização da arquitetura do sistema em relação ao anterior e, também, o alinhamento entre especificações e esta nova arquitetura. A validação contínua verifica de maneira eficiente se o sistema realiza o que as especificações delimitam. As especificações representam um meio de manter a documentação relevante e confiável com um custo menor, pois a informação do trabalho a ser executado é produzida sob demanda, refletindo positivamente no processo futuro de evolução evitando problemas causados pela falta de conhecimento compartilhado sobre o sistema. Para verificar a viabilidade da proposta, visa-se conduzir um estudo de caso empírico, que implantará no(s) projeto(s) selecionado(s), compreendido(s) dentro de categorias que eliminam parcialmente possíveis limitações para a aplicação da proposta, um método que representa a proposta teórica apresentada. Neste estudo, pretende-se verificar se os passos definidos pelo método são viáveis em um cenário real. Os resultados serão avaliados com base nas métricas especificadas visando identificar se o comportamento mensurado da nova aplicação é equivalente ao do antigo sistema. Espera-se que este método seja capaz de otimizar o tempo para a compreensão dos reais requisitos, garantindo um alinhamento com a arquitetura, propiciando que a migração do sistema ocorra com sucesso e com um menor risco e custo agregado. Palavras-chave: sistemas legados, reengenharia, especificações executáveis, desenvolvimento guiado por exemplos, métricas. Análise de Mutantes: Uma Abordagem Baseada no Tamanho do Mutante Leonardo da Silva Sousa1, Auri Marcelo Rizzo Vicenzi1, Cássio Rodrigues1, Márcio Delamaro2 1 Instituto de Informática – Universidade Federal de Goiás (UFG) 2 Departamento de Sistemas de Computação (SSC) - Universidade de São Paulo (USP) [email protected], [email protected], [email protected], [email protected] Resumo. O Teste de Software é imprescindível caso queira se alcançar e garantir a qualidade do software desenvolvido. Dessa maneira foi proposto algumas técnicas para se testar um software, entre tais técnicas existe o Teste de Mutação. No Teste de Mutação utiliza-se de defeitos comuns no processo de implementação para poder gerar os requisitos de testes. A técnica consiste em gerar um conjunto de programas alternativos, chamados de mutantes, que se diferem do programa original em um determinado ponto no código. Esse ponto de diferença representa um defeito no programa. Após a criação dos mutantes, casos de testes são aplicados no programa original e nos mutantes com o objetivo de verificar se os casos de testes são capazes de evidenciar a diferença de comportamento entre o programa original e cada mutante. Essa abordagem de teste se destaca devido sua eficácia em medir a qualidade do software, entretanto ela sofre com o alto custo computacional necessário para sua execução. Existem algumas abordagens que visam diminuir o custo do Teste de Mutação. O objetivo deste trabalho é diminuir o custo dessa técnica analisando os mutantes através de outro ângulo. A ideia é utilizar a caracterização semântica de defeitos, propostos por A. J. Offutt, para criar um conjunto de casos de testes baseado no tamanho do mutante. O tamanho de um mutante é definido neste trabalho como sendo a quantidade de casos de testes que são capazes de matar o mutante. Espera-se comprovar que um mutante considerado pequeno seja mais significativo do que um mutante grande, pois apenas poucos casos de testes são capazes de matá-lo. Dessa maneira acredita-se que esses casos de testes que matam os mutantes pequenos são bons candidatos para enriquecer o conjunto de casos de teste. Tendo sucesso em montar um bom conjunto de casos de testes apenas baseado no tamanho do mutante pretende-se, posteriormente, utilizar o tamanho do mutante como base para encontrar apenas operadores de mutação que produzam mutantes que são pequenos. Restringir os operadores de mutação baseado no tamanho do mutante é a maneira proposta aqui para tornar o Teste de Mutação mais barato, consequentemente mais acessível. Palavras-chave: análise semântica, tamanho e teste de mutação. Automated Construction of Cookbooks for API's Using Questions & Answers Social Network Sites Lucas Batista Leite de Souza1 Marcelo de Almeida Maia1 1 Computer Science Department – Federal University of Uberlândia (UFU) [email protected], [email protected] Abstract. Developers of reusable software elements—such as software libraries— generally have the responsibility to provide high-quality and comprehensive documentation to enable effective software reuse. We consider a library as a implementation of some functionality that is meant to be reused by other developers. In case of object-oriented programming languages such as Java and C#, a library consists of a coherent collection of classes. In general, a library has two parts: the public interface and the private implementation. The former contains software elements (e.g. classes and methods) that other developers are allowed and expected to use; this part is called the application programming interface or API. The latter implements the library’s functionality, but is usually not exposed to the library’s users. The API documentation, when exists, usually has poor quality and lacks examples and explanations. Recently, a new culture and philosophy emerged and they are changing the characteristics of software documentation. This change is the result of a broad set of accessible social media technology (wikis, blogs, Questions and Answers sites, forums). The documentation available in those kind of social media is called crowd documentation, that is, a type of documentation where a big number of contributors, the crowd, evaluates and contributes for the set of documents. One of the most important social media technology is the Question & Answer site Stack Overflow1. Unlike traditional documentation, where the collection of resources (e.g., specifications and code examples) are understandably organized and explicitly linked to the elements of the API, the crowd documentation is created implicitly, without any organization or comprehensive links explicit to the elements of the API. In the case of Stack Overflow, the information related to a particular subject is scattered over several different threads. The goal of this work is to use the data available in the Stack Overflow for the construction of cookbooks for API's. Each cookbook will be formed by a set of items (recipes) in which each one corresponds to a relevant concept related to one API. Each recipes will be linked to few threads from Stack Overflow. To build the tutorials, we will construct two subsystems: the first one will be responsible for analyzing the questions and answers in Stack Overflow to select the topics that will constitute the tutorial. The second subsystem will be responsible for selecting the information that each topic will contain, i.e., the most relevant threads related to its concept. For the evaluation of the created cookbooks we will perform an experiment with human subjects. Keywords: API, Software Documentation, Crowd Documentation, Social Media, Stack Overflow. 1 http://www.stackoverflow.com Estudando a Difusão da Inovação Em Ecossistemas de Software Müller Miranda, Renato Ferreira, Cleidson de Souza Instituto de Ciências Exatas e Naturais – Universidade Federal do Pará (UFPA) {mulgsm, renpina}@gmail.com, [email protected] Resumo. Slinger Jansen define ecossistema de software como um conjunto de soluções de softwares e um grupo especialistas no domínio que compõem soluções relevantes para a comunidade de usuários. Google Android, Libre Office, Mozilla Firefox e Linux são alguns exemplos destes ecossistemas, pois possuem a característica de disponibilizarem ferramentas que facilitam o desenvolvimento de aplicações visando sua adoção por engenheiros de software. Um dos fatores de sucesso de um ecossistema está ligado ao esforço para criação de novas aplicações para o mesmo, e esse esforço está associado a complexidade de utilização das ferramentas para o rápido desenvolvimento de novos produtos. Entre essas ferramentas podemos identificar o Software Development Kit (SDK), que é o pacote de instalação para que a engenheiros de software tenham integração com o ecossistema proposto para o desenvolvimento de aplicações. Outros exemplos de ferramentas são os frameworks, que definem padrões e especificam como os diferentes componentes da plataforma se comunicam, as bibliotecas que são utilizadas com a finalidade de reaproveitamento de código, e as Application Program Interfaces (API) que são as funcionalidades expostas por uma biblioteca ou framework. Além destas ferramentas, existem outros fatores determinantes para a difusão de um ecossistema de software como por exemplo, os possíveis benefícios financeiros, a documentação das APIs do ecossistema, etc. O objetivo deste trabalho é fazer uma análise científica das características que envolvem a difusão da inovação em ecossistemas de software. Assim, pretende-se definir as diversas características que podem ser determinantes para aceitação ou rejeição de um ecossistema de software, a partir da teoria de inovação de Rogers. A teoria de inovação de Rogers foi desenvolvida para estudar o fenômeno da difusão de inovações, e considera ideias, práticas ou objetos que sejam percebidos como novo por quem os adota, portanto é uma teoria geral que pode ser aplicada em diversas situações. A teoria identifica os principais fatores que influenciam a adoção de uma tecnologia, a saber: vantagem relativa, compatibilidade, complexidade, testabilidade e observabilidade. Neste trabalho estes fatores serão mapeados para aspectos computacionais que possam ser avaliados no contexto de ecossistemas de software. Por exemplo, a complexidade poderia ser mapeada a partir da (in)existência de ferramentas e exemplos de aplicações que permitem o desenvolvimento de aplicações para o ecossistema. Depois deste mapeamento, pretende-se coletar dados para compreender o processo de difusão de inovação de ecossistemas de software para dispositivos móveis. A coleta de dados será feita através de entrevistas com engenheiros de software, bem como através de mineração de repositórios. As informações resultantes desta pesquisa podem trazer benefícios às empresa de softwares de diferentes seguimentos ao auxiliarem as mesmas na tomada de decisão quanto a política de adoção e desenvolvimento de seus ecossistemas de softwares, portanto, impactando positivamente o sucesso destes ecossistemas. Palavras-chave: Ecossistemas de Software, Inovação, Rogers, Plataforma. i Ambiente para Avaliação de Modelos de Sistemas Embarcados Baseada em Métricas Odair Moreira de Souza1, Fabiano Cutigi Ferrari1 1 Departamento de Computação – Universidade Federal de São Carlos (UFSCar) [email protected], [email protected] Resumo. Os sistemas embarcados estão sendo cada vez mais empregados em diferentes domínios de aplicação e em diversos níveis de complexidade, tais como telecomunicações, eletrodomésticos, aplicações militares e aeroespaciais. Normalmente, o desenvolvimento de sistemas embarcados é baseado na elaboração de modelos próximos à etapa de codificação. Para tal, utilizam-se processos de desenvolvimento baseado em modelos. Nessa abordagem a etapa de modelagem é antecipada, assim como as atividades de Garantia da Qualidade. Portanto, devido à necessidade de antecipar a detecção de problemas na modelagem de projetos de sistemas embarcados, observa-se um aumento nas pesquisas para buscar mais critérios, ferramentas, métodos e processos. Essas pesquisas visam a aumentar o nível de qualidade dos sistemas embarcados produzidos, assim diminuindo os riscos associados a eventuais falhas desses sistemas. Dessa forma, a realização das atividades para verificar o nível de qualidade dos modelos torna-se indispensável e imprescindível, pois dependendo do domínio de aplicação, uma falha no sistema pode causar graves prejuízos humanos e financeiros. Uma das maneiras para se obter o nível de qualidade dos modelos é por meio de aplicação de métricas. Em sistemas embarcados, as métricas de qualidade são em geral aplicadas no artefato final, ou seja, no código fonte automaticamente gerado a partir dos modelos; caso o sistema seja modelado de forma inadequada, os problemas migrarão para os artefatos subsequentes. Nesse contexto, o objetivo deste trabalho é viabilizar a medição do nível de qualidade dos modelos projetados para sistemas embarcados, e estabelecer um relacionamento entre as propriedades internas dos modelos com os atributos externos de qualidade. Objetiva-se desenvolver um ambiente para indicar o nível de qualidade dos modelos de projetos de sistemas embarcados. Para atingir esse objetivo, o trabalho será realizado em duas etapas. A primeira consiste em prover recursos para permitir a avaliação interna dos modelos, enquanto a segunda trata da atribuição de níveis de qualidade a esses modelos. A avaliação interna será realizada através da obtenção de medidas definidas por métricas. O nível de qualidade dos modelos, por sua vez, será obtido por meio da associação dessas medidas internas com atributos externos de qualidade como, por exemplo, manutenibilidade, confiabilidade e compreensibilidade. Conjuntos de métricas internas e atributos externos de qualidade serão selecionados para possibilitarem o mapeamento e, como consequência, permitirem a atribuição de níveis de qualidade para os modelos avaliados. Palavras-chave: Sistemas Embarcados, Engenharia de Software, Qualidade de Software, Métricas para Modelos. !"!# $%"$%# &''&''(&'' !" # # $# $ % " ! & ! ! ' # ( #$)*$+ ",! $)*$+ " " - - ! . ( ! ! % $ % / ! $)*$+ 0 $)*$+ , . , 1 , # Rule-based Approach to Modeling and Generation User Interfaces Vagner Nascimento, Daniel Schwabe Departamento de Informática, Pontifícia Universidade Católica (PUC-Rio), Brasil [email protected], [email protected] Abstract. Modern day interfaces must deal with a large number of heterogeneity factors, such as varying user profiles and runtime hardware and software platforms. These conditions require interfaces that can adapt to the changes in the <user, platform, environment> triad, known as context. The Model-Based User Interface ap- proach has been proposed as a way to deal with these requirements. The Cameleon Reference Model is the current reference framework for User Interfaces gaining adop- tion, which proposes four abstraction levels for modeling UIs: Task and Domain, Ab- stract Interface, Concrete Interface, Final User Interface. In the past years we have been working in the Semantic Hypermedia Design Method (SHDM) and its implementation environment Synth, which aims to allow Model-Based development of Linked Data Applications. While SHDM includes a proposed Abstract Interface Model, it lacks more refined models capable of dealing with the complexities of UIs as outlined above. In this work, is presented a new set of User Interface models and its implementation architecture similar to the Cameleon Framework proposal, but a data and rule-based interface definition model capable of taking into account the semantics of the data it is manipulating and deal with changes of the context, especially in the case of Linked Data. These rules define criteria for situations like the activation of an interface (Inter- face Selection Rules); the selection of elements that participate in the abstract composi- tion (Abstract Interface Selection Rules) and also for the mapping of specific widgets that will be used in the rendering stage (Concrete Mapping Rules). The proposal con- templates a method for modeling interfaces, an implementation architecture and a framework for authoring and running the interface models. An architecture is also presented for building widgets as well as a concrete interface interpretation and ren- dering machine from a hierarchy specification. The overall goal of the proposal is to design interfaces more responsive to data and contexts, including situations of adaptation, generating more flexible and reusable interfaces for web applications. The major distinguishing original contribution is the use of data- and model-driven rules integrated seamlessly with the various other models within the SHDM approach, directly supported by an implementation environment. This approach leads to explicating design decisions associated to the various levels of abstraction, as they become explicit in the rules, as opposed to embedded in the interface code. Palavras-chave: SHDM, Interface, Adaptation, Semantic Web, Data-driven design. Oportunidades de Refatoração Move Method Vitor Sales1, Ricardo Terra1, Marco Túlio Valente1 1Departamento de Ciência da Computação - Universidade Federal de Minas Gerais (UFMG) [email protected], [email protected], [email protected] Resumo. A qualidade de sistemas é sempre um objetivo recorrente em projetos de desenvolvimento de software. Na prática, uma série de diretrizes que promovem a qualidade de sistemas deve ser seguida por processos de desenvolvimento de software, tais como um projeto arquitetural bem definido e o esforço no desenvolvimento de módulos coesos e pouco acoplados. No entanto, desenvolvedores ao não implementarem métodos nas classes mais apropriadas originam pelo menos dois problemas: (i) Feature Envy, que se refere a métodos que utilizam mais ou que são mais utilizados por classes diferentes daquela qual está implementado e (ii) violações arquiteturais, que se refere ao fato de um método violar a arquitetura planejada do sistema. Independentemente do problema, uma solução efetiva consiste na aplicação de refatorações Move Method. Não obstante, a tarefa de apontar os métodos mal localizados em um sistema não é trivial. Diante disso, é proposto uma abordagem e uma ferramenta, nomeada como JMove, baseada em similaridade estrutural para indicar oportunidades de refatorações Move Method. Sua conjectura é que quanto mais similares os métodos em uma classe, maior será a qualidade da classe em termos de coesão e/ou acoplamento. Para determinar e de similaridade que tem como objetivo medir a semelhança entre dois conjuntos quaisquer. Em linhas de pesquisa similares, a ferramenta Crocodile emprega o coeficiente de Jaccard entre métodos e atributos. Na prática, a ferramenta exibe as distâncias calculadas em uma perspectiva tridimensional para que o desenvolvedor identifique manualmente as oportunidades de refatoração. Inspirados nesse trabalho, foi proposto uma abordagem e uma ferramenta chamada JDeodorant que verifica os acessos a atributos e métodos para detectar casos de Feature Envy. Além disso, esse trabalho utiliza o coeficiente de Jaccard para definir uma métrica de coesão considerada pré-requisito para ocorrer uma sugestão de refatoração Move Method. A ferramenta JDeodorant indica quais métodos devem ser movidos, além da informação da potencial classe de destino. JMove também se baseia em um coeficiente de similaridade, mas considerando o conjunto de tipos com os quais um método estabelece dependência estrutural, e não a quantidade de acessos a atributos ou métodos. Em uma avaliação realizada com treze sistemas de código aberto, JMove se mostrou 46% mais eficaz em detectar métodos mal localizados do que JDeodorant, que constitui a principal ferramenta já proposta com esse objetivo. Palavras-chave: Refatoração, Mover Método, Feature Envy, Recomendação, Coeficiente de Similaridade. Projeto Arquitetural para Integração de Aplicações Distribuídas para Apoiar Coleta de Dados em Campo Adriano Vale de Oliveira1 Nágila Natália de Jesus Torres1 Adailton Magalhães Lima1 1 Sistemas de Informação – Universidade Federal do Pará – Castanhal (UFPA) [email protected], [email protected] Resumo. Arquitetura de Software é fundamental para qualidade dos produtos de Software, pois as técnicas utilizadas em projetos arquiteturais promovem a identificação dos componentes, padrões, estilos de comunicação e facilitam a evolução do Software. Nesta pesquisa existem dois softwares desenvolvidos em realidades distintas: o primeiro, denominado SIVISA, possui foco na coleta de dados sobre Saúde Animal (detalhes em www.sistemadecoleta.blogspot.com.br/2013/05/o-que-e-sivisa.html); o segundo é uma plataforma distribuída baseada na nuvem denominada Maritaca (disponível em maritaca.unifesp.br:8080/maritaca/index.html). Ambos disponibilizam software para coleta de dados em campo (como formulários socioeconômicos sobre saúde pública, censos, etc.) em plataformas web e móvel, porém seus objetivos caminham em direções distintas (no rigor no controle dos usuários responsáveis pela coleta dos dados; na necessidade de conexão contínua com rede de dados, etc.), impedindo que a integração entre estas aconteça de forma natural. Portanto, se faz necessário o projeto e implementação de uma arquitetura que permita a interoperabilidade entre tais arquiteturas. O projeto arquitetural em desenvolvimento objetiva adequar a arquitetura da aplicação Maritaca à realidade da região nordeste paraense onde não há conexão contínua com redes de dados, e funcione assim em conjunto com a aplicação SIVISA. Para alinhar as aplicações é necessário elaborar um projeto de arquitetura de Software que possibilite mapear e documentar os componentes, para proporcionar uma utilização otimizada dos recursos das plataformas. Como bases para o desenvolvimento desta integração foram necessárias pesquisas de trabalhos relacionados ao tema, destacando-se: “Projeto Maritaca: Arquitetura e Infraestrutura para Coleta Móvel de Dados Usando Smartphones” [Conceição, 2013], que descreve a arquitetura da plataforma Maritaca. Uma aplicação similar é o AndCollector [Mota, 2009], que é desenvolvido em Android e capaz de gerar formulários de coleta, porém este não possui suporte escalável de dados, pois foi desenvolvido para rodar centralizado em dispositivos móveis. Além disso, a “Utilização do MTColeta e Dispositivos Móveis para o recadastramento Imobiliário de Prefeituras” mostra o uso do MTColeta na coleta em campo, entretanto, este está limitado à já defasada tecnologia dos PDAs. Para integrar em nível arquitetural as aplicações, é necessário utilizar-se de engenharia reversa para entender e identificar os componentes dos sistemas (Maritaca e SIVISA), além de realizar adaptações em um gerador de códigos para aplicações Android integrante da arquitetura Maritaca. As documentações e diagramas UML de toda a integração arquitetural estão sendo desenvolvidas e disponibilizadas aos envolvidos dos dois projetos no endereço: www.sistemadecoleta.blogspot.com.br. Dessa forma, como resultados esperados têmse: tornar o Maritaca acessível ao levantamento de dados em campo para Saúde Animal; tornar o SIVISA um cliente do Maritaca, com o modelo arquitetural cliente – servidor; disponibilizar os dados coletados pela aplicação móvel do Maritaca ao SIVISA, e, por fim, realizar testes de interface, caixa preta e caixa branca no Software resultante deste projeto de integração arquitetural. Palavras-chave: Arquitetura de Software, Integração, Dispositivos Móveis, Coleta de Dados. Um Sistema Multiagentes para Análise de Susceptibilidade de Escorregamentos RODRIGUES, A D R.1,2 PAES, R. B¹, NETO B F S¹, CARVALHO, T M O² 1 Instituto de Computação – Universidade Federal de Alagoas(UFAL) [email protected], [email protected], [email protected] ²ALTA Geotecnia Ambiental [email protected] Resumo. Devido à ocupação antrópica de áreas de risco no Brasil, o mapeamento e monitoramento de regiões susceptíveis a desastres naturais, dentre eles os escorregamentos de terra, tem sido o foco principal do Ministério das Cidades. Eventos desta natureza podem ocasionar perdas de vidas e prejuízos econômicos significativos, como os megadesastres desencadeados por chuvas intensas ocorridos no Rio de Janeiro e em Santa Catarina nos anos de 2010 e 2011. Dada a quantidade e dinamicidade das informações necessárias para modelar e prever esses desastres, tornou-se necessário o uso de sistemas computacionais para suprir esta demanda, destacando-se dentre eles os sistemas de informação geográfica(SIG). Entretanto, os sistemas SIG são concebidos de forma genérica, muitas vezes não tendo um aspecto adaptativo desejável. Em um caso específico, o mapa de susceptibilidade a escorregamentos precisa , dentre outras informações, da chuva acumulada nas últimas 4 horas para ser gerado, tornando-se desatualizado após algumas horas. Uma abordagem para este problema é o uso de agentes adaptativos, responsáveis por coletar e atualizar parâmetros necessários para os cálculos. Neste contexto, este trabalho apresenta o desenvolvimento de um sistema computacional que gerará mapas de susceptibilidade combinando informações providas por agentes adaptativos. Tais agentes utilizarão informações ambientais (chuva, declividade, uso do solo e ocupação) e técnicas de aprendizagem de máquina para inferir a susceptibilidade de novas áreas. Em particular, o sistema é composto por dois tipos de agentes: (i) aqueles que utilizam históricos de precipitação e se baseiam em estágios de alerta de acordo com a quantidade de chuva estipulada pelo Serviço geológico do Estado do Rio de Janeiro (DRM-RJ); e (ii) aqueles que utilizam técnicas de aprendizagem de máquina, tais como máquinas de suporte vetorial e KNN, para inferir a susceptibilidade de novas áreas. Uma vez implementados, os agentes atuarão no aplicativo GeoDecision, uma plataforma SIG especializada em análise de susceptibilidade de encostas. O sistema multi agentes analisará a utilização dos mapas no aplicativo, coletando informações relevantes para a criação e atualização de um mapa de susceptibilidade na região geográfica de interesse do usuário. Deste modo, espera-se que o sistema, uma vez funcionando, se aperfeiçoe na predição de áreas susceptíveis a partir da coleta de novos dados de escorregamentos, monitorando e identificando áreas susceptíveis em tempo real. Tais dados podem ser utilizados por órgãos governamentais competentes na gestão de riscos ambientais. Palavras-chave: Sistemas auto adaptativos e autônomos, máquinas de suporte vetorial, escorregamentos de terra, aprendizagem de máquina. SISCOD: Uma Proposta para a Redução de Infrações de Trânsitos em Rodoviárias Brasileiras Eliseu R. de Souza¹, Susany P. Silva¹, Fabrício W. da S. Garcia¹, Aline F. dos A. Lima¹, Marcos C. da R. Seruffo¹, Adailton M. Lima¹ Universidade Federal do Pará - Campus Castanhal Av. dos Universitários, s/n, Jaderlândia, 68746-360, Castanhal - Pará - Brasil ¹Faculdade de Sistema de Informação {eliseu.souza, susany.silva, fabricio.garcia, aline.lima}@castanhal.ufpa.br {seruffo, adailton}@ufpa.br Resumo. Os índices de acidentes de trânsito no Brasil crescem a cada dia devido à má conduta dos motoristas nas rodovias, mesmo diante da implantação de novas leis no decorrer dos últimos anos, ainda são elevados os índices de acidentes de trânsito causados por excesso de velocidade, embriaguez e falta de habilitação dos condutores. Existem várias tentativas que os órgãos de trânsito utilizam para minimizar esses acidentes, como por exemplo: multas com valores significativos, radares eletrônicos que possuem sistemas que identificam o veículo que comete infração no trânsito - e blitz - que são realizadas para fiscalizar as rodovias e diminuir a ocorrência de infrações. No entanto, a implantação de tais práticas ainda não conseguiu mitigar os problemas com acidentes de trânsito no Brasil. Nesse sentido, este artigo propõe um Sistema de Controle de Ocorrências e Diligências (SISCOD), o qual seja capaz de registrar infrações através de denúncias realizadas pelos cidadãos, no momento em que presenciarem violações às leis de trânsito. As ocorrências ao serem registradas e processadas, acionam os agentes de trânsito mais próximos, de acordo com o local de origem do incidente, viabilizando assim que as viaturas policiais ou de trânsito interceptem o infrator poucos minutos após a ocorrência, minimizando transtornos no que se refere ao tráfego de veículos nas rodovias e a impunidade dos infratores. O referido sistema será desenvolvido seguindo a metodologia ágil XP (Extreme Programming), pois esta permite mudanças nos requisitos no decorrer de todo o ciclo de vida do software, já que os mesmos podem sofrer mudanças durante todo o processo de desenvolvimento. Além disso, a metodologia XP apresenta valores, regras e práticas que permitem desenvolver a aplicação de forma mais rápida, dando ênfase na comunicação entre os stakeholders, que é de fundamental importância para a compreensão correta dos requisitos da aplicação. Com a utilização dessa metodologia é possível fazer modificações controladas na aplicação, ou seja, mudanças que não afetem drasticamente estimativas - como o prazo e custo do produto - e que não comprometam a qualidade do mesmo. Diante ao exposto, pode-se afirmar que a metodologia XP é a mais adequada para a implementação do SISCOD, tanto por apresentar as características citadas acima, como por viabilizar a programação pareada, minimizando erros no código fonte, uma vez que esse deve ser revisado por outro programador, o que é de extrema necessidade devido à natureza da aplicação. Palavras-chave: Métodos Ágeis, Infrações de Trânsito, Metodologia XP. Aplicação de Técnicas de Engenharia de Software no Desenvolvimento de Sistemas Educacionais Fabrício W. da S. Garcia¹, Aline F. dos A. Lima¹, Marcos C. da R. Seruffo¹, Zilda L. R. Paiva² Universidade Federal do Pará - Campus Castanhal Av. dos Universitários, s/n, Jaderlândia, 68746-360, Castanhal - Pará - Brasil ¹Faculdade de Sistema de Informação ²Faculdade de Letras {fabricio.garcia, aline.lima}@castanhal.ufpa.br, {seruffo, zramalho}@ufpa.br Resumo. A adesão de novas tecnologias em ambientes escolares tem proporcionado experiências enriquecedoras em sala de aula, permitindo uma grande geração e disseminação de conhecimentos. Instituições de ensino que buscam aliar seus métodos educacionais a recursos tecnológicos viabilizam a seus alunos uma forma diferenciada de Ensino/Aprendizado (E/A), onde a interação aluno-aluno e aluno-professor é fortemente estimulada através do computador e de recursos audiovisuais. Nesse sentido, o presente trabalho objetiva apresentar o módulo educacional SIDICON (Sistema de Informação sobre Diversidade e Consciência), que é uma ferramenta de E/A baseada na utilização de padrões, a qual visa melhorar as práticas pedagógicas utilizadas em escolas públicas de ensino fundamental da Amazônia Paraense, por meio de um ensino diferenciado via computador. O desenvolvimento do SIDICON seguiu as etapas tradicionais de construção de software (coleta, análise e validação de requisitos, projeto de software, codificação, implantação e testes), sendo que estas fases foram norteadas pelo modelo de ciclo de vida iterativo incremental, o qual permitiu desenvolver a aplicação em múltiplos ciclos, realizando ajustes e incrementando novas funcionalidades ao término de cada etapa do ciclo de vida do software. Para o melhor controle dos processos de desenvolvimento, utilizou-se o método de gestão PDCA (Plan, Do, Check, Act), que é constituído basicamente de quatro etapas que acompanham cada ciclo de construção do software, as fases do PDCA são, respectivamente: planejamento, o qual objetivou identificar a problemática e delinear uma forma de resolvê-la, permitindo definir os objetivos do módulo educacional; execução, onde foram desenvolvidos diagramas fundamentados na Engenharia de Software (ES) e estabelecidos os aspectos visuais do aplicativo, como o design, menus, botões e a codificação das funcionalidades; controle, em que foram realizados testes relacionados às funcionalidades do módulo educacional; na ultima etapa foram identificados possíveis bugs e inconsistências, os quais foram corrigidos no decorrer de cada iteração. Ao término do desenvolvimento do SIDICON, realizou-se a implantação do sistema em uma escola pública do município de Castanhal – PA, onde se pôde coletar informações relacionadas aos benefícios e a satisfação dos alunos com o sistema. Constatou-se que o índice de aprovação do SIDICON foi de 95%, os resultados relacionados à classificação do sistema foram: Excelente 25%, Bom 63%, Regular 12% e Ruim 0%. Os resultados obtidos da aplicação do módulo educacional foram animadores, pois mostraram que a abordagem indicada neste trabalho possibilitou a construção de uma ferramenta educacional de qualidade, além de expor o quão benéfico pode ser a inserção de tecnologias para auxiliar o E/A nas escolas, proporcionando uma forma de aprendizado diferenciada e prazerosa para os alunos. Palavras-chave: Informática na educação, recursos tecnológicos, engenharia de software, PDCA. Improving Emergent Interfaces by using Design by Contracts and Weakest Precondition Francisco Dalton1 Márcio Ribeiro1 1 Instituto de Computação – Universidade Federal de Alagoas (UFAL) [email protected], [email protected] Abstract. Software product line features might be implemented using preprocessors, where conditional compilation directives like #ifdef and #endif encompass feature code. Despite their widespread usage, preprocessors have several drawbacks, making developers susceptible to commit errors during maintenance tasks. In this context, when maintaining a feature, we might use emergent interfaces, which capture dependencies between this feature and the other ones, bringing awareness of the features we really might impact due to our maintenance task. For example, suppose we should maintain a mandatory feature. In particular, we are supposed to change the value of variable x declared in method m. This method contains four optional features implemented using #ifdefs, A, B, C, and D, but only A and D uses variable x. This means that A and D depends on the mandatory feature. In this example, when using emergent interfaces, developers are aware of dependencies like these ones. So, they can focus on two features, instead of analyzing four. However, emergent interfaces are still not representative enough to provide feature modularization, since when changing a feature, developers still need to check and analyze the ones pointed by emergent interfaces (here, A and D). Consequently, developers wastes time and effort instead of focusing only on the maintenance task. To minimize this problem and enable a better interface representativeness with a richer set of information, in this work we propose an extension to emergent interfaces by using Design by Contracts and the Dijkstra weakest precondition. The contracts have semantic information such as “features A and D require x > 0”. Now, as long as we follow this contract, we are able to change the x value without breaking the behavior of A and D and even without the need of analyzing them. To capture this semantic information, we rely on contracts written in languages such as Java Modeling Language (JML), where we can annotate each method with preconditions and postconditions. The idea is to take the postcondition of a method and calculate the weakest precondition that have to be fulfilled at the beginning of the method to ensure the right execution. We intend to formalize our approach based on a catalog of feature dependencies we will build and their relationship with contracts. Our hypothesis is that, if our interfaces contain semantics information about the features we might impact, developers can maintain a feature without the need of analyzing the others, improving comprehensibility and reducing effort. We intend to evaluate this hypothesis by using controlled experiments with human subjects. Keywords: Software Product Lines, Preprocessors, Features, Design by Contract, Emergent Interfaces. Um sistema móvel de armazenamento e reprodução de vídeo utilizando computação em nuvem Lourival Leite Cavalcante Júnior Faculdade de Sistemas de Informação – Universidade Federal do Pará (UFPA) [email protected] Resumo. Com o grande aumento da utilização de dispositivos móveis em todo lugar e sempre conectados a Internet é aparente a valorização de determinados serviços que facilitem as experiências dos usuários. Esses aparelhos são pequenos, móveis e já dispõem de recursos significativos, porém, ainda limitados. Para minimizar essa limitação, faz-se necessária a utilização de serviços para driblar as limitações relacionadas ao armazenamento e processamento internos, por exemplo. Nesse contexto, a computação em nuvem surge como uma plataforma independente de sistemas que tem como objetivo proporcionar um uso racional de equipamentos e com a possibilidade de adequarse de acordo com a necessidade do usuário, diminuindo o custo. Outro ponto interessante a se destacar é o uso da transmissão de dados multimídias pela internet, a exemplo, podemos selecionar um vídeo e adiciona-lo em um repositório online, após essa etapa, esse mesmo vídeo poderá ser acessado e visualizado diretamente na internet, sem a necessidade de download do mesmo para o dispositivo usado para acessar o serviço. O aumento da utilização desses serviços dar-se pelo aumento e melhoramento de equipamentos e da largura de banda disponibilizados para dispositivos moveis, as redes 3g que permitem um acesso a internet rápida e de qualidade a parti de qualquer lugar onde tenha a cobertura, facilitando assim a mobilidade. Atualmente existe muitos serviços que disponibilizam conteúdos de vídeos online, como Youtube, Vimeo, entre outros, com base nesses serviços o presente trabalho propõe-se a desenvolver um aplicativo baseado na arquitetura de sistemas distribuídos, acoplando o serviço em nuvem com a reprodução de vídeos em dispositivos moveis através do acesso a internet, visualizando lado da computação em nuvem temos o desenvolvimento de serviços que utilizem o S3 e CloudFront da plataforma Amazon Web Services. Será também realizado um estudo para o levantamentos de dados sobre a utilização de softwares distribuídos no cenário de transmissões de vídeos utilizando redes celulares 3g e também rede Wifi na Mesorregião Metropolitana de Belém, Pará. Como resultados esperados temos, o desenvolvimento de uma aplicação nativa para android que esteja diretamente ligada a um serviço de armazenamento em nuvem que realize a gravação de vídeos e faça seu upload automático, após essas etapas o usuário poderá visualizar o vídeo gravado diretamente do repositório do serviço em nuvem, também será realizado a avalição da arquitetura distribuída para a transmissão de dados multimídias. Os dados coletados e o aplicativos desenvolvido será disponibilizado abertamente para os usuários, não sendo cobrado nada para a obtenção dos mesmos. Palavras-chave: Computação em nuvem, reprodução de vídeos e sistemas distribuídos. Ferramenta para elaboração de modelos intencionais a partir de Léxico Ampliado da Linguagem 1 Lucas Gonçalves Cunha , José Luis Braga 1 1 Departamento de Informática – Universidade Federal de Viçosa (UFV) [email protected], [email protected] Resumo. A extração de informações sobre um determinado domínio é uma das grandes dificuldades na geração de um software. Os aspectos intrínsecos e a linguagem peculiar de cada domínio exigem conhecimento e experiência do engenheiro de requisitos para o sucesso no apanhado das informações. Existem trabalhos que mostram que uso de técnicas de baseados em inteligência artificial podem auxiliar no processo de elicitação de requisitos. Baseado nestes trabalhos, o presente trabalho tem como objetivo a elaboração de uma ferramenta utilizando a técnica de sistemas baseados em conhecimento para auxiliar a construção de modelos intencionais de software, representados segundo a notação do iStar. O iStar tem como principal base a representação de contextos organizacionais, onde atores dependem uns dos outros para que metas sejam alcançadas, recursos sejam fornecidos, tarefas sejam realizadas e metas flexíveis sejam atendidas. O método proposto basea-se na elaboração de uma base de dados contendo o vocabulário explicitado através do Léxico Ampliado da Linguagem – LAL. O LAL é baseado na premissa que em uma organização existe uma linguagem estendida da linguagem natural, que é utilizada pelos atores da organização, composta por símbolos e caracterizada como linguagem da aplicação. O vocabulário obtido é parametrizado de forma que seja possível analisá-lo em uma máquina de inferência. A inspeção é realizada através de uma segunda base contendo regras de produção. As regras são utilizadas para identificar os elementos do iStar presentes nas descrições do LAL. Os elementos identificados são anotados na base de fatos, visto que algumas regras dependem de elementos identificados previamente. A inspeção das regras sobre a base de conhecimento é feita até que não se consiga encontrar mais elementos nas descrições. Com os elementos elicitados, são feitas validações a respeito da integridade e plenitude dos modelos, também através de regras inseridas na base. Devido a grande dificuldade encontrada durante o processo, a total automação tem grande propensão a erros, logo incapacidades de raciocínio por parte da ferramenta ou ambiguidades são tratadas com intervenções do engenheiro de requisitos através de diálogos simples, para que este sugira uma solução mais precisa. A intervenção do engenheiro também é necessária para o melhoramento da base de regras. A cada modelo gerado a ferramenta é capaz de sugerir regras a respeito de termos classificados segundo decisões anteriores feitas pelo engenheiro de requisitos. O estado atual em que se encontra o desenvolvimento do trabalho não possibilita verificar a efetividade, em números, do uso da abordagem no processo de elaboração dos modelos. Palavras-chave: sistemas baseados em conhecimento, iStar, léxico ampliado da linguagem, engenharia de requisitos. Verificação de um modelo para elaboração do Projeto de WebApps com ações integradas da WebE e IHC Patricia Cristiane de Souza1, Cristiano Maciel 1 Luciana A. O. de Moraes1 1 Laboratório de Ambientes Virtuais Interativos. Instituto de Computação – Universidade Federal de Mato Grosso (UFMT) [email protected], [email protected], [email protected] Resumo. Com o crescimento acelerado da internet, os sistemas web também ganharam um grande impulso. Todavia, todo esse crescimento gerou problemas ao se elaborar Aplicações Web (WebApps), uma vez que há uma quantidade considerável de perfis de usuários na internet e com isso, tanto o processo de desenvolvimento quanto as atividades da Interação Humano-Computador (IHC), acabam por não serem alinhadas e utilizadas de maneira eficaz. Um agravante a mais nesta situação é a pouca quantidade de literatura que aborda metodologias para desenvolvimento de WebApps, bem como as técnicas de IHC dentro da Engenharia Web. O processo de Engenharia Web (WebE) sugerido por Lowe and Pressman (2009) apresenta um arcabouço ágil com o uso de um modelo de processo ágil, em que distintos métodos são usados em atividades tais como, comunicação, planejamento, modelagem, construção e implantação. Na busca da utilização prática de processos para WebE considerando a IHC, com vistas a definição de atividades para projetos interdisciplinares do curso de pós-graduação lato sensu em Engenharia de Sistemas para Web da Universidade Federal de Mato Grosso, é que constatou-se a necessidade de melhor investigar estas áreas. Face ao exposto, tem sido desenvolvida uma pesquisa que visa compor um modelo que permita um alinhamento das atividades de IHC com a fase de projeto do desenvolvimento de uma WebApp. Tal pesquisa possui diversas etapas, tais quais, o estudo bibliográfico, o desenvolvimento de um modelo e a consequente verificação desse, com potenciais usuários. Com a socialização do modelo de Souza et. al (2012, 2013), foi possível obter dados preliminares para análise de sua viabilidade, retroalimentando-o. Assim, após contextualizar as pesquisas nas áreas e apresentar brevemente o modelo, foram analisados qualitativamente e quantitativamente os dados dos experimentos realizados. Dessa análise, podemos relatar, que 100% dos participantes da socialização disseram que o modelo apresentado é bem estruturado, levando-se a inferir que tal modelo pode ser de grande valia tanto para academia, quanto para fábricas de softwares. Esperase desta forma, discutir esta importante temática com as comunidades de Engenharia de Software (ES) e IHC, possibilitando contribuir no alinhamento das áreas envolvidas na pesquisa, em prol da criação de WebApps de qualidade, voltadas aos seus usuários e fazendo uso de metodologias de desenvolvimento. Palavras-chave: Engenharia Web, Interação Humano Computador, Engenharia de Software, Aplicações Web. Avaliação empírica da metodologia Lean Startup em um Empreendimento Tecnológico de Software Nágila Natália de Jesus Torres1, Adriano Vale de Oliveira¹, Eduardo Leal Guerra1 1 Faculdade de Sistemas de Informação – Universidade Federal do Pará (UFPA) [email protected], [email protected], [email protected] Resumo. A importância do empreendedorismo para o desenvolvimento econômico das nações já é consenso tanto na indústria, na academia, quanto nos governos. Uma diversidade de programas de apoio ao empreendedorismo espalhados pelo mundo tem buscado incentivar a formação de novos empreendedores para alavancar a criação de novas empresas. Nesse contexto, juntamente com o crescimento da Internet, temos visto nos últimos anos o surgimento de vários negócios digitais no mundo alavancados por Startups representadas por gigantes como Google, Apple e Facebook. As Startups são empresas ou instituições humanas ou simplesmente pessoas que queiram transformar ideias em produtos inovadores, que estão inseridas em um contexto de extrema incerteza e com pouca disponibilidade de recursos financeiros. O termo surgiu nos Estados Unidos da América (EUA) na década de 80 a 90 e atualmente tem-se disseminado de maneira vertiginosa. Entretanto, uma pesquisa realizada pela Havard Business Scholl mostrou que 75% de todas as Startups falham e que isso pode ser justificado pelo uso dos modelos de gestão tradicionais, nos quais o mercado e os clientes são bem conhecidos, o que não se adequa ao contexto das Startups. Para superar essa dificuldade, surge a metodologia Lean startup como uma nova forma de gestão de negócio diferenciada e inovadora, especificamente constituída para um contexto de extrema incerteza, a qual conduz o negócio a uma direção sustentável em pouco tempo. A metodologia em tela é composta por um conjunto de práticas ágeis, derivadas da manufatura enxuta, com alguns ajustes e refinamentos, combinadas com as metodologias ágeis de desenvolvimento de software. Lean startup desenvolve um plano estratégico de forma paralela ao desenvolvimento do empreendimento, pois este é mutável à medida que são descobertos os anseios dos clientes de maneira mais apurada, através da técnica do produto mínimo viável (Minimun Valuable Product MVP), através do qual os empreendedores poderão descobrir o que os possíveis clientes querem e o que agrega valor à eles, adaptando a ideia inicial ao cliente e não o inverso. Embora a metodologia seja usada por empresas como a HP, Instagram, Apple, Google e Facebook, poucos trabalhos científicos de avaliação da metodologia foram realizados. Este trabalho consiste na avaliação empírica da metodologia Lean Startup, sob o contexto de um estudo de caso de desenvolvimento de um novo empreendimento da indústria de software. Nosso estudo dará ênfase na utilização deste tipo de metodologia por empreendedores cursando o último ano de graduação de um curso da área de computação. A pesquisa em questão objetiva avaliar as dificuldades, facilidades e impactos na aplicação da metodologia proposta ao desenvolvimento de uma Startup. Ao final do projeto pretende-se divulgar os resultados e compartilhar as experiências com empreendedores em geral, especialmente os estudantes de graduação na área da computação do Brasil. Palavras-chave: Lean startup, Startups, desenvolvimento ágil e empreendedorismo. RSA-MBT: A Test Tool for Generating Test Artifacts Based on Models Andrew Diniz da Costa, Ricardo Venieris, Gustavo Carvalho, Carlos José Pereira de Lucena Laboratory of Software Engineering - Pontifical Catholic University of Rio de Janeiro Rio de Janeiro, Brazil {acosta, lucena}@inf.puc-rio.br, {rvenieris, guga}@les.inf.puc-rio.br Abstract. Model-Based Testing (MBT) has attracted the attention of many industries and, hence, it has provided several approaches reported in the literature. The Software Engineering Lab (LES) at the Pontifical Catholic University of Rio de Janeiro has worked extensively on coordinating and carrying out tests of large-scale software systems developed (for web and desktop) for different domains (e.g. petroleum, ecommerce, etc). Based on this experience, an LES test group created a new test modeling language called UML Testing Profile for Coordination (UTP-C) to model relevant test data. However, to use the advantages of the new modeling, an appropriate testmodeling tool became necessary. Thus, this paper presents the RSA-MBT, a new plugin developed for the Rational Software Architecture (RSA) tool, to generate a set of test artifacts from UTP-C diagrams. Keywords: Rational Tool, UML Testing Profile, Model Based Test, Software Testing, Multi-agent System. Apoio automatizado para a utilização de atividades periódicas em processos de desenvolvimento de software Tiago Davi O. de Araújo1, Thiago Jorge A. dos Santos1 1 Instituto de Ciências Exatas e Naturais – Universidade Federal do Pará (UFPA) [email protected], [email protected] Resumo. Uma das áreas de maior destaque na Engenharia de Software é a área conhecida como Tecnologia de Processos de Software que envolve a construção de ferramentas e ambientes computadorizados para a modelagem, execução, simulação e evolução de processos de desenvolvimento de software. Durante o processo de software, algumas atividades devem ser desempenhadas no intuito de se construir software de qualidade. Estas atividades são chamadas de periódicas, pois ocorrem repetidas vezes durante o desenvolvimento e em vários momentos diferentes do processo. O ambiente WebAPSEE – desenvolvido pelo Laboratório de Engenharia de Software da Universidade Federal do Pará (LABES – UFPA) - é um PSEE (Process Centered Software Engineering Environment – Ambiente de Engenharia de Software Orientado a Processos) que se destaca pelas inúmeras funcionalidades integradas disponibilizadas. Um dos trabalhos recentes do grupo envolveu a concepção de um apoio automatizado para definição e execução de modelos de processos com atividades periódicas. Esta abordagem envolve: 1) uma metodologia para orientar o usuário – frequentemente, o engenheiro de processo ou gerente de projetos – a definir as características da atividade periódica; 2) uma linguagem de modelagem gráfica, baseada na linguagem adotada pelo ambiente WebAPSEE; e, 3) uma semântica de execução para os novos elementos incorporados à linguagem de execução de processos contendo as atividades periódicas. Este é ainda um trabalho em andamento, e se vislumbra benefícios para reduzir o esforço dos usuários na implantação de práticas de melhoria de processos nas organizações de desenvolvimento de software. Palavras-chave: Atividades Periódicas, WebAPSEE, Tecnologia de Processos, Processo de Software, Ambiente de apoio. Promoção Patrocínio!