Home‎ > ‎Architecture‎ > ‎

Fundamentals to Modern Day: Software architecture

posted Dec 3, 2018, 6:46 PM by Jageshwar Tripathi   [ updated Jan 26, 2019, 6:39 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:

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
    1. Describe the use of each view
      1. Audience:
      2. Area: 
      3. Related Artifacts:
  7. C4 Model
  8. Different aspects (Business/Functional/Information/Solution/UX architecture)
  9. Architectural styles & architectural patterns
  10. Quality Attributes
    1. Availability
    2. Interoperability
    3. Modifiability
    4. Testability
    5. Usability
    6. Performance (performance and scalability)
    7. Security
    8. Robustness
    9. Adaptability
  11. 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

Implementation

  1. Translating design to code
  2. Coding best practices
  3. Continuous integration and testing
  4. Static analysis 
  5. Code smell

Deployment

  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:
https://wiki.sei.cmu.edu/sad/index.php/Software_Architecture_Documentation_Template
http://sce.uhcl.edu/helm/rationalunifiedprocess/webtmpl/templates/a_and_d/rup_sad.htm
http://sce.uhcl.edu/helm/rationalunifiedprocess/examples/csports/ex_sad.htm
http://www.ecs.csun.edu/~rlingard/COMP684/Example2SoftArch.htm

What is software architecture?:
https://www.ibm.com/developerworks/rational/library/feb06/eeles/index.html

Why is it important to focus in software architecture?:
http://csse.usc.edu/GSAW/gsaw2003/s13/northrop.pdf
https://sites.google.com/site/softwarearchitectureinpractice/2-what-is-software-architecture/2-4-why-is-software-architecture-important

IEEE Recommended Practice for Architectural Description of Software-Intensive Systems
http://cabibbo.dia.uniroma3.it/ids/altrui/ieee1471.pdf
http://iea.wikidot.com/ieee1471
https://en.wikipedia.org/wiki/IEEE_1471

Views and view points
https://iasaglobal.org/itabok/capability-descriptions/views-and-viewpoints/
http://www.mit.edu/~richh/writings/hilliard99-ifip.pdf

4+1 views
https://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf
https://en.wikipedia.org/wiki/4%2B1_architectural_view_model
https://www.coursera.org/lecture/software-architecture/3-1-2-kruchtens-4-1-model-view-z65ZO
https://softwareengineering.stackexchange.com/questions/233257/mapping-between-41-architectural-view-model-uml

C4 Model
https://c4model.com/

Architectural styles and architecture patterns
https://techbeacon.com/app-dev-testing/top-5-software-architecture-patterns-how-make-right-choice

Software architecture review:
https://www.slideshare.net/NASAPMC/danieldvorak
http://lore.ua.ac.be/Teaching/CapitaMaster/ATAMmethod.pdf
https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=513908



Comments