Monday, October 18, 2004 2:14 PM
pdbartlett
WhatbiHome
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