The Software architecture reference article from the English Wikipedia on 24-Jul-2004
(provided by Fixed Reference: snapshots of Wikipedia from wikipedia.org)

Software architecture

Support a children's charity online
Software architecture is a coherent set of abstract patterns guiding the design of each aspect of a larger software system.

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.

Software architecture is like building architecture in that it is to do with the purpose, themes, materials, and concept of a structure. A software architect employs extensive knowledge of software theory and appropriate experience to conduct and manage the high-level design of a software product. The software architect develops concepts and plans for software modularity, module interaction methods, user interface dialog style, interface methods with external systems, innovative design features, and high-level business object operations, logic, and flow.

The software architect consults with clients on conceptual issues, managers on broad design issues, software engineers on innovative structural features, and computer programmers on implementation techniques, appearance, and style.

Software architecture is a sketchy map of the system. Software architecture describes the coarse grain components (usually describes the computation) of the system. The connectors between these components describe the communication, which are explicit and pictured in a relatively detailed way. In the implementation phase, the coarse components are refined into "actual components", e.g, classes and objects. In the object-oriedted field, the connectors are usually implemented as interfaces.

Table of contents
1 History
2 ADL
3 Views
4 Architecture Examples
5 Related Concepts
6 See Also
7 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.

Carnegie Mellon University and University of California, Irvine are doing a lot of research on Software architecture. Mary Shaw and David Garlan from CMU wrote a book Software Architecture perspective on an emerging discipline in 1996, which brought forward the concepts in Software Architecture, such as components, connectors, styles and so on. UCI's Institute for Software Research's efforts in software architecture research is directed primarily in architectural styles, architecture description languages, and dynamic architectures.

ADL

ADLs (Architecture Description Languages) are used to describe Software Architecture. Now, there are several ADLs, such as Wright (developed by CMU), Acme (developed by CMU), C2 (developed by UCI), Darwin (developed by Imperial College London).

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:

Several languages for describing software architectures have been devised, but no consensus has yet been reached on which symbol-set and view-system should be adopted. Some believe that UML will establish a standard for software architecture views. Others believe that effective development of software relies on understanding unique constraints of each problem, and so universal notations are doomed because each provides a notational bias that necessarily makes the notation useless or dangerous for some set of tasks. They point to the proliferation of programming languages and a succession of failed attempts to impose a single 'universal language' on programmers, as proof that software thrives on diversity and not on standards.

Architecture Examples

There are many common ways of designing computer software modules and their communications, among them:

Related Concepts

There are also a number of concepts which have been used in software architecture including

Software ontology is often considered to be a superset of software architecture, i.e. one 'ontologist' co-ordinates several 'architects', 'integrators', 'data modellers', and the usability, technical documentation and trainers. There may even be some control over marketing and sales presentations if the purpose of these is to determine who the products' users are, or to find out their vocabulary or values, to help the product reflect these.

The foundation ontology presently being standardized 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