Skip to content

Latest commit

 

History

History
80 lines (56 loc) · 8.43 KB

royce-worksheet.md

File metadata and controls

80 lines (56 loc) · 8.43 KB

A worksheet for studying Royce's "Managing the development of large software systems"

Published in 1970, this article by Winston Royce has long been the focus of much attention when it comes to understanding one of the major themes in the evolution of the discipline of software engineering: the controversy over "waterfall" and "agile" software development.

This worksheet is intended to help anyone who would like to figure out for themselves the meaning and significance of this article, placed in the broader context of the history of our field. It doesn't presume there are "right" or "wrong" answers to any of the questions asked.

The historical context

  • What period of time is concerned by the experiences Dr Royce relates?
  • What were computer systems like at the beginning of that period? What were their specs and capabilities? At the end of that period? How much changed in between?
  • What domain was Royce working in? What role did software systems play in that domain?
  • How would these mission characteristics influence people's perceptions of a "successful" outcome in that context?

The "basic approach"

  • What is Royce's overall view of what software development entails? How would you contrast that view to any others that might have been held at the time?
  • What do you take "analysis" and "coding" to mean in the context of Royce's paper? How would you contrast these meanings to how we use the same terms nowadays?
  • What do you make of Royce's assertion that "An implementation plan to manufacture larger software systems, and keyed only to these steps, however, is doomed to failure"? Why does Royce not feel the need to justify this assertion?
  • In Figure 2, Royce lists a number of additional steps, but does not justify their function or their ordering. What previous body of knowledge, if any, is Royce referencing in introducing these concepts?
  • How does the meaning of these additional terms differ today from the meaning they had in Royce's time?
  • What significance do you attribute to the differences between Figure 2 and Figure 3? In what precise sense are the term "iterative" and "iteration" used in Royce's description of Figure 3?

Royce's attitude to management

  • What do you make of Royce's statement that "Customer personnel typically would rather not pay for them, and development personnel would rather not implement them"?
  • What do you make of Royce's statement that "The prime function of management is to sell these concepts to both groups and then enforce compliance on the part of development personnel"?
  • What do you make of Royce's statements that "These additions are treated separately from analysis and coding because they are distinctly different in the way they are executed. They must be planned and staffed differently for best utilization of program resources"?

The problem

  • Just as he is about to describe Figure 4, Royce states "I believe in this concept, but the implementation described above is risky and invites failure." Precisely what do you take "the concept" that he "believes in" to be?
  • Consider Royce's statement "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." How would you describe the concerns expressed here in modern terms?
  • Consider the next paragraph, and the opening statement "One might note that there has been a skipping-over of the analysis and code phases. One cannot, of course, produce software without these steps, but generally these phases are managed with relative ease and have little impact on requirements, design, and testing." How well does that describe modern software development? To the extent that there is a discrepancy with current experience, how do you explain it?
  • In your own words, how would you describe the problem that Royce is trying to address with "the basic approach"?

The solution: step 1 ("program design comes first")

  • What exactly do you take Royce to be recommending in this section? Which parts of the text constitute actionable recommendations?
  • Consider the bolded statement, "Begin the design process with program designers, not analysts or programmers." What distinguished these specialization in Royce's day? Is this classification still relevant today? How have things changed?
  • Consider the excerpt: "a meaningful design process which will culminate in the proper allocation of execution time and storage resources". How closely does this relate to our current use of the word "design"?
  • How much of a difference does this added step seem to make compared to "the basic approach"? To the extent that it's correct to identify "the basic approach" with "waterfall", does this additional feature substantially change the identification?

The solution: step 2 ("document the design")

  • What exactly do you take Royce to be recommending in this section? Which parts of the text constitute actionable recommendations?
  • What do you make of the statement "The first rule of managing software development is ruthless enforcement of documentation requirements"?
  • Consider in turn each numbered paragraph in which Royce answers the question "Why so much documentation?" How would you characterize each answer? Which aspect of software development is each answer covering?
  • How much of a difference does this added step seem to make compared to "the basic approach"? To the extent that it's correct to identify "the basic approach" with "waterfall", does this additional feature substantially change the identification?

The solution: step 3 ("do it twice")

  • What exactly do you take Royce to be recommending in this section? Which parts of the text constitute actionable recommendations?
  • Consider the excerpt "Figure 7 iltustrates how this might be carried out by means of a simulation." What does Royce mean by a "simulation"?
  • Why is Royce suggesting that this step be conditioned on "whether the product is totally original"? How would one go about evaluating this criterion of originality in modern software development?
  • What do you make of the statement "Without this simulation the project manager is at the mercy of human judgment (...) which in the area of computer program design (as in the estimation of takeoff gross weight, costs to complete, or the daily double) is invariably and seriously optimistic"?
  • How much of a difference does this added step seem to make compared to "the basic approach"? To the extent that it's correct to identify "the basic approach" with "waterfall", does this additional feature substantially change the identification?

The solution: step 4 ("plan, control, and monitor testing")

  • What exactly do you take Royce to be recommending in this section? Which parts of the text constitute actionable recommendations?
  • What do you make of the excerpt, "Most errors are of an obvious nature that can be easily spotted by visual inspection. (...) Do not use the computer to detect this kind of thing - it is too expensive"?
  • How would you answer for your own case the "key management question" suggested by Royce, "When is the time and who is the person to do final checkout?"
  • How much of a difference does this added step seem to make compared to "the basic approach"? To the extent that it's correct to identify "the basic approach" with "waterfall", does this additional feature substantially change the identification?

The solution: step 5 ("involve the customer")

  • What exactly do you take Royce to be recommending in this section? Which parts of the text constitute actionable recommendations?
  • How much of a difference does this added step seem to make compared to "the basic approach"? To the extent that it's correct to identify "the basic approach" with "waterfall", does this additional feature substantially change the identification?

The solution - general considerations

  • Which of the five "steps" recommended by Royce seem to be more important relative to the others?
  • What evidence, if any, does Royce provide that he has personally used the process he recommends?

The article in context

  • Using a tool such as Google Scholar, examine how citations to Royce's article accumulate across time, from the date of publication (1970) to today. What do you conclude?
  • Examine some of these later publications citing Royce; how do these build upon Royce's work?
  • Consider the rest of Royce's publication record. How many other publications of his are cited in the literature? How influential was his work prior to this article? Afterwards?