▲ An architecture is the software system design.
▲ The ultimate goal of the engineering stage is to converge on a stable architecture baseline.
▲ An architecture baseline is not a paper document; it is a collection of information across all the engineering sets.
▲ Architectures are described by extracting the essential information from the design models.
Software architecture is the central design problem of a complex software system, in the same way that architecture is the central design problem of a complex skyscraper. However, a software architecture has several additional dimensions of complexity. In contrast to the architecture of a large building, the critical performance attributes and features of a complex software system cannot be described through stable laws of physics. They are not governed by any well-accepted form of mathematics. Thus, software architects have no irrefutable first principles. There are many heuristics and fuzzy guidelines, but the fundamental measures of goodness are highly situation-dependent. Lacking established theory, software architects must rely on some form of experimentation in formulating software architectures. This is one of the main reasons for transitioning to an iterative process, in which early activities emphasize and promote architecture evolution through prototyping and demonstration.
Previous chapters have made many assertions about architecture without defining the term. No definition of software architecture is accepted throughout the industry. This chapter condenses some perspectives on architecture to build a context in which the management perspective of an architecture-first process can be understood.
Because early software systems were far less powerful than present-day systems, architectures were much simpler and required only informal representations. In a single-computer, single-program system, the mapping among design objects, implementation objects, and deployment objects was generally trivial. In today's complex software systems, we have evolved to multiple, distinct models and views to exploit the advantages of modern technologies such as commercial components, object-oriented methods, open systems, distributed systems, host and target environments, and modern languages. A model is a relatively independent abstraction of a system. A view is a subset of a model that abstracts a specific, relevant perspective.
7.1 ARCHITECTURE: A MANAGEMENT PERSPECTIVE
The most critical technical product of a software project is its architecture: the infrastructure, control, and data interfaces that permit software components to cooperate as a system and software designers to cooperate efficiently as a team. Establishing accurate and precise communications among teams of people is a timeless problem in any organization. When the communications media include multiple languages and intergroup literacy varies, the communications problem can become extremely complex and even unsolvable. If a software development team is to be successful, the interproject communications, as captured in the software architecture, must be both accurate and precise.
From a management perspective, there are three different aspects of an architecture.
1. An architecture (the intangible design concept) is the design of a software system, as opposed to the design of a component. This includes all engineering necessary to specify a complete bill of materials. Significant make/ buy decisions are resolved, and all custom components are elaborated so that individual component costs and construction/assembly costs can be determined with confidence.
2. An architecture baseline (the tangible artifacts) is a slice of information across the engineering artifact sets sufficient to satisfy all stakeholders that the vision (function and quality) can be achieved within the parameters of the business case (cost, profit, time, technology, people).
3. An architecture description (a human-readable representation of an architecture, which is one of the components of an architecture baseline) is an organized subset of information extracted from the design set model(s). It includes the additional ad hoc notation (text and graphics) necessary to clarify the information in the models. The architecture description communicates how the intangible concept is realized in the tangible artifacts.
These definitions are necessarily abstract, because architecture takes on different forms across different system domains. In particular, the number of views and the level of detail in each view can vary widely. The architecture of a resume, for example, has a much simpler form than the architecture of a major motion picture, even though both products may represent different forms of biographies. The architecture of a glider has a much simpler form than the architecture of a jumbo jet, even though both products are aircraft. Similarly, the architecture of the software for an air traffic control system is very different from the software architecture of a small development tool.
The importance of software architecture and its close linkage with modern software development processes can be summarized as follows:
• Achieving a stable software architecture represents a significant project milestone at which the critical make/buy decisions should have been resolved. This life-cycle event represents a transition from the engineering stage of a project, characterized by discovery and resolution of numerous unknowns, to the production stage, characterized by management to a predictable development plan.
• Architecture representations provide a basis for balancing the trade-offs between the problem space (requirements and constraints) and the solution space (the operational product).
• The architecture and process encapsulate many of the important (high-payoff or high-risk) communications among individuals, teams, organizations, and stakeholders.
• Poor architectures and immature processes are often given as reasons for project failures.
• A mature process, an understanding of the primary requirements, and a demonstrable architecture are important prerequisites for predictable planning.
• Architecture development and process definition are the intellectual steps that map the problem to a solution without violating the constraints; they require human innovation and cannot be automated.
Was this article helpful?
What you need to know about… Project Management Made Easy! Project management consists of more than just a large building project and can encompass small projects as well. No matter what the size of your project, you need to have some sort of project management. How you manage your project has everything to do with its outcome.