June book review: Understanding A3 Thinking

This month, we will continue the theme of A3 Thinking started in April with my review of "Managing to Learn" by John Shook.

Durward K. Sobek II and Art Smalley
Understanding A3 Thinking. A Critical Component of Toyota's PDCA Management Process.

In "Managing to Learn", John Shook described the fundamentals of A3 analysis and explained how to apply A3 thinking to improve problem solving and decision making in the organization. In "Understanding A3 Thinking", Durward and Art expanded the scope of A3 reports to two additional categories: proposal reports and status reviews. All three basic types of A3 reports are listed below:

  1. Problem-Solving A3 Report
  2. Proposal A3 Report
  3. Status A3 Report

This book is a practical and insightful introduction to A3 thinking. The authors illustrated how to create different types of A3 reports and included examples, templates, exercises, and review questions for each report category. Additional topics covered include:

  • Form and style of the reports
  • Commonly used graph types
  • Standard A3 templates
  • Hand-written vs. electronic A3 reports
  • Storage and retrieval of A3's

Where shall you start if you are interested in learning logical, objective, result-focused A3 thinking process?

  1. The authors recommend starting by writing a simple problem-solving report with the scope limited to an area you have control over. This way, you will be able to focus on learning the steps of producing an A3 without the complexity of interdepartmental politics.
  2. Ask your co-workers as well as your manager/coach for feedback on your A3 report while it is still in progress. Seeking feedback from multiple sources is likely to be very insightful.
  3. Continue using A3 reports to analyze, propose, and summarize your daily work processes and projects.

To find more information about this book, click here. Happy reading!

Ari Zilka speaks at OTUG on Tue, June 16, 2009

Who: Ari Zilka
What: Real Apps, Real Frameworks, Real Use Cases
When: Tuesday, June 16, 2009, 6-8pm
Where: Room 114, Brady Educational Center - University of St. Thomas, St. Paul, MN
Cost: Free

No RSVP is need. See more information on otug.org.

Second Summer Software Symposium on Thu, July 23, 2009

The University of Minnesota Software Engineering Center holds the second summer symposium on best practices in software engineering and development in the embedded and critical systems domain. This year's topic is "Static Code Analysis and Complex Medical Devices". The organizers intend to cover techniques used in the FDA and Forensics Lab.

What: Second Summer Software Symposium "Static Code Analysis and Complex Medical Devices"
When: Thursday, July 23, 2009, 8:30 am - 4:30 pm
Where: (a href='http://www.alumnicenter.umn.edu/index.html" target="_blank">University of Minnesota's McNamara Alumni Center
Cost: $90

Registration is required. Visit http://www.umsec.umn.edu/events/Summer-Software-Symposium-2009 for more information.

June Architect: Potluck Principle of Getting Objects You Want

Problem Statement

Each issue of "The Architect" will address a common problem in object-oriented programming. This month, we will take a look at how to get a reference to an instance of the class that you would like to use in your code.

Potluck Principle of Getting Objects You Want

If you want to get a reference to an instance of the class, you should first understand what type of object you are trying to create. Is it an Entity, Value Object, DTO, or something else? Once you answered this question, select one of the options below. Choose the option that better fits your situation:

  1. You may be able to create the object yourself
  2. You may be able to ask another object to give the object to you
  3. You may be able to reconstitute the object from a previously stored state

When I discussed these options with Svetlana, she said that they reminded her of organizing a potluck. Potluck suggests an assortment of dishes, just like an object-oriented code is an assortment of objects. When you want a particular dish to be prepared for a potluck, you can do it yourself, assign it to one of the guests, or pick it up from a local grocery or a restaurant.

Option 1: Create the object yourself

You can create the object yourself by calling its constructor or using one of the Creational Design Patterns. Here are some examples when it may be applicable:

  1. New Entity. Entity, aka Reference Object, is an object defined by its identity as opposed to its attributes. Examples: a new Account, a new Person, a new Application.
  2. Value Object. Value Object is an element of the domain model with no concept of identity. Examples: Money, DayPoint, Address.
  3. Policy, Specification, or another member of the Decision Making layer. Examples: IsCosignableApplicationSpecification, IsEligibleFor401KEmployeeSpecification.
  4. Data Transfer Object

Option 2: Ask another object to give the object to you

Here are the examples:

  1. Local Entity inside of an Aggregate. Aggregate is a cluster of associated objects treated as a unit for the purposes of data changes. The root is the only member of the aggregate that outside objects are allowed to hold references to. To find an object inside the aggregate, you need to traverse its associations. Examples: Order Items of a Purchase Order, Wheels of a Car.
  2. Value Object used to describe an Entity or another Value Object. Examples: Age of a Person, Amount in a Bank Account.

Option 3: Reconstitute the object from a previously stored state

  1. Existing Aggregate or Global Entity. For each aggregate (or global entity) in your domain model, create a repository responsible for performing a database query and recreating the aggregate (or global entity) based on the query results. Examples: a Car, an Application.

Note that the Potluck Principle does not attempt to answer where and when object references may be obtained and how long they can be kept in memory. These are good themes for our future blog articles.

Let me know what you think. Happy coding!

The Architect: new monthly column on Modelus Blog

I am happy to announce a new monthly column called "The Architect" where we will touch on many issues facing designers and developers creating object-oriented business applications.

I will share with you rules, principles, and techniques that I found useful over the years. I hope you will be able to identify with the problems described and will take pleasure in learning from the situations that apply to you.

We have a wide scope to cover: object-oriented analysis and design, domain modeling, design patterns, domain-driven design, responsibility-driven design, service-oriented architecture, etc. If you are a member of a development team, or if you work with software developers, this column is for you.

LEI offers lean workshops in Minneapolis on July 14-16, 2009

Lean Enterprise Institute (LEI) offers workshops on Lean Problem Solving, Value-Stream Mapping, Standard Work, Flow, and A3 Management Process:

What: Lean Workshops
When: July 14 - 16, 2009
Where: The Marquette Hotel in downtown Minneapolis
Cost: $800 for a 1-day class and $1600 for a 2-day class

Registration is required. Visit lean.org for complete details about available workshops and instructors.

Welcome to ModelBlog

Thank you for visiting ModelBlog. We hope the time you spend with us will be both entertaining and worth your while. Have fun!