Software Maintenance and Program Evolution

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

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?

  • 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?

  • Performance Optimization
  • Software Re-engineering (correct)
  • Architectural Transformation
  • Software Maintenance

What is the primary distinction between software maintenance and software re-engineering?

<p>Software maintenance focuses on stability, while software re-engineering aims to improve the system's architecture. (C)</p> Signup and view all the answers

Which of the following is a true statement about program evolution dynamics?

<p>Program evolution dynamics are based on observations of how large systems evolve over time. (B)</p> Signup and view all the answers

Which of the following is NOT a key aspect of program evolution dynamics as proposed by Lehman and Belady?

<p>Software systems are designed to evolve and adapt to user needs. (D)</p> Signup and view all the answers

What is the primary goal of architectural transformation in software change strategies?

<p>Modifying the system’s architecture, often moving from centralized to distributed structures. (B)</p> Signup and view all the answers

Which of the following is NOT a common reason for software changes?

<p>Implementing a new operating system for compatibility. (B)</p> Signup and view all the answers

Which Lehman's system type is characterized by changes occurring due to the evolution of the real-world environment it is embedded within?

<p>E-system (C)</p> Signup and view all the answers

Which type of system is most likely to be affected by discrepancies and omissions identified during system development?

<p>P-system (A)</p> Signup and view all the answers

According to Lehman's Laws, what is the natural tendency of a program as it evolves?

<p>To become increasingly complex (D)</p> Signup and view all the answers

Which of the following is NOT an example of an artifact requiring change as a result of initial change during software development?

<p>User Manual (D)</p> Signup and view all the answers

What type of change is most commonly associated with P-systems during their lifecycle?

<p>Incremental change (B)</p> Signup and view all the answers

Which of the following is a typical characteristic of an S-system?

<p>It is formally defined and derivable from a specification (C)</p> Signup and view all the answers

Which type of maintenance is focused on preventing the system from deteriorating to an unacceptable level?

<p>Preventive (B)</p> Signup and view all the answers

What is a potential disadvantage of having the development team handle maintenance?

<p>They may be overconfident and neglect documentation, hindering the maintenance process. (A)</p> Signup and view all the answers

What does Lehman's Law of Continuing Change suggest about programs in a real-world environment?

<p>Programs must adapt to changes in the environment or become less useful (A)</p> Signup and view all the answers

Which type of maintenance focuses on improving existing functions of a system?

<p>Perfective (D)</p> Signup and view all the answers

Which system type is best suited for tasks like matrix manipulation, which are well-defined and have a clear set of rules?

<p>S-system (C)</p> Signup and view all the answers

Which of the following is NOT a skill typically associated with an expert maintainer?

<p>Data analysis expertise (A)</p> Signup and view all the answers

According to Lehman's Laws, what is the main reason why program evolution requires extra resources?

<p>To maintain and simplify the program's structure as it becomes more complex (A)</p> Signup and view all the answers

Which of the following activities is LEAST likely to directly affect the requirement specification during software development?

<p>Unit testing (B)</p> Signup and view all the answers

What kind of information is provided by the domain expert's view in the context of maintenance?

<p>Concepts, relations, and scope of the program. (A)</p> Signup and view all the answers

Which type of maintenance is primarily concerned with handling system modifications?

<p>Adaptive (B)</p> Signup and view all the answers

What is the primary goal of corrective maintenance?

<p>Fixing faults and restoring functionality. (C)</p> Signup and view all the answers

From the programmer's perspective, what information is crucial for maintenance?

<p>Dependencies between program parts, classes, and functions. (C)</p> Signup and view all the answers

Why might it be beneficial to have a separate maintenance team?

<p>They may be able to provide more objective insights into the system's functionality. (B)</p> Signup and view all the answers

Which of the following is NOT a benefit of having the development team perform maintenance?

<p>They are more likely to prioritize the maintenance effort over other tasks. (A)</p> Signup and view all the answers

Which of the following is NOT a key attribute of a system's stability?

<p>Cost of development (A)</p> Signup and view all the answers

The concept of 'Organisational stability' suggests that:

<p>System development follows a predictable and consistent pace (B)</p> Signup and view all the answers

What are the primary responsibilities of a maintenance team?

<p>Understanding the system, locating information, and performing required changes. (D)</p> Signup and view all the answers

Which concept suggests that system upgrades should introduce consistent changes over time?

<p>Conservation of familiarity (B)</p> Signup and view all the answers

What is the impact of unstructured code on software maintenance?

<p>It increases the complexity and cost of software maintenance. (D)</p> Signup and view all the answers

Why is the maintenance team often considered to have a "second-hand" status within an organization?

<p>Because they are responsible for fixing the mistakes of others. (C)</p> Signup and view all the answers

Which concept emphasizes the need for constant functional enhancement to maintain user satisfaction?

<p>Continuing growth (D)</p> Signup and view all the answers

What are some common causes of maintenance problems?

<p>All of the above (D)</p> Signup and view all the answers

The 'Declining quality' concept highlights the need to address what challenge in systems?

<p>The inability of systems to adapt to changing operational environments (C)</p> Signup and view all the answers

How do maintenance costs typically relate to development costs?

<p>Maintenance costs are often greater than development costs. (D)</p> Signup and view all the answers

Which of the following is NOT a question raised regarding system maintenance?

<p>Is the system still capable of adapting to future changes? (C)</p> Signup and view all the answers

The concept of a 'Feedback system' is vital for:

<p>Improving the overall quality of the system (B)</p> Signup and view all the answers

Which of the following statements accurately describes the 'Feedback system' concept?

<p>A multi-agent, multi-loop system for continuous improvement (B)</p> Signup and view all the answers

When considering system maintenance, which of the following factors is NOT directly related to its decline?

<p>Time taken to develop new features (B)</p> Signup and view all the answers

Which of the following is NOT explicitly mentioned as a factor contributing to system decline?

<p>Lack of user engagement with the system (A)</p> Signup and view all the answers

Flashcards

Resource Allocation

Distributing memory size and timing for efficient system performance.

Maintenance Team Responsibilities

Duties include understanding the system, updating documentation, and performing code changes.

Maintenance Problems

Issues faced during maintenance such as staff and technical challenges.

Causes of Maintenance Problems

Factors like unstructured code, lack of knowledge, and insufficient documentation.

Signup and view all the flashcards

Maintenance Costs

Costs of maintaining software, often exceeding development costs, increases with age.

Signup and view all the flashcards

S-system

A system formally defined and derivable from a specification, involving matrix manipulation.

Signup and view all the flashcards

P-system

A system with requirements based on approximate solutions, applied in stable real-world scenarios, like games.

Signup and view all the flashcards

E-system

A system embedded in the real world that evolves as the world does, such as economic prediction software.

Signup and view all the flashcards

Incremental change

Gradual updates or modifications made to a system as discrepancies arise.

Signup and view all the flashcards

Continuous change

The necessity for a program in a real-world environment to change continuously to remain useful.

Signup and view all the flashcards

Increasing complexity

As software evolves, its structure becomes more complex, requiring extra resources for management.

Signup and view all the flashcards

Large program evolution

An ongoing, self-regulating process of program evolution that addresses its needs and changes.

Signup and view all the flashcards

Requirement analysis

The process of gathering and defining what a system must accomplish.

Signup and view all the flashcards

Program design

The phase where the architecture and detailed specifications of software are created.

Signup and view all the flashcards

Unit testing

Testing individual components of the software for correctness before integration.

Signup and view all the flashcards

System Attributes

Invariants like size, release time, and errors for each system release.

Signup and view all the flashcards

Organizational Stability

A program's development rate remains constant, despite resource changes.

Signup and view all the flashcards

Conservation of Familiarity

Incremental changes in system releases are roughly constant over time.

Signup and view all the flashcards

Continuing Growth

Systems must expand functionality to keep users satisfied.

Signup and view all the flashcards

Declining Quality

System quality seems to drop if not adapted to changing environments.

Signup and view all the flashcards

Feedback System

Evolution processes include multi-agent, multi-loop feedback for improvements.

Signup and view all the flashcards

System Reliability

Assessing if a system’s reliability is deemed unacceptable.

Signup and view all the flashcards

Adaptability to Change

Determines if a system can adjust to further changes promptly.

Signup and view all the flashcards

Functionality Usefulness

Evaluates whether system functions remain useful compared to alternatives.

Signup and view all the flashcards

Corrective Maintenance

Maintaining control over day-to-day functions.

Signup and view all the flashcards

Adaptive Maintenance

Maintaining control over system modifications.

Signup and view all the flashcards

Perfective Maintenance

Perfecting existing functions of a system.

Signup and view all the flashcards

Preventive Maintenance

Preventing system performance from degrading.

Signup and view all the flashcards

Maintenance Team vs. Development Team

Maintenance teams may be more objective; development teams may ignore documentation.

Signup and view all the flashcards

Maintainer Skills

Skills include novice, expert, language and domain expertise.

Signup and view all the flashcards

Domain Expert's View

Focuses on concepts, relations, and goals of the program.

Signup and view all the flashcards

User's View

Concerned with constraints like size and timing of operations.

Signup and view all the flashcards

Programmer's View

Analyzes dependency graphs and program parts.

Signup and view all the flashcards

Information Needs

Different views give varied information needs in maintenance.

Signup and view all the flashcards

Software Change

Modifications made to software due to evolving requirements, errors, or new technology.

Signup and view all the flashcards

Maintenance

Responding to changed requirements while keeping the core software structure stable.

Signup and view all the flashcards

Software Re-engineering

Restructuring existing software to enhance future maintainability without adding new features.

Signup and view all the flashcards

Architectural Transformation

Changing a system’s architecture, often from centralized to distributed.

Signup and view all the flashcards

Legacy Systems

Older software systems that organizations struggle to update or maintain.

Signup and view all the flashcards

Program Evolution Dynamics

The study of how software systems change over time through empirical analysis.

Signup and view all the flashcards

Lehman and Belady's Laws

Observations about the evolution of software systems, applicable to large organizations.

Signup and view all the flashcards

Software Change Strategies

Approaches to manage software changes, including maintenance, re-engineering, and architectural transformation.

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.

Quiz Team

Related Documents

More Like This

Program Maintenance Quiz
18 questions
Program Development and Maintenance
18 questions
Software Maintenance Challenges and Strategies
11 questions
Use Quizgecko on...
Browser
Browser