Eric Evans chatted with Alex Handy (SDTimes) about the primary aspects of DDD. Read the interview here.
Monthly Archives: March 2009
The BBC uses Domain Driven Design
A little late
, but still relevant…
Michael Smethurst (Information Architect at the BBC) describes how DDD is used to make websites.
The reality of UI mock-ups and DDD
Casey Charlton is writing a sample application using DDD. His first step was to create a UI mock-up to reflect a user story
“What’s so bad about that?” I hear you cry. Well, here’s the problem:
UI prototyping is great for defining how a person is going to solve a business problem. It’s not great at defining what the problem actually is (i.e. the business domain).
I’ve seen this happen many, many times:
- Developer sketches UI, to start discussions with the Domain Expert/Business Analyst
- Business Analyst adds/removes/repositions some widgets
- ‘Hand waving’ and ‘pointing at imaginary boxes’ becomes the communication technique of choice
- Developer agrees to ‘quickly code up’ an interactive prototype
- End user wants a different shade of blue
Although the Developer has good intentions of leveraging DDD, the urge to see working apps overrides everything else – leaving the Developer with a vague understanding of the business domain.
As the Developer does learn more about the domain, he usually finds that the original UI design is inadequate. And changing a UI is expensive (it’s a pity that most businesses don’t understand why).
This is where TrueView shines. It automatically creates interactive UIs, but only based on domain definitions and relationships. Which means:
- The Business Analyst must describe the business domain.
- The Developer must start understanding the domain
- Both must define and share the Ubiquitous Language.
TrueView doesn’t give you a totally customisable UI, but you do get an interactive prototype that models the business. Once you understand the domain model, you’re in a perfect position to design a slick UI.
Press release – “TrueView for .NET” keeps software focused on business concepts, slashes development times.
Cheltenham, UK, 10/03/2009
Evolving Software releases an update of “TrueView for .NET”, a framework for rapidly designing and creating business applications for Microsoft .NET.
TrueView helps .NET Developers and Business Experts share business knowledge, design interactive prototypes, and create flexible applications. Software teams use Domain Driven Design (an established technique for designing complex applications) to stay focused on essential business concepts.
“Absorbing business concepts can be pretty tough for development teams, especially when timescales are tight. Using TrueView, Developers can sit down with Business Experts, and use interactive prototypes to discuss the problem space. The feedback cycle reduces from days to hours.” explains Vijay Patel, founder of Evolving Software.
TrueView supports Agile development, Domain Driven Design, and the Naked Objects pattern. Combining these strategies allows developers to cut development times without compromising software quality.
Evolving Software is also offering personal licences to developers learning Domain Driven Design at discounted rates. Visit http://www.evolving-software.co.uk to learn more.
http://dddstepbystep.com
Casey Charlton started a mini-series on DDD a little while back. Now he’s created DDD Step by Step:
… This site is intended to consolidate some of the disparate information on the web regarding Domain Driven Design…
Definitely one to bookmark.
TrueView Release 1.2.0903.01 – Improved user experience
Thanks for all you comments. This release is based on your feedback, so please keep sending your comments. Download the latest version here.
Enhancements:
- Added PropertyGrid editor for unknown types (e.g. structs)
- Root entities can no longer be explored
- Top level nodes in Class Library treeview are now consolidated
- “Enter” now creates a new entity in Class Library
- Method buttons now have equal sizes
- Tweaked overall UI appearance (borders, padding, splitters, colours)
- Vertical splitter is removed if no methods are displayed
- Save action traces all affected entities
- Null EntityLists are now rendered with no grid lines
- Added “About Demo” window
- Added “Report a bug” option
- Trace log now saving in Zip compatible format
- “About” window now shows application information
- “About” window can be closed using Escape/Enter
- Failures in Query criteria no longer show dialog boxes (improved usability)
- Removed “Property was unchanged” message
- Clicking an empty area of the Actions panel hides Parameters listview
- “Edit Value” option is only shown in ‘Explorer’ mode
Fixes:
- Drag/drop now handles null EntityList properties
- Undo/redo now handles EntityLists
- Assembly resolve now handles upgrades/downgrades wherever possible
- Fixed “Collection modified exception” when resolving entity relationships
- Correction when identifying all parent entities
- Setting null values no longer attempts to create internal associations
- Corrected “Divide by zero” exception in memory calculation (for Vista64)
- Exceptions when invoking actions are only reported once
- Removing new instances from lists no longer causes ‘phantom’ dirty status
- Corrected “Paste new copy” functionality
- Action (method) button panel now expands correctly
- Application menu/toolbar are refreshed after clipboard operations
- Application menu/toolbar are refreshed after listview selection changes
- Corrected display of confirmation dialogs
- “Remove” item is now correctly enabled/disabled
- Corrected handling of ‘char’ editor
- Editors now change colour when they get focus
- Corrected change detection in ‘number’ editor
- File Editor now handles valid non-existing paths
- Added ‘IsMutable’ check when setting properties
- ValueObjects now share the same persistence details as their owner (Version, AccessDetails)
- Only critical exceptions are shown in a dialog
- Progress bar is not updated if form is disposing
- Trace message no longer appears when viewing an immutable object
- Saved Query filesnames now have 80 char limit
- Corrected NHibernate search queries for Component mappings
- Corrected NHibernate search queries for properties of same name, but different classes
- Corrected NHibernate search queries for subqueries of the same type
- Corrected re-hydration of saved Queries with multi-level subqueries
- All dialogs and forms are now disposed of explicitly
- Optimistic locking exceptions now show who modified the record, and when