【Engineering】Software Quality

Posted by 西维蜀黍 on 2018-11-15, Last Modified on 2024-05-02

Defect

A defect in a software system is a quality level that is not acceptable.

Quality levels need to be elicited and negotiated.


Discussion

If your program crashes then it

  • definitely has a bug.
  • is highly likely to have a bug.
  • may or may not have a bug.

If your program crashes, and the cause is in your code, then it

  • definitely has a bug.
  • is highly likely to have a bug.
  • may or may not have a bug.

Let it carash to trigger the bug -> it is a feature


Quality Assurance

  • Defect Avoidance or Prevention
  • Defect Detection (find) and Rectification (fix)

Points of Quality

  • Defect prevention design care, code review
  • Defect appraisal detection, triaging
  • Internal rectification
  • External rectification

Classification of Software Qualities

1 External Qualities

External Qualities: what a user of software product is aware of.

Funtional Qualities = What the software does

Definition:

  • behavioural
  • What does it accomplish for the user
  • primary requirements

Component:

  • Correctness
    • freedom form faults in specification, design, and implementation (Implementation and design could be perfect, but if there was a spec misunderstanding, ambiguity, or change, the software will not be correct)
    • does the job
    • fulfills all the use cases or user stories
  • Accuracy
    • quantitative outputs
  • Adaptability - the extent to which a system can be used, without modification

Non-Functional Qualities = How it does it

  • Usability - can the user make it go (easy for users to learn and use a system)
  • Efficiency - minimal use of system resources, including execution time (write & read time) & taken space (memory & disk)
  • Reliability - perform its required functions under stated conditions whenever required-having a long mean time bwteen failures
  • Integrity
  • prevent unauthorized or improper access to its programs and its data
  • Robustness
  • behaves well on strange or invaild input, and stressful environmental conditions

All these above contribute to the user experience (UX)!

  • quality of service
  • ecological features

2 Internal Qualities

Internal Qualities: what a developer directly experiences while working on that software

Qualities for Modification

  • Maintainability
  • the ease with which you can modify a software system to change or add capabilities, improve performance, or correct defects
  • Flexibility
  • the extend to which you can modify a system for uses or environments
  • Portability
  • the ease with which you can modify a system to operate in an environment different from now
  • Reusability
  • the ease to which and the ease with which you can use parts of a system in other systems

Qualities for Comprehension

  • Readability

  • the ease with which you can read and understand the source code of a system (esp at the detailed-statement level)

  • Understandability

  • the ease with which you can comprehend a system at both the system-organizational and detailed-statement levels

  • Testability

  • the degree to which you can unit-test and system-test a system

  • the degree to which you can verify that the system meets its requirements

[Testability] Determining Factor:

  • Relative to a target quality
    • A system could be highly tastable for correctness, lowly testable for efficiency
  • Partly determined by test infrastructure
  • Low testability blocks knowing qualities

3 Relationship