This is an introductory article to this category. In Software and Mathematics, I write about how methods in mathematics can improve software development. Important is gaining a fundamental understanding of why software development is such a problematic process.
There are many software packages and techniques that will help in improving the software development process. However, these will never solve the software complexity issue. That is, the large amount of errors released in production software and time needed to go back and find errors. Not to mention the new errors introduced in correcting the old ones.
To understand why software can’t fix software and current development methods will only provide small improvements, it is necessary to think about the software development process at a very basic level. At root of software errors and the archaic software life cycle is complexity. Software analysis programs and various methods don’t deal with this fundamental issue. They may be thought of as bandaides – providing some type of relief, allowing you to develop new software and introduce more complexity. Only after the software is complete and released do you realize how little these programs and techniques helped.
Understanding what is meant by complexity and employing methods in your development process to avoid it will give you more return than any type of program available that aides in discovering errors.
Complexity is largely mathematically based as is software development. Both work in a certain type of system referred to as a nonlinear dynamic system. I could give completely intuitive descriptions about complexity and mathematical foundations in software development. However, this only leads to misinterpretation. It’s important to speak about complexity and software development in their native languages, which is rigorous and doesn’t leave room for misinterpretation. That language is mathematics and also the predicate calculus.
You’ll find articles related to the above discussion in the Software and Mathematics category. Hopefully you will gain a fundamental understanding of the software development process and know enough to find material on your own for further reading. I hope this is a new fruitful discovery for you as a software developer.