Doorstop: Requirements Management using Python and Version Control

Doorstop: Requirements Management using Python and Version Control

Eff2cdaa8474520ed29ebc38031fab87?s=128

Jace Browning

March 22, 2014
Tweet

Transcript

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

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

  3. Why do we need requirements management?

  4. So our software doesn’t kill people.

  5. So we can demonstrate to a sufficient degree… that our

    software doesn’t kill people.
  6. OK, but what’s a requirement?

  7. SYS001: The flap system shall extend to “full position” when

    requested within 30 ± 1 seconds.
  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 …
  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…
  10. None
  11. We need a tool…

  12. Requirements Management Tools #1 Linkable Identifiers #2 Formatted Content #3

    External References #4 Permanent Storage #5 Scaleable Installation
  13. Requirements Management Tools #6 Account Administration #7 Change Management #8

    Auditable Baselines #9 Document Publishing #10 Scripting Interfaces
  14. The Status Quo

  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 +
  16. #1 Linkable Identifiers • Database Rows
 • Drag-and-drop Linking

  17. #2 Formatted Content

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

  19. #4 Permanent Storage 1

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

  21. #6 Account Administration • Additional User Accounts
 • Requires Dedicated

    Support
  22. #7 Change Management

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

  24. #9 Document Publishing

  25. #10 Scripting Interfaces • Raw Database Queries
 • Embedded DSL

  26. Doorstop

  27. + +

  28. #1 Linkable Identifiers

  29. #2 Formatted Content

  30. #3 External References

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

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

    ! !
  33. #6 Account Administration

  34. #7 Change Management

  35. #8 Auditable Baselines

  36. #9 Document Publishing

  37. #10 Scripting Interfaces

  38. Let’s do it live!

  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