[Soni/Nord/Hofmeister] is the first article that has propagated
the idea of specifying and architecture language with UML
Conceptual level: Conceptual architecture (components, connectors)
Modules interconnection architecture (modules and their connections)
Execution architecture: runtime architecture
Code architecture level: division of systems onto files
Business Drivers - are driving factors of primary influence on the architecture. This category describes the produce requirements for functionality, non-functional requirements such as performance, scalability, budget constraints etc..
Technology Drivers - addresses the main technology influences on the architecture and its design choices. They are mostly HW and SW, current and future technologies, standards
Organizational Drivers - covers the organizational aspects and their impacts on the architecture. This category covers release strategy, resource capacities, development processes, organization skills, organization attitude towards change, risk management, etc.
The process for collecting these driving factors is iterative. As driving factors change the architecture will adapt to meet the new demands.
We may document all the Drivers, e.g the organisational drivers below:
Factor | Agile |
---|---|
Stakeholder | Customer, Senior Management, Product Owner, Architect, Project Management |
Description |
Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
We need new features to be developed quickly. We expect our products to be adoptable and flexible and our processes not to be a bottleneck. Agile will allow this
|
Drives | Extensibility, Modeling, SDK |
Issues | Organisation Strategy, Efficient Software Development |
Factor | Lean |
---|---|
Stakeholder | Customer, Senior Management, Product Owner, Architect, Project Management |
Description |
Lean is a manufacturing & production practice that considers the expenditure of resources for any other goal other than the creation of value for the end customer to be wasteful, and thus a target for elimination.
We need to be able to deliver functionality quicker. Our processes and organisation must support this.
|
Drives | Scalability, Performance, High Availability, Extensibility, Modeling, SDK, Security, Usability, Instrumentation/Monitoring, Technology/ 3PP, Self-O&M, Product Structure, Upgrade |
Related to | Strategy, Efficient Software Development |
Example of a Technology driver: |
Factor | Java 8 |
---|---|
Stakeholder | Architect, Developer |
Description |
The java platform is what we have chosen as the main run-time platform. It has been around for some time, yet there are still area's where the java platform can improve. With java 8 there are a number of improvments
http://www.infoq.com/news/2013/03/java-8-permgen-metaspace, Permgen is replaced with a Metaspace concept. |
Drives | Performance |
Related to | Software Development Frameworks, Modular Java Platform |
http://server.dzone.com/articles/think-twice-using-java-8 - Issues with streams, may not be able to use in large JVMs. Like application servers. All of the above may help drive what our architectural principles should be. Module View We document the Modules using UML Component Diagrams. A Module is a source code unit (for example a collection of Java interfaces, classes, configuration files) that provides well encapsulated functionality. This functionality can be accessed via provided one or more Interfaces. A Module can depend on other Model, by using one or more provided interfaces. A Layer contains one or more Modules. Some of the interfaces from contained Modules can be promoted on Layer level, if they are required by other layers (inter-layer dependencies). The aim is to be able to replace one layer implementation with another without impacting depending layers. This document will focus to describe these interfaces. Layers could include Execution View We use UML Deployment model. Cardinality can shoe number of possible instances of preocesses. System Views We may model the Non functional -ilities, e.g scalability, of the Layer/Module. |
No comments:
Post a Comment