The 7 fundamental principles of Software Requirements

Posted on
Given the complex nature of the problems we try to solve and the solutions we try to envision, there’s no surprise the devil is in the details.

Sometimes we have to be highly intelligent and well-informed just to be undecided about them.

These seven principles are seven chances to spot the complexity hidden in the details.
  1. From Wicked problems definition:
    A problem is not understood until after you have developed a solution.

    Reference: Horst Rittel and Melvin Webber, Jeff Conklin, 1967-2008. See http://en.wikipedia.org/wiki/Wicked_problems and http://www.cognexus.org/wpf/wickedproblems.pdf

  2. Humphrey law:
    For a new software system, the requirements will not be completely known until after the users have used it.

    Reference: Watts S. Humphrey, A Discipline for Software Engineering, Addison-Wesley, 1995. See http://en.wikipedia.org/wiki/Watts_Humphrey

  3. The Uncertainty Principle in Software Engineering:
    Uncertainty is inherent and inevitable in software development processes and products.
    Sometimes also referred as Ziv’s law: specifications will never be fully understood.

    Reference: H. Ziv and D.J. Richardson, May 1996. See http://www.ics.uci.edu/~ziv/papers/icse97.ps

  4. Wegner’s lemma:
    It is not possible to completely specify an interactive system.

    Reference: Peter Wegner, Why interaction is more powerful than algorithms, Comm. of the ACM, May 1997. See http://www.cs.brown.edu/people/pw/papers/ficacm.ps

  5. From the Lehman’s laws of software evolution:
    Software embedded in the real world become part of it, changing it and evolving in concert.

    Reference: Meir M. Lehman and Laszlo Belady, 1974-1996. See E-type programs in Programs, Life Cycles, and Laws of Software Evolution and see http://en.wikipedia.org/wiki/Lehman’s_laws_of_software_evolution

  6. The Cone of Uncertainty:
    The actual effort or scope can be 4 times or 1/4 of the first estimate.

    Reference: McConnell, 2006. See http://en.wikipedia.org/wiki/Cone_of_Uncertainty

  7. Langdon’s lemma:
    Software evolves more rapidly as it approaches chaotic regions.

    Reference: W. B. Langdon. See also http://www.cs.ucl.ac.uk/staff/W.Langdon/