How to develop software
Intellectuals solve problems; geniuses prevent them.
Large amounts of money are lost each year, because of the results of software failure and the work involved in finding and correcting faults. Famous examples are
and the first Ariane 5 rocket, but most of the money is lost in everyday software. An estimate of the American government is a loss of about sixty thousand million dollar per year for the U.S.A. economy.
Errors can be prevented by using good design and process principles.
My ideas about how a company should develop software, can be outlined with the following:
Cleanroom Software Engineering
Cleanroom Software Engineering (CSE) prevents errors as much as possible,
as this is often less costly than testing and debugging.
CSE combines formal methods of requirements
and design with statistical usage testing to produce software with
nearly none or no defects.
Testing can never demonstrate the absence of errors
in software, only their presence.
(Edsger W. Dijkstra)
Everyone knows that debugging is twice as hard as writing
a program in the first place. So if you're as clever as
you can be when you write it, how will you ever debug it?
Capability Maturity Model Integration
The Capability Maturity Model Integration is a model for improving your processes.
It's harder than you might think to squander millions of dollars,
but a flawed software development process is a tool well suited to the job.
Functional programming is a way to write shorter programs with fewer errors. The programming language Haskell 2010 is the de facto standard in this area.
If language is not correct, then what is said is not what is
meant. If what is said is not what is meant, then what ought
to be done remains undone.
(Kong Fu Zi a.k.a. Confucius)
ISO standards that provide requirements or give guidance on good management practice are among the best known of ISO's offering.
Eliminate slogans, exhortations, and targets for the
work force asking for zero defects and new levels of
productivity. Such exhortations only create adversarial
relationships, as the bulk of the causes of low quality
and low productivity belong to the system and thus lie
beyond the power of the work force.
(W Edwards Deming)
Number of times this page is fetched (since 2004-04-01):