4 ms·
There are areas of software development that do operate more like traditional engineering, such as in avionics software development. For example, software deve
by tjr 11y ago
There are areas of software development that do operate more like traditional engineering, such as in avionics software development.
For example, software developed for commercial avionics systems in the United States follows the guidelines in DO-178C:
https://en.wikipedia.org/wiki/DO-178C https://en.wikipedia.org/wiki/DO-178C
Every stage of development from writing requirements to coding to verification to selection and usage of tools (including compilers and operating systems) is reviewed across a mixture of internal reviews and external audits. There's an extensive paper trail with each subsystem (i.e., software + hardware unit) being tested and enduring a certification process before being released to the public.
So while the engineers on these projects aren't licensed, the development processes and the resulting software are examined and signed off on.
Does that count for software engineering? I think it does. The next interesting question, in my opinion, is, if that counts as software engineering, then what aspect could we take away or relax, and still have software engineering? Is there a graduated spectrum of software engineering? Or is there a hard cut-off point, where we can say, "yes, this is engineering, but that isn't"?
- ThomaszKrueger 11y agoThat seems to be the exception. Practically everywhere you look it is like someone else pointed out "mf* programming".
- tjr 11y agoIt is indeed an exception. But it demonstrates that software engineering does exist, and it suggests that more software could be "engineered", if we chose to do so. I suspect that reason that such engineering process isn't applied to more software is that we don't really care that much. Are we willing to accept a 10x, or 100x, increase in development time and cost in order to have a more robust iPhone game? Word processor? To-do list? Which is why I'm interested in the question, what can we take away or relax from avionics-style software development to bring better "engineering" practices to other areas of software? Maybe a 2x increase in time and cost would be acceptable...