To develop software is not easy. It required passion and intelligent. A lot of thing can be automated by using software. Software can be use to replace thick dictionary, do spelling checker, help translation work and even generate income from selling the software.
Software can be complicated, it’s very complicated that sometimes you can lost track while doing programming. Good programmer will comment his/her code so that after several years, he/she still can understand what is the code all about. It’s easier to said than done. Some programmer tend to just write what come out from his mind. Without doing any proper planning, analysis or unit testing..
Well, the temptation to jump into the code is high. Some programmer get addicted to it. And it’s become a habit. A bad habit. Why? Code need to plan, require analysis and define a clear framework and architecture.
Let’s give some example.
Let’s say you want to develop dictionary software, spelling checker, translator plus the serial key registration system.
ermm. I start to think in term of object oriented(c++,Java,.net), or rapid development tools (vb,delphi)
How about database? How we are going to store them? is it a flat text files, relational database (mdb,fox, sql or mysql?)
Then what is the requirement of the software.. It’s easy to draw them using use case. or just write the feature requirment on piece of paper.
Dictionary Software.
1.Fast searching
2.Instant Translation
3.Pronunciation (TTS)
4.User friendly GUI
Spelling Checker
1. Check spelling in Ms word
2. Check spelling in Open Office
Translator
1.Translate sentences
2.Translate document
Serial Key Registration System
1. Generate serial number
2. Verify Serial Number
3. Activate serial Number
After define the requirement, than we can do the analysis. The analysis should not be overdone. You can analyze the code as you coding them. The testing is important area because you need to make sure there are no bugs. Debug can be misleading, you need to do beta testing as well. Because code is never bug free. Even you trace 100% of bug in your system, but when it’s come out to public. It’s may conflict with customer/user computer setting. You need to get feedback from the user. Well this is a nightmare for nerd sometimes. As they don’t prefer human interaction. Well, that why a good project need a combination of different people with different expertise.
To be continued