of the principle when applied to more
complex systems; that paper proposes
a software structure that is very different from what is usually found in such
systems. It also illustrates how that
structure can be documented.
In 1968 and 1969, two famous NATO
conferences discussed a new field—
software engineering—to help us
achieve reliable and trustworthy software systems. Why?
Most of those who attended the two
conferences had been educated in either science or mathematics, but drifted into building programs for others to
use (software). They realized that their
education had taught them how to add
to the world’s knowledge, but not how
to build products. Noting that tradi-
DAVID LORGE PARNAS is well known for his insights into how best to teach software ngineering. Parnas has been studying software design and development since 1969, and
has received more than 25 awards for
his contributions. In 2007, he shared
the IEEE Computer Society’s 60th anniversary award with computer pioneer
Maurice Wilkes. He received B.S., M.S.,
and Ph.D. degrees in Electrical Engineering from Carnegie Mellon University. He has published more than 285
papers, many of which are considered
classics. He designed the CEAB (
Canadian Engineering Accreditation Board)
accredited McMaster University Software Engineering program, where he is
now professor emeritus.
He and seven colleagues have articulated an approach based on actionable capabilities rather than concepts.
Communications columnist Peter J.
Denning had a conversation with Parnas about these ideas.
PETER J. DENNING: You have a long-standing interest in methods for producing reliable and safe software. In 1971, you first
articulated the principle of information
hiding. 2–4 Why is this still important?
DAVID LORGE PARNAS: The concept
of information hiding is based on the
observation that changes outside a
program (such as a revision of other
programs, hardware changes, or re-
quirements changes) only affect the
correctness of that program if informa-
tion that would have to be used when
showing the correctness of that pro-
gram was invalidated by the change.
Consequently, software should be
organized so that dependence on in-
formation that is likely to change is re-
stricted to a small, clearly identified, set
of programs. Applying this principle
results in programs that are easier to
understand, easier to maintain, and
less likely to contain errors.
As expressed in my early papers, the
information hiding principle applies
to all programs in any programming
language. It serves as a guideline for
software developers and maintainers.
The first of the three papers introduced
the basic idea; the second illustrated
it for a simple system and the third
showed the surprising implications
The Profession of IT
with Dave Parnas
A discussion of ideas about software engineering.