SlideShare a Scribd company logo
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

More Related Content

What's hot

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
 
Prasad_CTP
Prasad_CTPPrasad_CTP
Prasad_CTP
Prasad Bhat
 
Aspect Oriented Development
Aspect Oriented DevelopmentAspect Oriented Development
Aspect Oriented Development
tyrantbrian
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patterns
Riccardo Cardin
 
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
commercescape
 
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...
IBM Rational software
 
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...
Sabino Labarile
 
Component Based Distributed System Development
Component Based Distributed System DevelopmentComponent Based Distributed System Development
Component Based Distributed System Development
Emmanuel Fuchs
 
RTF - Prasad bhatt
RTF - Prasad bhattRTF - Prasad bhatt
RTF - Prasad bhatt
Roopa Nadkarni
 
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
 
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...
Prolifics
 
C++ N Pv2
C++ N Pv2C++ N Pv2
C++ N Pv2
Denis Mishin
 
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...
Jeff Fisher
 
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
 
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,...
IndiaMART InterMESH Limited
 
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
Fraser Chadburn
 
HP ALM; HP ALI 2.5
HP ALM; HP ALI 2.5HP ALM; HP ALI 2.5
HP ALM; HP ALI 2.5
Ronit Soen
 

What's hot (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
 

Viewers also liked

SUKAD Group - General Information
SUKAD Group - General InformationSUKAD Group - General Information
SUKAD Group - General Information
SUKAD Group - Project Management Solutions
 
Managing Software Debt Workshop at Intel
Managing Software Debt Workshop at IntelManaging Software Debt Workshop at Intel
Managing Software Debt Workshop at Intel
Chris Sterling
 
Universal computing
Universal computingUniversal computing
Universal computing
Jeff Schneider
 
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
OSP International LLC
 
Rally Fream Work
Rally Fream WorkRally Fream Work
Rally Fream Work
vivek jog
 
Root Cause Analysis (RCA) Tools
Root Cause Analysis (RCA) ToolsRoot Cause Analysis (RCA) Tools
Root Cause Analysis (RCA) Tools
Jeremy Jay Lim
 
Project Management Basics Training Promotion
Project Management Basics Training PromotionProject Management Basics Training Promotion
Project Management Basics Training Promotion
Jeremy Jay Lim
 

Viewers also liked (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
 

Similar to 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
 
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...
InSource Solutions
 
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
Thejan Wijesinghe
 
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
Prolifics
 
branch_architecture
branch_architecturebranch_architecture
branch_architecture
jimmy mathebula
 
Ia rm001 -en-p
Ia rm001 -en-pIa rm001 -en-p
Ia rm001 -en-p
fjmolinacantero
 
Cisco project ideas
Cisco   project ideasCisco   project ideas
Cisco project ideas
VIT University
 
The Trinity Architecture
The Trinity ArchitectureThe Trinity Architecture
The Trinity Architecture
Christos Tsakostas
 
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
Cisco IT
 
Techcello at a glance
Techcello at a glanceTechcello at a glance
Techcello at a glance
Techcello
 
IBM SmartCloud Orchestration
IBM SmartCloud OrchestrationIBM SmartCloud Orchestration
IBM SmartCloud Orchestration
IBM Danmark
 
From Components To Services
From Components To ServicesFrom Components To Services
From Components To Services
James Phillips
 
Iisrt arshiya hesarur
Iisrt arshiya hesarurIisrt arshiya hesarur
Iisrt arshiya hesarur
IISRT
 
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)
Alexander SAMARIN
 
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
 
Ppt0000000
Ppt0000000Ppt0000000
Ppt0000000
rakesh191
 
Overview
OverviewOverview
Overview
rakesh191
 
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
 

Similar to 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
 

Recently uploaded

Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 

Recently uploaded (20)

Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 

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