same patterns different architectures - colombo architecture meetup - session-03
TRANSCRIPT
![Page 1: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/1.jpg)
Same Patterns Different Architectures
Samudra KanankearachchiSoftware Architect
![Page 2: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/2.jpg)
Confused me staring at my code
S.O.L.I.D Principles
GOF Patterns
OOP Design Principle
Architectural Patterns
![Page 3: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/3.jpg)
Key Objectives
• Business Requirement to design pattern , How do we implement ?
• Do I really need to know All – design patterns ?
– Architectural Patterns ?
• Understand Pattern Relationships and how they have evolved.
![Page 4: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/4.jpg)
• What is OOP ?
• What is a Design Patterns ?
• What is Software Architecture ?
![Page 5: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/5.jpg)
Still I cannot imagine why I wrote software like this
![Page 6: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/6.jpg)
Why fail to understand Product Architecture ?
1. Business Architecture (Goals Objectives)2. Business Design (Branding / Sales …)3. Profit Making Business
1. System /Technical Architecture2. Technical Design 3. Technical Implementation (Code)
1. Usability Architecture2. Usability Design3. Useful software Product
Lack of collaboration between User/
Business/ Engineering
![Page 7: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/7.jpg)
StrategyProfits
Goals
Marketing & Branding
Customer Acquisition
Requirements
System, Architectural Concerns
![Page 8: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/8.jpg)
1. Technical Architecture2. System Design3. Code (Implementation)
Focus for this session
![Page 9: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/9.jpg)
Example Business Case
![Page 10: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/10.jpg)
Architecture Vs Design
![Page 11: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/11.jpg)
Architectural
• Is all banks has good telephone & Internet coverage ? Majority , Yes they have fairly good internet.
• User capacity ? Average 100 to 2000 customers a bank.
• How branches are located in the country? Around 10 – 15 branches in each district,
• Each district has a head office Country head offices are located in Colombo.
• Users Connectivity ModesWeb /Mobile/Desktop client ..
• How Does bank connect with Third Party like SLT/ CEB/ Coop-CityGet the billing Data at periodical intervals (No real time requirement)
![Page 12: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/12.jpg)
Filling the Blank - Design
• BOTTOM UP :Code > Design > Architecture , Business Use cases(Architecturally Significant)
• TOP Down :Architecture/Business Use cases > Design > Code
• Combination of both (More convenient and practical)
Architectural
Functional
Bri
dge
th
e D
esig
n G
ap
![Page 13: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/13.jpg)
Perceived Understanding(Can differ from person to person)
General design Guidelines which are paradigm Specific
Solutions to recurrent designs (Very Context Specific)
1. S.O.L.I.D Design Principles2. OOP Design Principles
(Abstraction , Encapsulation , Inheritance , Polymorphism …)
1. GOF Design Patterns2. GRASP Design Patterns 3. SOA Patterns …4. Security Patterns
![Page 14: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/14.jpg)
Values: How I perceive OOP when I was a student
![Page 15: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/15.jpg)
Principles: OOP Principles
• Abstraction
• Encapsulation
• Inheritance
• Polymorphism
![Page 16: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/16.jpg)
Inheritance (IS – A)Association
Realize/Implementation Dependency
Aggregation (Has – A)Composition (Has – A)
![Page 17: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/17.jpg)
Patterns: Solutions to recurrent design issues(Based on principles)
{Other Principles …}
Assembling Patterns 1. GOF Patterns2.GRASP Patterns…
![Page 18: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/18.jpg)
Knowing patterns is good enough ?
• No , You have to have a way to apply ?
• Where do we start ?
• How do I do it ?
![Page 19: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/19.jpg)
Pattern applying process
![Page 20: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/20.jpg)
Minimal Viable First release
• Proof of Concepts for: Architecturally significant use cases (Scenarios)
• Thin functional Slice : To cover end to end integration of application layer in a functional scenario. Functional Significant use case
![Page 21: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/21.jpg)
12345
1. Client
2. Service Layer
3. Back office Implementation /Layering
4. Service Integration Layer
5. Scheduled Third Party Services Synchronization
Discuss About What is Architecturally Significant
![Page 22: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/22.jpg)
![Page 23: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/23.jpg)
User Stories
• As a Banking user
– Register new Customer
– Unregister Customer
– Modify Customer details
– Enable Customer Services (SLT, CEB , Coop-City …)
– Balance Inquiry
![Page 24: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/24.jpg)
Realization of Functionally Significant User Story
![Page 25: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/25.jpg)
Interaction Diagrams
Responsibilities - CRC
Responsibility Driven Designing1
2
3
![Page 26: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/26.jpg)
GRASP (General Responsibility Assignment Software Patterns )
Guide line for assigning responsibilities
![Page 27: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/27.jpg)
ControllerBundle UI Event with Use cases
![Page 28: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/28.jpg)
System Use case for CRB
This system use case run on a scheduler
![Page 29: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/29.jpg)
High Cohesion /Low Coupling
• Epics -> Stories
• Refactor -> Complex Objects
• Refactor APIs into Segregated APIS
• Introduce Workflows into Aggregate APIs into Process , User Stories
• Introduce mediators to minimize coupling between objects
![Page 30: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/30.jpg)
![Page 31: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/31.jpg)
Layering Application
CommonDB
FrameworkCommon Service Helpers
Unit Tests
ModulesCustomer
Customer DAL
Customer Service
Payment
Payment DAL
Payment Service
Admin
Admin DAL
Admin Service
Modules
Customer API
Customer API Proxy
Payment API
Payment API Proxy
Admin API
Admin API Proxy
Desktop Client Web Client Mobile Client
![Page 32: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/32.jpg)
Customer Service Contracts/Operation Contracts
![Page 33: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/33.jpg)
Customer Service Implementation
![Page 34: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/34.jpg)
Top level View of Customer Module
1
2
3
1 Customer module Data Access LayerCommands : Data Access LogicDTO : Data Transfer ObjectsFacades : Data Access Abstractions to simplify Data access Operations
2 Customer Service Interface andImplementations Service Implementation: Service logic implementation
Service Interface: Service and Operation Contracts
3 Customer module Unit TestsUnit tests for Customer module.
![Page 35: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/35.jpg)
Customer Service Low Level Design
![Page 36: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/36.jpg)
User of GOF Patterns in GRASP Process
• Creational Patterns
• Behavioral Patterns
• Structural Patterns
![Page 37: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03](https://reader036.vdocuments.net/reader036/viewer/2022081401/5598432a1a28ab0f328b46e8/html5/thumbnails/37.jpg)
Object Creation
1) Avoid Multiple new Statements (Singleton Patterns)
2) Hide the creation details from business logic
3) Create Product families