- state this in a sentence or two
- state this as a user-facing outcome
- constraints solution needs to abide by (budget, timelinem, space, memory, etc)
- capabilities of the program to meet need
- define that WHAT not the HOW
- defining what the target architecture is
- determine the set of tools
- determining whether you wil write alone or part of a team
- defining testing/feedback/release strategy
- defining how to backup code
- top-down method: break the task into multiple subtasks, each of which is individually easier to solve
- if still too difficult, further broken down
- bottom-up, look for ways to group items with similarities.
- Creates a task hierarchy
- top-level becomes main()
- subitems become functions
- top-level becomes main()
- Figure out what needs to be done first
- comments or pseudo code