Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Doorstop: Requirements Management using Python and Version Control

Doorstop: Requirements Management using Python and Version Control

Jace Browning

March 22, 2014
Tweet

More Decks by Jace Browning

Other Decks in Programming

Transcript

  1. Doorstop: Requirements
    Management using Python
    and Version Control
    @JaceBrowning

    View Slide

  2. The Agenda
    Requirements Management
    Status Quo
    Doorstop
    Concept
    API
    Demo

    View Slide

  3. Why do we need
    requirements
    management?

    View Slide

  4. So our software
    doesn’t kill people.

    View Slide

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

    View Slide

  6. OK, but what’s a
    requirement?

    View Slide

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

    View Slide

  8. 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 …

    View Slide

  9. 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…

    View Slide

  10. View Slide

  11. We need a tool…

    View Slide

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

    View Slide

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

    View Slide

  14. The Status Quo

    View Slide

  15. 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
    +

    View Slide

  16. #1 Linkable Identifiers
    • Database Rows

    • Drag-and-drop Linking

    View Slide

  17. #2 Formatted Content

    View Slide

  18. #3 External References
    ???
    requirements code + tests

    View Slide

  19. #4 Permanent Storage
    1

    View Slide

  20. #5 Scaleable Installation
    $$$
    $$$
    $$$
    $$$
    $$$

    View Slide

  21. #6 Account Administration
    • Additional User Accounts

    • Requires Dedicated Support

    View Slide

  22. #7 Change Management

    View Slide

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

    View Slide

  24. #9 Document Publishing

    View Slide

  25. #10 Scripting Interfaces
    • Raw Database Queries

    • Embedded DSL

    View Slide

  26. Doorstop

    View Slide

  27. + +

    View Slide

  28. #1 Linkable Identifiers

    View Slide

  29. #2 Formatted Content

    View Slide

  30. #3 External References

    View Slide

  31. #4 Permanent Storage
    source
    requirements
    documents
    tests
    linking
    artifacts

    View Slide

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

    View Slide

  33. #6 Account Administration

    View Slide

  34. #7 Change Management

    View Slide

  35. #8 Auditable Baselines

    View Slide

  36. #9 Document Publishing

    View Slide

  37. #10 Scripting Interfaces

    View Slide

  38. Let’s do it live!

    View Slide

  39. 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

    View Slide