Focus on Microsoft Technologies - Tutorials, Articles, Code Samples.

Thursday, October 30, 2008

Software Architecture and Design Series 1 ---- Do you know?

What is software architecture?

The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them

What are Architecture Description Languages?

Architecture description languages (ADLs) are used to describe a Software Architecture. Several different ADLs have been developed by different organizations, including AADL (SAE standard), Wright (developed by Carnegie Mellon), Acme (developed by Carnegie Mellon), xADL (developed by UCI), Darwin (developed by Imperial College London), DAOP-ADL (developed by University of Málaga). Common elements of an ADL are component, connector and configuration.

Who is a software architect?

A software architect is someone who knows how to put together a system that satisfies the fundamental requirements of its stakeholders. He knows software technologies; processes; understands project and software lifecycles; etc.

What are the important aspects of Software Architecture?

  • components and frameworks,
  • systematic accumulation of architectural experience, and
  • Architectural methodology.

Software architecture is commonly organized in views, which are analogous to the different types of blueprints made in building architecture. Within the ontology established by ANSI/IEEE 1471-2000, views are instances of viewpoints, where a viewpoint exists to describe the architecture in question from the perspective of a given set of stakeholders and their concerns.

Some possible views (actually, viewpoints in the 1471 ontology) are:

  • Functional/logic view
  • Code/module view
  • Development/structural view
  • Concurrency/process/thread view
  • Physical/deployment view
  • User action/feedback view
  • Data view

One of the hottest topics in software architecture is the services oriented approach to building solutions and how this can provide agility, flexibility and reuse.

Post a Comment