Creating Software Architecture

In this section, I take you through the creation of your software architecture. The heart of the section is a process you can use to do the actual design. First, however, I discuss some basics that cut across your architecture and the process that defines it:

  • Timing: In the following section, I discuss when you should create your software architecture.
  • Problem categories: The various domains of computing that influence your solution. Chapter 8 provides more information about using these categories to identify patterns that can help you solve your problem, but the topic is worth a mention here, because designing an architecture cuts across domains.
  • Layers and abstractions: Abstraction is a very important part of computing that plays an important role in software architecture. In this section, I tell you a little bit about abstraction and the very effective technique of stacking abstractions into layers.

Finally, I give you a process you can use to shape and refine your architecture. This process is iterative: You start at a high level and work your way lower, refining the architecture as you go deeper. Some of this deep dive into the architecture layers functionality into the design. Some of the refinement comes from bringing in components and services from different problem areas.

Deciding when to create an architecture

Historically, architectures are created in the design phase or early in the development of a system. If you're using a waterfall ...

Get Pattern-Oriented Software Architecture For Dummies now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.