31 research outputs found

    The state of software maintenance

    Get PDF
    A state of software maintenance survey is presented, indicating the incongruity of the simultaneous existence of important and neglect in this field. An overview is given of selected developments and activities covering the following topics: the "Maintenance Problem", models, methods for improving maintenance, metrics, maintenance information management, standards, maintenance of existing code, and surveys. The paper concludes with a prognosis of what is ahead in maintenance: a battle and tradeoff between the forces for maintaining the base of existing software and the forces for the evolution of new systems. An Appendix is provided for the reader who desires information about a software maintenance conference and a special interest group

    Quantifying usability of domain-specific languages: An empirical study on software maintenance

    Get PDF
    A domain-specific language (DSL) aims to support software development by offering abstractions to a particular domain. It is expected that DSLs improve the maintainability of artifacts otherwise produced with general-purpose languages. However, the maintainability of the DSL artifacts and, hence, their adoption in mainstream development, is largely dependent on the usability of the language itself. Unfortunately, it is often hard to identify their usability strengths and weaknesses early, as there is no guidance on how to objectively reveal them. Usability is a multi-faceted quality characteristic, which is challenging to quantify beforehand by DSL stakeholders. There is even less support on how to quantitatively evaluate the usability of DSLs used in maintenance tasks. In this context, this paper reports a study to compare the usability of textual DSLs under the perspective of software maintenance. A usability measurement framework was developed based on the cognitive dimensions of notations. The framework was evaluated both qualitatively and quantitatively using two DSLs in the context of two evolving object-oriented systems. The results suggested that the proposed metrics were useful: (1) to early identify DSL usability limitations, (2) to reveal specific DSL features favoring maintenance tasks, and (3) to successfully analyze eight critical DSL usability dimensions.This work was funded by B. Cafeo CAPES PhD Scholarship, and CNPq scholarship grant number 141688/2013-0; A. Garcia FAPERJ - distinguished scientist grant (number E-26/102.211/2009), CNPq - productivity grants (number 305526/2009-0 and 308490/2012-6), Universal project grants (number 483882/2009-7 and 485348/2011-0), and PUC-Rio (productivity grant).info:eu-repo/semantics/publishedVersio

    An approach to impact analysis in software maintenance

    Get PDF
    Impact analysis is a software maintenance activity, which consists of determining the scope of a requested change, as a basis for planning and implementing it. After a change request has been specified (change understanding) and the initial part of the system to be changed has been identified (change localization), impact analysis helps to understand consequences of the change on other parts of the system. Induced changes, also named ripple effects, among software components are detected. Most existing approaches perform impact analysis for changes occurring at the code level. In this thesis, concepts developed to perform impact analysis at the code level are applied to trace changes occurring at the design level. The method consists of proposing an activity model addressing the different steps of impact analysis and a data model on which propagations of changes can be traced. The method is validated with a case study applied to a system from the aerospace field. The tools we developed on PCTE help for consistency checks in HOOD based designs during editing. Our data-model based on an Entity Relationship notation describes a way to model HOOD diagrams in PCTE and further on to propagate changes on the repository. Examples chosen address the design phase of a simple engine system. We show that addressing modifications at a higher level of abstraction than the code eases understanding and localization of changes. It also limits the propagation of ripple effects (i.e., unexpected behaviour of the system) by detecting secondary changes at an earlier stage

    Using Peer Comparison Approaches to Measure Software Stability

    Get PDF
    Software systems must change to adapt to new functional requirements and new nonfunctional requirements. This is called software revision. However, not all the modules within the system need to be changed during each revision. In this paper, we study how frequently each module is modified. Our study is performed through comparing the stability of peer software modules. The study is performed on six open-source Java projects: Ant, Flow4j, Jena, Lucence, Struct, and Xalan, in which classes are identified as basic software modules. Our study shows (1) about half of the total classes never changed; (2) frequent changes occur to small number of classes; and (3) the number of changed classes between current release and next release has no significant relations with the time duration between current release and next release. Keywords: software evolution; software revision; software stability; class stability; open-source project; Java clas

    Investigation of Metrics for Object-Oriented Design Logical Stability

    Get PDF
    As changes are made to an object-oriented design, its structure and/or behavior may be affected. Modifications made to one class can have ripple effects on other classes in the design. The stability of an object-oriented design indicates its resistance to interclass propagation of changes that the design would have when it is modified. There are two aspects of design stability: logical stability and performance stability. Logical stability is concerned with design structure, whereas performance stability is concerned with design behavior. In this study, the object-oriented design metrics proposed by Chidamber and Kemerer were adopted as candidate indicators of the logical stability of object-oriented designs. The objective was to investigate whether or not there are correlations between these metrics and the logical stability of classes. The experimental results indicated that WMC, DIT, CBO, RFC, and LCOM metrics are negatively correlated with the logical stability of classes. However, no correlation was found between NOC metric and the logical stability of classes

    Investigation of Metrics for Object-Oriented Design Logical Stability

    Get PDF
    As changes are made to an object-oriented design, its structure and/or behavior may be affected. Modifications made to one class can have ripple effects on other classes in the design. The stability of an object-oriented design indicates its resistance to interclass propagation of changes that the design would have when it is modified. There are two aspects of design stability: logical stability and performance stability. Logical stability is concerned with design structure, whereas performance stability is concerned with design behavior. In this study, the object-oriented design metrics proposed by Chidamber and Kemerer were adopted as candidate indicators of the logical stability of object-oriented designs. The objective was to investigate whether or not there are correlations between these metrics and the logical stability of classes. The experimental results indicated that WMC, DIT, CBO, RFC, and LCOM metrics are negatively correlated with the logical stability of classes. However, no correlation was found between NOC metric and the logical stability of classes

    Program comprehension using aspects

    Full text link

    An interaction paradigm for impact analysis

    Get PDF
    The Aerospace industry is concerned with huge software projects. Software development is an evolving process resulting in larger and larger software systems. As systems grow in size, they become more complex and hence harder to maintain. Thus it appears that the maintenance of software systems is the most expensive part of the software life-cycle, often consuming 50-90% of a project total budget. Yet while there has been much research carried out on the problems of program and system development very little work has been done on the problem of maintaining developed programs. Thus it will be essential to improve the software maintenance process and the environment for maintenance. Historically, the term Software Maintenance has been applied to the process of modifying a software program after it has been delivered and during its life time. The high cost of software during its life cycle can be attributed largely to software maintenance activities, and a major part of these activities is to deal with the modifications of the software. These modifications may involve changes at any level of abstraction of a software system (i.e design, specification, code,...). Software Maintenance has to deal with modifications which can have severe Ripple Effects at other points in the software system. Impact Analysis addresses the problem and attempts to localize these Ripple Effects. In this thesis the Software Maintenance process and more specifically the Impact Analysis process is examined. The different parts of the implementation for the Impact Analysis System are explained. The main results of the thesis are the dependencies generation and the graph tool used to visualize these dependencies as well as the impacts on general dependency graph for impact analysis purpose

    Automatic marking of Shell programs for students coursework assessment

    Get PDF
    The number of students in any programming language course is usually large; more than 100 students is not uncommon in some universities. The member of staff teaching such a course has to mark, perhaps weekly, a very large number of program assignments. Manual marking and assessing is therefore an arduous task. The aim of this work is to describe a computer system for automatic marking and assessment of students' programs written in Unix Bourne Shell. In this study, a student's program will be assessed by testing its dynamic correctness and its maintainability. For dynamic correctness to be checked the program will be run against sets of input data supplied by the teacher, whereas for maintainability the student's program will be tested statically. The program text will be analysed, and its typographic style and its complexity measured. The typographic assessment in this system is adaptable to reflect the change of emphasis as a course progresses. This study presents the results generated from the assessment of a typical class of students in a Shell programming course. The experience with the development of the typographic assessment system has been generally positive. The results have shown that it is feasible to automate the assessment of this quality factor, as well as dynamic testing. Realistic grading can be achieved and useful information feedback can be obtained. The system is useful to both the students learning programming in Shell, (Arthur, L. J. and Burns, T., 1996) and the staff who are teaching the course. Although the work here is focused on the Bourne Shell, (Bourne, S. R., 1987) the study is still valid, with little or no change, to all other shells. The method used can also be applied, with some modification, to other programming languages. Furthermore this method is not limited to university and teaching, it can also be used in other fields for the purposes of software quality assessment

    Quality modelling and metrics of Web-based information systems

    Get PDF
    In recent years, the World Wide Web has become a major platform for software applications. Web-based information systems have been involved in many areas of our everyday life, such as education, entertainment, business, manufacturing, communication, etc. As web-based systems are usually distributed, multimedia, interactive and cooperative, and their production processes usually follow ad-hoc approaches, the quality of web-based systems has become a major concern. Existing quality models and metrics do not fully satisfy the needs of quality management of Web-based systems. This study has applied and adapted software quality engineering methods and principles to address the following issues, a quality modeling method for derivation of quality models of Web-based information systems; and the development, implementation and validation of quality metrics of key quality attributes of Web-based information systems, which include navigability and timeliness. The quality modeling method proposed in this study has the following strengths. It is more objective and rigorous than existing approaches. The quality analysis can be conducted in the early stage of system life cycle on the design. It is easy to use and can provide insight into the improvement of the design of systems. Results of case studies demonstrated that the quality modeling method is applicable and practical. Practitioners can use the modeling method to develop their own quality models. This study is amongst the first comprehensive attempts to develop quality measurement for Web-based information systems. First, it identified the relationship between website structural complexity and navigability. Quality metrics of navigability were defined, investigated and implemented. Empirical studies were conducted to evaluate the metrics. Second, this study investigated website timeliness and attempted to find direct and indirect measures for the quality attribute. Empirical studies for validating such metrics were also conducted. This study also suggests four areas of future research that may be fruitful
    corecore