During the last couple of years, business of software development has not remained as profitable as it used to be about a decade ago. To retain high profitability, it has become necessary for organizations to look critically at their processes and optimize those for the highest productivity of the teams and the best quality of the product.
Using Microsoft Visual Studio Application Lifecycle Management (ALM) is one of the most effective ways to improve productivity of the team and the quality of product.
This article is published from the DNC Magazine – A Free High Quality Digital Magazine for .NET professionals published once every two months.
This month's edition features hot topics like ASP.NET MVC4, SignalR, Knockout.js, jsRender, TDD, Visual Studio ALM, HTML5, SharePoint, Windows Azure and Metro Applications amongst others. Not to mention, a freewheeling interview with Ayende Rahien, the man behind RavenDB.
Download this Free Magazine Here
Issues That Affect Software Development Productivity and Quality
Let us first look at the issues that can adversely affect the software productivity and quality and in turn profitability.
1. Not using the tools that are capable of supporting automation
2. Ineffective communication and collaboration between team members
3. High Rework due to lack of understanding of requirements and bugs
4. Duplication of efforts due to unstructured coding practices and artifacts reuse
5. Noncompliance to standards resulting in substandard code and product
Although this is not an exhaustive list of all the issues faced by a team developing a non-trivial software, it is a list of most significant issues that affect the profitability of the organization.
How Visual Studio ALM can help
Let us now delve deeper in each of these issues and understand how Microsoft Visual Studio ALM can help us to resolve these issues.
Not using the capable tools for automation of processes
Most of the processes have some activities that need to be executed manually and some activities that can be automated. For example, if testers need to file a bug, they need to provide some general information about the bug, like the title of the bug, iteration and module in which it was found etc. At the same time, testers also need to provide more specific data about the bug; like what were the steps that lead to the bug and environmental information under which that bug was found etc.
This data can be collected by the tools while the test is running and then embedded in the bug so that it becomes useful when the developer fixes that bug.
Monitoring the tasks that are assigned to team members
Usually project managers may use out of band communication media like emails, telephone calls or stand up meetings to get to know the status of tasks that are assigned to various team members. After collecting that data, they enter it in tools like Microsoft Project or Microsoft Excel.
Team Foundation Server (TFS 2010) is an integral hub like component of Microsoft “Microsoft Visual Studio ALM has abundant tools that can automate the activities and improve the productivity of the team.”
Visual Studio ALM that provides editable access to the tasks for all the team members, to the tasks that are assigned to them. They enter the status of the tasks using their regular tools like Visual Studio directly in TFS 2010 and that status is then made available to the project manager. This eliminates the inefficient out of band communication. TFS not only provides this centralized access to tasks, but it also stores, analyzes and reports the data related to tasks. These features of Microsoft Visual Studio ALM improves the productivity of project managers and allows them to focus on activities of planning and control that need more attention and value addition from the project manager. Microsoft Visual Studio ALM has all the required tools to automate project and improve productivity of the team.
Ineffective communication and collaboration between team members
Most of us have had experience of working on projects where team does not communicate well and team members do not collaborate with each other. Fate of such projects is known even before the deadline approaches. These projects are doomed not because the team members are incapable, but because they do not work as a team, they are just collection of persons. Reasons for such lack of communication can be as trivial as not having a good communication media or as complex as having a multi locational team working on a project. Microsoft Team Foundation Server facilitates communication and collaboration between team members regardless of their location. It communicates using standard http / https protocols so that communication across the Internet is possible. It also provides a strong platform like Microsoft SharePoint to collaborate within a team.
Effort wastage in rework due to lack of understanding of customer requirements and bugs
- Many a times great software is created but for wrong requirements”.
Sometimes tools are not capable of automatic tracing from requirements to tasks that implement those requirements and test cases, that ensure the correctness of the implementation. Due to such tools, some requirements may not get implemented at all or other requirements may not be correctly implemented. TFS 2010 provides the service of hierarchical work items that can link the related work items and then automatic traceability is made available. For example, a requirement is linked to tasks and test cases as they are created, so that a requirement can be traced forward and the tasks or test cases can be traced back to specific requirement. Code can be linked at the time of check-in, to tasks, requirements or bugs, so that traceability to and from code is also facilitated. Reports related to this traceability are also made available.
Another cause of reduction in productivity is developer not able to understand the bug that is filed by the tester. As mentioned earlier in (1) Microsoft Test Manager 2010 collects a lot of data that is useful to the developers for doing bug fixing. Data like - Steps to reproduce, test data entered by the tester, system information where the application is running, IntelliTrace data, screen snapshots, video of the screen while the test is running etc. is collected while the test is running. This same data is then attached to the bug when the tester files that bug. It is saved in TFS 2010 when the bug is saved. Such a bug is also called a ‘Rich Bug’ since it is rich with enough information required by the developer to fix that bug.
A developer can open the same bug in Visual Studio 2010 and then have a look at the attached data to get more understanding of the bug. Developer can also start a debugger session with the attached IntelliTrace data and trace through the entire code to find the bug in that code. Time required to understand the bug and then fix it correctly is reduced due to the ‘Rich Bug’ which results in improvement of productivity of the developer directly and the team indirectly.
Non-existence of a structured way for code and artifacts reuse
One of the causes of low productivity is duplication of code and work items. Innovative code created by team members within a team and also outside the team but within the organization, is not well published. This may lead to similar code being recreated by other team member at a cost of time required to create such code. TFS integrates with Microsoft SharePoint, on which it creates a portal for every project that it is managing. Organization can leverage this automation to internally publicize availability of reusable components. Once available in SharePoint, anyone with proper access can search these libraries to find and reuse the same solution and not waste their time and efforts in reinventing the solution. This feature will improve the productivity and also the quality since the published code is well tested and has less chance of having a bug in it.
Mediocre product and code quality due to non-compliance to the standards
Best quality product stands a chance of commanding high price vis-à-vis the cost of production and such a high price does result in higher profits to the organization. Although high quality code is not the only factor that influences quality of the product, it does have a large impact. Maintaining quality of coding as per the policies of the organization results in consistent and better quality products. TFS facilitates compulsory quality checks like static code analysis at the time of code check-in. This ensures that code that is being checked-in, has passed the necessary quality checks. Checked-in code is ensured to be of the quality that
is as per standards set by the organization. It also results in less rework and bugs that are major cause of reduction of productivity. This is done with a feature of the TFS called ‘Check-in Policy’. Check-in policy does not allow the check-in to take place as long as its condition is not met by the code. There are a few built in check-in policies available and custom check-in policies can also be built. Organization can decide the policy that governs the quality checks that are made at the time of check-in of the code. Only necessary check-in policies can be enabled to maintain desirable quality of the code. Maintaining quality as part of standard
workflow improves the quality of the product and without any adverse effect on overall productivity of the team.
Profitability is the most important goal of any business including that of software development. Profitability is adversely affected due to low productivity of the team that is developing software and low prices due to mediocre quality of the product. Productivity and quality are usually low because of not using the best available tools and services. Microsoft Visual Studio Application Lifecycle Management Suite of Products is a set of tools and services that enhances the productivity of the team and ensures high quality of product which directly and indirectly improves the profitability of the organization.