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 Web site to visit for more information is: http://www-pcd.stanford.edu/asd/ . (No longer a maintained site 10/30/2002)
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.
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)