SOFTWARE ENGINEERING SURVEY
CONDUCTED UNDER AUSPICES OF
JOINT PROJECT OF ACM AND IEEE-COMPUTER SOCIETY
UNIVERSITY OF MICHIGAN-DEARBORN
TEXAS TECH UNIVERSITY
UNIVERSITY OF TEXAS-AUSTIN
UNIVERSITY OF ALASKA-FAIRBANKS
OCTOBER 30, 2002
OF SOFTWARE ENGINEERING: OWN
Poly-San Luis Obispo
Deployment-oriented software development
of New Jersey
Software Engineering is the computer science discipline concerned with
developing large software systems. Software engineering covers both the
technical aspects of building large systems (analysis, specification,
design, hardware/software selection, database management, implementation,
testing, documentation, training) and management issues such as project
It’s hard to disagree (fully) with any of those but some definitions
are much more limited in their scope than others.
The practice of SE is the merging of the three disciplines of management,
development, and quality assurance of computer systems. It requires a
basic knowledge of computer science on topics such as computer organization,
algorithm analysis, data structures, programming languages, operating
systems, and discrete mathematics automata. It requires basic engineering
knowledge of computer organization, computer architecture, and digital
theory. It requires knowledge of issues related to reliability, verification,
and validation of software as well as issues related to project and process
management. It should educate students in areas of real-time and embedded
systems, information or financial systems, distributed systems, user interfaces,
The application of well-documented principles, techniques, and technologies
to develop software that is of high quality, where the quality must satisfy
goals in terms of measurable criteria such as reliability, safety, maintainability,
cost, usability, and efficiency.
Also has comments about the ones mentioned in the survey, to wit:
1. Too broad and ambiguous to be useful
2. Better, but the definition is recursive and the emphasis on “large
and critical systems” is specious and unnecessary.
3. Pretty good, but leaves out the notion of “quality”, which
in my opinion is essential.
4. “apparently” really liked it – gave it “XXX”
5. This is not a definition of SWE, but a partial description of what
software engineers should know. As such, I agree wholeheartedly.
School of Engineering
Software Engineering is the application of engineering concepts, techniques,
and methods to the development of software systems. [Mike Lutz, RIT, 1995]
If I were trying to define SE I would take all of the above statements
and try to compress them into the smallest set of sentences and words
that capture all of the ideas in all of these descriptions.
University (updated on 2/29/2000)
Software engineering requires education, training or experience in mathematics,
physics, chemistry, computer organization and architecture, programming
languages, algorithm analysis and design, data structures, operating systems,
requirements analysis and specification, software design and architecture,
testing and maintenance, project management and engineering economics.
practice of software engineering is the provision of a service involving
the creative, systematic, disciplined and quantifiable application of
knowledge from the areas outlined above to problems in the areas of real-time,
embedded, information, financial, networking or communications applications
that can be solved by the development and operation of software systems
that are large, reliable, economical and efficient in their use of computer
University (Dr. John Nicholls)
I can't offer any statistics on courses in SE, as I am now retired. However,
I'd like to suggest a definition of Software Engineering I found useful
when I taught SE to Masters students here in Oxford and other places.
It's nice and short.
ENGINEERING: The construction of useful IT systems, by teams of people,
with limited resources"
used the definition to draw students' attention to the following topics:
word "useful" draws attention to the idea of utility, serving
a purpose, meeting requirements. Not doing something for its own sake
(as science sometimes does) but for a social, or economic, or strategic
phrase "by teams of people" embodies the idea of engineering
as a group activity. In industry, and other parts of applied computing,
the notion of a lone software engineer is rare. Working in a team is central
to many engineering activities, and can sometimes cause as many problems
as the technology.
phrase "with limited resources" allows attention to be given
to costs, the available amounts of human effort, machine resources, and
to the timely delivery of results.
Polytechnic State University
Software Engineering has emerged nationally as a specialized area of computer
science that emphasizes solving the problems and complex issues associated
with developing and maintaining mission-critical software to meet the
needs of business and industry. It uses the life-cycle concept from traditional
engineering with an emphasis on specification, design, and implementation
but calls on the focused application of computer science concepts rather
than those of traditional engineering.
University of Technology
The use of engineering principles, in the specification, design, implementation,
testing and deployment of software systems, so as to ensure that these
systems meet their requirements, and are developed effectively and efficiently
within required time and budget constraints
Software Engineering is the application of the engineering process to
the development of software, regardless of the application.
of Missouri-Kansas City
My basic principle is that you don’t make decisions because they
are easy; you don’t make them because they are cheap; you don’t
make them because they are popular; you make them because they are right.
--- Theodore Hesburgh, former president of Notre Dame
The systematic approach to the development and maintenance of software
systems whose complexity exceeds the capacity of any individual to fully
of North Florida
A software engineer is a trained professional who designs and builds computer
software within an accepted set of standards for some useful purpose.
Successful practitioners go through an extensive apprenticeship period,
which may involve a good bit of programming activity, but with increasing
responsibilities in both design and team leadership.
engineering is the process of designing and building computer software
within an accepted set of standards for some useful purpose. A software
engineering program is one which prepares students to design and build
software within an accepted set of standards for some useful purpose;
i.e., to provide a foundation for becoming a practicing software engineer.
A program for this purpose must prepare students both for using the means
and for understanding the demands of the practice of software development.
Solving customers’ problems by the development of high quality software
within cost, time and other constraints. This definition emphasizes that
SE is a problem-solving discipline.
Software Engineering is the systematic approach to the development, operation,
maintenance and retirement of software. The term, software engineering,
is an acknowledgement of the challenges associated with large-scale, high
· Size and complexity are significant issues
· Cooperation between developers, clients and users is essential,
· Software must evolve of time to maintain its value.
A software engineer uses the principles of computer science, engineering,
design, management, psychology, sociology, and other disciplines where
of Stuttgart (Updated March 2, 2000)
Software engineering is any activity towards developing and maintaining
software that aims at low overall cost and/or high overall benefit, or
which enables well understood and reliable organisation and scheduling
of the development and implementation process.
of Tennesse, Knoxville (via Carl Hardeman and Stacy Prowell)
Software is the application of scientific knowledge and trained engineering
judgement to solve problems related to software.
Also suggested the definition from “cleanroom people” notably
The economical production of provably correct software.
of the West of England, Bristol
[Stewart Green] Software Engineering involves the use of a variety of
methods and tools to engineer high-quality software-intensive systems
to meet real-world needs on-time and within budget.
Solomonides] Here are two extracts from course publicity. They are clearly
not intended to be rigorous definitions; rather they aim to give a clear
impression to the intending student what they may expect to study:
(students will acquire) ... the professional, technical, and management
skills that they will need in order to make effective contributions to
teams building large, complex software systems.
- the professional, technical, theoretical and management knowledge required
to make an effective contribution to teams building large and complex
- the skills required for effective project management including project
planning, project monitoring, and quality control;
- the skills and knowledge necessary to carry out research in Software