I'm test-driven!

Intro

WhaTBI? stands for "What's The Big Idea?", and is a GotDotNet workspace I created in December 2003 to explore some of Fowler's "Patterns of Enterprise Application Development".

For many reasons this was not the best way of approaching the project, though, so it was recently reinvented as a TDD project (see WhatbiTdd).

Iterations

The iteration status is as follows:

Iteration Purpose Phases complete
1 Create a simple, read-only datasource All
1a Back-fill missing tests for phase 1 (whoops!) All
2 To add query capabilities All
3 Create a simple, map-based, read-only datasource All
4 Map map-based datasource from above updatable All
4a Added some "negative" tests for updatable map All
5 Add synchronisation to updatable map for safe multithreaded use Abandoned - could not contrive a failing test
6 Added a database (SQL Server) based, read-only datasource All
7 Make database-based datasource from iteration 6 updatable All
8 Enhance query functionality with built-in predicates/expressions All
8a Add even more All
9 Conversion of query predicates to SQL All
10 Read-only, XML-based data source All
11 Updatable version of XML-based data source from above All
12 Example application - Membership Log Ongoing (not yet using TDD)

Project archive is available here.

Issues

The issues list is as follows:

Issue# Status Description Phase raised Comments Phase closed
1 Closed Returning writable objects from read-only datasource 1, green Encapsulated in Utility.GetReadOnly. Enhancement possibilities added to WhatbiFutures. 1a, refactor
2 Closed Possibility of type-safe datasources via generics 1, refactor Now documented in WhatbiFutures. 1a, refactor
3 Open All exceptions thrown are derived from Whatbi.BaseException 1a, green Once I have a better idea how to structure the exceptions I can make the constructor protected to force more informative derived exception classes to be used.  
4 Open No synchronisation in updatable data sources 5 The implementation of UpdatableMap seems to be accidentally thread safe, so must wait for a different updatable data source before developing synchronisation code (possibly as a decorator).  
5 Open Varied exceptions from "update" methods 6, refactor The Insert, Update and Delete methods of the map-based and database-based updatable data sources throw different exceptions when problems occur. This is not good from a consistency point of view, and also makes the common tests less elegant than they might be, as the ExpectedException attribute can no longer be used.  

Future development ideas are listed at: WhatbiFutures

Obsolescent / Obsolete

The original GDN workspace still exists at: http://workspaces.gotdotnet.com/whatbi
Various captured design thoughts can be found at: WhatbiDesign