Missing treenodes in Options/Preferences Editor

If you were running a previous version of TrueView, you may find tree nodes missing in the Preferences Editor.

The fix is to remove  the old user settings.  Open this folder in Windows Explorer:

  C:\Users\<your user name>\AppData\Local\Evolving_Software_Ltd\

And remove all folders for the application that is affected.

TrueView Release 1.2.0905.02 – Maintenance release (plus a few extras)

The latest maintanance release fixes some glaring errors (sorry!).

The UI has also been updated for better usability – and now supports dynamic drop-down lists using IQuerySpecification.  Read the user guide to learn more.

Enhancements:

  • Moved MDI window toolbar to top (tab-like appearance)
  • MDI window ‘tabs’ now toggle normal/maximised window state
  • Added support for dynamic UI ‘lookup lists’ using IQuerySpecification
  • User is prompted to email errors at shutdown
  • Added “Communication Settings” to Preferences
  • Added online version checking for Trial build
  • Added Vista style TaskDialogs
  • Dirty status is only shown for changed entities
  • Collapsible panel widgets now highlight on mouse-hover
  • Reduced flicker when changing between maximised windows
  • Search “Add” now uses “Query Bookmarks”, which can be viewed after saving
  • Added TransientEntityList class
  • Default settings of AutoSave is now False

Fixes:

  • Corrected UI updates when list Add/Remove is aborted
  • Improved UI refreshing after performing commands
  • Clearing a search form purges the internal cache
  • Corrected Action button panel flow layout when resized
  • Corrected tooltip rendering in Property treenodes
  • Text no longer truncated in Action buttons
  • Corrected MyApplication.IsStarted value
  • Dialogs no longer displayed when Workbench isn’t running (for unit testing)
  • Improved/optimised tracking of dirty entities within deep object graphs
  • Now handles hidden/new properties
  • Reattaches entities to NHibernate ISession before loading properties
  • Improved NHibernate session management during Save operations
  • Corrected ListView sorting for sub-items that are null
  • Corrected ListView header sort icons for Vista
  • Corrected lock-up when tabbing through PropertyGrid controls
  • Corrected validation when dragging items from the Class Library
  • Previous search results are cleared if query returns no matches
  • Corrected “Unit of work” check for method Actions
  • Added sync locking to allow rapid keyboard actions (e.g. keeping a key pressed)
  • Now supports icons named after Interfaces
  • Reset drag/drop label background colour

Optimisations:

  • UI widgets are only refreshed once where possible
  • Reduced amount of redrawing when listviews are refreshed

Known issues:

  • DateTime editor doesn’t change background colour on Vista
  • Preferences Editor doesn’t always render tree nodes

A quick chat with Eric Evans

Eric Evans chatted with Alex Handy (SDTimes) about the primary aspects of DDD.  Read the interview here.

The BBC uses Domain Driven Design

A little late :oops: , 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:

  1. Developer sketches UI, to start discussions with the Domain Expert/Business Analyst
  2. Business Analyst adds/removes/repositions some widgets
  3. ‘Hand waving’ and ‘pointing at imaginary boxes’ becomes the communication technique of choice
  4. Developer agrees to ‘quickly code up’ an interactive prototype
  5. 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

Domain Driven Design: A Step by Step Guide

Casey Charlton is starting a mini-series about DDD.  Should be interesting.

TrueView Release 1.2.0901.05 – Upgraded to Nhibernate 2.0

Happy New Year!

We’re starting the year with a new release.

BREAKING CHANGES

  • Upgraded to NHibernate 2.0.1GA (with breaking changes)
  • Added InnerList property to IEntityList
  • Changed NHibernate namespace to NH
  • Removed EntityListAttribute.IListField

Enhancements:

  • ValueObject now implements IValueObject
  • AccessDetails now implements IValueObject
  • Copy operations use a different colour when dragging primitives/ValueObjects
  • MyApplication.Save only persists dirty objects in the graph
  • TrueView is now responsible for object graph ‘cascading’
  • Added PropertyAttribute.BackingFieldName
  • EntityList now uses IEntityList.InnerList for NHIbernate collections
  • Added custom NHibernatePropertyAccessor to auto-manage all property types
  • Renamed “Paste Duplicate” menu item to “Paste New Copy”

Optimisations:

  • Improved Save performance
  • Improved UI update after setting a property

Fixes:

  • Fixed duplicate entries in object graph traversal
  • “Save this” never attempts to save other objects in the graph
  • Cloning now handles ValueObjects
  • Corrections in Entity version tracking
  • SetProperty now automatically uses IValueObject.Clone()
  • AddToList now automatically uses IValueObject.Clone()
  • Interface inheritance hierarchies now correctly identified
  • C#3.0 auto-property backing fields now identified
  • NHibernate query builder now uses class metadata to identify correct property name
  • Context menu doesn’t show duplicate Paste items for primitive values
  • Exceptions during form close displayed with “Retry/Cancel” buttons
  • Correction when validating property relationships

TrueView DataBridge 1.3.0901.05

BREAKING CHANGES

  • Upgraded to NHibernate 2.0.1GA (with breaking changes)

Enhancements

  • Added MSSQLServer2005 (default option)
  • Removed FieldNamingStrategy – it is now auto-computed
  • Interfaces are now “Unmapped” by default
  • Now uses NHibernatePropertyAccessor to manage EntityList properties
  • Uses PropertyAttribute.BackingFieldName if available
  • Generated properties now have IDENTITY/INDEX attributes set

Optimisations

  • Disabled ‘cascade’ options (TrueView is now responsible for cascading)
  • Disabled “Select-before-update’

Fixes

  • Corrected filter when creating interface mappings
  • Component mappings no longer include OID or AccessDetail properties
  • Corrected AssemblyResolve for strongly named assemblies