Object oriented software engineering assignment
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
- Employment Application Review System. Project manager: Matt Brophy.
- Lehigh Graduate Student Senate Club Event Management System. Project manager: Mike Sands.
- Clinical DICOM Data Visualization System. Project manager: Tian Shen.
- Calculus Calculator Simulator (for high school students). Project manager: Jason Derenick. (Java source code in a zip file).
- Jobby's World (introduces programming by manipulating robots in a virtual world). (Java source available from Fang Wei or Prof. Blank)
- Monopoli$t (online Monopoly game). Project manager: Jie Ruan.
- WLVR Automation Playlist Software. Project manager: Michael Moll, Analyst/designer: Adam Balgach.
- Inventory Management Automation System for Office Supplies. Project manager: John Pequeno, Analyst/librarian: Tom Gianos.
- Macroscopic Bus Transportation. Project manager: Ian Siperstein, Analyst/designer: Dan Bader.
- Quantitative Finance Analysis Tool. Project manager: David Brown.
- Free Space Editor (FRED). Project manager: Ian Warfield. Analyst/Librarian: Chad Hogg.
- Multi-player online card game. Project manager: Hai Hoang, Analyst/designer: Steve Grabowski.
- Lecture 1: Software process life cycles (Powerpoint). See an overview of Larman's UML process.
- Lecture 2: Inception phase.
- Lecture 3: Requirements analysis and specification
- Lecture 4: More about inception, requirements and use cases
- Lecture 5: Domain modeling
- Lecture 6: System Sequence Diagrams
- Lecture 7: Abstract Data Types and Operation Contracts
- Lecture 8: Interaction Diagrams and Domain Class Diagrams (DCDs)
- Lecture 9: GRASP Design Patterns
- Lecture 10: Visibility of messages
- Lecture 11: Mapping Designs to Code
- Lecture 12: Test-driven and Object-oriented Testing. Lecture on Junit testing tools
- Lecture 13: From Iteration-1 to Iteration-2 (more requirements and refactoring)
- Lecture 14: Pure Fabrication and �Gang of Four� Design Patterns
- AWT, Swing and Graphical User Interfaces
- Activity Diagrams and State Charts for detailed modeling
- Lecture on JDK 1.5 (5.0). Lecture on Java Collections. Lecture on Assertions in Java.
- Domain Model Refinement
- 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)
- Requirements specification for Undo problem. This document is both a sample requirements specification which can serve as a starting point for your projects as well as a description of a problem for an assignment (Word document).
- Use Case Handout
- Boehm's Spiral software development process model (gif file)
- Lecture 4b: Extreme Programming (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.
- An executable version of FruitBowl, implemented in C++ (zip file)
- 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 Startinstalls 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.
- Manfred Schneider. Links on Object-Orientation. http://www.rhein-neckar.de/~cetus/software.html. Lots of links on OO methodologies (including UML), languages, distributed objects and databases.
- Ricardo Devis. The Object-Oriented Page. An annotated list of resources pertaining to object-oriented software. http://www.well.com/user/ritchie/oo.html
- The Development Exchange. UML Zone. An annotated list of web articles and books pertaining to Unified Modeling Language. http://www.uml-zone.com/
- Bala Paranj. The Command pattern in Java. A discussion of a Design Pattern which issues requests to objects without knowing anything about the operation being requested or the receiver of the request. http://www.javaworld.com/javatips/jw-javatip68.html?020899ibd
- Schneider, Phillip. The Booch method: An introduction to object oriented development. A tutorial introducing a widely used object-oriented methodology, described in more detail in Grady Booch: Object-oriented Analysis and Design with Applications, 2nd edition. Benjamin Cummings, Redwood City. ISBN 0-8053-5340-2, 1993. http://www.itr.ch/courses/case/BoochReference/
- nbsp; The Object-Oriented Page. An annotated list of resources pertaining to object-oriented software. http://www.well.com/user/ritchie/oo.html
- Object Management Group. Corba for Beginners. CORBA is a framework for distributed objects.
http://www.omg.org/corba/beginners.html
- Peter van der Linden. Java FAQ. http://www.afu.com/javafaq.html/. Frequently Asked Questions for Programmers.
- JavaSoft. Java Software FAQ Index. http://www.javasoft.com/docs/faqindex.html. Collections of frequently asked questions (FAQs) providing brief answers to many common questions about Javasoft software and products.
- Dick Baldwin. Java Programming Tutorials.. http://fs.dai.net/ac/546512/E01.html?http://home.att.net/~baldwin.r.g/scoop/index.htm. Well-maintained and lots of details.
- Deitel and Deitel. Java How to Program.. http://www.deitel.com/. All the code from Deitels books are available for downloading. The Deitels maintain good code examples ranging from the basics to Swing, Java2D, JDBC, Servlets, JavaBeans, etc.
- ObjectSpace. JGL (Java Generic Library).. http://www.objectspace.com/products/jglOverview.htm. Closest equivalent to the Standard Template Library (STL) of C++ for Java, freely downloadable. ObjectSpace also has a distributed application server and a free CORBA ORB.
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:
- wxWindows. A free, portable (Win, Unix, Mac) C++ class library, with support for GUI, text editor, threads, . http://web.ukonline.co.uk/julian.smart/wxwin
- Other C++ class libraries available via the web http://www.yahoo.com/Computers_and_Internet/Programming_Languages/C_and_C__/C__/Class_Libraries/