Software Maintenance and Evolution: Massimo Felici Room 1402, JCMB, KB 0131 650 5899 Mfelici@inf - Ed.ac - Uk
Software Maintenance and Evolution: Massimo Felici Room 1402, JCMB, KB 0131 650 5899 Mfelici@inf - Ed.ac - Uk
the
software
to
different
Maintenance to functionality:
This type of maintenance is required when some aspect of the systems environment such as the hardware, the platform operating systems or other support software changes The application system must be modified to adapt it to cope with these environmental changes
add
to
or
modify
the
systems
This type of maintenance is necessary when the system requirements changes in response to organizational or business change The scale of the changes required to the software is often much grater that the other types of maintenance
Software Maintenance
Types of Maintenance:
Corrective: Adaptive:
correcting faults in system behaviour caused by errors in coding, design or requirements due to changes in operating environment e.g., different hardware or Operating System due to changes in requirements Often triggered by organizational, business or user learning e.g., dealing with legacy systems
Perfective: Preventive:
Contractual Responsibility
Staff Skills
Lients
and
Maintenance is Hard
Key design concept not captured Systems not robust under change Poor documentation
of code of design process and rationale of systems evolution
Managing Maintenance
Corrective:
Requires maintenance strategy preferably negotiated contract between supplier and customer(s) Policies for reporting and fixing errors; auditing of process
Perfective:
Should be treated as development (i.e., requirements, specification, design, testing, etc.) Iterative (or evolutionary) development approach best suited Risks: drift, shift, creep, ooze, bloat, etc. When does design or development stop?
[1/3]
2004-2006
[2/3]
1973, Mooney reorganizes shop and creates maintenance team Management strategy: classified, evaluated, assigned requests logged, prioritised and
Team responsibilities: fast; good programming standards; regression testing of modified programs
Numerous incentives, including financial Team responsible for all existing programs New programs signed over to team when errorand change-free for 90 days - Sign-over activity becomes significant project landmark
2004-2006 SEOC - Lecture Note 18 10
[3/3]
Everybody happy
2004-2006 SEOC - Lecture Note 18 11
Preventive Maintenance
Accounts 4% of maintenance requests
Pareto Principle applies: 20% of causes responsible for 80% of effect. Proposed by Dr. Jodeph Juran (of Total Management fame), after Wilfredo Pareto C19th economist and sociologist. Legacy systems increasing problem
[1/3]
Sparkasse: German savings and loan organization 7 regional computing centres; client-server batch processing on conventional mainframe system; code (variously) in Assembrer, PL/1, Cobol and natural Legacy host systems highly integrated Desired to introduce OO and components Wrapping approach taken
Reuse S/W by encapsulating and controlling access via APIs (Application Program Interfaces) Reuse existing S/W without moving it to new environment Legacy S/W remains, with minor changes. In native environment yet is accessible to newer distributed OO components
2004-2006 SEOC - Lecture Note 18 13
[2/3]
2004-2006
14
[3/3]
Server to host communication weakest link Character conversion, ASCII to EBCDIC, common Constant translation and re-translation Testing time-consuming due to high number of dependencies 5-step, bottom-up testing strategy
1. Test adapted program in controlled test-harness 2. Test wrapper software with driver for client and stub for wrapper code 3. Test wrapper and wrapped code 4. Integration testing: complete client-server transaction 5. System test: multiple translations to test re-entrancy of wrapper and wrapped code
2004-2006 SEOC - Lecture Note 18 15
Maintenance Prediction
Maintenance Prediction
Whether a system change should be accepted depends, to some extent, on the maintainability of the system components affected by that change Implementing system changes tends to degrade the system structure and hence reduce its maintainability Maintenance costs depend on the number of changes, and the cost of change implementation depend on the maintainability of the system components Evaluation of the relationship between a system and its environment The number and complexity of system interfaces The number of inherently volatile system requirements The business processes in which the system is sued Number of requests for corrective maintenance Average time required for impact analysis Average time taken to implement a change request Number of outstanding change requests
SEOC - Lecture Note 18 16
Predicting Changes
Measuring Maintainability
2004-2006
System re-engineering
Re-engineering a software system has two advantages over more radical approaches to systems evolution
Reduced risk Reduced cost
2004-2006
2004-2006
Environmental Assessment
Supplier stability: Is the supplier is still in existence? Is the supplier financially stable and likely to continue in existence? If the supplier is no longer in business, does someone else maintain the systems? Failure rate: Does the hardware have a high rate of reported failures? Does the support software crash and force system restarts? Age: How old is the hardware and software? Performance: Is the performance of the system adequate? Do performance problems have a significant effect on system users? Support requirements: What local support is required by the hardware and software? Maintenance costs: What are the costs of hardware maintenance and support software licences? Interoperability: Are there problems interfacing the system to other systems? Can compilers, for example, be used with current versions of the operating system? Is hardware emulation required?
2004-2006 SEOC - Lecture Note 18 19
Application Assessment
Understandability: How difficult is it to understand the source code of the current system? How complex are the control structures that are used? Documentation: What system documentation is available? Is the documentation complete, consistent and current? Data: Is there an explicit data model for the system? Is the data used by the system up-to-date and consistent? Performance: Is the performance of the application adequate? Do performance problems have a significant effect on system users? Programming language: Are modern compilers available for the programming language used to develop the system? Is the programming language still used for new system development? Configuration management: Are all versions of all parts of the system managed by a configuration management system? Test data: Does test data for the system exist? Is there a record of regression tests carried out when new features have been added to the system? Personnel skills: Are there people available who have the skills to maintain the application?
2004-2006 SEOC - Lecture Note 18 20
2004-2006
21
continued
Conservation of familiarity: Over the lifetime of a system, the incremental change in each releases is approximately constant. Continuing growth: The functionality offered by systems has to continually increase to maintain user satisfaction Declining quality: The quality of systems will appear to be declining unless they are adapted to changes in their operational environment. Feedback system: Evolution processes incorporate multi-agent, multi-loop feedback systems and you have to treat them as feedback systems to achieve significant product improvement.
2004-2006 SEOC - Lecture Note 18 22
Reading/Activity
Please read: Manny Lehman, Softwares Future: Managing Evolution. In IEEE Software, January-February 1998, pp. 4044. Please read: Lutz and Mikulski, Operational anomalies as a cause of safety-critical requirements evolution. In the Journal of System and Software 65(2):155-161, 2003.
2004-2006
23
Summary
Maintenance
Important, difficult and costly Can, and should, be managed Has a bad reputation, but can and should be challenging and rewarding
Software development and evolution should be a single, integrated, iterative process Looking at system evolution (in the long-term) provides insights on software evolution The cost of software maintenance generally exceed the software development costs The process of software evolution is driven by request for changes Software re-engineering is concerned with re-structuring and re-documenting software
2004-2006 SEOC - Lecture Note 18 24
Number of approaches to dealing with legacy systems Many involve transformation to OO and/or component based paradigms (e.g., Abstraction / high cohesion and Encapsulation / low coupling) The business value of a legacy system and the quality of the application software and its environment should be assessed to determine whether the system should be replaced, transformed or maintained