7 ms·
Frankly, I dispute the existence of a "Software Engineer." The UK and parts of Canada may recognize and regulate people with this title, but I don't believe th
by jbondeson 15y ago
Frankly, I dispute the existence of a "Software Engineer."
The UK and parts of Canada may recognize and regulate people with this title, but I don't believe that the same rigor _can_ be applied to building software.
You would have to work with formally verified (and I mean that in the mathematical sense) hardware and software all the way up and down the stack (that would include the language and compiler you utilize). You would then have to formally verify your own software on the stack you are deploying to. Only then would you be approaching the rigor that other Engineering professions are held to.
- TheCapn 15y agoI guess I lied in part... I'm a Systems Engineer with a Software specialization. My work is about the integration of software components into a much larger architecture of devices... in my case I keep the internet backbone alive for my province that includes alarm monitoring, fault detection/correction and upkeep to systems for prevention. AI, formal methods and other broad categories are extremely relevant in my industry and I personally believe only a fool would discredit this as an Engineer's job.
- jbondeson 15y agoYou're an Engineer who writes software, nothing wrong with that. Lots of Chemical and Electrical Engineers write software, I'm still not going to call them Software Engineers. This isn't about discrediting anyone's life work. The fact is if you're developing software that gets deployed on anything but purpose-built hardware you're already not engaging in proper engineering practices. It would be like building a bridge with materials whose properties you didn't know.
- jarek 15y ago> I don't believe that the same rigor _can_ be applied to building software. Check out aerospace software development processes. edit: also embedded automotive software
- randomdata 15y agoThere was an article posted (I believe here) a while back about aerospace software development. They talked about the processes used to develop the software and it was definitely in line with engineering rigor. However, it went on to say the people doing the work were not professional engineers. So, at least in some countries, you still could not call it software engineering.
- jarek 15y agoI'd guess that a professional engineer is still required to sign off on the software before a plane gets certification. The same happens when non-licensed-engineers work on other engineering projects. Perhaps the software part does have less engineers working on it percentage wise.
- tjr 15y agoI've worked on avionics flight management systems. We had reams of system requirements, multi-person code reviews for every line of code in the product, formal verification runs, system integration testing, field testing... The compilers used were qualified for our use. All libraries used were qualified. All operating system components used in the product were qualified. Internal tools that automated any part of the process were qualified. I'm not sure what your criteria is for "mathematical" verification, but I see this sort of work as software engineering.
- jbondeson 15y agoThe aerospace and medical fields have done quite a bit to increase the rigor in building software, however there doesn't seem to be any push from them to codify their processes and establish some sort of push for the industry as a whole. The establishment of a true Software Engineering discipline would require some consensus on the use of formal methods in specification design, and then program verification. The other hurdle is that you need the same rigor from your hardware designers. Just as structural engineers must rely on the rigor of steel manufacturers, we are held hostage by hardware manufacturers. Frankly the entire industry needs a wake up call. As for formal verification, it is the mathematical proof (in the pure sense) that a program behaves exactly as speced -- the specification must also be formally verified for consistency. Currently this is only possible on relatively small programs, with the largest being several compiler back-ends being verified. Here's a paper on what it took to formally verify the seL4 micro-kernel: http://www.sigops.org/sosp/sosp09/papers/klein-sosp09.pdf http://www.sigops.org/sosp/sosp09/papers/klein-sosp09.pdf
- tjr 15y agoCodify their processes? http://en.wikipedia.org/wiki/DO-178B http://en.wikipedia.org/wiki/DO-178B On the avionics software I worked on, we (another group of people) designed and manufactured the hardware. I'm not as familiar with the process there, but I have no reason to believe that it wasn't done with similar rigor. [See http://en.wikipedia.org/wiki/DO-254 http://en.wikipedia.org/wiki/DO-254] I understand mathematical proof, but I wasn't sure that was what you meant. I did not realize that physical engineering projects are mathematically proven to that extent?