News for hackers. Stuff that matters.
Re:Computer science is not software engineering by sgt101 on Saturday December 26, 2020 @10:48AM (#25544099)
Software Engineering is badly named. Real engineers build artifacts that are designed to meet performance requirements as efficiently as possible. Software people can't even effectively specify the performance requirements of the artifacts that they produce.
Re:Computer science is not software engineering by PaulDavisThe1st on Saturday December 26, 2020 @10:57AM (#25544157)
That's mostly because the performance requirements don't exist, certainly not in the same sense as they do for mechanical engineering.

Imagine someone designing and constructing a bridge, and right after it was possible to walk gingerly across one part of it, the people in charge of the project said "hmm, could you put a parking area in the middle?". And then, right after you had done that, came back and said "great, but we'd like to make the whole thing a double decker so we can run a train line across the lower level?". Miraculously, you pull this off, and then they announce that they've realized that the bridge needs to open in the middle to allow large boats through.

We (generally) do not allow engineering projects rooted in the physical world to have fluid specifications, because of the cost and complexity of doing so.

Although there is a real cost and huge complexity to allowing software engineering to accomodate goal flexibility as much as we do, it is vastly less than would be the case for most mechanical and chemical engineering projects.

And the reality is that human goals do change as exposure to a project takes place. There are probably many people involved in bridge specifications who wish they could have gone back and significantly altered some part of the design, based on things learned during construction and early use. But we don't allow that, and so we're left with an impression that only non-software engineers are good at handling performance specifications. It's not true.

Re:Computer science is not software engineering by mikece on Saturday December 26, 2020 @11:07AM (#25544225)
I've seen this sentiment raised in several conference talks but the follow-on question of "how do we achieve this in software development?" is one where nobody really has a good answer. The story is that many civil engineers, while taking undergrad classes, had to look at, hold, and pass around a piece of the Tacoma Narrows bridge that had failed and collapsed. There is a story that some Boeing engineers kept on their desk a part from a plane that suffered structural failure (and cost the lives of dozens of people) to remind them of the stakes involved if they weren't sufficiently disciplined in their job.

In the realm of software engineering I don't know that we've had a catastrophic failure where the infrastructure costs of repair were in the billions or there was tangible loss of life. The biggest example that comes to mind was the explosion of the Ariane rocket because the software caused the rocket to rotate in the wrong direction so the ground-controllers executed a self-destruct... maybe pieces of a Tesla that crashed while on auto-pilot would be a candidate for physical objects we can hold in our hands to remind us that software bugs can kill?

Re:Computer science is not software engineering by rch on Saturday December 26, 2020 @11:47AM (#25544529)
$1B is a high bar, but there are probably examples. Another comment mentions MCAS, but maybe that's too easily classified as a management failure. Out of curiosity I looked up a couple of other contenders, but neither made the cut.

However, that search took me to an example that I didn't recall, resulting in loss of life. I'll probably reference this story about the Therac-25 in the future as it hits on a number of clear software engineering failures:

-- https://www.bugsnag.com/blog/bug-day-race-condition-therac-2...

Re:Computer science is not software engineering by imtringued on Saturday December 26, 2020 @06:55PM (#25547480)
>Another comment mentions MCAS, but maybe that's too easily classified as a management failure.

You can also chalk it up as a non software engineering failure because the sensor hardware is what failed first.

It's not very clear cut.

Re:Computer science is not software engineering by pbourke on Saturday December 26, 2020 @01:15PM (#25545210)
> In the realm of software engineering I don't know that we've had a catastrophic failure where the infrastructure costs of repair were in the billions or there was tangible loss of life.

The multi-day 2003 blackout in the Northeast US states and Ontario, Canada qualifies in terms of impact (many billions of $). It was a systemic flaw with a software bug as a proximate cause. I think most major failures with high impact in a software-intensive system will sort of look similar: a software fault that cascades to the real world.

https://en.m.wikipedia.org/wiki/Northeast_blackout_of_2003

Other examples might be the various outages in airline reservation systems.

If you’re interested in this kind of thing, the archives of the Usenet newsgroup comp.risks are interesting (not sure if it’s still active).

Re:Computer science is not software engineering by jacksonkmarley on Saturday December 26, 2020 @11:18AM (#25544304)
Does Boeing's MCAS not meet your definition of 'software'?
Re:Computer science is not software engineering by tjr on Saturday December 26, 2020 @11:23AM (#25544328)
Most of my career has been as a "software engineer" in aerospace. We absolutely do build things to requirements, and verify those requirements are met, with copious amounts of formal process.

This same style of development could be applied to any software development venture, but it's usually not, because most software doesn't benefit from it enough to warrant the extra time and expense.

Re:Computer science is not software engineering by analog31 on Saturday December 26, 2020 @01:01PM (#25545102)
Amusingly, the engineers I work with have a saying, which is: "This is not aerospace," meaning that they will not apply formal engineering methods in their design processes.
Re:Computer science is not software engineering by kaba0 on Saturday December 26, 2020 @11:43AM (#25544495)
May I ask you what sort of tools you use for verification, including language? Is it model checkers like TLA+?
Re:Computer science is not software engineering by tjr on Tuesday December 29, 2020 @03:14PM (#25574290)
If you are asking me personally, my verification experience has been a mixture of manual tests, and writing test scripts in either Python or a custom in-house language. These scripts run in an avionics simulation environment, in which typically there is one avionics component under test, which is running either a desktop build of its code, or running as the actual hardware unit, attached to a desktop via Ethernet or ARINC 429 connections. The other avionics components are then either simulated, or, as needed, running actual code.

(The majority of my avionics work has actually been directly working on such simulation systems, building and certifying them for formal verification use, but I have done some verification work on avionics boxes as well.)

Outside of my personal experience, I am aware of projects using things like TLA+. I suspect that is more common the higher up you go in system criticality. Even within avionics, not every system requires the same level of scrutiny... for example, you need to more exhaustively test a flight controls system than a flight management system.

In any case, the FAA does not dictate particular tools. They dictate a level of quality that any tools used must adhere to (the tools themselves must be certified based on how they are used), but otherwise a project is welcome to use whatever tools they wish. Or, no tools.

Re:Computer science is not software engineering by SeanLuke on Saturday December 26, 2020 @11:24AM (#25544343)
> Software people can't even effectively specify the performance requirements of the artifacts that they produce.

This is Real Scottsman nonsense. Algorithms can be easily tested, and can be modified and optimized to meet a host of requirements, from computational complexity to real-world efficiency to fairness to privacy. We specify the performance requirements of software all the time.

Re:Computer science is not software engineering by eplanit on Saturday December 26, 2020 @11:53AM (#25544584)
Agreed. There is Computer Science, Software Engineering, and then Application Programming. SW engineers work in OSs, drivers, firmware, and applied areas likes comms and robotics, where "move fast and break things" isn't the theme, at all. App programmers use established and trendy 'stacks', and are often superficially knowledgeable of the details of the underlying tech -- and there's nothing at all wrong with that. I estimate that 90% of people writing code are App programmers.
Re:Computer science is not software engineering by tyu2 on Saturday December 26, 2020 @11:58AM (#25544618)
> SW engineers work in OSs, drivers, firmware, and applied areas likes comms and robotics

That would be system programming, part of computer engineering actually [1], not software engineering. Also software engineering usually does include some computer engineering.

[1] https://en.wikipedia.org/wiki/Computer_engineering

Re:Computer science is not software engineering by codenesium on Saturday December 26, 2020 @01:19PM (#25545251)
If you don't know the performance requirements of something you're about to build you should gather that before you build it.
Re:Computer science is not software engineering by sys_64738 on Saturday December 26, 2020 @11:04AM (#25544205)
Agree. Real engineers are also personally liable when things go wrong.
Re:Computer science is not software engineering by elteto on Saturday December 26, 2020 @11:51AM (#25544566)
Nope. This is incorrect and a common myth. Most engineering disciplines do not need professional accreditation.
Re:Computer science is not software engineering by criddell on Saturday December 26, 2020 @01:12PM (#25545191)
How do you get licensed without accreditation?
Re:Computer science is not software engineering by creatornator on Saturday December 26, 2020 @04:34PM (#25546619)
In the US, you can do engineering work without having a PE, no licensing required, and any degree requirements are usually imposed by the company not regulations. There are only some things that require a PE.

Source: I studied EE, did not get a PE or any sort of license beyond my degree, and worked in defense, and commercial engineering jobs