© 2015 IBM Corporation
One Million Lines of Code Later: I Want Agility!
Roger Snook, IBM WW EnablementDevOps for Mobile
30 June 2015 [email protected]
Adapted from a presentation at:
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
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
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.
5
History Shows: People, Process first, then Tools drive successChanging 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
BusinessIntegration
Responseto clients
Market Share Capture
Faster...
ImprovedBottom line
Shifts Investments toHigher value
ROI / TCO
Cheaper…BusinessScalability
UserRetention
Trusted Supplier
Better…
Business Transformation
Integrate Optimize
Collaborate
6
Software Delivery is a business process!And Business Processes are subject to improvement.
IBM DevOpsAn enterprise capability for continuous software delivery that enables organizations to seize market opportunities and reduce time to customer feedback
Acceleratesoftware 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
ContinuousCustomer Feedback
& Optimization
Collaborative Development
Continuous Release and Deployment
ContinuousMonitoring
ContinuousBusiness Planning
ContinuousTesting
Operate Develop/ Test
Deploy
Steer
DevOps Continuous Feedback
8
Concept Areas, Candidate ProcessesOperate 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
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
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
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
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%
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 duringthe 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
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%
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”
Manual Transformations do not make teams agile
Simple Documentation and Whiteboards
Code + Integrated DocumentationCode + Some Documentation“Code Only”
RE-entered or transcribed intoCode
RE-keyed or transcribed intoInformal models
RE-entered or transcribed intoModels
17
Sketching with incremental formalizationQuickly turn “think” into “code” through simple transformations
Quickly capture thoughts – work at “think speed”Selectively formalize as semantic model elementsExtend this “actionable whiteboard” across space and time
RSA Sketching built to support agility
Sketches
Code + Integrated DocumentationCode + Some Documentation“Code Only”
Transformed intoCode
Transformed intoInformal models
Over 60 new UML-related books RELEASED in 2015 (doubled from February 2015)
21
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
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
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
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
Who
Wha
tW
hen
& W
hy
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
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
Collaborative Modelling - RSA Design ManagerLink designs to other lifecycle elements • Share sequence diagrams for testers to create test procedures
Enhance requirements with visualizations
28
Other Design Collaboration Capabilities to helpAgile 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)
29
Supporting Agile DeploymentsPushing designs to IBM UrbanCode Deploy• Forward and Reverse “transform” models and deployment architectures
30
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)
31
Organizational Processes
• AGENDA:
• Reuse– Finding and Publishing designs
• Governance– SOA
Design ServerMaximize 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
As complexity grows, so should governance
Technical Drivers ComplianceGovernanceApplication Complexity
Organizational DriversTeam SizeGeographical DistributionOrganization 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
Work together with SCM and Design Management
Jazz Storage
§ Architecture Elements
§ Index
§ Comments (visual, textual)
§ Links
§ Reviews
OS
LC
+ D
M R
ES
T A
PIs
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
OS
LC +
DM
RE
ST
AP
Is
RSA clients
SC
M S
erver - RT
C, C
C, S
VN
(check-outs, merges, check-ins)
File1
File2
DirectoryRSA clients
Design Management services on Jazz Team
Server (JTS)
Systems Engineer
Software Engineer
Design change control and versioning (file-based)
Reviewer
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:
• 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
Thank YouRoger Snook, IBM WW Cloud Enablement
DevOps for Mobile