Hello world!

29May08

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!


I came across an interesting presentation by Philippe Kruchten titled “A New Culture of Project Management”. In the slides, Kruchten contrasts traditional project management in non-software industries with agile project management in the software industry. Despite the fact that I am a PMP certified project manager, I could not agree more with his analysis. In fact, most, if not all, software project managers I know always have their own agile shortcuts for PMI processes. I think its time for PMI to have a new PMBOK for knowledge based industries.

Here are some interesting quotes from the slide:

“Most companies build their bureaucratic rules to manage the small percentage of wrong people on the bus, which in turn drive away the right people on the bus, which then increases the need for more bureaucracy to compensate for incompetence and lack of discipline, which then further drives the right people away and so forth.” Jim Collins, Good to Great

“Simple, clear purpose and principles give rise to complex, intelligent behaviour.” “Complex rules and regulations give rise to simple, stupid behaviour.” Dee Hock, CEO of Visa

You can download the presentation here.


Having encountered the terms very often, I spent some time reading about DDD and here is a short summary.

The basic idea is that the domain model is necessary throughout the design and the development process. We need it to deal with complexity and all our software design thinking should revolve around the domain model.

To build the domain, software developers should communicate with domain experts (an Agile practice). To facilitate that, there is a need for a common language, the language is called the Ubiquitous Language.

The key is to build a model that can be expressed in software so that the design is smooth. The code should relate to the domain making both the code and the domain more relevant. Also by better understanding of the domain, developers will be more agile in adapting the code to domain changes and changing the domain when needed.

Software patterns have been proposed/emerged to help achieving pure DDD, such as Entities, Value Objects, Repository, Factory and Service.

Recommended practices for DDD includes: Early feedback by Domain experts, developers need to act as analysts, analysts need to spend time coding the model, the software design should map to the model, if not possible, part of the software design should be isolated to map to the model.

DDD is different form MDA (Model Driven Architecture) in that the emphasis is on building better domain model rather than expressing the domain model in implementation friendly notation.

Light POJO frameworks, Aspect Oriented Programming and Domain Specific Languages (DSL) are some of the outcomes of the software industry’s desire to abstract domain model design from implementation.

For further reading, check DDD- Tackling Complexity in the Heart of Software, DDD – Putting the Model to Work and InfoQ’s Domain Driven Design Quickly.


This is a continuation to my WICSA 2008 posts.

As part of the ‘Patterns and Styles’ paper presentations track, Neil B. Harrison and Paris Avgeriou presented a paper titled Analysis of Architecture Pattern Usage in Legacy System Architecture Documentation. The authors looked at different architectural (including Layers, Shared repository, Pipes and Filters, Broker, MVC…etc) and studied their usage in different application domains such as Embedded Systems, Data Flow systems (assembly-line type), Information and Enterprise systems, Web-Based Systems, Case and Related Developer Tools, Games and Scientific Applications. They based their research on the gallery of systems on Grady Booch’s site. They basically researched common patterns usage, pattern diversity, pattern frequency, pairs of patterns that usually appear together…etc. Here are some of their findings:

* The five most commonly used patterns are (in sequence): Layers, Shared Repository, Pipes and Filters, Broker and MVC.
* In Enterprise Systems, the most common used patterns are Layers, MVC, Presentation Abstraction Control and Broker.
* In Web-based systems, broker, layers, pipes and Filters are most prevalent. (This surprised me considering MVC is not in the list).
* One of the interesting results is that architectures are often based on 2 patterns rather than one, three or more patters.
* The authors also looked at the usage patterns of architectural view and found that out of the 4+1 views, development and process views are prevalent.


I recently attended the Working IEEE/IFIP Conference on Software Architecture (WICSA) 2008 held here in Vancouver. I will try to use this as an excuse to start this blog. I will summarize my experience in a number of posts.

The event was well organized and my overall experience was positive. The event included a conference, tutorials, and working sessions. I attended the conference and two working sessions (Architecture and Organization, and Architecture Documentation Frameworks). The conference included two keynote speakers (Ian Gorton from Pacific Northwest National Laboratory and Andrew Brownsword from Electronics Arts) and several rounds of paper presentations.