720 research outputs found

    A Methodology to Support the Maintenance of Object -Oriented Systems Using Impact Analysis.

    Get PDF
    Object-Oriented (OO) systems are difficult to understand due to the complex nature of the relationships that object-orientation supports. Inheritance, polymorphism, encapsulation, information hiding, aggregation, and association combine to make maintenance of OO systems difficult. Due to the presence of these characteristics in OO systems, maintenance activities on OO systems often have unexpected or unseen effects on the system. These effects can ripple through system components, complicating maintenance and testing of the system. The ability to trace the effects of maintenance provides the maintainer with knowledge that assists in debugging and testing modified and affected components. In this research, we show that the architecture of an OO system provides an effective framework for determining the impact of system changes. We developed the Comparative Software Maintenance (CSM) methodology to support the maintenance of OO systems. Through this methodology, we model relationships and structures, analyze the models to determine components that change as a result of maintenance, and perform impact analysis to determine components that are candidates for re-testing as a result of maintenance activity. The methodology includes a new data model, called Extended Low-Level Software Architecture (ELLSA), that facilitates impact analysis. CSM locates potential side effects, ripple effects, and other effects of maintenance on class structures, methods, and objects. The comprehensive architecture model enables CSM to perform either predictive, pre-modification impact analysis or post-modification impact analysis. The improved impact analysis process found in the methodology determines impact of changes to the component level. We apply the results of impact analysis to determine component level testing requirements. CSM enhances program understanding through the use of ELLSA. It also provides assistance for capturing complex dependencies found in object-oriented code. The methodology is implemented in JFlex. The automation provided by JFlex makes the application of CSM feasible

    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

    Potential programming plan and domain concept detection supported by slicing technique

    Get PDF
    Little has been written about the component provision problem (programming plans and domain concepts) for the repositories of knowledge in program understanding systems and reports that specifically address this issue are unknown. Model-driven and plan-driven approaches use repositories where construction and evolution are informal and depend on the experts. In domains where the expert is not available the only valid source of information is the source code. But, domain concept design and programming plans from the source code by non-expert professionals is not a trivial task. In this paper, a hybrid top-down/bottom-up approach based on algorithmic pattern matching and slicing techniques has begun to be defined in order to provide plans or concepts (termed activities in the model-driven approaches) to the knowledge base. Initially, the exploration area is restricted by slicing techniques, and then, software inspection tools are used to further limit the relevant areas. Finally, the initially hypothesized pattern is matched with these segments.Eje: V - Workshop de agentes y sistemas inteligentesRed de Universidades con Carreras en Informática (RedUNCI

    Reverse Engineering Low-Level Design Patterns From Object-Oriented Code.

    Get PDF
    The purpose of this research is to develop and automatically extract an abstract representation model of object-oriented (abbreviated as OO) software systems that captures the structure of the system and code dependencies, in order to aid maintenance. The research resulted in the development of two abstract representation models--the low-level design pattern (LLDP) abstract model and the low-level software architecture (LLSA) abstract model. The LLDP model is at a higher level of abstraction than the LLSA model. The LLSA model acts as an intermediate representation between the LLDP model and an OO software system. The design of the LLSA and LLDP representation models and the automatic extraction of these models from an OO software system are significant contributions of this research. An LLDP representation is a textual description of common OO strategies. Three sets of LLDPs--polymorphism, decoupling and messages are defined. LLDPs describe the structure, the benefits and consequences of a strategy. The design of the LLSA model considers the complexities inherent in OO systems, and the requirements of a maintainer from such a model. The LLSA model defines software components, static and dynamic interfaces of components and static and dynamic interactions between components. Software components are defined in terms of OO programming language constructs and interactions between the components are defined in terms of OO relationships that exist between the components. Understanding the relationships is necessary to understand what dependencies occur and why they occur in the code. The LLSA abstract model in conjunction with the LLDPs provides a view of software systems that captures the dependency relationships between code, the nature of the dependencies and the reasons why the dependencies must exist and be preserved. The LLSA model of C++ software systems in particular are defined. The usefulness of LLSA and LLDPs from the maintenance perspective are explored. A prototype CASE tool, pulse was implemented to demonstrate the feasibility of automatic extraction of both models. Reverse engineering and code analysis techniques were developed to extract the LLSA relationships and interfaces and to recognize LLDPs

    The Quality Attribute Design Strategy for a Social Network Data Analysis System

    Get PDF
    An excellent software project can often identify quality attributes, expressed by the nonfunctional requirements. Quality attributes include modifiability, performance, availability, security, and so on. The nonfunctional requirements that address those quality attributes should be considered during the design phase. The quality attribute design approaches will be considered to achieve those requirements. In this thesis, an architecture will be designed for a new social network data analysis system, is named Trowser, through several architectural approaches. Before starting the design phase, the source code of an existing social network analysis system, Gephi, is analyzed. The quality attribute design strategies are summarized from the analysis result and unite with the known design tactics to design the architecture of Trowser. The Architecture Tradeoff Analysis Method(ATAM) will be used for evaluating the quality of the architecture. Finding the good design strategies for social network data analysis system

    Test Cases Selection Based on Source Code Features Extraction

    Get PDF
    Extracting valuable information from source code automatically was the subject of many research papers. Such information can be used for document traceability, concept or feature extraction, etc. In this paper, we used an Information Retrieval (IR) technique: Latent Semantic Indexing (LSI) for the automatic extraction of source code concepts for the purpose of test cases\u27 reduction. We used and updated the open source FLAT Eclipse add on to try several code stemming approaches. The goal is to check the best approach to extract code concepts that can improve the process of test cases\u27 selection or reduction

    Potential programming plan and domain concept detection supported by slicing technique

    Get PDF
    Little has been written about the component provision problem (programming plans and domain concepts) for the repositories of knowledge in program understanding systems and reports that specifically address this issue are unknown. Model-driven and plan-driven approaches use repositories where construction and evolution are informal and depend on the experts. In domains where the expert is not available the only valid source of information is the source code. But, domain concept design and programming plans from the source code by non-expert professionals is not a trivial task. In this paper, a hybrid top-down/bottom-up approach based on algorithmic pattern matching and slicing techniques has begun to be defined in order to provide plans or concepts (termed activities in the model-driven approaches) to the knowledge base. Initially, the exploration area is restricted by slicing techniques, and then, software inspection tools are used to further limit the relevant areas. Finally, the initially hypothesized pattern is matched with these segments.Eje: V - Workshop de agentes y sistemas inteligentesRed de Universidades con Carreras en Informática (RedUNCI

    The development of a program analysis environment for Ada: Reverse engineering tools for Ada

    Get PDF
    The Graphical Representations of Algorithms, Structures, and Processes for Ada (GRASP/Ada) has successfully created and prototyped a new algorithm level graphical representation for Ada software, the Control Structure Diagram (CSD). The primary impetus for creation of the CSD was to improve the comprehension efficiency of Ada software and thus improve reliability and reduce costs. The emphasis was on the automatic generation of the CSD from Ada source code to support reverse engineering and maintenance. The CSD has the potential to replace traditional prettyprinted Ada source code. In Phase 1 of the GRASP/Ada project, the CSD graphical constructs were created and applied manually to several small Ada programs. A prototype (Version 1) was designed and implemented using FLEX and BISON running under the Virtual Memory System (VMS) on a VAX 11-780. In Phase 2, the prototype was improved and ported to the Sun 4 platform under UNIX. A user interface was designed and partially implemented. The prototype was applied successfully to numerous Ada programs ranging in size from several hundred to several thousand lines of source code. In Phase 3 of the project, the prototype was prepared for limited distribution (GRASP/Ada Version 3.0) to facilitate evaluation. The user interface was extensively reworked. The current prototype provides the capability for the user to generate CSD from Ada source code in a reverse engineering mode with a level of flexibility suitable for practical application
    • …
    corecore