A live, 5-day seminar on DVD, approximately 21 hours of lecture and discussion.
See the demonstration video clips©2007 MindView, Inc.
How do you think about a system and partition it into objects? What makes a good subsystem? How do you decompose a subsystem into classes and interfaces? This seminar will introduce you to the essence of design by examining design tradeoffs:
This seminar is for software designers and programmers who grasp the concepts of OO, but for whom conceptualizing the best system and object designs is a hurdle.
The seminar consists of two parts: Designing Systems, covering the high-level issues of object-oriented architecture and system design, and Designing Objects, which will focus on the issues and questions surrounding the design of individual classes. These portions of the seminar and their associated projects will be interleaved throughout the seminar.
The workshop combines lectures, guided exercises, and team-based independent work to demonstrate how object-oriented design can work in a production environment. As with all Bruce Eckel’s seminars, the emphasis is on “thinking in” objects.
The inception phase should produce the key objectives of the project: what problem are you trying to solve, and/or what service are you providing? With some thought, this can be summarized in a couple of sentences, what I call the Mission Statement. The value of this exercise is that, if you get stuck in details, the mission statement can refocus you onto what you’re really trying to do.
The overview description expands on the mission statement by producing a number of paragraphs that more completely describe the behavior of the system, in prose. This becomes your first-cut analysis of the system, which will be used to help produce use cases (in the following section).
Exercise: Your team will write and present the Mission Statement & Overview Description for the exercise project.
The concept and value of the Use Case is introduced. This tool allows you to describe the requirements and behavior of the system, and also to factor the system into features that can be implemented as part of the iterative development process.
Use cases as a minimal system specification.
Exercise: Your team will create and present use cases for the exercise project.
Product development is risk management, and the sooner you can discover and attack the critical risks, the sooner you’ll know whether your project is feasible and what the real costs and schedule might be.
Exercise: Your team will discover and attack the critical risks for the exercise project.
This section introduces the basic concepts of Extreme Programming (XP), and why it seems to work so well. How to start, using pair programming and integrated testing. The value behind creating the tests first, and how to build automated testing into your development process.
Exercise: You will write unit tests that test a Java class
Use cases can be broken into sets of features that can be selected for implementation during particular iterations. The negotiation of the choice of features for each iteration is an essential part of the communication between the developers and the client, and this must be a choice made by the client based on information about costs provided them by the developers.
Exercise: Your team factors the exercise project into features, and chooses the initial feature set to be implemented during the first iteration.
The primary trap of design: seduction by low-level details. How to use the 3x5 card as a constant reminder to stick to the basics of your design. Fundamentals of UML, and UML as a communication tool. Expressing your design as a UML diagram.
Exercise: Your team uses CRC cards to discover the objects in your project. One or more UML diagrams is created and presented.
Projects are built as a series of iterations. Once you’ve decided and designed the initial feature set, you need to get the core of the project working so that you can add features in future iterations. This also tests and proves the validity of your analysis and design, and gives valuable feedback to the customer about the state of the project, and whether it’s going to accomplish the desired goals.
Exercise: Develop a plan to implement the core functionality of the project, as decided in step 5 and designed in step 6.
Our presentation of the design project will include:
At the end of the week, each team will present their approach to the solution. We will ask questions and converse about the solution choices and possible alternative approaches. This will not be about “right and wrong” solutions, but instead about examining decisions made based on real or imagined constraints.
The “deliverables” for each project are:
A strong emphasis will be placed on practicality and in applying the Extreme Programming (XP) principles of:
Do the simplest thing that could possibly work
You’re not going to need it
An important part of good object-oriented design is well-designed objects. The portion of the seminar, which is called the Object Design Workshop, focuses on guidelines and idioms that will help you create well-designed objects. Each guideline and idiom will be explained and justified, and then discussed by the attendees. This discussion is an integral part of the workshop, aimed at facilitating a conversation about design among peers that can help everyone to learn from each other’s experiences and perspectives. At the end of the Object Design Workshop, you will walk away with a specfic set of practical guidelines and concrete idioms that you can draw upon in your future object designs.
The Object Design Workshop also includes a hands-on design project. Periodically, the attendees of the workshop will break up into small groups, each of which is assigned an API design project. Each group will document their design with UML and/or javadoc HTML pages, and present their design to the rest of the class, who will discuss it. The point of the design reviews is the same as the discussions to draw out the experience and perspectives of the entire group, and enable everyone to learn from each other.
The Object Design Workshop focuses heavily on designing with Java. Although many of the guidelines are applicable to any object-oriented language, all examples are shown in Java. Most of the idioms are specific to Java. In addition, the end result of each API design project will be a Java package.
Here’s a list of the guidelines and idioms that will be covered during the Object Design Workshop: (Each title is linked to an online copy of the lecture handout.):
Articles covering most of these topics are posted at:
A high degree of comfort with object-oriented terminology. Implementation experience with Java.
Interface Design: Best Practices in Object-Oriented API Design in Java, by Bill Venners (free download)Buy and read the following books, and bring them to the seminar:
This video is available in NTSC format only. If you live outside the USA, you must either have a DVD player that works with NTSC, or play the DVDs in your computer’s DVD drive.
This was the first video that we’ve made, and we used the on-camera microphone instead of lavalier microphones. As a result, the sound quality is not as good as it might have been. Please make sure you view and listen to the sample clips below to ensure that the sound quality is OK for you before purchasing this set of DVDs.
Priority Mail to CaliforniaDVD set: $500.00
CA Sales Tax: $43.75
Postage & Handling: $12.00
Priority Mail to USA Outside CaliforniaDVD set: $500.00
Postage & Handling: $12.00
First-Class International Mailing
Phone number required for mailing; Enter in box at the bottom of payment formDVD set: $500.00
International Postage & Handling: $20.00
|Although PayPal will send you a USPS tracking number, there is no tracking on international mail|