764 research outputs found

    A Process-Oriented Software Architecture Reconstruction Taxonomy

    Get PDF
    International audienceTo maintain and understand large applications, it is cru- cial to know their architecture. The first problem is that architectures are not explicitly represented in the code as classes and packages are. The second problem is that suc- cessful applications evolve over time so their architecture inevitably drifts. Reconstructing and checking whether the architecture is still valid is thus an important aid. While there is a plethora of approaches and techniques supporting architecture reconstruction, there is no comprehensive state of the art and it is often difficult to compare the ap- proaches. This article presents a first state of the art in soft- ware architecture reconstruction, with the desire to support the understanding of the field

    Preparing Software Re-Engineering via Freehand Sketches in Virtual Reality

    Get PDF
    Re-architecting a software system requires significant preparation, e.g., to scope and design new modules with their boundaries and constituent classes. When planning an intended future state of a system as a re-engineering goal, engineers often fall recur to mechanisms such as freehand sketching (using a whiteboard). While this ensures flexibility and expressiveness, the sketches remain disconnected from the source code. The alternative, tool-supported diagramming on the other hand considerably restricts flexibility and impedes free-form communication.We present a method for preparing the architectural software re-engineering via freehand sketches in virtual reality (VR) that can be seamlessly integrated with the model structure of a software visualization and, thus, also the code of a system, for productive use: Engineers explore a subject system in the immersive visualization, while freehand sketching their insights and plans. Our concept automatically interprets sketched shapes and connects them to the system’s source code, and superimposes code-level references into a sketch to support engineers in reflecting on their sketches.We evaluated our method in an iterative interview-based case study with software developers from four different companies, where they planned a hypothetical re-engineering of an opensource software system.Video Demonstration — https://youtu.be/NKC5YpH3n4

    Recovering Architectural Variability of a Family of Product Variants

    Full text link
    A Software Product Line (SPL) aims at applying a pre-planned systematic reuse of large-grained software artifacts to increase the software productivity and reduce the development cost. The idea of SPL is to analyze the business domain of a family of products to identify the common and the variable parts between the products. However, it is common for companies to develop, in an ad-hoc manner (e.g. clone and own), a set of products that share common functionalities and differ in terms of others. Thus, many recent research contributions are proposed to re-engineer existing product variants to a SPL. Nevertheless, these contributions are mostly focused on managing the variability at the requirement level. Very few contributions address the variability at the architectural level despite its major importance. Starting from this observation, we propose, in this paper, an approach to reverse engineer the architecture of a set of product variants. Our goal is to identify the variability and dependencies among architectural-element variants at the architectural level. Our work relies on Formal Concept Analysis (FCA) to analyze the variability. To validate the proposed approach, we experimented on two families of open-source product variants; Mobile Media and Health Watcher. The results show that our approach is able to identify the architectural variability and the dependencies

    OZONE: Layer Identification in the presence of Cyclic Dependencies

    Get PDF
    International audienceA layered software architecture helps understanding the role of software entities (e.g., packages or classes) in a system and hence, the impact of changes on these entities. However, the computation of an optimal layered organization in the presence of cyclic dependencies is difficult. In this paper, we present an approach that (i) provides a strategy supporting the automated detection of cyclic dependencies, (ii) proposes heuristics to break cyclic dependencies, and (iii) computes an organization of software entities in multiple layers even in presence of cyclic dependencies. Our approach performs better than the other existing approaches in terms of accuracy and interactivity, it supports human inputs and constraints. In this paper, we present this approach and compare it to existing solutions. We applied our approach on two large software systems to identify package layers and the results are manually validated by software engineers of the two systems

    Design concept development in transportation design

    Get PDF
    The paper presents results of a study about design concept development in transportation design. The main question of this study concerns mainly the existence and development of design concepts and its status in the design process furthermore it partially describes its content, manifestation and function. From the view of industrial psychology, the design concept is one of the most important stages in the design process, because its availability determines the success, regarding the design object. A design concept can be understood as the first solid and focused unit of knowledge in design processes with ill-defined problems. In the Design Process Planning, based on Action Regulation Theory, design concepts act as a compact guiding principle, including the anticipation of the artefact. Using this as a scientific basis a long term study with 25 students including cross section and longitudinal aspects were held from 2005 to 2008. Three concept types derived from the literature preceded the investigation, whereby the holistic experience-oriented one after Uhlmann (2006a) forms the beginning. This focus was confirmed within the investigation for the majority of the projects, yet one must assume that, functional (construction-oriented) or formal concepts successfully finds to application. Holistic concepts enable a more comprehensive and more balanced treatment within the design process. Within the work two general methods of generating design concepts: extracting and compiling were defined. Following the typical processes they can be assigned to different fields: transportation design (extracting) and industrial design (compiling). Furthermore three designer types and an open category could be identified. The three types “automobile”, “design” and “story” can be clearly and consistently assigned by the students. The research closes with a recommendation of a hybrid design concept processing using aspects of the two generating methods as well as instruments of different designer types. Keywords: Design Concept, Transportation Design, Field study, Early stages</p

    HCPC: Human centric program comprehension by grouping static execution scenarios

    Get PDF
    New members of a software team can struggle to locate user requirements if proper software engineering principles are not practiced. Reading through code, finding relevant methods, classes and files take a significant portion of software development time. Many times developers have to fix issues in code written by others. Having a good tool support for this code browsing activity can reduce human effort and increase overall developers' productivity. To help program comprehension activities, building an abstract code summary of a software system from the call graph is an active research area. A call graph is a visual representation of caller-callee relationships between different methods of a software project. Call graphs can be difficult to comprehend for a larger code-base. The motivation is to extract the essence from the call graph by finding execution scenarios from a call graph and then cluster them together by concentrating the information in the code-base. Later, different techniques are applied to label nodes in the abstract code summary tree. In this thesis, we focus on static call graphs for creating an abstract code summary tree as it clusters all possible program scenarios and groups similar scenarios together. Previous work on static call graph clusters execution paths and uses only one information retrieval technique without any feedback from developers. First, to advance existing work, we introduced new information retrieval techniques alongside human-involved evaluation. We found that developers prefer node labels generated by terms in method names with TFIDF (term frequency-inverse document frequency). Second, from our observation, we introduced two new types of information (text description using comments and execution patterns) for abstraction nodes to provide better overview. Finally, we introduced an interactive software tool which can be used to browse the code-base in a guided way by targeting specific units of the source code. In the user study, we found developers can use our tool to overview a project alongside finding help for doing particular jobs such as locating relevant files and understanding relevant domain knowledge
    • …
    corecore