Software maintenance - csactor

Breaking

csactor

computer science , software engineering ,information system and information technology lesson series like data structure and algorithm , computer networking , programming , database , web development , operating system , information system , digital marketing and business study.

Saturday, August 18, 2018

Software maintenance


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.



Types of maintenance

Fault repairs 

            Changing a system to fix bugs/vulnerabilities and correct deficiencies in the way meets its requirements. 

 Environmental adaptation 

           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 

           Modifying the system to satisfy new requirements.



Maintenance effort distribution




Maintenance costs

 Usually greater than development costs (2* to 100* depending on the application). 

 Affected by both technical and non-technical factors. 

 Increases as software is maintained. 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 

               A new team has to understand the programs being maintained 
               Separating maintenance and development means there is no incentive for the development team to write maintainable software 

 Program maintenance work is unpopular 

                   • Maintenance staff are often inexperienced and have limited domain knowledge. 

Complexity metrics

 Predictions of maintainability can be made by assessing the complexity of system components. 

 Studies have shown that most maintenance effort is spent on a relatively small number of system components. 

 Complexity depends on 

                     Complexity of control structures; 
                     Complexity of data structures; 
                     Object, method (procedure) and module size.




Process metrics

 Process metrics may 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 any or all of these is increasing, this may indicate a decline in maintainability.




Software reengineering

 Restructuring or rewriting 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. 

 Reengineering involves adding effort to make them easier to maintain. The system may be re-structured and re-documented.





Advantages of reengineering

 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.




The reengineering process






Reengineering 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 reengineering 
           Clean-up and restructure system data.




Refactoring

 Refactoring is the process of making improvements to a program to slow down degradation through change. 

 You can think of refactoring as ‘preventative maintenance’ that reduces the problems of future change. 

 Refactoring involves modifying a program to improve its structure, reduce its complexity or make it easier to understand.



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.

No comments:

Post a Comment