Thomas A. Alspaugh
Kinds of Software Systems
  1. How new is it?
    1. Completely, from scratch, de novo; or
    2. To be evolved from an existing system that is good; or
    3. To be evolved from an existing system that is not good
  2. What kinds of interactions does it participate in?

    (Other than with its virtual machine)

    1. Only with people; or
    2. Only with other systems (embedded); or
    3. Both with people and other systems
  3. What kind of context will it operate in?
    1. A well-understood context; or
    2. A novel context
  4. How well understood are its requirements?
    1. Well (this is less common—why?); or
    2. Not well—they are novel or poorly-understood
  5. How big is it?
    1. It will have {few, some, many, very many} {lines of code, modules, classes}; and
    2. It has {few, many} requirements; and
    3. It uses {few, many} other software packages; and
    4. It is needed in {a big hurry, no particular hurry}
  6. How serious will its failure be?
    1. Its failure will have little consequence; or
    2. Its failure will have consequences but can be worked around; or
    3. Its failure will stop other work and there is no workaround; or
    4. Its failure will cause large financial liability; or
    5. Its failure will cause injury or loss of life
  7. Who is developing it?
    1. A corporation; or
    2. A non-business organization; or
    3. A private individual; or
    4. Volunteers
  8. Who is it being developed for?
    1. A client who is paying; or
    2. A client who is not paying; or
    3. The customers of a competing product; or
    4. Hypothetical customers who do not yet realize they need it; or
    5. The developers themselves; or
    6. The developers themselves, and people like them
  9. Who are the stakeholders (people who will be affected by it)?
    1. The clients (the people it is being developed for); and
    2. Non-clients who will benefit by its operation; and
    3. Non-clients who will be injured by its operation; and
    4. Non-clients who will have to pay (in money, time, inconvenience, lost opportunities, lost privacy, …) in order for the system to work; and
    5. Hackers, misusers, free riders; and
    6. The developers themselves; and
    7. The operators and maintainers

flip bgunflip