Home

EncycloZine

An Encyclopedia for Curious Minds

Topics

  • Arts
    • Architecture
    • Artists
    • Dance
    • Fashion
    • Literature
    • Movies
    • Music
    • Photography
    • Theatre
    • Visual Art
  • History
    • About_History
    • Archaeology
    • Biography
    • Historical Civilizations
    • Historical Wars
    • History Events
    • History Ideas
    • World_History
  • Life & Nature
    • Animals
    • Biology
    • Ecology
    • Health
  • Recreation
    • Games
    • Indoor Recreation
    • Optical Illusions
    • Outdoor Recreation
    • Puzzles
    • Quizzes
    • Sport
    • Tourism
    • Travel
  • Science
    • Astronomy
    • Branches of Science
    • Chemistry
    • Earth
    • History of Science
    • Mathematics
    • Philosophy of Science
    • Physics
    • Scientific Method
  • Society
    • Business
    • Economics
    • Education
    • Geography
    • Language
    • Philosophy
  • Space & Astronomy
    • Astronaut
    • Hubble Space Telescope
    • NASA
    • Space Exploration
    • Space Shuttle
  • Technology
    • Transport
    • Agriculture
    • Computer
    • Engineering
    • Radio
    • Television

Active forum topics

  • What shall we talk about today?
more

Navigation

  • Forums
  • Polls

User login

  • Create new account
  • Request new password

Syndicate

Syndicate content
more

Advertising

Software architecture refers to the theory behind the actual design of 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 the actual design specifications.

History

Software architecture as a concept was touched upon already in the 1960ies by e.g. Edsger Dijkstra, but has been increasing in popularity since the early 1990ies, much due to activity within Rational Software and Microsoft.

Views

Software architecture is commonly organized 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

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 make 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 is about diversity and not standards.

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

Software ontology is often considered to be a superset of software architecture, i.e. one 'ontologist' coordinates 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 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.

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.
This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article "Software_architecture"
RoopleTheme