System design and the cost of architectural complexity

I have not read this yet but it is on the list. If you read this, feel free to share your thoughts.

https://dspace.mit.edu/handle/1721.1/79551

1 Like

Some interesting thoughts on the role of an system architect.

The fact that modern system are so complicated that the design itself must be decomposed and distributed, and the idea that modem systems are so complex that unexpected behaviors can emerge (often due to interactions between separately designed components) leads to a new role for a design professional known as a system architect. The role of this person is to analyze stakeholders, study their needs, and serve as their representative throughout the design process. The architect must use this information to devise a concept for a complex system and ensure that when built, it functions appropriately. In 2004, the Massachusetts Institute of Technology ‘ESD Architecture Committee’ [55] said that “[m]an-made… systems are intended to have certain primary functions, plus other properties that we call “ilities:” durability, maintainability, flexibility, and so on… The primary functions have immediate value while the ilities tend to have life-cycle value… Complex systems have behaviors and properties that no subset of their elements have… Some of these are deliberately sought as the product of methodical design activity… While achieving these behaviors, the designers often accept certain undesirable … side effects… In addition, systems have unanticipated behaviors commonly called emergent. Emergent behaviors may turn out to be desirable in retrospect, or they may be undesirable.” The architect must design a system that can function properly, appropriately control and channel its complexity, and make hard tradeoffs. The architect must identify important system-level properties that must be managed centrally, decompose the design into manageable chunks, create design rules [5] and promote design patterns [56] which allow engineers to manage complexity within and between their subsystem boundaries. Up-front choices that an architect makes constrain the design space, but also reduce ambiguity and reduce the time that will be required to converge to a workable system if done properly. The role of the architect is to identify inherent tensions in the space of possible designs that will lead to chaos if left unmanaged, manage those choices centrally, and leave teams free to innovate independently within the necessary constraints. Important design rules may seem sub-optimal at the local level. In such cases, the role of the architect is to represent the global perspective. The architect must also represent the long-term perspective by carefully considering total lifecycle costs because maintenance costs sometimes exceed the cost of development by a ratio of ten to one. [57] Pimmler and Eppinger say “[t]he choice of product architecture has broad implications for product performance, product change, product variety, and manufacturability.” [58] Brooks says that establishing a common vision around a system plan with “conceptual integrity” is of utmost importance. [59, 60] Crawley says that of all activities that go on during the creation of a system, architecture “has some of the greatest impact on eventual success.” [1]

There is a lot in this paragraph:

  • represent stakeholders
  • design patterns
  • constraints (which may seem sub-optimal at the local level)
  • design rules
  • long-term perspective
  • managing complexity
  • life-cycle