Software testing is a mandatory activity in any serious software development process, as bugs are a reality in software development. This raises the question of quality: good tests are effective in finding bugs, but until a test case actually finds a bug, its effectiveness remains unknown. Therefore, determining what constitutes a good or bad test is necessary. This is not a simple task, and there are a number of studies that identify different characteristics of a good test case. A previous study evaluated 29 hypotheses regarding what constitutes a good test case, but the findings are based on developers' beliefs, which are subjective and biased. In this paper we investigate eight of these hypotheses, through an extensive empirical study based on open software repositories. Despite our best efforts, we were unable to find evidence that supports these beliefs. This indicates that, although these hypotheses represent good software engineering advice, they do not necessarily mean that they are enough to provide the desired outcome of good testing code.
Increasing the international visibility of their papers is an old desire of the Brazilian Symposium on Software Engineering (SBES) community. In that regard, the community has taken several actions throughout the years, such as incentivizing the submission of papers in English and, since 2009, publishing the symposium's proceedings in closed-access international digital libraries. However, thus far, there have been no studies aimed at evaluating the real impact of such initiatives. In this paper, we report on a bibliometric study whose goal was to assess the impact of SBES's internationalization effort. To this end, we have collected and classified language and citation data from papers published in the SBES Research Track from 2010 to 2020. One can examine the results of our study from multiple views. A more generous view (the "good") reveals that, by obtaining around 40-60% of its citations from the international community, SBES might have achieved its internationalization goals with reasonable success. A more rigorous view (the "bad"), in turn, highlights that, by still attracting at least 40% of its citations from the Brazilian community, SBES's internationalization might not compensate for its inevitable weight on the community, i.e., the international libraries' publication costs and their non-compliance to well established Open Science principles. Finally, a more critical view (the "ugly") calls attention to the relatively high percentage (25-50%) of SBES papers' self-citations, well above the average rate in Computer Science and other disciplines.
Most current mobile applications work with a back-end server over the Internet. But in many occasions network connectivity is not available and a proper offline treatment must be provided. This question can be solved in many ways, such as storing requests for later attempts, caching data and full client-server synchronization, among others. There are solutions both in the industry and academia, however two challenges remain: to solve the problem in a way that covers many software layers, including interface and usability issues; and to support different kinds of treatment to the absence of connection. This paper presents a mobile library built to help developers provide offline functionality on their apps, while trying to solving these two challenges. To do that, the library, called OfflineManager, offers different ways to treat each call to the back-end, both in the case of missing Internet connection and unavailable server. It also offers feedback messages, and a point of interaction via pop-up messages. To evaluate the library, four evaluation methods were used, including experts, developers, users and well-known heuristics. The collected evidence indicates that the library achieves its goal to overcome the two presented challenges, and also uncovers some problems and points for improvement.
Instead of designing for accessibility from the start of a software development project, a common procedure is to consider a substantial group of potential users only when the artifact is almost completed. In particular, the domain of accessible cross-platform mobile apps has only received limited attention by research and practitioners. In this work, we set out to tackle mobile accessibility by identifying distinctive challenges, requirements, and solution techniques for mobile apps in contrast to established web development. Furthermore, a model-driven approach that integrates accessibility concerns into the development of cross-platform mobile apps is presented. To highlight the applicability of the proposed approach, parts of mobile prototypes accessible to visually impaired people were built based on the enhanced MD2 framework.
Game developers are facing an increasing demand for new games every year. Game development tools can be of great help, but require highly specialized professionals. Also, just as any software development effort, game development has some challenges. Model-Driven Game Development (MDGD) is suggested as a means to solve some of these challenges, but with a loss in flexibility. We propose a MDGD approach that combines multiple domain-specific languages (DSLs) with design patterns to provide flexibility and allow generated code to be integrated with manual code. After experimentation, we observed that, with the approach, less experienced developers can create games faster and more easily, and the product of code generation can be customized with manually written code, providing flexibility. However, with MDGD, developers become less familiar with the code, making manual codification more difficult.
A repository is a necessary prerequisite to support software engineers and other users in the process of developing software with and for reuse. In the literature, there are several works that explore reuse repositories, however their focus is mostly on reusable component search and retrieval issues, while important aspects of reuse repositories have not been properly explored. On the other hand, some questions raised by companies that desire to adopt or build a reuse repository remain unanswered. Such questions often include: What are the main roles and requirements of a reuse repository? What are the practical alternatives? How a reuse repository must be designed? Motivated by these questions, this paper presents a systematic approach with comparisons to existing tools and techniques for specifying, designing and implementing a reuse repository that was successfully constructed and deployed in real Brazilian software factories. Additionally, we describe the main design decisions, problems found, and future directions for research and development.
This paper reports on an experimental study in trying to analyze a domain engineering process in order to evaluate its efficiency and difficulties of using it in a domain engineering project. The study discusses since its definition until the lessons learned.
A repository is a necessary prerequisite to support software engineers and other users in the process of developing software for and with reuse. In the literature, there are several works that explore reuse repositories, however their focus is mostly on reusable component search and retrieval issues, while important aspects of reuse repositories have not been properly explored. On the other hand, some questions raised by companies that desire to adopt or build a reuse repository remain unanswered. Motivated by these questions, this paper presents the specification, design and implementation of a reuse repository that was successfully constructed and deployed in real Brazilian software factories.
Software Engineering Environments (SEEs) have been extensively studied, aiming to provide help in software development. Component-Based Software Engineering (CBSE) arises as an approach for constructing software through reusable components, reducing development costs and time, among other benefits. This paper identifies the main requirements for Component-Based Software Engineering Environments (CBSEEs), and presents Orion, a CBSEE which integrates different works from our research group, involving development tools, a repository, a process model and a middleware platform.
Currently, the demand for the reverse engineering has been growing significantly. The need of different business sectors to adapt their systems to Web or to use other technologies is stimulating the research for methods, tools and infrastructures that support the evolution of existing applications. We present the main research trends on reverse engineering, and discuss how should be an efficient reverse engineering approach, aiming at higher reuse levels.
This paper presents an approach to aid migration from object-oriented code, written in Java, to a combi- nation of objects and aspects, using AspectJ. This approach supports the use of aspect mining, in order to identify possible crosscutting concerns to be implemented as aspects. The concerns, previously identified, are extracted from object-oriented code through refactorings and encapsulated into aspects to obtain the new aspect-oriented code. We present in this paper a collection of manual aspect-oriented refactorings to extract crosscutting concerns from object-oriented code.
Eduardo Santana De Almeida合作论文数Computer Science Department, Federal University of Bahia4