![Software Evolution and Maintenance](https://img.perlego.com/book-covers/992753/9781118960295_300_450.webp)
Software Evolution and Maintenance
A Practitioner's Approach
Priyadarshi Tripathy, Kshirasagar Naik
- English
- ePUB (mobile friendly)
- Available on iOS & Android
Software Evolution and Maintenance
A Practitioner's Approach
Priyadarshi Tripathy, Kshirasagar Naik
About This Book
Provides students and engineers with the fundamental developments and common practices of software evolution and maintenance Software Evolution and Maintenance: A Practitioner's Approach introduces readers to a set of well-rounded educational materials, covering the fundamental developments in software evolution and common maintenance practices in the industry. Each chapter gives a clear understanding of a particular topic in software evolution, and discusses the main ideas with detailed examples. The authors first explain the basic concepts and then drill deeper into the important aspects of software evolution. While designed as a text in an undergraduate course in software evolution and maintenance, the book is also a great resource forsoftware engineers, information technology professionals, and graduate students in software engineering.
- Based on the IEEE SWEBOK (Software Engineering Body of Knowledge)
- Explains two maintenance standards: IEEE/EIA 1219 and ISO/IEC14764
- Discusses several commercial reverse and domain engineering toolkits
- Slides for instructors are available online
Software Evolution and Maintenance: A Practitioner's Approach equips readers with a solid understanding of the laws of software engineering, evolution and maintenance models, reengineering techniques, legacy information systems, impact analysis, refactoring, program comprehension, and reuse.
Frequently asked questions
Information
1
BASIC CONCEPTS AND PRELIMINARIES
Another flaw in the human character is that everybody wants to build and nobody wants to do maintenance.—Kurt Vonnegut, Jr.
1.1 EVOLUTION VERSUS MAINTENANCE
- The concept of software maintenance means preventing software from failing to deliver the intended functionalities by means of bug fixing.
- The concept of software evolution means a continual change from a lesser, simpler, or worse state to a higher or better state ([8], p. 1).
- All support activities carried out after delivery of software are put under the category of maintenance.
- All activities carried out to effect changes in requirements are put under the category of evolution.
- Maintenance of software systems primarily means fixing bugs but preserving their functionalities. Maintenance tasks are very much planned. For example, bug fixing must be done and it is a planned activity. In addition to the planned activities, unplanned activities are also necessitated. For example, a new usage of the system may emerge. Generally, maintenance does not involve making major changes to the architecture of the system. In other words, maintenance means keeping an installed system running with no change to its design [11].
- Evolution of software systems means creating new but related designs from existing ones. The objectives include supporting new functionalities, making the system perform better, and making the system run on a different operating system. Basically, as time passes, the stakeholders develop more knowledge about the system. Therefore, the system evolves in several ways. As time passes, not only new usages emerge, but also the users become more knowledgeable. As Mehdi Jazayeri observed: “Over time what evolves is not the software but our knowledge about a particular type of software” ([12], p. 3).
- fixing bugs; and/or
- improving the design of the system so that future changes to the system are less expensive.
1.1.1 Software Evolution
- Continuing change. Unless a system is continually modified to satisfy emerging needs of users, the system becomes increasingly less useful.
- Increasing complexity. Unless additional work is done to explicitly reduce the complexity of a system, the system will become increasingly more complex due to maintenance-related changes.
- Self-regulation. The evolution process is self-regulating in the sense that the measures of products and processes, that are produced during the evolution, follow close to normal distributions.
- Conservation of organizational stability. The average effective global activity rate on an evolving system is almost constant throughout the lifetime of the system. In other words, the average amount of additional effort needed to produce a new release is almost the same.
- Conservation of familiarity. As a system evolves all kinds of personnel, namely, developers and users, for example, must gain a desired level of understanding of the system’s content and behavior to realize satisfactory evolution. A large incremental growth in a release reduces that understanding. Therefore, the average incremental growth in an evolving system remains almost the same.
- Continuing growth. As time passes, the functional content of a system is continually increased to satisfy user needs.
- Declining quality. Unless the design of a system is diligently fine-tuned and adapted to new operational environments, the system’s qualities will be perceived as declining over the lifetime of the system.
- Feedback system. The system’s evolution process involves multi-loop, multi-agent, multi-level feedback among different kinds of activities. Developers must recognize those complex interactions in order to continually evolve an existing system to deliver more functionalities and higher levels of qualities.