Maintenance Context

Slide Note
Embed
Share

Explore the tools and methodologies essential for effective software maintenance, including version control systems, issue tracking systems, integrated development environments, and static code analysis tools. Learn about corrective maintenance, its importance, and the role of tools like bug tracking systems. Enhance your understanding of maintenance challenges and the software maintenance life cycle.


Uploaded on Apr 19, 2024 | 4 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. 3IT-2024 Maintenance Context Dr. Wurood Albayati Lecture No. 3

  2. Slides Overview Corrective maintenance The Maintenance framework Maintenance Challenges Term Used in SW Cost of Maintenance Cost of sw maintenance relative to the total cost of sw ( according to SDLC) Cost of each maintenance types Software Maintenance Life cycle (SMLC)

  3. Google class code

  4. Corrective maintenance Corrective maintenance is a reactive approach. It s often deals with common minor issues like login failure or connectivity errors. Once the issue is reported by the user or the in-house QA tester, then troubleshooting begins. This type of maintenance work is often easy and done quickly so it doesn t disrupt the application s performance. Users will hardly notice corrective changes. Although in rare cases, if the error significantly changes a process, it might provoke some negative reactions. Tools for corrective maintenance may include bug tracking systems like Jira, Bugzilla, or GitHub Issues.

  5. Tools used in S.W Maintenance Version Control Systems (VCS): A VCS (also known as version control software) automates the process of managing changes to files over time. Here s what it does: Tracks Changes: It monitors modifications made to files, whether it s source code, documentation, or other assets. Automates Version Control: You don t need to manually manage file versions or create custom automation scripts. History: A VCS maintains a comprehensive history of your code, allowing you to revert to previous versions when necessary. Branching and Merging: VCS enables branching, which helps isolate changes and protect the mainline (trunk) from unintended problems. Collaboration: Multiple developers can work on the same project simultaneously, enhancing collaboration and development speed. Examples: Git, Mercurial, and Perforce Issue Tracking Systems: also called bug tracking system focuses on managing and tracking issues, tasks, and enhancements related to software development. Here s what it does: Issue Management: It helps organize and prioritize tasks, bugs, feature requests, and other project-related issues. Workflow Tracking: You can assign, update, and monitor the progress of issues throughout their lifecycle. Communication: Developers, testers, and stakeholders collaborate within the system to discuss and resolve issues. Integration with VCS: Issue tracking systems often integrate with VCS tools to link issues with specific code changes. Examples: Well-known issue tracking systems include Jira, Bugzilla, and Redmine,GitHub Issues, and Trello help manage and prioritize reported issues, defects, and enhancement requests.

  6. Tools used in S.W Maintenance Cont. Integrated Development Environments (IDEs): IDEs like Visual Studio, IntelliJ IDEA, Eclipse, and JetBrains Rider provide developers with tools for writing, debugging, and testing code, making it easier to perform maintenance tasks. Static Code Analysis Tools: or static analysis are often used interchangeably, along with source code analysis. Static code analysis addresses weaknesses in source code that might lead to vulnerabilities. Of course, this may also be achieved through manual source code reviews. Tools like SonarQube, PMD, Checkstyle, and ESLint analyze source code to identify potential issues, enforce coding standards, and improve code quality. Continuous Integration/Continuous Deployment (CI/CD) Tools: CI/CD platforms such as Jenkins, Travis CI, CircleCI, and GitLab CI automate the process of building, testing, and deploying software changes, helping to ensure that updates are delivered quickly and reliably. Documentation Tools: Tools like Doxygen, Sphinx, and Markdown editors assist in creating and maintaining documentation for the software, which is crucial for understanding the codebase and facilitating future maintenance efforts. Monitoring and Logging Tools: Tools such as Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana), and New Relic help monitor the performance and health of deployed software systems, enabling proactive maintenance and troubleshooting.

  7. Maintenance types and tools used Corrective Maintenance: This type of maintenance involves fixing defects or bugs identified during the use of the software. The goal is to ensure that the software operates correctly and as expected. Tools for corrective maintenance may include bug tracking systems like Jira, Bugzilla, or GitHub Issues. Adaptive Maintenance: Adaptive maintenance involves modifying the software to keep it compatible with changing environments, such as new hardware, operating systems, or third-party software dependencies. Version control systems like Git or Subversion can be helpful in managing changes related to adaptive maintenance. Perfective Maintenance: Perfective maintenance focuses on improving the software's performance, usability, or other quality attributes. This might involve optimizing code, enhancing user interfaces, or adding new features requested by users. Integrated development environments (IDEs) like Visual Studio, IntelliJ IDEA, or Eclipse, ------- Can you think of other tool? Preventive Maintenance: Preventive maintenance aims to prevent future issues by proactively identifying and addressing potential problems before they occur. This might involve code refactoring, performance tuning, or updating documentation to improve maintainability. Static code analysis tools like SonarQube, FindBugs, or ESLint can help identify areas of the codebase that may require preventive maintenance

  8. Maintenance Cost Maitenance Cost Corrective Perfective Adaptive preventive 5% Corrective maintenance (generally 20% of software maintenance costs) Adaptive maintenance (25% of software maintenance costs) Adaptive maintenance consists of adapting software to changes in the environment such as the hardware or the operating system or business rules, work patterns, and government policies. Perfective maintenance (generally 50% of software maintenance costs) involves making functional enhancements to the system in addition to the activities to increase the system s performance even when the changes have not been suggested by faults. Preventive(or Enhancements)- (generally 5% or more) involves performing activities to prevent the occurrence of errors. It tends to reduce the software complexity thereby improving program understandability and increasing software maintainability.

  9. The maintenance Framework The organizational environment The user environment - changes in policies, - changes which enable to stay competitive -User Requests e.g. changes in business rules or taxation policies additional error correction non-programming-related support. functionality Maintenance Process Software Environment Maintenance Personnel The operational environment the exchange of H.W/S.W platform ( a new operating system or device

  10. Challenges in Software Maintenance Finding the developer who constructed the program can be difficult and time consuming. The systems are not maintained by the original authors, which can result in confusion and misinterpretation of changes executed in the program. Information gap between user and the developer can also become a huge challenge in software maintenance. The biggest challenge in software maintenance is when systems are not designed for changes.

  11. What is TCO The total cost of ownership refers to the sum of all costs and expenses related to buying, implementing, managing, and maintaining our software solutions. This includes direct and indirect costs like: Training employees how to use the software (indirect) On boarding clients onto the system (indirect) Ongoing support (indirect) Software maintenance (direct) Software upgrades (direct) Software maintenance costs will typically form 70% of TCO.

  12. Maintenance cost is high ,,,Why _ Insufficient knowledge of the user domain _ Insufficient (or outdated) documentation _ Complexity of programs _ Programmer is not the maintenance persons _ Usage of undocumented assumptions introduces (further)errors _ Knowledge about operational and functional information are often only implicitly (in the program code) available

  13. Software Maintenance Life Cycle (SMLC) Identification Phase: (Validating the need for maintenance) the requests for modifications in the software are identified classify the type of maintenance activity it requires. Analysis Phase Feasibility and scope of each validated modification requestare determined a plan is prepared to incorporate the changes in the software. The cost of modification and maintenance is also estimated. Design Phase A test cases are developed for the new design ( the safety and security issues). These test cases are created for the validation and verification of the system.

  14. SMLC- Cont. Implementation Phase: the actual modification in the software code are made, new features are added, and the modified software is installed System Testing Phase to ensure that no defect, error or bug is left undetected. validates that no new faults are introduced in the software as a result of maintenance Integration testing is also carried out between new modules and the system. Acceptance Testing Phase: is performed on the fully integrated system by the user or third party specified by the end user this testing is to verify that all the features of the software are according to the requirements stated in the modification request. Delivery Phase The modified system is delivered to the users , + manuals and help files The final testing of the system is done by the client after the system is delivered.

  15. Maintenance process models To overcome internal as well as external problems of the software, Software maintenance models are proposed. What is the benefit of SW maintenance process model It used approaches and techniques to simplify the process of maintenance . It make the maintenance cost effective.

  16. Maintenance Model Iterative Enhanceme nt Model Capability Maturity Model CMM The Re-use Oriented Model Taute Maintenan ce Model QuickFix Model Boehm s Model Prerequisites: complete documentation is available / / / / How it work Based on the economic models and principles. Closed loop cycle iterative changes incorporates based on the analysis of the existing system identified , understand, modified , enhance then Re-use It is used by developers for updating and modification in the software Adhoc , Fix the problem as quickly as The maintenance process is driven by the maintenance manager s decisions, Advantage straightforwa rd, practical and easy to understand. control complexity Maintain good design quickly , low cost

Related


More Related Content