A rational design process: How and why to fake it

  • David L. Parnas
  • Paul C. Clements
Advanced Seminar On The Role Of Semantics In Software Development The Role Of Semantics In The Development Of Software Systems
Part of the Lecture Notes in Computer Science book series (LNCS, volume 186)


Software Engineers have been searching for the ideal software development process: a process in which programs are derived from specifications in the same way that lemmas and theorems are derived from axioms in published proofs. After explaining why we can never achieve it, this paper describes such a process. The process is described in terms of a sequence of documents that should be produced on the way to producing the software. We show that such documents can serve several purposes. They provide a basis for preliminary design review, serve as reference material during the coding, and guide the maintenance programmer in his work. We discuss how these documents can be constructed using the same principles that should guide the software design. The resulting documentation is worth much more than the "afterthought" documentation that is usually produced. If we take the care to keep all of the documents up-to-date, we can create the appearance of a fully rational design process.


Design Decision Software Project Ideal Process Access Program Requirement Document 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Britton, K.H., Clements, P., Parnas, D.L., Weiss, D. Interface Specifications for the A-7E (SCR) Extended Computer Module; NRL Memorandum Report 4843, Jan. 1983.Google Scholar
  2. 2.
    Britton, K.H., Parker, R.A. and Parnas, D.L. "A Procedure for Designing Abstract Interfaces for Device-Interface Modules", Proceedings of the Fifth International Conference on Software Engineering, 1981.Google Scholar
  3. 3.
    Britton, K.H. and Parnas, D.L. A-7E Software Module Guide, NRL Memorandum Report 4702, December 1981.Google Scholar
  4. 4.
    Brooks, F.P. Jr. The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley Publishing Company, 1975.Google Scholar
  5. 5.
    Clements, P., Parker, A., Parnas, D.L., Shore, J. and Britton, K. A Standard Organization for Specifying Abstract Interfaces, NRL Report 8815, 14 June 1984.Google Scholar
  6. 6.
    Clements, P., Parnas, D. and Weiss, D. "Enhancing Reusability with Information Hiding", Proceedings of a Workshop on Reusability in Programming, pp. 240–247, Sept. 1983Google Scholar
  7. 7.
    Elovitz, Honey S. "An Experiment in Software Engineering: The Architecture Research Facility as a Case Study", Proceedings of the Fourth International Conference on Software Engineering, Sept. 1979.Google Scholar
  8. 8.
    Heninger, K.L. "Specifying Software Requirements for Complex Systems: New Techniques and their Application", IEEE Transactions on Software Engineering, vol. SE-6, pp. 2–13, Jan. 1980.Google Scholar
  9. 9.
    Heninger, K., Kallander, J., Parnas, D.L. and Shore, J. Software Requirements for the A-7E Aircraft, NRL Memorandum Report 3876, 27 November, 1978.Google Scholar
  10. 10.
    Linger, R.C., Mills, H.D., Witt, B.I. Structure Programming: Theory and Practice, Addison-Wesley Publishing Company, 1979.Google Scholar
  11. 11.
    Parker, A., Heninger, K., Parnas, D. and Shore, J. Abstract Interface Specifications for the A-7E Device Interface Module, NRL Memorandum Report 4385, 20 November, 1980.Google Scholar
  12. 12.
    Parnas, D.L. "On the Design and Development of Program Families", IEEE Transactions on Software Engineering, Vol. SE-2, No. 1, March, 1976.Google Scholar
  13. 13.
    Parnas, D.L. "Designing Software for Extension and Contraction", Proceedings of the Third International Conference on Software Engineering, pp. 264–277, 10–12 May, 1978.Google Scholar
  14. 14.
    Parnas, D.L. An Alternative Control Structure and its Formal Definition, Technical Report FSD-81-0012, Federal Systems Division, IBM Corporation, Bethesda, MD, 1981.Google Scholar
  15. 15.
    Parnas, D.L., Clements, P. and Weiss, D. "The Modular Structure of Complex Systems", Proceedings of the Seventh International Conference on Software Engineering pp. 408–417, March 1984.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1985

Authors and Affiliations

  • David L. Parnas
    • 1
    • 2
  • Paul C. Clements
    • 2
  1. 1.Department of Computer ScienceUniversity of VictoriaVictoriaCanada
  2. 2.Naval Research LaboratoryComputer Science and Systems BranchWashington DCUSA

Personalised recommendations