Mastering Software Design and Development: Learning from HotDraw

Want to level up your software design skills and learn from one of the most influential frameworks out there? Enroll in our HotDraw review course and we'll show you how to create flexible and maintainable software systems like a pro!

Here you can find the next session of this workshop:

Online Course

Applying MVC and Advanced User Interfaces: Learning from JHotDraw

Sep 19, 2023 09:00-11:00
with Francesco Cirillo, in English

Learn by interaction:

  • 2-hour session.
  • Small classes, max 8 participants.

Online Course

Designing and Implementing Complex Objects: Learning from JHotDraw

Oct 17, 2023 09:00-11:00
with Francesco Cirillo, in English

Learn by interaction:

  • 2-hour session.
  • Small classes, max 8 participants.

Online Course

Implementing Undo Features: Learning from JHotDraw

Nov 21, 2023 09:00-11:00
with Francesco Cirillo, in English

Learn by interaction:

  • 2-hour session.
  • Small classes, max 8 participants.

Online Course

Implementing Advanced Event Handling: Learning from JHotDraw

Dec 19, 2023 09:00-11:00
with Francesco Cirillo, in English

Learn by interaction:

  • 2-hour session.
  • Small classes, max 8 participants.
* Price excludes VAT

Marco Testa

Software Engineer

HotDraw Design Review is really interesting and enlightening. It's really fascinating how design grows as new features lead to the introduction of new objects and new patterns, which are added like the instruments of an orchestra to create a harmonic symphony.


Course Programme

Module 01
HotDraw: A Comprehensive Overview of Design and Architecture

Introduction

  • HotDraw: Requirements
  • Why HotDraw
  • Some of the people behind HotDraw: Ward Cunningham, Kent Beck, Ralph Johnson, Eric Gamma, John Brant
  • What can you learn by studying HotDraw?
  • Generalized Graphical Object Editing by John Vlissides

Our HotDraw Application

  • Defining the application we want to build at the end of this session.

HotDraw: CRC card review

  • A CRC description of Hot Draw - Ward's original cards
  • Using CRC cards to explain HotDraw
  • Episode 1: Drawing, DrawingView and DrawingContoller
  • Episode 2: Figures
  • Episode 3: DrawingController and Tools
  • Episode 4: CreationTool, SelectionTool, ScrollTool
  • Episode 5: SelectionTool, Handles and Locator
  • How do team shape objects? How do objects shape teams?
  • CRC Cards: Pro and Cons

Documenting HotDraw using Patterns

  • Understanding HotDraw: Ralph Johnson's experience
  • A pattern language
  • The role of Christopher Alexander
  • What is a framework?
  • Documenting frameworks with patterns

Ready to HotDraw!

  • Analysis: What kind of elements do we need?
  • Development: Let's build our application

Q&A and Feedback


Module 02
Applying CRC Cards: Learning from JHotDraw

Introduction

  • The Role of the Software Designer

JHotDraw: Requirements

Defining Drawing Elements

  • A simple EllipseFigure
  • Isolating and reducing
  • Creating a Figure
  • Drawing an EllipseFigure
  • Looking for a Graphics object
  • Painting Figures
  • CRC Card review

Changing Drawing Element Attributes

  • Why is the Figure black?
  • AttributeFigure (Variable State)
  • Setting attributes
  • Finally the EllipseFigure is yellow (Template Method)
  • Looking for a Graphics object
  • Painting Figures
  • CRC Card review

Moving a Figure

  • How to move an EllipseFigure?
  • Understading repaint()
  • Do I see double?
  • Clearing the panel
  • Understanding invalid regions
  • moveBy() (Template Method + Observer)
  • Rectangles are Mutable

Understanding Constraints


Module 03
Applying MVC and Advanced User Interfaces: Learning from JHotDraw

To be defined


Module 04
Designing and Implementing Complex Objects: Learning from JHotDraw

To be defined


Module 05
Implementing Undo Features: Learning from JHotDraw

To be defined


Module 06
Implementing Advanced Event Handling: Learning from JHotDraw

To be defined


Your Learning Goals

Studying HotDraw can offer a number of benefits for individuals interested in software design, including:

  • Developing design skills: Studying HotDraw can help software designer develop their design skills by providing a concrete example of how to apply design principles and patterns in practice. This can help designers learn to think more critically about their designs and make more informed design decisions.
  • Understanding user interface design: HotDraw is primarily used in user interface design, so studying it can provide valuable insights into the design of user interfaces. It can help designers understand the fundamental concepts of user interface design, such as interaction design, visual design, and usability.
  • Familiarizing with the Model-View-Controller (MVC) pattern: HotDraw is implemented using the Model-View-Controller (MVC) pattern, which is a widely used architectural pattern in software design. Studying HotDraw can help software designers understand the principles behind the MVC pattern and how to apply it in their own designs.
  • Gaining exposure to Object-Oriented Programming: HotDraw is implemented using object-oriented programming and design. Studying HotDraw can help individuals gain exposure to object-oriented programming concepts, such as inheritance, polymorphism, and encapsulation.
  • Better understanding of Design Patterns: HotDraw makes extensive use of design patterns: more than 20 patterns were applied in JHotDraw. HotDraw's use of design patterns can deepen one's understanding of how patterns can be applied in other software design projects, helping to create more flexible and robust systems, and can also demonstrate how design patterns can be combined for complex software development.

Overall, studying HotDraw can help software designers develop their skills and make more informed design decisions.


The Story Behind this Course

Francesco Cirillo tells the story behind the HotDraw Review

"Why a HotDraw Review?

Damir, one of the participants in my Programming with Francesco mentoring programme, one day asked me: "Is there software from which to actually learn how to use combinations of design patterns?"

Whether you're a software design student, aspiring developer, or seasoned professional, reviewing HotDraw is important because it offers a concrete example of how to apply design patterns to build flexible and maintainable software systems, helping you improve your design skills and giving you an edge in your career.


Annotated References

Here you can find the references used in the session commented by Francesco Cirillo:

CRC Cards

HotDraw

JHotDraw

UNIDRAW

Unidraw is a software framework for developing interactive graphical editors, designed before JHotDraw by John Vlissides (another member of the Gang of Four).

Documenting Frameworks Using Pattern Languages

Don't miss these gems!


Carlo Garatti

Software Engineer, Oracle

If your question is about how to write valuable software, this program is for you!! Through one-on-one lessons with Francesco you will learn how to fit the right techniques and tools in the exact phases of the software development cycle. You will fix and apply these ideas in real cases. And, last but not least, in an enjoyable way!


About the Course

Course Info

Format
6 x 2-hour sessions (max 8 participants)

Language
English

Delivery Options
Live online, onsite and in-house

Is this Course for you?
This training is aimed at software designers, software developers, team leaders.

What do you need for your Course?
No previous knowledge is needed. Much passion is required!

Certificate of Attendance
This Certificate is delivered to all the participants who have attended the six parts of the course and successfully delivered the assignments.


Why HotDraw?

HotDraw is two-dimensional graphics framework for structured drawing editors.

The HotDraw framework was developed in the late 1980s by Kent Beck and Ward Cunningham in Smalltalk.

HotDraw has several incarnations. Most of these implementations were proprietary.

HotDraw is the first application of CRC cards, a well-known technique invented by Ward Cunningham and developed with Kent Beck in the late 1980s as a way of exploring and designing object-oriented software.

HotDraw has also inspired the work of Ralph Johnson (another member of the Gang of Four) on documenting frameworks using patterns and along with Kent Beck on how patterns generate architectures.

Check out the Annotated References section below for a rich annotated presentation of articles and other resources.

Related Activities
Community #hotdraw-review More

Develop One Object at a Time, One Pattern at a Time

Book your Session


About the Trainer

Francesco Cirillo

Francesco Cirillo has worked at the forefront of the software industry for more than 30 years. In a career spanning startups, corporations and freelance consulting, he has mentored thousands of professionals, developers, managers and software teams.

In the 1990s he worked as a Senior Consultant and Mentor for Sun Microsystem, expert in Software Architectures and Software Development Processes and Java and Object-Oriented Evangelist.

Francesco is one of the pioneers of Agile Methods. He started working on XP and TDD in 1999. He was chosen by Kent Beck to develop the XP community in Europe and as reviewer of the second edition of the book Extreme Programming Explained. In 2000 he created XPLabs, the first company in Europe to offer comprehensive services on XP: software development, training and consulting.

In 2007 he created the Anti-IF Campaign to raise awareness in the international community of software developers to apply good design principles to grow software in a sustainable way.

Since 2008 Francesco stopped actively working on Agile Methods and started to develop RRP, a new method of software development. In 2013 he created Cirillo Consulting based in Berlin to offer professional training and consulting on productivity and software development.

Francesco invented the Pomodoro® Technique, a renowned time-management method used by millions of people all over the world, while being a university student looking for a way to get more done in less time.

Read the Francesco Cirillo's complete profile.


Price & Conditions

Live Online Course

HotDraw: A Comprehensive Overview of Design and Architecture

Learn by interaction:

  • 2-hour session.
  • Small classes, max 8 participants.

Live Online Course

Applying CRC Cards: Learning from JHotDraw

Learn by interaction:

  • 2-hour session.
  • Small classes, max 8 participants.

Live Online Course

Applying MVC and Advanced User Interfaces: Learning from JHotDraw

Learn by interaction:

  • 2-hour session.
  • Small classes, max 8 participants.

Live Online Course

Designing and Implementing Complex Objects: Learning from JHotDraw

Learn by interaction:

  • 2-hour session.
  • Small classes, max 8 participants.

Live Online Course

Implementing Undo Features: Learning from JHotDraw

Learn by interaction:

  • 2-hour session.
  • Small classes, max 8 participants.

Live Online Course

Implementing Advanced Event Handling: Learning from JHotDraw

Learn by interaction:

  • 2-hour session.
  • Small classes, max 8 participants.

Please read our terms and conditions for training courses here.


Marco Isella

Software Engineer

Francesco has changed the way I work, and more.


Upcoming Sessions

Here you can find the next session of this event:

Here you can find the next session of this event:


Useful Resources

Three Bowling Kata Reviews

Learn software design by comparing, fixing and expanding three Bowling Kata solutions. In this session, Francesco Cirillo reviews three different...

The Bowling Kata Challenge Solution

Have you ever noticed how many IFs have been used in Bob Martin's Bowling Kata solution? "Is this an effective...

The Anti-IF Workshop

Learn how to replace the 'IF Strategy' with more effective design strategies that will enable you to reduce the complexity...


FAQ

Do you have a question not listed here?

Pomodoro® Web App

The Pomodoro® Timer Web App will be your time tutor and help you stay focused so you can get more...

Pomodoro® Sheets

To help you get started, check out the official templates of the Pomodoro Technique that you can download and print....

Pomodoro® Book

This fully updated edition includes new and exclusive material about teamwork, to make you and your team more dynamic than...