Chapter 9 discusses quality management and software maintenance, outlining key activities, techniques, and the importance of quality assurance in software engineering. It defines software maintenance, categorizes maintenance types, and emphasizes the role of configuration management in managing software evolution. The chapter also highlights the significance of quality management processes in meeting customer requirements and ensuring software reliability and performance.
Download as PPTX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
5 views
Lecture 9
Chapter 9 discusses quality management and software maintenance, outlining key activities, techniques, and the importance of quality assurance in software engineering. It defines software maintenance, categorizes maintenance types, and emphasizes the role of configuration management in managing software evolution. The chapter also highlights the significance of quality management processes in meeting customer requirements and ensuring software reliability and performance.
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 25
Chapter 9
Quality management and
software maintenance Dr. Jael Wekesa [email protected] Overview Introduction to software maintenance Software maintenance activities Techniques for maintenance Quality management and importance in software engineering Classification of Quality requirements Software Quality Architecture Configuration management and its importance in software engineering Lesson objective: - Define the term quality management, software maintenance, configuration management and software re- engineering. - To explain the importance of quality management, software maintenance, configuration management of software. - Explain processes of ensuring delivering of high quality software through the various software maintenance and configuration management 9.1. Introduction to software maintenance Software maintenance - the totality of activities required to provide cost-effective support to a software system. Activities are performed during the pre-delivery stage as well as the post- delivery stage. Pre-delivery activities include planning for post-delivery operations, supportability, and logistics determination. Post-delivery activities include software modification, training, and operating a help desk. Cont… A maintainer is defined by ISO/IEC 12207 (International Organization for Standardization/International Electrotechnical Commission) as an organization that performs maintenance activities [ISO12207]. ISO/IEC 12207 identifies the primary activities of software maintenance as: - Process implementation; - Maintenance review/acceptance; - Problem and modification analysis;- Migration and - Modification implementation; - Retirement. Software maintenance activities Cont… Process Implementation tasks are: o Develop maintenance plans and procedures. o Establish procedures for Modification Requests. o Implement the CM (Configuration management) process. Problem and Modification tasks are: o Perform initial analysis. o Verify the problem. o Develop options for implementing the modification. o Document the results. o Obtain approval for modification option Modification Implementation tasks are: Perform detailed analysis. Develop, code, and test the modification. Cont… Maintenance Review/Acceptance tasks are: Conduct reviews. Obtain approval for modification. Migration tasks are: Ensure that migration is in accordance with ISO/IEC 12207. Develop a migration plan. Notify users of migration plans. - Conduct parallel operations. Notify user that migration has started. Conduct a post-operation review. Ensure that old data is accessible. Software Retirement tasks are: Develop a retirement plan. Notify users of retirement plans. Conduct parallel operations. Notify user that retirement has started. Ensure that old data is accessible Categories of maintenance defined by ISO/IEC Corrective maintenance: Reactive modification of a software product performed after delivery to correct discovered problems. Adaptive maintenance: Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment. Perfective maintenance: Modification of a software product after delivery to improve performance or maintainability. Preventive maintenance: Modification of a software product after delivery to detect and correct latent faults in the software product before turning into effective faults Techniques for maintenance Effective software maintenance is performed using techniques specific to maintenance. The following are some of the best practice techniques used by maintainers: Program Comprehension: Programmers spend considerable time in reading and comprehending programs in order to implement changes. Code browsers are a key tool in program comprehension. Clear and concise documentation can aid in program comprehension. Based on the importance of this subtopic, an annual IEEE Computer Society workshop is now held to address program comprehension. Re-engineering: the examination and alteration of the subject system to reconstitute it in a new form, and the subsequent implementation of the new form. Re-engineering is often not undertaken to improve maintainability but is used to replace aging legacy systems. Refactoring: a program transformation that reorganizes a program without changing its behavior, is now being used in reverse engineering to improve the structure of object oriented programs. Cont… Reverse engineering: is the process of analyzing a subject system to identify the system’s components and their interrelationships and to create representations of the system in another form or at higher levels of abstraction. Reverse engineering is passive; it does not change the system, or result in a new one. A simple reverse engineering effort may merely produce call graphs and control flow graphs from source code. Types of reverse engineering are re-documentation, design recovery. Data Reverse Engineering. Reverse engineering topics are discussed at the annual Working Conference on Reverse Engineering (WCRE). Impact Analysis: identifies all systems and system products affected by a change request and develop an estimate of the resources needed to accomplish the change. It is performed after a change request enters the configuration management process. The objectives of impact analysis are: Determine the scope of a change in order to plan and implement work. Develop accurate estimates of resources needed to perform the work. Analyze the cost/benefits of the requested change. Communicate to others the complexity of a given change. 9.2 Quality management and importance in software engineering Software quality can be defined as the degree to which a system or a component meets specified requirements. ● Quality assurance - Establish organizational procedures and standards for quality. ● Quality planning - Select applicable procedures and standards for a particular project and modify these as required. ● Quality control - Ensure that the software development team follows procedures and standards. ● Quality management should be separate from project management to ensure independence. Causes of software errors Software errors can be classified into the following categories: (1) Faulty definition of requirements: faulty definition of requirements, usually prepared by the client, is one of the main causes of software errors, erroneous definition of requirements, absence of vital requirements, incomplete definition of requirements, inclusion of unnecessary requirements, functions that are not expected to be needed in the near future (2) Client–developer communication failures: Misunderstandings resulting from defective client– developer communication are additional causes for the errors that prevail in the early stages of the development process (3) Deliberate deviations from software requirements: The developer reuses software modules taken from an earlier project without sufficient analysis of the changes and adaptations needed to correctly fulfill all the new requirements; due to time or budget pressures, the developer decides to omit part of the required functions in an attempt to cope with these pressures (4) Logical design errors Cont… (5) Coding errors (6) Non-compliance with documentation and coding instructions (7) Shortcomings of the testing process (8) Procedure errors (9) Documentation errors Importance of Quality Management - Software quality management processes must address how well software products will satisfy customer and stakeholder requirements It can help identify quality issues Eliminate unnecessary activities Close gaps in performance Classification of Quality requirements Classifications of software requirements into software quality factors are as follows: a) Product operation factors: Correctness, Reliability, Efficiency, Integrity, Usability. b) Product revision factors: Maintainability, Flexibility, Testability c) Product transition factors: Portability, Reusability, Interoperability Product operation software quality factors Correctness requirements are defined in a list of the software system’s required outputs
Reliability requirements deal with failures to provide service. They
determine the maximum allowed software system failure rate, and can refer to the entire system or to one or more of its separate functions. Cont… Efficiency requirements deal with the hardware resources needed to perform all the functions of the software system in conformance to all other requirements. Integrity requirements deal with the software system security, that is, requirements to prevent access to unauthorized persons, to distinguish between the majority of personnel allowed to seethe information and a limited group who will be allowed to add and change data. Usability requirements deal with the scope of staff resources needed to train a new employee and to operate the software system. Product revision software quality factors Maintainability requirements determine the efforts that will be needed by users and maintenance personnel to identify the reasons for software failures, to correct the failures, and to verify the success of the corrections. The capabilities and efforts required to support adaptive maintenance activities are covered by the flexibility requirements. These include the resources (i.e. in man-days) required to adapt a software package to a variety of customers of the same trade, of various extents of activities, of different ranges of products and so on. Testability requirements deal with the testing of an information system as well as with its operation. Product transition software quality factors Portability requirements tend to the adaptation of a software system to other environments consisting of different hardware, different operating systems, and so forth. Reusability requirements deal with the use of software modules originally designed for one project in a new software project currently being developed. Interoperability requirements focus on creating interfaces with other software systems or with other equipment firmware (for example, the firmware of the production machinery and testing equipment interfaces with the production control software). Interoperability requirements can specify the name(s) of the software or firmware for which interface is required. They can also specify the output structure accepted as standard in a specific industry or applications area. Software Quality Architecture SQA system always combines a wide range of SQA components, all of which are employed to challenge the multitude of sources of software errors and to achieve an acceptable level of software quality. SQA system components can be classified into six classes: 1) Pre-project components: To assure that a) The project commitments have been adequately defined considering the resources required, the schedule and budget; and b) The development and quality plans have been correctly determined. 2) Components of project life cycle activities assessment: The project life cycle is composed of two stages: the development life cycle stage and the operation–maintenance stage Software Quality Architecture (Cont…) -The development life cycle stage components detect design and programming errors. Its components are divided into the following sub-classes: Reviews, Expert opinions, Software testing. 3) Components of infrastructure error prevention and improvement: Eliminate or at least reduce the rate of errors, based on the organization’s accumulated SQA experience. 4) Components of software quality management: Control of development and maintenance activities and the introduction of early managerial support actions that mainly prevent or minimize schedule and budget failures and their outcomes 5) Components of standardization, certification, and SQA system assessment 6) Organizing for SQA – the human components 9.3 Configuration management and its importance in software engineering Configuration management (CM) is the discipline of controlling the evolution of complex systems; software configuration management (SCM) is its specialization for computer programs and associated documents. SCM differs from general CM in the following two ways. i) Software is easier to change than hardware and it therefore changes faster. Even relatively small software systems, developed by a single team, can experience a significant rate of change, and in large systems, such as telecommunications systems, the update activities can totally overwhelm manual configuration management procedures. ii) SCM is potentially more automatable this is because all components of a software system are easily stored on-line. CM for physical systems is hampered by having to handle objects that are not within reach of programmable controls Importance of software configuration management Manages simultaneous update of the same component by different persons in the configuration management process. Keeping track of what has been done. Called change tracking by the different persons involved in the process. Facilitates team coordination. Reduced redundant work. Defect tracking. Helps in building management; managing tools used in builds. Chapter Question 1) Explain the controls used in the quality management process of a software. 2) Explain the techniques used to maintain software’s. 3) What is the importance of configuration management, quality management in the software engineering process?
Essential Managed Healthcare Training for Technology Professionals (Volume 2 of 3) - Bridging The Gap Between Healthcare And Technology For Software Developers, Managers, BSA's, QA's & TA's