Post Midterm Flashcards
what are the three problem areas that contribute to “cost of poor software quality”
- cybercrime losses due to vulnerability
- salaries hover
- 20,000 per year on fixing bugs
What contributes to software quality?
- conforms to requirements
- does it do the job
- is it reliable and error free
- are the users happy with it
what are software quality attributes?
technical : correctness, reliability, capability, performance, maintainability
user : usability, installability, documentation, availability
How can we categorize quality attributes another way than technical or user?
Discernable at runtime or not:
discernable: performance, security, functionality, usability
not discernable: modifiability, portability, reusability, testability, integrity
What is correctness/accuracy?
lack of bugs or defects, measured by #bugs per line of code
what is reliability?
does not fail or crash often, measured in failures per line
what is capability?
does it do what it’s required to, measured in % of required operations implemented
what is maintainability?
is the software easy to change and adapt to new requirements, measured time/effort to add a new feature
what is performance
is it fast and small enough, seconds of CPU time
what is usability?
is it sufficient for the intended users, % of happy users with interface
what is installability?
convenient and fast to install, #install problems reported
what is documentation?
is well documented, % of users happy with documentation
what is availability?
is it easy to access and available when needed, % of users reporting access problems
how do you achieve quality?
plan it from the beginning, continuous monitoring
what are the quality assurance principles?
- know what you are doing
- current build, planning - know what you should be doing
- ues-cases, supplemental requirements, feedback, tests - know how to measure the difference
- require explicit measures, the four methods
what are the four quality assurance methods?
- formal methods
- math models, expensive, slow and careful - testing
- create explicit inputs and frameworks to exercise the software and measure success - inspection
- regular human reviews of requirements, design - metrics
- analyze or instrument code to measure a known set of simple properties
what is software testing?
process of exercising or evaluating a system/system component to verify that it satisfies specified requirements
what is validation?
the software does the right thing
what is verification?
software does the things right
what are the levels of specification
functional specifications
design specifications
detailed design specifications
what are functional specifications?
describe what the software should do, not how
what are design specifications?
describe the architecture of the design, describe components, code units
what are detailed design specifications?
describe how each component of the architecture is to be implemented
what is an error
discrepancy in code