SlideShare uma empresa Scribd logo
1 de 28
agile architecture
1 - architecture to ease refactoring under changing requirements
an architectural reference modelan architectural reference model
for medium to large scale applications that will undergo changefor medium to large scale applications that will undergo change
agile architectureagile architecture
mark collins-copemark collins-cope
independent consultantindependent consultant
agile architecture
2 - architecture to ease refactoring under changing requirements
introducing the armintroducing the arm
objectives and background
banking system worked example using arm
interface
application
domain
infrastructure
platform
arm rules
putting it into practice
summary
agile architecture
3 - architecture to ease refactoring under changing requirements
arm - where does it come fromarm - where does it come from
model we’ve developed and refined over many projects
has been “discovered” a number of times by different people
applied in current form on last four projects i’ve worked on
it works to reduce costs/timescales and increase quality!
agile architecture
4 - architecture to ease refactoring under changing requirements
arm objectivesarm objectives
Factoring - improved factoring of code
Intelligibility - knowing what is where
Separation of concerns - ui from core logic
from infrastructure
Stability - lower = more stable
Testabilility - improved test coverage
at the end of an ARM is a … FISST!
agility
quality
agile architecture
5 - architecture to ease refactoring under changing requirements
introducing the armintroducing the arm
objectives and background
banking system worked example using arm
interface
application
domain
infrastructure
platform
arm rules
putting it into practice
summary
agile architecture
6 - architecture to ease refactoring under changing requirements
arm - banking application examplearm - banking application example
agile architecture
7 - architecture to ease refactoring under changing requirements
interface - initiates!interface - initiates!
handles interface
to async. external
actors (seperation of concerns)
concerned with
presentation (UI or
XSI) (seperation of concerns)
timed behaviour
(factoring of code)
no business logic
(seperation of concerns)
uses SOA provided
by application
(factoring of code)
agile architecture
8 - architecture to ease refactoring under changing requirements
application - serves!application - serves!
service oriented
architecture (factoring of code)
createAccount
getAccounts
wiring together
domain layer
packages
application specific
customisations of
lower “outerfaces”
testability
soa enables automated
functional testing
agile architecture
9 - architecture to ease refactoring under changing requirements
domain - represents!domain - represents! domain specific
components
(factoring of code)
e.g. accounting, banking,
healthcare, etc.
potentially used across
multiple applications
(“product-line”
components)
often decoupled
(separation of concerns)
more stable than
application
(stability)
may have
“outerfaces”
(interfaces intended to be realised
by a higher layer)
tested via mock
application layer
(testability)
agile architecture
10 - architecture to ease refactoring under changing requirements
infrastructure - assists!infrastructure - assists!
no domain
dependencies
(stability)
re-usable technical
domain
components
(factoring of code / testability)
e.g. persistence, lists,
useful types, smart-
pointers, general
observer mechanism
(c++), etc.
very often have
“outerfaces”
agile architecture
11 - architecture to ease refactoring under changing requirements
platform - underpins!platform - underpins!
things you bring in!:
DBMS
STL (C++)
JDBC (Java)
Motif (Unix) Libs
Java Swing Libs
O/S APIs
clearly can’t depend
on your code!
infrastructure
components migrate to
platform over time
agile architecture
12 - architecture to ease refactoring under changing requirements
introducing the armintroducing the arm
objectives and background
banking system worked example using arm
interface
application
domain
infrastructure
platform
arm rules
putting it into practice
summary
agile architecture
13 - architecture to ease refactoring under changing requirements
arm - general rulesarm - general rules
dependencies point
downward
level of
component/package is
highest level of its
constituent classes
objective: push code down as
far as possible (stability)
e.g. ui validation in performed
in domain layer
e.g. general purpose SOA login
& security mechanism in
infrastructure
components/packages
shouldn’t cross layers -
split them (separation of
concerns)
GUIDebit
DialogBox
clerk central banking system
FileExchange
Manager
DebitControl
DBTransaction
Manager
Account
DebitRule
Checker
AppDebit
Rules
Persistent
Class
Class
Component
(<<component subsystem>>)
1-1 directed
association
is a subclass of
*
GUIDialog Other platform services … (e.g. RBDMS)
GUI Environment -
eg. Windows/Motif
Bespoke persistence
component
1-many directed
association
*
Generic account
component
Application specific
use of account
component
... ...
... ...
Interaction with external world
agile architecture
14 - architecture to ease refactoring under changing requirements
introducing the armintroducing the arm
objectives and background
banking system worked example using arm
interface
application
domain
infrastructure
platform
arm rules
putting it into practice
summary
agile architecture
15 - architecture to ease refactoring under changing requirements
putting it into practiceputting it into practice
arm in practise
Four projects (two in finance, one in AI, one in online content
provision)
practical experience - benefits – better quality less cost
common vocabulary between developers
reduced line count in code (intra-project re-use)
increased productivity (66% less time in one case)
costs – getting up to steam
agile architecture
16 - architecture to ease refactoring under changing requirements
putting it into practice – getting up to steamputting it into practice – getting up to steam
fragrance of the model presented here:
there are subtleties
these will become apparent when you try to use it
but:
it’s not rocket science
any reasonable developer can get to grips with it given
a couple of days training
some on project mentoring
agile architecture
17 - architecture to ease refactoring under changing requirements
putting it into practice – agile package mapputting it into practice – agile package map
MORE HOLIDAY PHOTOS LATER!
agile architecture
18 - architecture to ease refactoring under changing requirements
summarysummary
objectives and background
banking system worked example using arm
interface
application
domain
infrastructure
platform
arm rules
putting it into practice
summary
agile architecture
19 - architecture to ease refactoring under changing requirements
any questions (end of part one)any questions (end of part one)
For more information on the arm visit:
Markcollinscope.info -
development whitepapers
Two day course – agile architecture
(email markcollinscope@gmail.com)
Or come and talk to me after the
presentation!
agile architecture
20 - architecture to ease refactoring under changing requirements
part two – video stores examplepart two – video stores example
customers can register for email and text message alerts when a video comes
free
customers can reserve a video using the UI
customers can reserve a video by replying to text (SMS) message
TITLE CUSTOMER
search search
Cancel Reserve
agile architecture
21 - architecture to ease refactoring under changing requirements
video stores - implementation modelvideo stores - implementation model
cd VideoStoreImplementationDiagram
ff
InterfaceAlertControl
AlertTimer
PlatformTimer
GeneralTimerUtility
DomainCustomers
DomainAlertsDomainVideos
DomainReservations
Customers
Customer
Alerts
Alert
Reservations
Reservation
Videos
Video
ApplicationAlertServices
AlertServices
«interface»
AlertSender
EmailAlertSender
InfrastructurePersistence
Key
Transaction
InfrastructureSMS
SMSListener
«interface»
SMSActioner
SMSSender
SMSAlertSender
InterfaceIncomingSMS
SMSParser
ApplicationReservationServices
ReservationServices
InterfaceReservationGUI
PlatformGUILibrary
SimpleButton
ReserveVideoButton
PlatformJDBC
PlatformEmail
Emailer
ApplicationCustomerServices
CustomerServices
ApplicationVideoServices
VideoServices
... etc
ReserveVideoDialog
*
*
*
**
*
*
*
«realize»
«realize»
«realize»
common pattern:
platform/infrastructure
calls-back to interface
- timer
- UI
- SMS Listener
decoupled domain-layer
packages
in-house written SMS
package
in-house persistence
agile architecture
22 - architecture to ease refactoring under changing requirements
video stores - typical interactionvideo stores - typical interaction
cd SMSParser in action
InterfaceIncomingSMS
SMSParser
+ processIncomingSMS(text, telNumber) : void
InfrastructureSMS
SMSListener
+ SMSListener() : void
«interface»
SMSActioner
+ processIncomingSMS(telNumber, text) : void
ApplicationReservationServices
ReservationServices
+ ReserveVideoForCustomer(v, c) : void
ApplicationCustomerServices
CustomerServices
+ FindCustomerByTelNumber() : Key
DomainCustomers
Customer
+ Customer(telNumber) : void
[2.1] Find the customer by tel. no. [3] Make reservation
«realize»
[1] Call back invokes SMSParser
[2.2]
agile architecture
23 - architecture to ease refactoring under changing requirements
decoupling the domain by keydecoupling the domain by key
cd DomainReservations - in detail
DomainReservations
Reservation
- reserver: Key
- reservedItem: Key
+ Reservation(Key, Key) : void
Reservations
+ createReservation(Key, Key) : void
*
*
agile architecture
24 - architecture to ease refactoring under changing requirements
application versus domainapplication versus domain
application may “customise”
extensible domain packages
application / domain split
assists in automated testing –
next slide
improved code factoring –
two implementations of
AlertSender
cd VideoStoreImplementationDiagram
DomainAlerts
Alerts
Alert
ApplicationAlertServices
AlertServices
«interface»
AlertSender
EmailAlertSender
SMSAlertSender
*
*
«realize»
«realize»
agile architecture
25 - architecture to ease refactoring under changing requirements
automated unit testing (domain)automated unit testing (domain)
TestDomainAlerts
pretends to be an
application layer
package
MockAlerter
enabels
TestDomainAlerts
to verify the
correct behaviour
cd AlertPackageAndTestHarness
DomainAlerts
Alert
- watcher: Key
- watchedItem: Key
Alerts
+ SendNecessaryAlerts() : void
+ createAlert() : void
«interface»
AlertSender
+ sendAlert(watchedItem, watcher) : void
TestDomainAlerts
DomainAlertTester
+ testDomainAlert() : void
MockAlerter
+ sendAlert(watchedItem, watcher) : void
«realize»
*
*
agile architecture
26 - architecture to ease refactoring under changing requirements
video stores - implementation modelvideo stores - implementation model
cd VideoStoreImplementationDiagram
ff
InterfaceAlertControl
AlertTimer
PlatformTimer
GeneralTimerUtility
DomainCustomers
DomainAlertsDomainVideos
DomainReservations
Customers
Customer
Alerts
Alert
Reservations
Reservation
Videos
Video
ApplicationAlertServices
AlertServices
«interface»
AlertSender
EmailAlertSender
InfrastructurePersistence
Key
Transaction
InfrastructureSMS
SMSListener
«interface»
SMSActioner
SMSSender
SMSAlertSender
InterfaceIncomingSMS
SMSParser
ApplicationReservationServices
ReservationServices
InterfaceReservationGUI
PlatformGUILibrary
SimpleButton
ReserveVideoButton
PlatformJDBC
PlatformEmail
Emailer
ApplicationCustomerServices
CustomerServices
ApplicationVideoServices
VideoServices
... etc
ReserveVideoDialog
*
*
*
**
*
*
*
«realize»
«realize»
«realize»
common pattern:
platform/infrastructure
calls-back to interface
- timer
- UI
- SMS Listener
decoupled domain-layer
packages
in-house written SMS
package
in-house persistence
agile architecture
27 - architecture to ease refactoring under changing requirements
faqsfaqs
do I have to have all these layers?
is this big up-front design?
shouldn’t it be a strictly layered model?
does using the arm lead to unnecessary extra code?
is persistence always infrastructure?
arm only deals with horizontal sub-division, doesn’t it?
does interface really initiate?
agile architecture
28 - architecture to ease refactoring under changing requirements
wrap-upwrap-up
ARM promotes:
Factoring of code
Intelligibility
Separation of concerns
Stability
Testability
ARM layers:
interface – initiates
activity
application – serves via
an SOA
domain – represents
domain abstractions
infrastructrure – assists
with non-domain
specific code
platform – underpins

Mais conteúdo relacionado

Mais procurados

MADES Seminar @ Laboratory of Model-Driven Engineering Applied to Embedded Sy...
MADES Seminar @ Laboratory of Model-Driven Engineering Applied to Embedded Sy...MADES Seminar @ Laboratory of Model-Driven Engineering Applied to Embedded Sy...
MADES Seminar @ Laboratory of Model-Driven Engineering Applied to Embedded Sy...
Alessandra Bagnato
 
Evolving Industrial Software Architectures into a Software Product Line: A Ca...
Evolving Industrial Software Architectures into a Software Product Line: A Ca...Evolving Industrial Software Architectures into a Software Product Line: A Ca...
Evolving Industrial Software Architectures into a Software Product Line: A Ca...
Heiko Koziolek
 
Component Based Distributed System Development
Component Based Distributed System DevelopmentComponent Based Distributed System Development
Component Based Distributed System Development
Emmanuel Fuchs
 
AF3 Interner Tag Offene Tueren
AF3 Interner Tag Offene TuerenAF3 Interner Tag Offene Tueren
AF3 Interner Tag Offene Tueren
af_devel
 
4 agile developement_using_ccrc-sujeet_mishra
4 agile developement_using_ccrc-sujeet_mishra4 agile developement_using_ccrc-sujeet_mishra
4 agile developement_using_ccrc-sujeet_mishra
IBM
 
ALM for CA Plex and CA 2E
ALM for CA Plex and CA 2EALM for CA Plex and CA 2E
ALM for CA Plex and CA 2E
ADC Austin Tech
 
Establishing a service factory
Establishing a service factoryEstablishing a service factory
Establishing a service factory
davemayo
 

Mais procurados (20)

MADES Seminar @ Laboratory of Model-Driven Engineering Applied to Embedded Sy...
MADES Seminar @ Laboratory of Model-Driven Engineering Applied to Embedded Sy...MADES Seminar @ Laboratory of Model-Driven Engineering Applied to Embedded Sy...
MADES Seminar @ Laboratory of Model-Driven Engineering Applied to Embedded Sy...
 
Evolving Industrial Software Architectures into a Software Product Line: A Ca...
Evolving Industrial Software Architectures into a Software Product Line: A Ca...Evolving Industrial Software Architectures into a Software Product Line: A Ca...
Evolving Industrial Software Architectures into a Software Product Line: A Ca...
 
Prasad_CTP
Prasad_CTPPrasad_CTP
Prasad_CTP
 
Aspect Oriented Development
Aspect Oriented DevelopmentAspect Oriented Development
Aspect Oriented Development
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patterns
 
Agile Independent Verification & Validation Body of Knowledge v1.1
Agile Independent Verification & Validation Body of Knowledge v1.1Agile Independent Verification & Validation Body of Knowledge v1.1
Agile Independent Verification & Validation Body of Knowledge v1.1
 
Dmt 5899 workshop - Learn to Collaborate, Trace, Review and Reuse Your Requir...
Dmt 5899 workshop - Learn to Collaborate, Trace, Review and Reuse Your Requir...Dmt 5899 workshop - Learn to Collaborate, Trace, Review and Reuse Your Requir...
Dmt 5899 workshop - Learn to Collaborate, Trace, Review and Reuse Your Requir...
 
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
 
Component Based Distributed System Development
Component Based Distributed System DevelopmentComponent Based Distributed System Development
Component Based Distributed System Development
 
RTF - Prasad bhatt
RTF - Prasad bhattRTF - Prasad bhatt
RTF - Prasad bhatt
 
AF3 Interner Tag Offene Tueren
AF3 Interner Tag Offene TuerenAF3 Interner Tag Offene Tueren
AF3 Interner Tag Offene Tueren
 
4 agile developement_using_ccrc-sujeet_mishra
4 agile developement_using_ccrc-sujeet_mishra4 agile developement_using_ccrc-sujeet_mishra
4 agile developement_using_ccrc-sujeet_mishra
 
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...
 
C++ N Pv2
C++ N Pv2C++ N Pv2
C++ N Pv2
 
Unifying Windows Client and Microsoft Desktop Virtualization Deployments with...
Unifying Windows Client and Microsoft Desktop Virtualization Deployments with...Unifying Windows Client and Microsoft Desktop Virtualization Deployments with...
Unifying Windows Client and Microsoft Desktop Virtualization Deployments with...
 
ALM for CA Plex and CA 2E
ALM for CA Plex and CA 2EALM for CA Plex and CA 2E
ALM for CA Plex and CA 2E
 
Establishing a service factory
Establishing a service factoryEstablishing a service factory
Establishing a service factory
 
Automation And Robotic Solutions By Geometrix Automation & Robotic Solutions,...
Automation And Robotic Solutions By Geometrix Automation & Robotic Solutions,...Automation And Robotic Solutions By Geometrix Automation & Robotic Solutions,...
Automation And Robotic Solutions By Geometrix Automation & Robotic Solutions,...
 
IBM Rational Rhapsody 8.3.1 install guide with Cygwin for Executable MBSE
IBM Rational Rhapsody 8.3.1 install guide with Cygwin for Executable MBSEIBM Rational Rhapsody 8.3.1 install guide with Cygwin for Executable MBSE
IBM Rational Rhapsody 8.3.1 install guide with Cygwin for Executable MBSE
 
HP ALM; HP ALI 2.5
HP ALM; HP ALI 2.5HP ALM; HP ALI 2.5
HP ALM; HP ALI 2.5
 

Destaque (7)

SUKAD Group - General Information
SUKAD Group - General InformationSUKAD Group - General Information
SUKAD Group - General Information
 
Managing Software Debt Workshop at Intel
Managing Software Debt Workshop at IntelManaging Software Debt Workshop at Intel
Managing Software Debt Workshop at Intel
 
Universal computing
Universal computingUniversal computing
Universal computing
 
An Introduction To The PMI ACP® Exam
An Introduction To The PMI ACP® ExamAn Introduction To The PMI ACP® Exam
An Introduction To The PMI ACP® Exam
 
Rally Fream Work
Rally Fream WorkRally Fream Work
Rally Fream Work
 
Root Cause Analysis (RCA) Tools
Root Cause Analysis (RCA) ToolsRoot Cause Analysis (RCA) Tools
Root Cause Analysis (RCA) Tools
 
Project Management Basics Training Promotion
Project Management Basics Training PromotionProject Management Basics Training Promotion
Project Management Basics Training Promotion
 

Semelhante a agile architecture - two hour presentation - two worked examples

Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
ghodgkinson
 
Techcello at a glance
Techcello at a glanceTechcello at a glance
Techcello at a glance
Techcello
 
Iisrt arshiya hesarur
Iisrt arshiya hesarurIisrt arshiya hesarur
Iisrt arshiya hesarur
IISRT
 
Finacle 3tier-architecture-converted
Finacle 3tier-architecture-convertedFinacle 3tier-architecture-converted
Finacle 3tier-architecture-converted
Mani kandan
 
CA 2E CM Whats New In 8.5
CA 2E CM Whats New In 8.5CA 2E CM Whats New In 8.5
CA 2E CM Whats New In 8.5
ADC Austin Tech
 
Track h tools for improving design productivity - altera
Track h   tools for improving design productivity - alteraTrack h   tools for improving design productivity - altera
Track h tools for improving design productivity - altera
chiportal
 
Track h tools for improving design productivity - altera
Track h   tools for improving design productivity - alteraTrack h   tools for improving design productivity - altera
Track h tools for improving design productivity - altera
chiportal
 

Semelhante a agile architecture - two hour presentation - two worked examples (20)

Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
 
InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...
InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...
InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...
 
Software Product Lines by Dr. Indika Kumara
Software Product Lines by Dr. Indika KumaraSoftware Product Lines by Dr. Indika Kumara
Software Product Lines by Dr. Indika Kumara
 
A Software Factory Integrating Rational Team Concert and WebSphere tools
A Software Factory Integrating Rational Team Concert and WebSphere toolsA Software Factory Integrating Rational Team Concert and WebSphere tools
A Software Factory Integrating Rational Team Concert and WebSphere tools
 
branch_architecture
branch_architecturebranch_architecture
branch_architecture
 
Ia rm001 -en-p
Ia rm001 -en-pIa rm001 -en-p
Ia rm001 -en-p
 
Cisco project ideas
Cisco   project ideasCisco   project ideas
Cisco project ideas
 
The Trinity Architecture
The Trinity ArchitectureThe Trinity Architecture
The Trinity Architecture
 
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer DemandPaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
 
Techcello at a glance
Techcello at a glanceTechcello at a glance
Techcello at a glance
 
IBM SmartCloud Orchestration
IBM SmartCloud OrchestrationIBM SmartCloud Orchestration
IBM SmartCloud Orchestration
 
From Components To Services
From Components To ServicesFrom Components To Services
From Components To Services
 
Iisrt arshiya hesarur
Iisrt arshiya hesarurIisrt arshiya hesarur
Iisrt arshiya hesarur
 
Better application architecture with #microservices and #BPM (as APaaS)
Better application architecture with #microservices and #BPM (as APaaS)Better application architecture with #microservices and #BPM (as APaaS)
Better application architecture with #microservices and #BPM (as APaaS)
 
Finacle 3tier-architecture-converted
Finacle 3tier-architecture-convertedFinacle 3tier-architecture-converted
Finacle 3tier-architecture-converted
 
CA 2E CM Whats New In 8.5
CA 2E CM Whats New In 8.5CA 2E CM Whats New In 8.5
CA 2E CM Whats New In 8.5
 
Ppt0000000
Ppt0000000Ppt0000000
Ppt0000000
 
Overview
OverviewOverview
Overview
 
Track h tools for improving design productivity - altera
Track h   tools for improving design productivity - alteraTrack h   tools for improving design productivity - altera
Track h tools for improving design productivity - altera
 
Track h tools for improving design productivity - altera
Track h   tools for improving design productivity - alteraTrack h   tools for improving design productivity - altera
Track h tools for improving design productivity - altera
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

agile architecture - two hour presentation - two worked examples

  • 1. agile architecture 1 - architecture to ease refactoring under changing requirements an architectural reference modelan architectural reference model for medium to large scale applications that will undergo changefor medium to large scale applications that will undergo change agile architectureagile architecture mark collins-copemark collins-cope independent consultantindependent consultant
  • 2. agile architecture 2 - architecture to ease refactoring under changing requirements introducing the armintroducing the arm objectives and background banking system worked example using arm interface application domain infrastructure platform arm rules putting it into practice summary
  • 3. agile architecture 3 - architecture to ease refactoring under changing requirements arm - where does it come fromarm - where does it come from model we’ve developed and refined over many projects has been “discovered” a number of times by different people applied in current form on last four projects i’ve worked on it works to reduce costs/timescales and increase quality!
  • 4. agile architecture 4 - architecture to ease refactoring under changing requirements arm objectivesarm objectives Factoring - improved factoring of code Intelligibility - knowing what is where Separation of concerns - ui from core logic from infrastructure Stability - lower = more stable Testabilility - improved test coverage at the end of an ARM is a … FISST! agility quality
  • 5. agile architecture 5 - architecture to ease refactoring under changing requirements introducing the armintroducing the arm objectives and background banking system worked example using arm interface application domain infrastructure platform arm rules putting it into practice summary
  • 6. agile architecture 6 - architecture to ease refactoring under changing requirements arm - banking application examplearm - banking application example
  • 7. agile architecture 7 - architecture to ease refactoring under changing requirements interface - initiates!interface - initiates! handles interface to async. external actors (seperation of concerns) concerned with presentation (UI or XSI) (seperation of concerns) timed behaviour (factoring of code) no business logic (seperation of concerns) uses SOA provided by application (factoring of code)
  • 8. agile architecture 8 - architecture to ease refactoring under changing requirements application - serves!application - serves! service oriented architecture (factoring of code) createAccount getAccounts wiring together domain layer packages application specific customisations of lower “outerfaces” testability soa enables automated functional testing
  • 9. agile architecture 9 - architecture to ease refactoring under changing requirements domain - represents!domain - represents! domain specific components (factoring of code) e.g. accounting, banking, healthcare, etc. potentially used across multiple applications (“product-line” components) often decoupled (separation of concerns) more stable than application (stability) may have “outerfaces” (interfaces intended to be realised by a higher layer) tested via mock application layer (testability)
  • 10. agile architecture 10 - architecture to ease refactoring under changing requirements infrastructure - assists!infrastructure - assists! no domain dependencies (stability) re-usable technical domain components (factoring of code / testability) e.g. persistence, lists, useful types, smart- pointers, general observer mechanism (c++), etc. very often have “outerfaces”
  • 11. agile architecture 11 - architecture to ease refactoring under changing requirements platform - underpins!platform - underpins! things you bring in!: DBMS STL (C++) JDBC (Java) Motif (Unix) Libs Java Swing Libs O/S APIs clearly can’t depend on your code! infrastructure components migrate to platform over time
  • 12. agile architecture 12 - architecture to ease refactoring under changing requirements introducing the armintroducing the arm objectives and background banking system worked example using arm interface application domain infrastructure platform arm rules putting it into practice summary
  • 13. agile architecture 13 - architecture to ease refactoring under changing requirements arm - general rulesarm - general rules dependencies point downward level of component/package is highest level of its constituent classes objective: push code down as far as possible (stability) e.g. ui validation in performed in domain layer e.g. general purpose SOA login & security mechanism in infrastructure components/packages shouldn’t cross layers - split them (separation of concerns) GUIDebit DialogBox clerk central banking system FileExchange Manager DebitControl DBTransaction Manager Account DebitRule Checker AppDebit Rules Persistent Class Class Component (<<component subsystem>>) 1-1 directed association is a subclass of * GUIDialog Other platform services … (e.g. RBDMS) GUI Environment - eg. Windows/Motif Bespoke persistence component 1-many directed association * Generic account component Application specific use of account component ... ... ... ... Interaction with external world
  • 14. agile architecture 14 - architecture to ease refactoring under changing requirements introducing the armintroducing the arm objectives and background banking system worked example using arm interface application domain infrastructure platform arm rules putting it into practice summary
  • 15. agile architecture 15 - architecture to ease refactoring under changing requirements putting it into practiceputting it into practice arm in practise Four projects (two in finance, one in AI, one in online content provision) practical experience - benefits – better quality less cost common vocabulary between developers reduced line count in code (intra-project re-use) increased productivity (66% less time in one case) costs – getting up to steam
  • 16. agile architecture 16 - architecture to ease refactoring under changing requirements putting it into practice – getting up to steamputting it into practice – getting up to steam fragrance of the model presented here: there are subtleties these will become apparent when you try to use it but: it’s not rocket science any reasonable developer can get to grips with it given a couple of days training some on project mentoring
  • 17. agile architecture 17 - architecture to ease refactoring under changing requirements putting it into practice – agile package mapputting it into practice – agile package map MORE HOLIDAY PHOTOS LATER!
  • 18. agile architecture 18 - architecture to ease refactoring under changing requirements summarysummary objectives and background banking system worked example using arm interface application domain infrastructure platform arm rules putting it into practice summary
  • 19. agile architecture 19 - architecture to ease refactoring under changing requirements any questions (end of part one)any questions (end of part one) For more information on the arm visit: Markcollinscope.info - development whitepapers Two day course – agile architecture (email markcollinscope@gmail.com) Or come and talk to me after the presentation!
  • 20. agile architecture 20 - architecture to ease refactoring under changing requirements part two – video stores examplepart two – video stores example customers can register for email and text message alerts when a video comes free customers can reserve a video using the UI customers can reserve a video by replying to text (SMS) message TITLE CUSTOMER search search Cancel Reserve
  • 21. agile architecture 21 - architecture to ease refactoring under changing requirements video stores - implementation modelvideo stores - implementation model cd VideoStoreImplementationDiagram ff InterfaceAlertControl AlertTimer PlatformTimer GeneralTimerUtility DomainCustomers DomainAlertsDomainVideos DomainReservations Customers Customer Alerts Alert Reservations Reservation Videos Video ApplicationAlertServices AlertServices «interface» AlertSender EmailAlertSender InfrastructurePersistence Key Transaction InfrastructureSMS SMSListener «interface» SMSActioner SMSSender SMSAlertSender InterfaceIncomingSMS SMSParser ApplicationReservationServices ReservationServices InterfaceReservationGUI PlatformGUILibrary SimpleButton ReserveVideoButton PlatformJDBC PlatformEmail Emailer ApplicationCustomerServices CustomerServices ApplicationVideoServices VideoServices ... etc ReserveVideoDialog * * * ** * * * «realize» «realize» «realize» common pattern: platform/infrastructure calls-back to interface - timer - UI - SMS Listener decoupled domain-layer packages in-house written SMS package in-house persistence
  • 22. agile architecture 22 - architecture to ease refactoring under changing requirements video stores - typical interactionvideo stores - typical interaction cd SMSParser in action InterfaceIncomingSMS SMSParser + processIncomingSMS(text, telNumber) : void InfrastructureSMS SMSListener + SMSListener() : void «interface» SMSActioner + processIncomingSMS(telNumber, text) : void ApplicationReservationServices ReservationServices + ReserveVideoForCustomer(v, c) : void ApplicationCustomerServices CustomerServices + FindCustomerByTelNumber() : Key DomainCustomers Customer + Customer(telNumber) : void [2.1] Find the customer by tel. no. [3] Make reservation «realize» [1] Call back invokes SMSParser [2.2]
  • 23. agile architecture 23 - architecture to ease refactoring under changing requirements decoupling the domain by keydecoupling the domain by key cd DomainReservations - in detail DomainReservations Reservation - reserver: Key - reservedItem: Key + Reservation(Key, Key) : void Reservations + createReservation(Key, Key) : void * *
  • 24. agile architecture 24 - architecture to ease refactoring under changing requirements application versus domainapplication versus domain application may “customise” extensible domain packages application / domain split assists in automated testing – next slide improved code factoring – two implementations of AlertSender cd VideoStoreImplementationDiagram DomainAlerts Alerts Alert ApplicationAlertServices AlertServices «interface» AlertSender EmailAlertSender SMSAlertSender * * «realize» «realize»
  • 25. agile architecture 25 - architecture to ease refactoring under changing requirements automated unit testing (domain)automated unit testing (domain) TestDomainAlerts pretends to be an application layer package MockAlerter enabels TestDomainAlerts to verify the correct behaviour cd AlertPackageAndTestHarness DomainAlerts Alert - watcher: Key - watchedItem: Key Alerts + SendNecessaryAlerts() : void + createAlert() : void «interface» AlertSender + sendAlert(watchedItem, watcher) : void TestDomainAlerts DomainAlertTester + testDomainAlert() : void MockAlerter + sendAlert(watchedItem, watcher) : void «realize» * *
  • 26. agile architecture 26 - architecture to ease refactoring under changing requirements video stores - implementation modelvideo stores - implementation model cd VideoStoreImplementationDiagram ff InterfaceAlertControl AlertTimer PlatformTimer GeneralTimerUtility DomainCustomers DomainAlertsDomainVideos DomainReservations Customers Customer Alerts Alert Reservations Reservation Videos Video ApplicationAlertServices AlertServices «interface» AlertSender EmailAlertSender InfrastructurePersistence Key Transaction InfrastructureSMS SMSListener «interface» SMSActioner SMSSender SMSAlertSender InterfaceIncomingSMS SMSParser ApplicationReservationServices ReservationServices InterfaceReservationGUI PlatformGUILibrary SimpleButton ReserveVideoButton PlatformJDBC PlatformEmail Emailer ApplicationCustomerServices CustomerServices ApplicationVideoServices VideoServices ... etc ReserveVideoDialog * * * ** * * * «realize» «realize» «realize» common pattern: platform/infrastructure calls-back to interface - timer - UI - SMS Listener decoupled domain-layer packages in-house written SMS package in-house persistence
  • 27. agile architecture 27 - architecture to ease refactoring under changing requirements faqsfaqs do I have to have all these layers? is this big up-front design? shouldn’t it be a strictly layered model? does using the arm lead to unnecessary extra code? is persistence always infrastructure? arm only deals with horizontal sub-division, doesn’t it? does interface really initiate?
  • 28. agile architecture 28 - architecture to ease refactoring under changing requirements wrap-upwrap-up ARM promotes: Factoring of code Intelligibility Separation of concerns Stability Testability ARM layers: interface – initiates activity application – serves via an SOA domain – represents domain abstractions infrastructrure – assists with non-domain specific code platform – underpins