Chapter 2 What is software quality ? Outline • • • • • • What is software? Software errors, faults and failures Classification of the causes of software errors Software quality – definition Software quality assurance – definition and objectives Software quality assurance and software engineering Software is: (system analyst/tester/manager/programmer/ document expert/client) - Computer programs, - Procedures, - Associated documentation, and - Data pertaining to the operation of a computer system. Software development process software error software fault software failure Loop bounds Overflow Underflow Recursive calls Input format Synchronization Memory leak An Example: The nine causes of software errors: 1. Faulty requirements definition (stakeholders: client/analyst) - erroneous, absence, incomplete, unnecessary 2. Client-developer communication failures (developer) - misunderstanding/lack of attention (instructions, change, client responses) 3. Deliberate deviations from software requirements - reuse module w/o adaption, omit, unapproved improvement, disregard “minor” change 4. Logical design errors (analyst/architect/programmer) - erroneous algorithms, process sequencing errors, boundary conditions, omission of system states & definitions to legal/illegal operations 5. Coding errors (programmer) - misunderstanding design documentation, errors in using CASE tools 6. Non-compliance with documentation and coding instructions (programmer) - waste time, more difficulty to understand, prone to error, hard to review, no efficiency, difficulty for maintenance 7. Shortcomings of the testing process (tester) - incomplete test plan, failure to report detected errors, incomplete correction, inappropriate indications of the reasons Determining the test methodology Planning the tests Designing the tests Performing the tests (implementation) Determining the test methodology The appropriate required quality standard The software testing strategy Planning the tests Unit tests - modules Integration tests - subsystems System tests – entire software system What to test? Which sources to use for test cases? Who is to perform? Where? When to terminate? Test design Detailed design and procedures for each test Test case database/file 8. User interface and procedure errors 9. (interface designer) Documentation errors - requirement document, design document, test document, user manuals (functions missing, error explanation and instruction, listing of non-existing functions) Software quality is: (1) The degree to which a system, component, or process meets specified requirements. (2) The degree to which a system, component, or process meets customer or user needs or expectations. Software quality is : Conformance to explicitly stated functional and performance requirements, explicitly documented development standards, and implicit characteristics that are expected of all professionally developed software. Software quality assurance is: 1. A planned and systematic pattern of all actions necessary to provide adequate confidence that an item or product conforms to established technical requirements. 2. A set of activities designed to evaluate the process by which the products are developed or manufactured. Contrast with: quality control. Software quality assurance is: A systematic, planned set of actions necessary to provide adequate confidence that the software development process or the maintenance process of a software system product conforms to established functional technical requirements as well as with the managerial requirements of keeping the schedule and operating within the budgetary confines. (1) Assuring an acceptable level of confidence that the software will conform to functional technical requirements. (2) Assuring an acceptable level of confidence that the software will conform to managerial scheduling and budgetary requirements. (3) Initiation and management of activities for the improvement and greater efficiency of software development and SQA activities. (1) Assuring an acceptable level of confidence that the software maintenance activities will conform to the functional technical requirements. (2) Assuring an acceptable level of confidence that the software maintenance activities will conform to managerial scheduling and budgetary requirements. (3) Initiate and manage activities to improve and increase the efficiency of software maintenance and SQA activities. Software quality assurance and software engineering (1) The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1) - The characteristics of SE make the SE environment (methodologies and tools) a good infrastructure for achieving SQA objectives.