FAQ (Part 1): questions and answers

Skip to first unread message

David Alex Lamb

Apr 18, 2004, 5:15:03 AM4/18/04
Last-Modified: 13 Oct 2002
Archive-name: software-eng/part1

This message gives brief answers to questions that have occurred in; in many cases they are also topics many readers would like
NOT to see discussed again soon. Questions are:
What is Software Engineering?
What's a CASE Tool?
What's a 'function point'?
What's the 'spiral model'?
What is a 'specmark'?
Where can I find a public-domain tool to compute metrics?
What metrics are there for object-oriented systems?
How do I write good C style?
What is 'Hungarian Notation'?
Are lines-of-code (LOC) a useful productivity measure?
Should software professionals be licenced/certified?
How do I get in touch with the SEI?
What is the SEI maturity model?
Where can I get information on API?
What's a 'bug'?
Where can I get copies of standards??
What is 'cleanroom'?
What is the Personal Software Process?

Subject: What is Software Engineering?
Date: 11 Jul 2002

I'm not entirely happy with definitions, but here is one:
* *IEEE Standard Computer Dictionary*, 610, ISBN 1-55937-079-3, 1990:
The application of a systematic, disciplined, quantifiable approach to
development, operation, and maintenance of software; that is, the
application of engineering to software.

Textbooks tend not to give definitions, but instead spend their introductory
chapters explaining characteristics of the discipline. Interesting phrases
* Ian Sommerville, *Software Engineering*, 5th edition, Addison-Wesley,
The specification, development, management, and evolution of software
systems. Not constrained by materials governed by physical laws or
manufacturing processes. Theories, methods, and tools needed to develop
software. Evolving models of the real world.
* Stephen R. Schach, *Software Engineering*, 2nd Edition, Richard D.Irwin,
Inc. and Aksen Associates, 1993.
A discipline whose aim is the production of quality software, delivered
on time, within budget, and satisfying users' needs.
* Shari Lawrence Pfleeger, *Software Engineering: the Production of Quality
Software*, 2nd Edition, Macmillan, 1991, ISBN 0-02-395115-X.
Designing and developing high-quality software. Application of computer
science techniques to a variety of problems. We are problem-solvers
rather that theoreticians.

Subject: What's a CASE Tool?
Date: 24 Feb 1998
Archive file: casemsg (thanks to Scott McGregor <> for
inspiring this question)

CASE stands for Computer Aided Software Engineering; it can be used to mean
any computer-based tool for software planning, development, and evolution.
Various people regularly call the following 'CASE': Structured Analysis (SA),
Structured Design (SD), Editors, Compilers, Debuggers, Edit-Compile-Debug
environments, Code Generators, Documentation Generators, Configuration
Management, Release Management, Project Management, Scheduling, Tracking,
Requirements Tracing, Change Management (CM), Defect Tracking, Structured
Discourse, Documentation editing, Collaboration tools, Access Control,
Integrated Project Support Environments (IPSEs), Intertool message systems,
Reverse Engineering, Metric Analyzers.

Subject: What's a 'function point'?
Date: 24 Feb 1998
Archive file: funcpoints

Function points and feature points are methods of estimating the "amount of
functionality" required for a program, and are thus used to estimate project
completion time. The basic idea involves counting inputs, outputs, and other
features of a description of functionality. Bruno Peeters has collected a
biblography on function points at

If interested, for a fee you can join:
International Function Point Users Group
5008-28 Pine Creek Drive
Blendonview Office Park
Westerville, Ohio 43081-4899
Home page
(available using the World-Wide Web via URL

Subject: What's the 'spiral model'?
Date: 10 Oct 1998
Archive file: spiral

(1) Barry Boehm, "A Spiral Model of Software Development and Enhancement",
ACM SIGSOFT Software Engineering Notes, August 1986.
(2) Barry Boehm "A Spiral Model of Software Development and Enhancement"
IEEE Computer, vol.21, #5, May 1988, pp 61-72.

Basically, the idea is evolutionary development, using the waterfall model for
each step; it's intended to help manage risks. Don't define in detail the
entire system at first. The developers should only define the highest
priority features. Define and implement those, then get feedback from
users/customers (such feedback distinguishes "evolutionary" from "incremental"
development). With this knowledge, they should then go back to define and
implement more features in smaller chunks.

Subject: What is a 'specmark'?
Date: 24 Feb 1998
Archive file: specmark

The SPECmark is the geometric mean of a series of benchmarks done by the SPEC
group. There are a couple of suites, but in general SPECmark refers to the
results of the first suite. The suite includes FORTRAN and C codes, mostly
well known codes but slightly hacked versions.
c/o NCGA
2722 Merrilee Drive, Suite 200
Fairfax, VA 22031
Phone: (703) 698-9600
FAX: (703) 560-2752

Subject: Where can I find a public-domain tool to compute metrics?
Date: 11 Jul 2002
Archive file: static.html

Christopher Lott has a collection of metrics tools for C programs at

Volume 20 of newsgroup comp.sources.unix contained a public-domain package
called "metrics", which computes McCabe and Halstead metrics. There are many
comp.sources.unix archives around the net.

Subject: What metrics are there for object-oriented systems?
Date: 24 Feb 1998

The Empirical Software Engineering Research Group at Bournemouth University
maintains a bibliography on OO metrics at, originally maintained by
Robin Whitty of South Bank University.

Subject: How do I write good C style?
Date: 11 Jul 2002

This is answered regularly in the comp.lang.c FAQ. See Christopher Lott's list
of C and C++ style guides at

Subject: What is 'Hungarian Notation'?
Date: 24 Feb 1998
Archive file: hungarian

A naming convention for C code. See Charles Simonyi and Martin Heller, "The
Hungarian Revolution", BYTE, Aug. 1991 (vol. 16, no. 8). There are other
naming conventions; see, e.g. "A Guide to Natural Naming", Daniel Keller,
ETH, Projekt-Zentrum IDA, CH-8092 Zurich, Switzerland. Published in SIGPLAN
Notices, Vol. 25, No. 5, pages 95-102.

Subject: Are lines-of-code (LOC) a useful productivity measure?
Date: 24 Feb 1998
Archive file: static.html

Not unless you are very careful. Capers Jones' book has a detailed and
insightful discussion of Lines of Code, including anomalies, and shows how to
use it sensibly (eg in a single job shop, with a single language, and a
standard company coding style). It is easy to cook up anomalies where LOC
gives different numbers for code written in different styles, but pathological
cases should get caught in code inspections. References:
- T. Capers Jones, Programming Productivity, McGraw-Hill, New York, 1986
- Capers Jones, Applied Software Measurement: Assuring Productivity and
Quality, McGraw-Hill, Inc., 1991, 494 pages ISBN 0-07-032813-7

The appendices of the latter give rules for counting procedural source code,
as well as rules for counting function points and feature points. The
following study, cited in Boehm's _ S_ o_ f_ t_ w_ a_ r_ e _ E_ n_ g_ i_ n_ e_ e_ r_ i_ n_ g _ E_ c_ o_ n_ o_ m_ i_ c_ s, claims that
anomalies that seriously "fool" the LOC metric show up rarely in real code.
- R. Nelson _ S_ o_ f_ t_ w_ a_ r_ e _ D_ a_ t_ e _ C_ o_ l_ l_ e_ c_ t_ i_ o_ n _ a_ n_ d _ A_ n_ a_ l_ y_ s_ i_ s _ a_ t _ R_ A_ D_ C, Rome Air
Development Center, Rome, NY. 1978.

Subject: Should software professionals be licenced/certified?
Date: 24 Feb 1998

This is a very controversial and political question. Generally, certification
is something voluntary, while licencing is regulated by governments.
Certification generally means some agency warrants you meet its standards;
licencing generally means that to claim to practice a certain profession
requires a government licence, often administered through a professional
organization. In theory both are supposed to help judge if someone is capable
of doing certain jobs.

Licencing isn't currently required for computing professionals; some people
would like to see some jobs require it, as with established branches of
engineering. Others don't like government intervention, and/or believe many
people who wouldn't get licenced are perfectly competent.

Computing professionals in the USA have had a certification program for years,
administered by the Institute for Certification of Computer Professionals
(708-299-4227), a meta-organization with representatives from ACM, IEEE-CS,
three certificates aimed at different broad types of practitioner, and many
areas of specialization. To keep a certificate requires at least 40 hours of
continuing education each year; credit can also be obtained for self-study,
teaching, publication, etc.

Subject: How do I get in touch with the SEI?
Date: 24 Feb 1998

Try their Web server at <URL:>. For general
information about the SEI, contact the customer relations department of the
Software Engineering Institute at:
Phone: (412) 268-5800
A subscriber service is available to U.S. mailing addresses. Subscribers
receive the SEI quarterly newsletter, Bridge; invitations to SEI public
events; and first notification of course offerings and new publications. To
become a subscriber, contact Customer Relations.

To order an SEI publication, contact NTIS, DTIC, or RAI directly:
National Technical Information Service (NTIS)
U.S. Department of Commerce
Springfield, VA 22161-2103
Telephone: (703) 487-4600

Defense Technical Information Center (DTIC)
ATTN: FDRA Cameron Station
Alexandria, VA 22304-6145
Telephone: (703) 274-7633

Research Access Inc. (RAI)
3400 Forbes Avenue
Suite 302
Pittsburgh, PA 15213
Telephone: (412) 682-6530
FAX: (412) 682-6530

Subject: What is the SEI maturity model?
Date: 24 Feb 1998
Originally-From: (Mark Paulk)
Archive file: maturity

Maturity is not an easy concept to get down to a single paragraph, but
consider this.

Premise: The quality of a software system is largely governed by the quality
of the process used to develop and maintain the software. Basics: The first
step in improving the existing situation is to get management buy-in and
management action to clean up the software management processes (walk the
talk, as TQMers frequently say). Integration: The second step is to get
everyone working together as a team. Measurement: The third step is to
establish objective ways of understanding status and predict where things are
going in your process. Continuous improvement: Understand that this is
building a foundation for continually getting better.

Subject: Where can I get information on API?
Date: 24 Feb 1998

API stands for Application Programming Interface. For a useful subset of
standard APIs that NIST considers relevant to US Federal government needs, you
can look at NIST SP 500-187 "Application Portability Profile" (available using
the World-Wide Web via URL, or send mail
to with
send app-ose/app2.txt
in the body, or contact Barbara Blickenstaff, 301-975-2816. Many of the open
systems APIs are being developed in the IEEE POSIX groups. An article in the
Dec. 1991 IEEE Spectrum describes these and related API standards. IEEE
standards aren't distributed electronically, but both of the documents above
tell how to obtain copies.

Subject: What's a 'bug'?
Date: 24 Feb 1998

You can take your pick:
(1) Don't use "bug", use "fault" (an incorrect instruction or definition),
"failure" (an incorrect result), or "mistake" (a human action leading
to a failure). Paraphrased from
IEEE Standard Computer Dictionary
Standard 610, ISBN 1-55937-079-3
Institute of Electrical and Electronic Engineers, Inc.
345 East 47th Street
New York, NY 10017-2394 USA
$49.50 (US$) for IEEE members
(2) Beizer, in a footnote on page 33 of the second edition of _ S_ o_ f_ t_ w_ a_ r_ e
_ T_ e_ s_ t_ i_ n_ g _ T_ e_ c_ h_ n_ i_ q_ u_ e_ s says (paraphrased):
I'm sticking with "bug" because everyone knows what it means,
there are several "standards" for other terms that are incon­
sistent with each other, the OED says that the conventional
computer meaning of "bug" is ancient, and short Anglo-Saxon
words are preferable to long Norman ones.

Subject: Where can I get copies of standards??
Date: 16 Jun 1998

ISO, ANSI, and IEEE standards are usually sold to raise some of the funds
that the various national and international standards bodies (who usually
own the copyright) need to keep afloat; thus they are not normally avail­
able electronically. Also, the organizations are concerned that electron­
ic copies would make it too easy for people to disseminate doctored ver­
sions of the standards.

Some IEEE standards are available by annual electronic subscription; see (available using the World-Wide
Web via URL

ISO standards may be purchased from:
In Canada:
Standards Council of Canada / Conseil canadien des normes
1200-45 O'Connor,
Ottawa K1P 6N7
Phone: (613) 238-3222
Fax: (613) 995-4564
Omnicom, Inc.
115 Park St. SE
Vienna, VA 22180-4607
Also available through the National Technical Information Service
(NTIS), 5284 Port Royal Rd., Springfield, VA 22161, (703)
ANSI and ANSI equivalent ISO standards are available from
ASQC Quality Press
Customer Service Department
P.O. Box 3066
Milwaukee, WI 53201-3066
Voice: (800) 248-1946
FAX: (414) 272-1734

For ITU (formerly CCITT) standards, see the ITU gopher server, (available us­
ing the World-Wide Web via URL gopher:// use their mail server:
mail to with no subject and the following body:
There were once some CCITT standards on-line at the University of Colorado,
but the arrangement to make them available via the Internet was terminated at
the end of 1991.

Subject: What is 'cleanroom'?
Date: 24 Feb 1998

'Cleanroom' is a software process based on mathematical verification of compo­
nents and statistical system-level testing. Cleanroom Software Engineering,
Inc. (see Web page at keeps a more extensive defi­
nition at, including a bibliography.

Subject: What is the Personal Software Process?
Date: 3 Mar 1997

A discipline for monitoring, testing, and improving your own Software Engi­
neering work. It's described the book *A Discipline for Software Engineering*
by Watts S. Humphrey, Addison Wesley, 1995. ISBN 0-201-54610-8. There is al­
so a more introductory version (intended for early programming courses): Watts
S. Humphrey, Introduction to the Personal Software Process (SEI Series in
Software Engineering) Reading, Mass: Addison-Wesley, 1997 ISBN 0-201-54809-7.
There is a mailing list; to be added, send e-mailto psp-users-
"Yo' ideas need to be thinked befo' they are say'd" - Ian Lamb, age 3.5 qucis->cs to reply (it's a long story...)

Reply all
Reply to author
0 new messages