In my previous post i was talking about retro fitting extreme programming into agile programming… well guess what its been already defined… its called… SCRUM
So what is Scrum development?
It’s a team based, project segmentation development pattern. So whats so new about it nothing really its just a mash up of old and new practices. The project gets split into small segments( or feature for you agile guys) and each team (like in extreme programming) works on a segment.
Since this is basically building developing a project out of small components. The smaller the component the faster you can build the system.
the reason i like this idea is because its an extensible development process.
- Control Chaos: http://www.controlchaos.com/about/]
- Wikipedia: http://en.wikipedia.org/wiki/Scrum_%28development%29
What do i mean by Retro Fitting Extreme Programming Into Agile development?!?!???
Agile Development also known as Feature Driven Development, this is where you build a list of features and the order that they are to be implemented. This responsibility can be placed on the Software Architect or Senior developer.
Extreme Programming also known as Test Driven Development is where you build your test before you code. This responsibility usually is place and should be placed on the Developer and programmers at a slightly Lower level.
I don’t see a reason why these two styles (or methodology) should conflict. You can simply write a set of tests for a feature in your feature list. This should give FDD a bigger success rate.
What happend to the Client ScriptCallback feature of Asp.Net 2.0, Well nothing really happened to Asp.Net 2.0’s client call back…its there and MS Ajax.net (aka atlas) actually uses this in the back end. The reason why we don’t here about it is…it is a paint in the you know what! To actually get anything done….but there was less of a foot print on the page.
Right now we have a couple API’s for writing Ajax is asp.net:
- MS Ajax.Net (aka Atlas)
- Ajax.Net or Professional Ajax.Net
Tips when not to Use Ajax… because the list of when to use it is actually longer…
- If a callback is going to Redirect a user when it get back to the client, just do a post and redirect him or her from there because it gets annoying. If it has to go all the way to server just do a post and redirect or do a Server.transfer.
- Don’t do a call back if it take 30 sec to return, but if you must give the user a message so he or she knows your processing data.
Script Callbacks in ASP.NET
So continuing with the BI theme lets take a look a small example.
Sample Code: http://quick-max.com/samples/BI/BI-Lite.zip
So i was thinking how much SQL would I have to write to actually get this to work
at the smallest level. The answer if one simple view that gave me Primary Key, and foreign key mappings that i called PkFk (go figure). The rest of the data retrieval was handled by Subsonic package, why write a whole data layer when all that i am interested in is Table names and keys.
The code only really has two files that you want to take a look at default.aspx.cs and TblGraphItem.cs. Also you will need to run the create view sql script on the pubs database….but you can basically point it to any database and change the code slightly.
so what were my results, very simple use reporting tool with some drill down. Where i didn’t have to write table specific code.
Examples: ( ‘->’ will be used to signify drill down)
1. Titles -> Sale
so you can see that I output what sections drill down to what data. I have over simplified the notion of BI but this is the basis, the difference is all you need is the View and its plug and play from there on… i don’t have to massage my data to accommodate reporting.
In researching for B.I tools to be used at work, that could suite our needs I quickly found out a miss conception….there isn’t a plug and play reporting tool. SQL Reporting services, Endeca analytics, cognus ….all require a lot of work to setup.
Now lets say i want to create a small and very simple reporting tool with drill downs. What would i have to know to get the base up.
- List of all tables
- All relationships between table
- If relationships could be marked as graph it would be useful to know top level parents…and the Nth level children.
So if we construct a database with all Primary and Foreign keys set correctly, steps 1 & 2 we can extract from the database catalog.
Part 3 should be taken care of when we start putting entires into the graph.
So a couple of buddies of mine showed me a little nifty application called SubSonic. Its A lite and dare i say cute ORM ( Object relation mapper). The reason i like it is because it has low footprint in the project. And i dont have to do any funky configuration to get it to work.
To run the sample you will need One of the Visual studio 2005 flavors…either express or standard and above will due. You will also require SQL Expression or some other SQL Server editions…like 2000 or 2005.
Sample Code: http://quick-max.com/samples/QBlog.net.zip
- Run ASPnet_REGSQL.exe and point to the database you want to work with.
- Then run locate the BlogTables.SQL and run it against your Prefered Database
- Open Up project folder as a website.
- Edit your mainCon connection string to point to your database.
Now we are ready to work. The Subsonic.dll has been included in project for you.
You will notice in the app_code directory that there is a builder.adp file. This file is used by subsonic to specify what table you want it to create Objects for. You may specify all table by
putting a ( * ) as the only entry in the file, or specify a table name per line.
Lets compile the project so that Subsonic builds our objects for us. Once you compile then the objects will show up.
You will notice a couple object where created, three of them being QuickMaxBlog, QuickMaxBlogEntry, and QuickMaxBlogEntryComment.
This is basically all we need to save postings to the database.
So lets take a look at Blog.CS
So i took the little nifty RSS Xml writter from Daniel Bright at CodeProject, I just added a couple blog specific functions.
So as you can see from the code sample above, i did not have to write a snippet of sql to get this to work. So the actually time you have developing time decreases. Its almost like mash up programming. I know I know i’m over simplifying it because this those not have any real business rules ……So lets say hypothetically I wanted to add more functionality to the base object created by subsonic…..well theres a little nifty feature in .Net 2.0 called….PARTIAL CLASSES….WHoooo Hooo…. and so all you have to do is create a partical class and you can inject any method, variable or properties that you might want to use…….
….well i hope you guys check this out its pretty nifty….
Subsonic : http://www.codeplex.com/actionpack
Daniel Bright: http://www.codeproject.com/aspnet/RSSviaXmlTextWriter.asp
Sample Code: http://quick-max.com/samples/QBlog.net.zip