This is a take-home exam, due in-class at the beginning of class on October 16. If, for some reason, you are unable to attend class on October 16, you must email Prof. Whitehead your answers in either PDF or Word format by 3:30PM on October 16.
Obviously, a take-home exam depends on trust between Professor and students; you are expected to perform your own work, and not to solicit assistance from other classmates or people. The exam is open book, so you are free to consult any of the course readings, as well as any other materials you find relevant. Standard academic quotation and citation rules apply, if you directly quote someone else's writing, you must cite their work. That said, your exam answers are expected to be primarily your own words.
The textual component of your answers must be typewritten, and handwritten exams will not be accepted. Diagrams may be handwritten. Proofreading your answers for spelling and grammar is expected, and you will be graded down for significant deficiencies in either.
Good answers will be concise and to the point. Meandering, long-winded answers that contain a mixture of correct and incorrect information will be graded up for the former, and down for the latter.
All questions are weighted evenly. You are strongly encouraged to use the October 14 class time to work on this exam.
1. Software development within a startup software company often has the following characteristics:
a) Which software development process (lifecycle) best meets the needs of a software startup? Why?
b) What software development process is a poor fit for a software startup? Why?
2. In Spring, 2002, several student teams in CS 115 developed their user interface prototypes by rapidly coding the user interface for their project in the first several weeks of class (several of the projects were card games, and there are several card image libraries available on the Web).
a) What are the disadvantages of this approach?
b) What are the advantages of this approach?
3. Consider the following definitions:
Electrical Engineering:
Electrical engineering is a profession whose practitioners exploit electromagnetic phenomena and electrical and magnetic properties (and sometimes mechanical, thermal, chemical, and other properties) of matter to do useful things, i.e., someone will pay the engineers to do them.
H. H. Woodson, "What is Electrical Engineering?" IEEE Trans. On Education, vol. E-22, May 1979, p. 35.
Systems Engineering:
Systems engineering is the application of scientific and engineering efforts to transform operational need into a description of system performance parameters and a system configuration through the use of an iterating process of definition, synthesis, analysis, design, test, and evaluation
Department of Defense (DOD), "Engineering Management", MIL-STD-499A, May 1974, pp. 11-18.
Software Engineering:
Software Engineering is the application of science and mathematics by which the capabilities of computer equipment are made useful to man via computer programs, procedures, and associated documentation.
B. W. Boehm, "Software Engineering", IEEE Transactions, 1976, C-25, no 12., pp. 1226-1241
(a) Describe two similarities among all three definitions (beyond the fact that they are all definitions of engineering disciplines).
(b) Describe one area in which all three definitions are different (beyond the fact that they are all different engineering disciplines).
4. Is the development of a paper user interface prototype part of the design process? Why or why not? If not, in what waterfall model step does it belong?
5. NoteCards was an early, pre-Web hypertext system developed at the Xerox Palo Alto Research Center. It allowed an individual knowledge worker to create cards of text, called notecards, and to capture relationships between the notecards in the form of hypertext links. A link connects exactly two notecards, and a notecard can belong to many possible links. The system used a notefile to contain (or aggregate together) all of the notecards and links for a specific project. While a notecard is just a block of text, other kinds (subtypes) of notecard are also supported, including a browser card that contains a set of other notecards (like a directory in a filesystem), and a sketch card for holding simple line drawings.
A notecard can be modeled as having a state called cardtext, of type String, a unique identifier named uniq, of type id, and a display_state, of type boolean. A notecard supports operations for adding (addseq) and removing (delseq) sequences of characters, both of which take a position number (an integer) as a parameter. The operation addseq additionally takes a String as a parameter. Notecards additionally support the operations display and hide (no parameters), which display the card on-screen, and make it non-visible, respectively. A sketch card additionally contains an array called lines, of type Coord, and a method called add_line, which takes two parameters, ep1 and ep2, both of type Coord.
A link has two endpoints, start and finish, both of type id (these ids identify the two notecards at the endpoints of the link). Link operations support setting the start and end points (set_start, set_finish), both of which take an id as their parameter. A link also supports the traverse operation, with a single parameter of type id. Links additionally have a type, a string that identifies what kind of link this is. A notecard is not required to belong to a link. It is possible to have a notecard that is neither the source not the destination of a link.
Create a UML structure diagram of the NoteCards system.
6. A friend of yours is going to the grocery store, and you would like them to buy you some ice cream. Now, you'd normally just tell your friend a specific brand and flavor, such as Ben & Jerry's Cherry Garcia. But, since this a question about requirements in a Software Engineering course, and since stating the flavor and brand is really providing "how" information, and not "what" information, we won't do this. Instead, the next few questions will ask you to describe requirements that would lead your friend to pick an ice cream flavor that you'd like.
Note that your friend can visually recognize common ice cream ingredients, such as nuts, chocolate chips, etc. Your answers should depend on the properties of the ice cream itself, and not the package. Assume that your friend will open and visually inspect the ice cream package if necessary (they're a good friend).
First, think of an ice cream flavor that you want.
The rest of the questions will ask you to write requirements describing this ice cream flavor.
(a) What ice cream flavor did you pick?
(b) Give two requirements about the ice cream that are overly precise. That is, the requirements are so detailed that it would either be impossible, or extremely tedious to test to see if the ice cream meets that requirement. Describe why each requirement is too precise.
(c) Give two requirements about the ice cream that are ambiguous. That is, each requirement describes the ice cream flavor you have in mind, but also describes other kinds of ice cream. Describe why each requirement is ambiguous.
(d) Give two requirements about the ice cream that are "just right," not ambiguous, not overly precise. Describe why each requirement has hit the "sweet spot" between ambiguity and over-precision, and is easily testable.
7. Assume that you have graduated, and are looking for a new apartment close to your new job. Specify four requirements that your apartment must meet to be satisfactory, and for each requirement, state what kind of requirement it is.
8. The five major project management functions are planning, organizing, staffing, directing, and controlling. Prioritize these management functions, from most important to least important, as they apply to your term project. That is, rank the management functions according to which is the most important for your term project, which is the second most important, etc. Explain your rationale for ranking the items in the order you chose. Note that this question is not looking for a simple rehashing of the activities within each management function, but rather a crisp explanation of their relative importance, which may be based in part on the activites in each function, and in part on their relevance to your project.
Last updated: