Architecture and the Quality Attributes Modifiability and Extensibility
An Architecture has many Quality Attributes (non-functional requirements). Some of them include Reliability, Usability, Security, Performance, Scalability, Extensibility, Testability, and Modifiability. For some good reads on Quality Attributes check out the following:
Quality Attributes
Quality Attributes and Service-Oriented Architectures
Quality Attribute Workshops
I have an example of a Software Architectural Synthesis Factor Table here, that I posted some time ago. I no longer use this form of template. I use SPARX EA to model the non-functional requirements. I have a template here that shows the default non-functional requirements I start with. I add too or delete from them accordingly. This blog explains why I have moved away from static templates.
I find that although Modifiability and Extensibility are two of the most important Quality Attributes, they are often overlooked. On my last project Modifiability and Extensibility were the most important Quality Attributes that came out of our ATAM-CBAM analysis.
We were designing several applications made of modules that had a lot of commonality at the module level. The second application could reuse 80% of the applications modules if architected correctly. There were 6 additional applications being built that could also take advantage of other application's modules.
Although it sounds like a no brainer, it was not an easy sell to use Product Line Engineering, common patterns of distributed architectures, and the Microsoft CAB to accomplish the high degree of Modifiability and Extensibility required. It goes back to my 80/20 rule of architecting, planning, and designing 80% of your time and you will only need 20% of your time for coding. The client want zero planning, but after a lot of back and forth, we were able to get the time needed to do it right. The payoff was tremendous.
SEI has put a new paper out on Modifiability tactics. It includes many of the patterns we used on the architecture. You can check it out here.
Quality Attributes
Quality Attributes and Service-Oriented Architectures
Quality Attribute Workshops
I have an example of a Software Architectural Synthesis Factor Table here, that I posted some time ago. I no longer use this form of template. I use SPARX EA to model the non-functional requirements. I have a template here that shows the default non-functional requirements I start with. I add too or delete from them accordingly. This blog explains why I have moved away from static templates.
I find that although Modifiability and Extensibility are two of the most important Quality Attributes, they are often overlooked. On my last project Modifiability and Extensibility were the most important Quality Attributes that came out of our ATAM-CBAM analysis.
We were designing several applications made of modules that had a lot of commonality at the module level. The second application could reuse 80% of the applications modules if architected correctly. There were 6 additional applications being built that could also take advantage of other application's modules.
Although it sounds like a no brainer, it was not an easy sell to use Product Line Engineering, common patterns of distributed architectures, and the Microsoft CAB to accomplish the high degree of Modifiability and Extensibility required. It goes back to my 80/20 rule of architecting, planning, and designing 80% of your time and you will only need 20% of your time for coding. The client want zero planning, but after a lot of back and forth, we were able to get the time needed to do it right. The payoff was tremendous.
SEI has put a new paper out on Modifiability tactics. It includes many of the patterns we used on the architecture. You can check it out here.
0 Comments:
Post a Comment
<< Home