Guideline: Selecting Architectural View
Architectural design is the sum of the strategic design decisions that affect all or most of the system.
Relationships
Main Description

Design is all about optimization of an object analysis model (also known as Platform Independent Model). As such, all of design is driven by various design constraints, including, but not limited to, QoS requirements. The optimization is applied at three levels of abstraction: architectural (system-wide), mechanistic (collaboration-wide), and detailed (class-wide). 

Architectural optimization is decomposed into five key aspects or viewpoints:

  • Subsystem and Component View
  • Concurrency and Resource View
  • Distribution View
  • Safety and Reliability View
  • Deployment View

Each of the viewpoints has its own literature and set of design patterns. Each design pattern is a generalized solution to a commonly occurring problem that occurs within that viewpoint. The overall architecture is the sum of the design pattern selection from all the architectural views. In addition to these key architectural views, there are secondary views that may be important in some real-time and embedded systems. Common secondary architectural concerns include:

  • Security
  • Data management
  • Quality of Service management
  • Error and exceptional handling policies
  • Service Oriented Architecture (SOA)
  • Business Process Management (BPM)

In the context of a spiral lifecycle, architectural design patterns are applied iteratively, in subsequent microcycles (spiral instances). In fact, not all aspects of architecture need be applied within any specific prototype. For example, in a 5 microcycle development project, the subsystem architecture and the safety architecture may be specified in prototype 1, the distribution architecture in prototype 2, the concurrency and resource architecture in prototype 4. Nor. must all views be present in all systems. Safety and reliability view only appears in safety- or reliability-critical applications..

Be careful not to apply design patterns too soon - the object analysis (PIM) model should be as design-free as possible. Before settling on a particular design solution, explicitly identify and rank the design criteria, and weigh the design patterns against these.