Fundamentals to Modern Day: Software architecture

Post date: Dec 4, 2018 2:46:14 AM

Software architecture is not too old discipline compared to programming. Few years back it was considered as emerging discipline and since it was emerging, lots of things are added: new definitions, new scope and subjects. The way software were developed in 90's is different than the way they are developed now in year 2019. Tools, platforms and frameworks have changed and it has an impact on the way people used to perceive software design and architecture. Now you will have to consider modern days platforms, tools and opportunities while defining your architecture, still basic fundamentals of architecture and design remains same. One need to build his knowledge from basics to advanced new concepts. I have tried listing topics which needs to be learnt by some one who is interested to learn Architecture in IT/Software. This is to help those who wants to be an architect and the scope here is not enterprise architecture:


Basic concepts and definitions

    1. What is covered in SAD (Software Architecture Document)?

    2. What is software architecture

    3. Why it is important to focus in architecture?

    4. IEEE 1471-2000 Recommended practice for description of architecture intensive system

    5. Views & view point

    6. 4+1 view

    7. Describe the use of each view

      1. Audience:

      2. Area:

      3. Related Artifacts:

    8. C4 Model

    9. Different aspects (Business/Functional/Information/Solution/UX architecture)

    10. Architectural styles & architectural patterns

    11. Quality Attributes

      1. Availability

    12. Interoperability

      1. Modifiability

      2. Testability

    13. Usability

      1. Performance (performance and scalability)

    14. Security

    15. Robustness

      1. Adaptability

    16. Architecture trade off analysis method (ATM)

Defining architecture

    1. Identify and prioritize use cases

    2. Describe the functional requirements with a significant impact on the architecture (architecturally significant requirements

    3. Describe the architectural constraints of the system

    4. Define context level architecture as is and to be (Identify key abstractions)

    5. Describe the layers and subsystems of the application

    6. Tool & technology selection

    7. Build versus buy analysis

    8. Describe the most important use-case realization. Will contain the Analysis Model and the Design Model

    9. Describe design’s concurrency aspects

    10. Describe how the system will be deployed. Will contain the Deployment Model

    11. Describe any significant persistent element. Will contain the Data Model

    12. Describe any performance issues and constraints

    13. Describe any aspects related to the quality of service (QoS) attributes

    14. Rationale and Justification for Architectural Approach

Architecture review

    1. Troubleshooting issues in code, design and architecture

    2. Architecture review

Architecture in modern days context

    1. Architecture for Microservices

    2. Architecture for Big data and NoSQL

    3. Architecture in Cloud

    4. Architecture for mobile applications

    5. User Experience

    6. Integration techniques and architecture

UML Modeling

    1. Use case

    2. Sequence

    3. Collaboration

    4. Class diagram

    5. Data flow

    6. Activity diagram

    7. Data model

    8. Business process modeling

Object Oriented Analysis

    1. Analysis Model

    2. Use case model

    3. Domain object model,

    4. Structures: generalization specialization, aggregation, hierarchies,

    5. Attributes and behaviors (services)

    6. Principles

    7. Best Practices

Object Oriented Design

    1. Object responsibility assignment principles

    2. Use case realization (sequence and collaboration)

    3. Identifying software classes to achieve loose coupling, cohesiveness and other quality requirements

    4. Design patterns

    5. Best Practices


    1. Translating design to code

    2. Coding best practices

    3. Continuous integration and testing

    4. Static analysis

    5. Code smell


    1. How to be ready for deployment from day 1: Avoid pitfalls of being in development mode

    2. Different deployment options

    3. Switching from development to deployment mode

    4. Cloud, Virtualization and Container based deployment

    5. Dev-Ops

Interesting resources

SAD (Software Architecture Document) Template:

What is software architecture?:

Why is it important to focus in software architecture?:

IEEE Recommended Practice for Architectural Description of Software-Intensive Systems

Views and view points

4+1 views

C4 Model

Architectural styles and architecture patterns

Software architecture review: