Software Maintenance and Program Evolution
43 Questions
0 Views

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

    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

    Description

    Explore the vital aspects of software maintenance and the dynamics of program evolution. This quiz covers strategies such as software maintenance, re-engineering, and architectural transformation, as well as the empirical study of system changes. Understand how organizations manage changes to legacy systems effectively.

    More Like This

    Yazılım Bakımı Temel Süreçleri
    18 questions
    Program Maintenance Quiz
    18 questions
    Software Maintenance Challenges and Strategies
    11 questions
    Utility Programs Overview
    5 questions

    Utility Programs Overview

    ResoluteJaguar7845 avatar
    ResoluteJaguar7845
    Use Quizgecko on...
    Browser
    Browser