ISD Lecture 12 Software quality assurance. Developing systems that works Flashcards
Quality
Quality can be hard to explain!
There is many views of what quality is.
The transcendental view
Quality is something that you immediately recognize, but cannot explicitly define
The user view
Quality in terms of an end-user’s specific goals. If a products meets those goals, it exhibits quality.
Manufacturer’s view
Quality in terms of the original specification of the product. If the product conforms to the specification, it exhibits quality
Product view
Quality can be tied to inherent characteristics of a product
Value-based view
Quality based on how much a customer is willing to pay for a product.
Software quality
An effective software process applied in a manner that creates a useful product that provides measurable value for those who produce it and those who use it.
Cost of Quality
there are three types of cost: prevention, internal failure and external failure. The later an error is identified, the more costly it is.
Software quality assurance:
Which basically is an independent control of software engineering activities to verify compliance with the defined software process.
Testing
is the process of exercising a program with the specific intent of finding errors prior to delivery to the end user.
Verification
Evaluating whether “we are building the product right?”
refers to the set of tasks that ensure that software correctly implements a specific function.
Validation
Evaluating whether “we building the right product?“
refers to a different set of tasks that ensure that the software that has been built is traceable to customer requirements.
SQA (Model)
What is Quality ->
Whats the cost of quality? ->
How can we prevent errors: Effective software development process,
How can we create errors: In-effective software development process,
How can we find errors: Review and test,
How can we manage SQA: Project-level & Corporate-level
How to make a effective software process
making quality less dependent on individuals
Establish an supporting infrastructure,
management aspect of process,
software engineering practices,
umbrella activities
What is a useful product?
Delivers the needed content:
With no (important) errors:
Satisfies explicit requirements:
Satisfies implicit requirements:
Where does SQA adds value?
The software organization:
gains added value because high quality software requires less maintenance effort, fewer bug fixes, and reduced customer support.
The user community:
gains added value because the application provides a useful capability in a way that expedites some business process.
The end result is:
greater software product revenue,
better profitability when an application supports a business process, and
improved availability of information that is crucial for the business.
The software quality dimensions
Performance quality,
Does the software deliver all content, functions, and features that are specified as part of the requirements model in a way that provides value to the end-user?
feature quality,
Does the software deliver all content, functions, and features that are specified as part of the requirements model in a way that provides value to the end-user?
reliability,
Does the software deliver all features and capability without failure?
conformance,
Does the software conform to local and external software standards that are relevant to the application?
durability,
Can the software be maintained (changed) or corrected (debugged) without the inadvertent generation of unintended side effects?
serviceability,
Can the software be maintained (changed) or corrected (debugged) in an acceptably short time period.
aesthetics,
perception
Describe McCall’s Quality Factors
Product revision (Maintainabliity, Flexibility, Testability) ->
Product Transition (Portabability, Reuseability, Interoperability) ->
Product Operation (Correctness, Reliability, Usability, Security, Efficiency)
How to measure quality
Make it specific
Use some kind of hard metrics
What kind of dilemma is there with software quality
The cost
If you produce a software system that has terrible quality, you lose because no one will want to buy it.
If on the other hand you spend infinite time, extremely large effort, and huge sums of money to build the absolutely perfect piece of software, then it’s going to take so long to complete and it will be so expensive to produce that you’ll be out of business anyway.
Either you missed the market window, or you simply exhausted all your resources.
What is good enough software and what can be a argument against good enough?
Good enough software delivers high quality functions and features that end-users desire, but at the same time it delivers other more obscure or specialized functions and features that contain known bugs.
. If you deliver a “good enough” (buggy) product, you risk permanent damage to your company’s reputation.
it can be negligent and open your company to expensive litigation.