Martin Granell, a senior consultant for Australian-based Microsoft enterprise consultancy and training company Readify, will be speaking at TechED in Boston this week about how moderate developers can build high-quality software using a variety of Microsoft development tools.
"I'll be talking and demonstrating an integrated software factory, using tools such as the DSL Tools (Domain Specific Languages), GAT (Guidance Automation Toolkit), TFS and FxCop, and showing how to evolve a factory in parallel with the development project," he said.
Granell said he will detail four projects where he and team members attempted to build high-quality, self-sufficient software factories, which were adaptive to changes in staff, requirements and budget. The four projects were all in different environments: government, an industry body, private sector enterprise and an independent software developer.
"I will show how the people, processes, frameworks and tools produced some effective, and some not-so-effective development environments. I will outline the lessons learned, and how we would approach those projects again, using technology such as VSTS, Team Foundation Server, and the Microsoft Software Factory initiative," he said.
One of the lessons Granell said he has learnt, is that it is important for the development team to "own" the process.
"It's not just about having a process for process sake, but after spending the time to choose the right process, you need to then internalize it. Chuck out things that don't work in the process and add things from other processes that work well for the team dynamics," he said.
Granell draws on a redevelopment project for independent software vendor QSR as an example of this type of flexibility and communication in action.
"The team [working for QSR] chose the Rational Unified Process but went on to modify it and even ended up calling it QIP (the QSR Iterative Process). Everyone (developers, testers, BA's, and tech writers) was encouraged to give feedback as to what was and wasn't working," he said.
"QSR fostered good relationships between all these different groups," he said, adding he doubted the same kind of success would have been achieved had there been a 'them versus us' mentality, especially between the developers and the testers.
Granell also suggests that it is important to "Front end" a large project.
"This means, try to produce a high-quality, solid baseline of code early on in the project which stands you in good stead for later iterations. If bugs and new features start to creep in, you can allocate significant developer time without impacting on deadlines," he said.
Fixing broken windows quickly, isolating third-party frameworks, automating governance and ensuring peer review are all vital aspects to successful development projects, according to Granell.
"It is also important to spend the time getting a good framework in place that is built to organizational standards, as this will gain you much more than it costs in the application development stage," he said
Lessons aside, all four of the projects, Granell said, would have been easier and more effective had the teams been able to use some of the newer Microsoft development technologies such as Visual Studio Team System, Team Foundation Server, and the Microsoft Software Factory initiative.
"The software factories initiative lowers the bar for building specific tools for a particular development team. Typically in the past, the effort required to provide custom tools to the developers was just too much, and there had to be a very large amount of repetition to be able to justify the level of investment," he said.
The new products and initiatives are more like platforms from which to create your own tools, he said.
"For example, I think the DSL Tools add-ons are fantastic, as they make it so much easier for the developer to visualize their languages. Visual Studio Team System brings all the SDLC tools together in a single place so for you get interactive syntax highlighting of code coverage using the VSTS tests, which also can be used from the build server in a batch environment," he said.
"Also, TFS provides a huge extensibility model, allowing the creation of sophisticated, process-driven development workflows, one example of this is the Scrum process template."