More Related Content Similar to Flex and LiveCycle Data Services Best Practices from the Trenches (Adobe MAX 2010) (20) More from François Le Droff (11) Flex and LiveCycle Data Services Best Practices from the Trenches (Adobe MAX 2010)1. © 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
2. © 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 Software Geek :
o FlexPMD, Cairngorm
o Ossgtp, ParisJUG, et TTFX
o French JUGs, MAX, et Solution Linux
o http://www.droff.com
o http://blogs.adobe.com/francoisledroff/
o http://twitter.com/francoisledroff
o ledroff<at>adobe.com
3. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Yaniv De Ridder
o Flash Platform Expert
o 9+ years in front-end development
o http://blogs.adobe.com/yderidder/
o http://twitter.com/yderidder/
o yderidde<at>adobe.com
4. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 4
Hendrix : Helping more customers, first time, in less time. Every time.
5. © 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 Software Factory
Demo
6. © 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 …
7. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Hendrix : Key Features
7
Telephony integration Customer Identification &
Matching
At A Glance Case History
Selling More Of The Right
Product
Customer Service Process
Wizard More to come
8. © 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 first phase
o Prepare for more, be scalable
Hendrix : SLA
8
9. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Hendrix : SLA & Non Functional Requirements
o Agent hardware & software constraints
o Reusing and leveraging of the legacy systems
o SAP CRM
o Phone, telecom switches and CTI solution
9
10. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
User CTI
Phone
Callcenterhttpproxy
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
PBXPBX PBX PBX
Hendrix
JBoss LCDS
Cluster
Server 1.2
Server 1.3
…
Server 1.n
Hendrix
LoadBalancer
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
11. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 11
Architecture Best Practices
Encapsulation, Separation of Concern
Make things as inaccessible as possible
12. © 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
13. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 13
Hendrix Flex Projects
o Hendrix High level Architecture with Cairngorm 3
14. © 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, Thunderbold, Cairngorm3
14
Cairngorm 3
≠Cairngorm 2
15. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 15
Multiscreen and Modular Flex Application making
o Demo
Mobile Application Desktop Browser Application
16. © 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_flex_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
17. © 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)
18. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 18
Multiscreen and Modular Flex Application making
o Todo Application Architecture
19. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Demo
19
Demo
20. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
API, API, API
2015 Sept 2009Contrôle Qualité Open Source
✔ Programming is pusblishing (an API)
✔ A Quality API :
✔ Simple
✔ Addictive
21. © 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
LoadBalancer
PBX PBX PBX
User CTI
PhoneVOIP
AIL - RMI – TCP/IP
Internet Browser
Flash Player
Hendrix Flash application
User Desktop
Callcenterhttpproxy
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
22. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
o Client-Side API
22
Hendrix Flex Projects
23. © 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
24. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 24
o Before
25. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
o After
25
26. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 26
27. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 27
28. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 28
29. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Exception handling
29
30. © 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/Specific Code
• ErrorEvent & ErrorManager
• Synchronous/Asynchronous
• Client/Server roots
31. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
LCDS Messaging & CTI Best Practices
31
32. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
CTI pitfalls
• Phone Hardware differences and configurations issues
• Dev versus Prod
• Avaya phone versus Nortel phone
• Load/stress/endurance test early
• Sockets consumptions
• ulimit
• Threads consumptions
• Use LCDS NIO (or RTMP) channels
• Use LCDS Message filtering
• And eventually leverage server side messaging/queueing technology
• JMS / AMQP (MRG)
33. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
LCDS Real Time Messaging helps
• Reliable Messaging
• Message throttling
• Channels and Endpoints –Choices, choices
• Edge Server
• Message filters
• Message priority
34. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Distributed Agile Offshore process
34
Paris / Brussels Bucharest
USA
Edinburgh
China
35. © 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 Definition Of Done
o Collaboratively evaluate and manage the technical debt
35
36. © 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
37. © 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
38. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Industrialization/Automation
“Because Everybody Doing It Manually Hurts”
39. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software factory
Automation for the People (because Everybody Doing It Manually Hurts)
39
Dependencies
Checks
Compilation
CodingRulesChecks
Deployment
Packaging
Unittest
JavaDocs,ASDocs,
QualityReports
AutomatedTests
Continuous
Integration
Server
Modification
Checks
Trigger
QualityDashboard
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 &
CommitUpdate
Fetch swc,swf,jar
and war
Checks/Notifications
Flex & Java
Developers
Smoke / Acceptance
Test s
Func. and UX Feedbacks
Checks & Tests
Build
40. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software factory
Automation for the People (because Everybody Doing It Manually Hurts)
40
Dependencies
Checks
Compilation
CodingRulesChecks
Deployment
Packaging
Unittest
JavaDocs,ASDocs,
QualityReports
AutomatedTests
Continuous
Integration
Server
Modification
Checks
Trigger
QualityDashboard
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 &
CommitUpdate
Fetch swc,swf,jar
and war
Checks/Notifications
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 fixes
• 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
41. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software factory
Automation for the People (because Everybody Doing It Manually Hurts)
41
Dependencies
Checks
Compilation
CodingRulesChecks
Deployment
Packaging
Unittest
JavaDocs,ASDocs,
QualityReports
AutomatedTests
Continuous
Integration
Server
Modification
Checks
Trigger
QualityDashboard
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 &
CommitUpdate
Fetch swc,swf,jar
and war
Checks/Notifications
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
42. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software factory
Automation for the People (because Everybody Doing It Manually Hurts)
42
Dependencies
Checks
Compilation
CodingRulesChecks
Deployment
Packaging
Unittest
JavaDocs,ASDocs,
QualityReports
AutomatedTests
Continuous
Integration
Server
Modification
Checks
Trigger
QualityDashboard
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 &
CommitUpdate
Fetch swc,swf,jar
and war
Checks/Notifications
Flex & Java
Developers
Smoke / Acceptance
Test s
Func. and UX Feedbacks
Checks & Tests
Build
SCM
Changelist
/ Jobs
Tasks /
Bug Tracking
Server
SCM
Dependencies
Checks
• Dependency Management
• Scope
• Transitivity
• Profile
• One common artefacts (swc, swf, jar, war, ear) repository
• proxy, hosted, grouped repositories
43. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software factory
Automation for the People (because Everybody Doing It Manually Hurts)
43
Dependencies
Checks
Compilation
CodingRulesChecks
Deployment
Packaging
Unittest
JavaDocs,ASDocs,
QualityReports
AutomatedTests
Continuous
Integration
Server
Modification
Checks
Trigger
QualityDashboard
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 &
CommitUpdate
Fetch swc,swf,jar
and war
Checks/Notifications
Flex & Java
Developers
Smoke / Acceptance
Test s
Func. and UX Feedbacks
Checks & Tests
Build
SCM
Changelist
/ Jobs
Tasks /
Bug Tracking
Server
SCM
Repository
Server
CodingRulesChecks
• PMD for java
• http://pmd.sourceforge.net/
• FlexPMD for AS3/Flex
• http://sourceforge.net/adobe/flexpmd/home/
• FlexPMD: Your Canary in a Coal Mine – MAX 2010
44. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software factory
Automation for the People (because Everybody Doing It Manually Hurts)
44
Dependencies
Checks
Compilation
CodingRulesChecks
Deployment
Packaging
Unittest
JavaDocs,ASDocs,
QualityReports
AutomatedTests
Continuous
Integration
Server
Modification
Checks
Trigger
QualityDashboard
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 &
CommitUpdate
Fetch swc,swf,jar
and war
Checks/Notifications
Flex & Java
Developers
Smoke / Acceptance
Test s
Func. and UX Feedbacks
Checks & Tests
Build
SCM
Changelist
/ Jobs
Tasks /
Bug Tracking
Server
SCM
Compilation
Packaging
Unittest
• javac, mxmlc
• JUnit/TestNG, FlexUnit4
• swc, swf ,jar ,war ,ear ,zip ,etc
45. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software factory
Automation for the People (because Everybody Doing It Manually Hurts)
45
Dependencies
Checks
Compilation
CodingRulesChecks
Deployment
Packaging
Unittest
JavaDocs,ASDocs,
QualityReports
AutomatedTests
Continuous
Integration
Server
Modification
Checks
Trigger
QualityDashboard
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 &
CommitUpdate
Fetch swc,swf,jar
and war
Checks/Notifications
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
Deployment
• 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 configuration (jndi)
• Profiled build (when platform dependent)
46. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software factory
Automation for the People (because Everybody Doing It Manually Hurts)
46
Dependencies
Checks
Compilation
CodingRulesChecks
Deployment
Packaging
Unittest
JavaDocs,ASDocs,
QualityReports
AutomatedTests
Continuous
Integration
Server
Modification
Checks
Trigger
QualityDashboard
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 &
CommitUpdate
Fetch swc,swf,jar
and war
Checks/Notifications
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
AutomatedTests
• Automated Functional Test
• RIATest : http://www.riatest.com
• FlexMonkey
• QTP
• Leveraging the Flex SDK automation framework
47. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software factory
Automation for the People (because Everybody Doing It Manually Hurts)
47
Dependencies
Checks
Compilation
CodingRulesChecks
Deployment
Packaging
Unittest
JavaDocs,ASDocs,
QualityReports
AutomatedTests
Continuous
Integration
Server
Modification
Checks
Trigger
QualityDashboard
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 &
CommitUpdate
Fetch swc,swf,jar
and war
Checks/Notifications
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
JavaDocs,ASDocs,
QualityReports
• Developer docs :
• Compilation reports
• Javadoc, ASdoc
• Dev/QA docs
• Unit Test reports
• Test Coverage reports
• PMD reports
• Dependencies
• Dependency convergent reports
• etc …
48. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software factory
Automation for the People (because Everybody Doing It Manually Hurts)
48
Dependencies
Checks
Compilation
CodingRulesChecks
Deployment
Packaging
Unittest
JavaDocs,ASDocs,
QualityReports
AutomatedTests
Continuous
Integration
Server
Modification
Checks
Trigger
QualityDashboard
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 &
CommitUpdate
Fetch swc,swf,jar
and war
Checks/Notifications
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
QualityDashboard
• Quality Dashboard
• Sonar : http://www.sonarsource.org/
• Home made
• Others
49. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Tasks /
Bug Tracking
Server
CI & QA Test Servers Quality & Doc
Servers
Software factory
Automation for the People (because Everybody Doing It Manually Hurts)
49
Dependencies
Checks
Compilation
CodingRulesChecks
Deployment
Packaging
Unittest
JavaDocs,ASDocs,
QualityReports
AutomatedTests
Continuous
Integration
Server
Modification
Checks
Trigger
QualityDashboard
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 &
CommitUpdate
Fetch swc,swf,jar
and war
Checks/Notifications
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,
FlexFormatter, FlexUnit,
CodeCoverage, etc…
• Shared properties and configuration
• Scripts
Product Owner / User
Champions / UX Designer
QA Engineers
Flex & Java
Developers
50. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Demo
50
o Streamlining Flex Developement
o Software Factory Demo
51. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 51
One hour was not enough, but
But we’ll publish/release :
o Unified 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 software factory
o Security & sso
And we already published
o Cairngorm 3 libraries and guidelines
o Cairngorm 3 todo max sample
o Devnet articles
52. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 52
References
53. © 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
http://www.octo.com/Java-Productivity-Primer.10/Publications
http://lil.univ-littoral.fr/~oumoumsack/qualite/
http://www.objectmentor.com/resources/articles/
Principles_and_Patterns.pdf
http://www.infoq.com/presentations/effective-api-design
http://www.infoq.com/news/Ken-Schwaber-Sacrificing-Quality
http://www.quotegarden.com/programming.html
http://www.slideshare.net/francois.le.droff/solutions-linux2008-
construire-sa-vision-qualite
http://www.slideshare.net/francoisledroff/flex-continuous-quality-
builds-flex-ant-maven
http://www.slideshare.net/francoisledroff/tesytquality-best-
practices-toolkit-for-enterprise-flex
Photo /Graphics
https://duke.dev.java.net/images/comfyChair/index.html
http://www.flickr.com/photos/purplemattfish/3918004964/
http://www.flickr.com/photos/lesloups/1907354379/
http://www.flickr.com/photos/summachphoto/3380254405/in/
pool- shocking#/photos/summachphoto/3380254405/in/
pool-566250@N24/
http://www.flickr.com/photos/slimcoincidence/594599028/
http://www.flickr.com/photos/seattlemunicipalarchives/
2680257100/sizes/o/in/photostream/
Tools
Cairngorm: https://sourceforge.net/adobe/cairngorm/home/
FlexUnit: http://flexunit.org/
Parsley/Spicelib: http://www.spicefactory.org
KapInsect: http://lab.kapit.fr/display/kapinspect/Kap+Inspect
Thunderbolt: http://github.com/sectore/ThunderBoltAS3
Flexlib: http://code.google.com/p/flexlib/
FlexPMD: https://sourceforge.net/adobe/flexpmd/home/
Ant: http://ant.apache.org/
Maven: http://maven.apache.org/
Ivy: http://www.jaya.free.fr/ivy/
Sonar: http://www.sonarsource.org/
PMD: http://pmd.sourceforge.net/
Spring: http://www.springsource.org/
JBoss: http://www.jboss.org
Hibersap: http://hibersap.sourceforge.net/
Dozer: http://dozer.sourceforge.net/
Adobe Docs
ActionScript Developer Site- http://www.adobe.com/devnet/
actionscript/
Flex Developer Site -
http://www.adobe.com/devnet/flex/documentation.html
LCDS Doc Site -
http://livedocs.adobe.com/livecycle/8.2/programLC/
programmer/lcds/help.html?content=lcconfig_4.html
References
54. © 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 notified via e-mail at
the end of each day
54
55. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Questions ?
56. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Appendix
57. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software Factory: Demo
57
58. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software Factory: Demo
58
59. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Software Factory: Demo
59
60. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 60
Streamline Flex Development
o Project configurations
o Use Linked Resources
o Use external configuration file 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
61. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 61
o Use Linked Resources
o Avoid absolute paths in configuration files
o Define a Linked Resource
o How to use the variables in the different configuration files
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>
62. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 62
Streamline Flex Development
o Use external configuration file for additional compiler arguments
63. © 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>
64. © 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">
65. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 65
Streamline Flex Development
o Point your compiler to the right service-config.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>
66. © 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 ...