American software engineer
Winston Walker Royce
(August 15, 1929 ? June 7, 1995) was an American
computer scientist
, director at
Lockheed
Software Technology Center in
Austin, Texas
. He was a pioneer in the field of
software development
,
[1]
known for his 1970 paper from which the
Waterfall model
for
software development
was mistakenly
[2]
drawn.
[3]
Biography
[
edit
]
Born in 1929, Royce entered the
California Institute of Technology
, where he received his BS in
physics
, his MS in
aeronautical engineering
and in 1959 his
PhD
in
aeronautical engineering
under
Julian David Cole
[4]
with the thesis
Transonic flow over a non-lifting, slender body of revolution
.
Royce had begun his career as assistant professor at the California Institute of Technology. In 1961 he started as
project manager
in the
aerospace
division of
TRW
. His first project concerned the design of a mission planning and orbit selection system for
spacecraft
. In the following years he was involved in the research and development of several large and complex software systems, and started developing new methodologies for improving the management of software project.
[5]
In 1970 he published his influential article "
Managing the development of large software systems
", in which he presented several
project management
models, including what we now know as
waterfall
,
iterative
, and
agile
.
[3]
In 1985, he received the
AIAA
Information Systems Award.
[6]
During the 1980s he was director at
Lockheed
Software Technology Center in Austin, Texas. He retired in 1994 and died the following year at his home in
Clifton, Virginia
.
[7]
His eldest son is Walker Royce, Chief Software Economist of
IBM
's Rational division, and author of "Software Project Management, A Unified Framework", and a principal contributor to the management philosophy inherent in the IBM
Rational Unified Process
.
[8]
Work
[
edit
]
Managing the development of large software systems
[
edit
]
The
Waterfall model
for
software development
is mistakenly attributed to Royce.
Barry Boehm
wrote in 1987:
- Royce's 1970 paper is generally considered to be the paper which defined the stagewise "waterfall" model of the software process. But it is surprising to see both that the earlier Benington and Hosier papers had good approximations to the waterfall model, and that Royce's paper already incorporates prototyping as an essential step compatible with the waterfall model.
[9]
In fact, Royce demonstrated that while the development of large software systems required a more thorough approach, there was inherent risk in a single-pass sequential approach. He proposed an iterative approach and advocated that projects should pass through this at least twice.
Royce started his 1970 article 'Managing the development of large software systems' with a statement about the origin of his ideas:
- I am going to describe my personal views about managing large software developments. I have had various assignments during the past nine years, mostly concerned with the development of software packages for spacecraft mission planning, commanding and post-flight analysis. In these assignments I have experienced different degrees of success with respect to arriving at an operational state, on-time, and within costs. I have become prejudiced by my experiences and I am going to relate some of these prejudices in this presentation.
[3]
Royce had determined that the development of computer programs regardless of size or complexity could be split into two development stages:
Analysis
and
Coding
. For small software development projects these two steps were sufficient, but not for the development of larger software systems. These require many additional steps back and forth, which gives the development an iterative character.
[3]
To picture this iterative development Royce proposed a number of approaches, although he never used the term
waterfall
[10]
nor advocated it as an effective
methodology
.
[11]
The earliest use of the term "waterfall" may have been a 1976 paper by Bell and Thayer.
[12]
Royce pictured the waterfall model with the following seven steps:
[3]
- Systems requirements
- Software requirements
- Analysis
- Program design
- Coding
- Testing, and
- Operation
He called them "implementation steps to develop a large computer program for delivery to a customer". Royce foresaw a major shortcoming in this methodology, which he described as:
- The testing phase which occurs at the end of the development cycle is the first event for which timing, storage, input/output transfers, etc., are experienced as distinguished from analyzed. These phenomena are not precisely analyzable. They are not the solutions to the standard partial differential equations of mathematical physics for instance. Yet if these phenomena fail to satisfy the various external constraints, then invariably a major redesign is required. A simple octal patch or redo of some isolated code will not fix these kinds of difficulties. The required design changes are likely to be so disruptive that the software requirements upon which the design is based and which provides the rationale for everything are violated...
[3]
According to Royce in the process model "the design iterations are never confined to the successive step", and for that model without iteration is "risky and invites failure".
[3]
As alternative Royce proposed a more incremental development, where every next step links back to the step before. The 'classical' waterfall model is figure 2. The models get incrementally more refined up to figure 10. Royce says about the figure 4 model:
- I believe the illustrated approach to be fundamentally sound.
[3]
Software system engineering
[
edit
]
In the early 1980s Winston Royce coined the term "software system engineering" (SwSE) at one of the seminars of the Management of Software Acquisition course at the Defense Systems Management College at Fort Belvoir, Va.
[13]
According to Richard H. Thayer, emeritus professor in software engineering at California State University, Sacramento, software system engineering is concerned with "applying system engineering principles specifically to the development of large, complex software systems provides a powerful tool for process and product management."
[13]
Software system engineers can take responsibility for the "overall technical management of the system and the verification of the final system products."
[13]
Software architecture
[
edit
]
In the 1991 article
Software Architecture: Integrating Process and Technology
Royce and Royce describe the connection between architecture and the software development process.
[14]
According to
Philippe Kruchten
et al. (2006) this article was the first "to position
software architecture
? in both title and perspective ? between technology and process."
[15]
See also
[
edit
]
Publications
[
edit
]
Royce published several books and articles.
[16]
Books
- 1959.
Transonic flow over a non-lifting, slender body of revolution
. Pasadena : California Institute of Technology, 1959.
- 1997.
Software Engineering Project Management
. 2nd edition. With R. Thayer &
Ed Yourdon
.
Articles, a selection:
- 1970. "
Managing the Development of Large Software Systems
",
Proceedings of IEEE WESCON
26 (August): 1?9.
- 1989. "Lockheed's Software Technology Center". In:
Modern software engineering, foundations and current perspectives
. Peter A. Ng (ed.). Van Nostrand Reinhold Co. p. 561?578.
- 1990. "
[2]
", 'Dr. Win Royce Process Round Table Aug. 10th 1990
- 1991. "Current Problems." In:
Aerospace Software Engineering
, edited by Christine Anderson and Merlin Dorfman, 5?15. Washington, D.C.: American Institute of Aeronautics and Astronautics.
- 1991. "Software Architecture: Integrating Process and Technology", with Walker Royce in
TRW Quest
, vol. 14, no. 1, p. 2?15.
- 1992. "
Status Report: Computer-Aided Prototyping
". With Walker Royce. In:
IEEE Software
Vol 9 (6): p. 77?81
References
[
edit
]
- ^
Dr. Winston W. Royce (1929?1995)
at www.informatik.uni-bremen.de. Retrieved Oct 27, 2008.
- ^
[1]
Uncle Bob Martin mentioning the strawman promotion of waterfall at 49:41 of this talk. Retrieved February 23, 2020
- ^
a
b
c
d
e
f
g
h
Winston W. Royce (1970).
"Managing the Development of Large Software Systems"
in:
Technical Papers of Western Electronic Show and Convention
(WesCon) August 25?28, 1970, Los Angeles, USA.
- ^
Christine Anderson, Merlin Dorfman (1991)
Aerospace software engineering: a collection of concepts
- ^
Ellis Horowitz (1975)
Practical strategies for developing large software systems
. p. xii
- ^
"Home : The American Institute of Aeronautics and Astronautics"
.
www.aiaa.org
. Archived from
the original
on April 28, 2015.
- ^
Alan M. Davis, "Tracing: A Simple Necessity Neglected," in:
IEEE Software
, vol. 12, no. 5, pp. 6?7, Sept., 1995
- ^
Meet our thought leaders
at IBM Rational. Retrieved October 27, 2008.
- ^
Barry W. Boehm (1987). "Software Process Management: Lessons Learned from History" in ICSE '87 Proceedings of the 9th international conference on Software Engineering pp 296-298
- ^
Wasserfallmodell : Entstehungskontext
, Markus Rerych, Institut fur Gestaltungs- und Wirkungsforschung, TU-Wien. Accessed on line November 28, 2007.
- ^
Winston W. Royce
at interaction-design.org. Retrieved Oct 27, 2008.
- ^
Bell, Thomas E., and T. A. Thayer.
Software requirements: Are they really a problem?
Proceedings of the 2nd international conference on Software engineering.
IEEE Computer Society Press, 1976.
- ^
a
b
c
Richard Hall Thayer (2002). "Software System Engineering: A Tutorial". In:
Computer
, Apr. 2002.
- ^
W.E. Royce and W. Royce, “Software Architecture: Integrating Process and Technology,” TRW Quest, vol. 14, no. 1, 1991, pp. 2?15.
- ^
Philippe Kruchten
, Henk Obbink, and Judith Stafford (2006). "
The past, present, and future for software architecture
."
IEEE Software
Vol 23 (2). p. 23
- ^
Royce Winston
and
W. W. Royce
List of publications from the DBLP Bibliography Server.
|
---|
Fields
| |
---|
Concepts
| |
---|
Orientations
| |
---|
Models
| Developmental
| |
---|
Other
| |
---|
Languages
| |
---|
|
---|
Related fields
| |
---|
|