same patterns different architectures - colombo architecture meetup - session-03

37
Same Patterns Different Architectures Samudra Kanankearachchi Software Architect

Upload: 99x-technology

Post on 05-Jul-2015

306 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

Same Patterns Different Architectures

Samudra KanankearachchiSoftware Architect

Page 2: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

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

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

• What is OOP ?

• What is a Design Patterns ?

• What is Software Architecture ?

Page 5: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

Still I cannot imagine why I wrote software like this

Page 6: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

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

StrategyProfits

Goals

Marketing & Branding

Customer Acquisition

Requirements

System, Architectural Concerns

Page 8: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

1. Technical Architecture2. System Design3. Code (Implementation)

Focus for this session

Page 9: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

Example Business Case

Page 10: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

Architecture Vs Design

Page 11: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

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

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

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

Values: How I perceive OOP when I was a student

Page 15: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

Principles: OOP Principles

• Abstraction

• Encapsulation

• Inheritance

• Polymorphism

Page 16: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

Inheritance (IS – A)Association

Realize/Implementation Dependency

Aggregation (Has – A)Composition (Has – A)

Page 17: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

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

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

Pattern applying process

Page 20: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

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

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
Page 23: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

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

Realization of Functionally Significant User Story

Page 25: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

Interaction Diagrams

Responsibilities - CRC

Responsibility Driven Designing1

2

3

Page 26: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

GRASP (General Responsibility Assignment Software Patterns )

Guide line for assigning responsibilities

Page 27: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

ControllerBundle UI Event with Use cases

Page 28: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

System Use case for CRB

This system use case run on a scheduler

Page 29: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

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
Page 31: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

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

Customer Service Contracts/Operation Contracts

Page 33: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

Customer Service Implementation

Page 34: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

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

Customer Service Low Level Design

Page 36: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

User of GOF Patterns in GRASP Process

• Creational Patterns

• Behavioral Patterns

• Structural Patterns

Page 37: Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03

Object Creation

1) Avoid Multiple new Statements (Singleton Patterns)

2) Hide the creation details from business logic

3) Create Product families