[comp.software-eng] SE Terms Confusion

sgf0z@watt.acc.Virginia.EDU (Steven Glenn Fox) (04/11/91)

I have been fighting with some SE terms recently and
am looking for some help in defining them and how
they relate to each other.  The terms I am referring to are:

Software Quality (& Software Quality Assurance)
Software Risk
Software Testing
Verification and Validation
Software Reliability

To get the ball rolling, here are some of my observations:
1. Software Reliability is one component of Software Quality.
2..V&V is essentially synonymous to Software Testing.
3..Software Risk is the risk of a software project not
    being completed, e.g. not fulfilling its specifications?  
    Does this make it a component of Software Reliability?
4. Software Quality is measuring quantitatively the quality
    of a piece of software on a number of attributes as
    defined by the specific project.  These attributes often
    are similar across many projects.

Thanks.
------------------
Steven G. Fox				sgf0z@virginia.edu
University of Virginia			uunet!virginia!sgf0z
Department of Systems Engineering
Charlottesville, Va 22903		(804) 982-2073

song@berault.ics.uci.edu (Xiping Song) (04/12/91)

In article <1991Apr11.144028.20787@murdoch.acc.Virginia.EDU> sgf0z@watt.acc.Virginia.EDU (Steven Glenn Fox) writes:
>I have been fighting with some SE terms recently and
>am looking for some help in defining them and how
>they relate to each other.  The terms I am referring to are:
>
>Software Quality (& Software Quality Assurance)
>Software Risk
>Software Testing
>Verification and Validation
>Software Reliability
>
>To get the ball rolling, here are some of my observations:
>1. Software Reliability is one component of Software Quality.
>2..V&V is essentially synonymous to Software Testing.

 It is said that testing is a vehicle to validate software.

shimeall@taurus.cs.nps.navy.mil (timothy shimeall) (04/12/91)

In article <1991Apr11.144028.20787@murdoch.acc.Virginia.EDU> sgf0z@watt.acc.Virginia.EDU (Steven Glenn Fox) writes:
>I have been fighting with some SE terms recently and
>am looking for some help in defining them and how
>they relate to each other.  The terms I am referring to are:
>
>Software Quality (& Software Quality Assurance)
>Software Risk
>Software Testing
>Verification and Validation
>Software Reliability

May I suggest that a good starting place for defining these terms is
NOT coming up with new defintions, but rather examining existing
defintions.  A good place to start is the ANSI/IEEE Standard
Glossary of Software Engineering Terminology (Std. 729-1983 or a
revision), published by IEEE Computer Society Press.  One dictionary
can save a LOT of confusion.

All of the terms you list above are included, except software risk.
For that, may I suggest Barry Boehm's tutorial?  (By the way, the
standard technical definition of risk is something like "the probability 
of a given cost over a given period of time", you may wish to adapt
that for software...)
				Tim
-- 
Tim Shimeall ((408) 646-2509)

jcardow@afit.af.mil (James E. Cardow) (04/12/91)

sgf0z@watt.acc.Virginia.EDU (Steven Glenn Fox) writes:

>I have been fighting with some SE terms recently and
>am looking for some help in defining them and how
>they relate to each other.  The terms I am referring to are:

>Software Quality (& Software Quality Assurance)
>Software Risk
>Software Testing
>Verification and Validation
>Software Reliability

>To get the ball rolling, here are some of my observations:
>1. Software Reliability is one component of Software Quality.

Simplistic, but okay, I'll agree.  If a definition is what your after, try
Musa's "the probability of failure-free operation of a computer program for
a specified period of time."  Whatever definition you choose, it needs to 
be tied to performing as specified (note, that says nothing about the 
reliability of the spec.)


>2..V&V is essentially synonymous to Software Testing.

Sorry, can't agree with this one.  Software Testing is a critical element of 
V&V, but then so is the review process.  V&V definition in IEEE Std are 
pretty good.

>3..Software Risk is the risk of a software project not
>    being completed, e.g. not fulfilling its specifications?  
>    Does this make it a component of Software Reliability?
 
Okay, this takes a little more thinking.  Risk, as I see it, is the risk of 
not meeting the customer's value expectations for the software (note, you
very well may be the customer)  So risk is a composite of cost, schedule, 
performance (the machine and the people), technology innovation, etc, etc.
One think I try to get across to my students is that risk is not all bad.  Risk
taking is what makes heroes, provided you can control and manage the level
of risk.

>4. Software Quality is measuring quantitatively the quality
>    of a piece of software on a number of attributes as
>    defined by the specific project.  These attributes often
>    are similar across many projects.

Well, I think the attributes are pretty well defined.  The problem is, which
are important for which project.  For instance, portability may be a critical
attribute in one project and totally trivial in another.  


Jim Cardow
Air Force Institute of Technology
Wright Patterson AFB, OH
jcardow@blackbird.afit.af.mil

windy@pensoft.uucp (Windflower Gilbert) (04/12/91)

I will explain the terms in question as I understand them . I do QA for a 
living. The quoted definitions are from the IEEE Standard Glossary of Software 
Engineering Terms.

	"Software Quality: The totality oms to refer to robustness, 
	lack of bugs, and other general quality statements about software.
	
Software Risk probably refers to criticality. The Criticality of software is a 
function of  whether or not the failure of the software could cause loss of 
life or significant financial loss. If software is "Critical" then it must be 
tested much more thoroughly. Beyond the point of diminishing returns for most 
software.
	
Software Testing is exercising software in some predefined way with a specific 
focus to locate defects.
	
	"Verification : The process of determining whether or not the 
	products of a given phase of the software development cycle 
	fulfill the requirements established during the previous phase"
	
	"Validation: The process of evaluating software at the end of 
	the software development process to ensure compliance with 
	software requirements"
	
V&V covers the whole development cycle. It may include things like prototype 
evaluations, and code inspections in addition to testing.
	
	"Software Reliability: The probability that software will not 
	cause the failure of a system for a specified time under 
	specified conditions."
	
Generally, Software Reliability refers to extended periods of time. Reliability
tested is conducted for increasing amounts of time, and often includes stress 
intended to resemble a "real implementation".

I think a brief summary of the formal approach will serve to clarify. If I am 
responsible for all aspects of software quality for a particular product, I 
will write the following documents in the order given.

A Software Quality Assurance Plan  that will describe some aspects of the 
development process such as source code control, leadership responsibility 
and what design related documents are to be written . It will also identify 
what  V&V methods will be implemented, whether or not the software is critical 
and how the development cycle relates to the QA.

A V&V plan that will describe in a fair amount of detail each of the methods 
to be used. This may include code inspection approach, usability evaluation of 
a prototype,  who will do unit testing, and types of software testing to be 
implemented (such as reliability testing). It will also identify what test 
plans will be written.

A Test Plan may cover all or part of a product and details the testing of that 
part.  For complex projects, there may be another layer here.

Windflower Gilbert
Pencom Software
pensoft!windy@cs.utexas.edu
	

cole@farmhand.rtp.dg.com (Bill Cole) (04/13/91)

|> I have been fighting with some SE terms recently and
|> am looking for some help in defining them and how
|> they relate to each other.  The terms I am referring to are:
|> 
|> Software Quality (& Software Quality Assurance)
|> Software Risk
|> Software Testing
|> Verification and Validation
|> Software Reliability
|> 
|> To get the ball rolling, here are some of my observations:
|> 1. Software Reliability is one component of Software Quality.
|> 2..V&V is essentially synonymous to Software Testing.
|> 3..Software Risk is the risk of a software project not
|>     being completed, e.g. not fulfilling its specifications?  
|>     Does this make it a component of Software Reliability?
|> 4. Software Quality is measuring quantitatively the quality
|>     of a piece of software on a number of attributes as
|>     defined by the specific project.  These attributes often
|>     are similar across many projects.
|> 

From the bottom up:
On what basis do you measure released software?  You say 'attributes' but that's very non-specific.
Weinberg states that the first measure of quality is whether of not the software does what we say it
does.  In very large software projects (my area of inquiry is database software), what attributes should
be measured?  Let's assume that I've tested it thoroughly and gone through the V&V process.  Now, I've
got several thousand users out there running this software and occasionally finding problems.  Do I count
the number of reported problems? or database corruptions?  Or do I count some specific class of reported
problems as bugs?  I use the reported problems as a basis to know 'software quality', but I get lots of
arguments from the academicians and pedagogues.

Risk can have the component of what-happens-if-we-don't-do-the-project which can be measured against the
rate of return for having done the project.  The risk aspect can also include (as part of the quality
issue) a statement of how-good-is-good-enough?  If you test a product for three months and find 100 bugs
of a non-serious nature, does it make sense to spend another three months looking for bugs?  What's the
risk associated with shipping software in its current state.

V&V is NOT synonymous with software testing.  These are purely positive tests; testing includes negative
tests as well.  In negative testing, you try to break the software, go beyond limits or look for limits.

Reliability is, of course, a component of Quality.  But who measures it?  If you have 1000 users and 900
have no problem but 100 have varying problems, you have 10% of your user base saying the software is
useless because of its reliability while 90% are happy/satisfied/not disgruntled.

The views are my own,
/Bill

cole@farmhand.rtp.dg.com (Bill Cole) (04/13/91)

 
|> May I suggest that a good starting place for defining these terms is
|> NOT coming up with new defintions, but rather examining existing
|> defintions.  A good place to start is the ANSI/IEEE Standard
|> Glossary of Software Engineering Terminology (Std. 729-1983 or a
|> revision), published by IEEE Computer Society Press.  One dictionary
|> can save a LOT of confusion.
|> 
|> All of the terms you list above are included, except software risk.
|> For that, may I suggest Barry Boehm's tutorial?  (By the way, the
|> standard technical definition of risk is something like "the probability 
|> of a given cost over a given period of time", you may wish to adapt
|> that for software...)
|> 


The problem with definitions is that they lie there on a piece of paper and don't
mean anything until they're applied.  I would agree that a definition is a fine
start, but the definition IS ONLY A START.  How a definition is implemented in some
specific task is the real definition.  

My own are the views,
/Bill