Created
June 10, 2016 17:16
-
-
Save pmsudhi/4a7ca6ebe1ea39ef3c4a1db19deab13c to your computer and use it in GitHub Desktop.
Traceability, Testability, Measurability and Maintainability = Software architecture
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Please read the complete article regarding software architecture from below link | |
https://www.linkedin.com/pulse/ttmm-four-pillars-software-architecture-sudheesh-p-m | |
There are 4 basic things that should be in place in any software product- Traceability, Testability, Measurability and Maintainability. Quality of these four attribute defines maturity of a software. As a software architect one should always try to balance these four pillars for an optimal architecture. Any over focus or under focus on these attributes will result in un even pillars resulting an unstable software base | |
There are two faces for traceability. Traceability as in requirement mapping from requirement document to final product through codebase. This traceability matrix allows all stake holders to define and confirm the definition of “Done”. A well-defined traceability matrix also supports the maintainability of the software product. Most of the software development tools available today in the market have support for this. With increasing adoption of DevOps in organizations, traceability matrix has become part of software architecture naturally. | |
The other face of traceability is traceability in source code. The source code must trace enabled under different modes (probing, error logging, etc. ..) and should adapt to these mode dynamically. Traceability should expose the context, severity and information securely so that probing are streamlined. A well-defined, formatted traceability in source code will aid in testability and maintainability. | |
Testability | |
A “Test Enabled” solution is needed for firm foundation of any software architecture. There is a huge difference between testing a software and test enabling software. Test Driven Development(TDD) can be used for enabling testability in a software. A test enabled solution enables higher productivity/detectability in white box/black box testing. The testability must be enabled in a solution keeping into consideration the testing framework / tools used in an organization. | |
Measurability | |
The output of the software solution must be measurable against a unit. Measurability improves predictability of the software. A well-defined measurability matrix give visibility into the solution for the stake holders. The measurability matrix also helps to quantifying the definition of “DONE”. Measurability matrix should include counter like performance, error handling, technical debt, complexity etc. | |
Maintainability | |
Maintainability increases the cadence of software life cycle. It determines how fast you would able adapt to requirement /changes. It helps in reducing the complexity and helps transitions. | |
Other than these 4 pillars there is a 5th pillar or the “horizontal pillar” in software architecture which remain hidden. This decides the level of focus as an organization needs to do for each pillar. These are dependent upon the resources available, tools available and level of hand holding a stake holder have in the software architecture. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment