SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 
Aspect Oriented Development
Aspect Oriented DevelopmentAspect Oriented Development
Aspect Oriented Developmenttyrantbrian
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patternsRiccardo 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.1commercescape
 
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 DevelopmentEmmanuel Fuchs
 
AF3 Interner Tag Offene Tueren
AF3 Interner Tag Offene TuerenAF3 Interner Tag Offene Tueren
AF3 Interner Tag Offene Tuerenaf_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_mishraIBM
 
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
 
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 2EADC Austin Tech
 
Establishing a service factory
Establishing a service factoryEstablishing a service factory
Establishing a service factorydavemayo
 
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 MBSEFraser Chadburn
 
HP ALM; HP ALI 2.5
HP ALM; HP ALI 2.5HP ALM; HP ALI 2.5
HP ALM; HP ALI 2.5Ronit Soen
 

Was ist angesagt? (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
 

Andere mochten auch

Managing Software Debt Workshop at Intel
Managing Software Debt Workshop at IntelManaging Software Debt Workshop at Intel
Managing Software Debt Workshop at IntelChris Sterling
 
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® ExamOSP International LLC
 
Rally Fream Work
Rally Fream WorkRally Fream Work
Rally Fream Workvivek jog
 
Root Cause Analysis (RCA) Tools
Root Cause Analysis (RCA) ToolsRoot Cause Analysis (RCA) Tools
Root Cause Analysis (RCA) ToolsJeremy Jay Lim
 
Project Management Basics Training Promotion
Project Management Basics Training PromotionProject Management Basics Training Promotion
Project Management Basics Training PromotionJeremy Jay Lim
 

Andere mochten auch (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
 

Ähnlich wie Agile Architecture for Video Stores

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 KumaraThejan 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 toolsProlifics
 
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 DemandCisco IT
 
Techcello at a glance
Techcello at a glanceTechcello at a glance
Techcello at a glanceTechcello
 
IBM SmartCloud Orchestration
IBM SmartCloud OrchestrationIBM SmartCloud Orchestration
IBM SmartCloud OrchestrationIBM Danmark
 
From Components To Services
From Components To ServicesFrom Components To Services
From Components To ServicesJames Phillips
 
Iisrt arshiya hesarur
Iisrt arshiya hesarurIisrt arshiya hesarur
Iisrt arshiya hesarurIISRT
 
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-convertedMani 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.5ADC 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 - alterachiportal
 
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 - alterachiportal
 

Ähnlich wie Agile Architecture for Video Stores (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
 

Kürzlich hochgeladen

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Agile Architecture for Video Stores

  • 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