Feeds

Thirty seven build runs later...

Three Pair and the development lifecycle

Reducing security risks from open source software

Imagine Cup It occurred to us that we should put more technology related stuff in our Reg Developer blogs, after all that's what really interests us and probably what interests you too.

We guess it makes sense to firstly talk about how we go about developing our application.

At the moment we have 35,045 lines of code, although it's true that many of those will just be { and } because we like nicely presented, block indented code. Even after you consider our formatting, we still have a fair chunk of actual useful code. Unfortunately we haven't got a single end to end use case completed yet, but before we get carried away with talking about what we've got, let's talk about what we want to have.

We've approached the development of this as being driven by three main scenarios. A scenario is a sequence of use case events with a pretty story tying them together that we think should show off the best features of our system. So things like authenticating against the back end won't be in a scenario, but phoning up and getting a voice prompt menu and leaving a message for someone will be.

The scenarios are one approach at tackling the problem, a somewhat customer focused approach. To make sure our system actually works, we've also gone down the traditional approach of drawing fantastically complicated design diagrams, with more arrows then you can shake a stick at.

We started out by deciding on the main architectural components, then laid down the interfaces between the components, and lastly the data that would ultimately need storing. Much like everyone else we have used a distributed tier approach.

We have a data access layer using the Data Mapper pattern, oh yes, our University (Hull) even teaches design patterns and practices. Our data layer then connects to a business tier which provides services to the clients either through MSMQ/Web Services or just good ol' remoting. The idea here is that the client doesn't know what data goes where or even that objects need to have the Save method called if you want them to end up in a database.

Instead, clients call methods on the business tier like CreateNewUser which maps directly to a use case for the client, yet on the back end it involves a fair few Objects and Tables.

That's the design philosophy from 30,000 feet: now to look at the development cycle...

Were lucky in that our university has a good set of resources for us and so far one of the most useful has turned out to be Team Foundation Server (TFS). In the past we've all had experience using Source Safe, CVS, and Subversion, all of which have their own problems and merits - well except maybe Source Safe for which we couldn't really find a nice word for. Anyway, for this project we decided to take a more serious approach and use TFS. After a somewhat steep learning curve - well, steep compared to SVN and Tortoise - it actually became a core part of how we worked.

We're using the scrum approach to development where every (late) morning we stand up in a circle and go through the tasks for the day and any blockers that we have. We then mark-up the tasks on a daily milestone whiteboard, which in turn is fed off our weekly (sprint) milestone board, which is built from the master plan. The master plan, of doom, is a series of feature sets for each scenario attached to a delivery date, and on that date we expect to have a deployable and useable demo.

Deployable. There's an interesting word, indeed one that is sparsely ever mentioned at university where most students will demo their final-year projects from the laptop they built it on. After many a bad experience when it came to taking the code that worked fine in debug mode on your laptop to another machine and then watching it break horribly, we finally learnt our lesson.

So now we use TFS and MSBuild, we have an install script that removes the previous version of our system and creates all the websites, database, users, and settings for the new version. So every morning at 2am come rain or shine TFS builds our solution - so long as no one has checked in bugged code!

Following a somewhat convoluted MSBuild file, the build output is copied to the right directory structure on a nice UNC share from which the install script can be fetched from. We can even zip it up and drop it onto SharePoint for all to see. So every morning the three of us come in, fetch the build and run it so that we all have a local version of the latest system which we then develop against. Except for maybe Tom, who seems to think prototypes shouldn't go in the source tree - who knows, maybe they shouldn't.

So this funky development procedure leaves us on a good stage to implement our application, which hopefully means we'll be on track for the finals in August! ®

The Power of One eBook: Top reasons to choose HP BladeSystem

More from The Register

next story
NO MORE ALL CAPS and other pleasures of Visual Studio 14
Unpicking a packed preview that breaks down ASP.NET
Cheer up, Nokia fans. It can start making mobes again in 18 months
The real winner of the Nokia sale is *drumroll* ... Nokia
Mozilla fixes CRITICAL security holes in Firefox, urges v31 upgrade
Misc memory hazards 'could be exploited' - and guess what, one's a Javascript vuln
Put down that Oracle database patch: It could cost $23,000 per CPU
On-by-default INMEMORY tech a boon for developers ... as long as they can afford it
Google shows off new Chrome OS look
Athena springs full-grown from Chromium project's head
Apple: We'll unleash OS X Yosemite beta on the MASSES on 24 July
Starting today, regular fanbois will be guinea pigs, it tells Reg
HIDDEN packet sniffer spy tech in MILLIONS of iPhones, iPads – expert
Don't panic though – Apple's backdoor is not wide open to all, guru tells us
prev story

Whitepapers

Top three mobile application threats
Prevent sensitive data leakage over insecure channels or stolen mobile devices.
Implementing global e-invoicing with guaranteed legal certainty
Explaining the role local tax compliance plays in successful supply chain management and e-business and how leading global brands are addressing this.
Boost IT visibility and business value
How building a great service catalog relieves pressure points and demonstrates the value of IT service management.
Designing a Defense for Mobile Applications
Learn about the various considerations for defending mobile applications - from the application architecture itself to the myriad testing technologies.
Build a business case: developing custom apps
Learn how to maximize the value of custom applications by accelerating and simplifying their development.