When you look at your projects, what objectives and success criteria have you defined? Are you looking for a higher quality product, shorter cycles / faster time to market, or are you looking for cost reduction? Regardless of what you’ve set out to achieve you need to define metrics, capture, benchmark, and make changes to improve your process as needed. This may not be easy or even possible unless you can monitor your entire process and capture quantitative data.
Software development is a very complex process and there isn’t a single right way to plan, execute, control, and delivery a project. The project documents and artifacts I use or produce throughout my development process could be very different from the ones you use or produce throughout yours. At the end of the day, we both produce software and want to do it efficiently. Tools can be used to help us do that, but there are a lot to choose from, so how do you know what to adopt? The tools you adopt to help you facilitate your process should be flexible and customizable to what you’ve established as your organization’s software development process. This is important so you don’t have to change your ways (kill your learning curve). This is also important so that you customize the tools as your process changes. The tools should also gather meaningful data about your process and allow you to access it easily at any time.
Team Foundation Server is the tool described above. It is meant to be used throughout the entire application development lifecycle. The more methodical your process is, the more value you’ll get out of TFS, but it’s also a good tool if your process is informal. I won’t discuss the detailed features of TFS in this post, but I will post another entry in the future to do so. In this post I’ll highlight some of the tool’s features, discuss how it meets the requirements stated above and how it can improve your software development process.
Firstly, TFS allows you to easily integrate your organization’s development process work flows into it. It allows you to create user interface screens that gather metadata about your requirements, development tasks, test cases, bugs, deployment tasks, and whatever other “work items” you’ve defined within your process. You project resources are also part of the TFS server and can assign/be assigned work items. These work item screens are defined and customized once and can be easily modified to evolve with your process. TFS also offers team development and deployment tools, collaboration tools, MS office document templates, and customizable SQL reporting on project health and project activities. All of these project artifacts and tools can be setup from a process template in a matter of minutes. This will save a lot of project setup time project after project. TFS meets our first requirement – customizable around your processes and increases efficiency.
Secondly, while project team members are using TFS, it will capture any actions they performed and store them into a MS SQL Server data warehouse. TFS is automatically capturing all of the quantitative data you need to measure your process. It is providing you with metrics on how many times a specific procedure was performed, how long each one took, and how many people it took to complete each one. It isn’t just doing that for a specific procedure, it is capturing those three metrics categories for your entire process that you’ve customized into the tool. All this data is in a database and can be queried at any time. TFS meets our second requirement – stores easily accessible and meaningful information about your process.
Knowing that TFS meets both requirements, you can use it to improve your development process as follows:
- Customize TFS and integrate your current process into it
- Evaluate project outcomes and set improvement goals
- Mine for specific data that can help you measure your process
- Analyze the data
- Rework your process and easily re-integrate it into your TFS Process Template
- Re-measure and check efficiency gains
- Repeat