Wednesday, May 23, 2007
Software Design vs Software Engineering...
Design consists of the specification of requirements (functional, etc.) needed to satisfy the customer and other relevant external parties (the law, etc.) The job of a designer is to gather such requirements from various sources; asking customers directly, market research, academic research into relevant fields, domain knowledge, study of the law and of relevant standards and practices, and a bit of intuition and produce a specification of some sort. The designer is concerned with many human factors; aesthetics, functionality, ease-of-use, fitness for purpose and quality; the designer is less concerned with implementation details.
Engineering consists of the translation of these requirements into a technical specification describing a system which conforms to these requirements. In many traditional engineering disciplines, the role of engineer is generally not concerned with things such as aesthetics or fitness-for-purpose; instead the engineer is concerned with coming up with a system (or specification) which is correct, safe, and cost-effective.
The chief distinction between an engineer and a designer is that the engineer is personally (legally speaking) responsible for knowing said correctness and safety of the system. The processes of technical specification and other standard procedures exist so that the engineer can convince himself and others of this knowledge. In many fields it is possible for the engineer to be completely unrelated to the design process and only be responsible for the validation of the design...
Links to this post: