CS 383 Example Midterm Examination

Answer all problems. This is a closed book exam. The real version of this exam would be about one problem per page. Your exam will be similar, but the questions will not be these questions, and it will have fewer questions.

  1. (20 points) Development Models. Compare the Waterfall Model with the Spiral Model of software development. List advantages that the waterfall model may have over the spiral model under some reasonable circumstances.

  2. (30 points) Requirements Elicitation. Write a list of questions for a customer who has requested that you develop the following software system. What would you need to know in order to undertake development of this system?

    This software, codenamed Breckenridge after the spectacular Breckenridge Elkins, will read large collections of natural language prose text, and extract from them all spoken utterances, surrounded by double quotes. Utterances in adjacent sentences and paragraphs will be grouped together into conversations, and tagged with speakers' names. The system will provide a web-based interface to access the collection of utterances, searchable by participant, by source text name, or by "responses to". The "responses to" search mode searches for a given utterance (often a question) and returns the set of utterances found in the source text that occur immediately following that utterance, which may have been asked, and answered many times within the text collection.

  3. (30 points) Requirements Analysis. Develop a UML use case diagram for the Breckenridge software described in problem #2. Pick any three use cases that you define, and write use case descriptions for them.

  4. (30 points) Requirements Analysis. Develop a preliminary UML class diagram for the description given in problem #2 above and your answers to problems 2 and 3. Include classes and associations. Beneath the diagram, give a one-line description of each class and each association.

  5. (30 points) Construct a project plan and schedule for our class' semester project. You should identify a set of milestone dates and deliverables which will allow us to incrementally construct our system in several steps, each with increased functionality. Consider for each milestone how to keep all team members active, and how to tell whether the deliverable is successfully completed.

  6. (30 points) What is the difference between inheritance and aggregation? Is it possible to use inheritance to implement aggregation or vice-versa? Is it possible to have classes which exhibit both inheritance and aggregation at the same time? If so, give an example.

  7. (30 points) Develop a use case diagram for the following application. Pick any two use cases you define, and write use case descriptions for them.

    WebWelt is an internet-based collaborative programming environment. Each developer who logs in to WebWelt can "see" the other programmers, create projects and source code files, "travel" to other programmer's projects and view what they are doing in real time, and if given permission, can contribute to each other's efforts. The WebWelt tool supports browsing of projects and people on-line. A main display shows the current project with source code in the top window and the actual executing program (programs are 3D virtual reality environments) in the bottom window. Programmers can chat with each other, or simply move around as different colored cursors within the same text editor, making source code changes that each other can watch. WebWelt is interactive and uses a "continuous execution" paradigm in which programs are always in an editing and executing state.

  8. (20 points) Suppose you are given the task of doing a preliminary software design in UML, and told that your main goal should be to identify classes that will be needed in the software system under construction. How will you identify what classes are needed? List as many ways or sources as you can.

  9. (20 points) Suppose you are given the task of doing a detailed software design in UML, and told that your main goal should be to identify methods that will be needed in the software system under construction. How will you identify what methods are needed? List as many sources as you can.

  10. (10 points) What does inheritance really mean, anyhow? Define briefly.

  11. (10 points) What does aggregation really mean, anyhow? Define briefly.

  12. (20 points) Some languages support a concept called delegation in which every instance (named, say, object1), if it is passed a message that it has no method for, will automatically forward that message on to another instance (object2). The object1 stores a reference to its object2 as one of its attribute fields. Is there a relationship or similarity between delegation and the concepts of inheritance or aggregation? If so, what is it?

  13. (30 points) Develop a statechart to control the values of an attribute MaritalStatus in a class Person. Allow for the usual possibilities (single, married, divorced, separated, widowed). Define as many events, actions, conditions, activities as you can think of. Please keep your diagram "G" rated, and use correct UML notation.

  14. (30 points) Develop a sequence diagram to describe the communications between objects in a software system that manages the inventory, sales, and ordering of gasoline at a convenience store such as PicQuik. Use correct UML notation.

  15. (30 points) Write a class diagram fragment with the following characteristics: there are three classes, Alien, Predator, and Hobbit. A Predator is a particular type of Alien. Predators are associated with Aliens in the sense that each Predator hunts one Alien: in that association the Predator is the hunter and the Alien is the hunted. Aliens are associated with Hobbits in that Hobbits serve as hosts for Aliens. Each Alien can have many (zero or more) Hobbit hosts. Use correct UML, and stick as close as you can to this textual description of the classes and associations.

  16. (10 points) Describe the purpose of an Adapter design pattern (not fair game unless design patterns have been covered in class).

  17. (20 points) Give names and brief definitions for three agile methods of software development.