4 ms·
In a way there are standards for software but those standards are not expressed in software terms. Firstly, most software is harmless. If it goes wrong people
by sime2009 5y ago
In a way there are standards for software but those standards are not expressed in software terms.
Firstly, most software is harmless. If it goes wrong people may be annoyed, but no one is harmed. But if I write software to control an aircraft, then it would have to abide by aviation standards. If I write financial software then I would have financial regulations to follow. Same for medical devices. So, there are standards for software but they are indirect and expressed in terms of the wider domain in which it runs.
- westurner 5y agoCritical systems: https://en.wikipedia.org/wiki/Critical_system https://en.wikipedia.org/wiki/Critical_system : > There are four types of critical systems: safety critical, mission critical, business critical and security critical. Safety-critical systems > "Software engineering for safety-critical systems" https://en.wikipedia.org/wiki/Safety-critical_system#Software_engineering_for_safety-critical_systems https://en.wikipedia.org/wiki/Safety-critical_system#Softwar... : > By setting a standard for which a system is required to be developed under, it forces the designers to stick to the requirements. The avionics industry has succeeded in producing standard methods for producing life-critical avionics software. Similar standards exist for industry, in general, (IEC 61508) and automotive (ISO 26262), medical (IEC 62304) and nuclear (IEC 61513) industries specifically. The standard approach is to carefully code, inspect, document, test, verify and analyze the system. Another approach is to certify a production system, a compiler, and then generate the system's code from specifications. Another approach uses formal methods to generate proofs that the code meets requirements.[11] All of these approaches improve the software quality in safety-critical systems by testing or eliminating manual steps in the development process, because people make mistakes, and these mistakes are the most common cause of potential life-threatening errors. awesome-safety-critical lists very many resources for safety critical systems: https://awesome-safety-critical.readthedocs.io/en/latest/ https://awesome-safety-critical.readthedocs.io/en/latest/ There are many ['Engineering'] certification programs for software and other STEM fields. One test to qualify applicants does not qualify as a sufficient set of controls for safety critical systems that must be resilient, fault-tolerant, and redundant. A real Engineer knows that there are insufficient process controls from review of very little documentation; it's just process wisdom from experience. An engineer starts with this premise: "There are insufficient controls to do this safely" because [test scenario parameter set n] would result in the system state - the output of probably actually a complex nonlinear dynamic system - being unacceptable: outside of acceptable parameters for safe operation. Are there [formal] Engineering methods that should be requisite to "Computer Science" degrees? What about "Applied Secure Coding Practices in [Language]"? Is that sufficient to teach theory and formal methods? From "How We Proved the Eth2 Deposit Contract Is Free of Runtime Errors" https://news.ycombinator.com/item?id=28513922 https://news.ycombinator.com/item?id=28513922 : >> From "Discover and Prevent Linux Kernel Zero-Day Exploit Using Formal Verification" https://news.ycombinator.com/item?id=27442273 https://news.ycombinator.com/item?id=27442273 : >> [Coq, VST, CompCert] >> Formal methods: https://en.wikipedia.org/wiki/Formal_methods https://en.wikipedia.org/wiki/Formal_methods >> Formal specification: https://en.wikipedia.org/wiki/Formal_specification https://en.wikipedia.org/wiki/Formal_specification >> Implementation of formal specification: https://en.wikipedia.org/wiki/Anti-pattern#Software_engineering https://en.wikipedia.org/wiki/Anti-pattern#Software_engineer... >> Formal verification: https://en.wikipedia.org/wiki/Formal_verification https://en.wikipedia.org/wiki/Formal_verification >> From "Why Don't People Use Formal Methods?" https://news.ycombinator.com/item?id=18965964 https://news.ycombinator.com/item?id=18965964 : >>> Which universities teach formal methods? >>> - q=formal+verification https://www.class-central.com/search?q=formal+verification https://www.class-central.com/search?q=formal+verification >>> - q=formal+methods https://www.class-central.com/search?q=formal+methods https://www.class-central.com/search?q=formal+methods >>> Is formal verification a required course or curriculum competency for any Computer Science or Software Engineering / Computer Engineering degree programs? https://news.ycombinator.com/item?id=28513922 https://news.ycombinator.com/item?id=28513922 From "Ask HN: Is it worth it to learn C in 2020?" https://news.ycombinator.com/item?id=21878372 https://news.ycombinator.com/item?id=21878372 : > There are a number of coding guidelines e.g. for safety-critical systems where bounded running time and resource consumption are essential. These coding guidelines and standards are basically only available for C, C++, and Ada. awesome-safety-critical > Software safety standards: https://awesome-safety-critical.readthedocs.io/en/latest/#software-safety-standards https://awesome-safety-critical.readthedocs.io/en/latest/#so... awesome-safety-critical > Coding Guidelines: https://awesome-safety-critical.readthedocs.io/en/latest/#coding-guidelines https://awesome-safety-critical.readthedocs.io/en/latest/#co...
- thereddaikon 5y agoWhile that's true, those standards don't really fully account for the needs of proper software engineering practices IMO. You can say aircraft code follow aerospace standards yet those standards didn't stop Boeing from making a system that overrode pilot input while only relying on two sensors. It also didn't stop Boeing from launching a space capsule that didn't have the thrusters mapped properly. Nor did it prevent Lockheed from shipping GPS code that caused the navigation system of the F-22 from crashing when it crossed the international dateline. Standards and norms aren't the same thing as a building code. Civil Engineers have a code they must meet at minimum for the things they build. There are ways that certain things must be done and they have to sign off on every project. We don't see that with equally important software. For some reason if a bridge collapses and it was found that it was designed wrong the engineer goes to jail but if a plane crashes because its autopilot had design flaws the developer doesn't.