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 full-size slide

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

    View full-size slide

  3. Why do we need
    requirements
    management?

    View full-size slide

  4. So our software
    doesn’t kill people.

    View full-size slide

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

    View full-size slide

  6. OK, but what’s a
    requirement?

    View full-size slide

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

    View full-size 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 full-size 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 full-size slide

  10. We need a tool…

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. The Status Quo

    View full-size slide

  14. 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 full-size slide

  15. #1 Linkable Identifiers
    • Database Rows

    • Drag-and-drop Linking

    View full-size slide

  16. #2 Formatted Content

    View full-size slide

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

    View full-size slide

  18. #4 Permanent Storage
    1

    View full-size slide

  19. #5 Scaleable Installation
    $$$
    $$$
    $$$
    $$$
    $$$

    View full-size slide

  20. #6 Account Administration
    • Additional User Accounts

    • Requires Dedicated Support

    View full-size slide

  21. #7 Change Management

    View full-size slide

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

    View full-size slide

  23. #9 Document Publishing

    View full-size slide

  24. #10 Scripting Interfaces
    • Raw Database Queries

    • Embedded DSL

    View full-size slide

  25. #1 Linkable Identifiers

    View full-size slide

  26. #2 Formatted Content

    View full-size slide

  27. #3 External References

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  30. #6 Account Administration

    View full-size slide

  31. #7 Change Management

    View full-size slide

  32. #8 Auditable Baselines

    View full-size slide

  33. #9 Document Publishing

    View full-size slide

  34. #10 Scripting Interfaces

    View full-size slide

  35. Let’s do it live!

    View full-size slide

  36. 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 full-size slide