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
Click here 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:
#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 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 for more information):
#4 – Software Architecture Documentation
There are two different aspects of software architecture documentation:
- Viewpoints and Perspectives or Quality Attributes
- Viewpoints have been recognized by IEEE standard and various authors (Rozanski, Woods) 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 or Quality Attributes 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 has been recognized as the most commonly used modeling language. Click here to read the whitepaper by MIT on applying UML as an architecture model language.
- Archimate – Archimate standard by The Open Group has been recognized by many vendors and companies as the preferred language for software architecture documentation in recent times.