Meditation, The Art of Exploitation

Thinking? At last I have discovered it--thought; this alone is inseparable from me. I am, I exist--that is certain. But for how long? For as long as I am thinking. For it could be, that were I totally to cease from thinking, I should totally cease to exist....I am, then, in the strict sense only a thing that thinks.

Thursday, February 22, 2007

Design and implement large software system

I personally found it very efficient to follow the following cycles to implement large software system:

1) research, see what features are required, any existing software/library that can speed up the development, what are the platforms to support, what tools should be used, etc

2) design and documentation, express your software system in clear text what it does, how it does it. Try to be as precise as possible.

3) unit testing of tools, 3rd party softwares, and libraries, this is often partially done in phase 1, but at this stage a through and in-depth unit testing framework should be employed.

4) I personally prefer developing software by component and writing unit test alone the way. Never underestimate the power of unit testing, even the simplest test can save you hours of headache.

5) packaging and integration. If design is sound and documentation is clear, software development is simply a matter of man-hour.

6) more testing.