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]
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]
The Waterfall model for software development is mistakenly attributed to Royce. Barry Boehm wrote in 1987:
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:
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]
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:
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:
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]
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]
Royce published several books and articles.[16] Books
Articles, a selection:
By: Wikipedia.org
Edited: 2021-06-18 19:17:42
Source: Wikipedia.org