One Million Lines of Code Later: I Want Agility! Every line of code you create comes with a complexity cost. How can you tame this complexity for your large source base? One way is to streamline your delivery turnaround time for enhancements and fixes by visualizing your projects' source code—after all, "a picture is worth…”
2. 1M Lines of code…..How did we get here?
• My story:
• Startup company, Reverse engineered 1.7M lines of C++ library
code with Rational Software Architect predecessor (Rose).
• Cable modem manufacturer building DOCSIS-compliant
devices, C++/UML “round tripping” approach.
• Worked with other startups with 1M+ lines of code (SCM needs)
• NY financial software “frameworks” that generate code from
models – company-self-proclaimed agility
• Regardless if you use Architecture Tools or not - we’ve got
software to deliver!
• Business Initiatives (revenue, market share, competition) to
meet, companies to acquire…. Time is Money
• But our conscience is calling…..
• Good Design is Good Business blog on
• This session can show you ideas for agility
1
3. WARMUP POLLS:
• I am working with a project which has how many lines of code:
1. Less than 500,000
2. 500,000 – 1,000,000
3. 1,000,000 – 5,000,000
4. 5,000,000+
5. I’m not working with any source code
• I am working with these languages (check all that apply):
• Java
• C++
• C#
• Python
• Ruby
• Other
2
4. Agility - Defined
• Agile Manifesto:
• So let’s take that perspective of helping individuals (people) interact
(process), collaborate and respond to change (more process) to
deliver working software.
3
5. 4
History Shows: People, Process first, then Tools drive success
Changing People and Process is difficult – start with Common Purpose
People Tools
Process
Project
Success Triangle
Quality Money
Time
Client Value
Develop Deploy
Decide
Software Delivery
Tasks
Business
Integration
Response
to clients
Market Share Capture
Faster...
Improved
Bottom line
Shifts
Investments to
Higher value
ROI / TCO
Cheaper…
Business
Scalability
User
Retention
Trusted Supplier
Better…
Business
Transformation
Integrate Optimize
Collaborate
6. 5
Software Delivery is a business process!
And Business Processes are subject to improvement.
7. IBM DevOps
An enterprise capability for continuous software delivery that enables
organizations to seize market opportunities and reduce time to
customer feedback
Accelerate
software delivery –
for faster time to value
Balance speed, cost,
quality and risk –
for increased capacity
to innovate
Reduce time to
customer feedback –
for improved customer
experience
Continuous
Customer Feedback
& Optimization
Collaborative
Development
Continuous Release
and Deployment
Continuous
Monitoring
Continuous
Business Planning
Continuous
Testing
Operate Develop/
Test
Deploy
Steer
DevOps
Continuous
Feedback
8. Concept Areas, Candidate Processes
7
Operate Develop/
Test
Deploy
Steer
DevOps
Continuous
Feedback
DevOps Concept Areas / Use Cases Individual Project Organization
Steer
Gain Agreement / “interface contract” x
Linked Designs - “single source of truth” x
Collect-> Triage -> Reqts -> Sprint Plan x
Architecture Governance x
Develop/Test
Code “Automation” – reverse transform x
Specs to models to code x
Forward transform - code generation x
Convert sketch to architecture x
Peer/Design reviews x
Reuse Designs x
Deploy
Agile Deployment x
9. 8
Individual Processes POLL:
• Where are you today?
• How agile is your individual work?
1. Not at all agile (only focused on process, organization, documentation)
2. Somewhat agile
3. Neutral
4. More agile than not
5. Completely agile (focused on delivering working software, customer
collaboration, responding to change)
• Are you CURRENTLY using architecture tools?
1. Yes
2. No
10. 9
Individual Processes
• Agenda
• Code “Automation”
– Reverse transform / “reverse engineering”
– Specs to models, other transformations i.e. WSDLs
– Forward transform / “Code generation” from models
• Convert “whiteboard” sketches to architecture
11. 10
Individual Processes – Reverse “Engineering”
• You’ve just inherited a
new, 1M+ SLOC project
• How do you get an
INITIAL handle on
this?
– Old process: open
editor and start
reviewing
– New process: reverse
“engineer” (officially
“reverse transform”
code into models) –
often seen as a one-
time event
12. 11
Individual Processes – Reverse “Engineering”
Reduced labour for Reverse Engineering to develop
models of existing code
(using Code Visualization and Reverse Engineering)
20%
• How can you continually get value (agility / time
savings) from this:
• Code Visualization – “simplified modeling”, only visualization
no “data behind the picture” – good for quick self-check
reviews
• Ongoing merging of code changes – one approach with
overlapping iterations of design and coding
• One client’s assertion:
Reduced Defect costs (Better Quality of code as a result of
Architecture Discovery, Visualizations, Model Analysis)
15%
13. IBM Events Team "Serves" Australian Open with Rational
Software Architect - A Grand Slam of 10% Productivity!
Must build website quickly to attract
and maintain fans’ interest during
the three week events.
In 2010, over 9 million virtual visitors
came to the IBM website
Rational is just one part of an overall
case study and showcase of IBM
hardware, software and services.
Visualizing Java code as UML
helps the improve
communication & reduce
meeting times, onboarding
new team members.
Improving developer productivity with code-centric approach helps IBM
meet tight deadlines during highly visible events such as the Tennis Grand Slam
or the Tony Awards.
14. 13
Individual Processes – Forward Transformation
• Let’s for a moment…..
• How many NEW CLASSES (in code) are you / your
team creating each week ?
• What percentage of your hand-coding is 100%
syntactically correct?
• Typical Design Contract Management Protocols are
as follows:
• Conceptual -> Concrete resulting in:
“Throw away model” or Visual Editing
• Mixed Modeling
• Reconciled Modeling
• Run transformations from an Ant script
• Agile Mobile dev teams: Transform REST/JAX-RS
models into code
• One client’s assertion: Reduced labor for Coding ( due to use of
Transformations & Code generation,
patterns and asset reuse)
22%
15. Individual Processes –
“Whiteboard” vs. Sketching
Whiteboard
• Rapid capture.
• Persists as long as not
erased
• Less formality,
less “common meaning”
RSA Sketching
• Quickly capture – similar
to drawing tools.
• Persists and can be
shared
• Purposeful Limited
“vocabulary”
16. Manual Transformations do not make teams agile
Simple Documentation
and Whiteboards
Code + Integrated DocumentationCode + Some Documentation“Code Only”
RE-entered or transcribed into
Code
RE-keyed or
transcribed into
Informal models
RE-entered or transcribed into
Models
17. 16
Sketching with incremental formalization
Quickly turn “think” into “code” through simple transformations
Quickly capture thoughts – work at “think speed”
Selectively formalize as semantic model elements
Extend this “actionable whiteboard” across space and time
18. RSA Sketching built to support agility
Sketches
Code + Integrated DocumentationCode + Some Documentation“Code Only”
Transformed into
Code
Transformed into
Informal models
19. Over 60 new UML-related books RELEASED in 2015
(doubled from February 2015)
20.
21. 20
Team/Project Processes POLL:
• Where are you today?
• How agile is your TEAM/PROJECT work?
1. Not at all agile (only focused on process, organization, documentation)
2. Somewhat agile
3. Neutral
4. More agile than not
5. Completely agile (focused on delivering working software, customer
collaboration, responding to change)
22. 21
Team/Project Processes
• Agenda:
– Peer/Design reviews
– Gaining Agreement / “interface contracts” using standards
– Link Designs with other lifecycle artifacts for “single source of
truth”
• Steer: Collection -> Triage -> Requirements -> Sprint Planning
– Triage/Requirements include Impact Assessment
– Planning includes Design changes
• Agile Deployment
23. 22
Shared Designs and Comments to
support Peer Reviews
• Engage team members in the design process with Web client access to designs
• Improve quality with in-context design collaboration through commenting and visual
markup
• Comments can be posted and accessed from Web client and RSA desktop client
24. 23
Automate Design/Peer Reviews
• Automate manual and time consuming design reviews
• Users notified via email of the review and access their reviews from the
dashboard
• Design Manager tracks progress of design review
• Link review to Team Concert work items for more formalized approvals
WhoWhatWhen&Why
25. View
design
comments
Search across design
projects
View markup
associated with
comments
View OSLC link
information including pop-
up previews
Connect to DM
servers , navigate
server projects, and
preview designs from
server
Design collaboration from the RSA client
26. Faster Design Reviews
Shorten time-to-market and improve quality
Speed up decision-making by keeping
people informed as decisions are made
Improve quality by ensuring that the
extended team has direct input into
updates and corrections
Automate the design review process
Teams need to collaborate with stakeholders on software architectures, deployment
plans, and system designs, but..
Design reviews are painful, tedious, and time consuming
Stakeholders do not have direct access to designs so reviews need to be handled outside of the design
tools; feedback is difficult to communicate and confirm
With RSA Design Manager…
Designers automate reviews, specifying which designs and stakeholders participate
Stakeholders can view the design and attach comments and mark-up via the Web or rich client
Design reviews can be linked to RTC work items for planning and tracking
27. 26
Collaborative Modelling - RSA Design Manager
Link designs to other lifecycle elements
• Share sequence diagrams for testers to create test procedures
Enhance requirements with visualizations
28. 27
Other Design Collaboration Capabilities to help
Agile DevOps Steering:
Triage/Impact Analysis
• Graphical impact analysis diagram
(Design centric)
• Keyword search and queries
support triage
• Mobile?
• Inject WorkItems directly from a
mobile crowd-sourced test (testing
“in the wild”).
(Brief demo time permitting)
30. 29
Organizational Processes
• Where are you today?
• How agile is your ORGANIZATIONAL work?
1. Not at all agile (only focused on process, organization, documentation)
2. Somewhat agile
3. Neutral
4. More agile than not
5. Completely agile (focused on delivering working software, customer
collaboration, responding to change)
32. Design Server
Maximize productivity and lower costs
Increase team knowledge through an
enterprise and system-wide repository
with Web-based access
Leverage Jazz to quickly search across
designs for review, analysis and
potential reuse
Analyze the impact of design changes
Teams need to quickly find existing designs to review, analyze, and identify reuse, but…
Information may be stored in multiple designs or models
Desktop client installation is required to view the design information
Access to SCM system also may be required to access the information
With RSA Design Manager…
All designs for an organization or system can be stored and accessed from a central location
All known designs can be searched, viewed, analyzed on the server from RSA or Web client
The new Relationship diagram supports impact analysis and discovery of related design elements and
resources
33. As complexity grows, so should governance
Technical
Drivers
Compliance
Governance
Application Complexity
Organizational Drivers
Team Size
Geographical Distribution
Organization Distribution
Documentation and White-boarding
Collaborating on whiteboard sketches
Spreadsheets, Word Docs
Code + Integrated DocumentationCode + Some Documentation“Code Only”
Modeling, Automation, Governance
Automated task Execution and code generation
from Model (Model-Driven)
Versioning with your standard CM system
Extensibility to integrate with automation
Ability to enhance with governance
Informal modeling
Presentations and Drawing tools
Quick capturing of ideas for analysis
Capable of analyzing simple problems
Modeling
Leveraging industry standards (UML, BPMN, Architecture
frameworks) to analyze the industry specific complex problems
Industry recognized notations
Underlying meta-data facilitates easier collaboration on model
dependencies, with automated change propagation.
Easy impact analysis reports
Simulation for early problem determination
34. 33
Work together with SCM and Design Management
Jazz Storage
§ Architecture Elements
§ Index
§ Comments (visual,
textual)
§ Links
§ Reviews
OSLC+DMRESTAPIs
Design search, query, view,
comment, review, link,
report, validate, analyze,
limited editing
Design creation, editing, MBSE,
MDD, MBT search, query, validate,
analyze, report
Design Management
services on Jazz Team
Server (JTS)
Design change control and
versioning
Web client
OSLC+DMRESTAPIs
RSA clients
SCMServer-RTC,CC,SVN
(check-outs,merges,check-ins)
File1
File2
Directory
RSA clients
Design Management
services on Jazz Team
Server (JTS)
Systems Engineer
Software Engineer
Design change control and
versioning (file-based)
Reviewer
35. Multi-discipline Document Generation and Reporting
Satisfy regulatory and customer demands
Easily create comprehensive
documentation for specifications,
communication, compliance and
auditing
Help prove compliance by including
OSLC link information and design
review information
Teams must document for specs, communication, regulatory compliance, and auditing
Documents need to contain information from different domains (requirements, design, change
management); individual products have separate reporting solutions
Existing solutions are difficult to use for designs and limited in the types of information they can access
One client’s productivity gain assertions:
Better Communication, collaboration with teams and customer and
identifying defects early
15%
Improved Documentation using visualization, in built reporting (Model-
Code Synchronization, Javadoc, and other publishing options)
18%
36. FINAL POLL:
35
• Now that you’ve heard some ideas on how architecture can
possibly improve your agility, please CHECK ANY of the
following levels if you believe architecture can help with
agilty:
1. Individual
2. Team
3. Organization