#Software_Architecture
- Productivity
When there is a defined structure/plan for coordinating work between developers when implementing individual features or grounding…
- Software Architecture — Course Overview
- [x] Module 1 — UML Architecture Diagrams✅ 2026-03-06 - [x] Module 2 — Architectural Styles ✅ 2026-10-13 - [x] Module 3 — Architecture in…
- Abstract Data Types
An abstract data type can be represented as a class that you define to organize data attributes in a meaningful way, so that related…
- Activity diagram components
Activity diagrams have a few major parts: - Start/End nodes : denoted by a labeled opaque circle where your software begins/Ends…
- Adding value to the client
Adding value to the client can sometimes be something tangible like a new feature or extra functionality, but it can also be a…
- Aesthetic perspective
The aesthetic here means the behind the scenes of architectures/styles, where architects keep in mind the Testability and Adaptability of…
- Agents of change
The main target of architects is to make a change or a decision about the system, so some architects rarely deal with code or deep…
- Analyzing and Evaluating an Architecture
In addition to designing a system, it is important to know how to evaluate the design to determine if it addresses the concerns, or the…
- Architectural styles
Architecture of systems vary depending on the architectural model/style. each style has a different way to describe it's architecture, in…
- Architecture
Architecture is the process of creating system level guardrails and guidelines to help engineers produce a stable, maintainable and long…
- Architecture in agile
Architecture in agile is a little different, you are implementing as you figure out the desired architecture in smaller cycles. which…
- Architecture overview and Process
- What is architecture. - Important factors to consider in software architecture. - Needs and advantages. - Stakeholders benefitting from…
- Architecture Trade-off Analysis Method
There are a number of methods that can be used to implement scenarios in analysis and evaluation of the entire architecture.
- Artifacts
A physical result of a development process, for example: in a game, artifacts include things like an executable to run the game, an…
- asynchronous
An asynchronous request-response relationship is one where the client sends a request, but control returns right away, so it can continue…
- Availability Example
Let us consider scenarios through an example. Imagine you are addressing the availability of a system.
- Central Data
The central data facilitates data sharing by saving the desired information from the current state of the system and serving data as…
- Client Server n-tier
n-Tier or multitier architectures are related to layered architectures.
- Communicating Architecture
It is difficult to capture the complete behavior of a system with a single perspective, when looking at whether the software…
- Customer's perspective
The Customer's perspective in the mind a software architect is of what the client needs and what they want from the business.
- Data Accessors
Data accessors make queries and transaction against stored information in Central Data, and are separated from one another and communicate…
- Data flow architecture
The system takes data in a certain form and process it through multiple stages, though not as described as a service based architecture…
- data-centric architectural style
A data-centric architectural style has two main components: - Central Data: Used to store and serve data to all components connected to…
- Database
Databases are a complex topic which would take an entire course to discuss in depth.
- Dataflow Systems
Data flow systems involve a series of transformation on sets of data.
- Deployment Details
When creating a deployment diagram, it is important to use the correct notation for various elements: - Artifacts: these are created as…
- Design Rules
Design process guidelines include:
- Development View
This view describes The Hierarchical Software Structure and considers elements such as: - Programming Languages - libraries - Toolsets It…
- Draw a Component Diagram
This is my Solution:
- Draw a Deployment Diagram
This is my Solution:
- Engineering team's perspective
When the architect looks from the engineering team's perspective, they are looking at: - Expectations of work - The needs to achieve a…
- Environment
The environment or target for development can be very specific, involving certain hardware devices, or general, involving supported…
- Evolution
After identifying what parts of the system do, it is easier to add new features or fix potential failures
- How to represent software architecture
At a high level Architectures are described by: - Identity Boxes: Things being done. - Lines: Interactions between the way things are…
- Implementing Product Lines
The book Software Product Lines in Action (2007) discusses architectural considerations for software product lines.
- Implicit Invocation Systems
In implicit invocation systems, functions are not in direct communication with each other.
- Instance-level diagrams
Instance-level diagrams are much more specific, they map specific artifacts to specific deployment targets, in particular, instance level…
- Interpreter-based Systems
In some software systems, users can write scripts, macros, or rules that access and compose the basic features of the system in new ways.
- Kruchten's 4 + 1 Model Views
Multiple perspectives are necessary to capture the complete behavior and development of a software system.
- Language-based Systems
It should be obvious that the programming language paradigm used to implement a system would affect the architectural style of that system.
- Layered Systems
Many organizations in our lives work by some kind of hierarchy, a business, a government, a student society.
- Logical View
t--- # Note This view focuses on the Functional requirements of the system, usually involving the objects of the system, from these object…
- Main Program & Subroutine
This is an architectural style that follows the procedural programming paradigm, C is a language that follows this paradigm.
- Manifistation
The Player.class file manifists the player component, the encapsulated unit that contains all the functionality of a player.
- Module 1 Assignments
To access this remote database, the mobile app sends an HTTP request to the remote server that matches the remote server’s provided…
- Module 2 — Architectural Styles
This module will explain important software architectures, their key characteristics, and how they are used in practice. ## Syllabus - [x]…
- Module 3 — Architecture in Practice
This module will focus on how software architecture is used in practice.
- Nodes
Hardware device are displayed in the same way as nodes with a device tag to differentiate it from other types of nodes.
- Object Oriented
Object oriented refers to a system composed of objects, where each object is an instance of a class which means that the type of each…
- Object Oriented Principles
For a quick review of object oriented principles: - Abstraction: Simplifying concepts by ignoring unimportant details. - Encapsulation…
- Object Oriented Style
When you choose to develop a project using an object oriented language like Java or C++ you are not just choosing a language. ** object…
- Operating System
This is the simplified view of the Operating System A kernel is the core of an operating system, one of it's main responsibilities is…
- Overview
- [x] Architecture overview and Process ✅ 2026-03-06 - [x] Communicating Architecture ✅ 2026-07-13 - [x] Module 1 Assignments✅ 2026-07-13…
- Package Diagram Legend
Packages are simply depicted as a tabbed folder with an empty package (with no elements) having it's name in the center.
- Physical View
This view handles how elements in the logical, process, and development views must be mapped to different nodes or hardware for running…
- Practical Scenario (Building a Scalable E-commerce Platform)
As a Software Development Engineer, you likely encounter the need to balance performance, maintainability, and scalability.
- Practical Scenario (Designing a Payment Processing System)
As a software developer engineer, you're constantly building systems, and understanding how different architectural styles work is key to…
- Practical Scenario (Managing Microservices with State Transition Systems)
As a software developer, you often deal with complex distributed systems.
- Practical Scenario (Wishlist feature)
This scenario will show how the Kruchten's 4 + 1 Model Views apply on a real world project, we want to add a wishlist feature to an…
- Process Control Systems
Process control is important in many processes to ensure efficient and safe operations. ## Feedback Loops A feedback loop is one of the…
- Process View
This view focuses on achieving the non-functional requirements, these are the requirements that specify the desired qualities of the…
- Product Lines and Product Families
As developers work, they should constantly be looking for opportunities for code re-use.
- Provided interface
A provided interface is used to show that a component offers an interface for others (clients and consumers) to interact with it, a…
- Publish-Subscribe
There are two important differences that differentiate the publish-subscribe architectural style from the event-based architectural style.
- Quality
A well designed system provides some benefits: - Easier maintenance - Ability to be reused in the future - Adapting to future changes
- Quality Attributes
Software architecture aims to combine software design patterns and principles in order to define the software’s elements, their…
- Reference Architecture
Products in a product line likely have similar architectures, as they serve a similar purpose.
- Relational databases
Relational databases use SQL or Structured Query Language to let you query or ask the database for information and lets you perform…
- Relations
This is an example of a relationship between two nodes, or communication path, which denotes a particular communication protocol between…
- Relationship to Organizational Structure
A study from the Harvard Business School showed that looser organizational structures, such as in open-source projects, led to more…
- relevant libraries
Relevant libraries are all the third-party libraries and implementations along with your implementations, they must be identified and…
- Repository-based Systems
Modern software systems rarely operate in isolated environments, large businesses often require different systems to communicate with each…
- Required interface
A required interface shows that a component expects a certain interface provided by another component to achieve it's goals, the required…
- Scenarios
Scenarios are made with a script that describes the sequence of interactions between objects and processes, this involves the: - Key…
- Service based perspective
The system is viewed as a collection of interacting services/parts that achieve what you want the application to do.
- Software Quality Attributes from a Developer's Perspective
Software architecture addresses these qualities by carefully structuring and coordinating design patterns in order to construct a unified…
- Software Quality Attributes from a User's Perspective
- Specification-level diagrams
Specification-level diagrams give an overview of artifacts and deployment targets, without referencing specific details like machine names.
- Stakeholders
People who are interested in the system and either use it or benefit from it.
- Stakeholders benefitting from architecture
Who are the Stakeholders of Software Architecture and how they benefit from it:
- State Transition Systems
We would like to take this opportunity to briefly discuss state transition systems.
- Swim lanes
these are used to visualize concurrent activities happening in parallel, for example; audio playing alongside the game. that is a fork in…
- synchronous
A synchronous request-response relationship is one where the client sends a request, then awaits the server’s response before continuing…
- System Architect life
Architects keep a lot in their minds, so being able to operate at different levels of abstractions is a necessary skill.
- System Structure Rules
Structural rules that ensure there is conceptual integrity when implementing the system include: - Having well-designed subsystems that…
- technological risks
Architects ask themselves "If my system is going to run for a long time, do i risk using and/or training my developers on a technology…
- The need for software architecture & advantages
We need Software architecture because it provides a solid base for developers to follow in: - What needs to be implemented. - How parts of…
- UML Activity Diagram
In a video game you follow a sequence of levels to reach a goal, moving between levels with each level serving a specific purpose.
- UML Component Diagram
UML component diagrams are a static view of a system depicting it's design at a specific time of it's development and/or evolution.
- UML Deployment Diagram
Software releases are more than just lines of code bundled together, it involves separate parts like: - Libraries - Executables…
- UML Package Diagram
In Object Oriented Software you define interacting classes and sometimes they are related, In video games you have several classes for…