Podcast
Questions and Answers
What distinguishes the servicing stage from the evolution stage in a software system's lifecycle?
What distinguishes the servicing stage from the evolution stage in a software system's lifecycle?
- Servicing involves adding new functionalities, while evolution focuses on bug fixes.
- Servicing only includes changes to keep the software operational, like bug fixes, without adding new functionalities, while evolution implements new requirements. (correct)
- Servicing is the initial development phase, whereas evolution is when the software is used and maintained.
- There is no clear distinction; the terms 'servicing' and 'evolution' are interchangeable.
Why should proposals for change in software evolution be linked to specific components?
Why should proposals for change in software evolution be linked to specific components?
- To automatically implement the changes without manual intervention.
- To facilitate better communication with the end-users about upcoming updates.
- To allow for accurate estimation of the cost and impact of the proposed changes. (correct)
- To ensure that all team members are aware of the proposed changes.
In the context of software evolution, what is the primary focus during the program understanding phase?
In the context of software evolution, what is the primary focus during the program understanding phase?
- Testing the software to identify bugs and errors.
- Understanding the program's structure, functionality, and the potential impact of proposed changes. (correct)
- Implementing urgent changes without rigorous analysis to expedite the process.
- Designing new features to be added to the software.
In which situations might urgent changes be implemented without undergoing all stages of the software engineering process?
In which situations might urgent changes be implemented without undergoing all stages of the software engineering process?
How do agile methods facilitate software evolution?
How do agile methods facilitate software evolution?
What challenges might arise when a development team uses an agile approach, but the evolution team prefers a plan-based approach?
What challenges might arise when a development team uses an agile approach, but the evolution team prefers a plan-based approach?
Why is replacing legacy systems considered a risky endeavor?
Why is replacing legacy systems considered a risky endeavor?
Which factor contributes to the high cost of changing legacy systems?
Which factor contributes to the high cost of changing legacy systems?
What should the choice of strategy for evolving a legacy system depend on?
What should the choice of strategy for evolving a legacy system depend on?
What is the recommended course of action for legacy systems that are of low quality and have low business value?
What is the recommended course of action for legacy systems that are of low quality and have low business value?
When assessing the business value of a system, which viewpoints should be taken into account?
When assessing the business value of a system, which viewpoints should be taken into account?
What does system dependability indicate about a system's business value?
What does system dependability indicate about a system's business value?
When assessing the quality of a legacy system, what does 'environment assessment' primarily evaluate?
When assessing the quality of a legacy system, what does 'environment assessment' primarily evaluate?
In the context of assessing system quality, what does the 'Understandability' factor refer to in application assessment?
In the context of assessing system quality, what does the 'Understandability' factor refer to in application assessment?
What quantitative data might be collected to assess the quality of an application system?
What quantitative data might be collected to assess the quality of an application system?
What distinguishes software maintenance from software evolution?
What distinguishes software maintenance from software evolution?
Which activity is classified as environmental adaptation in software maintenance?
Which activity is classified as environmental adaptation in software maintenance?
Why is it generally more expensive to add new features to a system during maintenance than during development?
Why is it generally more expensive to add new features to a system during maintenance than during development?
What is the primary concern of maintenance prediction in software engineering?
What is the primary concern of maintenance prediction in software engineering?
What factor indicates a potential decline in maintainability when using process metrics?
What factor indicates a potential decline in maintainability when using process metrics?
What is the objective of software re-engineering?
What is the objective of software re-engineering?
What is a key advantage of re-engineering over developing new software?
What is a key advantage of re-engineering over developing new software?
Which of the following is a re-engineering process activity?
Which of the following is a re-engineering process activity?
Which factor has the greatest impact on re-engineering costs?
Which factor has the greatest impact on re-engineering costs?
What is refactoring?
What is refactoring?
How does refactoring differ from re-engineering?
How does refactoring differ from re-engineering?
Which of the following program characteristics would be considered a 'bad smell' in program code?
Which of the following program characteristics would be considered a 'bad smell' in program code?
What is 'data clumping' in the context of program code?
What is 'data clumping' in the context of program code?
According to the key points, what model can software development and evolution be represented by?
According to the key points, what model can software development and evolution be represented by?
What is true of the costs of software maintenance for custom systems compared to software development costs?
What is true of the costs of software maintenance for custom systems compared to software development costs?
According to the key points, what drives the software evolution process?
According to the key points, what drives the software evolution process?
What defines legacy systems?
What defines legacy systems?
What is often cheaper and less risky than developing a replacement system using modern technology?
What is often cheaper and less risky than developing a replacement system using modern technology?
How is the business value of a legacy system assessed?
How is the business value of a legacy system assessed?
Which of the following is one of the three types of software maintenance identified?
Which of the following is one of the three types of software maintenance identified?
What is the purpose of software re-engineering?
What is the purpose of software re-engineering?
What describes refactoring?
What describes refactoring?
Why is it important for proposals for change to be linked to specific components of a system undergoing evolution?
Why is it important for proposals for change to be linked to specific components of a system undergoing evolution?
In the context of software evolution, which of the following is a key aspect considered during the 'impact analysis' phase?
In the context of software evolution, which of the following is a key aspect considered during the 'impact analysis' phase?
Under which circumstances might a software system undergo an emergency repair process?
Under which circumstances might a software system undergo an emergency repair process?
Which statement reflects the role of automated regression testing in agile software evolution?
Which statement reflects the role of automated regression testing in agile software evolution?
What potential outcome can arise when the development team prefers agile methods, while the evolution team favors a plan-based approach?
What potential outcome can arise when the development team prefers agile methods, while the evolution team favors a plan-based approach?
Which of the following is a characteristic of legacy systems?
Which of the following is a characteristic of legacy systems?
Why is system replacement considered a risky option for evolving legacy systems?
Why is system replacement considered a risky option for evolving legacy systems?
Why are legacy systems often expensive to change?
Why are legacy systems often expensive to change?
An organization is deciding how to evolve a legacy system. Which factor should have the biggest impact on their choice of strategy?
An organization is deciding how to evolve a legacy system. Which factor should have the biggest impact on their choice of strategy?
If a legacy system is assessed to have low quality and low business value, what is the recommended course of action?
If a legacy system is assessed to have low quality and low business value, what is the recommended course of action?
When assessing the business value of a system, why is it important to consider viewpoints from different stakeholders?
When assessing the business value of a system, why is it important to consider viewpoints from different stakeholders?
In the context of business value assessment, what does 'system dependability' indicate about a system's business value?
In the context of business value assessment, what does 'system dependability' indicate about a system's business value?
What does 'environment assessment' primarily evaluate when assessing the quality of a legacy system?
What does 'environment assessment' primarily evaluate when assessing the quality of a legacy system?
When assessing system quality, what does the 'Understandability' factor refer to in application assessment?
When assessing system quality, what does the 'Understandability' factor refer to in application assessment?
Which quantitative data could be collected to assess the quality of an application system?
Which quantitative data could be collected to assess the quality of an application system?
How does software maintenance differ from software evolution regarding changes implemented?
How does software maintenance differ from software evolution regarding changes implemented?
Which maintenance task is classified as environmental adaptation?
Which maintenance task is classified as environmental adaptation?
Why is adding new features to a system generally more expensive during maintenance than during development?
Why is adding new features to a system generally more expensive during maintenance than during development?
What is assessed by maintenance prediction in software engineering?
What is assessed by maintenance prediction in software engineering?
What does an increase in the average time required for impact analysis, when using process metrics, indicate?
What does an increase in the average time required for impact analysis, when using process metrics, indicate?
What is the core purpose of software re-engineering?
What is the core purpose of software re-engineering?
What is a primary benefit of re-engineering compared to developing new software?
What is a primary benefit of re-engineering compared to developing new software?
Which of the following activities would be considered part of the re-engineering process?
Which of the following activities would be considered part of the re-engineering process?
Which factor most significantly influences the cost of re-engineering a software system?
Which factor most significantly influences the cost of re-engineering a software system?
Which of the following best describes 'data clumping' as a 'bad smell' in program code?
Which of the following best describes 'data clumping' as a 'bad smell' in program code?
Flashcards
Software Change
Software Change
Changes to software are inevitable after it is put into use.
Importance of Evolution
Importance of Evolution
Organizations have massive investments in software, so evolution is very important.
Evolution Stage
Evolution Stage
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.
Software Servicing
Software Servicing
Signup and view all the flashcards
Phase-out
Phase-out
Signup and view all the flashcards
Software evolution processes
Software evolution processes
Signup and view all the flashcards
Proposals for change
Proposals for change
Signup and view all the flashcards
Change implementation
Change implementation
Signup and view all the flashcards
Urgent change requests
Urgent change requests
Signup and view all the flashcards
Agile methods
Agile methods
Signup and view all the flashcards
Legacy systems
Legacy systems
Signup and view all the flashcards
System hardware
System hardware
Signup and view all the flashcards
Support software
Support software
Signup and view all the flashcards
Application software
Application software
Signup and view all the flashcards
Application data
Application data
Signup and view all the flashcards
Business processes
Business processes
Signup and view all the flashcards
Business policies
Business policies
Signup and view all the flashcards
Legacy replacement challenges
Legacy replacement challenges
Signup and view all the flashcards
Evolving legacy systems
Evolving legacy systems
Signup and view all the flashcards
Business value assessment
Business value assessment
Signup and view all the flashcards
Business process assessment
Business process assessment
Signup and view all the flashcards
Software maintenance
Software maintenance
Signup and view all the flashcards
Fault repairs
Fault repairs
Signup and view all the flashcards
Environmental adaptation
Environmental adaptation
Signup and view all the flashcards
Functionality Modification
Functionality Modification
Signup and view all the flashcards
Maintenance prediction
Maintenance prediction
Signup and view all the flashcards
Complexity metrics
Complexity metrics
Signup and view all the flashcards
Re-engineering process activities
Re-engineering process activities
Signup and view all the flashcards
Source code translation
Source code translation
Signup and view all the flashcards
Reverse engineering
Reverse engineering
Signup and view all the flashcards
Program structure improvement
Program structure improvement
Signup and view all the flashcards
Program modularization
Program modularization
Signup and view all the flashcards
Data re-engineering
Data re-engineering
Signup and view all the flashcards
Refactoring
Refactoring
Signup and view all the flashcards
Preventative maintenance
Preventative maintenance
Signup and view all the flashcards
Duplicate code
Duplicate code
Signup and view all the flashcards
Long methods
Long methods
Signup and view all the flashcards
Data clumping
Data clumping
Signup and view all the flashcards
Study Notes
Software Evolution
- Software evolution encompasses the processes involved in modifying software after its initial deployment.
- Software evolution includes evolution processes, software maintenance, and legacy systems.
Inevitability of Software Change
- Software change is unavoidable due to evolving requirements during use.
- Software change is also needed because the business environment changes over time.
- Errors must be fixed.
- New tech will be added.
- System improvements and reliability updates.
- Managing change to systems presents a key problem for organizations.
Importance of Software Evolution
- Organizations possess large stakes in their software systems, making them critical assets.
- Changes and updates are essential to preserve the value of these assets.
- Most of the software budget in large companies is allocated to evolving existing software instead of creating new ones.
Development and Evolution Spiral Model
- Specification outlines what the system should do.
- Implementation creates the code for the system.
- Validation checks if the system meets the specified requirements.
- Operation is the phase where the system is used and maintained.
- Releases are the different versions of the system.
Evolution and Servicing
- Software development involves the initial creation of the software.
- Software evolution involves adaptations and modifications after deployment.
- Software servicing involves bug fixes and environmental changes.
- Software retirement is when that software is no longer supported.
Evolution
- Evolution is the stage where the system is in operational use, and new requirements are implemented.
Servicing
- Servicing is where the software remains useful with bug fixes and changes to reflect environmental updates without adding new functionality.
Phase-Out
- Phase-out: Software may still be used but receives no further modifications.
Evolution Process Dependencies
- Maintainence depends on software type, development processes, and skills/experience of involved personnel.
- Change proposals require links to affected components for cost and impact estimation.
- Throughout the system's lifetime, change identification and evolution are ongoing.
The Software Evolution Process
- Change requests represent the start of the software evolution process.
- Impact analysis assesses the effect of the requested changes.
- Release planning organizes and schedules the implementation of changes.
- Change implementation involves modifying the software, entailing either bug fixes, platform adaptation, or system enhancement.
- System release delivers the updated software version.
Change Implementation Details
- Change implementation iterates the development process with design, implementation, and testing of system revisions.
- Program understanding may be needed during the initial phase if new developers are implementing the changes.
- Program understanding involves deciphering program structure, functionality, and potential impacts of proposed changes.
Handling Urgent Change Requests
- Software engineering processes may be bypassed when implementing urgent changes.
- These changes may include fixing a serious system halt, managing impacts of upgrades to the system environment, or providing rapid reactions to business changes.
The Emergency Repair Process
- Change requests initiate the emergency repair process.
- Source code analysis identifies the location of changes.
- Changes are made to the code.
- The changed system is delivered.
Adapting Agile Methods
- Transitioning from development to evolution should be seamless because Agile methods are rooted in incremental development.
- Evolution extends the initial development with regular system releases.
- Automated regression testing proves useful when system modifications are implemented.
- Changes can be specified as additional user stories in project management.
Handover Problems: Development vs Evolution
- Agile development teams pass work to evolution teams preferring plan-based approaches, detailed documentation may be expected.
- Plan-based development teams pass work to evolution teams preferring agile, automated tests may need to be started from scratch.
Understanding Legacy Systems
- Legacy systems are older, relying on outdated languages and tech, and are no longer used for new development.
- Legacy software depends on older hardware, like mainframe computers, and has associated outdated processes.
- Legacy systems consist of hardware, software, libraries, business processes, and other software.
Elements of Legacy Systems
- Application software often at the core with business logic.
- Support software assists application software.
- System hardware that runs all software components.
- Application data processes the application.
- Business processes are workflows the system automates, constrained by the system's capabilities.
- Business policies and rules dictate how the business is run, embedding the application system.
Legacy System Components - Hardware
- System hardware may have been written for hardware that is no longer available.
Legacy System Components - Support Software
- The legacy system may rely on a range of support software that may be obsolete or unsupported.
Legacy System Components - Applications
- Application software provides the business services and comprises numerous programs.
Legacy System Components - Application Data
- Application data are processed by the application system and are inconsistent, duplicated, or held in different databases.
Legacy System Components - Business Processes
- Business processes are the processes used in the business to achieve some business objective.
Legacy System Components - Business Policies
- Business policies and rules define how the business should be carried out and constraints on the business, with the use of the legacy application system.
Legacy System Layers
- Hardware provides the physical base.
- Platform and infrastructure software such as the operating system and databases sit on top of the hardware.
- Application software runs on platform.
- Business processes which operate on that software.
Difficulties with Replacement
- Business usually continues to use legacy systems, as replacement introduces costs and risks.
- The system replacement introduces risks such as a lack of complete system specifications.
- The replacement may cause tight integration of the system and business processes.
- The replacement may cause undocumented business rules embedded in the legacy system.
- The replacement may result in new software development being late and/or over budget.
The Expense of Changing Legacy Systems
- Inconsistencies and obsolete languages exist.
- Documentation is commonly inadequate.
- Degradation of System Structure and confusing optimizations of code, errors and duplications.
Managing Legacy Systems
- Organizations must choose a strategy for evolving the systems.
- These strategies include scrapping the system, continuing the system, transforming the system, or creating a new system.
- The choice depends on system quality and business value.
Legacy System Categories
- Low quality and business value: Scrap.
- Low quality, high business value: Reengineer or replace.
- High quality, low business value: Replace with COTS or maintain.
- High quality, high business value: Maintain.
Business Value Assessment, Stakeholders, and Issues
- Assessments should take viewpoints of system end-users, customers, managers.
- Stakeholders should be interviewed and results are collated.
- Dependability and outputs affect value.
- Business processes may lower value.
Analysis of System Quality
- Business process assessment determines support for current business goals.
- Environment assessment measures environment effectiveness and cost of maintenance.
- Application Assessment gauges application software system quality.
Business Assessment Elements and Example
- Stakeholder viewpoints should be used to define process models.
- Different organizational parts may user different processes to perform the same function.
- Business processes could be adapted, or is effectively supported by legacy applications.
- A travel ordering system may have a low business value because of the widespread use of web-based ordering.
Considerations for Environmental Factors
- Consider supplier stability (is it still in business).
- Consider failure rate, age, and performance.
Support Requirements: Questions on Support
- Support requirements questions for hardware and software (consider system replacement based on support costs)?
Maintenance Costs: Questions on Support Contracts and Licences
- What are the costs of hardware maintenance and support software licences?
Interoperability: Question on Compilers
- Is hardware emulation required and are there problems connecting the system to the others?
Measuring Attributes and Performance
- Consider source code understandability and complexity.
- Evaluation include system documentation, data attributes, data, and data consistency.
- Appraise overall system performance.
Programming language and test and configurations considerations
- What are modern languages used to develop this system and is it still in use.
- Check for all versions of system parts are managed.
- Test data should exist for systems: Regression tests performed on features added.
Personnel: Considerations
- Personnel available who have skills to maintain/ use the software.
Quantifying System Quality
- Accumulate Data on System Change and the number of user interfaces.
- The volume of data is the key to making assessments of the data-processing.
- Cleaning is costly.
Defining Software Maintenance
- Maintenance modifies a program after use, focused on custom software; it rarely introduces architecture changes.
- System modifications and integration can be implemented in phases.
Categories of Maintenance
- Fault repairs are used to fix defects and bugs.
- Software is updated to different operating environments, is referred to environmental adaptation, and may operate in different environments from the initial implementation.
- Changes to a system can include additions and modifications.
Effort Distribution of Maintenance
- Functionality addition or modification (58%).
- Fixing faults(24%).
- Adjusting to new environments (19%).
Defining factors of Maintenance Costs
- Costs are higher for maintenance, and maintenance can be higher depending on the application.
- Factors also technical ones and non technical.
- Expenses rise and corrupt the software, and maintainence makes it difficult.
- Support costs are high (compilers, languages,etc).
Expense: Development vs Modifications
- It's normally more expensive to add to maintenance rather than in a system under development.
- New Teams and developers are needed to work on maintainable software.
- Maintenance staff who are often inexperienced, and their structures often age.
Defining Maintenance Prediction
- Prediction looks at which systems may have problems and high costs.
- Implementation changes degrade systems and maintenance depends on maintaining the maintainability.
Prediction Elements
- Maintainability is predicted by system changes, maintenance costs, and the parts affected by change.
Change Prediction
- Understanding changes requires a system, its environment.
- System coupled with changes whenever environment ones are adapted.
- Changing can depend on volatility (requirements), complexity (interfaces), and processes.
Defining Complexity metrics
- Predictions focus on complexity of control and data, and the sizes of object, procedure, and module.
Process indicators
- Can measure to maintain the number of requests, average time, and requests outstanding.
- Maintainability decreases if indicators increase.
Software Re-engineering
- Code is rewritten or restructured in legacy systems without functionality changes.
- This is mainly used when frequent maintenance is needed.
- Re-engineering includes adding effort.
Reduced Risk
- There is risk with software development because there may be problems, specifications and staffing.
Reduced Cost
- Re-engineering is less expensive than software development.
Process of Re-engineering
- Original Program: Initial code slated for re-engineering.
- Reverse Engineering: Analyze code to understand structure and logic.
- Program Documentation: Create documentation to aid understanding and future maintenance.
- Source Code Translation: Convert code to a new language for modern development.
- Program Modularization: Divide program into manageable modules.
- Program Structure Improvement: Restructure Code for understandability.
- Restructure Program: Improve internal code organization with changes.
- Result: Re-engineered program + re-engineered data.
The Activities of Re-engineering
- Convert Code to a specific Language (Source language translation), Reverse it to read the original components
- Restructure to enhance understandability and reorganize code.
- Clean and organize the structural system.
Approaches to Re-engineering
- Automated code restructuring can be automated.
- Code Conversion should be automated but manual too.
- Code enhancements will be integrated to reduce costs.
Factors for cost
- The tool support available, data conversion, and expert staff are important for reducing the costs.
Refactoring
- Improvement is to reduce degradation with change, and reduced problems will result.
- Altering improves maintainance, and complexity improvements.
- Concentrate on functionality not enhancement.
Re-engineering and Refactoring Summary
- Automation can be used, but it involves legacy software to create maintainable ones.
- Refactoring is improving and code degradation can prevent the maintaininability.
Bad Code Examples
- Similar code is placed in different programs to be implemented as a function.
- If a function is to long, re design into methods.
Polymorphism for code statements
- Those that depend of value switch should be polymorphic to reduce duplication.
“Bad Smells” Cont. - Clumps & Neglect
- Similar items in classes can be encapsulated, and generalization might not be used and should be removed.
Key Points on Evolution:
- Evolution and development are integrated iterations, and maintenance out costs development.
- Change-driven software evolution involves change impact analysis, release planning, and implementation, with old software remaining in use due to its business benefits.
Key Points on Evolution and Legacies:
- Legacy application assessments, transformations and maintainability are cheaper than completely starting again.
- Software maintenance can be a mix of fixing bugs, adapting it, and implementing them.
Improving software:
- Softwares need to be re-organized to be modified and improved.
- Changing codes that maintains performance is a important maintainance role.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.