FOREWORD
In this Guide, the IEEE Computer
Society establishes for the first time a baseline for
the body of knowledge for the field of software
engineering, and the work partially fulfills the
Society’s responsibility to promote the advancement of
both theory and practice in this field. In so doing, the
Society has been guided by the experience of disciplines
with longer histories but was not bound either by their
problems or their solutions.
It should be noted that the Guide does not
purport to define the body of knowledge but rather to serve as a
compendium and guide to the body of knowledge that has been
developing and evolving over the past four decades. Furthermore,
this body of knowledge is not static. The Guide must,
necessarily, develop and evolve as software engineering matures. It
nevertheless constitutes a valuable element of the software
engineering infrastructure.
In 1958, John Tukey, the world-renowned
statistician, coined the term software. The term
software engineering was used in the title of a NATO conference
held in Germany in 1968. The IEEE Computer Society first published
its Transactions on Software Engineering in 1972. The
committee established within the IEEE Computer Society for
developing software engineering standards was founded in 1976.
The first holistic view of software engineering
to emerge from the IEEE Computer Society resulted from an effort led
by Fletcher Buckley to develop IEEE standard 730 for software
quality assurance, which was completed in 1979. The purpose of IEEE
Std 730 was to provide uniform, minimum acceptable requirements for
preparation and content of software quality assurance plans. This
standard was influential in completing the developing standards in
the following topics: configuration management, software testing,
software requirements, software design, and software verification
and validation.
During the period 1981-1985, the IEEE Computer
Society held a series of workshops concerning the application of
software engineering standards. These workshops involved
practitioners sharing their experiences with existing standards. The
workshops also held sessions on planning for future standards,
including one involving measures and metrics for software
engineering products and processes. The planning also resulted in
IEEE Std 1002, Taxonomy of Software Engineering Standards (1986),
which provided a new, holistic view of software engineering. The
standard describes the form and content of a software engineering
standards taxonomy. It explains the various types of software
engineering standards, their functional and external relationships,
and the role of various functions participating in the software life
cycle.
In 1990, planning for an international standard
with an overall view was begun. The planning focused on reconciling
the software process views from IEEE Std 1074 and the revised US DoD
standard 2167A. The revision was eventually published as DoD Std
498. The international standard was completed in 1995 with
designation, ISO/IEC12207, and given the title of Standard for
Software Life Cycle Processes. Std ISO/IEC 12207 provided a major
point of departure for the body of knowledge captured in this book.
It was
the IEEE Computer Society Board of Governors’ approval of the motion
put forward in May 1993 by Fletcher Buckley which resulted in the
writing of this book. The Association for Computing Machinery (ACM)
Council approved a related motion in August 1993. The two motions
led to a joint committee under the leadership of Mario Barbacci and
Stuart Zweben who served as cochairs. The mission statement of the
joint committee was “To establish the appropriate sets(s) of
criteria and norms for professional practice of software engineering
upon which industrial decisions, professional certification, and
educational curricula can be based.” The steering committee
organized task forces in the following areas:
1.
Define Required Body of Knowledge and Recommended Practices.
2.
Define Ethics and Professional Standards.
3.
Define Educational Curricula for undergraduate, graduate, and
continuing education.
This book supplies the first component: required
body of knowledge and recommend practices.
The code of ethics and professional practice for
software engineering was completed in 1998 and approved by both the
ACM Council and the IEEE Computer Society Board of Governors. It has
been adopted by numerous corporations and other organizations and is
included in several recent textbooks.
The educational curriculum for undergraduates is
being completed by a joint effort of the IEEE Computer Society and
the ACM and is expected to be completed in 2004.
Every profession is based on a body of knowledge
and recommended practices, although they are not always defined in a
precise manner. In many cases, these are formally documented,
usually in a form that permits them to be used for such purposes as
accreditation of academic programs, development of education and
training programs, certification of specialists, or professional
licensing. Generally, a professional society or related body
maintains custody of such a formal definition. In cases where no
such formality exists, the body of knowledge and recommended
practices are “generally recognized” by practitioners and may be
codified in a variety of ways for different uses.
It is hoped that readers will find this book
useful in guiding them toward the knowledge and resources they need
in their lifelong career development as software engineering
professionals.
The book is dedicated to Fletcher Buckley in
recognition of his commitment to promoting software engineering as a
professional discipline and his excellence as a software engineering
practitioner in radar applications.