Newsgroups: comp.software-eng
Subject: Re: What is Software Design?
From: baragry@amdahl1.lat.oz.au (Jason Baragry)
Date: Tue, 15 Dec 1992 01:30:37 GMT
Organization: Comp Sci, La Trobe Uni, Australia

In article <Bz7KMv.M5z@fiu.edu>, feathers@serss0 (Michael Feathers) writes:
|> 
|> I've just finished reading an article in the latest edition of _The C++
|> Journal_.  The article is named _What is Software Design_ and it was 
|> authored by Jack Reeves.
|> 
|> The ideas that he presents confirmed my suspicions about some of the problems
|> that we currently have in software engineering.  I whole-heartedly suggest
|> that anyone who can find the article do so and read it.

	There is a while heap of related articles which have been published,
the problem is being able to locate them! I haven't read the article you mention
but I would bet that I have "read it" with a different title by a different
author, published in a different journal. Everyone talks about the same thing
but not to many people do anything about it.

|>  
|> Here are some of the key points as I read them:
|>  
|> -There are some key differences between developing hardware and developing
|>  software.

	There was a big discussion about this a while ago on this newsgroup.
If you want so summary I'd be happy to send it to you.

|> -After hardware is designed, it is produced.  The cost of production is
|>  often in excess of the cost of design.

	As Brad Cox would gladly point out, this is mainly because you have to
purchase the components. You can't simply electronically copy them.

|> -For a meaningful parallel between hardware and software development to 
|>  exist, the coding of software should be considered part of the design process.
[...]
|> -Engineering designs must be complete so that production can be carried out
|>  successfully.

	I believe one of the major differences is that when you design an
engineering system, your final design actually represents the implementation
because the objects depicted in the design are actually members of the 
implementation medium. The traditional design process used in software 
development, does not finish with a representation of the implementation.
	People I have talked with (programmers) then argue that if we did 
that for software our diagrams would be to complex because our implementation
 medium is the programming language.
	This is then the point where we have to look at our view of
 implementation medium. Should it be the programming language level ? I agree
with the article in IEEE Software (Nov 90) by Brad Cox, which discusses
objectifying software modules. This is the type of implementation medium I 
believe we should be looking at. Modules with a defined functionality, which 
may be implemented in any way (OO, proceduraly, rules, etc) but can be
"fitted together" to construct a design which represents the implementation.

	I am currently working on a design method which would support such 
ideas (but it is still relatively earrly).

[other points deleted].

|> 
|> All of these are basically changes in perception.  However, one consequence
|> of this change would be the recognition that coding as early in the process
|> as possible is useful.  But this should be no surpise to us, given the shifts
|> that we are seeing toward rapid prototyping and the like.
|>  
|> Comments?
|> 

I can see what you are saying, but I think it means generating components in the
design which are represented by the implementation medium. Instead, of moving
code further up the design process I think it means using high-level 
components with predefined functionality which can be implemented by a piece
of previously implemented code.

Jason.
-------------------------------------------------------------------------------
Jason Baragry.			|	Amdahl Australian Intelligent 
Dept Comp. Sci. & Comp. Eng.,	|		Tools Program
La Trobe University.,		|	baragry@latcs1.lat.oz.au
Bundoora. 3083.			|	Phone:	+61 3 479 1477
Australia.			|	Fax:	+61 3 470 4915
--------------------------------------------------------------------------------
Newsgroups: comp.software-eng