I don't think anything can take the place of a good old fashioned design spec for the following reasons:
- It serves as a means of communicating how you will build an application to others.
- It lets you get ideas out of your head so you don't worry about tracking a million things at the same time.
- If you have to pause a project and return to it later you're not starting your thought process over again.
I like to see various bits of info in a design spec:
- General explanation of your approach to the challenge at hand
- How will you monitor your application?
- What are the security concerns and how are they addressed?
- Flowcharts / sequence diagrams
- Open issues
- Known limitations
Unit tests, while a fantastic and arguably critical item to include in your application development, don't cover all of these topics.