Com S 362 --- Object-Oriented Analysis and Design HOMEWORK 3: INCEPTION PHASE (File $Date: 2003/02/18 05:06:25 $) Due: Problem 1a, February 9, 2002, at 5 PM, problems 1b and 1c, February 10, 2002 (at 11 AM). READINGS Read chapters 1-4 and sections 7.4-7.7 and 7.9 of Craig Larman's book Applying UML and Patterns (Second edition, Prentice-Hall PTR, Upper Saddle River, NJ, 2002). Also read chapters 1-2 of Martin Fowler with Kendall Scott's book UML Distilled (Addison-Wesley Longman, Inc., Reading, MA, 2000). Finally, as an example look at the web page for the StickSync project: http://www.cs.iastate.edu/~cs362/sticksync/vision.shtml 1. [Project Vision and Business Case] The first objective of this problem is to help you gain some experience doing a project vision. The second objective is to help form teams for working on team projects later in the semester. However, it's important to note that this homework is to be done entirely on your own, as an individual. Don't work in teams yet! In this problem, you will describe what you want to do for your project in a "vision statement". This will be a web site containing at least two web pages: the project vision and business case and the start of a glossary. These should not be too detailed. See the readings described above for examples. If you don't have a web page already on the Com S department machines, you'll have to create one. You can read how to do this at the following URL: http://support.cs.iastate.edu/faqs.php3?op=unix#15. (Note that you need that period at the end of the URL above!) In essence, you make a WWW directory underneath your Com S department login directory. So if you don't have a WWW directory already, do the following on a Com S department Linux machine: chmod a+x ~ mkdir WWW chmod a+rx WWW We advise doing this quickly, because it takes a bit of time for the web page to become available. For this problem: a. (5 points) E-mail the URL of your project vision and business case to cs362s@cs.iastate.edu with subject "The URL for my Com S 362 vision page". Your email must include HTML of the following form giving your project's short title, your name, and the URL, formatted as follows:
short title of your project
your name vision for this project. Your web page should be under your department web page. We will make your web page available to the rest of the class (and the world :-), and to make this easier, your vision and business case web page should be found at the following URL: http://www.cs.iastate.edu/~/cs362/vision.html (or if you want to use server-side HTML: http://www.cs.iastate.edu/~/cs362/vision.shtml.) As an aid to formatting, if you want, you can copy and edit the StickSync web page into your Com S department WWW directory. Assuming you have a WWW directory (see above), do the following: cd ~/WWW cp -r /home/course/cs362/public/sticksync cs362 chmod -R a+rx cs362 b. (25 points) Hand in a printout of your web pages for the project vision and business case, and glossary. Label these with your name, and the the URL where members of the class and the staff can find it. The vision should link to the glossary as appropriate, so that one can click on a term and find its definition quickly. Your grade for this part will depend on the quality of your documents, and the suitability of your project. c. (15 points) You will present your project vision either orally in class or as a poster, which other students in class can view. Oral presentations will be limited to two (2) minutes. You will need to think ahead of time about how to present your vision in two minutes, as that isn't much time. Posters should be standard poster board size. Your grade for this part will depend on the clarity of your presentation or poster. These presentations and posters will be used to form teams; and your goal should be to try to convince other people in the class to work in a team on your project vision, or at least that you are a person who would be good to have on a team. (Note that if you are making a poster it should be ready for the first day of presentations and must be brought to both days of presentations. If you are doing an oral presentation, you must be ready to present your project vision orally on the first day of such presentations, although some people only be presenting on the second day. People absent from the first or second day of presentations will lose 3 points for this part.) GUIDELINES FOR PROJECT SUITABILITY You can decide to do a project of your own choosing. We have some suggested ideas below, but those are merely suggestions. Be creative! The project you select must satisfy various constraints, as described below. However, you do not need to know exactly how long, or how much effort it will take to build what you envision; we don't expect you to have enough information to estimate that yet, and the process we will use will try to take that into account. Also, it's okay if you haven't worked out all of what it is you want to build; indeed for this course, it's better if some of the requirements are unclear, provided that you can get feedback to clarify them by building small versions of the system. (See Larman's book, chapter 2 for more about iterative development.) Indeed the constraints we want to impose are all about keeping the project from being too well understood and too small! Constraints Our constraints are the following. Let's call the system you are proposing "the system" in what follows. C1. That the system should not already be implemented as a computer program. In particular, you should not have access to a the design of the system, a working version of the system or source code that implements the system. (If you did, you could use the existing system to tell you what all the requirements are, or you could use the implementation as your project.) C2. That the system not just produce one output, but that its users engage in a series of interactions to accomplish various tasks. (If the system just produces one report, say, then object-oriented methods are probably not appropriate for its design.) C3. That there be some degree of change in the systems requirements or usage in the foreseeable future. If the system interacts heavily with humans this is almost guaranteed, but there may also be a lot of change due to changing technology. (If there is no likelihood of change, then again object-oriented methods are probably not appropriate for its design.) C4. You must have first-hand knowledge of what such a system should do. This is necessary to decide questions about usability and other questions about the requirements. C5. The system should not have real-time requirements. That is, there should not be deadlines after which system responses are invalid. (Such systems are orders of magnitude more difficult to implement than other systems.) C6. The system should not be safety critical, in that its implementation should not involve the potential to injure or kill humans. C7. That the system should be implementable primarily in Java. For example, reimplementing Microsoft Word would not be appropriate as a system, because it violates constraint C1. The NextGen POS system described in Larmans's textbook also violates constraint C1, because it's design is described in that book. However, if you want to do a system that is similar but not the same as an existing system, then explain how your system will differ in some way from the existing system. Some more examples of violations of these constraints follow. A program to sort existing records would violate constraints C2 and C3. A program to explore theoretical physics would violate constraint C4 unless you are a theoretical physicist. A program to do air traffic control would violate constraints C5 and C6. A project to modify Mozilla to have a different user interface, by working with the C++ code for Mozilla and some scripting languages would violate constraint C7. It's okay to have a database involved as part of the system, but don't implement a database management system (or an operating system or a compiler) as part of your project. We have other courses that explore those topics. If you have a project with a database system, you should know how to interface with database systems, or at least be interested in learning about it. It's okay to have concurrency and synchronization involved in the system, although this would make the implementation more complex. If necessary, you can implement a version of the system that artificially limits the concurrency (e.g., which only has one user). Sample ideas Here are some sample ideas for team projects. You don't have to use one of these. Also, don't worry if other teams are using the same idea. - An interactive program to play Monopoly or some other game. (This wouldn't violate constraint C1 unless you are planning to copy some existing Monopoly game.) - A robotic control system for printed circuit board chip stuffing (i.e., a factory control system) - An inventory system for a warehouse. (Again, the existence of such systems doesn't violate constraint C1 if you don't have access to them or if you can explain significant differences.) - A system to configure and manage vending machines (set prices, track inventory, etc.) - Delinquency collections (i.e., a system to help get money from people behind in paying their bills) If you are stuck for ideas, think about what job experiences, hobbies, or interests you have, and see what could be automated that relates to them. Going on Once you have decided on your project idea, if you have time, try to think about what the system should do. This will be good preparation for the course's unit on requirements analysis. However, writing down the detailed requirements (e.g., use cases) is *not* part of this homework. You are just to write a vision of what the system will be like, and why it should be built. We will form teams immediately after the end of the in class presentations. In essence, what we will do is to try to give people who are interested in working on similar team projects to work together on a team. But that will be the subject of the next homework, and will be explained in class.