Skip to Main Content
A useful way to talk about design is to identify principles that lead to well-designed systems. This principle is relatively easy to understand, yet applying it in a determined effort to remove duplication in code often leads to effective designs. A central design idea is to break a system into modules that hide complex implementations behind clear interfaces. Object-oriented systems are well known for decomposing systems into small objects with interfaces, but we must treat these kinds of interfaces differently from those that are exposed across a network or shared between teams. A significant issue in software design is determining where design fits in the overall software process. Design involves people, so in addition to considering how design fits into a process, you also have to think about how it fits with an organization's people. Three primary purposes for models: conceptual, specification, and implementation.