Architectural prototyping Flashcards
How to “shortcut” knowledge cycle in being a good architect?
Learn from others
- try in small scale
a. technology & literature reviews
b. prototyping
What is architectural prototyping?
An architectural prototype consists of a set of executables created to investigate architectural qualities related to concerns raised by stakeholders of a system under development.
Architectural prototyping is the process of designing, building, and evaluating architectural prototypes.
What are the 5 characteristics of architectural prototypes (AP)?
- Learning: exploration and learning in the architectural design space
- Quality: address issues related to quality attributes
- No functionality: AP do not provide functionality per se, but might be functional
- Risks: typically address risks in architectural design
- Knowledge transfer, communication, and architectural conformance
Example
1. Learning: exploration and learning in the architectural design space
Learned how to use a graph-based database (Neo4J) as part of my architecture and design
2. Quality: address issues related to quality attributes
Investigated buildability and performance concerns
3. No functionality: AP do not provide functionality per se, but might be functional
Little functionality in core classes meant fast development (cf. 4 hours real versus 0.23 months estimated)
4. Risks: typically address risks in architectural design
It is now less risky to choose Neo4J since we now have more knowledge of API and performance
5. Knowledge transfer, communication, and architectural conformance
AP documents the design decision. Also the validated design/architecture may be reused in real implementation
——————————–
Case 2 AP characteristics:
1. Learning: exploration and learning in the architectural design space
Learned and demonstrated how to establish a devops pipeline in the legacy infrasntructure
2. Quality: address issues related to quality attributes
Testability and buildability
3. No functionality: AP do not provide functionality per se, but might be functional
AP was quite functional
4. Risks: typically address risks in architectural design
Build and QA infrastructure contained the most “unknowns” in relation to refactoring. An evolution path is not set.
5. Knowledge transfer, communication, and architectural conformance
AP now documents and advocates the design decision.
What three types of architectural prototypes exists and what are they characterized by?
Exploratory prototypes
* Clarify architectural requirements with stakeholders
* Explore aspects of target system
* Discuss alternative solutions
Experimental prototypes
* Gauge adequacy of proposed architecture
* Quantitative measurements of quality attributes like performance
Evolutionary prototypes
* Target environment
* Keep evolving prototype
What factors can be relevant to look into regarding the conclusion (results)?
Buildability
* Graph-based prototype took significantly longer to develop than SQL-based
Performance
* Somewhat surprisingly, Neo4J performed better than SQLite for the examples
Threats to validity
* SQLite is not a full, distributable database – Neo4J was used in the embedded version
* The scenarios were very simple
* Load generated may not correspond to actual loads
* No test over network
What 3 AP steps are there?
1) Formulate a hypothesis to test with AP
2) Define actions to take during AP and perform them
3) Conclude
Example
1) Formulate a hypothesis to test with AP Focus on SCM and conduct an experimental prototype
* Buildability
- DevOps will support the “faster” identification of changes
* Testability
- Support QA on the go -> more unit tests created before development
2) Define actions to take during AP and perform them
* Setup experiment parameters
* Collect measurements in traditional SCM
* Identify DevOps technology
* Compare measures
Is AP useful for all qualities?
Availability
* AP is a viable tool
* Availability tactics design space exploration via APs
* Experimental APs for estimation
Modifiability
* APs definition states: “executable systems”
* Per se AP cannot address design-time modifiability
* … but we got the source code for analysis!
Performance
* AP may be viable tool
* Under the constraint that accurate stress by functionality can be simulated
Security
Not in the general case, but.. Denial of service?
Testability
* AP is a viable although not obvious tool
* AP’s strength in the balancing of opposing qualities?
* Monitoring cost performance – what is the balance…?
Usability
* Yes
* E.g., separate user interface
* E.g., building systems models
How does AP work to address business quality attributes?
Time to market
* AP basis for analysis of reuse
* AP delimits modules of independent development (modifiability)
Cost/benefit
* Coupled to risk
* AP addresses risk
Projected lifetime
* Indirectly through modifiability
Targeted market
* Coupled to system QAs
Rollout schedule
* Integration with legacy systems
How is AP used to address architecture quality attributes?
Conceptual integrity
* Explore whether a set of concepts are suitable for whole architecture
* APs are good for transferring architecture-as designed into architecture-as-built and thus preserve conceptual integrity
Correctness and completeness
* Depending on the AP but it could be addressed by an AP that really is the full blueprint of the final system
Buildability
* Argues this as one of the main advantages of APs…!
APs versus quality attributes - do they necessarily address all the sub-issues?
Difficult to say nay or yeah
* APs may address ’sub-issues’ of a given QA and may not address other ’sub-issues’
APs as one of several available tools for analysis
* Not the silver bullet
* Appropriateness must be considered.