Podcast
Questions and Answers
What is the key problem for organizations that employ software maintenance strategies?
What is the key problem for organizations that employ software maintenance strategies?
- Adapting to emerging software technologies.
- Developing new features for legacy systems.
- Implementing and managing changes to their existing systems. (correct)
- Maintaining a balance between cost and performance.
Which of the following is not a factor that contributes to the need for software changes?
Which of the following is not a factor that contributes to the need for software changes?
- Software must be updated to reflect changing business environments.
- The software must be redesigned to improve its performance.
- User feedback is used to enhance the software's usability. (correct)
- New equipment must be accommodated
Which software change strategy primarily focuses on restructuring and reorganizing existing systems?
Which software change strategy primarily focuses on restructuring and reorganizing existing systems?
- Performance Optimization
- Software Re-engineering (correct)
- Architectural Transformation
- Software Maintenance
What is the primary distinction between software maintenance and software re-engineering?
What is the primary distinction between software maintenance and software re-engineering?
Which of the following is a true statement about program evolution dynamics?
Which of the following is a true statement about program evolution dynamics?
Which of the following is NOT a key aspect of program evolution dynamics as proposed by Lehman and Belady?
Which of the following is NOT a key aspect of program evolution dynamics as proposed by Lehman and Belady?
What is the primary goal of architectural transformation in software change strategies?
What is the primary goal of architectural transformation in software change strategies?
Which of the following is NOT a common reason for software changes?
Which of the following is NOT a common reason for software changes?
Which Lehman's system type is characterized by changes occurring due to the evolution of the real-world environment it is embedded within?
Which Lehman's system type is characterized by changes occurring due to the evolution of the real-world environment it is embedded within?
Which type of system is most likely to be affected by discrepancies and omissions identified during system development?
Which type of system is most likely to be affected by discrepancies and omissions identified during system development?
According to Lehman's Laws, what is the natural tendency of a program as it evolves?
According to Lehman's Laws, what is the natural tendency of a program as it evolves?
Which of the following is NOT an example of an artifact requiring change as a result of initial change during software development?
Which of the following is NOT an example of an artifact requiring change as a result of initial change during software development?
What type of change is most commonly associated with P-systems during their lifecycle?
What type of change is most commonly associated with P-systems during their lifecycle?
Which of the following is a typical characteristic of an S-system?
Which of the following is a typical characteristic of an S-system?
Which type of maintenance is focused on preventing the system from deteriorating to an unacceptable level?
Which type of maintenance is focused on preventing the system from deteriorating to an unacceptable level?
What is a potential disadvantage of having the development team handle maintenance?
What is a potential disadvantage of having the development team handle maintenance?
What does Lehman's Law of Continuing Change suggest about programs in a real-world environment?
What does Lehman's Law of Continuing Change suggest about programs in a real-world environment?
Which type of maintenance focuses on improving existing functions of a system?
Which type of maintenance focuses on improving existing functions of a system?
Which system type is best suited for tasks like matrix manipulation, which are well-defined and have a clear set of rules?
Which system type is best suited for tasks like matrix manipulation, which are well-defined and have a clear set of rules?
Which of the following is NOT a skill typically associated with an expert maintainer?
Which of the following is NOT a skill typically associated with an expert maintainer?
According to Lehman's Laws, what is the main reason why program evolution requires extra resources?
According to Lehman's Laws, what is the main reason why program evolution requires extra resources?
Which of the following activities is LEAST likely to directly affect the requirement specification during software development?
Which of the following activities is LEAST likely to directly affect the requirement specification during software development?
What kind of information is provided by the domain expert's view in the context of maintenance?
What kind of information is provided by the domain expert's view in the context of maintenance?
Which type of maintenance is primarily concerned with handling system modifications?
Which type of maintenance is primarily concerned with handling system modifications?
What is the primary goal of corrective maintenance?
What is the primary goal of corrective maintenance?
From the programmer's perspective, what information is crucial for maintenance?
From the programmer's perspective, what information is crucial for maintenance?
Why might it be beneficial to have a separate maintenance team?
Why might it be beneficial to have a separate maintenance team?
Which of the following is NOT a benefit of having the development team perform maintenance?
Which of the following is NOT a benefit of having the development team perform maintenance?
Which of the following is NOT a key attribute of a system's stability?
Which of the following is NOT a key attribute of a system's stability?
The concept of 'Organisational stability' suggests that:
The concept of 'Organisational stability' suggests that:
What are the primary responsibilities of a maintenance team?
What are the primary responsibilities of a maintenance team?
Which concept suggests that system upgrades should introduce consistent changes over time?
Which concept suggests that system upgrades should introduce consistent changes over time?
What is the impact of unstructured code on software maintenance?
What is the impact of unstructured code on software maintenance?
Why is the maintenance team often considered to have a "second-hand" status within an organization?
Why is the maintenance team often considered to have a "second-hand" status within an organization?
Which concept emphasizes the need for constant functional enhancement to maintain user satisfaction?
Which concept emphasizes the need for constant functional enhancement to maintain user satisfaction?
What are some common causes of maintenance problems?
What are some common causes of maintenance problems?
The 'Declining quality' concept highlights the need to address what challenge in systems?
The 'Declining quality' concept highlights the need to address what challenge in systems?
How do maintenance costs typically relate to development costs?
How do maintenance costs typically relate to development costs?
Which of the following is NOT a question raised regarding system maintenance?
Which of the following is NOT a question raised regarding system maintenance?
The concept of a 'Feedback system' is vital for:
The concept of a 'Feedback system' is vital for:
Which of the following statements accurately describes the 'Feedback system' concept?
Which of the following statements accurately describes the 'Feedback system' concept?
When considering system maintenance, which of the following factors is NOT directly related to its decline?
When considering system maintenance, which of the following factors is NOT directly related to its decline?
Which of the following is NOT explicitly mentioned as a factor contributing to system decline?
Which of the following is NOT explicitly mentioned as a factor contributing to system decline?
Flashcards
Resource Allocation
Resource Allocation
Distributing memory size and timing for efficient system performance.
Maintenance Team Responsibilities
Maintenance Team Responsibilities
Duties include understanding the system, updating documentation, and performing code changes.
Maintenance Problems
Maintenance Problems
Issues faced during maintenance such as staff and technical challenges.
Causes of Maintenance Problems
Causes of Maintenance Problems
Signup and view all the flashcards
Maintenance Costs
Maintenance Costs
Signup and view all the flashcards
S-system
S-system
Signup and view all the flashcards
P-system
P-system
Signup and view all the flashcards
E-system
E-system
Signup and view all the flashcards
Incremental change
Incremental change
Signup and view all the flashcards
Continuous change
Continuous change
Signup and view all the flashcards
Increasing complexity
Increasing complexity
Signup and view all the flashcards
Large program evolution
Large program evolution
Signup and view all the flashcards
Requirement analysis
Requirement analysis
Signup and view all the flashcards
Program design
Program design
Signup and view all the flashcards
Unit testing
Unit testing
Signup and view all the flashcards
System Attributes
System Attributes
Signup and view all the flashcards
Organizational Stability
Organizational Stability
Signup and view all the flashcards
Conservation of Familiarity
Conservation of Familiarity
Signup and view all the flashcards
Continuing Growth
Continuing Growth
Signup and view all the flashcards
Declining Quality
Declining Quality
Signup and view all the flashcards
Feedback System
Feedback System
Signup and view all the flashcards
System Reliability
System Reliability
Signup and view all the flashcards
Adaptability to Change
Adaptability to Change
Signup and view all the flashcards
Functionality Usefulness
Functionality Usefulness
Signup and view all the flashcards
Corrective Maintenance
Corrective Maintenance
Signup and view all the flashcards
Adaptive Maintenance
Adaptive Maintenance
Signup and view all the flashcards
Perfective Maintenance
Perfective Maintenance
Signup and view all the flashcards
Preventive Maintenance
Preventive Maintenance
Signup and view all the flashcards
Maintenance Team vs. Development Team
Maintenance Team vs. Development Team
Signup and view all the flashcards
Maintainer Skills
Maintainer Skills
Signup and view all the flashcards
Domain Expert's View
Domain Expert's View
Signup and view all the flashcards
User's View
User's View
Signup and view all the flashcards
Programmer's View
Programmer's View
Signup and view all the flashcards
Information Needs
Information Needs
Signup and view all the flashcards
Software Change
Software Change
Signup and view all the flashcards
Maintenance
Maintenance
Signup and view all the flashcards
Software Re-engineering
Software Re-engineering
Signup and view all the flashcards
Architectural Transformation
Architectural Transformation
Signup and view all the flashcards
Legacy Systems
Legacy Systems
Signup and view all the flashcards
Program Evolution Dynamics
Program Evolution Dynamics
Signup and view all the flashcards
Lehman and Belady's Laws
Lehman and Belady's Laws
Signup and view all the flashcards
Software Change Strategies
Software Change Strategies
Signup and view all the flashcards
Study Notes
Software Maintenance
- Software change is unavoidable due to emerging new requirements, changing business environments, error correction, new equipment, and performance/reliability improvements
- A key issue for organizations is managing change to legacy systems
- Software maintenance strategies include:
- Software Maintenance: Changes are made in response to changing requirements, but the fundamental software structure remains stable. Maintenance does not typically involve major architectural changes.
- Software Re-engineering: The software is restructured and reorganized without adding new functionality, facilitating future changes.
- Architectural Transformation: The system's architecture is modified, often from a centralized to a distributed architecture.
- These strategies can be applied separately or together
Program Evolution Dynamics
- Program evolution dynamics is the empirical study of the process of system changes
- Lehman and Belady's research proposed "laws" applicable to all evolving systems, which show sensible observations rather than strict laws
- The observed laws are mostly applicable to large systems developed by large organizations. Observed laws might have lesser applicability in other cases
Lehman's System Types
- S-system: Formally defined, derivable from a specification (e.g., matrix manipulation)
- P-system: Requirements based on approximate solutions to problems, remaining stable in the real world (e.g., chess)
- E-system: Embedded in the real world, and changes as the world does (e.g., software to predict economic functions)
Changes During System Life Cycle
- S-system: Unchanged
- P-system: Incremental change (approximate solution, change with identified discrepancies or omissions)
- E-system: Constant change
Examples of Change During Software Development
- The text lists various development activities (e.g., requirement analysis, system design, program implementation) and the associated artifacts that need changes as a result
Lehman's Laws
- Continuing change: Programs used in real-world environments often need changes to remain useful
- Increasing complexity: Program structure tends to become more complex as the program evolves
- Large program evolution: System attributes (size, release time) are approximately constant across releases
- Organizational stability: The rate of program development is relatively constant over its lifetime
- Conservation of familiarity: Incremental change in each release is approximately constant throughout the program's life
- Continuing growth: System functionality needs to continually increase to maintain user satisfaction
- Declining quality: System quality appears to decline without adaptation to operational changes
- Feedback system: Evolution incorporates multi-agent, multi-loop feedback systems to improve the program
System Maintenance vs. Decline
- Issues that indicate a system needs maintenance or is declining:
- Cost of maintenance is too high
- System reliability is unacceptable
- System cannot adapt to changes in a reasonable time frame
- System performance is beyond acceptable constraints
- System functions have limited usefulness
- Other systems can perform the same job better, faster, or cheaper
- Hardware replacement costs exceed the system maintenance cost
Nature of Maintenance Types
- Corrective: Maintains control over day-to-day tasks
- Adaptive: Maintains control over system modifications
- Perfective: Improves existing functions
- Preventive: Prevents system performance from degrading to unacceptable levels
Who Performs Maintenance
- Separate maintenance team: More objective, better at distinguishing intended functionality from actual functionality
- Development team part: Will build the system in a way that makes maintenance easier (but, sometimes ignore documentation)
Skills of the Maintainer
- Novice: Basic language expertise and program understanding
- Expert: Has language expertise, domain expertise, comprehension strategies, and specific program expertise
Information Needs
- Domain expert's view: Concepts of the domain, relations, scope, and boundaries, and program goals
- User's view: Constraints, size, timing, operations, installation
- Programmer's view: Dependencies, program parts, algorithms, representations, resource allocation
Information Sources
- Programmer's knowledge
- Code
- Documentation
- Colleagues on the project
Maintenance Team Responsibilities
- Program Comprehension: Understand the system
- Traceability: Locate information in system documentation
- Performing required changes: Extending existing functions, adding new functions, locating failures/problems, correcting faults, restructuring/rewriting design/code, deleting components
- Keeping system documentation up-to-date
- Answering questions about the way the modified system works
Maintenance Problems
- Staff problems: Limited understanding, management priorities, morale issues related to maintenance teams
- Technical problems: System/code structure and paradigms (e.g., legacy code, non-object-oriented code), testing challenges
Causes of Maintenance Problems
- Unstructured code
- Insufficient knowledge about the system and its domain
- Insufficient documentation
- A bad image of the maintenance department
Maintenance Costs
- Usually greater than development costs
- Affected by both technical and non-technical factors
- Increases as software is maintained (software structure decays due to modifications making further maintenance more difficult)
- Ageing software has high support costs (e.g., old languages, compilers)
Development/Maintenance Costs
- Development costs tend to be lower but increase over time than maintenance costs
- Maintenance costs are typically higher than development costs
Development/Maintenance Costs (Specific Research)
- Parikh and Zvegintzov study noted development times of two years and maintenance time of 5-6 years
- Fjedstad and Hamlen's study found development effort to be at 39% and maintenance effort at 61%
- 80/20 rule: ~80% of effort in maintenance and ~20% in development
Maintenance Cost Factors
- Team stability: Involves the same staff contributing to avoid higher maintenance costs
- Contractual responsibility: Developers might lack responsibility, leading to poor design for future changes
- Staff skills: Often, maintenance staff are inexperienced and lack domain knowledge
- Program age and structure: Older programs often have degraded structures, making them harder to understand and modify
Factors Affecting Maintenance Effort
- Application type
- System novelty
- Turnover and maintenance staff ability
- System life span
- Dependence on a changing environment
- Hardware characteristics
- Design quality
- Code quality
- Documentation quality
- Testing quality
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.