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='" target="_blank">University of Minnesota's McNamara Alumni Center
Cost: $90

Registration is required. Visit 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 for complete details about available workshops and instructors.

May book review: Agile Retrospectives

This month, we continue the theme of team self-reflection and retrospectives started last year with my review of "Project Retrospectives" by Norman Kerth.

Esther Derby, Diana Larsen
Agile Retrospectives. Making Good Teams Great.

This book is an excellent addition to Norman Kerth's guide to project retrospectives. Esther and Diana focus on iteration and release retrospectives which are short and frequent. As such, they provide feedback faster and allow the team to find and fix issues before it is too late for the project. Iteration retrospectives are repetitive, seemingly easier to organize and facilitate, and may not even require a formal facilitator.

However, like any other routine executed over and over again, they could sometimes get tiring and even boring. What steps could we take to keep the discussion flow fresh and the team engaged? How could we help the team members apply their creative and unconventional thinking?

Esther and Diana outlined a five-step approach to leading retrospectives. For each step, they offered practical advice and a set of activities and techniques to make retrospectives insightful and fun:

1. Set the Stage

2. Gather Data

3. Generate Insights

4. Decide What to Do

5. Close Retrospective

  • Checkin
  • Focus On / Focus Off
  • Explorer / Shopper / Vacationer / Prisoner
  • Working Agreements
  • Temperature Reading
  • Satisfaction Histogram
  • Timeline
  • Triple Nickels
  • Color Code Dots
  • Mad Sad Glad
  • Locate Strengths
  • Satisfaction Histogram
  • Team Radar
  • Like to Like
  • Brainstorming / Filtering
  • Force Field Analysis
  • Five Whys
  • Fishbone
  • Patterns and Shifts
  • Prioritize with Dots
  • Report Out and Synthesis
  • Identify Themes
  • Learning Matrix
  • Planning Game
  • SMART Goals
  • Circle of Questions
  • Short Subjects
  • Triple Nickels
  • Force Field Analysis
  • +/Delta
  • Appreciations
  • Temperature Reading
  • Helped, Hindered, Hypothesis
  • Return on Time Invested
  • Satisfaction Histogram
  • Team Radar
  • Learning Matrix
  • Short Subjects

Retrospectives equipped with these activities will become a powerful iterative improvement tool for your team.

Note that I think of iteration, release, and project retrospectives as iterative rather than continuous improvement tools. They will help your team reflect, learn, adapt, and get better together, eventually reaching the performing stage of  Bruce Tuckman's Team Development Model. Performing teams are recommended to implement a continuous improvement tool, such as A3.

Esther's and Diana's book is easy to read, concise, and well organized. If you are doing iterative development, it is likely to serve you as a reference guide for many iterations to come.

To take a closer look at this and other Esther Derby's books, click here. Happy reading!

NUnit 2.5 GUI cannot locate iBatis.NET sqlMap.config

NUnit 2.5 was released last month introducing a large set of new functionality into the NUnit framework. If you are using an earlier version of NUnit today, take a look at the following new features released in 2.5:

  • Parameterized, data-driven tests
  • New constraints
  • New asserts
  • Theories
  • Distributed parallel tests
As in previous versions, NUnit 2.5 allows running tests from multiple assemblies by using NUnit test project files. We find a lot of value in using these files on local development workstations. However, our automated build and continuous integration server, TeamCity 4.5.1, does not support NUnit project files and requires all test libraries to be listed manually. As a result, TeamCity executes tests with the value of AppDomain.BaseDirectory set to the location of the executing assembly. While we used to be able to configure the same behavior in previous versions of NUnit, NUnit GUI 2.5 no longer updates AppDomain.BaseDirectory at the assembly level and is likely to fail your unit or integration tests when they rely on the AppDomain.BaseDirectory value.

We came across this issue while upgrading our persistence tests. When iBatis.NET Data Mapper was used, tests succeeded on the build server but failed locally (could not find sqlMap.config or properties.config). I looked into the iBatis.NET 1.6.1 source code and noticed that the framework uses AppDomain.BaseDirectory to load its configuration files. To fix the problem, update AppDomain.BaseDirectory to the location of the executing assembly before creating the iBatis.NET Sql Mapper:

var  assembly =  Assembly.GetExecutingAssembly();
var  applicationBase = assembly.CodeBase.Substring(0, assembly.CodeBase.Length - assembly.ManifestModule.Name.Length);
AppDomain.CurrentDomain.SetData("APPBASE", applicationBase);

Contact us if you are interested in upgrading your applications to NUnit 2.5 or configuring them for TeamCity. Happy coding!

David Hussman speaks at OTUG on Tue, May 26, 2009

David Hussman will be speaking at OTUG on Tuesday, May 26, 2009. Do not miss it!

Who: David Hussman
What: The Black Swans of Big A Agile
When: Tuesday, May 26, 2009, 6-8pm
Where: 3M Auditorium Owens Science Hall - University of St. Thomas, St. Paul, MN
Cost: Free

No RSVP is need. See you there!

.NET User Group event on Thu, Jun 4: Code Contracts, Pex, and CHESS

Twin Cities .Net User Group is hosting a presentation on Code Contracts, Pex, and CHESS.

What: Maintaining Resilient Code: Using Tools From Microsoft's DevLabs and Research
Who: Jason Bock
When: Thursday, June 4, 5:00pm-7:00pm.
Where: Microsoft Corporation, 8300 Norman Center Drive, Suite 950, Bloomington MN 55437
Cost: Free

See for more information. I plan on attending. See you there!

Looking back at Microsoft TechEd 2009

I just came back from Microsoft TechEd 2009 conference in Los Angeles. This year's conference was smaller than usual registering only about 7,000 attendees. If you did not get a chance to attend, take a look at the highlights below.


Windows Azure is a run-time environment in the cloud that provides an ability to host, seamlessly scale, and manage web applications and services. I was amazed by how many sessions this year were dedicated to Windows Azure as well as Azure Services Platform which includes .NET Services, SQL Data Services, and Live Services. Although the detailed pricing and service-level agreements have not been announced, it is clear that Microsoft is seriously investing into their cloud infrastructure with the intention to offer .NET developers a choice to host web applications on-premise, externally, or in the cloud.


Microsoft Silverlight is a web browser plug-in for delivering Rich Internet Applications (RIA). I attended a day-long seminar on Silverlight led by Jeff Prosise. Jeff took a deep dive into capabilities of Silverlight 2 and 3 and explained the logic and philosophy behind many Silverlight design decisions. This was one of my favourite TechEd sessions this year.

Over the last couple of years, Silverlight has matured into a very powerful product. We have observed significant decreases in project cycle times when building RIA applications using Silverlight 2 as opposed to AJAX and JavaScript toolkits. Silverlight 3 introduces many new long-awaited features, such as back-button navigation, deep linking, dynamic styling, style inheritance, element-to-element binding, writable bitmaps, offline support, etc.

Note that according to as of May 19, 2009, Silverlight 2/3 is installed only on 27% of client computers. While not a concern for an Intranet application, it presents a challenge when you have no control over your client environments.


Surprisingly, ASP.NET core classes have not changed much, which is an excellent news for your existing web infrastructure. Our security, logging, exception management, content management, branding, internationalization, and other infrastructural libraries are likely to integrate seamlessly with the new version of ASP.NET.

The features that make me excited about the upcoming release of ASP.NET 4.0 are integration of ASP.NET with jQuery and availability of client-side templates and data binding. Take a look at ASP.NET AJAX 4.0 Preview 4 on to get a better idea on what is coming out.


Microsoft Hyper-V is a virtualization platform that ships with Windows Server 2008 for x64. It allows you to optimize your server hardware by consolidating multiple servers into a single physical machine running multiple virtual machines. Virtualization was a very hot topic at the conference.

Windows Server 2008 R2 and Windows 7

Quite a few sessions as well as the key note were dedicated to the upcoming releases of Windows Server 2008 R2 and Windows 7. Both products are on schedule to be released at the end of this year.


A few additional sessions are well worth mentioning:

  1. "The Scaling Habits of ASP.NET Applications", an excellent talk on scalability of ASP.NET by Kent Alstad, CTO of StrangeLoop Networks.
  2. "Cracking Open Kerberos: How Active Directory Knows Who You Are" by Mark Minasi, Chief Scientist at MR&D. Mark's presentation helped me better understand how Kerberos tickets work as well as when and why Kerberos switches to NTLM.
  3. "Busy Microsoft .NET Developer's Guide to F#" by Ted Neward. I am contemplating using F# for one of our financial calculators.

Standish Group CHAOS report for 2009

The Standish Group has released its CHAOS Summary 2009 report. Let the data speak for itself: only 32% of all projects were successful, 44% were challenged, and the rest 24% failed. See more detail in this press release.

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!