Software architecture
Software architecture underlies the practice of building computer software. In the same way as a building architect sets the principles and goals of a building project as the basis for the draftsman's plans, so too, a software architect sets out the software architecture as a basis for actual system design specifications, per the requirements of the client.
| Table of contents |
|
2 Views 3 Architecture Examples 4 Related Concepts 5 See Also 6 References |
History
Software architecture as a concept was touched upon already in the 1960s by (for example) Edsger Dijkstra, but has increased in popularity since the early 1990s, largely due to activity within Rational Software Corporation and within Microsoft.
Views
Software architecture is commonly organised in views, which are analogous to the different types of blueprints made in common architecture. Some possible views are:
- Functional/logic view
- Code view
- Development/structural view
- Concurrency/process/thread view
- Physical/deployment view
- User action/feedback view
Architecture Examples
There are many common ways of designing computer software modules and their communications, among them:
- Client-server
- Distributed computing
- Peer-to-peer system
- Monolithic system
- Three-tier model
- Structured (module-based but usually monolithic within modules)
- Component Software (strictly module-based, usually object-oriented programming within modules, slightly less monolithic)
Related Concepts
There are also a number of concepts which have been used in software architecture including
- software design patterns
- software antipatterns
- standard data models
The foundation ontology presently being standardized by the IEEE is intended to simplify and constrain the work of ontologists to a degree, and will to that degree simplify many decisions in software architecture.
See Also
References
- Software Architecture by Rick Kazman gives a good overview of architectural concepts
- Architectural Blueprints - the 4+1 View Model of Software Architecture by Philippe Kruchen (Rational Software)
- ''Multi-Paradigm Design in C++ - Jim Coplien - outlines all reasonable design approaches possible in C++, which is a particularly rich language but difficult for beginners.
