San Jose State University : Site Name


Main Content

Working in Mars Mission Control, JPL

Ronald Mak

Department of Computer Engineering
Fall Semester 2017

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

CMPE/SE 135 Object-Oriented Analysis and Design

Th 1:30 - 2:45 PM, room BBC 226


# Assigned Due Assignment
1 Aug 31 Sep 8 Functional Specification

Use case form: UseCaseForm.docx
Formal report rubrics: FormalReportRubrics.pdf
2 Sep 7 Sep 15 Design Specification


Date Content
Aug 24 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
Aug 29 Slides: Continued iterations: (#2) remove string fields and return multiple matches, (#3) encapsulate what changes, (#4) new characteristics, (#5) refactored code, delegate matching

Example programs:  
Aug 31 Slides: Summary; 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
Sep 5 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; re-revised InventorySpec and Inventory classes; conclusions

Example programs:  
Sep 7 Slides: Analysis precedes design; key points for success; change; 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
Sep 12 Slides: Textual analysis; CRC cards; UML class diagrams: dependency, association, examples; UML state diagram; proposed C++ Date class; code to the interface; factory method design pattern; Day class
Sep 14 Slides: Day class implementations; importance of encapsulation; principles; accessors and mutators; dangerous setter; no surprises; immutable classes; sharing references to immutable objects; const fields; separate accessors and mutators
Sep 19 Slides: Side effects; Law of Demeter; how good is an interface?; cohesion; completeness; convenience; clarity; consistency; programming by contract; preconditions; circular queue example; Assignment #3


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

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

The instructor will share decades of experience as a successful software developer in industry, government, and scientific research institutions. The programming examples will be mostly in C++, but the material will apply well to other object-oriented languages such as Java and Ruby.

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.


For SE Majors: CS 046B, or for others: CMPE 126

Required books