comp.lang.ada
 help / color / mirror / Atom feed
From: "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org>
Subject: Re: About software engineering now..
Date: Fri, 19 Aug 2016 12:55:54 -0700
Date: 2016-08-19T12:55:54-07:00	[thread overview]
Message-ID: <np7o8a$i45$1@dont-email.me> (raw)
In-Reply-To: <6sadnWWZptJrpyrKnZ2dnUU7-X_NnZ2d@giganews.com>

On 08/19/2016 09:59 AM, Norman Worth wrote:
> It looks the same as it did 50 years ago.  But each new group of programmers
> needs to be taught this stuff.

Indeed. In /Software Tools/ (1976), Kernighan and Plauger use the term "computer
programming", but they're actually talking about design and software
engineering. Their summary of important points includes

"/Controlling complexity/ is the essence of computer programming."

"Each module is also /cohesive/ ..."

"[T]he modules are kept as uncoupled as possible, and the coupling that exists
is kept visible."

"We tried to make the programs easy to modify, by hiding design decisions and
data structures so that routines that don't need to know about them don't."

Simplicity. Modules. Cohesion. Low coupling. Information hiding. Still basic
concepts of software engineering. Too bad 98% of developers can't understand
them, no matter what they're taught. Too bad most of the commonly used languages
still don't have modules, and don't have information hiding, or combine it with
unrelated concepts.

They also list 3 additional principles:

1. "Keep it simple." (Control complexity.)

2. "Build it in stages." (Iterative development. Prioritized requirements. You
may never need to implement the low-priority features.)

3. "Let someone else do the hard part." (Design for reuse, and reuse during design.)

-- 
Jeff Carter
"I'm a vicious jungle beast!"
Play It Again, Sam
131

           reply	other threads:[~2016-08-19 19:55 UTC|newest]

Thread overview: expand[flat|nested]  mbox.gz  Atom feed
 [parent not found: <6sadnWWZptJrpyrKnZ2dnUU7-X_NnZ2d@giganews.com>]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox