CSE 432: Object-Oriented Software Engineering

Spring 2006

Professor: Glenn David Blank           Phone: 758-4867                                   Office: 328 Packard Lab
Hours: TWTh
1:10-2:10PM                    E-mail:glenn.blank@lehigh.edu    http://www.cse.lehigh.edu/~glennb/

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

Textbooks:

      Martin Fowler, UML Distilled, 3rd edition, Addison-Wesley, 2004. (Available in bookstore, strongly recommended)
      Glenn D. Blank and Sally H. Moritz, The Big Picture of Software Development (first chapter of proposed textbook for novices)

      Bruce Eckel, Thinking in Java, 3rd edition, Prentice Hall, 2002 (available online at  http://www.mindview.net/Books/TIJ/)

      Bruce Eckel, Thinking in Enterprise Java, 2003 (also available online)

      Shari Pfleeger, Software Engineering: Theory and Practice, 2nd Edition, Prentice-Hall, 2001 (on reserve at FM library)

      Peter Coad & Jill Nicola, Object-Oriented Programming, Yourdon Press, 1993 (on reserve at FM library)
      Mark Grand, Java Enterprise Design Patterns (electronic resource available via NetLibrary)

      Pete Thomas & Ray Weedon, Object-Oriented Programming in Eiffel, Addison Wesley, 1995 (on reserve at FM library)

Multimedia: point Microsoft Internet Explorer at http://cimel.cse.lehigh.edu, Sophia (faw2@lehigh.edu) will provide logins

Requirements:

      Analysis, design, and implementation homework assignments:            30%

      Project presentations (analysis, design and prototype):                         5%

      Class attendance and participation:                                                            5%

      Project: substantial software development in Java or C++:    60%, 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 (I will suggest a few).
  • Analysis and design: 30 points
  • Program implementation and testing: 30 points
  • Customer (real world client, requests a project, works with analyst, evaluates product)
  • 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 one of 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 (Rational Rose tools, Eclipse development, J2EE, .NET),
a design pattern (preferably one you are or might actually use) or research issues from OOPSLA or ECOOP conference

 

Syllabus:

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

1/17         Objectives; project ideas; OOP essentials       Thomas ch 1; Mm: Inheritance (in The Universal Computer: Software Engineering)

1/19         Dynamic binding  ; Eclipse and DrJava            Blank&Moritz,Mm: Objects&classes in Eclipse (in Design First With Java)

1/24         Why software engineering?                                Pfleeger, ch 1; Mm: Why software engineering?

1/26         Requirements gathering and use cases            Fowler ch 9; Mm: Use cases; form Project analyst teams

1/31         Life cycle models                                                  Pfleeger, ch 2-3, Mm: Life cycles; ATM use cases due

2/2           Extreme programming                                          Mm: Extreme programming

2/7           OO-analysis, CRC cards                                     Coad&Nicola ch 1; Fowler ch 1-3; Mm: CRC; Project requirement spec due

2/9           From use cases to classes in Eclipse             Rauch 70 lab                                                                             

2/14-16  Object-oriented design in UML                          Fowler ch 4-17; ATM, undo, fruit class diagrams due

2/21-23   Abstract data types; present analyses            Thomas ch. 3&8; Mm: Abstract data types; Project analysis due                             

2/28-3/2 Java, AWT, Swing                                                Eckel Java ch 1, 4-9, 11, 14. Fruit ADT design due

3/14-16   Assertions; JDK 1.5; present designs              Preliminary project design, test plan and team role assessments due

3/21-23   Threads, Network programming                        Eckel Java ch 13; Eckel Enterprise Java ch 1;Fruit program due

3/28-30   Design Patterns; JDBC, servlets                       Grand; Mm: Design patterns; Eckel Enterprise Java 3-4

4/4-6       Components, JavaBeans, EJB and J2EE          Eckel Enterprise JavaBeans and A J2EE Introduction

4/11-13   OO testing, Junit; ActiveX, CORBA, .SOAP  Pfleeger, ch 8-9                    

4/18-20   .NET, C#                                                                Project Junit example

4/25-27   Project prototype presentations                        Updated project designs and prototype demos

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