The first thing you do when you design software is figure out what it's supposed to do.