Tuesday, 3 November 2015

Documenting Architecture

amazon: Applied Software Architecture




[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




An approach to strategy formulation was  outlined by Hofmeister, Nord and Soni. This approach involves collecting the various different factors that can influence the architecture and producing strategies to address such.
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:


FactorAgile
StakeholderCustomer, 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
DrivesExtensibility, Modeling, SDK
IssuesOrganisation Strategy, Efficient Software Development





FactorLean
StakeholderCustomer, 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.
DrivesScalability, 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:

FactorJava 8
StakeholderArchitect, 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
  • Streams
  • Functional interfaces
  • Lambda
Parallelization was the main driving force behind lambdas, stream API.
http://www.infoq.com/news/2013/03/java-8-permgen-metaspace, Permgen is replaced with a Metaspace concept.
DrivesPerformance
Related toSoftware 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