Thursday, November 17, 2016

Design for Change

Use an architecture that allows change. (Posted by Jerry Yoakum)


During software development, we regularly uncover errors, new requirements, or the results of earlier miscommunications. All these cause the design to change even before it is baselined. Which should be expected - change during development is inevitable. Bersoff, Henderson, and Siegel defined the first law of system engineering as,
No matter where you are in the system life cycle, the system will change, and the desire to change it will persist throughout the life cycle.
Furthermore, after baselining the design and delivering the product, even more new requirements will appear. All this means that you must select architectures, components, and specification techniques to accommodate major and incessant change.

To accommodate change, the design should be:
  • Modular - composed of independent parts that can be easily upgraded or replaced with a minimum of impact on other parts.
  • Portable - easily altered to accommodate new host machines and operating systems.
  • Malleable - flexible to accommodate new requirements that had not been anticipated.
  • Of minimal intellectual distance.
    • Edsger Dijkstra defined intellectual distance as the distance between the real-world problem and the computerized solution to that problem. Richard Fairley argues that the smaller the intellectual distance, the easier it will be to maintain the software.
  • Under intellectual control.
    • A design is under intellectual control if it has been created and documented in a manner that enables its creators and maintainers to fully understand it.
  • Such that it exhibits conceptual integrity.
    • Conceptual integrity is an attribute of a quality design. It implies that a limited number of design "forms" are used and that they are used uniformly. When a design is complete, it should look as if one person created it all, even though it is the product of many devoted people.


* Image taken from http://www.greenville-home-remodeling.com/010-greenville-home-remodel-rare-design-before-and-after-kupersmith-front-elevation/. If you like it, check out the cool remodels they do.