Don't forget the data model!

Regardless of the complexity of an application a data model can help gleam a deeper understanding of the problem that the application is addressing. A data model is an abstract description of the data, it is not tied to any technology. A data model illustrates the core of an application. A data model will help find flaws in your application and provides rationale for further development.

Reading the Wikipedia Data Modelling article may leave you scratching your head. Theres a huge number of long, cryptic terms and it's not clear how or where to start the modelling. I'm not a data modelling expert, but my approach, outlined below, has served me well.

I use two types of diagrams. I start by sketching an Entity Relationship model (ERM). I do this on paper and iterate quickly. The ERM gives me a broad understanding of the problem. Once I'm happy with the ERM I move onto an Entity-attribute-value model (EAV). The EAV lets me flesh out the details and describe inheritance relationships within the data (EAV is the approach used by Core Data).
0 Comments