|David Lorge Parnas
(born February 10, 1941) is an early pioneer of software engineering
who developed the concept of module design which is the foundation of
object oriented programming today. He is also noted for his advocacy
of technical realism.
David earned his Ph.D. at Carnegie Mellon University in electrical
engineering and worked there as a professor for many years. He also
taught at the University of North Carolina at Chapel Hill (U.S.), the
Technische Hochschule Darmstadt (Germany), the University of Victoria
(British Columbia, Canada), and Queen's University (Ontario, Canada).
He then went to McMaster University in Hamilton, Ontario in 1991.
Since 2002, David Parnas has worked at the University of Limerick in
Limerick, Ireland. Parnas also earned a professional engineering
license in Canada and was one of the first to apply traditional
engineering principles to software design.
In modular design his double dictum of high cohesion within modules
and loose coupling between modules is fundamental to modular design in
software. However, in Parnas's seminal 1972 paper On the Criteria to
Be Used in Decomposing Systems into Modules, this dictum is expressed
in terms of information hiding, and the terms cohesion and coupling
are not used.
Dr. Parnas took a public stand against the US Strategic Defense
Initiative (also known as "Star Wars") in the mid 1980s, arguing that
it would be impossible to write an application of sufficient quality
that it could be trusted to prevent a nuclear attack. He has also been
in the forefront of those urging the professionalization of "software
engineering" (a term that he characterizes as "an unconsummated
marriage"). Dr. Parnas is also a heavy promoter of ethics in the field
of software engineering.
Stance on academic evaluation methods
Dr. Parnas has joined the group of scientists which openly criticize
the number-of-publications-based approach towards ranking academic
production. On his November 2007 paper Stop the Numbers Game, he
elaborates on several reasons on why the current number-based academic
evaluation system used in many fields by universities all over the
world (be it either oriented to the amount of publications or the
amount of quotations each of those get) is flawed and, instead of
generating more advance of the sciences, it leads to knowledge
Awards and honors
* ACM "Best Paper" Award, 1979
* Two "Most Influential Paper" awards International Conference on
Software Engineering, 1991 and 1995
* Doctor honoris causa of the Computer Science Department, ETH Zurich,
* Fellow of the Association for Computing Machinery, 1994
* Doctor honoris causa of the Faculté des Sciences Appliquées,
Université catholique de Louvain, Belgium, 1996
* ACM SIGSOFT's "Outstanding Research" award, 1998
* IEEE Computer Society's 60th Anniversary Award, 2007
...it is almost always incorrect to begin the decomposition of a
system into modules on the basis of a flowchart. We propose instead
that one begins with a list of difficult design decisions or design
decisions which are likely to change. Each module is then designed to
hide such a decision from the others.
I would advise students to pay more attention to the fundamental ideas
rather than the latest technology. The technology will be out-of-date
before they graduate. Fundamental ideas never get out of date.
However, what worries me about what I just said is that some people
would think of Turing machines and Goedel's theorem as fundamentals. I
think those things are fundamental but they are also nearly
irrelevant. I think there are fundamental design principles, for
example structured programming principles, the good ideas in "Object
Oriented" programming, etc.