SoftwareDesign is a relatively new field of study that is trying to become
a legitimate branch of computer science/engineering.
Software Designers are deeply concerned with
creating
designs that are first and foremost people oriented. This
contrasts with a software engineer's primary task of
building fast, robust and highly reliable systems.
Typically, a software designer creates the user centered
design that is brought to life (through code) by the software engineers.
Many of us (software engineers) already find ourselves
doing the job of software designers, and that is perfectly
fine. (Some say that our best software engineers are great
software designers.)
Interestingly enough, software design may have more in common with architecture than software engineering. Both
architects and software designers
are primarily concerned with building environments for
people.
A good intro into software design can be found in
BringingDesignToSoftware and
TogOnSoftwareDesign.
A good Web site to visit for more information is:
http://www-pcd.stanford.edu/asd/ . (No longer a maintained site 10/30/2002)
--
ToddCoram
I'm not sure I grok that "design" is a better word for what you're seeking to describe than "engineering". "Engineering", to me anyway, is the process of leveraging science to solve a problem by means of designing some sort of system or construct. Certainly, there may be engineers who focus more on usability than on underlying implementation, but both are doing "design", aren't they? Can't we just call this "usability engineering" or something? --
MikeSmith
As far as I can tell, "design" here refers to a part of the software engineering process. i.e. Requirements, Design, Implementation, Deployment, Maintenance. In a sense, a Design should try to respond to the needs of the user (as gleaned from the Requirements), as well as provide a clear guide for the implementers to use in creating a quality product.
The question is: what's a good design? I find that a lot of designs these days are *far* too low-level. In fact, they seem more like implementation to me. If the "design" contains classes (and especially methods and attributes), then it is in fact implementation and not design.
Software engineering _patterns_ are a way of abstracting classes, and moving to a higher level.
--
JonathanBenn 2004-Sep-21
Possible topic for discussion: Wiki as a component of
ComputerAidedSoftwareDesign? --
JonathanSmith
The part which IEEE and SWEBOK may have to do with SoftwareDesign
Some PartlyFormed thoughts on it by MartinFowler -- http://martinfowler.com/bliki/Swebok.html
Some comments in response by RobertLevy --http://robertlevy.net/2003_06_22_archive.aspx#105652424204797983 (This link is 404 "file not found" as of June 24, 2007)