The Partitioned Stack diagram indicates the scope of PED. The term “Application” signifies unique project software:
PED promotes a set of typical Design Outcomes focused on software quality expressed as “ilities”. This core list constitutes the notion of “Software Flexibility“1 and provides a taxonomy for grouping Design Concerns:
Debugability - Evidenced by ‘single language’ debug sessions.
- Alternate Path Controller
- Declarative Logging
- Exception Path Controller
Extensibility- Evidenced by business logic plugins.
- Abstraction
- Composition
- Declaration
- Delegation
- Generic Method
- Inheritance (‘base’ vs. ‘basic’)
- Plugin (injectable)
- Template Method
Portability- Evidenced by wrapping third-party APIs.
- Plugin (injectable)
- Resource Manager
Scalability – Evidenced by a graph.
- Caching
- Lazy Loading
- Multicore (Concurrent) Processing
- Class Diagrams (include ‘privately owned’)
Securability
- Authentication
- Authorization
Testablility - Evidenced by tests.
Understandability - Evidenced by readable source code.
References
- Flexibility (software) – The quality attribute of a working software application whereby changes to its code base are introduced rapidly while preserving the overall functional integrity of the application. Software flexibility is dependent upon a number of other application attributes that ensures its resiliency. These include whether the software is architected for extensibility, scalability, portability and securability, and the ease with which changes are understood, tested and debugged by the development team. Software flexibility is prized by those working on development teams, where it is critical that the software be quickly restored to a fully functional condition despite frequent iterations throughout its maturation. – Dr. Rick Minto (2012)
