Software Architecture Guide

What is Software Architecture ?

"The architecture of a system describes its major components, their relationships, and how they interact with each other .

How to find the most important qualities to work on ?

  • find the feature that is both the most important feature for stakeholders & hardest for developers to create .

Types of Enterprise Architecture

  • Business Architecture :

  • Application / Software Architecture :

  • Information Architecture :

  • Information Technology / IT Architecture :

Components of a Software Architecture

Design

Common Architectural Designs

Category Architectual Design

Communication

  • Message Bus

  • Server Oriented Archtecutre

Deployment

  • Client / Server

  • 3 tier or N Tier

Domain

  • Domain Driven Design

Structure

  • Component Based

  • Layered

  • Object Oriented

Quality Attributes

Quality Attributes are system properties that are separate from the functionality of the system.

Static / Execution Quality Attributes

Reflect the structure of the system and organization, e.g : modularity, testability, maintainability, etc …​

Dynamic / Evolution Quality Attributes

Reflect the behaviour of a system durting its excution, e.g : throughput, robustness, scalability , etc …​

Common Quality Categories & Attributes

  • Design Qualitites : Conceptual Integrity, Maintainability, Resuability .

  • Runtime Qualities : Interoperbality, Manageability, Reliability, Scalability, Security, Performance, Availability.

  • System Qualities : Suppotability, Testability.

  • User Qualities : Usability .

  • Architecture Qualities : Correctness .

  • Non-Runtime Qualities : Portability, Integrality, Modifiability.

  • Business Quality Attributes : Cost and Schedule, Marketability.

IT Environment

Human Dynamics

Business Logic


Conceptual Model