Wednesday, September 24, 2008

Characteristics of Software Engineering

There is a set of characteristics that is not only common to every engineering discipline, but is so predominant and critical that they can be used to describe the underpinnings of engineering. It is these underpinnings that should be viewed as desirable characteristics of software engineers.

Thus they have influenced the development of software engineering and the contents of this
volume:

  1. Engineers proceed by making a series of decisions, carefully evaluating options, and choosing an approach at each decision-point that is appropriate for the current task in the current context. Appropriateness can be judged by tradeoff analysis, which balances costs against benefits.
  2. Engineers measure things, and when appropriate, work quantitatively; they calibrate and validate their measurements; and they use approximations based on experience and empirical data.
  3. Engineers emphasize the use of a disciplined process when creating a design and can operate effectively as part of a team in doing so.
  4. Engineers can have multiple roles: research, development, design, production, testing,construction, operations, management, and others such as sales, consulting, and teaching.
  5. Engineers use tools to apply processes systematically. Therefore, the choice and use of appropriate tools is key to engineering.
  6. Engineers, via their professional societies, advance by the development and validation of principles, standards, and best practices.
  7. Engineers reuse designs and design artifacts.
It should be noted that while the term engineer and engineering will be used extensively in the following sections, this document is about the design, development and implementation of undergraduate software engineering curricula. It must be acknowledged that much of the work in this document is based on the work of numerous individuals and groups that have advanced the state of computer science and information technology, and have developed programs that help prepare graduates to practice software development in a professional manner.

No comments: