IMHO: All software development should be performed as such:
1) Requirements - what should it do, and not do. Spin this till
everybody
signs off.
2) Prelim design - Ok, a rough outline of the design, data structures
and control/data flow defined here.
3) Detailed design - Define all the modules and their function, break it
down.
4) Test plan - integrate testing into detailed design, make it unit
testable.
a unit is somthing that has input and output and side effects, like a
function.
5) Finally, coding - build modules in parallel with test code.
6) Unit testing - verify that modules comply with detailed design.
7) Integration testing - hook it all together, make sure it works, apply
test plan developed in step 4 for fully integrated aplication.
Do 1-3 until marketing decides what they want,4-7 until you find no
errors.
For safety critical, you should /have to perform statement and decision
coverage in
step 6 and 7 and the detailed design should have a one-to-one
corespondence
with the detailed design document.
Jim Davis.
"Eric J. Korpela" wrote:
I've
also had to work alongside people who managed to scrape their way into
a "programming" job without having "what it takes" to really write
code
*and* solve problems. Don't get me wrong -- I have no degree and don't
think one's required to be a competent analyst/programmer/whatever.
But . . .
Should programmers be licensed? Sure makes me wonder . . .
Ok, what does it take to really write code and solve programs?
(Unlicensed programer/coder here ). Writing code is easy... writing the
doc's that is another story. I tend to favor the hardware side, but they
don't make TTL machines like the PDP-8E or transistor ones like the
PDP8/S.
I'm not sure if geeks should be licensed, but there are certainly instances
when their output should be monitored closely. Geeks who program voting
machines, for example. (I think that voting machine software should be
open source and available from the voting machine. Every other civilized
country gets by with pencil and paper and big bunches of people doing the
counting. I need to trust that an embedded systems programmer doesn't have
strong enough political beliefs that they would try to rig an election.
It gets even worse when you need to believe that people (read Microsoft)
coding the OS of the damn things don't have any interest in the outcome of
elections.)
I'd also include Geeks who program any machine that could accidentally
kill someone (for example airplanes) and Geeks who code for billion
dollar space hardware.
Eric