Architecture characteristics Flashcards
What part of defining a system is a key responsibility for architects?
Architects may collaborate on defining the domain or business requirements, but one key responsibility entails defining, discovering, and otherwise analyzing all the things the software must do that isn’t directly related to the domain functionality: architectural characteristics.
Name three typical ways of uncovering architecture characteristics
Extracting from domain concerns, requirements, and implicit domain knowledge.
What is meant by Availability?
Structural. How long the system will need to be available (if 24/7, steps need to be in place to allow the system to be up and running quickly in case of any failure).
What is meant by Continuity?
Structural. Disaster recovery capability.
What is meant by Performance?
Structural. Includes stress testing, peak analysis, analysis of the frequency of functions used, capacity required, and response times. Performance acceptance sometimes requires an exercise of its own, taking months to complete.
What is meant by Recoverability?
Structural. Business continuity requirements (e.g., in case of a disaster, how quickly is the system required to be on-line again?). This will affect the backup strategy and requirements for duplicated hardware.
What is meant by Reliability/Safety?
Structural. Assess if the system needs to be fail-safe, or if it is mission critical in a way that affects lives. If it fails, will it cost the company large sums of money?
What is meant by Robustness?
Structural. Ability to handle error and boundary conditions while running if the internet connection goes down or if there’s a power outage or hardware failure.
What is meant by Scalability?
Structural. Ability for the system to perform and operate as the number of users or requests increases.
What is meant by Configurability?
Structural. Ability for the end users to easily change aspects of the software’s configuration (through usable interfaces).
What is meant by Extensibility?
Structural. How important it is to plug new pieces of functionality in.
What is meant by Installability?
Structural. Ease of system installation on all necessary platforms.
What is meant by Leverageability/reuse?
Structural. Ability to leverage common components across multiple products.
What is meant by Localization?
Structural. Support for multiple languages on entry/query screens in data fields; on reports, multibyte character requirements and units of measure or currencies.
What is meant by Maintainability?
Structural. How easy it is to apply changes and enhance the system?