What are the objectives of the system? Who are the users? What goals do the users want?
What technologies will be used? What software patterns (MVVM/MVC/Pub-Sub/Producer-Consumer) are being used? What other options were considered?
What is Component 1? What is the responsibility of Component 1?
Sketch of how Components interact with each other
What are the interfaces between Components?
How does the System interface with other external systems (ones not described in this document)?
How do users interact with the System?
Detail explicit classes of errors that need explicit treatment
How will errors be retried? How are partial state changes handled?
What errors will the users see? What actions should they take? Will they lose data?
What errors will trigger an alert to the operations/support team?
What important non-error (warning/info/trace) behaviors will be logged?