CSE 432: Object-Oriented Software Engineering
Fall 2009
Professor : Glenn David Blank Office: 328 Packard Lab Phone: 758-4867
Hours: TTh 1:20-2:20pm or by appt E-mail: Website: www.cse.lehigh.edu/~glennb/
Catalog course description: Design and construction of modular, reusable, extensible and portable software using statically types object-oriented programming languages (Java, C++, Eiffel). Abstract data types; genericity; multiple inheritance; use and design of software libraries; persistence and object-oriented databases; impact of object-oriented programming on the software life cycle. (In recent years, the course has put more emphasis on the software development process, agile, unified and extreme programming, theUnified Model Language (UML), Java and C#.)
Prerequisites: Familiarity with a high-level programming language and data structures
Textbooks:
Craig Larman, Applying UML and Patterns, 3rd Edition, Prentice-Hall, 2007. Required. The following online books are recommended:
Bruce Eckel's Thinking in Java,4th edition, with JDK 2 code, is available for free, electronically.
Bruce Eckel's Thinking in C++, 2nd edition, a recommended textbook, is available for free, electronically.
Goals and requirements:
1) To learn object-oriented (OO) analysis and design using UML and other techniques.
Students will practice OO A/D techniques with individually homework exercises: 20%
2) To learn how to OO languages support abstraction and polymorphism.
Students will practice class implementation with dynamic binding in a Java, C++ or C# program: 10%
3) To learn an agile software process, with multiple iterations, design patterns, test-driven development & pair programming.
Student teams will identify real world customers for project requiring OO analysis, design and programming: 60%
Team Project Roles, Deliverables and Grading Criteria: please review!
Team Project Role Assessments (HTML file) (or as Word file, with each role on a separate page).
Each student should evaluate him/herself and each other person with whom he interacts in each role,
and email these assessments to me at the mid-semester project handoff and with the final project submission.
4) To improve communications skills in the contect of software development (crucial!)
Students will present project ideas, analyses, designs, prototypes, etc., through the semester: 5%
5) To explore specialized topics in OO software, such as Eclipse vs. Netbeans vs. Visual Studio, Servlets, JDBC,
components and Javabeans, distributed objects and CORBA, J2EE, .NET, SOAP, JavaFX, etc.
Students will present specialized topics (preferably with demos), after conferring with me in advance: 5%
Syllabus of topics, readings and project due dates:
Aug 25, Course objectives, Software life cycles, Larman chapter 1
Aug 27, Agile software development process, Larman chapters 2 and 3
Aug 30, submit project ideas (a paragraph describing a possible project with a real world customer)
Sept 1, Inception, discuss project ideas, Larman chapter 4
Sept 3, Requirements and use cases, Larman chapters 5 and 6
Sept 7, Submit ATM requirements & use cases
Sept 8, Other requirements, discuss ATM requirements & use cases, form project teams, Larman chapter 7
Sep 10, Domain modeling with UML and CRC cards, Larman chapters 8 and 9 and 14.6 (pp. 218-219)
Sep 15, Polymorphism, Larman chapter 25.1 (just pp. 414-421), submit & project inception requirements & use cases
Sep 17, System sequence diagrams, UML tools, Larman chapters 10 and 22, Eclipse UML2 modeling and/or Netbeans UML student presentations?
Sep 22, Contracts, ADTs and Assertions, Larman chapter 11, submit domain analysis exercises
Sep 24, Object design, Larman chapters 12, 13 and 14
Sep 28, Submit ADTs for fruit problem
Sep 29, Project management and cost estimation, Larman chapter 40
Oct 1, UML interaction and class diagrams, Larman chapters 15 and 16
Oct 6, Pacing break
Oct 8, GRASP patterns, Larman chapters 17 and 18
Oct 13, Mapping design to code, submit & discuss project domain models, CRC cards & contracts, Larman chapters 19&20
Oct 15, Test-driven programming with Junit, Refactoring, Larman chapters 21
Oct 16, Each student submits Team Project Role Assessments via email
Oct 20, More OO design, Larman chapters 23, 24 and 25
Oct 22, GoF design patterns, Larman chapter 26
Oct 27, GUI in Java with AWT and Swing; threads and network programming?
Oct 29, OO web development with servlets (Dr. Jim Femister)
Nov 3, UML activity diagrams and state machines, Larman chapters 28 and 29
Nov 5, Domain model refinment, Larman chapters 30 and 31, submit & discuss 2nd iteration of projects
Nov 10, Architectural analysis, Larman chapters 32 and 33
Nov 12, Logical architecture refinment, Larman chapters 34
Nov 17, Package design, Larman chapter 35, student presentation of JDBC?
Nov 19, Failover, Proxy, Abstract Factory design patterns, Larman chapter 36, student presentation of Javabeans?
Nov 24, Persistence, Larman chapter 37, submit & discuss 3rd iteration of projects
Dec 1, Distributed objects, CORBA, J2EE, SOAP, student presentations of special topics
Dec 3, Ditto
Dec 14 or 15 (TBD): Final projects submitted and presented, each student submits Team Project Role Assessments via email
Student projects from previous years:
Fall 2008:
Earlier:
Lecture notes and assignments:
The following lecture notes are from the Fall of 2006, which I reorganized completely in 2008:
- Lecture 1a: Course objectives (Powerpoint).
- Lecture 1b: Classes in C++ (Powerpoint).
- Handout for lecture 1b/c: a few C++ code fragments,
illustrating data abstraction, inheritance and dynamic binding (Word document)
- Lecture 2: Why software engineering? (Powerpoint).
- Lecture 3: Requirements and Use Cases (Powerpoint)
- Lecture 4: Software process life cycles (Powerpoint).
- Lecture 5: Use cases to Classes (OOA) (Powerpoint).
- Lecture 6: UML and OO analysis (Powerpoint).
- Kent Beck's 1989 OOPSLA paper on CRC cards
- Class diagram,
Fowler & Scott, Figure 4-1.
- Composition and aggregation arrows, Fowler & Scott, Figure 6-6.
- Composition and
aggregation in boxes, Fowler & Scott, Figure 6-7.
- Sequence diagram,
Fowler & Scott, Figure 5-1.
- Sequence diagram
for concurrency, Fowler & Scott, Figure 5-3.
- Collaboration
diagram, Fowler & Scott, Figure 5-4.
- "Still Life with Fruit" assignment (as Word document), for printing
- Lecture 7: Object-oriented design (Powerpoint)
- Lecture 8: Lecture on Abstract Data Types (Powerpoint)
- Lecture notes on Java (HTML)
- Lecture notes on Java AWT (HTML). Lecture
on AWT and Swing (Powerpoint).
- Java Arrays and Collections (Powerpoint)
- Lecture on Exceptions in Java
(Powerpoint) Lecture on Assertions in Java (Powerpoint) Lecture on JDK 1.5 (Powerpoint)
- Java threads and networking with URLS and sockets in Java (Powerpoint)
- Lecture on OOtesting (Powerpoint). Lecture
on Junit (Powerpoint).
- Lecture on JDBC (Powerpoint).
- Lecture on components, COM, ActiveX, JavaBeans, CORBA and SOAP (Powerpoint)
- Catie Welsh on J2EE and Enterprise JavaBeans (Powerpoint)
- Cost estimation (Powerpoint)
- Project management (Powerpoint)
- Lecture on Design Patterns (Powerpoint)
- .NET and C# (Powerpoint)
- LehighUML Eclipse plug-in (Powerpoint, John Pequeno et al.)
The following lecture notes are from 2005 or earlier.
- Object-oriented analysis (Word document)
- Eiffel and design by contract, assertions
(Word document)
- Lecture on C++ templates and STL (Word document).
Concordance program, STL example (C++ source code)
- Lecture on issues with inheritance (Word document)
- Lecture on C++ idioms (Word document)
- Lecture on exception handling and Run-Time Type Information
(RTTI) in C++ (Word document)
- Lecture on networking with URLs and sockets in Java
(Word document)
- Client-server quiz example, illustrating sockets
in Java (zip file)
Software tools and tutorials:
- Java Development Kit, from Sun's JavaSoft.
- Java documentation:
You find information about all the classes and methods of JDK here.
If you want your a copy on your own PC, you can download the JDK documentation, courtesy of Sun's JavaSoft.
- Rational Rose evaluation.
Rational Rose is probably the most widely used tool for visual modeling of object-oriented systems, using UML.
The complete Rational Rose suite is available on campus. (A good topic for presentations!)
You can download a trial version that lasts 15 days from this site.
- Rhapsody Modeler, A free object-oriented visual modeling tool for UML.
This one features code generation for Java or C++. Try it and let me (or the whole class) know what you think!
- An older OO CASE Tool, downloadable free to students and educators, based on Coad/Yourdon/Nicola methodology.
- Softera SoftModeler evaluation.
More competition for Rational Rose, supports UML modeling for Java.
- DrJava, a free Java Development Environment, designed primarily for students.
Features an interactive interpreter for Java expressions, a modern editor, a good debugger,
and built-in support for JavaDoc and Junit. Runs stand-alone or as a plug-in for Eclipse.
Recommended!
- JavaEdit, a simple Java Development Environment.
Unzip this file (with WinZip), then see the README file.
- ATM example in Java (a zip file containing .java files)
- Blackjack example in Java with Swing GUI (a zip file containing .java files)
- Console.java, a class that encapsulates standard I/O
- Java Web Start
installs full-featured Java applications via the Web
- HelpBreeze JavaHelp
Edition, a dedicated authoring tool specifically designed for creating
JavaHelp systems.
- Directory of example Java files
- LOOKOUT,
a simple integrated programming environment for C++, developed by yours truly,
based on the DJGPP port of the GNU gcc compiler for DOS and MicroEmacs
for Windows. In addition to a full gcc compiler, debugger, the info
documentation system, the standard template library, and other tools,
LOOKOUT comes with a small Emacs-like editor with multiple buffers,
and for beginners, a simple class library and on-line error message
help.
Object-Oriented Software Engineering:
Java FAQs, Tutorials and Sample Code:
C++ FAQs and Tutorials:
- Marshall Cline. C++ FAQ LITE -- Frequently Asked Questions.
http://www.cerfnet.com/~mpcline/c++-faq-lite/
- Yahoo. A list of C++ resources (FAQs, pointers, tutorials, libraries,
etc.) http://www.yahoo.com/Computers_and_Internet/Programming_Languages/C_and_C__/C__/
- Brain, Marshall & Campbell, Kelly. Understanding C++:
Introduction (assumes modest knowledge of C) www.iftech.com/oltc/cpp/cpp1.stm
- Dodrill, Gordon (Coronado Enterprises).C++ Language Tutorial
(also assumes modest knowledge of C) www.swcp.com/~dodrill/cppdoc/cpplist.htm
- Holzapfel, Roland. Object-Oriented Programming (emphasis
on distributed objects) www.igd.fhg.de/~holzapfe/old/papers_se/oop/index.html
- Olsson, Niklas. Master C++. A tutorial
which does not assume C background. Starts with "Hello, World" and you
can download examples. Features Windows programming. http:/www.geocities.com/SiliconValley/Bay/1055/c.htm%22%3ewww.geocities.com/SiliconValley/Bay/1055/c.htm
- Weidel, Johannes. The Standard Template Library Tutorial (recommended)
http://www.cse.lehigh.edu/resources/STL-tut/prwmain.htm
- Kirman, Jak. A modest STL Tutorial www.cs.brown.edu/people/jak/proglang/cpp/stltut/tut.htm
C++ class libraries:
Revised: August 19, 2009