Computer Science 223 Discussion Questions

Riel, Chapters 1-2

Discussion Questions submitted for Chapters 1 and 2 of Riel

Development Models

  1. Which model of software development, the Waterfall Model or the Iterative Model, would we use in our project? which seems feasable and/or sufficient? ~yasir.
  2. The author states that the iterative model suffers from a lack of milestones and that new ones must be created so the project manager can keep track of the development. However, what kind of milestones can be used when the process does not go through each phase sequentially as in the waterfall model? Patrick Dowd
  3. Why does the iterative model of Software development work better for object oriented designs? (Sam Vanderhyden)
  4. what is a "well defined iterative milestone" and what are examples of some other than prototyping? ~Taha

Paradigms

  1. It seems to me that the action-oriented paradigm is easier for small projects, and the object-oriented for large. At what point does the difference hit: ie, when does a project become large enough that the extra work of making it object oriented is worth it in the long term?
  2. What particular line of thought(s) constitutes the paradigm shift needed for object oriented programming?
  3. How will object-oriented paradigm help us in this class specifically with respect to modeling? - George Yeboah
  4. Is the tendency to slip into action oriented programming an implication of a sloppy design phase? Would something designed well enough would have clear objects, or is that too much overhead?
  5. Riel discusses a "unlearning curve" when switching from an action-oriented paradigm to an object oriented one. What bits are most important to unlearn? What crosses over?
  6. What is I/O? Also, what is the difference between object-based and object-oriented?Desi Dimova
  7. Is Java a multiparadigm language like C++? If so, how useful is it for different-laguage prototyping? - George Yeboah
  8. Is Java pure OOPL? Is that what makes it better than C++? Desi Dimova
  9. To what extent can an object-oriented design handle complexities in a software development process? Can it handle all kinds of complexities? (Raz Magar)
  10. Clearly the best problem solving programming language is the multiparadigm language. How can one efficiently use both object-oriented and action-oriented paradigms in a program? Anthony Fynn

Same-language Versus Different-language Prototyping

  1. It seems like the same-language prototyping is much more efficient than different-language prototyping. Are there any big advantages when using different languages, and why do people use it? Elias Vafiadis
  2. When would a different-language prototype be better than a same-language one? Steven Fenigstein
  3. The author says that same-language prototyping is not a good idea because of the propensity to not polish up "garbage" code. It seems like a software project could be delayed further if the software was missing critical features. How often is the garbage code actually included in the final release in a project using same-language prototyping? Patrick Dowd

Key Abstraction

  1. Could you explain key abstraction? -Jonathan Kensler
  2. What is meant by the term key abstration? Examples? (Sam Vanderhyden)
  3. Can we elaborate on the concept of "key abstraction?" And what is an example of a class that doesn't properly exploit this concept?

Coupling

  1. In Heuristic 2.7, it says that classes should only exhibit nil or export coupling with other classes, but above on the same page it talks about several other types of couplings. Under what types of circumstances might we be required to use the other types of couplings? This would break the heuristic, but I'm guessing is occasionally needed (as suggested by the existance of the other types of couplings. -Jonathan Kensler
  2. Should overtly coupled classes be combined? - Jim Finnessy
  3. How are can covert coupling exist if permission is never granted? -Jim Finnessy
  4. The various types of Class Coupling seem awfully close. Which situations are their differences paramount? Anthony Fynn
  5. What does coupling and cohesion between/within classes mean?
  6. Heuristic 2.7 maintains the exhibition of only nil or export coupling among classes. What about other forms of coupling? Why do they even exist if they are not recommended? Or are there some scenarios in which they are safe to use? (Raz Magar)
  7. Could you give some clarification about privacy, permission, and coupling? What are some examples of when one kind of coupling is used over the other? Steven Fenigstein
  8. Is it a good way to know what should go into public and what not? Minimizing the number of messages in the protocol of a class seems like something that is easier said than done, unless a person has a lot of experience. - Hisako Watanabe

Other Questions

  1. What does the term "smoke and mirrors" refer to from a CS standpoint? -Peter Likarish
  2. The "heuristics" presented in Ch. 2 are designed to make continuing development easier. But are there situations in which following these heuristics to the letter might make the process more time-consuming and less efficient? Nick Wagner
  3. How does the object oriented paradigm allow for the control of accidental complexity through the use of wrappers?
  4. Riel states that buying software is more advantageous than building software, considering functionality and maintenance issues. What are the implications of this fact with regard to competitive software packages? --Khong
  5. Riel equates buying software with software reuse. What is the purpose of making software that can be reused, if the source code is never distributed? Does the distribution of "software objects" actually encourage their extension and resuse? For example, can one buy sets of Java classes? josh vickery
  6. Is there any likelihood that our sheduling project will contain objects having multiple possible local states?
  7. I find the concepts of accidental and essential complexity difficult to understand. ~Taha
  8. What are the advantages of having overloaded functions? Elias Vafiadis
  9. What is an example of an ADT? -Peter Likarish
  10. When we talk about "software reuse," are there ways in which the design of a public interface can be improved to promote reusability? --Khong
  11. When building software objects, that is classes, who exactly should the code be written for? That is, should the code be written to solve the task at hand, or should the class designers try to determine general aspects that the class interface should have for future use?
  12. Heuristic 2.2 kind of appears to suggest that classes should never be designed to support inputs particular to one set of users...can I assume this is not what is meant?
  13. How much extra processing overhead is created by adding, say, a get_time() method to every clock class? Is there then a theoretical limit where such design would no longer be usefull, and what happens then?
  14. Is UML used exclusively for prototyping? Where does UML come into play during the software development process? -Hisako Watanabe


This document is available on the World Wide Web as

http://www.walker.cs.grinnell.edu/courses/223.sp02/read-riel1-2.html

created January 24, 2002
last revised January 24, 2002
Valid HTML 3.2!
For more information, please contact Henry M. Walker at walker@cs.grinnell.edu.