Software Maintenance Fundamentals PDF
Document Details
![BetterKnownTimpani1860](https://quizgecko.com/images/avatars/avatar-19.webp)
Uploaded by BetterKnownTimpani1860
Tags
Summary
This document provides an overview of software maintenance, covering its core roles, importance, different types (corrective, adaptive, perfective, and preventive), and cost implications. It also explores common challenges and strategies for effective maintenance.
Full Transcript
Software Maintenance Software Maintenance Fundamentals Definition and Core Role Definition: Software maintenance refers to the activities undertaken after software is deployed to correct faults, improve performance, adapt to a changed environment, or add functionalities. Role in Life...
Software Maintenance Software Maintenance Fundamentals Definition and Core Role Definition: Software maintenance refers to the activities undertaken after software is deployed to correct faults, improve performance, adapt to a changed environment, or add functionalities. Role in Lifecycle: ○ Preservation: Ensures functionality and usability over time. ○ Adaptation: Keeps software aligned with technological and environmental changes. ○ Improvement: Enhances performance and maintainability. Example: Consider a banking application that must integrate new regulations or patch security vulnerabilities to remain compliant and secure. Software Maintenance Fundamentals Why Maintenance Matters Importance of Software Maintenance Software maintenance ensures: Continuous user satisfaction ○ Keeps software reliable and relevant. Prolonged software lifespan ○ Avoids obsolescence. Adaptation to change ○ Supports evolving platforms, technologies, and standards. Why do we change software? Market Conditions ○ Policies, which change over the time, such as taxation and newly introduced constraints like, how to maintain bookkeeping, may trigger need for modification. Client Requirements ○ Over the time, customer may ask for new features or functions in the software. Host Modifications ○ If any of the hardware and/or platform (such as operating system) of the target host changes, software changes are needed to keep adaptability. Organization Changes ○ Business changes at the client end, such as workforce reduction, acquisitions, or new business ventures , may require modifications to the original software. Software Maintenance Fundamentals Cost and Challenges Cost Implications of Maintenance Maintenance Costs Dominate the SDLC: ○ Over 67% of total software costs are attributed to maintenance activities. ○ On an average, the software maintenance cost is more than 50% of all the SDLC phases. Cost Implications of Maintenance Real-World Factors Affecting Maintenance Cost: ○ The standard age of software is considered to be 10 to 15 years. ○ As technology advances, it’s very costly to maintain old software, especially if it is heavy on data. ○ Older software meant to work on slow machines with less storage capacity and memory cannot keep themselves challenged against the newly enhanced software on modern hardware. ○ Most of the maintenance engineers are newbies and use trial and error methods to rectify problems. ○ The changes made easily hurt the original software structure and make it hard for any subsequent changes. ○ Changes are often left undocumented and may cause more conflicts in the future. Software-end Factors Affecting Maintenance Cost ○ Software program structure ○ Programming language ○ Dependence on the external environment ○ Staff availability and reliability Categories of Maintenance Maintenance activities are divided into four groups: Corrective: Fixes defects and bugs after deployment. ○ E.g. Fixing a bug that causes incorrect total prices to be displayed during checkout in e- commerce website. Adaptive: Updates software to remain compatible with new systems or environments. ○ E.g. OS Update: Updating an antivirus program to work with the latest version of Windows or macOS. Perfective: Improves performance and usability based on user feedback. ○ E.g. Adding a "save draft" feature to an email client based on user requests for improved usability. Preventive: Anticipates and resolves potential issues to avoid future problems. ○ E.g. Refactoring spaghetti code in a large-scale project to prevent errors when implementing future changes Maintenance vs. Evolution Maintenance ○ Focuses on preserving current functionality and ensuring the software continues to operate as intended. ○ Involves activities like fixing bugs, patching vulnerabilities, and adapting to minor environmental changes (e.g., OS updates). ○ Example: Fixing a login error in a deployed e-commerce app. Evolution: ○ Expands the software's capabilities or adapts it to significant changes in user needs or the environment. ○ Encompasses adding new features, redesigning for scalability, or transitioning to a new technology stack. ○ Example: Adding a loyalty rewards feature to the same e-commerce app to attract new customers. Software Maintenance Fundamentals Key Strategies Maintenance Metrics Measuring maintenance effectiveness include: a. Mean Time to Repair (MTTR) Definition: The average time taken to identify, fix, and deploy a solution for a defect after detection. Purpose: Measures the efficiency of the maintenance process. Example: Bug fixed and deployed in 6 hours b. Code Churn Definition: The frequency and volume of changes made to the codebase over a given period. Purpose: Indicates code stability. High churn may signal instability or frequent redesigns. Example: A module with 30% churn rate in one sprint suggests significant modifications, possibly due to unclear requirements. Maintenance Metrics (Cont…) c. Defect Density Definition: The number of defects identified per unit of software size (e.g., per 1,000 lines of code). Purpose: Evaluates the quality of the software. Example: 5 defects per 1,000 lines of code. d. Cost Insight Definition: The comparative measurement of maintenance cost against other lifecycle costs Purpose: Highlights the financial burden of software maintenance and its implications on resource planning. Observation: Maintenance often accounts for 50-75% of the total software lifecycle cost. Example: An enterprise CRM system developed for $500,000 incurs $800,000 in maintenance costs over five years, demonstrating the long-term cost implications of maintenance. Cost Management Software maintenance can be costly due to ongoing updates, bug fixes, and enhancements. Costs increase over time, especially when the software system becomes more complex or outdated and the difficulty in finding skilled personnel to work on them. Example: ○ A legacy system requiring constant patching or major upgrades every few months can result in high operational costs for the organization. Strategy to Overcome: ○ Proactive Budgeting: Establish clear budgets for maintenance activities and monitor expenses. ○ Automation: Use automated tools to manage repetitive maintenance tasks. ○ Outsourcing: Consider outsourcing specific maintenance tasks if it’s more cost-effective. Technical Obsolescence Over time, the technology stack used for development becomes outdated, leading to compatibility issues and increased difficulty in maintaining the system. Older systems may not support modern features, making them harder to scale or secure. Example: ○ A logistics system running on Windows XP faces increased security risks and cannot integrate with new APIs. Strategy to Overcome: ○ Periodic Upgrades: Regularly update technology stacks and frameworks. ○ Refactoring: Continuously refactor code to use modern development standards. ○ Component Replacement: Replace obsolete components with newer, supported technologies. Team Knowledge Gaps Over time, team members with specific knowledge of the software may leave, creating "knowledge silos." This can lead to significant delays or errors in maintaining or updating the software. Example ○ A large software system was originally developed by a team of experts, but several key team members leave, and the new developers struggle to understand the complex codebase because it lacks clear documentation. Strategy to Overcome: ○ Knowledge Sharing: Foster a culture of continuous learning and knowledge sharing. ○ Training & Development: Invest in training programs to bridge skill gaps and keep the team up-to- date. ○ Documentation: Ensure that thorough documentation is maintained for the system to help new team members understand the software quickly. Managing Change Requests Managing frequent change requests from users or stakeholders can lead to an ever- expanding backlog of features and fixes. Balancing these requests while maintaining the stability of the software can be difficult. Example ○ A large-scale enterprise application that is constantly modified based on changing user needs and business processes, leading to patching and rework. Strategy to Overcome: ○ Change Control Process: Implement a structured process for evaluating, prioritizing, and handling change requests. ○ Versioning and Baselines: Use version control systems and baseline configurations to prevent unintended changes. ○ Clear Communication: Ensure clear communication between the development team and stakeholders to set realistic expectations and prioritize changes.. Conclusion Software maintenance is vital for ensuring functionality, adaptability, and long-term value. Focus on proactive strategies like proper documentation, team knowledge sharing, and efficient cost management to address challenges effectively. Thank You Acknowledgment Some of the materials are taken from: Priyadarshi Tripathy, & Kshirasagar Naik. (2015). Software evolution and maintenance : a practitioner’s approach. Wiley. Principles of Engineering Software course, by Dr. James C. Helm, University of Houston - Clear Lake