Upload
francois-le-droff
View
4.207
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Join us as we share several of the key best practices we have learned over time while building Hendrix, a large business-critical Adobe enterprise application built with Flex and Adobe LiveCycle Data Services. Hendrix was built to leverage many existing systems within Adobe IT (such as our SAP customer relationship management system and computer telephony integration system). Some of these best practices may be familiar to you, and some may not. All come from the collective experience of the people who design, develop, and operate the Hendrix application.
Citation preview
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Flex & LCDS Best Practices from the Trenches
Technology & Experience Innovation
François Le Droff | Senior Computer Scientist Yaniv De Ridder | Senior Computer Scientist
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
François Le Droff
o “Just another Java guy” (doing Flex)
o +11 years in web 1+n.0 o Open Source So"ware Geek :
o FlexPMD, Cairngorm
o Ossgtp, ParisJUG, et TTFX
o French JUGs, MAX, et Solution Linux
o h#p://www.droff.com
o h#p://blogs.adobe.com/francoisledroff/ o h#p://twi#er.com/francoisledroff
o ledroff<at>adobe.com
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Yaniv De Ridder
o Flash Platform Expert
o 9+ years in front-end development
o h#p://blogs.adobe.com/yderidder/
o h#p://twi#er.com/yderidder/
o yderidde<at>adobe.com
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 4
Hendrix : Helping more customers, "rst time, in less time. Every time.
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Flex & LCDS Best Practices from the Trenches
5
o Meet Hendrix
o Architecture
o Encapsulation, Separation of Concerns
o API, API, API
o Exception Handling
o LCDS Messaging & CTI Best Practices
o Distributed Agile Offshore Processes
o So"ware Factory
Demo
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 6
One hour is not enough.
• Whitepapers • Blogposts • Solution accelerators • Open Source Projects
• Cairngorm3 • FlexPMD • etc …
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Hendrix : Key Features
7
Telephony integration Customer Identi!cation & Matching
At A Glance Case History
Selling More Of "e Right Product
Customer Service Process Wizard More to come
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
o 24/7 usage and a minimum speed requirements o Uptime of 99.95%
o 400 concurrent users for the !rst phase o Prepare for more, be scalable
Hendrix : SLA
8
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Hendrix : SLA & Non Functional Requirements
o Agent hardware & so#ware constraints
o Reusing and leveraging of the legacy systems
o SAP CRM
o Phone, telecom switches and CTI solution
9
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
User CTI Phone
Call
cent
er h
#p p
roxy
VOIP
Internet Browser
Flash Player
Hendrix Flash application
User Desktop
AMF
BI (cluster/group)
Server 3.1
Server 3.2
Server 3.3
…
Server 3.p
ECC (cluster/group)
Server 2.1
Server 2.2
Server 2.3
…
Server 1.m
CRM (cluster/group)
Server 1.1
Server 1.2
Server 1.3
…
Server 1.n
SAP
TServer Server 2.1
…
Server 1.m
AIL Server Server 1.1
…
Server 1.n
Genesys CTI
PBX PBX PBX PBX
Hendrix JBoss LCDS
Cluster
Server 1.2
Server 1.3
…
Server 1.n
Hendrix
Load
Bal
ance
r
AIL - RMI – TCP/IP
JCO - JNI – TCP/IP
Hendrix: Physical Architecture
Adobe Dylan ColdFusion Product Catalog
Adobe Content Publishing System RSS / HTTPS
Serial Number Server
Adobe LiveCycle Collaboration Service RTMPS/RTMFP
AMF
Hendrix AIR application
User Desktop
Hendrix AIR application
User Mobile Phone
AMF
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 11
Architecture Best Practices
Encapsulation, Separation of Concern
Make things as inaccessible as possible
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Hendrix Middleware Projects
12
JVM - JBoss/JEE application server [ Web container, Transaction Manager, JMX, AOP, Cache, JNDI, Logging support)
hendrix_webapp (war)
Flash Player
Spring [Micro Container, IOC, AOP, Security, LCDS integration support]
NIO Server Flex-Data Management Flex-Messaging Flex-Remoting
hendrix_java_cti (jar)
Genesys AIL SDK
hendrix_java_cat (jar)
AMF/HTTP
hendrix_java_service_api (jar)
Dev/CI/QA/Stage/Prod Parameters : JNDI
Dozer [CRM and CTI entity 2 DTOs mapper]
hendrix_java_core_service (jar)
hendrix_java_crm (jar)
JCO
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 13
Hendrix Flex Projects
o Hendrix High level Architecture with Cairngorm 3
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
IOC, utilities
o IoC o Spring o Parsley
o Utilities o Leverage JEE o Java OSS (Apache, Codehaus, Spring, JBoss, etc..) o Spicelib, KapInspect, $underbold, Cairngorm3
14
Cairngorm 3 ≠ Cairngorm 2
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 15
Multiscreen and Modular Flex Application making
o Demo
Mobile Application Desktop Browser Application
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Project setup and structure : Best Practice sample : Todo-Max
16
JVM - JBoss/JEE application server [ Web container, Transaction Manager, JMX, AOP, Cache, JNDI, Logging support)
todo_webapp (war) Spring [Micro Container, IOC, AOP, Security, LCDS integration support]
todo_java_$ex_service (jar)
NIO Server Flex-Data Management Flex-Messaging Flex-Remoting
todo_java_persistence (jar) JPA (Hibernate)
Dozer [CRM and CTI entity 2 DTOs mapper]
Flash Player
Dev/CI/QA/Stage/Prod Parameters : JNDI
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Use this Sample app as a skeleton
17
JVM - JBoss/JEE application server
todo_webapp (war)
Spring
todo_java_service (jar)
NIO Server Flex-Data Management Flex-Messaging Flex-Remoting
todo_java_crm (jar)
JCO
Dozer [CRM and CTI entity 2 DTOs mapper]
Flash Player
Dev/CI/QA/Stage/Prod Parameters : JNDI
JVM - JBoss/JEE application server
Spring
todo_java_service (jar)
NIO Server Flex-Data Management Flex-Messaging Flex-Remoting
todo_java_persistence (jar)
JPA (Hibernate)
Dozer [CRM and CTI entity 2 DTOs mapper]
Flash Player
Dev/CI/QA/Stage/Prod Parameters : JNDI
todo_webapp (war)
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 18
Multiscreen and Modular Flex Application making
o Todo Application Architecture
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Demo
19
Demo
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
API, API, API
20 15 Sept 2009 Contrôle Qualité Open Source
✔ Programming is pusblishing (an API)
✔ A Quality API :
✔ Simple ✔ Addictive
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
BI (cluster/group) Server 3.1
Server 3.2
Server 3.3
…
Server 3.p
ECC (cluster/group) Server 2.1
Server 2.2
Server 2.3
…
Server 1.m
CRM (cluster/group) Server 1.1
Server 1.2
Server 1.3
…
Server 1.n
SAP
Adobe Content Publishing System
Adobe Dylan ColdFusion Product Catalog
Hendrix JBoss LCDS
Cluster
Server 1.2
Server 1.3
…
Server 1.n
Hendrix
TServer Server 2.1
…
Server 1.m
AIL Server Server 1.1
…
Server 1.n
Genesys CTI
PBX Lo
ad B
alan
cer
PBX PBX PBX User CTI Phone VOIP
AIL - RMI – TCP/IP
Internet Browser
Flash Player
Hendrix Flash application
User Desktop
Call
cent
er h
#p p
roxy
RSS / HTTPS
AMF / HTTPS
AMF / HTTPS
JCO - JNI – TCP/IP
Hendrix: Physical Architecture
Serial Number Server
Adobe LiveCycle Collaboration Service RTMPS/RTMFP
Hendrix AIR application
User Desktop
Hendrix AIR application
User Mobile Phone
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
o Client-Side API
22
Hendrix Flex Projects
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 23
JVM - JBoss/JEE application server [ Web container, Transaction Manager, JMX, AOP, Cache, JNDI, Logging support)
hendrix_webapp (war) Spring [Micro Container, IOC, AOP, Security, LCDS integration support]
hendrix_java_core_service (jar)
NIO Server Flex-Data Management Flex-Messaging Flex-Remoting
hendrix_java_crm (jar)
JCO
Dozer [CRM and CTI entity 2 DTOs mapper]
Flash Player
hendrix_java_cti (jar)
Genesys AIL SDK
hendrix_java_cat (jar)
AMF/HTTP
hendrix_java_service_api (jar)
Dev/CI/QA/Stage/Prod Parameters : JNDI
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 24
o Before
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
o A#er
25
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 26
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 27
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 28
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Exception handling
29
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 30
JVM - JBoss/JEE application server [ Web container, Transaction Manager, JMX, AOP, Cache, JNDI, Logging support)
hendrix_webapp (war) Spring [Micro Container, IOC, AOP, Security, LCDS integration support]
hendrix_java_core_service (jar)
NIO Server Flex-Data Management Flex-Messaging Flex-Remoting
hendrix_java_crm (jar)
JCO
Dozer [CRM and CTI entity 2 DTOs mapper]
Flash Player
hendrix_java_cti (jar)
Genesys AIL SDK
hendrix_java_cat (jar)
AMF/HTTP
hendrix_java_service_api (jar)
Dev/CI/QA/Stage/Prod Parameters : JNDI
• Business/System Messages • Error/Warning/Info
• Business/System Exception • Checked/Unchecked
• Messaging Exception • General/Speci!c Code
• ErrorEvent & ErrorManager • Synchronous/Asynchronous • Client/Server roots
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
LCDS Messaging & CTI Best Practices
31
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
CTI pitfalls
• Phone Hardware differences and con%gurations issues • Dev versus Prod • Avaya phone versus Nortel phone
• Load/stress/endurance test early
• Sockets consumptions • ulimit
• $reads consumptions • Use LCDS NIO (or RTMP) channels • Use LCDS Message %ltering • And eventually leverage server side messaging/queueing technology
• JMS / AMQP (MRG)
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
LCDS Real Time Messaging helps
• Reliable Messaging
• Message thro%ling
• Channels and Endpoints –Choices, choices
• Edge Server
• Message "lters
• Message priority
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Distributed Agile Offshore process
34
Paris / Brussels Bucharest USA
Edinburgh
China
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Hendrix : Distributed Agile offshore process
o Don't Underestimate the Culture Gaps
o Separate Scrum teams by functionality not activity
o Collaboratively agree on the De"nition Of Done
o Collaboratively evaluate and manage the technical debt
35
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Hendrix : Distributed Agile offshore process
36
o Get multiple communication modes working early o Expect to need more documents
Use wikis to contain common information
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Hendrix : Distributed Agile offshore process
o Make Short Iterations
o Produce Customer Test Data & Test Scripts Early
o to Help Understand the Requirements
o Use Continuous Integration to
o Avoid Integration Headaches
o Get Early Feedback on Functionality
o Allow Early functional and performance tests
o Monitor your technical debt
37
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Industrialization/Automation
“Because Everybody Doing It Manually Hurts”
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware factory Automation for the People (because Everybody Doing It Manually Hurts)
39
Dep
ende
ncie
s Ch
ecks
Com
pila
tion
Codi
ng R
ules
Che
cks
Dep
loym
ent
Pack
agin
g
Uni
t tes
t
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
Auto
mat
ed T
ests
Continuous Integration
Server
Modi!cation Checks
Trigger
Qua
lity
Das
hboa
rd
Changelist/ Jobs
Tasks / Bug Tracking
Server
Repository Server
CI & QA Test Servers Quality & Doc Servers
Local Builds and Local App
Servers
Product Owner / User Champions / UX Designer
QA Engineers
SCM swc,swf, jar,war
push & pull deploy
Update & Commit Update
Fetch swc,swf,jar and war
Checks/Noti!cations
Flex & Java Developers
Smoke / Acceptance Test s
Func. and UX Feedbacks
Checks & Tests
Build
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware factory Automation for the People (because Everybody Doing It Manually Hurts)
40
Dep
ende
ncie
s Ch
ecks
Com
pila
tion
Codi
ng R
ules
Che
cks
Dep
loym
ent
Pack
agin
g
Uni
t tes
t
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
Auto
mat
ed T
ests
Continuous Integration
Server
Modi!cation Checks
Trigger
Qua
lity
Das
hboa
rd
Repository Server
CI & QA Test Servers Quality & Doc Servers
Local Builds and Local App
Servers
Product Owner / User Champions / UX Designer
QA Engineers
swc,swf, jar,war push & pull
deploy
Update & Commit Update
Fetch swc,swf,jar and war
Checks/Noti!cations
Flex & Java Developers
Smoke / Acceptance Test s
Func. and UX Feedbacks
Checks & Tests
Build SCM
Changelist/ Jobs
Tasks / Bug Tracking
Server
SCM
• Jira / RallyDev / others
• Perforce / SVN / Git / others
• Bridge /Connect them • Automate the creation of Perforce jobs (svn changelist) associated with Bug !xes • Ease your integration, branch management,
• Ease release managament, by keeping your scm tags and Jira versioning in synch • Release notes automation
SCM
Changelist/ Jobs
Tasks / Bug Tracking
Server
SCM
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware factory Automation for the People (because Everybody Doing It Manually Hurts)
41
Dep
ende
ncie
s Ch
ecks
Com
pila
tion
Codi
ng R
ules
Che
cks
Dep
loym
ent
Pack
agin
g
Uni
t tes
t
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
Auto
mat
ed T
ests
Continuous Integration
Server
Modi!cation Checks
Trigger
Qua
lity
Das
hboa
rd
Repository Server
CI & QA Test Servers Quality & Doc Servers
Local Builds and Local App
Servers
Product Owner / User Champions / UX Designer
QA Engineers
swc,swf, jar,war push & pull
deploy
Update & Commit Update
Fetch swc,swf,jar and war
Checks/Noti!cations
Flex & Java Developers
Smoke / Acceptance Test s
Func. and UX Feedbacks
Checks & Tests
Build SCM
Changelist/ Jobs
Tasks / Bug Tracking
Server
SCM Continuous Integration
Server
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware factory Automation for the People (because Everybody Doing It Manually Hurts)
42
Dep
ende
ncie
s Ch
ecks
Com
pila
tion
Codi
ng R
ules
Che
cks
Dep
loym
ent
Pack
agin
g
Uni
t tes
t
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
Auto
mat
ed T
ests
Continuous Integration
Server
Modi!cation Checks
Trigger
Qua
lity
Das
hboa
rd
Repository Server
CI & QA Test Servers Quality & Doc Servers
Local Builds and Local App
Servers
Product Owner / User Champions / UX Designer
QA Engineers
swc,swf, jar,war push & pull
deploy
Update & Commit Update
Fetch swc,swf,jar and war
Checks/Noti!cations
Flex & Java Developers
Smoke / Acceptance Test s
Func. and UX Feedbacks
Checks & Tests
Build SCM
Changelist/ Jobs
Tasks / Bug Tracking
Server
SCM
Dep
ende
ncie
s Ch
ecks
• Dependency Management • Scope • Transitivity • Pro!le
• One common artefacts (swc, swf, jar, war, ear) repository • proxy, hosted, grouped repositories
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware factory Automation for the People (because Everybody Doing It Manually Hurts)
43
Dep
ende
ncie
s Ch
ecks
Com
pila
tion
Codi
ng R
ules
Che
cks
Dep
loym
ent
Pack
agin
g
Uni
t tes
t
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
Auto
mat
ed T
ests
Continuous Integration
Server
Modi!cation Checks
Trigger
Qua
lity
Das
hboa
rd
Repository Server
CI & QA Test Servers Quality & Doc Servers
Local Builds and Local App
Servers
Product Owner / User Champions / UX Designer
QA Engineers
swc,swf, jar,war push & pull
deploy
Update & Commit Update
Fetch swc,swf,jar and war
Checks/Noti!cations
Flex & Java Developers
Smoke / Acceptance Test s
Func. and UX Feedbacks
Checks & Tests
Build SCM
Changelist/ Jobs
Tasks / Bug Tracking
Server
SCM
Repository Server
Codi
ng R
ules
Che
cks
• PMD for java • h$p://pmd.sourceforge.net/
• FlexPMD for AS3/Flex • h$p://sourceforge.net/adobe/%expmd/home/ • FlexPMD: Your Canary in a Coal Mine – MAX 2010
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware factory Automation for the People (because Everybody Doing It Manually Hurts)
44
Dep
ende
ncie
s Ch
ecks
Com
pila
tion
Codi
ng R
ules
Che
cks
Dep
loym
ent
Pack
agin
g
Uni
t tes
t
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
Auto
mat
ed T
ests
Continuous Integration
Server
Modi!cation Checks
Trigger
Qua
lity
Das
hboa
rd
Repository Server
CI & QA Test Servers Quality & Doc Servers
Local Builds and Local App
Servers
Product Owner / User Champions / UX Designer
QA Engineers
swc,swf, jar,war push & pull
deploy
Update & Commit Update
Fetch swc,swf,jar and war
Checks/Noti!cations
Flex & Java Developers
Smoke / Acceptance Test s
Func. and UX Feedbacks
Checks & Tests
Build SCM
Changelist/ Jobs
Tasks / Bug Tracking
Server
SCM
Com
pila
tion
Pack
agin
g
Uni
t tes
t
• javac, mxmlc • JUnit/TestNG, FlexUnit4 • swc, swf ,jar ,war ,ear ,zip ,etc
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware factory Automation for the People (because Everybody Doing It Manually Hurts)
45
Dep
ende
ncie
s Ch
ecks
Com
pila
tion
Codi
ng R
ules
Che
cks
Dep
loym
ent
Pack
agin
g
Uni
t tes
t
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
Auto
mat
ed T
ests
Continuous Integration
Server
Modi!cation Checks
Trigger
Qua
lity
Das
hboa
rd
Repository Server
CI & QA Test Servers Quality & Doc Servers
Local Builds and Local App
Servers
Product Owner / User Champions / UX Designer
QA Engineers
swc,swf, jar,war push & pull
deploy
Update & Commit Update
Fetch swc,swf,jar and war
Checks/Noti!cations
Flex & Java Developers
Smoke / Acceptance Test s
Func. and UX Feedbacks
Checks & Tests
Build SCM
Changelist/ Jobs
Tasks / Bug Tracking
Server
SCM
• Maven • Ant + Ivy • Graddle • BuildR • EasyAnt • Ant • Make
Repository Server
Dep
loym
ent
• Automated deployment on • Artefacts repository (for developers, for dependent projects) • CI test server (for developers’s check, automated functional testing) • QA test servers
• On demand for Release Candidate smoke test • UX review & Product review
• Test, stage and production ready deployment • Externalized con!guration (jndi) • Pro!led build (when platform dependent)
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware factory Automation for the People (because Everybody Doing It Manually Hurts)
46
Dep
ende
ncie
s Ch
ecks
Com
pila
tion
Codi
ng R
ules
Che
cks
Dep
loym
ent
Pack
agin
g
Uni
t tes
t
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
Auto
mat
ed T
ests
Continuous Integration
Server
Modi!cation Checks
Trigger
Qua
lity
Das
hboa
rd
Repository Server
CI & QA Test Servers Quality & Doc Servers
Local Builds and Local App
Servers
Product Owner / User Champions / UX Designer
QA Engineers
swc,swf, jar,war push & pull
deploy
Update & Commit Update
Fetch swc,swf,jar and war
Checks/Noti!cations
Flex & Java Developers
Smoke / Acceptance Test s
Func. and UX Feedbacks
Checks & Tests
Build SCM
Changelist/ Jobs
Tasks / Bug Tracking
Server
SCM
Repository Server
• javac, mxmlc • JUnit/TestNG, FlexUnit4 • swc, swf ,jar ,war ,ear ,zip ,etc
Auto
mat
ed T
ests
• Automated Functional Test • RIATest : h$p://www.riatest.com • FlexMonkey • QTP
• Leveraging the Flex SDK automation framework
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware factory Automation for the People (because Everybody Doing It Manually Hurts)
47
Dep
ende
ncie
s Ch
ecks
Com
pila
tion
Codi
ng R
ules
Che
cks
Dep
loym
ent
Pack
agin
g
Uni
t tes
t
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
Auto
mat
ed T
ests
Continuous Integration
Server
Modi!cation Checks
Trigger
Qua
lity
Das
hboa
rd
Repository Server
CI & QA Test Servers Quality & Doc Servers
Local Builds and Local App
Servers
Product Owner / User Champions / UX Designer
QA Engineers
swc,swf, jar,war push & pull
deploy
Update & Commit Update
Fetch swc,swf,jar and war
Checks/Noti!cations
Flex & Java Developers
Smoke / Acceptance Test s
Func. and UX Feedbacks
Checks & Tests
Build SCM
Changelist/ Jobs
Tasks / Bug Tracking
Server
SCM
• Maven • Ant + Ivy • Graddle • BuildR • EasyAnt • Ant • Make
Repository Server
• javac, mxmlc • JUnit/TestNG, FlexUnit4 • swc, swf ,jar ,war ,ear ,zip ,etc
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
• Developer docs : • Compilation reports • Javadoc, ASdoc
• Dev/QA docs • Unit Test reports • Test Coverage reports • PMD reports • Dependencies • Dependency convergent reports • etc …
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware factory Automation for the People (because Everybody Doing It Manually Hurts)
48
Dep
ende
ncie
s Ch
ecks
Com
pila
tion
Codi
ng R
ules
Che
cks
Dep
loym
ent
Pack
agin
g
Uni
t tes
t
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
Auto
mat
ed T
ests
Continuous Integration
Server
Modi!cation Checks
Trigger
Qua
lity
Das
hboa
rd
Repository Server
CI & QA Test Servers Quality & Doc Servers
Local Builds and Local App
Servers
Product Owner / User Champions / UX Designer
QA Engineers
swc,swf, jar,war push & pull
deploy
Update & Commit Update
Fetch swc,swf,jar and war
Checks/Noti!cations
Flex & Java Developers
Smoke / Acceptance Test s
Func. and UX Feedbacks
Checks & Tests
Build SCM
Changelist/ Jobs
Tasks / Bug Tracking
Server
SCM
Repository Server
• javac, mxmlc • JUnit/TestNG, FlexUnit4 • swc, swf ,jar ,war ,ear ,zip ,etc
Qua
lity
Das
hboa
rd
• Quality Dashboard • Sonar : h$p://www.sonarsource.org/ • Home made • Others
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Tasks / Bug Tracking
Server
CI & QA Test Servers Quality & Doc Servers
So#ware factory Automation for the People (because Everybody Doing It Manually Hurts)
49
Dep
ende
ncie
s Ch
ecks
Com
pila
tion
Codi
ng R
ules
Che
cks
Dep
loym
ent
Pack
agin
g
Uni
t tes
t
Java
Doc
s, A
SDoc
s, Q
ualit
y Re
port
s
Auto
mat
ed T
ests
Continuous Integration
Server
Modi!cation Checks
Trigger
Qua
lity
Das
hboa
rd
Changelist/ Jobs
Repository Server
Local Builds and Local App
Servers
Product Owner / User Champions / UX Designer
QA Engineers
SCM swc,swf, jar,war
push & pull deploy
Update & Commit Update
Fetch swc,swf,jar and war
Checks/Noti!cations
Flex & Java Developers
Smoke / Acceptance Test s
Func. and UX Feedbacks
Checks & Tests
Build
• Aim for a full IDE integration : • Plugins
• Mylin, hudson, SCM, FlexPMD, FlexForma$er, FlexUnit, CodeCoverage, etc…
• Shared properties and con!guration • Scripts
Product Owner / User Champions / UX Designer
QA Engineers Flex & Java Developers
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Demo
50
o Streamlining Flex Developement
o So#ware Factory Demo
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 51
One hour was not enough, but
But we’ll publish/release :
o Uni!ed Agent desktop Solution Accelerator o LCDS SAP connector o LCDS Remote Data Management o Spring-Flex NIO support o Whitepapers & blogpost on
o Multiscreen app making o so&ware factory o Security & sso
And we already published o Cairngorm 3 libraries and guidelines o Cairngorm 3 todo max sample o Devnet articles
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 52
References
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 53
Books /Articles « Effective Java: Programming Language Guide », Joshua Bloch « OO Design Quality Metrics », Robert Martin
h$p://www.octo.com/Java-Productivity-Primer.10/Publications h$p://lil.univ-li$oral.fr/~oumoumsack/qualite/ h$p://www.objectmentor.com/resources/articles/Principles_and_Pa$erns.pdf h$p://www.infoq.com/presentations/effective-api-design h$p://www.infoq.com/news/Ken-Schwaber-Sacri!cing-Quality h$p://www.quotegarden.com/programming.html h$p://www.slideshare.net/francois.le.droff/solutions-linux2008-construire-sa-vision-qualite h$p://www.slideshare.net/francoisledroff/%ex-continuous-quality-builds-%ex-ant-maven h$p://www.slideshare.net/francoisledroff/tesytquality-best-practices-toolkit-for-enterprise-%ex
Photo /Graphics h$ps://duke.dev.java.net/images/comfyChair/index.html h$p://www.%ickr.com/photos/purplema$!sh/3918004964/ h$p://www.%ickr.com/photos/lesloups/1907354379/ h$p://www.%ickr.com/photos/summachphoto/3380254405/in/pool- shocking#/photos/summachphoto/3380254405/in/pool-566250@N24/ h$p://www.%ickr.com/photos/slimcoincidence/594599028/ h$p://www.%ickr.com/photos/sea$lemunicipalarchives/2680257100/sizes/o/in/photostream/
Tools Cairngorm: h$ps://sourceforge.net/adobe/cairngorm/home/ FlexUnit: h$p://%exunit.org/ Parsley/Spicelib: h$p://www.spicefactory.org KapInsect: h$p://lab.kapit.fr/display/kapinspect/Kap+Inspect "underbolt: h$p://github.com/sectore/"underBoltAS3 Flexlib: h$p://code.google.com/p/%exlib/ FlexPMD: h$ps://sourceforge.net/adobe/%expmd/home/ Ant: h$p://ant.apache.org/ Maven: h$p://maven.apache.org/ Ivy: h$p://www.jaya.free.fr/ivy/ Sonar: h$p://www.sonarsource.org/ PMD: h$p://pmd.sourceforge.net/ Spring: h$p://www.springsource.org/ JBoss: h$p://www.jboss.org Hibersap: h$p://hibersap.sourceforge.net/ Dozer: h$p://dozer.sourceforge.net/
Adobe Docs ActionScript Developer Site- h$p://www.adobe.com/devnet/actionscript/ Flex Developer Site - h$p://www.adobe.com/devnet/%ex/documentation.html LCDS Doc Site - h$p://livedocs.adobe.com/livecycle/8.2/programLC/programmer/lcds/help.html?content=lccon!g_4.html
References
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Turn in your Surveys for a chance to WIN!
o Hand in your surveys to the room monitors
o One survey will be selected as a winner of the Adobe Press e-book
Adobe Flash Platform from Start to Finish: Working Collaboratively Using Adobe Creative Suite 5
o Winners will be noti"ed via e-mail at the end of each day
54
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Questions ?
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Appendix
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware Factory: Demo
57
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware Factory: Demo
58
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
So#ware Factory: Demo
59
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 60
Streamline Flex Development
o Project con"gurations
o Use Linked Resources
o Use external con%guration %le for additional compiler arguments
o Link your bin folder to a deployed server folder
o Don’t mix project nature
o Use multiple source path folders
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 61
o Use Linked Resources
o Avoid absolute paths in con%guration %les
o De%ne a Linked Resource
o How to use the variables in the different con%guration %les
o .actionscriptProperties
o .project
<libraryPathEntry kind="3" linkType="1" path="/Users/yaniv/Developer/Repositories/todo_max/todo_flex_todolist_lib/bin/todo_flex_todolist_lib.swc" useDefaultLinkType="false"/>
Streamline Flex Development
<libraryPathEntry kind="3" linkType="1" path="${M2_REPO}/org/spicefactory/parsley-flex4/2.3.1/parsley-flex4-2.3.1.swc" useDefaultLinkType="false"/>
<locationURI>TODO_BLZ_KISS/bin</locationURI>
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 62
Streamline Flex Development
o Use external con"guration "le for additional compiler arguments
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 63
Streamline Flex Development
o Don’t mix project nature
<natures> <nature>com.adobe.flexbuilder.project.flexnature</nature> <nature>com.adobe.flexbuilder.project.actionscriptnature</nature> <nature>com.adobe.ac.pmd.eclipse.flexpmdnature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature> </natures>
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 64
Streamline Flex Development
o Link your bin folder to a deployed server folder
<compiler outputFolderLocation="${TODO_BLZ_KISS}/bin" outputFolderPath="bin-debug">
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 65
Streamline Flex Development
o Point your compiler to the right service-con"g.xml
o Use the -services compiler argument
o Use the <services> tag in the additional compiler arguments
-service "${TODO_BLZ_KISS}/WEB-INF/flex/services-config.xml"
<!-- compiler.services: path to Flex Data Services configuration file--> <services>${TODO_BLZ_KISS}/WEB-INF/flex/services-config.xml</services>
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 66
Streamline Flex Development
o Use multiple source path folders for
o Unit Tests / Integration Tests
o Resources
o Monkey-patching
o ...