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=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,7f52bfcaf2a6d0b8 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-11-22 17:37:44 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!arclight.uoregon.edu!wn13feed!wn11feed!worldnet.att.net!207.217.77.102!newsfeed2.earthlink.net!newsfeed.earthlink.net!stamper.news.pas.earthlink.net!newsread1.prod.itd.earthlink.net.POSTED!not-for-mail Message-ID: <3DDEDC0F.60903@acm.org> From: Jeffrey Carter User-Agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.0.0) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: Designing Packages and programs for a newbie. References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Date: Sat, 23 Nov 2002 01:36:44 GMT NNTP-Posting-Host: 63.184.8.137 X-Complaints-To: abuse@earthlink.net X-Trace: newsread1.prod.itd.earthlink.net 1038015404 63.184.8.137 (Fri, 22 Nov 2002 17:36:44 PST) NNTP-Posting-Date: Fri, 22 Nov 2002 17:36:44 PST Organization: EarthLink Inc. -- http://www.EarthLink.net Xref: archiver1.google.com comp.lang.ada:31171 Date: 2002-11-23T01:36:44+00:00 List-Id: Stapler wrote: > First, I'm looking for perhaps some good introductory docs/texts on the > design process and the different approaches taken. Good design is the process of creating useful abstractions. Examples include abstracting entities external to the software that the software must interact with (external interfaces) and major data structures internal to the software. An Ada package is usually an implementation of an abstraction. As such its specification should hide the implementation of the abstraction and only expose what is necessary for the client to use that abstraction. My experience indicates that creating useful abstractions is a skill that cannot be taught or learned. In addition, it's a fairly rare skill. That you recognize deficiencies in your early designs is a good sign. Those who have the skill seem to realize what is needed from seeing good examples, while those who don't never do. This is a major cause of the poor state of software. Anyone who can write code is considered qualified to design software. This is why we see major projects that are designed around a types package, a variables package, a hardware package, and a processing package. > Because my applications are limited in scope, performance isn't a > problem. However I like to see just how small I can make the binary > executable. Are there any design pointers you would suggest that might > help in this regard? This is an irrelevant consideration. For certain applications you may be constrained by the amount of memory available to hold the application, but executable file size is often not a good measure even of that. -- Jeff Carter "Now go away or I shall taunt you a second time." Monty Python & the Holy Grail