Q&A With: Jeannette Wing
By
Lauren Aaronson
The head of the Computer Science Department at Carnegie
Mellon spoke with us about software engineering, education,
and computational thinking.
PHOTO: CARNEGIE MELLON UNIVERSITY
|
IEEE Fellow Jeannette M. Wing is President's Professor
of Computer Science and head of the Computer Science
Department at Carnegie Mellon University, in Pittsburgh.
Her general research interests are in the areas of
specification and verification, concurrent and
distributed systems, and programming languages.
Prof. Wing is a member of The National Academies'
Computer Science and Telecommunications Board. She is a
member also of Microsoft's Trustworthy Computing
Academic Advisory Board, Intel Research Pittsburgh's
Advisory Board, Dartmouth's Institute for Security
Technology Studies Advisory Committee, and the Idaho
National Laboratory and Homeland Security Strategic
Advisory Committee. She was a member of the DARPA
Information Science and Technology Board and the
National Science Foundation Scientific Advisory Board.
She is also a member of the Sloan Research Fellowships
Program Committee.
Prof. Wing has worked at Bell Laboratories, the USC
Information Sciences Institute, and Xerox Palo Alto
Research Center. She spent a sabbatical at MIT in 1992
and another at Microsoft Research from 2002 to 2003. She
has consulted for Digital Equipment Corp., the Carnegie
Mellon Research Institute, and the Jet Propulsion Laboratory.
Spectrum
Online: You work on formal methods. What are
formal methods?
Jeannette
Wing: A method is formal if it is based on
some mathematical system. And people use formal methods
to describe systems so that they can check or verify or
even predict the behavior properties of the system. And
without a formal method you can't really do any kind of
analysis, formal analysis, on a system, let alone any
kind of prediction of how your system might behave in
the real world. I think the best analogy to what a
formal method is to a general audience is that what we
do is akin to what an architect does in writing
blueprints for the design of a building. If you wanted
to build a new home, you wouldn't just hire a
construction company and say, “Build me a new house.”
You'd first hire an architect and say, “Please design a
house for me that we can agree on, something I'll like,
and then ask the construction company to build according
to the blueprint.”
So what formal methods are all about is really the
process of writing more formally an architectural
description of the system, much like a blueprint for a
house. And the practice of software engineering is that
people go straight to the construction phase, and they
start implementing a system without even knowing what
they're supposed to implement. That's why we have a lot
of software systems today that are unpredictable and
unreliable and insecure. So the point about formal
methods is to, in the end, create more reliable software
systems, or more reliable systems in general. I think it
really shows the state of practice in software
engineering: We're not nearly as mature as the
architectural construction industry. And we would like
to be at least that mature, because the systems that we
design are much more malleable, and change, and much
more complex than a house.