Impacts of Software Reuse and Incremental Development on the Quality of Large Systems

Incremental development, software reuse, product families and component-based development seem to be the potent technologies to achieve benefits in productivity, quality and maintainability, and to reduce the risks of changes. These approaches have multiple and crosscutting impacts on development practices and quality attributes. Empirical studies in industry answer questions about why and when certain approaches are chosen, how these are applied with impact on single instances and how to generalize over classes or systems. Large, long-lived systems place more demands on software engineering approaches. Complexity is increased, systems should have the correct subset of functionality and be maintainable for several years to return the investment.The research in this thesis is based on several empirical studies performed at Ericsson in Grimstad, Norway and in the context of the Norwegian INCO project (INcremental and COmponent-Based Software Development). A product family with two large-scale products that have been developed incrementally is described. The work aimed to assess the impact of development approaches on quality and improve the practice in some aspects. The research has been a mixed-method design and the studies use qualitative data collected from sources such as web pages, text documents and own studies, as well as quantitative data from company’s data repositories for several releases of one product. The thesis contains five main novel contributions:C1. Empirical verification of reuse benefits. Quantitative analyses of defect reports, change requests and component size showed reuse benefits in terms of lower defect-density, higher stability between releases, and no significant difference in change-proneness between reused and non-reused components.C2. Increased understanding of the origin and type of changes in requirements in each release and changes of software between releases. A quantitative analysis of change requests showed that most changes are initiated by the organization. Perfective changes to functionality and quality attributes are most common. Functionality is enhanced and improved in each release, while quality attributes are mostly improved and have fewer changes in form of new requirements.C3. Developing an effort estimation method using use case specifications and the distribution of effort in different phases of incremental software development. The estimation method is tailored for complex use case specifications, incremental changes in these and reuse of software from previous releases. Historical data on effort spent in two releases are used to calibrate and validate the method.C4. Identifying metrics for a combination of reuse of software components and incremental development. Results of quantitative and qualitative studies are used to relate quality attributes to development practices and approaches, and to identify metrics for a combination of software reuse and incremental development.C5. Developing a data mining method for exploring industrial data repositories based on experience from the quantitative studies. This thesis also proposes how to improve the software processes for incremental development of product families. These are considered minor contributions:C6a. Adaptation of the Rational Unified Process for reuse to improve consistency between practice and the software process model.C6b. Improving techniques for incremental inspection of UML models to improve the quality of components. A controlled industrial experiment is performed.

[1]  Ann Marie Neufelder How to measure the impact of specific development practices on fielded defect density , 2000, Proceedings 11th International Symposium on Software Reliability Engineering. ISSRE 2000.

[2]  W. Mendenhall,et al.  Statistics for engineering and the sciences , 1984 .

[3]  Donald R. Cooper,et al.  Business Research Methods , 1980 .

[4]  Pearl Brereton,et al.  Component-Based Systems: A Classification of Issues , 2000, Computer.

[5]  Barry W. Boehm,et al.  A spiral model of software development and enhancement , 1986, Computer.

[6]  Santiago Comella-Dorda,et al.  Volume II: Technical Concepts of Component-Based Software Engineering , 2000 .

[7]  Audris Mockus,et al.  Identifying reasons for software changes using historic databases , 2000, Proceedings 2000 International Conference on Software Maintenance.

[8]  T.-H. Nguyen,et al.  Mapping the OO-Jacobson approach into function point analysis , 1997, Proceedings of TOOLS USA 97. International Conference on Technology of Object Oriented Systems and Languages.

[9]  Norman E. Fenton,et al.  Quantitative Analysis of Faults and Failures in a Complex Software System , 2000, IEEE Trans. Software Eng..

[10]  John Smith,et al.  The Estimation of Effort Based on Use Cases , 1999 .

[11]  Ivica Crnkovic Component-based software engineering - new challenges in software development , 2003 .

[12]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[13]  Nam-Yong Lee,et al.  An Empirical Study of Software Reuse with Special Attention to Ada , 1997, IEEE Trans. Software Eng..

[14]  Michael A. Cusumano,et al.  Trade-offs between Productivity and Quality in Selecting Software Development Practices , 2003, IEEE Softw..

[15]  Barry W. Boehm,et al.  Cost models for future software life cycle processes: COCOMO 2.0 , 1995, Ann. Softw. Eng..

[16]  Yashwant K. Malaiya,et al.  Module size distribution and defect density , 2000, Proceedings 11th International Symposium on Software Reliability Engineering. ISSRE 2000.

[17]  Ivar Jacobson,et al.  Object-oriented software engineering - a use case driven approach , 1993, TOOLS.

[18]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[19]  Alan W. Brown,et al.  The Current State , 2016 .

[20]  Ajoy Gupta Forging New Links , 1968 .

[21]  Michael Fagan Design and Code Inspections to Reduce Errors in Program Development , 1976, IBM Syst. J..

[22]  Reidar Conradi,et al.  Different Aspects of Product Family Adoption , 2003, PFE.

[23]  David N. Card,et al.  Why do so many reuse programs fail? , 1994, IEEE Software.

[24]  R. Yin Case Study Research: Design and Methods , 1984 .

[25]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[26]  Reidar Conradi,et al.  An empirical study on the utility of formal routines to transfer knowledge and experience , 2001, ESEC/FSE-9.

[27]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[28]  Keith H. Bennett,et al.  Software maintenance and evolution: a roadmap , 2000, ICSE '00.

[29]  Stephen R. Schach,et al.  Determining the Distribution of Maintenance Categories: Survey versus Measurement , 2003, Empirical Software Engineering.

[30]  Martin Arnold,et al.  Software size measurement and productivity rating in a large-scale software development department , 1998, Proceedings of the 20th International Conference on Software Engineering.

[31]  Reidar Conradi,et al.  Using Empirical Studies to Assess Software Development Approaches and Measurement Programs , 2003 .

[32]  Ali Mili,et al.  Reusing Software: Issues and Research Directions , 1995, IEEE Trans. Software Eng..

[33]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[34]  Victor R. Basili,et al.  Viewing maintenance as reuse-oriented software development , 1990, IEEE Software.

[35]  Katharine Whitehead Component-Based Development: Principles and Planning for Business Systems , 2002 .

[36]  Shari Lawrence Pfleeger,et al.  Software Metrics , 1991 .

[37]  Marvin V. Zelkowitz,et al.  Experimental Models for Validating Technology , 1998, Computer.

[38]  Yeong R. Kim,et al.  Software Reuse: Survey and Research Directions , 1997, J. Manag. Inf. Syst..

[39]  John Daniels,et al.  UML Components: A Simple Process for Specifying Component-Based Software , 2000 .

[40]  Ivica Crnkovic,et al.  A case study: demands on component-based development , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[41]  Elaine J. Weyuker,et al.  The distribution of faults in a large industrial software system , 2002, ISSTA '02.

[42]  Ivar Jacobson,et al.  The Unified Software Development Process , 1999 .

[43]  Yashwant K. Malaiya,et al.  Requirements volatility and defect density , 1999, Proceedings 10th International Symposium on Software Reliability Engineering (Cat. No.PR00443).

[44]  Charles R. Symons,et al.  Software sizing and estimating - Mk II FPA, function point analysis , 1991, Wiley series in software engineering practice.

[45]  Rajiv D. Banker,et al.  Scale Economies in New Software Development , 2013, IEEE Transactions on Software Engineering.

[46]  Sandro Morasca,et al.  An Operational Process for Goal-Driven Definition of Measures , 2002, IEEE Trans. Software Eng..

[47]  Selo Sulistyo,et al.  MDA and integration of legacy systems , 2003 .

[48]  Jeffrey S. Poulin,et al.  Measuring software reuse - principles, practices, and economic models , 1996 .

[49]  Erik Berglund,et al.  Writing for adaptable documentation , 2000, 18th Annual Conference on Computer Documentation. ipcc sigdoc 2000. Technology and Teamwork. Proceedings. IEEE Professional Communication Society International Professional Communication Conference an.

[50]  Dar-Biau Liu,et al.  Application of CBSE to projects with evolving requirements-a lesson-learned , 1999, Proceedings Sixth Asia Pacific Software Engineering Conference (ASPEC'99) (Cat. No.PR00509).

[51]  Alistair Cockburn,et al.  Writing Effective Use Cases , 2000 .

[52]  Harvey P. Siy,et al.  Predicting Fault Incidence Using Software Change History , 2000, IEEE Trans. Software Eng..

[53]  Kjetil Johan Moløkken,et al.  Expert Estimation of Web-development Effort : Individual Biases and Group Processes , 2002 .

[54]  Reidar Conradi,et al.  Experiences with Certification of Reusable Components in the GSN Project in Ericsson, Norway , 2001 .

[55]  Uday R. Kulkarni,et al.  Strategies for Software Reuse: A Principal Component Analysis of Reuse Practices , 2003, IEEE Trans. Software Eng..

[56]  Lars Lundberg,et al.  Using components to increase maintainability in a large telecommunication system , 2002, Ninth Asia-Pacific Software Engineering Conference, 2002..

[57]  Wei-Tek Tsai,et al.  N-Fold inspection: a requirements analysis technique , 1990, Commun. ACM.

[58]  Barbara A. Kitchenham,et al.  Modeling Software Measurement Data , 2001, IEEE Trans. Software Eng..

[59]  Magne Jørgensen,et al.  Estimating Software Development Effort Based on Use Cases-Experiences from Industry , 2001, UML.

[60]  Erik Albæk Bent Flyvbjerg, Rationalitet og magt. Det konkretes videnskab, København: Akademisk Forlag, 1991, Bind I 1775., Bind II 463 s., kr. 404,00. , 1992 .

[61]  Jeffrey C. Carver,et al.  Reading Techniques for OO Design Inspections , 2002 .

[62]  John M. Favaro A comparison of approaches to reuse investment analysis , 1996, Proceedings of Fourth IEEE International Conference on Software Reuse.

[63]  George T. Heineman,et al.  Component-Based Software Engineering: Putting the Pieces Together , 2001 .

[64]  Magne Jørgensen,et al.  Can you Trust a Single Data Source Exploratory Software Engineering Case Study? , 2002, Empirical Software Engineering.

[65]  Linda M. Northrop SEI's Software Product Line Tenets , 2002, IEEE Softw..

[66]  Forrest Shull,et al.  Detecting defects in object-oriented designs: using reading techniques to increase software quality , 1999, OOPSLA '99.

[67]  Barbara Paech,et al.  Component-based product line engineering with UML , 2001, Addison Wesley object technology series.

[68]  Forrest Shull,et al.  Studies on Reading Techniques , 2006 .

[69]  Albert Endres,et al.  A handbook of software and systems engineering - empirical observations, laws and theories , 2003, The Fraunhofer IESE series on software engineering.

[70]  David Lorge Parnas,et al.  On the Design and Development of Program Families , 2001, IEEE Transactions on Software Engineering.

[71]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.

[72]  Magne Jøgensen,et al.  The quality of questionnaire based software maintenance studies , 1995, SOEN.

[73]  Even-André Karlsson,et al.  Software reuse: a holistic approach , 1995 .

[74]  Didar Zowghi,et al.  A study of the impact of requirements volatility on software project performance , 2002, Ninth Asia-Pacific Software Engineering Conference, 2002..

[75]  John D. McGregor,et al.  Initiating software product lines , 2002, IEEE Software.

[76]  Reidar Conradi,et al.  Improving Software Process Improvement , 2002, IEEE Softw..

[77]  Reidar Conradi,et al.  An empirical study of software reuse vs. defect-density and stability , 2004, Proceedings. 26th International Conference on Software Engineering.

[78]  Daniela E. Damian,et al.  An industrial case study of the impact of requirements engineering on downstream development , 2003, 2003 International Symposium on Empirical Software Engineering, 2003. ISESE 2003. Proceedings..

[79]  Ivar Jacobson,et al.  The Unified Modeling Language User Guide , 1998, J. Database Manag..

[80]  Shari Lawrence Pfleeger,et al.  Software metrics (2nd ed.): a rigorous and practical approach , 1997 .

[81]  Magne Jørgensen,et al.  Generalization and theory-building in software engineering research , 2004, ICSE 2004.

[82]  Reidar Conradi,et al.  An empirical study of software change: origin, acceptance rate, and functionality vs. quality attributes , 2004, Proceedings. 2004 International Symposium on Empirical Software Engineering, 2004. ISESE '04..

[83]  Ian Witten,et al.  Data Mining , 2000 .

[84]  Vijay Sai COTS Acquisition Evaluation Process: The Preacher's Practice , 2003, ICCBSS.

[85]  Matthias Weber,et al.  Development: Experiences and Challenges , 2003 .

[86]  Ivar Jacobson,et al.  Use Cases and Aspects-Working Seamlessly Together , 2003, J. Object Technol..

[87]  Padmal Vitharana Risks and challenges of component-based software development , 2003, CACM.

[88]  Maria Teresa Baldassarre,et al.  Towards a Maintenance Process that Reduces Software Quality Degradation Thanks to Full Reuse , 2002 .

[89]  Ivar Jacobson,et al.  Software Reuse: Architecture, Process And Organization For Business Success , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[90]  E. Burton Swanson,et al.  Characteristics of application software maintenance , 1978, CACM.

[91]  Norman E. Fenton,et al.  Software metrics: roadmap , 2000, ICSE '00.

[92]  C. Krueger,et al.  Eliminating the adoption barrier , 2002, IEEE Software.

[93]  Jan Bosch,et al.  Design and use of software architectures - adopting and evolving a product-line approach , 2000 .

[94]  Magne Jørgensen Top-down and bottom-up expert estimation of software development effort , 2004, Inf. Softw. Technol..

[95]  Maurizio Morisio,et al.  Investigating and improving a COTS-based software development process , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[96]  Reidar Conradi,et al.  Object-Oriented Reading Techniques for Inspection of UML Models - An Industrial Experiment , 2003, ECOOP.

[97]  Grady Booch,et al.  Reusing Open-Source Software and Practices: The Impact of Open-Source on Commercial Vendors , 2002, ICSR.

[98]  Barry W. Boehm,et al.  COTS Integration: Plug and Pray? , 1999, Computer.

[99]  Geri Schneider,et al.  Applying Use Cases: A Practical Guide , 1998 .

[100]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

[101]  Meir M. Lehman,et al.  Laws of Software Evolution Revisited , 1996, EWSPT.

[102]  Reidar Conradi,et al.  The REBOOT approach to software reuse , 1995, J. Syst. Softw..

[103]  David Lorge Parnas,et al.  A rational design process: How and why to fake it , 1986, IEEE Transactions on Software Engineering.

[104]  Maurizio Morisio,et al.  Success and Failure Factors in Software Reuse , 2002, IEEE Trans. Software Eng..

[105]  Christopher J. Fox,et al.  Sixteen questions about software reuse , 1995, CACM.

[106]  Alan W. Brown Large Scale Component Based Development , 2000 .

[107]  Bente Anda Comparing Effort Estimates Based on Use Case Points with Expert Estimates , 2002 .

[108]  Torgeir Dingsøyr,et al.  An empirical study of an informal knowledge repository in a medium-sized software consulting company , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[109]  Rajiv D. Banker,et al.  A study of the effects of software development practices on software maintenance effort , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[110]  Magne Jørgensen,et al.  Does Use of Development Model Affect Estimation Accuracy and Bias? , 2004, PROFES.

[111]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[112]  Thomas Gilb,et al.  Software Inspection , 1994 .

[113]  Norman E. Fenton,et al.  Software Metrics: A Rigorous Approach , 1991 .