Augustana University College

COMPUTING SCIENCE 220

Software Engineering and Human-Computer Interfaces


Computing Science and Software Engineering: Definitions



Computing Science: The Short Definition

The discipline of computing is the systematic study of algorithmic processes that describe and transform information: their theory, analysis, design, efficiency, implementation, and application. The fundamental question underlying all of computing is, "What can be (efficiently) automated?" [1]

Computing and Engineering

The Task Force on the Core of Computer Science (whose definition of the discipline of computing is quoted above) identified three major paradigms or cultural styles by which computing practitioners approach their work:

  1. Theory is rooted in mathematics; four steps are followed in developing a theory:
    1. characterize objects of study (definition)
    2. hypothesize possible relationships among them (theorem)
    3. determine whether the relationships are true (proof)
    4. interpret results
    Theory is the bedrock of the mathematical sciences: applied mathematicians share the notion that science advances only on a foundation of sound mathematics.
  2. Abstraction (modelling, experimentation) is rooted in the experimental scientific method; four steps are followed in the investigation of a phenomenon:
    1. form a hypothesis
    2. construct a model and make a prediction
    3. design an experiment and collect data
    4. analyze results
    Abstraction (modeling) is the bedrock of the natural sciences: scientists share the notion that scientific progress is achieved primarily by formulating hypotheses and systematically following the modeling process to verify and validate them.
  3. Design is rooted in engineering; four steps are followed in the construction of a system or device to solve a given problem:
    1. state requirements
    2. state specifications
    3. design and implement the system
    4. test the system
    Design is the bedrock of engineering: engineers share the notion that progress is achieved by posing problems and systematically following the design process to construct systems that solve them.

The Task Force concluded:

Computing sits at the crossroads among the central processes of applied mathematics, science, and engineering. The three processes are of equal -- and fundamental -- importance in the discipline, which is a unique blend of interaction among theory, abstraction, and design. The binding forces are a common interest in experimentation and design as information transformers, a common interest in computational support of the stages of those processes, and a common interest in efficiency. [2]

Software Engineering: A Definition

Software engineering is: [3]

Wasserman [5] identifies eight fundamental notions that form the basis for an effective discipline of software engineering:

Engineering: A New Definition

What is needed for the engineer of the future is a new definition -- one that includes the art and skill of problem-solving in broader socio-technologic issues and, as a need that will be with us forever, the art and skill of change management. In this context, no other career -- with the possible exception of medicine -- offers so much potential for personal reward, self esteem and enduring value to [humankind]. [6]

References

[1] Task Force on the Core of Computer Science, Computing as a Discipline, CACM 32/1 (Jan. 1989), p. 12.

[2] Computing as a Discipline, p. 11.

[3] Bruegge and Dutoit, Object-Oriented Software Engineering (Prentice Hall, 2000), p. 5.

[4] Martin Fowler, Analysis Patterns (Addison Wesley, 1997), p. 1.

[5] Anthony I. Wasserman, "Toward a discipline of software engineering", IEEE Software 13/6:23-31,
cited in Shari Lawrence Pfleeger, Software Engineering: Theory and Practice (Prentice Hall, 1998), pp. 29-35.

[6] Irwin Mendelson