From: MarkusSchaber on
Hi,

On 10 Feb., 12:32, John Koy <John....(a)example.com> wrote:

> We can't even guarantee that it won't crash tomorrow, why? Well, for me,
> because the underlying platform (OS/JRE/CLR/VM/etc) does not give me any
> guarantees. I cannot build any engineering product on top of that, no
> matter what process I employ.

And that is the problem with the abstraction levels I mentioned. Even
the OS cannot guarantee anything because our mainstream hardware is
extremely underspecified (e. G. try to get any time guarantees for
hard disk access) and does not guarantee for anything (see the long
errata list of current CPUs, or the statistics about RAM error rates
due to cosmic rays.

From: Seebs on
On 2010-02-10, Michael Foukarakis <electricdelta(a)gmail.com> wrote:
> Nobody knows how to build earthquake-immune buildings, yet engineers
> give certain guarantees. When those are failed to be met, (s)he is
> held liable. Maybe it's about time some "software engineers" were held
> liable for their unreliable code in the same way.

Why?

Do you have any evidence to suggest that this kind of liability is actually
reasonable, justified, and/or necessary?

> That's absolutely right. But we can't sit and wait for software
> development to be refined on its own, we should probably do something
> about it. Collectively or whatnot.

I agree. I just don't think that rants about liability or certification
are going to do anything. Neither of those has a thing to do with learning
to write more reliable software.

-s
--
Copyright 2010, all wrongs reversed. Peter Seebach / usenet-nospam(a)seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
From: Seebs on
On 2010-02-10, MarkusSchaber <msr(a)soloplan.de> wrote:
> And that is the problem with the abstraction levels I mentioned. Even
> the OS cannot guarantee anything because our mainstream hardware is
> extremely underspecified (e. G. try to get any time guarantees for
> hard disk access) and does not guarantee for anything (see the long
> errata list of current CPUs, or the statistics about RAM error rates
> due to cosmic rays.

Yeah, and if all you have is improvised materials, you can't be sure the
things you build will work. That doesn't mean you're not an engineer. The
sign of being not-an-engineer would be promising that they'll work anyway.

The job of the engineer is to know enough to build something as reliably
as possible with the available tools, and tell you how reliable that is.
Usually, with software, the answer is "not all that reliable". But since
software engineers know that, and tell people that, and give clear evidence
that they've carefully analyzed the components to be able to tell you that,
it sounds to me like they're doing exactly what engineers ought to do.

I think the obsession with whether or not there is liability misses the point;
that's a social convention adopted for fields where the tools are much
simpler, it's nothing to do with the substance of what engineers are doing.

-s
--
Copyright 2010, all wrongs reversed. Peter Seebach / usenet-nospam(a)seebs.net
http://www.seebs.net/log/ <-- lawsuits, religion, and funny pictures
http://en.wikipedia.org/wiki/Fair_Game_(Scientology) <-- get educated!
From: Lew on
Arved Sandstrom wrote:
>> In other words, we have adequate processes available but tend not to
>> adopt them. And _then_ because the products are seriously flawed we
>> disclaim liability because the products are in poor shape.
>>
>> We need to get pushed from the outside, by purchasers of our software.
>> Unfortunately that hasn't happened.

Malcolm McLean wrote:
> Software management is not so stupid. If adequate procedures were
> available that could ensure bug-free software, at reasonable cost and
> time, they they would have been adopted. Except in a few areas

Bullshit.

Management doesn't adopt effective practices for a variety of reasons, but the
fact is that far too many projects are managed in fashions contrary to best
practices. It's a combination of application of an inappropriate management
paradigm (factory work vs. talent work), ignorance or disbelief of the
fundamentals, mistrust of the commitment and understanding of the developers,
and a desire to keep the process inefficient in order to collect more money.

The observable fact is that software projects are managed as though management
were stupid. That's why half to two-thirds (depending on whose figures you go
by) of all major software projects never go into production, and so many that
do have major, preventable bugs.

> customers would soon shy away from 'no warrantry including the implied
> warrantry of suitability for any particular purpose' products.

Adequate procedures are available, or haven't you been studying the subject?

> The fact is that many many formal methods are in existence. Some of
> them might work, to some extent, and in some circumstances. But none
> have really proved themselves when it comes to the acid test of
> developing real software for non-trivial projects.

Again, not true. Iterative development alone greatly increases productivity
and quality. Add in other elements of agile programming, or whatever the
rubric is for effective practices these days, and you asymptotically approach
perfection.

The field of software project management is well studied and well documented.
Effective techniques are known and published. And have been for decades.
They simply are not followed.

--
Lew
From: Pete Becker on
Seebs wrote:
> The job of the engineer is to know enough to build something as reliably
> as possible with the available tools,

And within the available budget.

and tell you how reliable that is.

Anyone can build a bridge that stands up. It takes an engineer to build
on that barely stands up.

--
Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of
"The Standard C++ Library Extensions: a Tutorial and Reference"
(www.petebecker.com/tr1book)