Real World Software Architecture

Real World Software Architecture is dedicated to providing information and experiences from the field of Software Architecture.



Subscribe with RSS or ATOM Add to Google

Links

  • Home Page
  • Real World Software Process Engineering
  • Suggested Reading
  • .NET Dev and Arch Collection
  • SEI Essays on SA
  • Software Architecture
  • Bredemeyer
  • wwisa
  • Product Line Engineering
  • PLEES
  • Software Product Lines
  • MSDN Architecture Center
  • patterns & practices






Thursday, September 27, 2007

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.

posted by tadanderson at 6:51 AM

0 Comments:

Post a Comment

<< Home

Previous Posts

  • Agile Development != Low Ceremony && The Movement ...
  • Cool Links III- .NET 3.0, 3.5, Acropolis, TFS, AJA...
  • patterns & practices Practices Checker for ASP.NET...
  • xUnit.net - New Unit Testing Framework Based on NUnit
  • OpenUP and the Eclipse Process Framework
  • Contextual Autocomplete Guidance Bundle and Contex...
  • Microsoft Office Visio 2007 WBS Modeler
  • Microsoft Codename "Astoria" - Sept 2007 Community...
  • MSDN Office Developer Center- Stuff Just Published
  • Governing for Enterprise Security (GES) Implementa...



Powered by Blogger