What is it good for? ... management, service management, risk management, communications and ... Software architecture is a set of software structures.
Why Architecture? A Note on motivating an Architectural Capability Michael Hoche Jan. 2017
WHY ARCHITECTURE
!1
Why Architecture What is it? What is it good for? How does it come to be? The purpose of this note is to convey basic knowledge about architecture design motivating establishing an architecture capability. What is architecture? The International Standards Organization defines ‘‘architecture’’ in ISO/IEC 42010 as ‘‘The fundamental organisation of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.’’
Architecture has two meanings depending upon the context. • Either it is a formal description of a system guiding its implementation or • the structure of components, their inter-relationships, and the principles and guidelines governing their design and evolution over time. The term system is broad. It could be a device, a weapon, a plane, a helicopter, or even the complete armed forces. System providing services like protection of people or goods. These services have quality characteristics. At different scale components are in interrelationship. E.g. the air plane is a component of the armed forces providing a certain service and requiring a bunch of services. Each component, even each part has an effect on the overall performance. So there is no one-size-fits-all formal description. The scale and WHY ARCHITECTURE
!2
the kind of a system and the stakeholder of this system determines the architecture and the effort to create it. Architecture serves as blueprint for both the system and the project developing it, defining assignments to be carried out by design and implementation teams. The architecture is the primary carrier of system qualities such as performance, modifiability, and security, none of which can be achieved without a unifying architectural vision. Architecture is a means for analysis to ensure that a design approach will yield an acceptable system. By building effective architecture, one can identify design risks and mitigate them early in the development process. How is architecture created? To sustain architecture one needs a development method that reflects the needs of all stakeholders, i.e., groups of people that can affect or are affected by the architecture of a system.
An architecture development method provides a repeatable process for evolving architectures. This includes establishing an architecture framework, developing
WHY ARCHITECTURE
!3
architecture content, transitioning, and governing the realisation of architectures. In order to carry this out within a larger organisation, it is necessary to put an appropriate business capability by structures, roles, responsibilities, knowledge and skills in place that allows to mediate the needs of all stakeholders and to formalise the result. An architecture practice on enterprise scale should be a program; i.e., it should be treated like a business with resource management, performance management, service management, risk management, communications and
stakeholder management, configuration management and environment or impact management. What are the benefits? The benefits are ease on deeper insights because the architecture visualise invisible impacts. These benefits include an increased transparency of accountability, controlled risk management, protection of the existing asset base and beyond proactive control, monitoring, and management mechanisms. Particularly it increases visibility of decision-making be ensures oversight at each appropriate level, especially for decisions that may have far-reaching strategic consequences for an organisation.
WHY ARCHITECTURE
!4
What is a military application? Network-centric warfare is a military doctrine that requires to translate an information advantage by the architecture, enabled by software intense systems, into a competitive advantage of well informed geographically dispersed forces. Software intense systems are constructed to satisfy organisations’ goals. Architecture is a bridge between those business goals and the concrete system. While the path from abstract goals to concrete systems can be complex, architectures can be designed, analysed, documented, and implemented that support the achievement of doctrine goals. What is Software Architecture? Software architecture is a set of software structures. A structure is a set of elements held together by a relation. Systems are composed of many structures, and no single structure holds claim being the architecture. There are three categories of architectural structures. First, some structures partition systems into implementation units, other structures are dynamic, meaning that they focus on the way the elements interact with each other when carry out the system’s functions. A third kind of structure describes the mapping from structures to the system’s organisational, developmental, installation, and execution environments. Why Software Architecture? Software architecture is an abstraction. Because architecture consists of structures and structures consist of elements and relations, it follows that architecture comprises software elements and how the elements relate to each other. This means that architecture specifically omits certain information about elements that is not useful for reasoning about the system. Every system can be shown to comprise elements and relations among them to support some type of reasoning. The behaviour of each element is part of the architecture insofar as that behaviour can be used to reason about the system. What is a good architecture? The definition is indifferent as to whether the architecture for a system is good one or bad. Architecture may permit or preclude a system’s achievement of its behavioural, quality attribute, and life-cycle requirements. Assuming that we do not accept trial and error as the best way to choose an architecture for a system, WHY ARCHITECTURE
!5
i.e., picking an architecture at random, building the system from it, and then hacking away and hoping for the best. This raises the importance of architecture design. Architecture at what scale? There are multiple related disciplines: Software Architecture, System Architecture and Enterprise Architecture. These disciplines share broader concerns and establish constraints within which a system must live as the pictorial example shows. The enterprise scale is the city, the system scale is a building and the software scale is represented by the elevators. In this example one can see that the interdependence. Not that they are embedded in each other, but more important the flow of people and the necessary transport and storage capacity and capability influence each other. A system architecture is a representation of a system in which there is a mapping of functionality onto hardware and software components, a mapping of the software architecture onto the hardware architecture, and a concern for the human interaction with these components. A description of the software architecture, as it is mapped to hardware and networking components, allows reasoning about qualities such as performance and reliability. A description of the system architecture will allow reasoning about additional qualities such as power consumption, weight, and physical footprint. When a particular system is designed, there is frequently negotiation between system and software architect as to the distribution of functionality and, consequently, the constraints placed on the software architecture. Enterprise architecture is a description of the structure and behaviour of an organisation's processes, information flows, personnel, and organisational components, aligned with the organisation’s core goals and strategic direction. An enterprise architecture need not include information systems but these days, enterprise architectures for all but the smallest businesses WHY ARCHITECTURE
!6
are unthinkable without information system support. Thus, a modern enterprise architecture is concerned with how an enterprise’s software systems support the business processes and goals of the enterprise. Typically included in this set of concerns is a process for deciding which systems with which functionality should be supported. An enterprise architecture will specify the data model that various systems use to interact. It will specify rules for how the enterprise‘s systems interact with external systems. What are structures and views for? The neurologist, the orthopedist, the haematologist, and the dermatologist all have different views of the structure of a human body. Ophthalmologists, cardiologists, and podiatrists concentrate on specific subsystems. And the psychiatrist is concerned with different aspects of the entire arrangement’s behaviour. Although these views are pictured differently and have very different properties, all are inherently related, interconnected. So it is with all architectural views. Modern systems are too complex to grasp all at once. Instead, one restricts attention at any one moment to one structure. Why? To communicate meaningfully about an architecture, one must make clear, which structure is considered and which view is taken.
A view is a representation of a coherent set of architectural elements, as written by and read by system stakeholders. It consists of a representation of elements and the relations among them. A view is a representation of a structure, documented according to a framework in a agreed notation, and used by some system stakeholders. What insights provide structures? Structures play such an important role in our perspective on architecture because of the analytical and engineering power they hold.
WHY ARCHITECTURE
!7
Each structure provides a perspective for reasoning about some of the relevant quality attributes. Each of these structures provide a different perspective and design handle on a system, and each is valid and useful in its own right. Different system perspectives are not independent elements of one structure. That is where architecture frameworks are beneficial. How much architecture is enough? Fewer is better. Not all systems warrant consideration of many architectural structures. There is no lingua franca for architecture albeit there are many architecture frameworks. The larger the system, the more dramatic the difference between these structures tends to be. If there is only one process, then the process structure collapses to a single node and need not be explicitly represented in the design. Multiple processes need to be coordinated and synchronised. Finally architecture needs to be communicated to the stakeholder, hence the simpler the easier. In general, design, formalisation and document a structure only if doing so brings a positive return on the investment, usually in terms of decreased development or maintenance costs or in military language with less collateral damage. Where to go from here? Alignment between the stakeholder is necessary for conveying a common understanding. Hence it is necessary to establish an architectural practice for any endeavour where some system is involved. It will provide some service at some quality and it will influence its context. For several kind of systems there are architecture frameworks. They provide principles and practices for creating and using the architecture description. They structures the architects' thinking by dividing the architecture description into domains, layers or views, and offers models like matrices and diagrams for documenting each view. There are many frameworks. Their application will have a deep impact on the stakeholder and their performance and behaviour, and it will definitely influence the result. Because of these interdependencies, determining suitable frameworks and their application is itself a significant and challenging (architecture) project to create an architecture capability.
WHY ARCHITECTURE
!8