Learn Software Architecture In-depth and Start Architecting
Software architecture is a broad subject and there are various aspects to it. To be effective as a software architect you need good all-round grip on the subject. This course will help you learn software architecture comprehensively starting from the basics all the way to its science, so that you can confidently apply the techniques to create your architectures.
Learn and Master Software Architecture in this Comprehensive Course
Learn Significant Architecture Perspectives: Functional Architecture, Logical Architecture, Technical Architecture, Physical Architecture, Implementation Architecture
Differentiate Enterprise Architecture, Solution Architecture, and Software Architecture
Capture Architecture Attributes, Architecture Requirements, Architecture Scenarios
Learn Architectural Styles, Architectural Patterns, Architecture Principles, Standards
Learn Microservices, Containers, Serverless Computing
Apply Architecture Tactics
Differentiate Software Design and Software Architecture
Must-have Knowledge of Software Architecture
Well-known software systems you have come across or used, have effective software architectures underlying them. It is software architecture that primarily enables the software to achieve its expected qualities such as usability, reliability, performance, scalability, and security. Addressing software architecture holistically from concepts, methods, principles, all the way to human aspects is important to help you acquire the knowledge more effectively.
Solid knowledge of software architecture is must-have for you if you want to build your career as an architect in the IT industry. There is good demand for knowledgeable software architects, and even if you are not playing the architect role now, knowing software architecture will make it easier for you to understand the software system well to effectively work on it at various levels.
Contents and Overview
How do I become an outstanding software architect? What is the importance of architecture while working with software systems? How do I capture architecture requirements for my software system? What are the different levels of architecture that I might work with? How do I arrive at architectural decisions? How do I appreciate the software architecture of a system?
You can get answers to your above questions and more in this course.
We have designed this comprehensive course on software architecture to be easily understood by people at all experience levels. This course contains 38 lectures and over 7 hours of content which you can follow at your own pace to master the subject of software architecture. To ensure your top-class learning, this course has been prepared and delivered by practicing architects, each with over 15 years of architecting experience in the Information Technology (IT) industry.
For your smooth convenient learning, we have logically broken this course down into 10 sections and each section closes with a quiz helping you refresh your learning. You will learn both the theory and practical aspects of software architecture.
The lectures of this course are in the voice of Sensei Technologies team member based in India and the accent of the voice is largely Indian English. However, to make it easier for you to follow the voice narration in the lectures, we have enabled captions (sub-titles) (English only) on all the lectures in this course. To see the captions, while going through any lecture in this course, please click on the “CC” button on the bottom right of the lecture screen and select “English US“. Captions (sub-titles) will be helpful to you – please use this feature.
In this course, you will start with learning the basic concepts of architecture.
You will then learn, using the approach of architecture scenarios involving architecture attributes, how to capture architecture requirements. You will see examples of architecture scenarios.
After that, you will learn all the significant architecture perspectives used to create and completely document software architecture. You will see examples of representations of software architecture based on these significant architecture perspectives.
You will then learn the different techniques used in coming up with the software architecture, addressing the different significant perspectives of functional architecture, logical architecture, technical architecture, physical architecture, and implementation architecture. The course will take you through architecture styles, architecture patterns, architecture principles, standards, and architecture tactics, all of which are used in arriving at your architecture. You will learn learn microservices architectural style, and serverless computing and containerization architecture patterns, explained with examples.
You will, appreciate the idea of abstraction and abstraction levels, differentiate the different architectures in your enterprise such as enterprise architecture, solution architecture, and software architecture, and also be able to link them.
After that, you will learn the full architecture process and the steps followed in it, and how to adapt the architecture process depending on the software development life-cycle processes such as agile, iterative.
And, finally, you will understand the architect role in detail with the recommended skills.
By the end of this course, you will have valuable knowledge and skills, to create effective architectures for your software systems, and to understand the architectures of existing software systems and improve those architectures in a short period of time.
Introduction to the Course
You will get an idea of the broad topics that we will cover in this course and the roles this course is suitable for.
You will learn the basics, the meaning, and the importance of software architecture.
- Properties of good architecture
- Forces acting on software and its architecture
You will learn what are architecture requirements or architecturally significant requirements?
- How they are part of software requirements?
- Different type of software requirements
- What are quality attributes of software? Eg. Reliability
- What are quality attribute requirements or non-functional requirements?
- Elements through which architecture requirements are expressed
You will learn about business goals and architecture attributes, and how to capture architecture requirements in terms of them as architecture scenarios.
- Why business goals are important to the architect
- Architecture attributes explained - performance, scalability, availability, recoverability, usability, accessibility portability, interoperability, manageability, security maintainability, flexibility
- Architecture scenarios for availability and scalability
You will learn about other forces impacting the software system architecture such as constraints, architecture principles, and standards.
- Architecture scenarios for performance
- Types of architecture constraints
- Interaction of forces among architecture attributes
This lecture initiates you into how to document software architecture. It informs you about the well-known architecture content frameworks used to represent architectures.
- Importance of architecture perspectives
- Overview of 4+1 view, Zachman framework, ISO RM-ODP, Bass
You will learn three of the five significant perspectives used for effective software architecture creation and documentation
- Functional architecture
- Logical architecture
- Technical architecture
You will learn the remaining two of the five significant perspectives used for effective software architecture creation and documentation
- Physical architecture
- Implementation architecture
This lecture helps you understand and differentiate the different levels of architecture in an enterprise, and appreciate the value of abstraction in architecture
- Enterprise architecture
- Solution architecture
- Software architecture
In this lecture, you will see documented examples for the significant architecture perspectives, for a fictitious software system.
You will learn what is the output or deliverable of the software architecture work
- Structure of software architecture document
- Sections documented in the architecture deliverable
Perspectives for architecture documentation
Architecture Techniques - Functional Architecture
You will learn the common techniques you can use across the various architecture perspectives, to create software architecture
- Architecture principles
- Evaluating architectural decision options
- Analysing risk
In this lecture, you will learn how to understand the current context and analyse it, as key steps towards coming up with the functional architecture.
- Business context
- Business processes
- Optimization tactics
You will learn how to arrive at high-level solution as a collection of functional components to complete the functional architecture.
- Conceptualizing solution
Functional architecture perspective
Architecture Techniques - Logical Architecture
You will learn the different activities you can perform to arrive at the logical architecture.
This lecture will take you in detail, through the common principles used in the logical architecture.
- “SOLID” principles
- Principle of Loose Coupling
- Principle of High Cohesion
- Principle of Information Hiding
- Separation of Concerns
- Law of Demeter
- Stability Principle
- Principle of Inversion of Control (IOC)
You will learn what are architectural styles, how they are useful to you, and see two architectural styles in detail.
- Architectural styles and examples
- Domain Driven Design style
- Platform Architecture style
You will learn about the microservices architectural style in detail with an example.
You will learn what are architectural patterns and how they are useful to you in creating software architecture.
Architecture Techniques - Technical Architecture
You will learn the different activities you can perform to arrive at the technical architecture.
This lecture will help you learn about the various architecture types used in the technical architecture.
- Multi-tier or n-tier
- Thin client
- Thick client
You will learn the well-known approaches to integration architecture - that is, how to integrate the system components with each other and/or with other systems.
- File transfer
- Shared database
- Remote call or RPC
In this lecture, you will learn what are requirement patterns and the commonly used architectural approaches to address them.
- Online transactions
- Offline transactions
- Data Analysis
You will appreciate the use of frameworks, both third party and in-house developed, for common functionalities in technical architecture.
Technical Architecture Perspective
Architecture Techniques - Physical Architecture
You will learn the different activities you can perform to arrive at the physical architecture.
This lecture helps you understand the concepts related to the performance and scalability architecture attributes. You will also learn how capacity planning is done in the physical architecture.
You will learn some of the commonly used tactics for meeting system behavioral architecture attributes such as performance, scalability, reliability, and availability, to arrive at the physical architecture.
- Concurrent processing
- Resource pooling
- Resource augmentation
- Workload shifting
You will learn the load-balancing tactic for meeting system behavioral architecture attributes, to arrive at the physical architecture.
This lecture will help you learn the partitioning tactic for meeting system behavioral architecture attributes, to arrive at the physical architecture.
- Tier partitioning
- Application partitioning
You will learn about the serverless computing architectural pattern in detail with an example, to arrive at the physical architecture.
- Different types; FaaS (Function as a Service), BaaS or MBaaS (Mobile Backend as a Service)
- Types of resources
You will learn about the containerization architectural pattern in detail with an example, to arrive at the physical architecture.
- Concept of containers
- Example of container environment
- Support for DevOps
- Differences between containers and virtual machines (VM)
You will learn some of the commonly used tactics for meeting the security and manageability architecture attributes, to arrive at the physical architecture.
- Security measures
- Authentication and authorisation
- Encryption / secure channels
- Data sensitivity based classification
- DMZ (demilitarized zones)
- Error reporting
- Tools for manageability
Physical Architecture perspective
Architecture Techniques - Implementation Architecture
You will learn the different aspects you need to focus on to arrive at the implementation architecture.
Implementation architecture perspective
This lecture broadly covers the role of architecture work in different types of software life-cycle (SDLC) processes such as waterfall, iterative, and agile.
You will learn the different steps in the architecture process and how the architecture process fits in the software development life-cycle SDLC.
- Scope the architecture
- Define the architecture
- Implement the architecture
- Verify the architecture
This lecture helps you understand what is software design, and how it is, related to and distinct from, software architecture.
- What does software design address?
- Design patterns
- Differences between software architecture and software design
You will learn the flavors of architecture work in different types of SDLC such as iterative, agile and also in some ad hoc occasions.
- Architecture dependent activities in SDLC and the respective stakeholders
Process for architecture work
You will learn the details of the software architect role.
- Skills desired in the architect role
- Rules of thumb to help in your architect journey
Architect role details