From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: "Jeffrey R. Carter" Newsgroups: comp.lang.ada Subject: Re: About software engineering now.. Date: Fri, 19 Aug 2016 12:55:54 -0700 Organization: Also freenews.netfront.net; news.tornevall.net; news.eternal-september.org Message-ID: References: <6sadnWWZptJrpyrKnZ2dnUU7-X_NnZ2d@giganews.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Injection-Date: Fri, 19 Aug 2016 19:55:56 -0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="d7c030f56102b58a2c16dea977db88bb"; logging-data="18565"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+FyABaTAfGodK2GeLa3x2i+PDsXwfzvMM=" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 In-Reply-To: <6sadnWWZptJrpyrKnZ2dnUU7-X_NnZ2d@giganews.com> Cancel-Lock: sha1:3GYedoNuKCRcUHTntGSwbpyQt6I= Xref: news.eternal-september.org comp.lang.ada:31467 Date: 2016-08-19T12:55:54-07:00 List-Id: 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