Saturday, May 15, 2021

System Inventory

 A list of things that need to exist for any large software development project:

  1. A general write-up of the industry, domain, etc. including terminology and conventions.

  2. A roadmap for the growth and direction of the system.

  3. A set of requirements (by feature) from the user’s perspective.

  4. The user’s workflows as they relate to the domain problems they are encountering.

  5. A model for each of the different data entities that are encountered during the workflows.

  6. A list of real examples and all special cases.

  7. A set of requirements from the operational perspective.

  8. A design grid for all screens.

  9. A color scheme for the GUI.

  10. A high-level navigation structure for the GUI.

  11. An arrangement of data/functionality/layout for any ‘difficult’ screens.

  12. A high-level design/architecture for the system, broken down by major components including frameworks, libraries, and persistence.

  13. A high-level runtime arrangement for processes, machines, etc.

  14. A lot of mid-level designs for the organization of the code.

  15. A code repository with full history, including highlighting the code that was released to the different environments. Also contains all dependencies necessary for building.

  16. A development setup guide, including any tools, configurations, etc. 

  17. A style and conventions guide for making changes or new additions to the code base.

  18. Technical notes on solving complex problems, preferred idioms, references, and other issues.

  19. A searchable inventory of the reusable parts of the code.

  20. Low-level specifications and/or the code.

  21. A set of test suites that match back to the workflows and examples.

  22. A full list of all known bugs (testing, user, or operational), solved or currently pending.

  23. A set of scripts or instructions on how to build and package the code.

  24. A list of expected configuration parameters and flags for testing and production setups.

  25. A set of scripts to safely upgrade the system, including persistent schema changes and rollbacks.

  26. An operational manual on how to handle recurring problems.

  27. A tutorial on how to use the GUI for common tasks.

  28. A reference document for any APIs, plus any technical notes for calling it correctly.


Any missing items will cause grief.

No comments:

Post a Comment

Thanks for the Feedback!