
Grady
Booch on The Future of Software Engineering
By
Mike Wing
Grady
Booch began with an analogy to building dog houses, houses, and skyscrapers.
Building a doghouse is easy and can be done with minimal modeling, simple
processes, and simple tools. Building a house is more complex. He would
not trust a contractor to build his home without proper modeling (blueprints),
well-defined processes, and power tools. Most web sites appear to be built
out of sticks and straw, yet the tools used are not nearly enough to build
a skyscraper.
Conventional
wisdom states that software is disposable, structured processes are burdens,
and software engineering is irrelevant.
Many
forces drive software: cost, schedule, compatibility with legacy systems,
performance, capacity, scalability, reliability, security, failsafe, fault-tolerance,
resilience (ability to deal with constant change in requirements), and
technological churn. Software projects can be caught between incompatible
forces, leading to disaster. Conflicts between the need for speed and
quality, between hacking and engineering, between content and components
are hard to resolve.
We
should keep in mind that the economic logic of modern science forces a
rational process.
The Future
of Software
Alan
Kay said that the best way to predict the future is to invent it. Grady
decided that he could not know as much about the future as he wanted,
so he sent email questions to 600 individuals (many were ACM award winners)
and got responses from more than 100.
The
future of software engineering must be understood in terms of the future
of software. On the technical side, software will change in many ways,
influenced by the growth of complexity (managerial and technical), the
emergence of the unwired web, virtural presence, continuously evolving
systems, and the elimination of computational barriers. On the social
side, software will be influenced by the dot-com distraction, the digital
divide, and the web as battle ground.
The Future
of Software Engineering
The
history of software engineering is mapped by advances that enable us to
master complexity.
Computer-based
Software Engineering will dominate. Standard interfaces are good, reuse
is deceiving, activities include construction, codification, and harvesting
of patterns.
-
Web mechanisms
will increase.
-
Reference architectures
will be codified. They will include structure, behavior, and style.
"Architecture first" is a good way to minimize risk. UML
is a good tool for software blueprints.
-
Well-defined processes
will be accepted. Process will focus on the necessary people and artifacts.
Mature processes are not necessarily good processes.
-
Frictionless surfaces
will be important. Tools will codify best practices and facilitate
collaboration.
-
Professional engineering
will rise. An agreed-upon body of knowledge will be codified. Engineers
will become accountable and professional.
-
Legals issues,
such as patents and liability, will be dealt with.
-
Scarcity of skilled
workers will affect the industry.
-
Growth of non-programmers
will move software out to the general public.
The
two main conclusions are that software development is hard and the best
we can do is reduce friction. Please contact Grady Booch at gbooch@catapulse.com
if you have any questions.
[Aside:
In an interview afterwards, Grady mentioned that a number of respondents
showed disdain for software engineering, even though the overall tone
was of excitement and optimism. CTOs claimed to struggle against hacking.
The CTOs working for companies that make money cared about software engineering,
while other CTOs did not.]
|
|