1 / 42

Software Evolution: Managing and Maintaining Your System

Learn about the importance of software evolution and maintenance, the processes involved, and how agile approaches can be utilized. Manage and maintain your software system effectively.

strack
Download Presentation

Software Evolution: Managing and Maintaining Your System

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Engineering ISession 8 Software Evolution

  2. Recap • Fundamental development activities • Specification • Development • Validation • Maintenance • Your software system has been put in use • But is this the end of the story? • This week • Software evolution and maintenance

  3. Software Evolution • The evolution of existing software systems is inevitable: • New requirements emerge during use. • Errors must be repaired. • The performance or reliability of the system may be below expected levels. • The business environment changes. • New hardware is added to the system. • A key problem for all organisations is implementing and managingsoftware evolution. • The older and more complex a system is, the more difficult it generally is to implement and manage software evolution.

  4. Software Evolution – Importance • Organisations often have huge investments in their software systems – they are critical business assets. • To maintain the value of software systems, they must be periodically monitored and updated. • The majority of the software budget in large companies is devoted to changing and evolving existing software rather than developing new software. • Approximately 75%

  5. Software Evolution – Releases and Spiral Model • The requirements of installed softwarechange in response to changes in the business environment. • As the business requirements change, new releases of a system are required. • After the first release of a system, changes and improvements are suggested, and the development of release 2 starts almost immediately. • In the past ten years, the time between releases has reduced dramatically.

  6. Evolution of custom software • Thisspiral model is applicable when the same company is responsible for the software development throughout its lifetime • Mostly generic products • Custom software may follow a different model • Take over responsibilities for support and evolution using its own staff • May issue a separate contract to a different software company • Likely, there are discontinuities in the evolution process • Requirement and design documents may not be passed • When the transition from development to evolution is not seamless, the process of changing the software after delivery is called software maintenance. • Involves extra activities such as program understanding

  7. Evolution and servicing: a model • Evolution • The stage in a software system’s life cycle where it is in operational use and is evolving as new requirements are proposed and implemented in the system. • Servicing • At this stage, the software remains useful, but the only changes made are those required to keep it operational, • i.e. bug fixes and changes to reflect changes in the software’s environment. • No new functionality is added. • Phase-out • The software may still be used but no further changes are made to it.

  8. Evolution Processes

  9. Software Evolution Processes • Software evolution processes depend on a range of factors • The type of software being maintained (e.g. web app versus safety critical system). • The development processes used (e.g. agile or plan-driven). • Resource issues (e.g. technology, people, expertise, available capital, etc.). • Proposals for change are the driver for system evolution. • Should be linked with components that are affected by the change, • allowing the cost and impact of the change to be estimated. • Change identification and evolution continues throughout the system lifetime.

  10. Software Evolution Processes • A general model of the software evolution process. Change management

  11. Change implementation • Same team: Iteration of the development process where the revisions to the system are designed, implemented and tested. • Different team: A critical difference is that the first stage may involve program understanding, especially if the original system developers are not responsible for the change implementation. • During the program understanding phase, understand • how the program is structured, • how it delivers functionality and • how the proposed change might affect the program.

  12. Urgent change requests • Urgent changes may have to be implemented without going through all stages of the software engineering process • If a serious system fault has to be repaired to allow normal operation to continue; • If changes to the system’s environment (e.g. an OS upgrade) have unexpected effects; • If there are business changes that require a very rapid response • e.g. the release of a competing product, or the introduction of a new legislation

  13. Agile Approaches and Software Evolution • Agile methods are based on incremental development so the transition from development to evolution should be seamless ;-) • Evolution is simply a continuation of the development process based on frequent system releases. • However, the use of agile methods in system evolution may present challenges: • It may be difficult to secure continued user involvement. • Changes to the development team may present continuity issues, especially where • there is a lack of detailed documentation, or where evolution team members are not familiar with agile practices.

  14. Software Evolution • Software evolution is more likely to be successful in situations: • System complexity is lower. • There is a rigorous process for managing change. • There is continuity between the development team and the evolution team. • System requirements and design documents are largely complete and traceable. • The techniques and tools used to build previous releases are still viable.

  15. Legacy systems

  16. Legacy Systems • Legacy systems are older systems that rely on languages and technologies that are no longer used for new systems development. • Legacy software may • be dependent on older hardware, such as mainframe computers and • have associated legacy processes and procedures. • Typically, legacy systems have been changed and fixed over a long period and their performance has degraded as a result.

  17. Elements of Legacy Systems • Legacy systems are not just software systems but are broader socio-technical systems that • include hardware, software, libraries and other supporting software and business processes.

  18. Legacy system components • System hardware: Legacy systems may have been written for hardware that is no longer available • Support software: Legacy systems may rely on a range of support software, which may be obsolete or unsupported • Application software: The application system that provides the business services is usually made up of a number of application programs • Application data: These are data that are processed by the application system • They may be inconsistent, duplicated or held in different databases. • Business processes:These are processes that are used in the business to achieve some business objective. • Business processes may be designed around a legacy system and constrained by the functionality that it provides. • Business policies and rules: These are definitions of how the business should be carried out and constraints on the business. • Use of the legacy application system may be embedded in these policies and rules.

  19. Legacy Systems dilemma • Legacy system use is still common in large and medium enterprises in many sectors. • Expensive to change: • No consistent programming style • Use of obsolete programming languages with few people available with these language skills • Inadequate system documentation • System structure degradation • Program optimisations may make them hard to understand • Data errors, duplication and inconsistency • Risky to be replaced: • Lack of complete system specification • Tight integration of system and business processes • Undocumented business rules embedded in the legacy system • New software development may be late and/or over budget

  20. Legacy Systems Evolution Strategies • Organisations that rely on legacy systems must choose a strategy for evolving these systems: • Scrap the system completely and modify business processes so that it is no longer required. • Continue maintaining the system. • Transform the system by re-engineering it to improve its maintainability. • Replace the system with a new system. • The evolution strategy chosen will depend on the business value and technical quality of a system.

  21. Legacy Systems assessment • Possible change strategies for legacy systems: • Low quality, low business value • These systems should be scrapped. • Low-quality, high-business value • These make an important business contribution but are expensive to maintain. Should be re-engineered or replaced if a suitable system is available. • High-quality, low-business value • Replace with COTS, scrap completely or maintain. • High-quality, high business value • Continue in operation using normal system maintenance.

  22. Business Value Assessment • Business value is a measurement of how much time and effort the system saves compared to manual processes or the use of other systems. • Assessment of the business value of a system should • take on board a full range of stakeholder viewpoints, and should consider the following issues: • The use of the system • If systems are only used occasionally or by a small number of people, they may have a low business value. • The business processes that are supported • A system may have a low business value if it forces the use of inefficient business processes. • System dependability • If a system is not dependable and the problems directly affect business customers, the system has a low business value. • The system outputs • If the business depends on system outputs, then the system has a high business value

  23. System Quality Assessment • An assessment of system quality should be made on the basis of the following: • Business process assessment • How well does the business process embedded in the software support the current goals of the business? • Environment assessment • How effective is the system’s environment, and how expensive is it to maintain (compilers, debuggers, development environment)? • Application assessment • What is the technical quality of the application software system?

  24. Business process assessment • Use a viewpoint-oriented approach and seek answers from system stakeholders • Is there a defined process model and is it followed? • Do different parts of the organisation use different processes for the same function? • How has the process been adapted? • What are the relationships with other business processes and are these necessary? • Is the process effectively supported by the legacy application software?

  25. Environmental Assessment • In making an assessment of the system environment, the following factors should be considered:

  26. Application Assessment • In making an assessment of the technical quality of the application, the following factors should be considered:

  27. System measurement • You may collect quantitative data to make an assessment of the quality of the application system • The number of system change requests The higher this accumulated value, the lower the quality of the system. • The number of different user interfaces used by the system The more interfaces, the more likely it is that there will be inconsistencies and redundancies in these interfaces. • The volume of data used by the system. As the volume of data (number of files, size of database, etc.) processed by the system increases, so too do the inconsistencies and errors in that data. • Cleaning up old data is a very expensive and time-consuming process

  28. Software Maintenance

  29. Software maintenance • Software maintenance the general process of changing a system after it has been delivered • involves modifying a program after it has been put into use. • The term is mostly used for changing custom software. • Generic software products are said to evolve to create new versions. • Maintenance does not normally involve major changes to the system’s architecture. • Changes are implemented by modifying existing components and adding new components to the system. • Studies have shown that most maintenance cost and effort is spent on a relatively small number of system components.

  30. Types of maintenance • Fault repairs (corrective maintenance) • Changing a system to fix bugs/vulnerabilities and correct deficiencies in the way meets its requirements. • Environmental adaptation (adaptive maintenance) • Maintenance to adapt software to a different operating environment • Changing a system so that it operates in a different environment (computer, OS, etc.) from its initial implementation. • Functionality addition and modification (perfective maintenance) • Modifying the system to satisfy new requirements.

  31. Software Maintenance – Costs • Maintenance costs are generally greater than development costs (2* --- 100*) • Costs increase in response to software age and incidences of previous maintenance. • Maintenance corrupts the software structure so makes further maintenance more difficult. • Ageing software can have high support costs (e.g. old languages, compilers etc.). • It is usually more expensive to add new features to a system during maintenance than it is to add the same features during development. (why?) Approximate distribution of software maintenance costs.

  32. Maintenance Prediction • Maintenance prediction is concerned with assessing which parts of the system may cause problems and have high maintenance costs. • Questions to consider in maintenance prediction 

  33. Change prediction • Predicting the number of changes requires and understanding of the relationships between a system and its environment. • Tightly coupled systems require changes whenever the environment is changed. • Factors influencing this relationship are • Number and complexity of system interfaces; • Number of inherently volatile system requirements; • Requirements reflecting organisational polices and procedures • The business processes where the system is used.

  34. Maintainability Prediction –Metrics • Complexity metrics can be used to assess the maintainability of a system • Complexity metrics measures: • Lines of code. • Complexity of control structures. • Complexity of data structures. • Object, method (procedure) and module size. • Process metrics may also be used to assess maintainability. • 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. • If one or more of these factors is increasing, this may indicate a decline in system maintainability.

  35. Software Re-engineering • Why? Many systems (legacy systems) are difficult to understand and change • Software re-engineering is concerned with re-implementing legacy systems to make them more maintainable. This includes: • Re-documenting system (improve understandability) • Restructuring system and data (structure improvement) • Re-engineering does not involve changing or adding to system functionality. • It is applicable where some, but not all, sub-systems of a larger system require frequent maintenance.

  36. Software Re-engineering – Process Activities • Source code translation • Convert code to a new language. • Reverse engineering • Analyse the program to understand it. • Program structure improvement • Restructure automatically for understandability. • Program modularisation • Reorganise the program structure. • Data re-engineering • Clean-up and restructure system data.

  37. Software Re-engineering – Advantages and Disadvantages • Advantages: • Reduced risk There is a high risk in new software development. There may be development problems, staffing problems and specification problems. • Reduced cost • The cost of re-engineering is often significantly less than the costs of developing new software. • Disadvantages: • Not as maintainable as a new system build. • New system can take advantage of newer SE methods. • Practical limits as to what can be re-engineered. • Systems built using outdated techniques may be (almost) impossible to re-engineer.

  38. Software Re-engineering – Approaches and Cost • Software re-engineering should be carried out using automated tools. • But in some scenarios this is impractical and changes must be made manually. • Automated re-engineering processes generally result in lower costs.

  39. Refactoring • Code refactoring is a continuous process of code improvement throughout the development and evolution of a system. • Not add functionality, but focus on program improvement • Think of as preventative maintenance • Refactoring consists of • improving the internal structure of an existing program's source code • while preserving its external behaviour. • Refactoring is commonly used in agile methods.

  40. Advantages of refactoring • Improves objective attributes of code (length, duplication, coupling and cohesion, etc.) that correlate with ease of maintenance. • Improves code readability. • Encourages developers to think about and understand design decisions, • in particular in the context of collective code ownership. • Promotes the use of reusable design elements (such as design patterns) and code modules.

  41. Refactoring and reengineering • Re-engineering takes place after a system has been maintained for some time and maintenance costs are increasing. • You use automated tools to process and re-engineer a legacy system to create a new system that is more maintainable. • Refactoring is a continuous process of improvement throughout the development and evolution process. • It is intended to avoid the structure and code degradation that increases the costs and difficulties of maintaining a system.

  42. ‘Bad smells’ in program code Stereotypical situations where the code of a program can be improved • Duplicate code: The same or very similar code may be included at different places in a program. • removed and implemented as a single method/function that is called as required • Long methods: If a method is too long, it should be redesigned as a number of shorter methods. • Switch (case) statements: These often involve duplication, where the switch depends on the type of a value. • The switch statements may be scattered around a program. • In OO languages, use polymorphism to achieve the same thing. • Data clumping: Data clumps occur when the same group of data items (fields in classes, parameters in methods) re-occur in several places in a program. • replaced with an object that encapsulates all of the data. • Speculative generality: This occurs when developers include generality in a program in case it is required in the future. • This can often simply be removed.

More Related