sss ssss      rrrrrrrrrr
                      ssss    ss       rrrr   rrrr
                     sssss     s       rrrr    rrrr
                     ssssss            rrrr    rrrr
                      ssssssss         rrrr   rrrr
                          ssssss       rrrrrrrr
                    s      ssssss      rrrr  rrrr
                    ss      sssss      rrrr   rrrr
                    sss    sssss       rrrr    rrrr
                    s  sssssss        rrrrr     rrrrr


         +===================================================+
         +======= Testing Techniques Newsletter (TTN) =======+
         +=======           ON-LINE EDITION           =======+
         +=======            February 1996            =======+
         +===================================================+

TESTING TECHNIQUES NEWSLETTER (TTN), On-Line Edition, is E-Mailed
monthly to support the Software Research, Inc. (SR) user community and
provide information of general use to the world software testing commun-
ity.

(c) Copyright 1995 by Software Research, Inc.  Permission to copy and/or
re-distribute is granted to recipients of the TTN On-Line Edition pro-
vided that the entire document/file is kept intact and this copyright
notice appears with it.

TRADEMARKS:  STW, Software TestWorks, CAPBAK/X, SMARTS, EXDIFF,
CAPBAK/UNIX, Xdemo, Xvirtual, Xflight, STW/Regression, STW/Coverage,
STW/Advisor and the SR logo are trademarks or registered trademarks of
Software Research, Inc. All other systems are either trademarks or
registered trademarks of their respective companies.

========================================================================

INSIDE THIS ISSUE:

   o  Quality Week 1996: An Early Sneak Preview

   o  Empirical Software Engineering: An International Journal

   o  Software Negligence and Testing Coverage (Part 2 of 3), by Cem
      Kaner

   o  TTN Online Back Issues Now On WWW

   o  Frequently Asked Questions about the Space Shuttle Computers (Part
      1 of 2)

   o  SR Introduces New STW/Web Tool Bundle

   o  Is "Software Quality" Intrinsic, Subjective, or Relational?,  by
      Dick Carey

   o  Correction Noted

   o  TTN SUBMITTAL POLICY

   o  TTN SUBSCRIPTION INFORMATION

========================================================================

               QUALITY WEEK 1996: AN EARLY SNEAK PREVIEW

The final program for QW'96 is currently being assembled.  Look for your
copy of the conference announcement in a few weeks, or consult URL:
http://www.soft.com/QualWeek/index.html for up to date details.

Here are a few features of the QW'96 program that are sure to be of
interest...

o KEYNOTERS FOR THE CONFERENCE...

  * Dr. Boris Beizer will keynote the QW'96 Conference with "Software
    *is* Different!"

  * Prof. Lee Osterweil will present a Keynote on the breakthrough con-
    cept of "Perpetually Testing Software"

  * Dr. Guenter Koch will describe the European Software Institute's
    role as a change agent.

  * Mr. Clark S. Turner will discuss the issue of legal sufficiency of
    safety-critical testing processes.

o Quick-Start Track

  There is a new "Quick-Start Track" with six focused mini-Tutorials by
  acknowledged experts on basic technological aspects of applying soft-
  ware quality methods.

o Debate by the Experts: Testing vs. Inspection

  Mr. Tom Gilb and Dr. Boris Beizer, two speakers internationally known
  for the contributions in the software quality arena, will debate:
  "Testing Vs. Inspection" Each is an expert in one of the areas.  Will
  they debate their own side of the issue, or take the opposing posi-
  tion?  Will their sides be decided by a coin toss?

o Panel Session on Model Validation

  Mr. Bob Binder will moderate a panel of industry experts on "Automated
  Model Validation For Object Oriented Development"

o OTHER FEATURES

  QW'96 will also feature nearly 40 regular papers, 10 half-day tutori-
  als, and a full 2-day Vendor Exhibit program.

========================================================================

                     Empirical Software Engineering
                        An International Journal

Editors-in-Chief: Victor Basili (basili@cs.umd.edu), University of Mary-
land;
Warren Harrison (warren@cs.pdx.edu), Portland State University.

Associate Editors: Dieter H. Rombach (rombach@informatik.uni-kl.de)
University of Kaiserslautern, Germany (Regional Editor for Europe);
Ross Jeffrey (r.jeffrey@unsw.edu.au), University of New South Wales,
Australia (Regional Editor for Australia);
Koji Torii (torii@is.aist-nara.ac.jp), Nara Institute of Science and
Technology, Japan (Regional Editor for Asia)

Empirical Software Engineering, An International Journal provides a
forum for researchers and practitioners to report both original and
replicated studies.  The studies can vary from controlled experiments to
field studies, from data intensive to qualitative. Preference will be
given to studies that can be replicated or expanded upon.  The aim of
the studies should be to expose, in an experimental setting, the primi-
tives of software engineering.  Papers on the supporting infrastructure
for experimentation would also be appropriate.

Empirical Software Engineering home page:  http://www.cs.pdx.edu/emp-se/

========================================================================

           SOFTWARE NEGLIGENCE AND TESTING COVERAGE (Part 2)

                                   by

                  CEM KANER, J.D., PH.D., ASQC-C.Q.E.

Editors Note:  This article was first published in the Software QA Quar-
terly, Volume 2, No.  2, 1995, pp. 18-26. Copyright (c) Cem Kaner, 1995.
All rights reserved.  It is reprinted in TTN-Online, in four parts, by
permission of the author.

                             (Part 2 of 4)

*    A Windows program might fail when printing to any printer.  You
achieve complete coverage of printer compatibility tests (across
printers) if you use the set of all Windows-supported printers, using
all Windows printer drivers available for each printer. These drivers
are part of the operating system, not part of your program, but your
program can fail or cause a system failure when working with them. The
critical test case is not whether a particular line of code is tested,
but whether it is tested in conjunction with a specific driver.

*    Suppose that you test a desktop publishing program. One effective
way to find bugs and usability failures is to use the program to create
interesting documents.  This approach is particularly effective if you
use a stack of existing documents (Footnote 4) and try to make exact
copies of them with your program. To create your stack, perhaps you'll
use all the sample files and examples that come with PageMaker, Quark,
FrameMaker, and one or two other desktop publishers. In this case, you
achieve complete coverage if you recreate all of the samples provided by
all available desktop publishers.

------------
Footnote 4 I was the project manager for a desktop publishing program. I
speak from experience when I say that this strategy is a remarkably
effective way of finding bugs and convincingly demonstrating their sig-
nificance.
------------

The Appendix to this article lists 101 measures of testing coverage.
Line coverage is just one of many. There are too many possible tests for
you to achieve complete coverage for every type of coverage in the list.
I hope that the list helps you make priority decisions consciously and
communicate them explicitly. The tradeoffs will differ across applica-
tions -- in one case you might set an objective of 85% for line coverage
(Footnote 5), 100% for data coverage, but only 5% for printer / driver
compatibility coverage. For a different program whose primary benefit is
beautiful output, you would assign printer coverage a much higher
weight.

------------
Footnote 5 It can be very expensive and difficult to achieve 100% line
or branch coverage. Grady reports that values of 80-85% are reasonably
achievable.  R.B. Grady, Practical Software Metrics for Project Manage-
ment and Process Improvement, PTR Prentice Hall (Hewlett-Packard Profes-
sional Books), 1992, p. 171.
------------

If you had an extra $50,000 to spend, would you focus your efforts on
increasing line coverage or increasing some of the others? Surely, the
answer should depend on the nature of your application, the types of
risks involved in your application, and the probable effectiveness of
the different types of tests. The most desirable strategy will be the
one that is most likely to find the most bugs, or to find the most seri-
ous bugs.

The legal (negligence) test for the coverage tradeoffs that you make is
reasonability. No matter what tradeoffs you make, and no matter how much
money you spend on testing, you will miss some bugs. (Footnote 6)
Whether or not those bugs are products of negligence in the testing pro-
cess depends on your reasonability, not on your luck in selecting just
the right tests.

------------
Footnote 6 See Chapter 2 of C. Kaner, J. Falk, and H.Q. Nguyen, Testing
Computer Software (2nd. Ed.), Van Nostrand Reinhold, 1993.
------------

Your task is to set priorities among tests in the way that a reasonably
careful company would -- and to me that means to select the test stra-
tegy that you rationally believe is the most likely to find the most
bugs or the most serious bugs.

There is no magic talisman in coverage that you can use blindly and be
free of negligence liability. Being reasonable in your efforts to safe-
guard your customer requires careful thought and analysis. Achieving
complete (line, branch, whatever) coverage will not insulate you. The
plaintiff's attorney will just ask you why you spent all that money on
line coverage, at the expense of, say, interrupt coverage. Try to assign
your weights sensibly, in a way that you can explain and justify.

The same reasoning applies to customer satisfaction in general. If your
approach will control the risks, you've done your job. But if you can
identify gaps that leave an unreasonable degree of risk to customer
safety or satisfaction, there is no reasonable alternative to addressing
those risks.  As a final note, I hope that you'll take a moment to
appreciate the richness, multidimensionality, and complexity of what we
do as testers.  Sometimes we hear that only programmers should be tes-
ters, or that all testing should be driven from a knowledge of the work-
ings of the code. This list highlights the degree to which that view is
mistaken. Programming skills and code knowledge are certainly valuable
for glass box testing tasks, but as we explore the full range of black
box testing approaches, we find the need for skills and knowledge in:

*    the application itself (subject matter experts)
*    safety and hazard analysis
*    hardware (modems, printers, etc.)
*    customer relations.

APPENDIX: THE MANY TYPES OF TESTING COVERAGE

This appendix lists 101  coverage measures. Coverage measures the amount
of testing done of a certain type. Because testing is done to find bugs,
coverage is also a measure of your effort to detect a certain class of
potential errors. For example, 100% line coverage doesn't just mean that
you've executed every line of code; it also means that you've tested for
every bug that can be revealed by simple execution of a line of code.

Please note that this list is far from complete. For example, it doesn't
adequately cover safety issues. (Footnote 7) Nor does it convey the
richness of the tests and test strategies that you can derive from cus-
tomer complaints and surveys and from tests involving controlled custo-
mer observation. And you will add measures as you analyze the applica-
tion that you're testing.

------------
Footnote 7 N. Leveson, Safeware: System Safety and Computers, Addison-
Wesley, 1995.
------------

1. Line coverage. Test every line of code (Or Statement coverage: test
every statement).

2. Branch coverage. Test every line, and every branch on multi-branch
lines.

3. N-length sub-path coverage. Test every sub-path through the program
of length N. For example, in a 10,000 line program, test every possible
10-line sequence of execution.

4. Path coverage. Test every path through the program, from entry to
exit.  The number of paths is impossibly large to test. (Footnote 8)

------------
Footnote 8 See G. Myers, The Art of Software Testing, Wiley, 1979, and
Chapter 2 of C. Kaner, J. Falk, and H.Q. Nguyen, Testing Computer Soft-
ware (2nd. Ed.), Van Nostrand Reinhold, 1993.
------------

5. Multicondition or predicate coverage.  (Footnote 9) Force every logi-
cal operand to take every possible value. Two different conditions
within the same test may result in the same branch, and so branch cover-
age would only require the testing of one of them.

------------
Footnote 9 G. Myers, The Art of Software Testing, Wiley, 1979 (multicon-
dition coverage) and B. Beizer, Software Testing Techniques (2nd Ed.),
Van Nostrand Reinhold, 1990.
------------

6. Trigger every assertion check in the program. Use impossible data if
necessary.

7. Loop coverage. "Detect bugs that exhibit themselves only when a loop
is executed more than once." (Footnote 10)

------------
Footnote 10 B. Marick, The Craft of Software Testing, Prentice Hall,
1995, p. 146.
------------

8. Every module, object, component, tool, subsystem, etc. This seems
obvious until you realize that many programs rely on off-the-shelf com-
ponents. The programming staff doesn't have the source code to these
components, so measuring line coverage is impossible. At a minimum
(which is what is measured here), you need a list of all these com-
ponents and test cases that exercise each one at least once.

9. Fuzzy decision coverage. If the program makes heuristically-based or
similarity-based decisions, and uses comparison rules or data sets that
evolve over time, check every rule several times over the course of
training.

                   ( T O   B E   C O N T I N U E D )

========================================================================

                   TTN-ONLINE BACK ISSUES NOW ON WWW

Many readers Email us asking for copies of back issues.  Because of the
wide interest in the content we're providing we have put the prior
YEAR's worth of back issues up at our WWW site for everyone to read.
Eventually we'll put up complete set of issues.

Please bring up the URL: http://www.soft.com and click on News for com-
plete copies of the prior 12 issues of TTN-Online Edition.

If you can't reach this WWW page please request back issues of ttn at
"info@soft.com".


========================================================================

      FREQUENTLY ASKED QUESTIONS ABOUT THE SPACE SHUTTLE COMPUTERS
                              Part 1 of 2

This is the FAQ list just for the Space Shuttle computer systems.  The
information here was collected by Brad Mears during several years of
working in the shuttle flight software arena, then expanded by Ken Jenks
with major assistance from Kaylene Kindt of the NASA/Johnson Space
Center's Engineering Directorate.  If you believe any part of this docu-
ment is in error, contact me and I'll try to resolve the issue thru
further research.  My email address is kjenks@gothamcity.jsc.nasa.gov.

The latest version of this document is available via anonymous FTP at
ftp://explorer.arc.nasa.gov/pub/SPACE/FAQ/shuttle-GPC-FAQ.txt

(1) What kind of computer does the shuttle use?

All of the flight-critical software is executed on five IBM AP-101 Gen-
eral Purpose Computers (GPCs).  The crew may use commercially available
laptops and programmable calculators for non-critical applications.

The AP-101 is a descendant of the IBM 360/370 family that was specially
redesigned for use on the shuttle.  By today's standards, the AP-101 is
incredibly slow.  The original shuttle computers, AP-101B, were replaced
in 1991 by an upgraded version, the AP-101S.  The AP-101S is three times
faster than the AP101B and is half the size and weight.  The AP101S also
decreased power consumption by about 100 Watts per computer.  (The
AP101B and its associated electronics consumed 650 Watts, and the AP101S
consumes 560 Watts.  Reduced power consumption gives increased reliabil-
ity, reduced consumption of consumables like Hydrogen and Oxygen, and
reduced requirements for heat rejection.)

The AP101S first flew on STS-37, April 5-11, 1991.  The computers were
manufactured by IBM in Owego, New York,  IBM has since sold its Federal
Systems Company to Loral Space Information Systems.

(2) Tell me more about the GPCs

The AP-101 is a very different computer than what most people are fami-
liar with.  Like most computers used in aerospace applications, it does
not have a keyboard or CRT.  It is a black box with chips and a power
supply.

Relax - there *are* keyboards and CRTs available for the crew, but they
aren't considered part of the GPC.  In fact, there isn't even a one-to-
one correspondence between computers and keyboards.  Any CRT or keyboard
can be addressed by any GPC, depending on the state of cockpit switches.
BTW, the keyboards aren't your typical QWERTY keyboard.  They are a
funky hexadecimal keypad with several special-purpose function keys.

Besides the CPU, the GPC has twenty-five (25) additional processors.
All of the processors besides the CPU are dedicated to I/O.  There is
one processor for each of the twenty-four serial data busses the AP-101
uses to control and monitor the vehicle.

Each of the I/O processors can be programmed independently to handle
incoming/outgoing data transfers for its respective data bus. The
twenty-fifth processor is a master I/O scheduler.  It serves as an
interface between the CPU and the other I/O processors.

The use of truly independent I/O processors allows the CPU to concen-
trate on number-crunching and not get bogged down with I/O.  This is
very important considering the hard real-time requirements the software
must meet.

(3) How much memory do the GPCs have?

The amount of memory available in the AP-101B is 212,992 16-bit words.
The AP-101S holds up to 524,288 words.  Yes, this is ludicrously small
by today's standards.  These numbers do not include error detection
bits.

The memory in the original AP-101B was honest-to-gosh ferrite core.
Since core memory is non-volatile (meaning it retains its state when it
loses power), a GPC can be turned off and turned on later without losing
its mind.  The AP-101S uses normal random access memory (RAM) with bat-
tery backup to achieve the same result.

Ferrite core memory was originally selected for the GPC's because little
was known about the effects of radiation on the high-density solid state
RAM which is now used in almost all digital computer hardware.

The fact that the AP-101B used non-volatile memory was put to use after
the Challenger accident.  Once the GPCs were recovered from the ocean
floor, NASA was able to clean them up and recover a significant percen-
tage of the memory contents.  This data was used to help confirm what
happened.

The AP101S uses a solid state CMOS memory with battery backup.  Because
the CMOS memory can be altered by radiation which the Shuttle encounters
in orbit, the memory was designed with error detection and correction
(EDAC) logic.  Whenever the GPC is powered, a hardware process called
"scrub" continually checks the GPC's memory for alterations.  Scrub is
capable of detecting and correcting single bit errors.  Multi-bit errors
can be detected, but not corrected.  Scrub checks all of the GPC's
memory in 1.7 seconds.  Each memory location is also checked by EDAC
prior to being executed by the GPC.

With the non-volatile memory of the old AP101B, the crew would configure
one GPC for De-orbit and Entry, then shut off its power.  This is called
"freeze-drying" and will be discussed later.  With the AP101S, the crew
configures one GPC with software for the De-orbit and Entry phases of
Shuttle flight then puts the GPC to "Sleep."  Sleep is a reduced power
mode in the GPC which uses only 10% of its rated power.  This reduced
power mode reduces the amount of electricity which must be generated by
the Orbiter's Fuel Cell system, but allows the EDAC logic to continually
scrub the GPC's memory.

(4) How much disk space do the computers have?

None.  All secondary storage for the flight software is on tape.  There
are two Mass Memory Units (MMU) that hold all of the software and data
that the GPCs require during flight.

At the time the shuttle was designed and built, disk drive technology
was pretty young.  No disk drive at the time had sufficient reliability
for flight critical equipment in a manned spacecraft.

(5) How big are the GPCs?

The GPC's are housed in air transport racks (ATR), whose dimensions are
10.2 inches wide, 7.625 inches high and 19.52 inches long.  The original
APS101B was packaged in two such boxes, one for the CPU and another for
the Input/Output Processor (IOP), but the newer AP101S combines both
processors into one ATR.

(6) OK, so now I know what a GPC *is*.  What does it *do*?

The shuttle is a fly-by-wire vehicle (like the F-16).  This means that
there are no direct connections between the cockpit controls and the
vehicle.  Every switch and every button is connected to the computers.
The engines, SRBs, flaps, payload bay doors, etc are all controlled by
the software.

The entire flight, from pre-launch to roll-out, is under computer con-
trol.  This isn't to say that the crew is unnecessary.  They are needed,
but the software is between them and everything they do.

When the software detects a change of state in a switch, it determines
what that switch is used for, what the new state means, and if the com-
mand is legal at this time.  Once it has done all that, then the soft-
ware will issue the appropriate command via the serial data busses.

An example - If the commander wants to push the nose down during flight,
he pushes forward on the joystick in front of him.  The GPC reads this
input, determines what it means, and then issues commands to the proper
control surfaces.  These commands are electronic signals that go to an
actuator.  The actuator is what actually moves the aero-surface.  The
actuator uses hydraulics to move the aero-surface.

It is very important to realize that the shuttle is completely fly-by-
wire.  If the flight software fails to operate, the vehicle will crash.
There are two versions of the software on-board:  the Primary Avionics
Software System (PASS) and the Backup Flight Software (BFS).  If the
PASS should fail to operate correctly, the crew can engage the BFS.
More about that later.

(7) Can the astronauts override the software?

Yes and no.  Yes the astronauts can override decisions made by the soft-
ware.  But the mechanism used to perform the override is in SOFTWARE!
Do you see the catch?  If the software is fouled up badly enough, the
override won't work.

        (End of Part 1; Look for Part 2 in Next Month's Issue)

========================================================================

                 SR INTRODUCES NEW STW/WEB TOOL BUNDLE

STW/Web Helps IS Organizations Improve the Quality and Reliability of
Corporate Web Sites

San Francisco, California, 12 February 1996 -- Software Research, Inc.,
the leading provider of integrated automated software testing tools and
technology, today announces the sixth TestWorks bundle: Software
TestWorks/Web , applying the proven TestWorks product line specifically
for the support of World Wide Web (WWW) development and maintenance.
The STW/Web suite includes CAPBAK/X for capture/replay of complete tests
of your web pages; XVirtual for realistic loading to assure WWW response
times; and TCAT/Java for thorough test of Java applets before public Web
site releases.

The new STW/Web tool bundle will help organizations improve the quality
and reliability of their WWW-based information systems in the following
way: by fully exercising them assuring completeness and consistency of
WWW pages; by allowing Web developers to investigate response time to
browser requests; by permitting them to experiment with the maximum
number of hits their WWW server can support, and by validating their
system's ability to function correctly under varying conditions.

To test a Web-based system using STW/Web, developers first create test
scripts using a special Web-adapted version of Software Research's GUI
testing product CABPAK/X.  Test scripts are created by recording actual
user interactions with the browser, a step made possible with minimal
effort through use of CAPBAK/X's Automated Object Mode Recording and
Automated Output Synchronization features.  The tester/recorder only has
to select validation screens and checkpoints.  Every time the WWW pages
are modified, CAPBAK/X can run unattended tests to detect functionality
errors, such as missing links or incorrect or changed content.

To test performance and capacity, Web page developers apply our XVirtual
tool, a background-only version of an X11 display server.  XVirtual can
simulate thousands of hits against the Web display by simulating hun-
dreds of interacting users assuring 100% load accuracy.  Using XVirtual,
developers can assess the performance delivered by typical WWW-surfers
of their site.

The third STW/Web component, TCAT/Java (available in 96Q2) is a test
coverage analysis tool configured specifically for Java applications and
for use on Java-enabled browsers.  Animated WWW site users can now
determine that their Java applets are fully exercised by their test
suites.  This is a critical quality verification function when a Java
applet is used in support of financial transactions on the WWW.

"STW/Web is the application of our extensive software test experience
accumulated in our 15+ years in the software testing business and
represents our three-part entry in the WWW development and testing
market,'' said Dr. Edward Miller, President of Software Research, Inc.
"Testing of Web sites has previously been a tedious, manual process.  By
automating the Web testing process with STW/Web, Web site developers can
now build automated processes that ensure that corporate Web sites have
the quality, availability, reliability, and capacity to handle the anti-
cipated user loads with the expected quality level.  As for information
systems organizations, STW/Web permits management of the risk of the
system's exposure to millions of consumers accessing corporate informa-
tion through the Internet; it improves the quality and performance of
their Web-based systems.''

The World Wide Web offers millions of potential consumers access to a
great variety of corporate information today. By the year 2000, 10 mil-
lion users will be surfing the net and an astronomical $5 billion worth
of world business will be conducted electronically on the Internet. An
increasing number of business-critical applications will be designed
specifically for the Internet.  Automated software testing will be the
only option for WWW developers to assure that these fast-changing appli-
cations operate reliably.

STW/Web with CAPBAK/X and XVirtual is available immediately in a special
short-time introductory offer.  TCAT/Java becomes available in 96Q2.
Contact SR for complete pricing details.  Or, visit SR's Web site
http://www.soft.com.

========================================================================

      Is "Software Quality" Intrinsic, Subjective, or Relational?

                               Dick Carey
                          20 Riverside St. #22
                        Watertown, MA 02172-2670
                           +1 (617) 926-2556

The software community almost unanimously measures Software Quality (SQ)
as the ratio of Errors per Kilo Lines Of Code (E/KLOC).  In spite of
this, the underlying assumptions for this concept and its application
have not been critically examined enough.  In this paper, it is asserted
that E/KLOC is not a reasonable measure of SQ, and a different model is
introduced.

An important requirement for objectivity is that judgements be quantifi-
able.  How we define SQ has consequences in determining a software
organization's goals.  I classify three different interpretations of SQ
in terms of what Chris Sciabarra [1995] calls Ayn Rand's dialectic of
the Intrinsic, the Subjective, and the Relational.

                              INTRINSIC-SQ

Intrinsic-SQ says quality is only a measurement of the current code,
independent of past changes.  A large program is going to have more
errors than a small program, so in order to judge the density of errors,
Intrinsic-SQ requires us to know the number of Lines of Code (LOC).  The
E/KLOC formula makes errors and LOC dependent on each other.  A big
fraction is bad, a small fraction is good.  Program changes that
decrease the ratio are seen as improvements.

This satisfies our need to have an objective measure of SQ but is it
correct?  The E/KLOC formula says that if we don't fix any errors but we
add code my SQ improves (because I've increased the denominator).  If we
take 1000 lines of unstructured code and modularize it so it shrinks to
1/10th its original size with the same functionality, I've improved its
SQ 10 times.  But E/KLOC says I've worsened its Intrinsic-SQ 10 times
from 10/1000 to 10/100 (because I've decreased the denominator).

E/KLOC says there's a trade-off between error count and code size.
There's a point where if we remove enough code in order to fix a error
it won't improve its Intrinsic-SQ at all:

                        PREVIOUS VERSION:       CURRENT VERSION:

                        10 errors               9 errors
        E/KLOC  =       ----------      =       ---------
                        100 LOC                 x LOC

                        10 x            =       900

                           x            =       90
        therefore
                        10 errors               9 errors
        E/KLOC  =       ----------      =       ---------
                        100 LOC                 90 LOC


If we fix 1 error by removing 10 lines of code E/KLOC says the
Intrinsic-SQ hasn't changed.  We could almost make the opposite case
that a large E/KLOC is good.

If we fix a error by adding code has SQ improved? Yes.  If we fix a
error by removing code has SQ improved? Yes.  If we fix a error without
adding or removing code has SQ improved? Yes.  The use of E/KLOC is at
odds with the original objective of improving SQ.  These weaknesses of
E/KLOC make it a very inaccurate model of true SQ.  It's wrong to accuse
people of "fooling" the E/KLOC metric.  The problem is that the E/KLOC
metric "mismeasures" true SQ.  It is the underlying false assumption
that SQ is intrinsic that causes us to make LOC and errors dependent
variables.

                             SUBJECTIVE-SQ

Most software organizations apply externally-generated methods to their
software development.  This top-down approach treats SQ subjectively,
not as the actual goal of producing error-free software, but with fol-
lowing some generally accepted standard process.  How close they match
the standard indicates how good their SQ is.  The assumption is that,
once the process changes to match a standard one, all products generated
will be improved.  This methodology differs from the other two by
centering on activities rather than results.  Subjective-SQ formalizes
SQ without understanding what SQ is.

If Subjective-SQ is based only on what we want to see, SQ can change
without touching the actual software.

        Removing duplicate error reports and calling it one error
        instead of two improves Subjective-SQ.

        Another paper shuffling technique to improve Subjective-SQ is to
        lower an error's priority.

        Discovering a previous release's errors causes Subjective-SQ to
        go down.

The staff demonstrates it's support of Subjective-SQ by championing and
supporting the approach.  People who resist indoctrination are seen as
anti-SQ.  This creates a culture where programmers are penalized for
discovering errors and rewarded for not reporting errors.

                             RELATIONAL-SQ

The failures of Intrinsic-SQ and Subjective-SQ has led this writer to
introduce a different model.  Relational-SQ defines quality as the
difference in the changes between the previous and current versions.
Relational-SQ says quality cannot be judged instantaneously by just
looking at the current version of software.  Relational-SQ makes LOC and
errors independent of each other.

Removing errors from the previous version improves Relational-SQ.
Introducing errors into the current version decreases Relational-SQ.
Discovering errors in the current version that were already there in the
previous version doesn't affect Relational-SQ.

When judging LOC there is an additional restriction that there be no
change in functionality.  Decreasing LOC without changing functionality
improves Relational-SQ.  Changing the functionality to add a new feature
or to fix an error, whether it increases or decreases LOC, doesn't
change Relational-SQ.  Since the feature or error isn't in both ver-
sions, there's no comparison.  Unlike the other two models, Relational-
SQ rewards programmers for structuring code.

Relational-SQ is the best representation of true SQ.  Using this defini-
tion restores us to the original rationale of a quantifiable, objective
standard.  Unlike Subjective-SQ, Relational-SQ can only be improved by
changing code.  This creates a culture where programmers are not penal-
ized for reporting errors.  Programmers can only improve SQ by fixing
errors, so the bigger the pool of known errors the better.

Chris Sciabarra, AYN RAND: THE RUSSIAN RADICAL, Penn State Press, 1995.

========================================================================

                   C O R R E C T I O N   N O T E D !

Yes, as many sharp-eyed readers pointed out, we misspelled "January" in
the mast of last month's issue.  Now the only question you have to
wonder about is this: was that an intentional goof to a test the reader-
ship?

========================================================================
------------>>>          TTN SUBMITTAL POLICY            <<<------------
========================================================================

The TTN On-Line Edition is forwarded on the 15th of each month to Email
subscribers via InterNet.  To have your event listed in an upcoming
issue, please Email a description of your event or Call for Papers or
Participation to "ttn@soft.com".  The TTN On-Line submittal policy is as
follows:

o  Submission deadlines indicated in "Calls for Papers" should provide
   at least a 1-month lead time from the TTN On-Line issue date.  For
   example, submission deadlines for "Calls for Papers" in the January
   issue of TTN On-Line would be for February and beyond.
o  Length of submitted non-calendar items should not exceed 350 lines
   (about four pages).
o  Length of submitted calendar items should not exceed 68 lines (one
   page).
o  Publication of submitted items is determined by Software Research,
   Inc., and may be edited for style and content as necessary.

========================================================================
----------------->>>  TTN SUBSCRIPTION INFORMATION  <<<-----------------
========================================================================

To request your FREE subscription, to CANCEL your subscription, or to
submit or propose a calendar item or an article send E-mail to
"ttn@soft.com".

TO SUBSCRIBE: Use the keyword "subscribe" in front of your Email address
in the body of your Email message.

TO UNSUBSCRIBE: please use the keyword "unsubscribe" in front of your
Email address in the body of your message.

                     TESTING TECHNIQUES NEWSLETTER
                        Software Research, Inc.
                            901 Minnesota Street
                   San Francisco, CA  94107 USA

                        Phone: +1 (415) 550-3020
                Toll Free: +1 (800) 942-SOFT (USA Only)
                         FAX: + (415) 550-3030
                          Email: ttn@soft.com
                      WWW URL: http://www.soft.com

                               ## End ##