# Standards and Guidelines for Software Architecture

As a software architect, it is important to understand available industry standards to increase your breadth of knowledge and apply the best practices available. Software architecture standards and guidelines have been represented as four different areas:

## #1 – Software Architecture Definition

### IEEE 42010 Systems and software engineering

IEEE is a professional organization that develops global standards across industries including Information Technology. They have defined a standard for defining software architecture known as _42010:2011 Systems and software engineering,_ which includes the following information

-   Terms and definitions of software architecture
-   Conceptual foundations such as model of architecture descriptionn, architecting in the life cycle, uses of architecture descriptions, architecture frameworks and description languages
-   Architecture descritpion using viewpoints, views, models, relations, and architecture rationale
-   Architecture frameworks and architecture description languages

[![IEEE-Architecture-Model](https://vedcraft.com/images/2020/09/IEEE-Architecture-Model-V4.png)](https://vedcraft.com/images/2020/09/IEEE-Architecture-Model-V4.png)

_Source: [http://www.iso-architecture.org/ieee-1471/cm/](http://www.iso-architecture.org/ieee-1471/cm/)_

[Click here](http://www.iso-architecture.org/42010/) for the official web-page by IEEE.

## #2 – Software Architecture Evaluation

### SEI ATAM: Method for Architecture Evaluation

SEI (Software Engineering Institute) is an American research and development center by Carnegie Mellon university. While SEI program of work is conducted in several principal areas, their contribution to software assurance and software engineering has been appreciated by the entire industry.

Architecture Tradeoff Analysis Method (ATAM) a technique for analyzing software architectures developed by SEI and became more of a standard for IT architects. ATAM consists of nine steps led by the evaluation leader and the process can be briefly depicted as below:

[![ATAM Process](https://vedcraft.com/images/2020/09/ATAM-Process-V1.png)](https://vedcraft.com/images/2020/09/ATAM-Process-V1.png)

Figure A – ATAM Conceptual Flow

[Click here](https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=5177) for the official web-page by SEI for ATAM (you can download PDF version of ATAM for free).  
[Click here](https://www.sei.cmu.edu/) for SEI home page.

## #3 – Software Architecture Development Methodology

While there are various recommendations, there are two approaches, which are widely recognized:

### Approach A – TOGAF Architecture Development Method (ADM)

[TOGAF](https://www.opengroup.org/togaf) is the most widely recognized framework for Enterprise Architecture development and governance. As part of TOGAF, ADM (Architecture Development Method) is a method/process to develop IT or Software Architecture. It is a phased-based iterative approach depicted below [(Click here](http://www.opengroup.org/public/arch/p2/p2_intro.htm#:~:text=The%20TOGAF%20Architecture%20Development%20Method,assets%20available%20to%20the%20organization.) for more information):

[![TOGAF ADM](https://vedcraft.com/images/2020/09/TOGAF-ADAM-V2.jpg)](https://vedcraft.com/images/2020/09/TOGAF-ADAM-V2.jpg)

Source: [http://www.opengroup.org/](http://www.opengroup.org/)

## #4 – Software Architecture Documentation

There are two different aspects of software architecture documentation:

-   **Viewpoints and Perspectives** **or Quality Attributes**
    -   **[Viewpoints](https://www.viewpoints-and-perspectives.info/home/viewpoints/)** have been recognized by IEEE standard and various authors ([Rozanski, Wood](https://www.viewpoints-and-perspectives.info/)s) as a way to provide a view of software architecture meeting the needs of targeted stakeholders. For example, Deployment viewpoint describes the environment and related dependencies for infrastructure, system, and network architects.
    -   **[Perspectives](https://www.viewpoints-and-perspectives.info/home/perspectives/)** or [**Quality Attributes**](https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=12433) have been recognized as providing a non-functional view of software architecture of system under consideration. This is to ensure the system will be able to meet quality attributes such as performance & scalability, availability, usability, security, and so on.
-   **Software Architecture Modeling Language & Tools** – There are various options and the most widely used modeling languages are:
    -   **UML** – [UML](https://www.uml.org/) has been recognized as the most commonly used modeling language. [Click here](https://web.mit.edu/richh/www/writings/hilliard99a-using-uml-for-AD.pdf) to read the whitepaper by MIT on applying UML as an architecture model language.
    -   **Archimate** – [Archimate](https://www.opengroup.org/archimate-forum/archimate-overview) standard by The Open Group has been recognized by many vendors and companies as the preferred language for software architecture documentation in recent times.

[![Viewpoints Perspectives](https://vedcraft.com/images/2020/09/ViewpointsPerspectives.png)](https://vedcraft.com/images/2020/09/ViewpointsPerspectives.png)

Viewpoints (Reference: https://www.viewpoints-and-perspectives.info/)

## Related Articles

-   [Introduction to Software Architecture](https://vedcraft.com/architecture/introduction-to-software-architecture/)
-   [Architect’s Tools for Architecture and Design](https://vedcraft.com/architecture/arch-toolkit-for-software-development/)
-   [5 Tips for Creating Effective Logical Architecture](https://vedcraft.com/architecture/5-tips-for-effective-logical-architecture/)
-   [5 Tips for Creating Physical or Deployment Architecture](https://vedcraft.com/architecture/5-tips-physical-architecture-for-cloud/)
