Mapping Capabilities to Requirements
In my previous blog, I discussed the idea that architecture is the mapping of requirements to capabilities.
Are these mappings "one to one" and "onto"?
The mapping is into – not onto, since some requirements may not be met by existing capabilities, and some capabilities may not satisfy any particular requirement, but are included because they come along as part of other capabilities that are required.
The capabilities that are required, but do not exist, define the scope of the architecture that must be engineered and developed.
The mapping is many-to-many. Many requirements can be satisfied by a single capability, and several capabilities may satisfy a single requirement. Of course, both requirements and capabilities may be complex concepts that can be decomposed into simpler entities.
For example:
- One requirement satisfied by more than one capability: A requirement to control access to a computer system could be satisfied by a userid/password authorization and/or biometrics authorization capability.
- One capability satisfying more than one requirement: Biometric identification can be used to meet authorization requirements, and provide usage pattern data.
So you are saying map some requirements to capabilities?
Yes, but even more than that.
End users are often much more conversant in expressing Requirements in terms of the capabilities that they envision they need in order to accomplish some goals or to complete a mission.
The IT guys, architects, designers and engineers, need Requirements specified in very precise terms in order to practice their magic. When end users evaluate a product they ask: "What does it do?", or "How do I use it?" – not: "What requirements does it satisfy?".
Ideally, end users express their needs in terms of capabilities that architects – through, modeling and analysis express in terms of requirements – usually functional requirements.
We make one further assumption, and that is, most of the requirements for any IT system have already been identified, analyzed, and realized in existing products. A key strategy that we are enabling is to map users’ expressions of capabilities directly to the capabilities provided by existing products. Using this approach, we can identify several candidate architectures that utilize existing products, and refine the design based on nonfunctional requirements. This gives the designers and implementers the luxury of concentrating on the really new and innovative aspects of a system and provides an infrastructure for testing those innovations that can be modified at the model level and generated as often as needed without extensive overhead.


