CSE308/ISE308: Software Engineering (Spring 2008)
Scott D. Stoller

Course Description

This course covers fundamental topics in software engineering, with an emphasis on requirements and design using the Unified Modeling Language (UML). The main topics are:


Simon Bennett, John Skelton, and Ken Lunn, Schaum's Outline of UML, 2nd edition, McGraw-Hill, 2004. A copy is on 24-hour reserve in the Computer Science Library. Other UML books are OK, too, but I recommend this one for its thorough coverage, abundant examples, and low price. There are some decent on-line UML resources, such as Allen Holub's UML Quick Reference and OMG's UML Resource Page, but they are useful as supplements, not substitutes, for a good UML book like this one.

Scott W. Ambler. Mapping Objects to Relational Databases: O/R Mapping In Detail.

Ian Sommerville. Software Engineering, 8th ed. Addison Wesley, 2006. It is available in the campus bookstore and in on-line stores. Many other software engineering textbooks cover similar material; feel free to use another textbook if you like.


Assignments and Course Documents are posted in Blackboard. The Discussion Forum contains announcements and discussion. Read it regularly, post your questions, and post answers to other people's questions.


Class: Monday and Wednesday, 2:20pm-3:40pm. Earth & Space 069.

Scott Stoller's Office Hours: Monday and Wednesday, 1pm-2pm, or by appointment, or by chance (i.e., if you stop by without an appointment and I happen to be available), Computer Science 1429.

Teaching Assistant: Yang Chen (cheny03   at   gmail   dot   com)
Office hours: Tuesday, 2:15pm-4:15pm, Computer Science 2110.


Grading. Each assignment is graded relative to some maximum number of points (e.g., 20). The maximum number of points is unrelated to the weight of the assignment in the course grade. Each score is normalized into a number between zero and one (e.g., 19/20 -> 0.95) and then multiplied by the weight of the assignment to obtain a weighted score. Course grades are based primarily on the sum of the weighted scores.

Grading of Teamwork. Each project assignment receives a score reflecting the quality of the work. At the end of the semester, each team member's score for that assignment is computed by multiplying that score by an individual contribution factor (ICF) that reflects the team member's overall contribution to the team effort for the entire semester. Ideally, every team member will contribute equally to the overall effort. In that case, every team member's ICF is 1. A team member who contributes less than his or her fair share will have an ICF less than 1; a team member who contributes more than his or her fair share will have an ICF larger than 1. Everyone should keep track of their contributions throughout the semester. We will evaluate each team member's contributions using all available information, including the team evaluations described next.

Students will periodically evaluate the contributions of all team members to the project. When a student's contribution is significantly below the team's expectations, the student will receive feedback from the instructor, indicating the problem and the areas that need improvement. Depending on the severity of the problem, the student's ICF may be reduced, and the student may be removed from the team. A student removed from a team must complete the remaining parts of the entire project as a team of one.

Each team member is responsible for ensuring that he or she contributes. If you believe that your teammates are preventing you from contributing, discuss the situation with the instructor immediately.

Submission of Assignments. For hw2-requirements, hw3-design, hw4-design-review, and hw5-detailed-design: these assignments must be submitted in two ways (yes, both, not one-or-the-other): (1) Submit a printout of the document in class on the due date, and (2) Submit an electronic version on Blackboard by 11:59pm on the due date, using the appropriate "View/Complete Assignment" link. The printout can also be submitted at the instructor's office (slide it under my door if I am not there) by the end of class (3:40pm) on the due date. Any team member can submit the electronic version on Blackboard, but please coordinate so that exactly one team member does it. If the printout or the electronic version is submitted late, then the assignment is considered to be submitted late, and a lateness penalty may apply.

For hw6-code-and-code-review: No printout is required. Submit electronic version on Blackboard.

For hw7-code-and-demo: Submit printout during demo. Submit electronic version on Blackboard.

For team-evaluation-{1,2,3}: submit on Blackboard by 11:59pm on the due date, using the appropriate "View/Complete Assignment" link.

Late Submissions. Assignments submitted after the deadline and within 24 hours of it receive a -3% penalty. Assignments submitted within the next 24 hours receive a -6% penalty, and so on. I am generally not too strict about this if one or two assignments are submitted a few hours late, but chronic offenders and significantly late assignments will be penalized.

Exam. The exam is mainly about UML. During the exam, you may use your own notes, printouts of your team's assignments, any software engineering textbook, any book on UML, and printouts of any on-line UML resources. You may not use copies of other people's notes or other team's assignments. Although you are permitted to bring printouts of all of your team's documentation, in the interest of saving trees, I encourage you to bring printouts only of your team's UML diagrams; other material won't be useful.

Integrity. In Fall 2006, the Undergraduate Council adopted the following statement and mandated that it be included in all undergraduate course syllabi.

Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Any suspected instance of academic dishonesty will be reported to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty, please refer to the academic judiciary website at http://www.stonybrook.edu/uaa/academicjudiciary/
If your team submits anything that includes any material created by other people, your team's submission must clearly indicate the sources of that material, otherwise it is plagiarism. Discussing assignments with other people is fine. However, each team must write its own code and documentation independently. Showing your team's code or documentation to other students, giving it to them, or making it accessible to them will be treated as a suspected instance of academic dishonesty.

Disabilities. If you have a physical, psychological, medical or learning disability that may impact on your ability to carry out assigned course work, I would urge that you contact the staff in the Center for Disability Support Services (DSS) in the ECC Bldg, 632-6748/TDD. DSS will review your concerns and determine, with you, what accommodations are necessary and appropriate. All information and documentation of disability is confidential.

Transaction Lab

Transaction Lab is in rooms 2114 and 2126 of the Computer Science building. Information about Transaction Lab Accounts

If you need to quickly set up an account, please go to room 1309. You will need to provide the CS Systems staff with a student ID and an e-mail address. An e-mail will be sent to you when the account is ready.

File Sharing and Version Control

Every team is strongly encouraged to use a version control system, such as CVS or Subversion, to manage its project files.

A CVS repository has been created for each team on the Transaction Lab CVS server. You can access your team's repository using your Transaction Lab username with your Stony Brook ID as the password. Netbeans and Eclipse both provide support for CVS. You can also use a stand-alone CVS client, such as TortoiseCVS or a command-line version of cvs (e.g., from the cygwin distribution). Here are Instructions for Accessing Repositories on the Trans Lab CVS Server. You are not required to use this repository; you can set up your own server and repository if you like.

Integrated Development Environment

You should use an Integrated Development Environment (IDE) for the project. Eclipse, Netbeans, and JBuilder are available in the Transaction Lab and can be installed on your own computer.

UML Tools

Rational Software Architect: the market-leading UML-based model-driven development tool. You can use it to draw UML diagrams, generate Java code for interfaces and classes from UML class diagrams, reverse-engineer from code to UML diagrams, etc. I encourage you to try it, despite the learning curve, because it is powerful and widely used. It is installed in the Transaction Lab. A set of 2 DVDs containing the software is available in the North Reading Room of the Melville Library; you can borrow the DVDs and install the software on your own computer. If the person working at the checkout counter doesn't know where these DVDs are, tell them the DVDs are in the rack of "personal copy" discs on top of the taller filing cabinets along the back wall behind the checkout counter. Available in the same place is a DVD with Rational Software Modeler, which is basically a subset of Software Architect (based on the system requirements, I suggest installing Software Modeler if you have less than 1GB RAM, otherwise install Software Architect), and another DVD with Rational Data Modeller, a visual modeling and development environment for database applications, and Rational RequisitePro, a requirements management tool.

ArgoUML: an open-source UML modeling tool. It's written in Java, so you must install a Java Run-time Environment (JRE), such as Sun's JRE, before installing ArgoUML.

StarUML: an open-source UML modeling tool. Runs on Windows only.

Diagramming Tools

I encourage you to use one of the above UML tools to create UML diagrams. You could use one of the following diagramming tools instead. These tools present less of a learning curve when you get started, but they have some disadvantages, namely, they cannot generate code from class diagrams, and they do not check consistency of the diagrams. For example, a UML modeling tool can check that a method used in a sequence diagram is also declared in the appropriate class diagram; a diagramming tool cannot do this.

Microsoft Visio: a diagramming tool, with a library of UML shapes. Visio is available in the Transaction Lab and is available for download through MSDNAA.

Dia: an open-source diagramming tool, with a library of UML shapes.

Microsoft PowerPoint, OpenOffice Draw: These tools can be used to draw UML diagrams, but less conveniently, because they lack libraries of UML shapes, as far as I know.

Lecture Material

The lectures contain material from the Readings listed above and the following books.
Alan Dennis, Barbara Haley Wixom, and David Tegarden. Systems Analysis and Design with UML, 2nd edition. Wiley, 2004.
Pascal Roques. UML in Practice. Wiley, 2004.
Perdita Stevens and Rob Pooley. Using UML: Software Engineering with Objects and Components, updated edition. Addison-Wesley, 2000.