Software Maintenance As Part of the Software Life Cycle

Department of Computer Science Tufts University

Software Maintenance As Part of the Software Life Cycle

Comp180: Software Engineering Prof. Stafford

Prepared by: Kagan Erdil Emily Finn Kevin Keating Jay Meattle Sunyoung Park Deborah Yoon December 16, 2003

TABLE OF CONTENTS

SOFTWARE MAINTENANCE AS PART OF THE SOFTWARE LIFE CYCLE ............................... 4

1. INTRODUCTION .................................................................................................................................. 4

2. DESCRIPTION OF THE NATURE OF THE PHASE....................................................................... 5

2.1 FOUR TYPES OF SOFTWARE MAINTENANCE .......................................................................................... 5 2.2 THE SIGNIFICANCE OF SOFTWARE MAINTENANCE ................................................................................ 7 2.3 SOFTWARE CHARACTERISTICS THAT AFFECT SOFTWARE MAINTENANCE EFFORT................................. 8 2.4 SOFTWARE MAINTENANCE FROM A SERVICE PERSPECTIVE................................................................... 9 2.5 SUMMARY OF THE NATURE OF THE MAINTENANCE PHASE ................................................................. 10

3. PROCESS............................................................................................................................................... 10

3.1 TRADITIONAL PROCESS MODELS ....................................................................................................... 11 3.2 MAINTENANCE PROCESS MODELS ..................................................................................................... 11 3.3 PROGRAM UNDERSTANDING.............................................................................................................. 13 3.4 REVERSE ENGINEERING..................................................................................................................... 13 3.5 REUSE AND REUSABILITY.................................................................................................................. 14 3.6 MANAGEMENT AND ORGANIZATIONAL ISSUES.................................................................................. 14 3.7 SUMMARY OF PROCESSES.................................................................................................................. 15

4. TASKS................................................................................................................................................... 15

4.1 SUMMARY OF TASKS ......................................................................................................................... 16

5. TOOLS .................................................................................................................................................. 16

5.1 COMMERCIALLY AVAILABLE PRODUCTS ........................................................................................... 18 5.2 SUMMARY OF TOOLS ......................................................................................................................... 18

6. ROLE OF SOFTWARE MAINTENANCE IN DEVELOPMENT METHODS ............................ 18

6.1 INTRODUCTION ................................................................................................................................. 18 6.2 ITERATIVE DEVELOPMENT................................................................................................................. 19

6.2.1 Rational Unified Process .......................................................................................................... 20 6.2.2 Scrum ........................................................................................................................................ 21 6.2.3 Case Study: Holland Railconsult (Switching to RUP) .............................................................. 21 6.2.4 Case Study: Micron's Facilties IS Team (Switching to RUP)................................................... 22 6.2.5 Agile development..................................................................................................................... 22 6.2.5.1 What is Agile development? .................................................................................................... 23 6.2.5.2 When should you implement XP?............................................................................................ 25 6.2.5.3 Success factors ........................................................................................................................ 25 6.2.5.4 Limitations .............................................................................................................................. 25 6.2.5.5 Effect on Maintenance stage ................................................................................................... 26 6.2.5.6 Case Study: IONA Technology (Applying XP to Maintenance) .............................................. 26 6.2.6 Summary of Iterative development........................................................................................... 27 6.3 COMPONENT BASED SOFTWARE DEVELOPMENT AND MAINTENANCE .............................................. 28 6.3.1 What is CBSD? .......................................................................................................................... 28 6.3.2 What kind of roles the maintenance plays in CBSD?................................................................. 29 6.3.2.1 The role of maintainers in CBSD ............................................................................................ 29 6.3.2.2 Major maintenance activities in CBSD................................................................................. 29 6.3.3 Advantages and disadvantages of CBSD in maintenance.......................................................... 30 6.3.4 Summary of CBSD ................................................................................................................... 32 6.4 OPEN SOURCE.................................................................................................................................... 32 6.4.1 Differences with traditional project maintenance.................................................................... 33 6.4.1.1 Release date .......................................................................................................................... 33 6.4.1.2 Expectation of service ........................................................................................................... 33

2

6.4.2 Advantages of the open source method .................................................................................... 34 6.4.3 Mozilla ..................................................................................................................................... 35 6.4.4 Summary of open source development ..................................................................................... 36 6.5 SUMMARY OF THE ROLE OF MAINTENANCE IN DEVELOPMENT METHODS .......................................... 36 7. CONCLUSION ...................................................................................................................................... 37 ACKNOWLEDGMENTS.......................................................................................................................... 38 REFERENCES ........................................................................................................................................... 38 APPENDIX A: SOFTWARE MAINTENANCE COST IN SOFTWARE DEVELOPMENT ............ 42 APPENDIX B: BONSAI ............................................................................................................................ 43 APPENDIX C: TINDERBOX ................................................................................................................... 44 APPENDIX D: BUGZILLA ...................................................................................................................... 45 APPENDIX E: REQUIREMENT MANAGER IN TESTDIRECTOR ................................................. 46 APPENDIX F: TEST PLAN TREE IN TESTDIRECTOR.................................................................... 47 APPENDIX G: CUSTOMIZABLE ACTION-DRIVEN WORKFLOW............................................... 48 APPENDIX H: DEFINE CUSTOM VIEWS ........................................................................................... 49

TABLE OF FIGURES

FIG. 1. THE QUICK FIX MODEL (TAKANG AND GRUBB [1996])................................................. 12 FIG. 2. THE REUSE MODEL (TAKANG AND GRUBB [1996])......................................................... 13 FIG. 3. THE ITERATIVE CYCLE .......................................................................................................... 20 FIG. 4. THE COST OF CHANGE RISING EXPONENTIALLY OVER TIME (BECK [1999]) ...... 24 FIG. 5 XP, SCRUM, CRYSTAL, FDD, DSDM, ASD, PP, ISD, AM ARE ALL EXAMPLES OF AGILE METHODOLOGIES.................................................................................................................... 25 FIG. 6. AGILE PROCESSES FOLLOWED IN STAGES PRIOR TO MAINTENANCE.................. 26

3

SOFTWARE MAINTENANCE AS PART OF THE SOFTWARE LIFE CYCLE

KAGAN ERDIL Tufts University EMILY FINN Tufts University KEVIN KEATING Tufts University JAY MEATTLE Tufts University SUNYOUNG PARK Tufts University and DEBORAH YOON Tufts University

___________________________________________________________

Maintenance plays an important role in the life cycle of a software product. It is estimated that there are more than 100 billion lines of code in production in the world. As much as 80% of it is unstructured, patched and not well documented. Maintenance can alleviate these problems. This paper describes the nature of software maintenance, why it is included in software development and how it's carried out. It discusses the role of maintenance played in iterative, agile, component-based and open source development models.

Categories and Subject Descriptors: D.2.7 [Software Engineering]; Distribution and Maintenance - corrections General Terms: Design, Documentation, Management Additional Key Words and Phrases: Case studies, Software maintenance, Software evolution, Process, Tasks, Tools, Reverse engineering, Software development, Iterative development, Agile development, Component-based development, Open source

____________________________________________________________

1. INTRODUCTION Software Development has many phases. These phases include Requirements Engineering, Architecting, Design, Implementation, Testing, Software Deployment, and Maintenance. Maintenance is the last stage of the software life cycle. After the product has been released, the maintenance phase keeps the software up to date with environment changes and changing user requirements.

The earlier phases should be done so that the product is easily maintainable. The design phase should plan the structure in a way that can be easily altered. Similarly, the

4

implementation phase should create code that can be easily read, understood, and changed. Maintenance can only happen efficiently if the earlier phases are done properly. There are four major problems that can slow down the maintenance process: unstructured code, maintenance programmers having insufficient knowledge of the system, documentation being absent, out of date, or at best insufficient, and software maintenance having a bad image. The success of the maintenance phase relies on these problems being fixed earlier in the life cycle.

Maintenance consists of four parts. Corrective maintenance deals with fixing bugs in the code. Adaptive maintenance deals with adapting the software to new environments. Perfective maintenance deals with updating the software according to changes in user requirements. Finally, preventive maintenance deals with updating documentation and making the software more maintainable. All changes to the system can be characterized by these four types of maintenance. Corrective maintenance is `traditional maintenance' while the other types are considered as `software evolution.'

As products age it becomes more difficult to keep them updated with new user requirements. Maintenance costs developers time, effort, and money. This requires that the maintenance phase be as efficient as possible. There are several steps in the software maintenance phase. The first is to try to understand the design that already exists. The next step of maintenance is reverse engineering in which the design of the product is reexamined and restructured. The final step is to test and debug the product to make the new changes work properly.

This paper will discuss what maintenance is, its role in the software development process, how it is carried out, and its role in iterative development, agile development, component-based development, and open source development.

2. DESCRIPTION OF THE NATURE OF THE PHASE This section will cover what the software maintenance phase is about. As briefly seen in the introduction, software maintenance is not limited to the correction of latent faults. The term software maintenance usually refers to changes that must be made to software after they have been delivered to the customer or user. The definition of software maintenance by IEEE [1993] is as follows:

The modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment. The following subsections will discuss different types of software maintenance, the significance and the characteristics of software maintenance.

2.1 Four types of software maintenance

5

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download