OO Development using the UML

Note. This course is built around the Lightweight development process from UML Distilled by Martin Fowler. As such it is compatible with the Unified Process and it places a lot of emphasis on the effective use of the UML. The OO Development using UML and Java course follows a Quality or Test First process and includes writing code as part of the course.

Object Languages allow advantages, but do not provide them" - Tom Hadfield

As the "traditional" developer community learnt early on, good systems arise out of good designs. Good Designs require a good understanding of the problem to be solved. In all of the current hype surrounding Object Technology, it is very easy to fall into the trap of thinking that Object Oriented Programming is the silver bullet.

The reality is that used by itself, Object Oriented Programming should carry a Health Warning. Premature coding in an Object project has worse consequences than it ever had in the traditional (un)structured programming project. The illusion of rapid progress that slowly fades into the nightmare of poor quality, inflexible, unmaintainable parts of a system that will be ready to be delivered "real soon".

The intention behind this course is to allow experienced developers to leverage their current knowledge to gain a fast start in Object Oriented Development. The course provides developers with the tools needed to talk about the Quality of Requirements and Designs in Object Projects.

The course focuses on the needs of small development teams through the use of relatively "low ceremony" techniques and methods. The use of models for communicating ideas is emphasized, as is the need for an iterative, incremental development lifecycle.

Why this course teaches the UML

The Unified Modeling Language (UML) is the successor to the wave of Object Oriented Analysis and Design notations that appears in the 80’s and 90’s. The UML 1.1 was ratified by the OMG (Object Management Group) as the standard modeling language for use in Object Oriented Development. This course addresses the needs of practitioners for a fast start in the basics of the UML to improve the Quality and Productivity of Object Technology Projects. CASE tools are used where appropriate to assist in the construction of the UML diagrams.

Course Format and Style

The course is fast paced and interactive, using "toy" problems and a small case study to give participants hands-on experience in the use of the various techniques. Initially the focus is on getting familiar with the Object terminology and learning what makes a project truly Object Oriented. The focus then shifts to using Use Cases for Requirements Capture, and validating these by the use of a Business Object Model.

Using these Use Cases and the Business Object Model, the focus then shifts to the design of the implementation, using Responsibility Driven Design to design the Classes within the implementation packages. The focus of the last part of the course is on Quality Assurance and Testing, how can the design and implementation be validated against the Requirements.

Duration and intended Audience

4 Days (tailored versions for companies can also be provided, in-house versions of this course require a minimum of 6 participants)

Analysts and software designers/developers with some experience of Object Concepts or who will soon be undertaking an Object project. Knowledge of Java syntax is useful if participants want to be able to validate their design decisions by running code.

Course Goals

In addition to the formal aspects of OO Development, this course also covers the creative aspects of object modeling.

Course Content

  1. Basic Concepts
    • Understanding the Basic OO Concepts
    • How OO Methodologies manage risks
    • Moving from Classes to Code is a design activity
    • The role of the UML in Software Development
  2. The Inception Phase
    • Evaluating the Economic Feasibility of a Project
    • System Envisioning and Capturing Requirements for Prioritization
  3. The Elaboration Phase
    • Evaluating the Technical Feasibility of a Project
    • Capturing Requirements Using Use Cases
    • Using CRC Cards to create OO Designs
    • The different levels of precision necessary in models
  4. Detail Design and Software Architecture
    • Documenting Designs using CASE tools
    • Quality Assurance for Object Models
    • Software Architectures for OO Systems
  5. The Delivery Phase
    • Understanding Incremental Development
    • Creating Test Plans for OO Systems
    • Using the JUnit testing framework
  6. The Transition Phase
    • Understanding the Impact of Evolutionary Delivery
    • Acceptance Testing and Planning Releases
  7. Pragmatic Issues
    • The realities of OO Development
    • The limitations of OO CASE tools
    • Pitfalls in OO Development

Recommended texts