09 ch9 software evolution

28 1 0
09 ch9 software evolution

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

SOFTWARE ENGINEERING (CO3001) Chapter – Software Evolution WEEK 15 Jan 2018 Topics covered Evolution processes • Legacy systems • Software maintenance • Chapter Software evolution Jan 2018 Chapter Software evolution Software change • Software change is inevitable • New requirements emerge when the software is used; • The business environment changes; • Errors must be repaired; • New computers and equipment is added to the system; • The performance or reliability of the system may have to be improved • A key problem • implementing and managing change to their existing software systems Jan 2018 Chapter Software evolution Importance of evolution • Organisations have huge investments in their software systems - they are critical business assets • To maintain the value of these assets to the business, they must be changed and updated The majority of the software budget in large companies is devoted to changing and evolving existing software rather than developing new software Jan 2018 Chapter Software evolution A spiral model of development and evolution Implemention Specification Start etc Release Operation Release Release Validation Jan 2018 Chapter Software evolution Evolution and servicing Software development • Software evolution Software servicing Software retirement Evolution Time • in operational use and is evolving as new requirements are proposed and implemented in the system • Servicing • 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 • Phase-out • The software may still be used but no further changes are made Jan 2018 Chapter Software evolution EVOLUTION PROCESSES Jan 2018 Chapter Software evolution Change identification and evolution processes Change identification process New system Change proposals Software evolution process Jan 2018 Chapter Software evolution The software evolution process Change requests Impact analysis Release planning Change implementation Fault repair Platform adaptation System enhancement Proposed changes Requirements analysis Requirements updating System release Software development Jan 2018 10 Chapter Software evolution Urgent change requests Change requests • Analyze source code Modify source code Deliver modified system 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) Jan 2018 Chapter Software evolution 14 Legacy system replacement, change, management • Legacy system replacement is risky and expensive • 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 • Legacy systems are 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 optimizations may make them hard to understand Data errors, duplication and inconsistency Jan 2018 Chapter Software evolution 15 Legacy system management • 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 to improve its maintainability; • Replace the system with a new system • The strategy chosen should depend on the system quality and its business value Jan 2018 Chapter Software evolution 16 Figure 9.13 An example of a legacy system assessment High business value Low quality Business value 10 High business value High quality Low business value High quality Low business value Low quality System quality Jan 2018 Chapter Software evolution 17 Legacy system categories • 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 Jan 2018 Chapter Software evolution SOFTWARE MAINTENANCE 18 Jan 2018 Chapter Software evolution 19 Software maintenance 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 • Jan 2018 20 Chapter Software evolution Types of maintenance • Maintenance to repair software faults • Maintenance to adapt software to a different operating environment • Maintenance to add to or modify the system’s functionality Fault repair (24%) Environmental adaptation (19%) Functionality addition or modification (58%) Jan 2018 21 Chapter Software evolution Maintenance prediction What parts of the system are most likely to be affected by change requests? What parts of the system will be the most expensive to maintain? Predicting maintainability Predicting system changes How many change requests can be expected? Predicting maintenance costs What will be the lifetime maintenance costs of this system? What will be the costs of maintaining this system over the next year? Jan 2018 Chapter Software evolution 22 System re-engineering Re-structuring or re-writing part or all of a legacy system without changing its functionality • Applicable where some but not all sub-systems of a larger system require frequent maintenance • Re-engineering involves adding effort to make them easier to maintain The system may be re-structured and re-documented • Jan 2018 23 Chapter Software evolution The reengineering process Program documentation Original program Re-engineered program Original data Reverse engineering Program modularization Source code translation Data reengineering Program structure improvement Restructured program Reengineered data Jan 2018 24 Chapter Software evolution Reengineering approaches Automated program restructuring Automated source code conversion Program and data restructuring Automated restructuring with manual changes Restructuring plus architectural changes Increased cost Jan 2018 Chapter Software evolution 25 Refactoring • Refactoring => making improvements • to slow down degradation through change • ‘preventative maintenance’ => reduces the problems of future change • Refactoring => modifying programs • to improve structure, reduce complexity, for easier to understand • • Concentrate on program improvement Jan 2018 Chapter Software evolution 26 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 reengineer 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 • Jan 2018 Chapter Software evolution 27 ‘Bad smells’ in program code Duplicate code • Long methods • Switch (case) statements • 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 These can often be 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 Jan 2018 Chapter Software evolution 28 Summary • Development and evolution can be integrated, iterative • The costs of maintenance usually exceed the development costs • Software evolution is driven by • requests for changes; process: change impact analysis, release planning and change implementation • types of software maintenance • bug fixing, modifying to new environment, new or changed requirements • Software re-engineering • re-structuring and re-documenting software: easier to understand and change • Refactoring • changes: preserve functionality; a preventative maintenance • Legacy system • Business value vs quality

Ngày đăng: 02/04/2023, 12:11

Tài liệu cùng người dùng

Tài liệu liên quan