Presentation on theme: "Software Quality Seung Yang CS 525 Software Engineering II Dr. Sheldon X. Liang."— Presentation transcript:
Software Quality Seung Yang CS 525 Software Engineering II Dr. Sheldon X. Liang
Sources Steve McConnell’s Articles Upstream Decisions, Downstream Costs Teaching Programming Principles, Not “Tools and Tips” The Power of Process Software Quality at Top Speed Code Complete (Ch 20)
Agenda Characteristics of Software Quality Techniques for Improving Software Quality Relative Effectiveness of Quality Techniques When to Do Quality Assurance The General Principle of Software Quality
Characteristics of Software Quality External Quality Characteristics - Characteristics that a user of the software product is aware of Internal Quality Characteristics - Characteristcs that programmers care about
External Quality Characteristics Correctness - Free from faults in its specification, design and implementation Usability - Easy to learn and use Efficiency - Minimal use of system resources Reliability - A long mean time between failures
External Quality Characteristics - Continued Integrity - Security, preventing unauthorized access Adaptability - The extent to which a system ca be used, without modification Accuracy - Free from errors (outputs) Robustness - A system continues to function in the presence of invalid inputs or stressful environmental conditions
Internal Quality Characteristics Maintainability - Easy to change and add capabilities Flexibility - The extent to which you can modify a system for uses or environments other than those for which it was designed Portability - The ease with which you can modify a system to operate in a different environments. Reusability - Can a part of system be used in other systems?
Internal Quality Characteristics - Continued Readability - Easy to read and understand the source code of a system Testability - The degree to which you can unit-test and system-test a system Understandability - The ease with which you can comprehend a system at both the system-organization and detailed-statement levels
Relationships among the Quality Characteristics
Techniques for Improving Software Quality Software-quality objectives - Set explicit quality objectives from characteristics Explicit quality-assurance activity - Set explicit activities to achieve the Software-quality objectives (ex. No short-cut when coding) Testing strategy Software-engineering guidelines - Control the technical character of the software
Techniques for Improving Software Quality - continued Informal technical reviews - desk-checking the design or dode or walking through the code with a few peers. Formal technical reviews - Is it “good enough” for next stage? “Good enough” means the most critical 20% of the requirements or architecture has been sketched out. External audits
Techniques for Improving Software Quality - continued Development Process Change-control procedures -Uncontrolled requirements changes can result in disruption to design and coding Measurement of results - Measurement tells you whether your plan is a success or a failure and allow you to vary your process in a controlled way to see how it can be improved. Prototyping
Relative Effectiveness of Quality Techniques Percentage of Defects Detected - Cumulative defect-detection efficiency is significantly higher than that of any individual technique.
Relative Effectiveness of Quality Techniques - continued Cost of Finding Defects Cost of Fixing Defects
When to Do Quality Assurance Defects creep into software at all stages Emphasize quality assurance work in thee early stages and through the rest of the project
The General Principle of Software Quality The industry-average productivity for a software product is about 10 to 50 of lines of delivered code per person per day (including all non-coding overhead) A study at IBM “Software projects with the lowest levels of defects had the shortest development schedules and the highest development productivity…. Software defect removal is actually the most expensive and time- consuming form of work for software (Jones 2000)”
The General Principle of Software Quality - continued Higher quality (in the form of lower defect rates) and reduced development time.
Summary Quality assurance in the software area is process-oriented. Process reduces cost, and increases productivity.