Tuesday, October 31, 2006

What is VSTS

As one of the Evangelism team of the Visual Studio Team System that works tightly couple with the DPE team of Microsoft Egypt, I feel that there is a self obligation to write about VSTS here. People who have time to read about 6-pages article about this subject are highly recommended to read this article. I will put another summerized one (about 3 pages) and i will call it VSTS in a Glance for people that needs something smaller to read.

Visual Studio Team System Overview

VSTS is a software development team integration and collaboration tool. It consists of 5 clients and one server in addition to the load agent and the usage of MS Excel, MS Project and Internet Explorer as extra clients.

Visual Studio Team System is based on the Visual Studio Professional Edition in addition to more the team integration features. These features help the Project Managers, Infrastructure Architects, Application Architects, Developers, and Testers to perform their tasks by a higher quality in a standardized way.

The following is a block diagram that shows the Visual Studio Team System:




As it is clear above there are Tree clients:

1-The Visual Studio Team Edition: Software Architect:

This edition I directed to the Software Architects. Usually, there are two kinds of Architects. The first type is the Infrastructure Architect. Infrastructure Architect is the one who is responsible of defining the network zones, security, operating systems, firewalls, ..etc. The second type is the Application Architect. This type of architects is responsible of defining the architecture on which the application will be built. This includes; Platform used (web/ windows/ Smart Devices), client server/Three Tiers, N-Tiers, Component architectures (COM+, .NET dlls, XML Web Services), ..etc.

The problem that usually arises here is that each of the two architects works in an isolation of the other. The Application architecture may build his application to work on certain operating system (e.g. Win2003 SP1) while the infrastructure architect is not designing his network for this operating system (Use Win 2000). This may lead to a lot of deployment problems that couldn’t be caught before the deployment time. Problems of this kind may lead to disasters that may result in the whole project failure. The Visual Studio Team Edition for Software architects solve the architectural problems like this by empowering the architect with a graphical designer that make both architects capable of building his architecture graphically and then validate both of them based on the other.


2-The Visual Studio Team Edition for Software Developers

Nowadays, software development tasks get more complicated. In a complicated development environment, developers need to build their application by easy way in order to be concentrating on the complicated business logic. Moreover, they need some tools that help them to test their applications before delivering it to the testing team.

This Edition empowers the developers with the following capabilities:

-Class Designers: for Building class graphically instead of writing it by code.
-Unit Testing: Generate necessary code for automating the test without the need to make the developer lose his time to make by his hand the test each time. Unit tests can get its test data from a database. This kind of tests (Data Driven Tests-DDT) can test a lot of scenarios very fast.
-Code Coverage: Unit tests can insure that the known scenarios have been passed by the written code. But it doesn’t ensure that the scenarios covered the whole code. Code coverage can show the tested code colored. The fully tested code will be shown one color. The partially tested in a second color, while the not tested code is shown in a third color. This feature can eliminate the bugs that arise after deploying the solutions on the customer side. Moreover it can lead to a 100% tested code. This is very hard to achieve by the normal visual studio tools. The following figure depicts how the code coverage result is shown to the developer.


Static Code Analysis: Static code analysis can help team to write better object oriented code. Better standardized code, better code style that obeys to Microsoft design best practices, ..etc. The rules, on which the static code analyzer test the code based on, can be extensible to include more rules than those who are built in.

Performance Analyzer:

Performance Analyzer can help developer to optimize the performance of their application by reporting which functions are called most of the times, which function take long time to get executed,…etc. Performance analyzer is utilizing to mechanism to accomplish its task. The first mechanism is the sampling. Sampling doesn’t consume a lot of time to have but at the same time it scans the whole code to generate its report. To have more detailed reports it is preferable to use the second mechanism which is Instrumentation. The following figure depicts how the one of the reports that are generated by the performance analyzer



3-Visual Studio Team Edition for Software Testers

This Client is directed to the testers. Using this edition of VSTS tester can perform the previously explained Units testing, Code Coverage, Static Code Analysis, and Performance Analyzer. In addition to that, this edition integrates with separate module which is Load agent module that enables the tester to perform what is called load test. Load tests are very important in order to test how my website will behave in front of huge amount of users. This feature is very important for corporations who build web systems that are exposed to customers for public on the web.

4-Microsoft Team Foundation Server

The team foundation server is the server through which all clients can communicate. For project managers it is very important to utilize the Team foundation Server (TFS) capabilities. These capabilities permit many important features for the team this includes:

Source and Version Control

This enables more control over the source code. This control can secure the source code in a centralized secured server, not on the client computers of developers.

Check In Policy

The Project Manager can define polices for all work that will be performed by certain team within certain project. This may include not being able to upload the source code unless passing certain tests. Moreover, it can enforce developers to apply design best practices to their code.

Build Automation

By this feature, the team can have at each night a complete build for the project that yields to a stable version of the system everyday. The build will be accompanied with group of reports that describes the build history of the application.

Team Reporting

The Team Foundation server empowers the project manager with more control on the team by presenting a large set of predefined reports about the project status, remaining work, number of bugs,….etc.

Work Item Monitoring

Each Work Item could be tracked by means of its status. Who has gotten assigned with? Whether is it bug, risk, or regular task?


Team Portal
Once a team has been created on the team foundation server, a new portal is automatically generated to enable different members to communicate together. The Portal contains the required documentation, and the project status reports.

Process implementation

Team foundation Server can help the team to apply the MSF CMMI standard process to be able to get certified as CMMI team fast. It provides them with the documentation.

Extensibility capability

Tam foundation server is open for process modification. If certain team has different process than the MSF process to apply, the team can define the process by simple way.
Moreover, if the project manager needs to see more reports about the performance of the team, It is not a hard task to build his own extra reports.

Microsoft Excel and Microsoft Publisher Support

Excel and Project are the 4th, and 5th clients that could work within the Team System. With their easy to use interface new assignments could be granted for different team members.

Conclusion

Visual Studio Team System (VSTS) can help any software team by the following ways:

1-Empowers the manager with a good control level on what is going on the project. This happen through delivering a rich status reports about the project tasks

2- It helps the team members to increase the quality of their products by applying advanced testing techniques. e.g. Units tests, Web Tests, and Load Test

3- It helps to increases the overall team quality by enforcing process standards that can lead to getting certified as CMMI.

4- It increase the productivity of the overall team by establishing an automated communication channels between them subsequently saving their times to perform their architectural, development, and testing tasks.

5-VSTS is the least product by means of cost and Total Cost of Ownership (TCO) in comparison to other tools of other companies (i.e. IBM Rationale Clear Case Suite).