[LINK] Basic Turns Sixty
David
dlochrin at aussiebb.com.au
Fri May 10 11:33:23 AEST 2024
Apologies to anyone who has seen an incomplete version of this contribution before and for my delay in correction (things have been a bit hectic), but it was sent prematurely by an system unfamiliar to me...
On 3/05/2024 12:40 pm, Roger Clarke wrote:
> And I rapidly came to the conclusion that the number of people in the world who had the necessary characteristics to be OO programmers numbered way more than the number of superprogrammers, but way fewer than the number that we needed, and way fewer than the number of people who, one way or another, write in (at least partially) OO languages.
>
> And I can see little evidence of tools, techniques and training that overcome bad, and ensure good, practices and products.
>
> (For one thing, supervision and management of software dev has been very thin on the ground, partly because it's not easy, but not least because it's expensive, and quality isn't valued).
>
> David, others, how do you see the scene?
>
> You might want to differentiate between the proportion of software that is developed within a software engineering context, and the rest ...
The really costly failures causing the most reputational damage probably happen when system requirements, basic architecture, cost and timeline are not properly thought through and documented before contracts are signed. Ideally, a System Requirements document signed by both parties should constitute an Appendix to the prime Contract.
Scenarios leading to failure at this level are a separate topic, and I can think of a couple of great examples. Many Linkers doubtless remember the old joke about the "phases of an IT project" from initial euphoria to eventual failure, blaming of the innocent and promotion of the guilty.
Unfortunately software development tools and techniques seem to have responded to the usual cost & time pressures in the usual way. Almost by definition, generalised development packages intended to increase productivity tend to isolate developers from their generated code, but without improving the quality of the final product. I'm retired now and probably rather out of touch, but some GUI screen-design packages used to turn out woefully bloated HTML.
Top-down design, OO programming, techniques like the finite state machine (FSM) model, reuse of proven off-the-shelf O/S software modules, and languages such as Java help produce efficient, reliable and maintainable code. The DEC VMS software stack featured a rigorously enforced calling standard across all languages, and integrated object linking and embedding so several languages could be used in one loadable image. And IMO the VMS error-reporting architecture puts Linux and Windows to shame!
But techniques intended to increase productivity and reduce cost such as agile software development are fraught with risk unless managed by a strong and experienced project leader. It sometimes means the system requirements are "agile" too, which makes matters worse.
AI is an associative machine. I can see they'd be great in specific applications, for example the initial scanning of radiographic images with the "diagnostic" result to be confirmed later by a Radiologist. But the scope for disasters seems almost without limit.
_David Lochrin_
More information about the Link
mailing list