CISC 475
Object-Oriented Software Engineering

Spring 2004
102 Gore Hall, MW 1730–1845


Instructor: Walt Leipold
E-mail: leipold@udel.edu
Office: 411 Smith
Office hours: MW 1845-2000
Web: http://www.cis.udel.edu/~leipold
  Teaching Assistant: Erinc Arikan
E-mail: arikan@eecis.udel.edu
Office: 115B Pearson Hall
Office hours: T 0845–1045

This is the Web page for CISC475, “Object-Oriented Software Engineering”. It will contain announcements, policies, and other pertinent material for the course. The page will be updated frequently—plan on checking for new or updated material at least once a week.


About the course
Textbooks
Schedule
Semester project
Final presentation
Final submission
Grading
Policies
Resources
Lecture materials


About the course

CISC475 presents an introduction to object-oriented software engineering concepts, methodologies and tools. It covers the analysis, specification, design, and implementation of software systems using object-oriented development processes including the Unified Process and UML. The course includes a semester-long team development project using the techniques discussed in class.

Prerequisites: A minimum grade of C− in CISC280 (Program Development Techniques) and Senior status. CISC361 (Operating Systems) is recommended.


Textbooks

Applying UML and Patterns:
An Introduction to
Object-Oriented Analysis and Design
and the Unified Process

2nd Edition
Craig Larman
ISBN: 0130925691
Software Engineering
6th Edition
Ian Sommerville
ISBN: 020139815X

Class schedule

Class Date Lecture Activity
01 09 Feb Introduction  
02 11 Feb OOA/D
Iterative development
Project teams formed; roles chosen
03 16 Feb Requirements Project teams approved by instructor
04 18 Feb Use cases Project topics chosen and approved
05 23 Feb Other requirements
Sequence diagrams
 
06 25 Feb Domain models—
classes & associations
 
07 01 Mar Domain models—
associations & attributes
Operation contracts
 
08 03 Mar   Deliver/present requirements documents
09 08 Mar Collaboration diagrams
Design model
 
10 10 Mar Class diagrams  
11 15 Mar Review for exam  
12 17 Mar   1st exam
  22 Mar SPRING BREAK
24 Mar
13 29 Mar Exam post-mortem
Intro to design patterns
 
14 31 Mar   Deliver/present specification documents
15 05 Apr Class cancelled
16 07 Apr Class cancelled
17 12 Apr Design patterns  
18 14 Apr Antipatterns
Persistence
 
19 19 Apr Refactoring
Software architecture
 
20 21 Apr Additional UML diagrams  
21 26 Apr Architecture revisited  
22 28 Apr   Deliver/present design documents
23 03 May Process improvement
Review for exam
 
24 05 May   2nd exam
25 10 May Exam post-mortem
Evaluations
 
26 12 May Project help session  
27 17 May   Deliver/present project code
28 19 May  

Semester Project

A major part of the course consists of a semester-long team project. Each team will analyze, design, and build a significant software system using the Unified Process, and will deliver a complete set of UP artifacts (use cases, domain model, sequence diagrams, operation contracts, and so forth) along with the operating software. Projects will be implemented in Java (preferably) or C++.

Project topic: The project can be a productivity application, simulation, programming utility, game, or whatever, as long as it is:

In general, an acceptable project is one that supports multiple business functions, ideally for multiple types or classes of users. Requirements analysis and design for such a project will be more challenging than for a single-user, single function application (like a Solitaire game or an MP3 player).

Some possible project ideas are:

To prevent “scope creep”, projects should be held to the following limits:

  1. Approximately 7 (±2, max 10) use cases.
  2. A maximum of 20 concepts in the concept diagram.
  3. A maximum of two or three design patterns.

Team member roles: Each team will consist of five students, and each student must have at least one well-defined role on the team. Each team must have a team leader, but the other roles will depend on the project topic selected. Some typical roles might be:

Project tools: You must follow the Unified Process for this project, and deliver a number of UP artifacts. Your grade also will be influenced by how well you adopt and use real software engineering tools, such as:

Presentations: Each team will present its progress to the class at four points through the semester. At the third presentation, you will be expected to demonstrate major parts of your application. At the fourth presentation, you will demonstrate your complete application, and allow the instructor to “test drive” its functionality.

Milestones and submissions: At all four milestones, you will submit UML artifacts on paper. This will allow the TA and instructor to mark up the submissions when grading. At the third milestone, you will also submit all UML artifacts via e-mail as a ZIP file. At the fourth milestone, you will submit all UML artifacts, source code, build/test/install scripts, README files, installation instructions, and other documents on CD-ROM. The organization and professionalism of these submissions, and the ease with which the instructor can get your code running, will affect your grade.

The following Unified Process artifacts must be submitted at each presentation:

  1. Requirements and Use Cases documents, Vision, and Glossary
  2. Specification documents (domain model, system sequence diagrams, operation contracts, collaboration diagrams)
  3. Design documents (design class diagrams, package diagram, deployment diagram)
  4. Project source code, .class files, javadoc files, installation scripts, installation instructions, help files, test scaffolding, etc.

Because the Unified Process is an iterative development process, artifacts will evolve throughout the project. Therefore, each submission must also include revised, updated versions of artifacts from all previous submissions.

3rd-party components: With the approval of the instructor, teams may use third-party libraries (e.g., the Tomcat servlet container) as discrete components in their projects. Except for such approved components, the code and documentation developed in this course must be the original work of the project team members.

Teams: I've put up a page containing everything I know about the project teams. Team leaders should review this page for accuracy and send me any corrections.


Final Presentation

Final project presentations will be held on Monday, May 17th from 1715 to 1930 and on Wednesday, May 19th from 1715 to 1930. Three teams will present on Monday; the other three will present on Wednesday. Both sessions will be in 331 Purnell Hall rather than in 102 Gore. The room will be open starting at 1700 to allow you to set up for the presentation. Attendance at both presentations is mandatory for all students in all teams.

There may be NO Internet connection available in 331 Purnell, so bring all of the hardware you need for your presentation (except that the instructor will provide a power strip, a network hub, and several network cables). If your project is a networked application, the instructor may connect a laptop to your server and test-drive your system, so make sure that your network drivers are up and that any firewall permissions are set to permit this.

Each member of each team must introduce himself (not just be introduced by the team leader), and should make some part of the presentation. The instructor may take a picture of each team.

Each presentation should take about 35–40 minutes, including setup/teardown and question/answer. Do at least one dress rehearsal of your presentation to make sure that everyone knows his part and that it will take about that amount of time.

Here are some examples of the things a good presentation might cover:

You can't cover all of these areas thoroughly in 40 minutes, so you'll have to choose the areas to emphasize that are most likely to impress the instructor and TA.


Final Submission

Final project submissions are due at the beginning of class (5:15PM) on May 19th for ALL teams. The submission will consist of both printed and machine-readable versions.

The printed submission must contain all project artifacts plus a table of contents. Do not include source or Javadoc printouts; there's no need to kill more trees. The submission should be bound (no loose pages) and should not contain any hand-drawn pictures.

The printed submission should include at least the following UP artifacts:

The machine-readable version should be submitted on CD (preferred) or floppy. It must contain electronic versions of all of the printed documents, plus source code, Javadocs, and build and test scripts. Include a README.TXT file at the top level of the hierarchy. README.TXT should describe the organization of the submission, and should contain instructions for building and running your system, including detailed instructions for downloading and installing any 3rd-party components necessary.

Organize the files into a reasonable and functional directory hierarchy; I should be able simply to copy the CD contents to hard disk, update my CLASSPATH, and run Ant to rebuild your application.

If the submission includes any Microsoft Office documents, they must be in Office 97 format.


Grading

Grades for the semester will be based on:

1st exam:   25% of final grade
2nd exam:   25% of final grade
Semester project:   45% of final grade
Attendance and participation:   5% of final grade

Each student's project grade will be a combination of the group grade and an individual grade. Team members will be asked to review each other's contributions to their projects.

The semester grade is computed according to the following table:

Point range   Letter grade
points >= 92     A
88 <= points < 92     A−
85 <= points < 88     B+
82 <= points < 85     B
79 <= points < 82     B−
76 <= points < 79     C+
73 <= points < 76     C
70 <= points < 73     C−
67 <= points < 70     D+
64 <= points < 67     D
60 <= points < 64     D−
points < 60     F

Policies

Exams: The course will include two exams (but no final). The lectures will introduce material not covered in either textbook, and this additional material will be on the exams. Exams will be closed-book.

Late assignments: There are no homework assignments (other than the project) in this course. There are four delivery milestones for components of the project, which must be met. No credit will be given for project materials turned in late.

Academic integrity: You will be expected to conform to the University's policy on academic integrity.


Resources

Here are some recommended reference books:


Effective Java
Programming Language Guide

Joshua Bloch
ISBN: 0201310058

Unit Testing In Java:
How Tests Drive the Code

Johannes Link
ISBN: 1558608680

The PC is Not a Typewriter
Robin Williams
ISBN: 0938151495

Lecture materials

Here are the PowerPoint slides and other materials from the lectures. Note that many topics covered in the lectures are not on the slides but will be on the exams. Also, any material in the textbook (at least in the chapters we're covering in lectures) can potentially be on the exams. And, finally, remember that lecture slides are not a substitute for either attending the lectures or reading the textbook—see this version of the Gettysburg Address, this Wired article by Edward Tufte, and this Robert Cringely article for some reasons why.

9 Feb Lecture slides
Professional engineering code of ethics
11 Feb Lecture slides
16 Feb Lecture slides
18 Feb Lecture slides
Slides about reflection
Reflection sample code
23 Feb Lecture slides
Slides about testing
25 Feb Lecture slides
1 Mar Lecture slides
8 Mar Lecture slides
10 Mar Lecture slides
Slides about programming style
15 Mar Lecture slides
12 Apr Slides about design patterns
14 Apr Slides about antipatterns
Slides about persistence
19 Apr Lecture slides
Slides about refactoring
21 Apr Lecture slides
26 Apr Lecture slides
3 May Lecture slides

Last modified: Tuesday, 25 May 2004