How Software Engineering Can
Benefit from Traditional Industries –
Practical Experience Report
ICSE 2012 – Software Engineering in Practice Track
Dr. Tom Sprenger
CIO
Agenda
Brief company presentation
Industrial manufacturing
Mapping of key elements
Pillars of software industrialization
AdNovum – Swiss Engineering Quality
Core Competence: High-End Security & Software Engineering
Est. 1988 – privately owned
joint-stock company
Zurich (HQ), Bern, Budapest
(Hungary), Singapore
275 employees, 70% graduate
Customers and Industry Focus
Finance Government
Logistics / Industry • EFD/BIT
• EVD/BLW
• Canton Zurich Tax Authorities • Canton Zurich Building Management
• EJPD/BFM
• UVEK/BAKOM
Insurance
History of Industrial Manufacturing
Characteristics of Industrial Manufacturing
Automation
Mechanization / Technologization
Division of Work
Structuring / System Formation
Standardization
Interchangeability of Products/Parts
Measuring and Control
Primary Goals
Continuous predictable production of goods with defined quality
Continuous optimization of costs
Broad consistency with Software Engineering requirements
Mapping of Manufacturing Key Elements
Analogy: Car assembly line
Industrial Manufacturing Software Engineering
Manufacturing process Software engineering process
Component supplier selection Technology management
Supply chain management Dependency management
Subassemblies / Components Software repository
Assembly line with quality gates Automatic build & test
Software Engineering Process
Process Models
Waterfall, V-Model, RUP, Spiral,
Iterative, Agile, etc.
Formal Methods
B-Method, Automated theorem
proving, RAISE, VDM, etc.
Process Key Elements
Definition of phases
Involved roles
Tasks
Deliverables
Checkpoints / quality gates
Common-sense and widely established – at least on paper
Technology Management
Organisation on 3 Levels Strategic Tactical Operational Managed Process Driven by expert group
“Technology Investigation” Purpose
Efficient and controlled use of
innovative technology
Organize the technology landscape
Knowledge Management
Cost control
Technology Management
13
Dependency
Management
Project Dependencies Fully qualified Declarative only Application Web Visualize dependencies Transitive dependencies analytics Purposes
Know which technologies are in use
Investigate critical project dependencies
Reliably identify projects affected by e.g.
a critical security issue in another component
Gather information about
software versions in use
Software Repositories
Artifact Types
Software components, Tools, etc. Established Standards
Maven Repository, Nexus, etc. Key Requirements
Nonambiguous name space
Strongly managed
Fully versioned
Lifecycle meta information Purpose
Provide software components from a
managed single source
Central place to company-wide
approve or deprecate components/ component versions
Automatic Build & Test
Preconditions
Script-based execution (no user interaction required)
Make consistent use of versioning
Source code
Third-party components
Standardized project contract
Defined set of and mandatory build targets (e.g. clear, init, build, dist, test)
Self-contained project setup Challenge for Testing
Define clear and reasonable quality and testing goals
Provide test results in a structured manner Purpose
Reproducible and predictable build and test results
Quality & Progress Measuring System
Goal
Collect data for quality and progress indication
Provide bases of decision-making for
Operative decisions within project
Optimization cycles
Data Requirements
Automatically collected on at regular intervals
Structured
Non-interpreted or rated Two main types
Process centric data
Quality & Progress Measuring System
Process measuring: Optimize efficiency, improve results, minimize risks
Quality & Progress Measuring System
Quality & Progress Measuring System
Quality & Progress Measuring System
Quality & Progress Measuring System
Product measuring: statistics, fault analysis, performance feedback
Quality & Progress Measuring System
Product measuring: statistics, fault analysis, performance feedback
In analogy to the "Analysis Circuits on a Chip” we propose using special type
of tracing as an "embedded measuring system" in software systems
Advantages
No additional tools are required to collect the data
Measuring system is part of the software and therefore available from
development to production
Because the system is part of the software, application-specific context
information can also be taken into account or measured
System behavior can be tracked instantaneously, or it can be analyzed
Quality & Progress Measuring System
Quality & Progress Measuring System
a.1 p.1 p.2 p.3 e.1 e.2 e.3 e.4 e.5Access Presentation EJB
Methodname Number of Calls Method Time [ms] Cumulative Time [ms] a.1 4 42 85’202 p.3 9 3’684 29’816 p.1 4 528 55’309 e.4 9 25’967 25’967 e.1 340 51’203 51’203 e.2 17 1’865 1’865 ... slow fast C umu la tive T ime 4 9 340 9 17 4
Conclusions
How to Achieve Industrialization?
Learn from the best and try to adopt
Establish key building blocks and key concepts in your software engineering
process derived from industrial manufacturing
Establish measuring points to achieve structured output
Set up continuous measuring environment
Include measuring infrastructure into products/solutions
Decide about improvement measures based on the output of the established
measuring system
Achievements at AdNovum
Achieved a drastic improvement in
predictability of results
fault prevention