CSE 432: Object-Oriented Software Engineering

Spring 2005

Professor: Glenn David Blank           Phone: 758-4867                                   Office: 328 Packard Lab
Hours: MTWTh
2:30--3:30PM           E-mail:glenn.blank@lehigh.edu        http://www.cse.lehigh.edu/~glennb/oose/oose.htm

Course Description: Design and construction of modular, reusable, extensible and portable software using statically typed object-oriented programming languages (Eiffel, C++, Java). Abstract data types; genericity; multiple inheritance; use and design of software libraries; persistence and object-oriented databases; impact of OOP on software life cycle.

Prerequisites: Familiarity with a high-level programming language and data structures

Texts (first two strongly recommended; others available on reserve Fairchild-Martindale library or via the web):

      Martin Fowler, UML Distilled, 3rd edition, Addison-Wesley, 2004.

      Deitel and DeitelHow to Program: Java, 6th edition. Prentice-Hall, 2004.  (Also How to Program: C++)

      Bruce Eckel, Thinking in Java, 2nd edition, Prentice Hall, 2002. (Available online at  http://www.mindview.net/Books/TIJ/)

      Bruce Eckel, Thinking in C++, 2nd edition, Prentice Hall, 2002.  (http://mindview.net/Books/TICPP/ThinkingInCPP2e.html)

      Shari Pfleeger, Software Engineering: Theory and Practice, 2nd Edition, Prentice-Hall, 2001.

      Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, Design Patterns, Addison-Wesley, 1995.

      Pete Thomas & Ray Weedon, Object-Oriented Programming in Eiffel, Addison Wesley, 1995.

      Scott Meyers, Effective C++, 2nd Edition, Addison-Wesley, 1997.

Requirements:

      Undo analysis, and analysis, design, and implementation of "fruit" problem:    8% each

      Project presentations:                                                                                                  6%

      Project: substantial software development in Java or C++:                                    70%, apportioned by points as follows:

  • Projects should tackle non-trivial problems and exploit inheritance and dynamic binding.
  • "Real world" projects, with customers outside of class, are recommended and will be evaluated more highly.
  • Analysis and design: 30 points
  • Program implementation and testing: 30 points
  • Customer (requests a project, works with analyst, evaluates product; could represent outside customer): 10 pts
  • Project manager (coordinates team participants by roles, manages schedules and resources): 10 points
  • Librarian (documentation, project schedules and minutes, test data, deliverables and maintenance manuals): 10
  • Subcontractor (works on a specified part of another project, negotiated with team and project manager): 10 pts
  • Subcontractors may be hired for specific tasks by either an analysis/design or programming/testing team.
  • Every student must participate on an analysis/design and on a programming/testing team (2 per team).
  • Every student must participate as either customer, project manager, librarian, or subcontractor on one project.
  • Customer and analyst/designers may not work on the same project.
  • Analyst/designers and programmers may not work on the same project, though project manager role continues.
  • Project manager should be one of the analyst/designers (to provide continuity for a project). 
  • Requirements, analysis and design specifications due at dates specified during semester (see syllabus below)
  • Each team member evaluates other team members, by role, with Team role assessments.

Extra credit: seminar presentation on a topic related to the course, i.e., tools (Eclipse, Rose, Junit), research issues

 

Syllabus:

Dates      Topics                                                                    Readings (assignments & project activities dates) & multimedia (Mm)

1/18-20   Team roles; Quality & modularity; Classes     Thomas ch 1         Mm:  Why software engineering? Teams, Inheritance

1/25-27   Customer proposals; Life cycle models           Pfleeger, ch 2-3, Fowler ch 2 (proposals)                         Mm: Life cycles

2/1-3       Requirements and use cases                              Fowler ch 9 (form customer/analysts teams), Mm: Use cases

2/8-10    Extreme programming, O-o analysis                   Fowler ch 1-3 (project requirements, use cases)  Mm: CRC, Extreme programming

2/15-17   Object-oriented design                                       Fowler ch 4-17 (undo, fruit analysis)                                Mm: UML

2/22-24   Abstract data types; present analyses            Thomas ch. 3&8 (project analysis)                   Mm: Abstract data types

3/1-3       Introduction to Java                                            Deitel ch. 2-3, 6, 8-11 (Fruit problem design)  Mm: Objects & classes

3/15-17   Java AWT, Swing, assertions, JDK 1.5            Deitel ch. 13-16 (project design #1; team role assessments)

3/22-24   Theads; Design Patterns                                    Gamma et al.  (fruit program)                                              Mm: Design patterns

3/29-31   Present project designs                                      (present project designs)                                                    Mm: Team organization

4/5-7       Project management; OO testing, Junit            Pfleeger, ch 8-9                                                                     Mm: Regression testing

4/12-14   Components and J2EE; .NET & C#    

4/19-21   Distributed objects: ActiveX, CORBA, .SOAP    Eckel Java, ch 14-15, appendix A

4/26-28   Project presentations                                          (demo prototypes)

5/12         Final projects and team role assessments due by noon