|
Software Architecture |
||||
|
||||
| Architectural Viewpoints | ||||
My definition of architecture can be applied to nearly any problem of organization. So what is it we're organizing in software architecture? There are many places to stand in and around application development, and each gives a different view of related structures. Almost any view gives a different answer of what we're organizing.
My career has been in corporate software that runs the back office, the call center, the web sites and the field offices. All of these systems exist to deliver value to the enterprise so one valid point of view looks at the enterprise and how its parts - departments, offices, and systems are organized.
I personally stand in the thick of development teams, so my point of view is of applications and how their parts are organized. Application Architecture is concerned with structuring the modules, components, classes or whatever internal organs an application has, and laying them on a technical infrastructure.
Here is a (borrowed) pyramid representation of seven viewpoints of architecture:

( I'm not sure why it's a pyramid instead of a rectangle or a wedding cake. There aren't necessarily more people at the bottom layer and fewer at the top, and I'd hate to argue that one is many times more important than another. But the pyramid looks tremendously stable sitting there, and I have to love that! )
| Business | Starts with the enterprise mission statement, and describes how system and manual processes achieve business goals. |
| Information | Bridges user-defined processes to system services, presentation and service delivery mechanisms across the enterprise. |
| Application | Delivers business function, discrete pieces of work with starting and ending points, in support of ongoing business processes. |
| Integration | Establishes EAI and B2B standards and middleware solutions, on a scale from co-existence through interoperation to construction of new systems by aggregation of services. |
| Data | Manages data resources, provides and controls access. |
| Technical / Operational | Defines the infrastructure of networks, hardware, software, security, reliability, operational management, etc. |
| Management | Sets policies and practices the organization uses to achieve business goals. |
To highlight just a few ...
Enterprise Architects take a high-level view of all these layers with the most interest through the middle. They don't write the mission statement, but they participate in analysis of the business to set directions and identify opportunities in business processes. They set standards and provide technical assistance in application, integration, data and infrastructure.
Application Architects focus on the Application layer, but have intimate knowledge of the layers above and below and how their applications interact with them. They have a broad view across the layer, too, as they integrate with components from other systems to provide and consume services.
Other specialists work in the other layers. Some stand over by the database and do Data Architecture, while others tend the network and servers and operating systems in Infrastructure Architecture.
All architects recognize that the purpose of software systems is to deliver value to the enterprise by improving revenue, reducing costs, or differentiating the company in the market place. Architecture work touches all the most exciting technical bits in the company, but we never "do technology" for its own sake!
| |