Last updated: November 13, 2002 Recent updates are often in red.
|
Contacting Eric Braude changed if this is red |
Materials changed if this is red |
|
Forums changed if this is red |
Overview changed if this is red |
|
Grading changed if this is red |
Project Organization changed if this is red |
|
Homework and Due Dates changed if this is red Phase 3 |
Required Background changed if this is red |
|
Learning Objectives changed if this is red |
Syllabus and Dates for Classes changed if this is red |
A major engineering problem today is the predictable development of reliable software-intensive systems. The object-oriented paradigm is an important part of such development.
Object-oriented methods can be divided into languages, distribution, and analysis and design. There change in the language category, particularly Java and C#. Distribution includes the use of vendor libraries of classes and also distributed objects as specified by the Object Management Group etc. Basic to the entire enterprise, however, are analysis and design, which has remained remarkable stable for years. Object-Oriented Analysis and Design includes the overall goals of the object paradigm, the selection of classes, the relationships among them, and their utilization to implement systems.
A knowledge of C++ or Java (MET CS 565) and software engineering methods (MET CS 673) are required. It is preferable to have taken Design Patterns (MET CS 665).
The recommended textbook is "Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design, and the Unified Process " by Larman (Prentice Hall) 2nd edition, Published July 2001, 627 pages, ISBN 0130925691. This is the first time that this instructor has used this book, and it is not clear how much the book will be used.
The instructor will provide notes for all classes.
Other references:
· The Unified Modeling Language User Guide by Booch et al (Prentice Hall) ISBN0-201-57168-4
· The Unified Modeling Language Reference Manual James Rumbaugh, Ivar Jacobson, Grady Booch Addison-Wesley Pub Co; ISBN: 020130998X
· Design Patterns by Gamma et al
· Object-Oriented Software Engineering by I Jacobson
· Object-Oriented Analysis & Design by G. Booch
· Modeling the world in data by S. Schlaer and S. Mellor
· Modeling the world in states by S. Schlaer and S. Mellor
· The Unified Method draft www.rational.com
· Object-oriented Analysis by P. Coad and E. Yourdon
· Object-oriented Design by P. Coad and E. Yourdon
· Object-oriented Programming by P. Coad and A Nicola
· Software Engineering: An Object-Oriented Perspective by Eric Braude
Students will be able to ...
· ... analyze problems from an object perspective
· ... create OO designs which are ready for coding
· ... implement a pilot OO project
The course will consist of homework and a project, weighted as follows:
1. Homework: 30%
2. Project: 70%
There are three phases for the project, graded as follows:
· phase 1 (problem statement): 1/9
· phase 2 (analysis): 2/9
· phase 3 (design): 1/3
· phase 4 (implementation and critical review): 1/3
Parts are evaluated equally unless otherwise stated.
Late homework is not accepted unless there is a reason why it was impossible for you. If there is such an impossibility, the work will be graded on a pass/fail basis.
Please see http://metcs.bu.edu/~ebraude/GradePolicy.htm for more details on grading computations.
You will be required to submit an analyzed, designed and implemented project according to the deadlines shown in the schedule. Detailed requirements will follow.
With the instructor’s permission, it may be possible to substitute all or part of the project with an investigation of tools for OOA&D such as Rational Rose or Together. This will require a detailed evaluation and an investigation of how these tools are being used extensively in a particular company.
Teams two are permitted, and will be evaluated at a higher standard. All members must know all parts.
You will be required to give a presentation on at least two of the phases in your project.
see: http://metcs.bu.edu/~ebraude/avail.htm
This syllabus is subject to about 15% modification.
The order of topics will be driven by the notes, which the instructor will hand out, not by the textbook. The textbook will serve as background and reference.
|
Wk. |
Date |
Topic |
Text chapters |
Project Times are approximate. See “date homework due” section for final dates |
|
1 |
9/3 |
· Review Syllabus · Review Software Development Process |
Notes 0-1 |
Phase 1 assigned |
|
2 |
9/10 |
· Introduction, Overview, and Goals of Design · UML as required · Extreme programming and refactoring |
Notes 1-3 |
|
|
3 |
9/17 |
· Requirements I: Use Cases |
Notes 13 part 1 |
Presentations; Assign phase 2 |
|
4 |
9/24 |
· Requirements II: Sequence Diagrams |
Notes 13 part 2 |
Phase 1 due; |
|
5 |
10/1 |
·
Requirements III:
Completing Domain Classes ·
Writing Detailed Requirements · Review Student Designs |
Notes 13 part 3 Larman 10 |
|
|
6 |
10/8 |
· Software Architectures |
Notes 14 part 1 |
Assign phase 3 |
|
7 |
10/22 |
To be determined |
|
Presentations; Phase 2 due; |
|
8 |
10/29 |
· Review Design Patterns as required · Discussion of Tools · Review Student Designs |
Notes 4-6 |
|
|
9 |
11/5 |
· Frameworks · Review Student Designs |
|
Presentations on architectures |
|
10 |
11/12 |
· Design Topics · Review Student Designs |
Notes 14 part 2 |
Assign
phase 4 Phase 3 due |
|
11 |
11/19 |
· Review Student Designs |
|
Presentations on detailed designs |
|
12 |
11/26 |
· Detailed Design · Review Student Designs |
|
Presentations |
|
13 |
12/3 |
· Implementing OO designs · Shlaer-Mellor |
|
Presentation of results (1 of 2) |
|
14 |
12/10 |
· Presentations on Finished Applications |
|
Phase 4 due Presentation of results (2 of 2) |
· Notes are from Software Design (Braude, to be published by Wiley in March 2002)
· ** Applying UML and Patterns: … (Larman)
|
Num-ber |
Name |
Due date |
|
|
Project phase 1 |
9/24 |
|
1 |
“Design Issues” |
9/17 |
|
1 |
3.4 (Pass Fail) |
9/17 |
|
|
Project phase 2: (10/2/2002 ) 1.Attach first a copy of your phase 1. Respond specifically to whatever comments
I may have made on your phase 1. You
can write these directly on the copy. 2. Show the sequence diagrams for at least the two use cases you have introduced. Key them to the use case steps, which you should number.3.List requirements by “domain class” paragraphs,
including -- The testable
functionality that the application will definitely accomplish --What you would
like to have the application accomplish if time permits
4.Provide a
class diagram for your project consisting of all of the domain classes as
well as the domain packages that you will use.
Here are some typical
improvements. Most room for improvement 1.
Make your domain names specific to your application;
e.g., PetStoreTransaction, FootballGame, FootballTeam rather than Transaction
or Game or Team. 2.
Use the “entities” section correctly. This applies when there are specific
entities that the application is required to have. It does not include
entities that will be created at runtime that you can’t specify entirely at
requirements time. 3.
Many internal classes have corresponding GUI classes. For example, PetStoreAccount
entities may get their data from a PetStoreAccountGUI entity. Specify the latter in its own category
rather than under PetStoreAccount. 4.
In your requirements, distinguish between the
initiator and the substance of functionality. For example, under “Courses” a functionality
might be “12.1.5 The application shall be able to display the catalog
description of each course in the following format …” (Corresponds to class Course). Under the “Course GUI” paragraph an event
might be “When the display course button is pressed, the functionality
described in section 12.1.5 is initated.”
Under the “Student GUI” paragraph an event might be “When the show
course button is pressed, the functionality described in section 12.1.5
is initated.” Etc. Do not say “12.1.5 When the display
course button is pressed on the Course GUI, the application can display
the catalog description of each course in the following format …” Otherwise you will have a maintenance
nightmare and a poor mapping to the design and implementation. 5.
Room for improvement Most objects are not sensitive to events unless they are
GUI objects. Buttons are
examples. Many objects have
functionality that may be invoked as a result of an event on an other object. For example,
a customer’s information may be displayed when the button is clicked. But “display” is a function of Customer:
Any one of clients can invoke it, some event-sensitive and others not. The object with (direct) event reaction is
the button, not the customer. 2.
In your
requirements document, don’t say “The customer shall include a name …” (which
is strange English). Instead: “The
application shall maintain the name of customers ….” 3.
Distinguish
between objects and object aggregates. For example, you could have
a “Customers” requirements paragraph with functionality such as “App shall be
able to send a customer profile to the central database.” This will correspond to a class Customer. You could also have a “Customer List” paragraph with functionality such as “It
shall be possible to add new customers …”
This will correspond to a class such as CustomerList. 4.
Don’t
waste words. In
particular, give a sentence or two under each paragraph that adds value. NOT: 1.4
Customers This
section describes the requirements for customers. BUT 1.4
Customers The
application shall track the customers of the video store as follows. …
|
10/22 |
|
3 |
Clown problem 10/9/02 Draw
a class model for an application for drawing human figures. The picture shown is a typical product of
the application. The figures are always
neck-upward; mouths are always lines, necks always rectangles,
etc. – the shapes that appear in the figure.
Assume that the business will never change -- but we want to be able
to easily upgrade the shop’s capability within these constraints (e.g., draw
necks with various colors, new kinds of border lines). The class model should make figure drawing
convenient (e.g., allowing the retrieval of previously constructed figure parts).
Show attributes or operations whenever they clarify your solution. Include useful abstractions (but to extend
the current business).
|
10/29 |
|
4 |
14.1 – 14.6 |
11/5 |
|
|
see more below
|
see below |
Project Phase 3: Due 11/12
1. Attach a copy of your phase 2 as graded by me,
with specific responses to whatever comments I may have made on your phase
2.
Most room for
improvement 1. If you
use a data flow diagram, indicate the data types that flow. 2. If you
use a data flow diagram, indicate the functionality at each processing node. 3. In the
interest of clarity, show the relationships among the packages. You can employ <<uses>>
relationships. Omit the classes from
such a figure. Room for
improvement 1. In
this course we did not give meaning to solid lines with arrows. Explain what you mean by them, or don’t use
them. 2. Be
specific about associations: Do you mean two-way aggregations? 3. You
have introduced a class whose name does not indicate a clear purpose and which
is not a domain class. Explain it’s
purpose. A Little room
for improvement 1. ….. Project Phase 4: Due 12/10 Section 1 Attach Phases 2 and 3. Response to my
comments on phase 3. ( not graded, but required)
Section 2 Show
representative input and output.
Section 3 Explain the application of all of the steps covered
in the notes -- explain if they did not apply.
Section 5 Account of the degree to which you accomplished your requirements as
given in phase 2. Please refer to them
by number (e.g., 11.3.5). (criterion: g.
degree of accomplishment. A = excellent
functional capabilities for a graduate course) Section 6. Source code.
note that your class diagrams and code must be
consistent; indicate all differences with prior design decisions; indicate all sections using numbered tabs (e.g., Post-it
notes)
Fall
2002 email to the group is: 770F02@yahoogroups.com