Lecture 11 Flashcards
What are the key problems for all organizations?
A key problem for all organizations is implementing and managing change to their existing software systems
What is fault repairs?
Changing a system to fix faults/vulnerabilities
What is environmental adaptation?
Changing a system so that it operates in a different way from its initial implementation
(New tax laws, Brexit for example)
What is modifying existing functionality?
Users asking for features to be changed
What is Program evolution dynamics?
Program evolution dynamics is the study of the processes of system change
Why should a program have continuous change?
A program that is used in a real-world environment must necessarily change or it becomes progressively less useful in that environment
Why do you have to check increasing complexity?
As an evolving program changes, its structure tends to become more complex. Extra resources must be devoted to preserving and simplifying the structure
Why does software need continuing growth?
The functionality offered by systems has to continually
increase to maintain user satisfaction
What is declining quality?
The quality of systems will decline unless they are
modified to reflect changes in their operational
environment
What is a feedback system?
Evolution processes incorporate multiagent, multiloop feedback systems and you have to treat them as feedback systems to achieve significant product
improvement.
What is legacy system replacement?
Outdated system changing it
Why is replacing legacy system risky?
Lack of complete original system specification
No means of reusing the old designs
Undocumented business rules embedded in the legacy system
Poor upkeep of documentation
New software development is always late and over budget
Replacement will always be over budget and late
What are the legacy system catagories
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
• Scrap completely or maintain (?)
High quality, high business value
• Continue in operation using normal system maintenance
What are the re-engineering cost factors?
The quality of the software to be reengineered
• Can software metrics help here to measure quality?7
The tool support available for reengineering
• Developers are always moaning about tools
• Refactoring tools are poor
The availability of expert staff for reengineering
• This can be a problem with old systems based on technology that is no longer widely used
Time (costs money)
• The cost of one developer per day
Technical debt
Factors that affect system lifetimes:
Investment costs
The costs of a systems engineering project may be tens or even hundreds of millions of pounds
Factors that affect system lifetimes:
Replacement costs
The cost of replacing a large system is very high.
Replacing an existing system can only be justified if this leads to significant cost savings over the existing system
Factors that affect system lifetimes:
Return on Assesment
If a fixed budget is available for systems engineering, spending this on new systems in some other area of the business may lead to a higher return on investment than replacing an existing system
Factors that affect system lifetimes:
Risk of change
The danger with a new system is that things can go wrong in the hardware, software and operational processes.
The potential costs of these problems for the business may be so high that they cannot take the risk of system
replacement
Factors that affect system lifetimes:
System dependencies
Other systems may depend on a system and making changes to these other systems to accommodate a replacement system may be impractical
Factors that affect system lifetimes:
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
When you refactor a program, you should not add functionality but rather concentrate on program
improvement
Example: Move method (reduces coupling)
What are ‘Bad smells’ in program
code
Duplicate code
• The same or very similar code may be included at different places in a program
• This can be removed and implemented as a single method or function that is called as required
Long method
• If a method is too long, it should be redesigned as a number of shorter methods
Large class • A class has too many methods
What is system measuring?
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 faults over a period of time
• Higher the number of faults, the lower the quality of the system
McCabe’s Cyclomatic Complexity
• Too much complexity reflects a poor quality system