Podcast
Questions and Answers
Which of the following factors contribute to the declining quality of systems?
Which of the following factors contribute to the declining quality of systems?
- Lack of adaptation to changes in the operational environment (correct)
- Maintaining a constant rate of development
- Adapting to changes in the operational environment
- Continually increasing functionality
What is the primary characteristic of the 'Conservation of Familiarity' principle?
What is the primary characteristic of the 'Conservation of Familiarity' principle?
- System size, release frequency, and error reports remain stable across releases.
- System releases exhibit consistent incremental changes over time. (correct)
- Functionality must continuously expand to maintain user satisfaction.
- The development rate remains constant despite changes in resources.
The 'Feedback System' principle suggests that:
The 'Feedback System' principle suggests that:
- System development should focus on individual components rather than the entire system.
- User satisfaction is solely determined by the functionality provided by the system.
- Multiple agents and loops interact within the evolution process to improve product quality. (correct)
- System development should be independent of organizational stability and resources allocated.
Which of these suggests the need for system maintenance?
Which of these suggests the need for system maintenance?
According to the principles stated, what is a key driver for continued user satisfaction?
According to the principles stated, what is a key driver for continued user satisfaction?
Which system type relies on approximate solutions to problems, with the assumption of a stable real-world environment?
Which system type relies on approximate solutions to problems, with the assumption of a stable real-world environment?
Which of the following is NOT an artifact that may require changes during the system life cycle due to changes in requirement analysis?
Which of the following is NOT an artifact that may require changes during the system life cycle due to changes in requirement analysis?
Which system type undergoes incremental changes throughout its lifecycle?
Which system type undergoes incremental changes throughout its lifecycle?
Which of Lehman's laws describes the tendency for a program's structure to become more complex over time?
Which of Lehman's laws describes the tendency for a program's structure to become more complex over time?
Which system type is primarily defined by formal specifications and is thus considered stable and unchanging?
Which system type is primarily defined by formal specifications and is thus considered stable and unchanging?
What is an example of an E-system?
What is an example of an E-system?
Which of the following is NOT a factor that contributes to the increasing complexity of a program as it evolves?
Which of the following is NOT a factor that contributes to the increasing complexity of a program as it evolves?
Which of Lehman's Laws highlights the inherent self-regulating nature of program evolution?
Which of Lehman's Laws highlights the inherent self-regulating nature of program evolution?
What is a primary reason why the maintenance team's work is often considered 'second-hand'?
What is a primary reason why the maintenance team's work is often considered 'second-hand'?
Which of the following is NOT a technical challenge faced by maintenance teams?
Which of the following is NOT a technical challenge faced by maintenance teams?
What is a key contributing factor to increasing maintenance costs over time?
What is a key contributing factor to increasing maintenance costs over time?
What is a key challenge in understanding a software system for maintenance purposes?
What is a key challenge in understanding a software system for maintenance purposes?
Which of these is NOT a responsibility of the maintenance team?
Which of these is NOT a responsibility of the maintenance team?
Which type of maintenance focuses on perfecting existing functions?
Which type of maintenance focuses on perfecting existing functions?
Which of the following is a potential advantage of having a separate maintenance team?
Which of the following is a potential advantage of having a separate maintenance team?
What is a key skill for a maintenance expert?
What is a key skill for a maintenance expert?
Which of the following is NOT considered a programmer's view on information needs for maintenance?
Which of the following is NOT considered a programmer's view on information needs for maintenance?
From the provided content, which of the following can be inferred about the role of domain expertise in maintenance?
From the provided content, which of the following can be inferred about the role of domain expertise in maintenance?
Which of the following is NOT a reason for software changes?
Which of the following is NOT a reason for software changes?
What is the main characteristic of the software maintenance strategy?
What is the main characteristic of the software maintenance strategy?
What is the primary goal of software re-engineering?
What is the primary goal of software re-engineering?
Which of the following is NOT considered a 'law' in program evolution dynamics?
Which of the following is NOT considered a 'law' in program evolution dynamics?
What is the key difference between software maintenance and re-engineering?
What is the key difference between software maintenance and re-engineering?
Flashcards
Software Change
Software Change
The process of modifying software to adapt to new requirements or fix issues.
Software Maintenance
Software Maintenance
Making changes to software in response to changed requirements while keeping its structure stable.
Software Re-engineering
Software Re-engineering
Restructuring existing software without adding new functions to enable future changes.
Architectural Transformation
Architectural Transformation
Signup and view all the flashcards
Program Evolution Dynamics
Program Evolution Dynamics
Signup and view all the flashcards
Organisational Stability
Organisational 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
Resource Allocation
Resource Allocation
Signup and view all the flashcards
Maintenance Team Responsibilities
Maintenance Team Responsibilities
Signup and view all the flashcards
Program Comprehension
Program Comprehension
Signup and view all the flashcards
Maintenance Problems
Maintenance Problems
Signup and view all the flashcards
Maintenance Costs
Maintenance Costs
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
Preventive Maintenance
Preventive Maintenance
Signup and view all the flashcards
Separate Maintenance Team
Separate Maintenance Team
Signup and view all the flashcards
Information Needs
Information Needs
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
S-system change during life cycle
S-system change during life cycle
Signup and view all the flashcards
P-system change during life cycle
P-system change during life cycle
Signup and view all the flashcards
E-system change during life cycle
E-system change during life cycle
Signup and view all the flashcards
Continuing change (Lehman’s Laws)
Continuing change (Lehman’s Laws)
Signup and view all the flashcards
Increasing complexity (Lehman’s Laws)
Increasing complexity (Lehman’s Laws)
Signup and view all the flashcards
Study Notes
Software Maintenance
-
Software change is unavoidable due to evolving requirements, changing business environments, error corrections, new equipment needs, and performance/reliability improvements.
-
Legacy systems pose a significant challenge in implementing and managing changes.
Software Change Strategies
-
Software Maintenance: Modifications are made in response to changes in requirements, but the underlying software structure remains stable. Maintenance typically doesn't involve significant changes to the system architecture.
-
Software Re-engineering: No new functionality is added, but the system is restructured and reorganized to ease future changes.
-
Architectural Transformation: The system's architecture is modified, often from centralized to distributed.
-
These strategies can be used separately or together.
Program Evolution Dynamics
-
Program evolution dynamics studies the empirical process of system changes.
-
Lehman and Belady's research identified several "laws" applying to system evolution, but these laws are more observations than strict rules, particularly for large systems developed by large organizations. Applicability may be limited to other cases.
Lehman's System Types
-
S-system: Formally defined, derived from specifications (e.g., matrix manipulation).
-
P-system: Requirements based on approximate solutions, with a stable real-world environment (e.g., Chess).
-
E-system: Embedded in a real-world environment that continuously changes, with incompletely understood elements (e.g., software predicting economic functions).
Changes During the System Life Cycle
-
S-system: Unchanged.
-
P-system: Incremental change (e.g., fixing discrepancies).
-
E-system: Constant change.
Examples of Changes During Software Development
- Changes in requirements analysis, system design, program design, program implementation, unit testing, system testing, and system delivery will require updates to artifacts such as requirements, architectural specifications, technical specifications, program code and documentation, test plans, user documentation, operator documentation, system guides, and training materials.
Lehman's Laws
-
Continuing Change: A program in a real-world environment needs to constantly adapt or become progressively less useful.
-
Increasing Complexity: As a program evolves, its structure generally becomes more complex.
-
Large Program Evolution: System attributes (e.g., size, release timing, error reports) are roughly constant during a system's evolution.
-
Organizational Stability: The rate of development over a system's lifetime is often constant and independent of the resources devoted.
-
Conservation of Familiarity: Incremental changes in each release are roughly consistent.
-
Continuing Growth: Systems' functionality generally must increase to maintain user satisfaction.
-
Declining Quality: The quality of a system can seem to decline unless it's appropriately adapted to environmental changes.
-
Feedback System: Evolution processes incorporate multi-agent, multi-loop feedback mechanisms that must be considered as system components for significant improvement.
System Maintenance vs. Decline
- Is the maintenance cost too high?
- Is the system's reliability unacceptable?
- Can the system adapt to further changes within a reasonable timeframe?
- Is the system's performance still within prescribed constraints?
- Are the system functions useful enough?
- Are other systems better, faster, or cheaper choices?
- Is maintaining the hardware cost-effective compared to replacing it?
Types of Maintenance
-
Corrective: Controlling day-to-day functions.
-
Adaptive: Controlling system modifications.
-
Perfective: Improving existing functions.
-
Preventive: Preventing performance degradation.
Who Performs Maintenance
-
Separate maintenance team: More objective view; distinguish intended system behavior from actual.
-
Part of development team: Easier to integrate with the system but potential for ignoring documentation.
Skills of the Maintainer
-
Novice: Basic skills.
-
Expert: Language, domain, comprehension strategies, program expertise are critical.
Information Needs
-
Domain expert's view: Domain concepts, relationships, program scope/boundaries, goals.
-
User's view: Constraints (e.g., size, timing), program operations, installation requirements.
-
Programmer's view: Dependency graphs, program components, algorithms, representations, resource allocation.
Information Sources
- Programmer's knowledge, code, documentation, colleagues.
Maintenance Team Responsibilities
-
Program comprehension
-
Traceability (locating information)
-
Perform required changes (extending, adding functions, resolving failures)
-
Locating and correcting faults
-
Restructuring, rewriting, and deleting design/code components
-
Keeping documentation up-to-date
-
Answering questions about the modified system.
Maintenance Problems
- Staff problems (limited understanding, conflicting priorities, low morale).
- Technical problems (legacy artifacts, testing difficulties.)
Causes of Maintenance Problems
- Unstructured code
- Insufficient system/domain knowledge
- Poor documentation
- Negative perception of the maintenance team.
Maintenance Costs
- Usually greater than development costs.
- Affected by technical and non-technical factors.
- Increases as software is maintained due to the corrupting effects of maintenance.
- Ageing software often results in high support costs.
Development/Maintenance Costs
- Costs for Systems 1 and 2 are presented in a bar chart.
- Development cost is significantly compared to maintenance costs in System 1 and System 2.
Development/Maintenance Effort Ratios
- Parikh and Zvegintzov (1983): Development = 2 years; Maintenance = 5–6 years.
- Fjedstad and Hamlen (1979): 39% of effort is typically in initial development; 61% is in maintenance.
- 80–20 rule: 20% of effort in devlopement, 80% in maintanance.
Maintenance Cost Factors
- Team stability: Reduced costs with consistent staff.
- Contractual responsibility: No incentive to design for future change.
- Staff skills: Experienced staff with domain knowledge crucial.
- Program age and structure: Degraded structure increases maintenance complexity.
Factors Affecting Maintenance Effort
- Application type
- System novelty
- Turnover of maintenance staff
- System lifespan
- 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.