Agile Principles, Patterns, and Practices in C#

© Jennifer M. Kohnke

After reviewing the software development life cycle as I understood it, I concluded that the only software documentation that actually seems to satisfy the criteria of an engineering design is the source code listings.

Jack Reeves

In 1992, Jack Reeves wrote a seminal article"What Is Software Design?"in the C++ Journal.[1] In this article, Reeves argued that the design of a software system is documented primarily by its source code, that diagrams representing the source code are ancillary to the design and are not the design itself. As it turns out, Jack's article was a harbinger of agile development.

[1] [Reeves92] This is a great paper. I strongly recommend you read it. It is included in this book in Appendix B on page 687.

In the pages that follow, we often talk about "the design." You should not take that to mean a set of UML diagrams separate from the code. A set of UML diagrams may represent parts of a design, but those diagrams are not the design. The design of a software project is an abstract concept. It has to do with the overall shape and structure of the program, as well as the detailed shape and structure of each module, class, and method. The design can be represented by many different media, but its final embodiment is source code. In the end, the source code is the design.

Категории