industrial experience with agile in high-integrity ... · industrial experience with agile in...

58
Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration Roderick Chapman Protean Code Limited [email protected]

Upload: others

Post on 28-May-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Industrial experience with Agile in high-integrity software development

Working software

Responding to change

Customer collaboration

Roderick Chapman Protean Code Limited

[email protected]

Page 2: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

High-Integrity versus Agile ?

2

Page 3: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

High-Integrity versus Agile ?

2

Page 4: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

High-Integrity versus Agile ?

2

Page 5: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Can we do “High Integrity Agile” ?

3

Page 6: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Can we do “High Integrity Agile” ?

3

▪ Short Answer

Page 7: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Can we do “High Integrity Agile” ?

3

▪ Short Answer

YES!

Page 8: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Can we do “High Integrity Agile” ?

4

Page 9: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Can we do “High Integrity Agile” ?

4

▪ Long Answer

Page 10: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Can we do “High Integrity Agile” ?

4

▪ Long Answer

Yes … but …

Page 11: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

CONTENTA. Background and sources

B. So what’s “High-Integrity” Anyway?

C. High-Integrity Agile – Assumptions and Issues

D. Agile Blind Spots – Turning the Dials Up

E. The $64M Question…

F. Next Steps…

Page 12: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

CONTENT

A. Background and sources B. So what’s “High-Integrity” Anyway?

C. High-Integrity Agile – Assumptions and Issues

D. Agile Blind Spots – Turning the Dials Up

E. The $64M Question…

F. Next Steps…

Page 13: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Some light reading…

7

Page 14: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Some light reading…

7

Page 15: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Some light reading…

7

Page 16: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Some light reading…

7

Page 17: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Some light reading…

7

Page 18: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Some light reading…

7

Page 19: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Some light reading…

7

Page 20: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Some light reading…

7

Page 21: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Some light reading…

7

Page 22: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Some light reading…

7

Page 23: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

…and a few projects…

8

› Lockheed Martin C130J Mission Computer.

› Lean, Formal, Safety-Critical, Agile…in 1995?

› How did they do it?

Page 24: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

…and a few projects…

9

Page 25: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

…and a few projects…

10

Page 26: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

…and reports from industry…

11

▪ Many reports of Agile being used in medical devices, under FDA regulatory regime,

▪ Thales Avionics (Valence, France) report use of Agile in development of avionic systems,

▪ And many more…

Page 27: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

CONTENTA. Background and sources

B. So what’s “High-Integrity” Anyway?

C. High-Integrity Agile – Assumptions and Issues D. Agile Blind Spots – Turning the Dials Up E. The $64M Question… F. Next Steps…

Page 28: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

“High-Integrity” Software?

13

▪ One way of looking at it:

▪ “Fitness for purpose must be established by

logical argument, before first deployment…”

▪ Also not possible to “test it lots” - not

enough time or resources.

▪ “Patch it later” is not possible!

▪ Worst case: you get one chance to ship it. If

you screw up, you go to jail…

Page 29: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

“High-Integrity” Software?

14

▪ Close historical association with regulated safety-critical industries - aviation, air-traffic management, rail nuclear.

▪ Lots of “real-time” and “embedded” systems

here.

▪ More recently - enormous interest (and regular high-profile screw ups) in “Security” of software (whatever that means…)

▪ Plus… Toyota, VW, Jeep, “IoT” etc. etc.

Page 30: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

“High-Integrity” Software?

15

▪ Also associated with

▪ “Formal Methods” ???

▪ Expensive? (More than what?)

▪ “Organisational” software process stuff, like CMMI, Six-Sigma, “Lean”, and so on…

Page 31: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

CONTENTA. Background and sources B. So what’s “High-Integrity” Anyway?

C. High-Integrity Agile – Assumptions and Issues

D. Agile Blind Spots – Turning the Dials Up E. The $64M Question… F. Next Steps…

Page 32: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Single customer?

17

▪ Agile view: Single “customer”, represented by “Product Owner” role…

▪ Really?

▪ What about

› Multiple classes of “User”

› Procurer

› Regulator (and standard-setting body) › Project ISA

Page 33: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Regression Test and Verification

18

▪ Agile view: “Regression Test” is principal (only?) verification activity, and is fast and amenable to automation.

▪ “All tests pass” defines

› When a refactoring is done

› When a product is “good enough” to close a sprint and ship to customer.

Page 34: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Regression Test and Verification

19

▪ High Integrity View - No chance!

▪ We know “test” is utterly insufficient to claim ultra-reliability, safety or security properties.

› Butler/Finelli and Littlewood papers from 20 years ago…

› Security will always defy test anyway…

Programming Satan’s Computer…

Page 35: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Regression Test and Verification

20

▪ Many more forms of verification are required by standards, for example:

› Personal and Peer Review

› Automated static analysis

› Structural coverage (on target?) › Traceability analysis

› Performance test

› Penetration test etc. etc…

▪ We know we can do much better anyway – for example, aggressive use of sound static analysis.

Page 36: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Upfront and Architecture

21

Page 37: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Upfront and Architecture

21

▪ Observation 1: High-Integrity systems have demanding non-functional requirements for safety, security, performance, reliability etc. etc.

Page 38: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Upfront and Architecture

21

▪ Observation 1: High-Integrity systems have demanding non-functional requirements for safety, security, performance, reliability etc. etc.

▪ Observation 2: Our main weapon to achieve these goals is architecture.

Page 39: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Upfront and Architecture

21

▪ Observation 1: High-Integrity systems have demanding non-functional requirements for safety, security, performance, reliability etc. etc.

▪ Observation 2: Our main weapon to achieve these goals is architecture.

▪ Observation 3: You can’t afford to “refactor in” these properties into a system late in the day!

Page 40: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Upfront and Architecture

22

▪ Conclusion: we need just enough upfront architecture and design to be certain that

› Non-functional requirements will be met.

› Change can be accommodated later without horrendous pain and expense.

› Others have realised this: see SAFe work on “Architectural Runway” for example…

Page 41: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Upfront and Architecture

23

▪ But how do we know what non-functional properties are required of the architecture?

▪ Errm…by doing proper (Up Front) requirements engineering for safety and security properties…

▪ “Architectural design is really important because changing my mind is free.”

Page 42: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

User Stories and Non-Functional

24

▪ Agile-style “User Stories” provide a sampling of the “D, S, R space”

▪ There will be “gaps” between the stories…

▪ Guess where the safety and security problems will lie…

▪ Aside: how much of the MULTOS CA formal specification is devoted to error handling??

Page 43: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Agile “Simple sprint pipeline”

25

▪ Agile presumes a two-stage pipeline: one system being used by the customer and one system being developed in current sprint.

› Delivery and deployment is assumed to be “instant”…

▪ Real world: no chance!

▪ Example: iFACTS 4-stage pipeline › Build N: in live operation

› Build N+1: in NATS’ test lab

› Build N+2: in development/test at Altran

› Build N+3: Requirements and formal specification

Page 44: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Iteration rate…

26

▪ How fast can we iterate? › Only as fast as the slowest pipeline stage…

› Full-blown evidence (e.g. safety case production) and customer acceptance test might be way too slow for a standard “Agile” model…

▪ Idea: multiple iteration rates and deliveries:

› Fast “minor” iteration with reduced evidence package and limited deployment.

› Slower “major” iteration with full evidence, suitable for operational deployment.

Page 45: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Embedded Systems Issues

27

▪ Agile depends on plentiful availability of “target environment” to drive a fast build/integration/test process.

▪ Not True for embedded systems. › Many projects have no target hardware for the

majority of the time…

▪ Some verification activities (e.g. on-target structural coverage) are painful and slow.

Page 46: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Embedded Systems Issues

28

▪ Availability of target hardware for “test” can be a massive bottleneck.

▪ Idea: don’t depend on “target hardware” and “test” so much…

Page 47: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

CONTENTA. Background and sources B. High-Integrity Agile – Assumptions and Issues

C. Agile Blind Spots – Turning the Dials Up

D. The $64M Question… E. Next Steps…

Page 48: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Turning the dials up…

30

▪ We’ve been building high-integrity software for more than 20 years…

▪ What have we learned that could improve an Agile approach?

▪ What about › Team and Personal Software Process (TSP/PSP)?

› Formal Methods?

› Correctness-by-Construction approach?

› Lean Engineering?

› Programming Language Design and Static Verication like SPARK?

Page 49: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Static Verification

31

▪ Strong Static Verification can complement “test” › Faster

› “Sounder” – potentially covers all input data and system states.

› Deeper – prevents and finds bugs that “test” simply cannot reach.

▪ So…precede “Regression Test” with “Regression Proof”

▪ All developers run SV tools all the time, and is not dependent on availability of target hardware, so scales well.

▪ Performance? iFACTS regression proof now takes 15 minutes.

Page 50: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Reviewing vs pair programming

32

▪ Jury is still out on whether Agile “pair programming” is really better…

▪ Conjecture:

› Developer +

› Strong Static Verification +

› PSP Personal Review +

› TSP Peer Review

▪ …is much better.

▪ No control experiment to confirm this…sorry!

Page 51: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Automation, automation, automation…

33

▪ Can we automate production of other verification evidence?

› Structural coverage

› Traceability analysis

› Other artefacts required by your standard or regulator?

▪ Yes...of course…

▪ So…right-to-left plan it. Work out which artefacts can be auto-generated and plan approach, disciplines and languages to do this in your minor or major iteration.

Page 52: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

A naïve Agile “build/integration” system

34

Automation

Build BuildsOK? RegressionTest Alltestspass ?Sources

DeveloperDeveloper

CustomerCustomer

BuildandtestresultsBuildandtestresults

Yes Yes

NoFailures

Feedback,Changes,Defects

Page 53: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

An Agile “Evidence Engine”...

35

“EvidenceEngine”

StaticAnalysis DynamicAnalysis

Designs,“Models”,Documenttemplates,

Sourcesetc.

DeveloperDeveloper

CustomerCustomer

NewBuildNewBuild

Analyses,Proofs,Traceabilityresults

Feedback,Changes,Defects

Regressiontestresults,Fuzztestingresults ,performanceanalysis

BuildDocumentGeneration

Documentation,AssuranceCase,

ProjectDashboardetc.

AssuranceEvidence

Buildresults

Page 54: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

CONTENTA. Background and sources

B. High-Integrity Agile – Assumptions and Issues

C. Agile Blind Spots – Turning the Dials Up

D. The $64M Question… E. Next Steps…

Page 55: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

The $64M question…

37

▪ So...how much “Upfront” is “Just Right” ???

▪ It depends…

▪ …but inform this decision with solid Requirements Engineering, especially for non-functional properties.

Page 56: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

The $64M question…

38

▪ Proposal: two-stage project

▪ Stage 1: Upfront work, resulting in requirements, specification (complete enough to estimate from), and enough architecture to verify NFRs and foreseeable change.

▪ Stage 2: Incremental/Agile build with multiple iteration rates.

▪ Critical: Completely different contractual and financial terms for Stages 1 and 2. (Discuss with your procurer… ☺ )

Page 57: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

CONTENTA. Background and sources

B. High-Integrity Agile – Assumptions and Issues

C. Agile Blind Spots – Turning the Dials Up

D. The $64M Question…

E. Next Steps…

Page 58: Industrial experience with Agile in high-integrity ... · Industrial experience with Agile in high-integrity software development Working software Responding to change Customer collaboration

Next Steps…

40

▪ For us: report on next project – Scrum with SPARK!

▪ For you: please publish your experiences.