Definition of the word ‘process’ is contextual to the subject in which it is used. Simplest generic definition of process made in the dictionaries is ‘a series of actions that produce a change or development’. After studying and gaining experience in various facets of software development, I have arrived at a definition that is more comprehensive than the one mentioned above. I prefer to define it as an ‘Ordered set of activities that are performed once or optionally, iteratively in a predefined environment, by people playing different roles that produces desired artefacts, with the help of appropriate tools’.
This article is published from the November 2012 Edition of the DNC Magazine – A Free High Quality Digital Magazine for .NET professionals published once every two months.
The November edition featured hot topics likeProcesses using TFS 2012, Knockout JS in ASP.NET MVC, Azure IAAS, the Roslyn project in action, Creating Visual Studio 12 extensions, Notifications and Live Tiles using WinJS and more! Last but not least, our special guest in the Interview chair, Jon Galloway!.
Click Here to Download all the issues of this Free .NET Magazine
Thus managing the entire ‘Software Development process’, is certainly a non-trivial task. Microsoft Team Foundation Server (TFS) facilitates execution of activities of the software development process and manages that result into desired artefacts (or artifacts). Those artefacts usually are featured products or services but may also include many other things like release notes, documentation, user manuals, installation & maintenance manuals, administration utilities etc. Let us now check how TFS 2012 facilitates us to implement two of the most popular software development process variants. One is CMMI that is based upon the traditional waterfall model and the other is SCRUM, that is one of the most popular implementations of Agile methodologies.
Ordered Set of Activities
Both CMMI and SCRUM are collection of many processes. For example, there is a set of activities that a software architect executes to transition the requirements into physical design. One example artefact is a UML diagram and Visio is a tool to do that. Another example is creation and execution of a test case by a tester. Any of those processes need to be managed – planned, monitored and controlled. TFS 2012 facilitates this process management with the help of hierarchical work items. Activities are always represented by tasks. In TFS 2012 tasks are an important type of work item. First level of classification of tasks supported by TFS 2012 is through iterations and area.
Iterations are natural part of Agile as well as adapted in CMMI. TFS 2012 allows us to classify each task into various time bound iterations. In SCRUM, they may be called Sprints but conceptually they remain same. Areas in TFS 2012 are logical grouping of work items. Freedom is given to the manager to decide the logic of grouping.
I have seen areas created for modules under development and physical tiers in which the developed component may go. Tasks can be managed using convenient software like MS Project or MS Excel. TFS 2012 seamlessly integrates with those software so that planning, scheduling, monitoring status and editing them becomes easy through the interface that is commonly used. Prioritization is done with the help of either priority given to the task work item or that given to the parent of tasks, which can be Requirements, User Stories or Product Backlog Items (PBIs).
MS Project also facilitates relationships like predecessor – successor that are effectively replicated in TFS 2012. In this way, the project manager in case of CMMI, or a team in case of SCRUM, defines the order in which the activities will be done. Tasks are assigned to various team members so that those team members will execute those tasks at the scheduled time. In case of CMMI, as the tasks are closed by each team member, their status is reflected in TFS and there onwards, in the MS Project; being used by the project manager.
SCRUM (task) board is a facility provided in TFS 2012 that allows the team members to move tasks to the columns of appropriate status (From ‘To Do’ to ‘In Progress’ to ‘Done’).
Roles and Members
In any process, each team member does not have the same ordered set of activities as others, since they play different roles. This role differentiation is more pronounced in CMMI than in SCRUM. TFS 2012 supports any role that is required to be present through groups. In TFS 2012, user grouping is present at three levels – At overall TFS level, Team Project Collection Level and Team Project level. Aim of grouping is to define different activity streams for each group and to provide appropriate permissions to features of TFS to them. Various services of TFS expose different permission types. Source Control service has permissions to access each object like branch, folder and file that can be granted or not granted to various groups. There is further granularity of permissions, for example in a project, it is possible to define who can check-out files and who can check-in, which group can edit labels and which group is not allowed to do that. Work Item tracking service has permissions based upon the queries that show results of filtered set of work items.
TFS 2012, to support SCRUM, also allows us to define teams that are brought together for implementing a set of features for a product. Defined teams can then be used to do Product Backlog planning, Sprint Planning and load balancing. TFS 2012 facilitates sprint planning and load balancing to be done by the teams with a graphical view that highlights the areas of overloading and under loading while the load assignment is being done within the team.
Membership of groups and teams is based upon the security principals like domain (active directory) or windows where TFS is installed. This allows the authentication to be delegated to the proper authority and reduces any chances of user database being hacked. Authentication mechanisms supported are NTLM and Kerberos depending upon the operating systems and option selected at the time of installation of TFS.
Process of developing software generates many types of artefacts. Some of them are in the document form and others are in the source code files form. Documents further can be categorized as living documents which get changed during every phase of development or static documents that are created and then never changed. Any artefact that is a living document can be defined in TFS 2012 as work item type. For example, a requirement document may contain requirements or stories for implementation. Both of these are created at certain point in time during the process of software development and once created, they live an entire lifetime passing through many phases which finally terminates in Closed state when that requirement or story is completely implemented. This lifetime of the requirement or story is captured in the work item of those types. They pass through many states and while being in those states, collect a lot of relevant and related data.
TFS 2012 supports many types of work items that are commonly used. They are grouped for the methodology that the organization would want to follow. In case of Agile methodology, it has built in definitions for User Story, Task, Test Case (and related Shared Steps), Bug and Issue. It supports SCRUM with work item types for Product Backlog Item, Task, Impediment, Test Case and Bug.
Under the process template of CMMI it allows the creation of Requirements, Tasks, Test Cases, Bugs, Risks, Change Requests and Reviews.
Other types of living documents are the reports that are created to show progress done and health of the project. These reports are based upon the data that is collected by Work Items that have lived or are living from the start of the project, till the moment that report is generated. This data is stored, analyzed and made available in report form by TFS 2012. Some reports are also based upon the source that is under the source control. This is a very efficient way of reporting and effortlessly provides all necessary reports for the management of project, productivity and quality.
Some documents that are created but vary rarely changed if at all, are provided by TFS 2012 in template form. For example, there are documents for Project Management, Audit Plans, Documentation Plan, Risk Management, Security Management and many other related subjects. All these documents are created and versioned in the libraries of portals created for each project on a linked SharePoint server. TFS 2012 is a complete set of ALM services. Source control is one of the major services out of that. Every source file of the project can be kept under the source control of TFS 2012.
TFS 2012 and Visual Studio 2012 are the largest set of tools that are created for supporting Application Lifecycle Management. MS Office components can also be integrated with TFS 2012. With so many tools to choose from, the user can use the tool of choice, and with which they are comfortable with to interact with TFS and to improve productivity without compromising quality.
Requirement gathering and analysis
The task of requirement gathering and analysis is done by the Business Analysts. They are usually comfortable working in MS Excel so using the same tool, they can elicit requirements and stories as work items. They can also check the status of requirements and stories by synchronizing the same worksheet with the work items data from TFS 2012. In addition to work items for requirements or stories or PBIs, it also provides a tool for storyboarding in collaboration with MS PowerPoint. Using this tool not only can you create storyboards that depict the flow of user interface but also get a feedback with corrections in it from the customer.
Project and Program Management
Project and program management requires a manager to plan, monitor and control the efforts, quality (tests and bugs), risks, impediments and issues. Effort planning is facilitated by TFS 2012 through the work item type Task. Work break down can be done using either MS Project or MS Excel and then the result of that WBD is published in TFS 2012 as Task work items. These tasks are assigned to appropriate team members. These team members update status using other tools like Visual Studio 2012 to reflect the real efforts that have taken place. Managers get update in their project plan since they are synchronized time to time to get the latest status from TFS 2012. Quality Managers may use MS Excel to do the test case planning. But, using Microsoft Test Manager 2012 (MTM 2012) is more productive and intuitive way of doing it. MTM 2012 has the ability to do the test case planning and monitoring the test results. It also has a built in feature to run the manual tests more efficiently. Risks, impediments and issues are managed using the Team Explorer or a browser based client of TFS 2012.
Sprint Planning and Running
The biggest enhancement in TFS 2012 in comparison to TFS 2010 has happened in this area. TFS 2012 has built in support to do the sprint planning. While doing the sprint planning, it also allows the team to do the capacity balancing. To run the sprint, TFS 2012 has a built in, interactive sprint board where team members can view the status of various tasks as well as move the tasks to appropriate areas.
Architecture, Development and Testing
Visual Studio 2012 supports these role specific tasks by providing best of the industry tools. These tools improve the productivity of the team and also maintain consistently very high quality of output.
Build and Deployment
Build service of TFS 2012 incorporates build administration as well as build workflow execution. It supports advanced concepts like Continuous Integration, Gated Check-in and verification of build using unit tests (either Microsoft or third party), send appropriate notifications when the build completes and call external tools to do additional tasks. We can also use custom activities of the workflow to package and deploy the built software.
Feedback from client
In SCRUM it is necessary to get feedback from client at the end of the sprint for the incremental release that was completed in that sprint. With TFS 2012 Microsoft has introduced a software tool to request feedback from client. Using this tool, it is possible to request a feedback post deployment from the customer. A free feedback client part of the tool allows customer to view and run the deployed software and provide feedback in the form of text, voice, video, annotation on screens etc. This will complete the loop that is started for the sprint.
All this discussion has shown us how strongly Team Foundation Server 2012 supports the implementation of SCRUM and CMMI processes by providing the process templates that package these ordered set of activities, roles and artefacts. TFS 2012 with the help of Visual Studio 2012 and MS Office provides all the necessary tools to implement these process templates in real life. This support means an increase in productivity and quality for the customers who adopt those.