460 research outputs found

    Design framework:redesign and new multi-user and testing support

    Get PDF
    The use of models to conceptualize systems is an important part of the process of building Cyber Physical Systems. While designing such systems, which are in general a multi-disciplinary activity, multiple designers are involved in the design decisions. Those decisions most likely are not captured and eventually forgotten after a period. The Design Framework is a visual modeling tool that aims to help architects and designers to documents the design rationales besides the design artifacts. It also helps them to collaborate to design a system together in a multidisciplinary environment. The Design Framework is at the level of a good prototype, but it is not ready for operational application by end-users in industry. One of the main issues with the Design Framework system is a sub-optimal code structure due to the lack of proper design and development approach. The assignment therefore is to reverse engineer the current design of the Design Framework and to come up with a new design. In order to maintain a system in use, presence of a test framework is necessary. Since the Design Framework is used in a multi-disciplinary environment, an improvement in the multi-user support of the system is also needed. In the first part of this report, the redesign of the Design Framework is discussed. To redesign the Design Frame-work, a number of refactoring techniques are applied. As a result, the code complexity is reduced, therefore the maintenance is increased. The second part of the assignment includes multi-user support and testability. The Design Framework manages the changes to design descriptions and maintains the history of the design artifacts. In this respect, it operates similar to version control systems. In the multi-user part of this report, the version controlling aspect of the Design Framework is described and synchronization of data for multi-user is elaborated. Finally some multi-user features are improved and developed. In the testability part of this report, the test support is described. A set of unit tests and end-to-end tests including the test for multi-user support is implemented. Provided test sets and the approaches used to setup test environment makes the Design Framework more stable and maintainable

    A Survey of Search-Based Refactoring for Software Maintenance

    Get PDF
    Abstract This survey reviews published materials related to the specific area of Search-Based Software Engineering that concerns software maintenance and, in particular, refactoring. The survey aims to give a comprehensive review of the use of search-based refactoring to maintain software. Fifty different papers have been selected from online databases to analyze and review the use of search-based refactoring in software engineering. The current state of the research is analyzed and patterns in the studies are investigated in order to assess gaps in the area and suggest opportunities for future research. The papers reviewed are tabulated in order to aid researchers in quickly referencing studies. The literature addresses different methods using search-based refactoring for software maintenance, as well as studies that investigate the optimization process and discuss components of the search. There are studies that analyze different software metrics, experiment with multi-objective techniques and propose refactoring tools for use. Analysis of the literature has indicated some opportunities for future research in the area. More experimentation of the techniques in an industrial environment and feedback from software developers is needed to support the approaches. Also, recent work with multi-objective techniques has shown that there are exciting possibilities for future research using these techniques with refactoring. This survey is beneficial as an introduction for any researchers aiming to work in the area of Search-Based Software Engineering with respect to software maintenance and will allow them to gain an understanding of the current landscape of the research and the insights gathered

    A survey on software testability

    Full text link
    Context: Software testability is the degree to which a software system or a unit under test supports its own testing. To predict and improve software testability, a large number of techniques and metrics have been proposed by both practitioners and researchers in the last several decades. Reviewing and getting an overview of the entire state-of-the-art and state-of-the-practice in this area is often challenging for a practitioner or a new researcher. Objective: Our objective is to summarize the body of knowledge in this area and to benefit the readers (both practitioners and researchers) in preparing, measuring and improving software testability. Method: To address the above need, the authors conducted a survey in the form of a systematic literature mapping (classification) to find out what we as a community know about this topic. After compiling an initial pool of 303 papers, and applying a set of inclusion/exclusion criteria, our final pool included 208 papers. Results: The area of software testability has been comprehensively studied by researchers and practitioners. Approaches for measurement of testability and improvement of testability are the most-frequently addressed in the papers. The two most often mentioned factors affecting testability are observability and controllability. Common ways to improve testability are testability transformation, improving observability, adding assertions, and improving controllability. Conclusion: This paper serves for both researchers and practitioners as an "index" to the vast body of knowledge in the area of testability. The results could help practitioners measure and improve software testability in their projects

    On the Impact of Refactoring on the Relationship between Quality Attributes and Design Metrics

    Get PDF
    Refactoring is a critical task in software maintenance and is generally performed to enforce the best design and implementation practices or to cope with design defects. Several studies attempted to detect refactoring activities through mining software repositories allowing to collect, analyze and get actionable data-driven insights about refactoring practices within software projects. Aim: We aim at identifying, among the various quality models presented in the literature, the ones that are more in-line with the developer’s vision of quality optimization, when they explicitly mention that they are refactoring to improve them. Method: We extract a large corpus of design-related refactoring activities that are applied and documented by developers during their daily changes from 3,795 curated open source Java projects. In particular, we extract a large-scale corpus of structural metrics and anti-pattern enhancement changes, from which we identify 1,245 quality improvement commits with their corresponding refactoring operations, as perceived by software engineers. Thereafter, we empirically analyze the impact of these refactoring operations on a set of common state-of-the-art design quality metrics. Results: The statistical analysis of the obtained results shows that (i) a few state-of-the-art metrics are more popular than others; and (ii) some metrics are being more emphasized than others. Conclusions: We verify that there are a variety of structural metrics that can represent the internal quality attributes with different degrees of improvement and degradation of software quality. Most of the metrics that are mapped to the main quality attributes do capture developer intentions of quality improvement reported in the commit messages, but for some quality attributes, they don’t

    Behind the Scenes: On the Relationship Between Developer Experience and Refactoring

    Get PDF
    Refactoring is widely recognized as one of the efficient techniques to manage technical debt and maintain a healthy software project through enforcing best design practices, or coping with design defects. Previous refactoring surveys have shown that code refactoring activities are mainly executed by developers who have sufficient knowledge of the system’s design, and disposing of leadership roles in their development teams. However, these surveys were mainly limited to specific projects and companies. In this paper, we explore the generalizability of the previous results by analyzing 800 open-source projects. We mine their refactoring activities, and we identify their corresponding contributors. Then, we associate an experience score to each contributor in order to test various hypotheses related to whether developers with higher scores tend to 1) perform a higher number of refactoring operations 2) exhibit different motivations behind their refactoring, and 3) better document their refactoring activity. We found that (1) although refactoring is not restricted to a subset of developers, those with higher contribution score tend to perform more refactorings than others; (2) while there is no correlation between experience and motivation behind refactoring, top contributed developers are found to perform a wider variety of refactoring operations, regardless of their complexity; and (3) top contributed developer tend to document less their refactoring activity. Our qualitative analysis of three randomly sampled projects show that the developers who are responsible for the majority of refactoring activities are typically in advanced positions in their development teams, demonstrating their extensive knowledge of the design of the systems they contribute to

    Supporting Unit Test Generation via Automated Isolation

    Get PDF
    “Este trabajo es una compilación de crónicas, resultado del programa Talleres de Crónica Memorias del Agua, auspiciado por el Banco de la República bajo la coordinación académica de la Pontificia Universidad Javeriana, que pretende contar una historia inédita del país inspirada por el agua. Las setenta y cuatro crónicas seleccionadas para este libro permitieron concluir que, en el nuevo milenio, en varias capitales y cabeceras municipales del país, hay miles de personas que libran una batalla diaria por acceder a este recurso básico. Estos talleres propiciaron un estimulante diálogo entre culturas regionales, generaciones, oficios, saberes, disciplinas y miradas al agua en medio de la diversidad territorial. La mayoría de los participantes jamás había escrito una crónica, y los que tenían experiencia con la escritura no habían experimentado con ese género. Otros comprendieron la desaprovechada cercanía entre la historia y el periodismo, el periodismo y la literatura. En los talleres aprendieron a encontrar su propia voz y a recoger las voces de otros para lograr esa polifonía que pide el género”. Descripción tomada de la sección de novedades de publicaciones de la Pontificia Universidad Javeriana. http://www.javeriana.edu.co/editorial/libros/pais-gota-agua- Memorias. - Lugares. - Personajes
    corecore