Slide 1

Slide 1 text

Doorstop: Requirements Management using Python and Version Control @JaceBrowning

Slide 2

Slide 2 text

The Agenda Requirements Management Status Quo Doorstop Concept API Demo

Slide 3

Slide 3 text

Why do we need requirements management?

Slide 4

Slide 4 text

So our software doesn’t kill people.

Slide 5

Slide 5 text

So we can demonstrate to a sufficient degree… that our software doesn’t kill people.

Slide 6

Slide 6 text

OK, but what’s a requirement?

Slide 7

Slide 7 text

SYS001: The flap system shall extend to “full position” when requested within 30 ± 1 seconds.

Slide 8

Slide 8 text

SYS001: The flap system shall extend to “full position” when requested within 30 ± 1 seconds. HLR001: The software shall toggle position states when… HLR001: The software shall enable the drive motor… LLR001: The fsm_loop function shall … LLR002: The fsm_loop function shall … LLR002: The fsm_loop function shall …

Slide 9

Slide 9 text

SYS001: The flap system shall extend to “full position” when requested within 30 ± 1 seconds. HLR001: The software shall toggle position states when… HLR001: The software shall enable the drive motor… LLR001: The fsm_loop function shall … LLR002: The fsm_loop function shall … LLR002: The fsm_loop function shall … HLT001: Verify the software… HLT002: Verify the software… LLT001: Verify fsm_loop… LLT001: Verify fsm_loop… LLT001: Verify fsm_loop… LLT001: Verify fsm_loop… LLT001: Verify fsm_loop…

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

We need a tool…

Slide 12

Slide 12 text

Requirements Management Tools #1 Linkable Identifiers #2 Formatted Content #3 External References #4 Permanent Storage #5 Scaleable Installation

Slide 13

Slide 13 text

Requirements Management Tools #6 Account Administration #7 Change Management #8 Auditable Baselines #9 Document Publishing #10 Scripting Interfaces

Slide 14

Slide 14 text

The Status Quo

Slide 15

Slide 15 text

ID Text Kind Author 001 Requirements Text Jace 002 The software shall… Specified Jace 005 The software shall… Specified Jace 006 The software shall… Derived Jace +

Slide 16

Slide 16 text

#1 Linkable Identifiers • Database Rows
 • Drag-and-drop Linking

Slide 17

Slide 17 text

#2 Formatted Content

Slide 18

Slide 18 text

#3 External References ??? requirements code + tests

Slide 19

Slide 19 text

#4 Permanent Storage 1

Slide 20

Slide 20 text

#5 Scaleable Installation $$$ $$$ $$$ $$$ $$$

Slide 21

Slide 21 text

#6 Account Administration • Additional User Accounts
 • Requires Dedicated Support

Slide 22

Slide 22 text

#7 Change Management

Slide 23

Slide 23 text

#8 Auditable Baselines v0.1 v0.2 v1.0

Slide 24

Slide 24 text

#9 Document Publishing

Slide 25

Slide 25 text

#10 Scripting Interfaces • Raw Database Queries
 • Embedded DSL

Slide 26

Slide 26 text

Doorstop

Slide 27

Slide 27 text

+ +

Slide 28

Slide 28 text

#1 Linkable Identifiers

Slide 29

Slide 29 text

#2 Formatted Content

Slide 30

Slide 30 text

#3 External References

Slide 31

Slide 31 text

#4 Permanent Storage source requirements documents tests linking artifacts

Slide 32

Slide 32 text

#5 Scaleable Installation ! ! ! pip  install  Doorstop   ! !

Slide 33

Slide 33 text

#6 Account Administration

Slide 34

Slide 34 text

#7 Change Management

Slide 35

Slide 35 text

#8 Auditable Baselines

Slide 36

Slide 36 text

#9 Document Publishing

Slide 37

Slide 37 text

#10 Scripting Interfaces

Slide 38

Slide 38 text

Let’s do it live!

Slide 39

Slide 39 text

Doorstop API Demo: nbviewer.ipython.org/gist/jacebrowning/9754157 Sample Doorstop Project: github.com/jacebrowning/doorstop-demo Sample HTML Output: jacebrowning.github.io/doorstop-demo Doorstop Source Code: github.com/jacebrowning/doorstop