Fall 2004
218 Smith Hall, M 1900–2200
Instructor:
Walt Leipold E-mail: leipold@udel.edu Office: 411 Smith Office hours: M 1745–1900 in 221 Smith Web: http://www.cis.udel.edu/~leipold |
Teaching Assistant:
Xiaofeng Han E-mail: han@mail.eecis.udel.edu Office: 115 Pearson Office hours: M1000–1200 |
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
Final exam
Grading
Policies
Resources
Lecture materials
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.
Object-Oriented & Classical Software Engineering 6th Edition Stephen R. Schach ISBN: 0072865512 |
Using UML: Software Engineering with Objects and Components Updated Edition Perdita Stevens with Rob Pooley ISBN: 0201648601 |
Class | Date | Lecture | Activity | Reading |
---|---|---|---|---|
01 | 13 Sept | Introduction Software engineering OOA/D Iterative development Life cycle models Requirements analysis |
Project teams formed Teams approved by instructor |
Schach Chaps 1 & 2 Stevens Chaps 1 & 2 |
02 | 20 Sept | Software process Team organization Requirements analysis Use Cases |
Project topics approved Team member roles chosen |
Schach Chaps 3 & 4 Stevens Chaps 3 & 4 |
03 | 27 Sept | Configuration control Build tools Sequence diagrams Domain models Testing |
Schach Chaps 5 & 6 | |
04 | 4 Oct | Object design Domain models Operation contracts |
First submission | Schach Chap 7 Stevens Chaps 5–8 |
05 | 11 Oct | Class diagrams Design model |
First presentation | |
06 | 18 Oct | Reusability & Portability Collaboration diagrams Review for exam |
Second submission | Schach Chap 8 |
07 | 25 Oct | Midterm exam | ||
08 | 1 Nov | Exam post-mortem Planning & estimating Design patterns |
Schach Chap 9 | |
09 | 8 Nov | Second presentation | ||
10 | 15 Nov | Requirements & analysis Refactoring Antipatterns |
Third submission | Schach Chaps 10 & 11 |
11 | 22 Nov | More patterns Software architecture Object-oriented analysis Design |
Schach Chaps 12–14 | |
12 | 29 Nov | Postdelivery maintenance Process improvement |
||
13 | 6 Dec | Final presentation Project submission |
||
14 | 13 Dec | Final exam |
A major part of this 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.
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:
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 three points through the semester. At the second presentation, you will be expected to demonstrate major parts of your application. At the third presentation, you will demonstrate your complete application, and allow the instructor to “test drive” its functionality.
Submissions: Each team will submit a set of UP artifacts at four milestones through the semester. In all four submissions, you will submit all of your UML artifacts on paper. This will allow the TA and instructor to mark up the submissions when grading. At the second and third milestones, 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:
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 new, 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 project presentations will be held in 120 Smith during the last class meeting on December 6th. The classroom will be open starting at 1730 to allow you to stage and test your equipment. Attendance at the presentation is mandatory for all students in all teams.
There will be NO Internet connection available, so bring all of the hardware you need for your presentation. (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 will take a photograph of each team.
Each presentation should take about 40–45 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 will 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 project submissions are due at the beginning of class (7:00PM) on 6th December. 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 is 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; the instructor should be able simply to copy the CD contents to hard disk, update CLASSPATH, and run Ant to rebuild your application.
If the submission includes any Microsoft Office documents, they must be in Office 97 format.
The final will cover all lectures, all chapters from the Schach book, chapters 1 through 8 of the Stevens/Pooley book, and anything else discussed in any class. It will probably include an extra-credit problem.
Make sure to study the lecture slides for topics that weren't covered in the textbooks, such as:
And make sure you know how to draw class diagrams!
Lecture slides are available on the class Web page.
Grades for the semester will be based on:
Midterm exam: | 25% of final grade | |
Final 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.
Exams: The course will include two exams, a midterm and a 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.
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 Pragmatic Programmer: From Journeyman to Master Andrew Hunt & David Thomas ISBN: 020161622X |
The PC is Not a Typewriter Robin Williams ISBN: 0938151495 |
This section contains some of the PowerPoint slides and other materials from the lectures. Slides which duplicate material in the textbooks are not included—you should read the books instead. Many topics covered in the lectures are not on the slides but will be on the exams. Also, material in the textbooks (at least in the chapters we're covering in lectures) can potentially be on the exams, whether discussed in class or not.
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.
13 Sept | — |
Lecture slides Professional engineering code of ethics |
20 Sept | — | Lecture slides |
27 Sept | — | Lecture slides |
4 Oct | — | Lecture slides |
11 Oct | — | Lecture slides |
18 Oct | — | Lecture slides |
1 Nov | — |
Lecture slides Slides on design patterns |
15 Nov | — |
Lecture slides Slides on antipatterns Slides on refactoring Sample client/server communication code |
22 Nov | — | Lecture slides |
29 Nov | — | Lecture slides |
Last modified: Sunday, 12 December 2004