Software Engineering Questions and Answers

This is the hypertext version of 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'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's a CASE Tool?

    Date: 27 Oct 1994
    (see also the archives)

    (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.

    What's a 'function point'?

    Date: 13 Jul 1996
    (see also the archives)

    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.

    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

    What's the 'spiral model'?

    Date: 27 Oct 1994
    (see also the archives)

    (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 incremental 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. With this knowledge, they should then go back to define and implement more features in smaller chunks.

    What is a 'specmark'?

    Date: 27 Oct 1994
    (see also the archives)

    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

    Where can I find a public-domain tool to compute metrics?

    Date: 17 Jun 1995
    (see also the archives)

    The archives contain a collection of metrics tools for C programs.

    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.

    What metrics are there for object-oriented systems?

    Date: 6 Sep 1995

    Robin Whitty ( of South Bank University keeps a bibliography on OO metrics, also available via anonymous FTP from as pub/Metrics/OOMetrics.asc.

    How do I write good C style?

    Date: 27 Oct 1994

    This is answered regularly in the comp.lang.c FAQ. Try "Recommended C style and Coding Standards", via anonymous FTP from as pub/style- guide

    What is 'Hungarian Notation'?

    Date: 27 Oct 1994
    (see also the archives)

    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.

    Are lines-of-code (LOC) a useful productivity measure?

    Date: 27 Oct 1994
    (see also the archives)

    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 Software Engineering Economics, claims that anomalies that seriously "fool" the LOC metric show up rarely in real code.

  • R. Nelson Software Date Collection and Analysis at RADC, Rome Air Development Center, Rome, NY. 1978.
  • Should software professionals be licenced/certified?

    Date: 27 Oct 1994

    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, ADAPSO, ICCA, IACE, AIM, DPMA, AISP, COMMON, ASM, CIPS, and AWC. There are 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.

    How do I get in touch with the SEI?

    Date: 8 Apr 1995

    Try their Web server at 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

    What is the SEI maturity model?

    Date: 31 Jan 1992
    Originally from: (Mark Paulk)
    (see also the archives)

    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.

    Where can I get information on API?

    Date: 8 Apr 1995

    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", or send mail to mail- 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.

    What's a 'bug'?

    Date: 12 May 1992

    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 Software Testing Techniques 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.

    Where can I get copies of standards??

    Date: 28 Oct 1994

    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 available electronically. Also, the organizations are concerned that electronic copies would make it too easy for people to disseminate doctored versions of the standards.

    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
    On CD-ROM:
        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,or 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.

    What is 'cleanroom'?

    Date: 21 Oct 1995

    'Cleanroom' is a software process based on mathematical verification of components and statistical system-level testing. Cleanroom Software Engineering, Inc. keeps a more extensive definition, including a bibliography.