San Jose State University : Site Name


Main Content

Working in Mars Mission Control, JPL

Ronald Mak

Department of Computer Engineering
Department of Computer Science
Department of Applied Data Science
Spring Semester 2020

Office hours: TuTh: 4:30-5:30 PM
Office location: ENG 250
Mission Control, Jet Propulsion Laboratory (JPL)
NASA Mars Exploration Rover Mission

CMPE/SE 135 Object-Oriented Analysis and Design

Section 1:  TuTh  1:30 - 2:45 PM  room ENG 337


# Assigned Due Assignment
1 Jan 30 Feb 7 Functional Specification

Use case form: UseCaseForm.docx
Formal report rubrics: FormalReportRubrics.pdf
2 Feb 11 Feb 21 Design Specification
3 Feb 20 Feb 28 Command-Line Rock-Paper-Scissors Game


Week Date Content
1 Jan 23 Slides: Course objectives; project teams; postmortem report; grading; good applications; change and complexity; how to achieve good design; iterative process; poor design not a failure; Rick's Guitars; problems

Example programs:  
2 Jan 28 Slides: Continued iterations: #2: remove string fields and return multiple matches, #3: encapsulate what changes, #4: new characteristics, #5: refactored code, delegate the matching task

Example programs:
Jan 30 Slides: Summary; cohesion; loose coupling; OOA&D is about satisfaction; requirements elicitation; functional and nonfunctional; requirements of requirements; how to get requirements; use cases; use case descriptions; Functional Specification; Assignment #1
3 Feb 4 Slides: Key points for good design; iterative development; solutions to adding a new mandolin instrument; Instrument and InstrumentSpec classes; abstract classes; revised Inventory class; Guitar, GuitarSpec, Mandolin, MandolinSpec classes; red flags; more instruments; design doesn't scale well; encapsulation to the rescue?

Example programs:
Feb 6 Slides: Revisit our design; encapsulate with a hash map; use the Boost C++ library; boost::any; new attribute classes; the improved design; conclusions

Example programs:   Boost C++ library
Install the Boost header files (no need to build the libraries). In each project, tell Eclipse (or use the -I option on the command line) where you installed them.
4 Feb 11 Slides: Complexity; decomposition: algorithmic and object-oriented; hierarchy; design in software engineering; analysis precedes design; paralysis by analysis; where do classes come from; categories of classes; class responsibilities; class relationships: dependency, aggregation, inheritance; UML diagrams; class diagrams; sequence diagram; Assignment #2
Feb 13 Slides: Textual analysis; CRC cards; UML class diagrams: dependency, association, examples; UML state diagram; proposed C++ Date class; code to the interface; static factory function
5 Feb 18 Slides: Day class implementations; importance of encapsulation; principles; accessors and mutators; dangerous setter; no surprises; immutable classes; sharing references to

Example programs:
Feb 20 Slides: Immutable objects; sharing references to mutable objects; const fields; separate accessors and mutators; side effects; Law of Demeter; how good is an interface?; cohesion; completeness; convenience; clarity; consistency; Assignment #3


Become familiar with object-oriented analysis and program design. Employ industry-standard practices of an object-oriented approach to software development. Avoid the pitfalls of object-oriented design.

The primary goal of this course is to become a much better programmer.

You will develop the critical job skill of working in a small project team to successfully develop a software application that uses shared interfaces and data formats. Your application can then interact with applications from other teams to exchange data and results.

Course Learning Outcomes (CLO)

Department policy is to enforce
all course prerequisites strictly


For SE Majors: CS 046B
For others: CMPE 126

Recommended books

The following is the original “Gang of Four” design patterns book. The examples are in C++.
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
Addison-Wesley Professional, 1994

The following book provides optional background material. The examples are in Java.
Object-Oriented Analysis, Design and Implementation: An Integrated Approach, 2nd edition
Brahma Dathan and Sarnath Ramnath
Springer, 2015