Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Software Architecture: Reading List


  • Foote, Brian and Joseph Yoder, Big Ball of Mud

  • Wirth, Niklaus, "Program Development by Stepwise Refinement," Communications of the ACM, Vol. 14, No. 4, April 1971. Reprinted in: Software Pioneers

  • Parnas, David, "On the Criteria to be Used in Decomposing Systems into Modules", Communications of the ACM, 1972. Reprinted in: Software Pioneers

  • Parnas, David, "Designing Software for Ease of Extension and Contraction," IEEE Transactions on Software Engineering, Vol. SE-5, No. 1, pp. 128-138, March 1979.

  • Bergland, G.D., "A Guided Tour of Program Design Methodologies", Computer, 1981.

    What are the characteristics of modular design? This article elaborates the relevant concepts of cohesion, coupling, complexity, correctness and correspondence.

  • Brooks, Fredrick P. Jr, "No Silver Bullet. Essence and Accidents of Software Engineering", Information Processing, 1986.

  • Moseley, Ben and Peter Marks, "Out of the Tar Pit", Software Practice Advancement, 2006.

Further reading

  • Nancy Leveson's MIT syllabus is a fantastic resource covering much more
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment