shuisheng wrote:
Dear All,
I want to start a c++ software project. It is used to simulate the
propagation of sound waves in complex media. It may contain 4 parts:
GUI, preprocession, simulation and postprocession. Users can use GUI
to model their geometry, set some parameters and show the results.
The system is kind of large. I have no expierence in large codes. But
I am very familiar with the physics part and what functionaloty the
system should provide. Seems for a large system, we need do
requirement analysis, architecture design and so on. Anybody can give
me some suggestion? May I jump over them to directly code the program?
This may make the project begin immedialtly and fulfill early.
I appreciate your kind help!
Shuisheng
I personally found it very efficient to follow the following cycle 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.
languages. I often prototype in Perl first then translate the whole
thing into C++. Again this is from my own personal experience, it's
critical environment.