This seminar is intended to help you develop abilities to help you become a more qualified computer professional. One of the skills that is difficult to teach in most classes but which is essential to your success in any real programming project is that of design. This course is going to focus on teaching how to do design with UML. During the course of the semester you will be working with other students in groups to create a solution to a single, significant problem. The course will also touch on ethics issues related to computing and we will have presentations from a number of outside professionals working in the field of computing.
Texts - The text for this class is "Learning UML 2.0" by Miles and Hamilton, published by O'Reilly. We will go through this book roughly one chapter each week over the course of the semester. The assignments that you turn in for the project will require you to use the different tools described in this text.
Tools - There are many tools that you can use for doing UML. Unfortunately, the most powerful ones that include all of the different UML diagrams can be quite expensive. They will typically have trial versions that you can use for a limited time for free. If you download and install one of those in early March it should be valid during the rest of the semester. We'll look at some of these and the capabilities they have during the class. Many of these tools integrate with Eclipse if you happen to be using that as an editor.
The problem that you are to solve this semester is to design and prototype a tool that could help in the putting together of schedules at a University like Trinity. The way this currently works at Trinity is that each department chair has to put together a schedule and an Excel spreadsheet is generated that lists the courses, rooms, and times. That is sent to the registrar's office where they go through and look for conflicts. This goes through about three iterations before the final schedule is generated.
As the customer for your software, I'd like for you to come up with a product that can help optimize this process and make it easier for everyone involved to detect problems and fix them. This could be done as a Webapp, or a stand alone application. Either way, there will be a server run by the registrar that the software being run by the department chairs will connect to. The chairs' program should allow them to input a possible schedule of classes and display that schedule organized in different ways (course numbers, times, rooms, faculty, etc.). It should also communicate with the main server and flag conflicts in the current schedule. You have to flag things like when two classes are meeting in the same room at the same time or when one professor is lasted as teaching two different classes at the same time. It would be nice to also include functionality where the program knows about courses that students often take in the same semester and flag when there is a conflict between those. These conflicts could be intra or inter-departmental.
As one would guess from the nature of this course, the primary evaluation will be based upon the design that you produce for your part of the project and your prototype of it. Some of your grade will also come from work on a small ethics project. Attendance will also be significant. Most of the work for the course will be done in groups (5 people). Each group will work on a its own design and implementation. You will be turning in various artifacts of the analysis and design over the course of the semester. You should also produce a simple prototype. Note that a prototype doesn't have to be completely functional, it just has to look functional when you demo it. Obviously having it be more functional can be helpful to your grade.
It should be noted that one of the keys to success for your group and the project as a whole will be communication. I will be setting up and monitoring some discussions under Blackboard where I expect each of the groups to participate in communicating what they have come up with. If nothing else, this project could teach you just how hard it is to build a large project on a moving foundation.
Your grade for the course will be based on what is submitted by your group for each of the following analysis, design, and implementation artifacts. It will also be weighted by the results of group surveys that will help me to judge how great a contribution each member of the groups has provided.
1. Whole project ideas - This is a write-up of your ideas concerning the project as a whole. It should encompass all of the most significant design decisions in the problem, including questions such as what pieces it should be broken into, and what languages or tools should be used as well as some early ideas about features.
2. Analysis - For this you will be expected to turn in a complete description of what your group will be working on. This analysis will include two parts. The first part is a use-case diagram for your project. Your diagram will need to break things up a fair bit. It might have a single actor, but it should include multiple actions in it and you should break the actions down a bit to try to isolate the logic of what is going on.
3. Class Diagram - You can throw in some object diagrams as well if they will help communicate ideas for your design.
4. Draft UML - Near the end of the semester I will expect a complete set of UML diagrams showing the overall design of your group's solution to the project. Use whatever diagrams you think are most significant for communicating your design.
5. Final submission and presentation including prototype demonstrations - This presentation by the group will showcase the design that you have built during the course of the semester. It will culminate with a presentation by each group of some implementation of their project. The presentation must include the various UML diagrams that you have developed over the course of the semester.
This is a rough schedule of what will be covered during the semester. It shows you what we will be covering and what work you are expected to have completed by specific dates. On days when we have speakers it is likely that we will have time after the speaker to cover other topics and I will talk about different types of UML diagrams during that time.
|1-28||Introduction and problem description -- Basics of UML and Use Case Diagrams||Ch. 1 & 2|
|2-4||UML Lecture -- Activity Diagrams||Ch. 3||Whole project ideas|
|2-11||Ethics Presentation -- Class Diagrams||Ch. 4|
|2-18||Speaker: Dan Cornell -- Advanced Class Diagrams||Ch. 5||Analysis|
|2-25||Speaker: Munsingers on IP and Contracts -- Object Diagrams||Ch. 6|
|3-3||Speaker: Mosso-- Sequence diagrams||Ch. 7|
|3-10||Ethics Presentations -- Communication Diagrams||Ch. 8||Class Diagrams|
|3-24||Speaker: Mike Cotton-- Timing & Interaction Overview Diagrams||Ch. 9 & 10|
|3-31||Speaker: Valero-- Composite Structures||Ch. 11|
|4-7||Junior Design Presentations -- Component Diagrams||Ch. 12|
|4-14||Senior Thesis Presentations -- Package Diagrams||Ch. 13||Draft UML|
|4-21||Senior Software Presentation -- State Machine Diagrams||Ch. 14|
|4-28||Sophomore Design Presentation -- Deployment Diagrams||Ch. 15||Final Submission/Presentations|
Omondo EclipseUML - This is the site that has the UML tool that we will be working with. You will nee to download the Eclipse UML installer and if you haven't installed Eclipse or if your version of Eclipse is older than 3.0.1, you should install Eclipse 3.0.1. If you had Eclipse installed before and you have problems with it not seeing the UML tool, delete the configuration folder under the eclipse directory. You can download the free version at any time, but for this class I recommend that you download the studio version and send me an e-mail so that I can give you a license file and directions to use it. The license file is for trinity.edu only. I can't promise you that it will work away from campus, nor am I certain if there are any time limits on it so you might find that at some point you have to use their free version instead.
EclipseUML Manual - This is linked to on the download page, but I'll put a link here as well just to make certain that you can find it. This is not small, but it should help you with just about anything you want to do in EclipseUML.
Posiedon UML - This is a tool based on the open source Argo UML tool.