Requirements Gathering using Object- Oriented Models Software Quality Assurance What is software? According to the IEEE (Institute of Electrical and Electronics Engineers) A software is: Programs, procedures, as well as possibly documentation and data related to the operation of a computer system. 1
Software errors, faults and failures Bug / fault / fault as a result of human errors resulting in non-compliance and manifesting as a failure during execution (system reliability / availability). 4 Software Development Variables $$$ Quality Features Time Time on Quality Time on Features $$$ on quality $$$ on features 2
4 Software Development Variables NASA $$$ Quality Features Google.com $$$ Time Quality Features Time Analysis of the cost of quality The cost of quality is the total amount spent of a company to achieve and deal with the quality of its product. This includes the company's investments in continuous quality improvement and its expenses resulting from the inadequate quality of its products. The objective of quality assurance is to help the company to minimize its cost of quality. 3
Costs related to quality Prevention The associated costs in order to avoid customer dissatisfaction. Includes errors or weaknesses in software, design, documentation and support. Internal faults The cost of dealing with errors discovered during development and commissioning. Note that the company loses money as a user who can not do the job properly and as a developer who must review and correct the anomalies. Evaluation Cost of inspections (tests, inspections, audits, etc.). External faults The cost of processing defects that affect customers after the product is delivered. Examples of cost of quality Prevention Staff training Requirements analysis & early prototyping Fault-tolerant design Defensive programming Usability analysis Clear specification Accurate internal documentation Pre-purchase evaluation of the reliability of development tools Internal faults Regression testing Wasted in-house user time Wasted tester time Wasted writer time Wasted marketer time Wasted advertisements Direct cost of late shipment Opportunity cost of late shipment Evaluation Design review Code inspection Glass box testing Black box testing Training testers Beta testing Usability testing Pre-release out-of-box testing by customer service staff External faults Lost sales and lost customer goodwill Technical support calls Writing answer books (for Support) Investigating complaints Supporting multiple versions in the field Refunds, recalls, warranty, liability costs Interim bug fix releases Shipping updated product Discounts to resellers 4
Cost of quality for the customer Seller: external costs Expenditure absorbed by the seller who delivers a defective product. Loss of sales and customer base Technical support Write technical documentation and directive Investigating complaints Refund, reminders, warranty, prosecution Government Inquiry Support for different versions of software Deployment of patches Delivery charges for new releases Reputation and tarnished image Discount to dealers Customer: costs of poor quality (costs external to the seller) Expenses absorbed by the customer buying a defective product. Loss of time and energy Loss of data Loss of business Embarrassment Departure of frustrated employees Replacement cost of the product System Reconfiguration Support costs Injury / Death Relationship between development processes and defects * Most defects are introduced early 5
What is software quality? Compliance with requirements The narrowest sense of software quality No bugs Low defects ratio (number of defects / unit of size) High reliability (number of failures per n hours of operation) Mean Time to Failure (MTTF) probability of trouble-free operation in a specific time. What is software quality? According to Pressman, software quality is: Compliance with explicit functional and performance requirements, explicitly documented development standards, and implicit features expected of all professionally developed software. 6
Quality assurance vs. quality control: ISO 8402 QUALITY ASSURANCE : All of the pre-established and systematic activities implemented as part of the quality system, and demonstrated as necessary, to give the appropriate confidence that an entity will meet the quality requirements. QUALITY CONTROL : Operational techniques and activities used to meet quality requirements. Quality Assurance Is done during the cycle of realization Focuses on the eradication of causes This is done on the process Uses the measure to eliminate the causes of non-quality Agent of Change Quality encrypted and paid Prevention 7
The difference....qa / QC Quality control is carried out on the product Quality Assurance is done on the process Quality control is done at the end of the stage Quality Assurance takes place throughout the process Quality control adds nothing to the value of the product The QA adds value throughout the process QC is a stage of QA QA is often outside the development process QC is embedded in the development process The difference....qa / QC Quality Control Correction At the end of the cycle An action on the effects of the cycle Is done on the PRODUCT Standards, tolerance Notion policy if made by a third party Quality assurance Prevention Is done during the cycle of realization This is done on the PROCESSS Focuses on eradicating causes of non-compliance Uses the measure to eliminate the causes of non-quality Agent of Change 8
Software Quality Assurance Comprehensive life-cycle approach to each aspect of the software development process. Includes a comprehensive set of quality objectives: Measurable quality attributes (quality metrics) to assess progress towards objectives, Quantitative objectives of certification for all parts of the development process Take into account: Customer product requirement; Quality requirements; And corporate quality requirements. Software Quality Assurance Requirements Verification Architecture Verification Design Verification Validation Code Verification 9
Software Quality Assurance Includes Preventing erros and bugs Activities: training, planning, simulation Detecting and Finding faults in a software interface Activities: inspections, testing (validation), measurement Troubleshooting isolation, correction, checking of corrections Activities: bug isolation, bug analysis, regression testing Quality Factors ISO 9001:2000 groups the quality factors of a software into 6 main areas: Functionality Robustness Usability Efficiency Maintainability Portability 10
Quality Factors: Functionality Compliance with requirements Accuracy Interoperability Compliance with standards and regulations in the functional area Security Functionality The compliance of the software with the needs is an attribute referring to the respect of the explicit or implicit needs of the users. Accuracy is an attribute of the software relating to the production of just or agreed results or effects. Interoperability is an attribute that relates to the ability of the software to interact with other data systems. Compliance with standards is an attribute that refers to compliance with conventions, rights regulations, etc. Security is an attribute that refers to the ability to prevent unauthorized access (accidental or deliberate) to programs, software, and data. Quality Factors: Robustness Maturity Fault Tolerance Recovery after a breakdown Robustness Maturity is an attribute that relates to the frequency of failures due to software defects. Fault tolerance is an attribute that relates to the ability to maintain a given level of service in the event of a software defect or a violation of its interface. Recovery capability after a failure is an attribute that relates to capabilities to restore its level of service and to restore information directly affected in the event of failure and the time and effort required to do so. 11
Quality Factors: Usability Ease of understanding Ease of learning Ease of use Usability The ease of understanding is an attribute of the software on the effort that must be made by the user to recognize its logic and its implementation. Ease of learning is an attribute of the software about the effort the user must make to learn how to use it. The ease of use of the software is an attribute relating to the effort that the user must make to operate and control its operation. Quality Factors: Efficiency Reactivity Resource Consumption Efficiency The reactivity of the software is an attribute relating to the response and processing times as well as the flows during the execution of its function. The resource consumption of the software is an attribute relating to the amount of resources used and the duration of the execution of its function. 12
Quality Factors: Maintainability Ease of analysis Ease of modification Stability Ease of testing Maintainability The ease of analysis of the software is an attribute relating to the effort required to diagnose deficiencies or causes of failure or to modify the parts to be modified. The ease of modification of the software is an attribute relating to the effort required to modify, remedy faults or change environment The stability of the software is an attribute on the risk of the unexpected effects of the changes. The test facility is an attribute on the effort required to validate changes to the software. Quality Factors: Portability Adaptability Ease of installation Compliance with Technical Standards Ease of replacement Portability The ease of adaptation of the software is an attribute relating to the possibility of its adaptation to different given environments without resorting to other actions or means than those provided for this purpose. The ease of installation is an attribute of the effort required to install the software in a given environment. The compliance of the software with the technical standards is an attribute according to which it respects the application of norms or conventions relative to the portability. Ease of software replacement is an attribute of the ability and effort to use it in place of another given software component in the same environment. 13