CIS501CSAB

advertisement
Attachment I-y
CIS 501 Software Architecture and Design
(Revised Nov. 2000)
Catalog Description: Principles and patterns for design and structure of software,
development of object-oriented models, examples of software architecture. Pr.: CIS 300.
Textbooks: There is no single text that covers the focus of this course. Material will be
taken from several different sources, including:
Peter Coad, Mark Mayfield, Jon Kern, Java Design (2nd Ed.), Yourdon Press,
1999.
H. Schildt, C++, the Complete Reference, McGraw Hill, 1998.
Coordinator: William Hankley, Professor of Computing and Information Sciences.
Student Goals:
1. To know concepts and techniques of software models,
particularly UML and related tools;
1.1 to be able to develop both problem level requirements models
and implementation level design models;
1.2 to understand models with active objects.
2. To have experience with and skill in developing models for several
common software applications;
2.1 to understand the mapping from software models to implementation.
3. To understand concepts of design patterns in several areas including
common business domains, simple reactive controls,
and implementation techniques (as presented by Gamma);
3.1 to know several common design patterns.
4. To know some common software architecture structures,
such as software components ( Beans and COM),
interactive applications with persistent objects,
client-server and multi-tier systems.
5. To be able to communicate model design to peers,
using diagrams and narrative text.
Constraints:
1. To use Java to illustrate software models
(both in design notations and in implementation);
1.1 to introduce Java threads to implement active objects.
1.2 to build program fragments to illustrate a few design patterns
1.3 to map one design problem from requirements model
to executable prototype code.
2. To introduce mapping of object structures to C++
(as preparation for CIS 540 project work).
3. To reinforce writing skills.
Writing assignments may include:
i. Description of project concept and use-cases for design project
(approximately three to five pages of text plus diagrams).
The paper will be reviewed (blind review) by some other person
in the course as well as by the instructor or assistants.
Papers with more than very minor problems in writing and expression
must be edited and resubmitted.
ii. Summary and review of current technical article about software
architecture or design (two pages).
Source papers for review will be selected from recent conferences,
such as OOPSLA.
iii. One written examination question.
The question will be posted to the class web site at a prescribed
class time. The typed response will be due within two hours
(estimated as one page of text).
4. References:
Peter Coad, David North, Mark Mayfield, Strategies and Patterns Handbook,
Object International, 1997, http://www.oi.com/handbook/
Rob Kremer, "Programming Patterns Overview", University of Calgary,
http://ksi.cpsc.ucalgary.ca/~kremer/patterns/
Doug Lea, "Design principles and patterns", Online Supplement for Concurrent
Programming in Java, http://gee.cs.oswego.edu/dl/cpj/index.html
"Inside the Unified Modeling Language", Rational Corporation,
free CD, available at http:www.rational.com
I. Jacobson, G. Booch, and J. Rumbaugh, “The Unified Software Development
Process”, Addison Wesley, 1999.
Tools: The CIS Department currently has the Rose/C++ tool,
which is usable but not appropriate for the course focus.
TogetherJ, Object International, http://www.oi.com/together.htm, $250.
Rose J version, http://www.rational.com/products/rose/
Visible Analyst, http://www.visible.com
Topics:
1. UML concepts: Class model, Use-case model, activity/scenario
model, other views;
constraints between component models;
constrains within component models;
issues of "good" design
(2.5 weeks)
2. Case tool.
(0.5 week)
3. Example studies:
(2 weeks)
Airline reservations, automobile agency,
video rentals, grain storage, sensor monitoring and alarm
4. Patterns for software design.
(2 weeks)
5. Threads and notification
(1 week)
6. Design project
(1 weeks)
7. Mapping from Java to C++
(2 weeks)
8. Software architecture: components (Beans, COM),
(2 weeks)
frameworks; client-server, multi-tiers;
others: pipeline, rule based, parallel
9. Exams and review
(2 weeks)
Download