1 Day(s)
🎯 LEARNING OBJECTIVES
By the end of this session, learners will be able to:
Understand the Process: Explain the key phases of software architecture design, from requirements analysis to architectural validation.
Analyze Requirements: Translate functional requirements and quality attributes into architectural drivers and design decisions.
Design Architecture: Identify suitable architectural styles, components, interfaces, and interaction patterns based on system needs.
Evaluate Trade-offs: Assess architectural alternatives against performance, scalability, security, maintainability, and cost.
Validate the Design: Apply architecture reviews, documentation, and validation techniques to ensure alignment with business and technical objectives.
🧠 PREREQUISITES
Basic knowledge of software engineering and the Software Development Life Cycle (SDLC).
Familiarity with functional and non-functional requirements.
Basic understanding of software components, interfaces, and application design.
Awareness of common architectural styles and design principles is beneficial.
The objectives of the design process are to develop a coherent, well-organized representation of the software product that meets the customer’s requirements and satisfies the predefined quality criteria.
The process comprises the architectural design that will be followed by the detailed design in the next procedure. Architectural design provides the infrastructure for this detailed design.
We are implementing the reuse engineering methodology in order to save effort and cost, and enhance reusability of previous developed solutions.
Enterprise Architecture Team
Solution Architect
Software developers
Test Automation Team
DevOps Team
This architecture model has been inherited from TOGAF, as they have developed architecture model consists of four key pillars:
1-Business Architecture
2-Data Architecture
3-Application Architecture
4-Technology Architecture
5- Security Architecture
6- Detailed Design
So our architecture model will follow the same model, in order to keep standardization within the process, and in each pillar, We will clarify the required tasks to be performed.
Determine the system overview and context [boundary and environment] using the component and its physical location on the solution environment throw deployment diagrams.
Decompose solution into smaller connected business modules
Determine infrastructure components using:
Scanning operations types (Reporting, Security, Data access layer, …)
Complicated logics to be implemented later
Components that encapsulate Third party integration
Architect for Business rules component
Architect for Business process component
6. Architect for Security component
Enable strong passwords to prevent stealing credentials
Authentication, with encryption for sensitive data
Authorization, with least privilege approach
Periodic resetting to passwords
OTP
2 factors authentication method
Captcha to prevent automation of the registration process
Security in depth:
Objects
Functionality
7. Architect for Solution Configuration component
8. Architect for Solution provisioner as needed for SaaS model
9. Architect for Import/Export component
10. Architect for logging/monitoring component
Determine the system overview and context [boundary and environment] using the component and its physical location on the solution environment throw deployment diagrams.
Architect for Single Database per service
Determine the initial data model
Architect for a distributed database model as needed according to the business solution components
5. Architect for each database schema decomposition according to business domain models
6. Architect for multi-tenancy model as needed for SaaS model
7. Architect for Data Quality
8. Architect for Data Retention
Select product/project technologies from the following aspects:
Backend layer (Microservices architecture, WS, WebApi)
Client Side development tools (JS.JQuery.TypeScript)
DAL
Repository manager: the component that manage the layout attributes
Database layer
Third Party integration
SMS Gateway
E-Payment Gate-Way
Telerik controls
Web Service Integration
Analyze components for reuse engineering, in order to enhance previous components, save effort and cost, considering backward compatibility
Plan for mentioned components resulted from reuse engineering:
- Refactoring: which component to be refactored to meet new architecture
- Pair programming: which component need pair programming, according to sensitivity, or complexity
Apply configurable software patterns to meet analysis, users, clients, customers, environments, standards variation, so define solution-required configuration in order to prevent shutdown, enable implementation varieties between all mentioned stakeholders.
Configuration attributes can be:
Overall system parameters like: company info
Default solution Language
Standards of implementing functionalities
Definition of screen layouts, what to show and what to hide
Calculation equations
Define caching models in order to support the load balancing/performance for:
Front end applications
Backend applications
Database
Determine Non-Functional requirements components matrix, like (Caching/Security/Learnability)
Detect components throw the following:
· Group business Classes into components
· Operations groups: operations types from use cases, for example: Security, UI, DB, Network, Encryption and Services
· Architecture (Generic functionality) requirements, like generic crud/search modules.
Create MOCK modules for not-ready components and third parties if applicable.
Determine the high-level system architecture using package, component and class diagram using the documented use cases and class diagrams.
Define non-Functional matrix related requirements, and apply required modifications to the model, Example:
a) Availability required online and offline mode, so you need to implement caching model
b) Accessibility: Required implementation over different platforms, for all people, with also have disabilities, so what features can be added for them
c) Adaptability: How to adapt user behavior with the system?
d) Availability: how to design 247 availability software, like adding load balancer, grid computing architecture
11. Define the properties of sub-classes using Interfaces in order to force the standard implementation of the general required solution operations like:
initialization
Login
Open Screen
Search for item
Apply validation rules
Add new Object
Edit Object
Delete Object
Approve Object
Post Object
Prepare Report
Print Report
Secure object (Who can do what from the previous actions)
These operations will be used to detect the solution architecture and building blocks.
Determine the attributes for each component such as description, type, purpose, function and dependencies.
Check and review the reusable components library and select the reused components.
Identify design parameters such as relationships, constrains, and all the internal interfaces (among components).
Determine Integration Needed for the solution related to:
-Third party controls or solutions.
-Integration back-end for the clients using micro-services technique guided by the wireframe and use-case models
Enterprise Architect
Docker
Azure, Microsoft Cloud
Amazon Web Services