Overview of what Software Architecture means
Architecture forms the anchor for development. It is the principal design decision’s made about the system
WWW Web Example follows REST pattern
Unix pipe and filter is an Architecture style ( Command line is an Architecture)
Correctness, Robustness,Extendibility,Re-usability,compatibility,Portability,Ease of use,Efficiency,Timeliness,economy,Functionality
- Yaras for REST
- Thought works Tech radar
- Stack overflow developer survey
- Google developer survey
- Join architecture and design meetings
- First step to software architect
First understand the problem
Find the connection between Data and Unknown
How to Design — Fundamental design tools — Abstraction and modularity
Modularity classification below
• Direct Mapping.
• Few Interfaces.
• Small interfaces (weak coupling).
• Explicit Interfaces.
• Information Hiding.
Every Application Domain have simple machines
Components (Computation) and Connectors ( Communication)
Noun become the Objects and Verb become the Methods in those Nouns
Connectors — PIPE for single uni direction flow. Event Bus for bi directional flow with buffer and easy to add Component
Building Blocks of Connector are —
Flow of control ( changing process counter) and Flow of Data ( that is performing memory access )
Connector Roles — Communication,Coordination,Conversion,Facilitation
- Procedure Calls
2. Event Connectors
3. Data Access Connectors
4. Linkage Connector ( ex Make in unix)
5. Stream Connector ( Unix PIPE )
6. Arbitrator ( Controlling Concurrency and Synchronization)
7. Adaptor Connector ( For managing diff in components)
8. Distributor Connector ( DNS )
Basic Architecture Concepts
Non Functional Requirements — Mostly in the form of adverb ( This can be faster,quicker,etc)
UML Diagrams — State and Sequence cover behavior and Activity cover Static
QOS — Latency,durability,interaction volume
Non Functional Requirements