Fall 1998
TABLE OF CONTENTS
Course
Objectives
- To convey classical and object-oriented software development
principles and practices by actively applying them to ongoing object-oriented
CASE tool development projects.
- To provide the experience of programming-in-the-large
and legacy software reuse for hierarchical software systems using C and
C++.
- To provide an environment for collaborative work by teams
of mature students.
- To build upon the language-independent O-O analysis and
design experience of the OOAD and formal models prequisites (91.522 and
91.502).
Course
Description
- Classical and object-oriented software development principles
and practice; OO CASE tool development projects in C and C++.
- This course emphasizes pragmatic techniques for software
analysis, specification, design, verification and testing to improve quality
and reusability. Topics include project life cycles, structural and behavioral
desgn specifications, configuration management, verification, documentation
and testing methods. Object-oriented analysis and design principles are
stressed throughout.
- Students will learn how to specify and design systems
of programs at varying levels of abstraction. Teams will apply information
modeling, code generation, event management, and life cycle history modeling
techniques to enhance existing executable prototypes of object-oriented
CASE tools in C and C++.
- Required Prerequisites:
- 91.522 Object-Oriented Analysis & Design
- 91.304 or 91.502 Formal models and methods
- Programming language principles (91.301 or 91.531)
- Significant programming experience in C or any OOPL
- Recommended Prerequisites:
- 91.515 OS and familiarity with one or more application
area, such as graphics, databases, data communications, multimedia, CAD.
Software
Used to Support Class
- Microsoft Office ®: Word ® and PowerPoint ®
- Microsoft ® Visual C++ and J++ ™
- CHGEN v10log (Database C-code and Header Generator)
- gcc/g++
- CVS (concurrent version-control system)
- BDE (Block Diagram Editor) and/or idraw
- CHGEN v10log (Database C-code and Header Generator)
Instructor:
Dr. Robert Lechner
- Office: EB402 and OS315 (CS Dept.)
- E-Mail: lechner@cs.uml.edu
or robert_lechner@uml.edu
- Phones:
- Home: Phone (781)449-1497 and (781)444-8321
- Office: Phone x3632 (EB402), 3629 (OS313) Fax:
(978) 934-3551
- Office Hours (Fall 1998):
- Tuesday and Wednesday in OS313 800-1000PM;
- Friday 2-5PM in EB402; other times by email appointment
- Teaching Schedule (Fall 1998):
- 91.522: Tuesday 5-730PM
- 91.523: Wednesday 5-730PM
Required
Materials (Fall 1998):
- [OOSC] Meyer: Object-Oriented Software Construction
- (2nd Ed, P-H 1997 with CD-ROM) (continuation of 91.522
coverage)
- [PMMS] DKing: Project Management Made Simple (Prentice-Hall
1992)
- [UML] Martin Fowler: UML Distilled: Applying the Standard
Modeling Language (Addison-Wesley 1997)
- [OLC] Shlaer & Mellor: Object Life Cycles: Modeling
the World in States (91.522 text)
- Selected reprints: Parnas, Humphrey, Fagan, Mills, others
TBD.
- Project legacy reports in $CASE = /usr/proj3/case/…
Click
for a List of Project Suggestions
Student
Responsibilities
- Subscribe to SW Requirements Engineering and SW Reuse
email list servers.
- Possess the prerequisite language skills and OOA&D
(91.522) background;
- Participate in team meetings and collaborative design
activities including some that may be outside of the regular class schedule.
- Have the discipline to specify requirements semi-formally
BEFORE [re-]design and implementation.
- Have the ability to negotiate and implement agreed-upon
interfaces.
- Have the motivation to produce understandable and robust
software products.
- Abide by the IEEE-CS/ACM draft Software Engineering Code
of Ethics [CACM Nov '97 (110-118)] as it relates to 'Design by Contract',
[Meyer: OOSC Chapter 11].
Web link to Code of Ethics: http://www.computer.org/tab/seprof/code.htm
Grading
- One midterm exam with in-class and take-home parts: 33%.
- Code redesign and other assignments: 33%;
- Team project documentation and technical reviews: 33%;
- Project work will include these responsibilities assigned
to team members:
- Analysis (reverse engineering results; impact
analysis documentation);
- Work plan (task breakdown; incremental build/test
plan);
- Black-box design requirements: interfaces and
behavior specifications: (required pre-conditions, ensured
post-conditions; error handlers; invariants);
- White-box design decomposition (structural conformance
to build plan)
- Source code style (is it understandable, robust
and complete)
- Guides for users and maintainers: (readability
and thoroughness);
- Revision history and comments (visible conformance
to build plan)
- Testing (specs, code, scripts, coverage; traceability
to requirements; test reports with predicted vs. actual results).
Weekly
Schedule and Assignments
WARNING: Weeks 3 onward have not been updated to
Fall 1998 - RJL
Please email any changes to your course registration
and contact info, team & project preferences.
Week
1:
- Overview of 98f523 course theme (requirement specs, reverse
engineering);
- Review of COOL (CASE-OOLab) framework tools: (gen, bde,
lcp and cvs)..
- Handouts: Syllabus; 98f523 project topics; SE
Code of Ethics.
- Assignment 1 (due next week): Identify and discuss the
SE code ethical principles (see URL above) that are relevant to Meyer's
Design by Contract approach (see OOSC) for student SW design projects.
Please submit as on-line plain text email. Teamwork is encouraged, but
submit separate and disjoint reports so that each credit-worthy answer
or FAQ query appears in EXACTLY ONE person's submission.
Week
2:
- Overview of recent projects and directories; Clean Room
critiques; Technical reviews and inspections (Fagan). Project Management.
- Before class: Read OOSC: Chapter 11: Design by
Contract and PMMS: Ch 1-2.
- Handouts: CleanRoom papers and discussions;
- Assignment 2: Run bde long enough to find
and document at least 3 bugs and email results as Software Problem Reports
(SPR's) to me. Subscribe to sre and reuse list-servers.
- NOTE: Credit-worthy SPR's must meet these minimum
bug reporting standards:
- Include userid, date and working directory, paths to
bde and gen executables, plus either (1) description of editing operation
causing crash plus 'info stack' result from 'gdb <executable> core'
plus stdout log , or (2) error log from aborted build attempt with all
warnings turned on. (Please edit out boring repetitious of the same error.)
-
Week
3:
- SW Product life cycle; version management with CVS; methods
of distributed and concurrent designs; mapping extended (EERA) models to
C++ classes;
- Before Class: Review last week's handouts; Read
PMMS Ch. 3, OOSC , OOSC Ch. 31 (Object persistence and databases).
- Assignment 3: BDE Reverse Engineering Part 1:
Existing 'Uses' relation: Convert available cross-reference data into bde
Structure Chart Diagrams (SCD's).
- NOTE: Credit-worthy SCD's must meet these minimum
requirements: Node titles must include a tree-number and a function
or procedure name; SCD links must be labeled with an actual arguments in
the text field of an HI record instance.
Week
4:
- Start BDE Code [Re]Design Reviews: static and dynamic
modeling; test-cases X requirement-coverage relationship.
- Before Class: Review last week's handouts; Read
PMMS Ch. 4, OOSC Ch. 12 (Exception Handling).
- Handouts: Ghost Variables and Refactoring
- Assignment 4: BDE Reverse Engineering Part 3 (assumptions
and priorities for incremental build plan)
Week
5:
- State-event models and interpreters; data-driven behavior;
translator example.
- Before exam next week: Review all weekly handouts;
PMMS Ch. 1-4, OOSC Chapters 11-13.
- Before Class: Review last week's handouts; read
PMMS Ch. 5, OOSC Ch.13 (Supporting mechanisms).
- Handouts: Distributed BDE and BDB papers.
- Assignment 5: In-class Design reviews:
ghost variable build specifications
Week
6:
- Review: PMS Ch. 1-5;
OOSC Ch. 11-14, 31; handouts.
- Handouts: TRAIL and StateMate papers.
- Assignment 5: In-class Design reviews
Week
7:
- System development: configuration management
- Before next Class: Review last week's handouts;
Read OOSC TBD
- Handouts: Meta-meta-models for UML and O-O tools
- Assignment 7: In-class Design Reviews; detailed
design diagrams, interface specs, verification assertions, but no coding.
(Hard copy of draft presentation due before talk; reworked online copy
due in one week.)
Week
8:
- Concurrent distributed System Design; event-driven behavior;
Distributed BDE example.
- Before next Class: Review last week's handouts;
Read DMOD Chapter 6 (15pp), OOSC TBD.
- Assignment 7: (All PDR deliverables due)
Week
9:
- Concurrent distributed system design continued; event-driven
behavior; state model interpreters.
- Before class: Review prior week handouts; read
PMMS Ch. 6 (17pp), OOSC TBD.
- Handouts: FunctionPoints, Humphrey CMM paper,
SW Configuration Mgt., SW Requirements info.
Week
10:
- CDR Presentations by Teams
Week
11:
- System development: Process Maturity Model CMM; SW Measurement;
Schedule project demos and documentation reviews.
- Handouts: CMM and Software process improvement
(SPIN)
- Assignment 8: Begin Critical Design Reviews (CDRs):
detailed design diagrams, interface specs, verification assertions, but
not coding.
- Assignment 9:First drafts of CDR documents are
due.
Week
12:
- System development: Process models and CMM; Schedule
out-of-class project demo and documentation reviews.
- Read before Class: last week's handouts plus:
SWAD Chapter 6 (40pp)
- Assignment 10: Continue Critical Design Reviews;
prepare detailed design documentation (diagrams, interface specs, verification
assertions); respond to CDR Action Items (CDR Action Item reports are due
one week after CDR)
Week
13:
- Project implementation, integration, testing and documentation.
- Assignment 11: Begin project demo and documentation
reviews.
Week
14:
- Project implementation, integration, testing and documentation.
- Assignment 12: Complete project demo and documentation
reviews;
- Assignment 13: Final reports and demos due from
all project teams.