PHILIPPINES :: MALAYSIA :: VIETNAM :: INDONESIA :: INDIA :: CHINA
Learning Bites • Understand what is a software and identify software errors, faults and failures; • Determine the relationship between software errors, faults and failures in software development process and their causes; • Learn and understand software quality and its importance; • Realize software quality assurance and its objectives to development and maintenance activities; • Appreciate software quality verification and validation including defect prevention, detection and removal; and • Learn to manage software quality components through quality management standards and other project process standard.
What is Software? “Computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system.” Computer programs Documentation Components of Software Data necessary Procedures for operating the software system
What are software errors, faults and failures? Software failures lies in a software error made by a programmer. Error can be grammatical error or a logical error. Not all software errors become software faults. A software error can cause improper functioning of the software in general or in a specific application. What is the relationship between software faults and software failures? Do all software faults end with software failures? A software fault becomes a software failure only when it is “activated” – when the software user tries to apply the specific faulty application.
Software Development Process Software Development Process software error software fault software failure An illustration of the relationships between software errors, faults and failures. The development process yields 17 software errors, only eight of which become software faults. Of these faults, only three turnout to be software failures. Developers and users have different views of the software product regarding its internal defects. While developers are interested in software errors and faults, their elimination and the way to prevent their generation, software users are worried about software failures
What are the causes of software errors? Faulty definition requirements Client-developer communication failures Deliberate deviations from software requirements Logical design errors Coding errors. Non-compliance with documentation and coding instructions Shortcoming of the testing process Procedure errors Documentation errors
What is Software Quality? • The degree to which a system, component, or process meets specified requirements • The degree to which a system, component, or process meets customer or user need or expectations • Conformance to explicitly stated functional and performance requirements, explicitly documented development standards and implicit characteristics that are expected of all professionally developed software
Why Software Quality? • Higher reliability resulting to greater customer satisfaction; • Ensure that software is conformance to certain requirements and standards; • Maintenance cost of the software is gradually reduced as the software requires less modification after SQA; and • SQA procedures would identify more errors before the software gets released resulting to overall reduction of the life cycle cost.
What is Software Quality Assurance? • A planned and systematic pattern of all actions necessary to provide adequate confidence that an item or product conforms to established technical requirements. • A set of activities designed to evaluate the process by which the products are developed or manufactured. Contrast with: quality control. • A systematic, planned set of actions necessary to provide adequate confidence that the software development process or maintenance process of a software system product conforms to established functional technical requirements.
Why Software Quality Assurance? • Ensure acceptable levels of confidence, conformance to functional technical requirements. • Ensure acceptable levels of confidence, conformance to managerial requirements of scheduling and budgets. • Initiating and managing activities for the improvement and greater efficiency of software development and SQA activities.
Objectives of SQA in Development (process-oriented) Assuring an acceptable level of confidence that the software will conform to functional technical requirements. Assuring an acceptable level of confidence that the software will conform to managerial scheduling and budgetary requirements. Initiation and management of activities for the improvement and greater efficiency of software development and SQA activities.
Objectives of SQA in Maintenance (product-oriented) 1. Assuring an acceptable level of confidence that the software maintenance activities will conform to the functional technical requirements. Assuring an acceptable level of confidence that the software maintenance activities will conform to managerial scheduling and budgetary requirements. Initiate and manage activities to improve and increase the efficiency of software maintenance and SQA activities.
Software Quality Verification and Validation Verification • Are we building the product right? Requirement verification • Performed at the end of a phase to ensure that requirements established during previous phase have been met. Architecting verification Validation • Are we building the right product? • Performed at the end of the Low Design verification development process to ensure compliance with product requirements. Coding verification validation
Software Quality Assurance also includes Defect prevention • Prevents defects from occurring in the first place • Activities: training, planning and simulation Defect detection • Finds defects in a software artifact • Activities: inspections, testing or measuring Defect removal • Isolation, correction, verification of fixes • Activities: fault isolation, fault analysis, regression testing
Typical Activities of a SQA Process Metrics and continuous improvement Process engineering and standards Dynamic testing Static code checking (inspection/reviews) Design Verification Requirements validation
Management of Software Quality Components Managerial of software quality components support the managerial control of software development projects and maintenance services. Control components include: Project progress control Software quality metrics Software quality costs Resource usage • Quality of software • Costs of control Schedules development and (prevention costs, Risk management maintenance activities appraisal costs, activities • Development team’s managerial preparation The budget productivity and control costs) • Help desk and • Costs of failure (internal maintenance team’s failure costs, external productivity failure costs and • Software faults density managerial failure costs) • Schedule deviations
Standards, Certification and Assessment Components Quality management standards – these standards focus on what is required and leave the decision about how to achieve it to the organization. Organizations that comply with quality achievement requirements can seek Software Quality certification. Examples are: • CMMI assessment standard • ISO 9001:2008 standard Project process standards – are professional standards that provide methodological guidelines for the development team. • IEEE 1012 standard – System and software verification and validation • ISO 12207 standard – Software lifecycle processes
The Software Quality Challenges The uniqueness of software product: • High complexity; • Invisibility of the product; and • Limited opportunities to detect defects (“bugs”) • only opportunity is Product development The environment in which software is developed: • Contracted; • Subjection to customer-supplier relationship; • Requirement for teamwork; • Need for cooperation and coordination with other development teams; • Need for interfaces with other software systems; • Need to continue carrying out a project while the team changes; and • Need to continue maintaining the software system for years.
Summary • Software quality management is concerned with ensuring that software meets its required standards • Quality assurance procedures should be documented in an organisational quality manual • Software standards are an encapsulation of best practice • Reviews are the most widely used approach for assessing software quality • Software measurement gathers information about both the software process and the software product • Product quality metrics should be used to identify potentially problematical components
Thank you very much! facebook.com/eccinternational linkedin.com/company/ecc-international eccinternational.wordpress.com