Design Principles and Patterns for Software Engineering with Microsoft .NET

  • 10/15/2008

Summary

Just as an architect wouldn’t design a house while ignoring the law of gravity, a software architect shouldn’t design a piece of software ignoring basic principles such as low coupling and high cohesion. Just as an architect wouldn’t design a house ignoring building codes that apply to the context, a software architect working in an object-oriented context shouldn’t design a piece of software ignoring OOD principles such as the Open/Closed Principle (OCP), the Liskov Substitution Principle (LSP), and the Dependency Inversion Principle (DIP).

But other quality characteristics (defined in an ISO/IEC standard) exist—in particular, testability and security. These aspects must be taken care of at the beginning of the design process—even though magical testing tools and aspect orientation might partially alleviate the pain that comes from not introducing testability and security from the very beginning. The fundamentals never go out of style, we can safely say, and they are always useful and essential at whatever level of detail.