Software development challenges

Now days regardless of the team size all developers share the same challenges:

Integration problems:
Many of us use third-party tools and integrating with them can be very hard. One of the problems is duplicating/copying information in those systems and learning curve.

Geographically distributed teams:
We need tools that scale for worldwide teams. Communication is hard and also there aren’t some good collaboration tools so it’s very easy introduce errors when requirements or specifications are mapped wrong. Teams like these needs a unified system and a well design process, all things integrated in a single package.

Segmentation of roles:

Loosing important information on in a hierarchy of roles is a common mistake.

Bad reporting:
It’s hard and time consuming to manually get data from different places.Running reports is easy when you have all the data in a single place and you can aggregate as you like.

Lack of process guidance:
Often we have a high level of dependencies right from start: big solutions, a lot of code. Adding to that a huge team, without a tool that defines a strict process things can go wrong.

Testing

Finding, fixing and validating bugs needs to be very straightforward. All things need to be logged so that we won’t loose any piece of information due to a poor communication.

Communication problems
We need to track every piece of information. Messages can be deleted, papers can be lost. Version everything.

Version control strategy with TFS

Suppose you work on a product and you want to release something. As an initial setup you could start with a folder were the source code existing.

At some point in time some of the basic requirements are implemented, the next step is testing your application. Let’s say you have some friends that will help on that. Meanwhile you get new requirements and you don’t what to mess up the existing code base, because you want to release the tested code.

At this point you could create a branch in TFS. 

1. Create Main source folder and convert it to branch

image

 

2. Create a new branch Dev from the Main branch. Right click the Main branch and select Branch under Branching and Merging

image

 

3. Create a new branch from Dev called Release Candidate. Here you will have the code that is tested and will be shipped to the public.

It’s handy to have a visual hint regarding of how the branches are split.  Go to Main and choose View Hierarchy under Branching and Merging .

image

 

This is a simple strategy that will help you build, test and release you application.

Application Lifecycle Management with Visual Studio

In the last 4 years of work in software engineering area,  teams started to grow a lot. On the last project that I work we are almost 30 persons divided in two teams (developers, testers, scrum masters, business analysts, DBA’s… ). I must say the we don’t have a single tool that we use for bugs, test cases, user stories, tasks. Don’t imagine that we have one tool for each, we use two (HP – QC and TFS).

My new point of interest, is now what is called, ALM. For me ALM is a way to offer information’s needed by EVERYONE from the team. Visual Studio 2010 Stadium Diagram_thumb

Think of that as follow: let’s say you test an application, you got an error, based on that error you log a bug and that bug is assign to a developer.
It’s simple but, with TFS and Visual Studio I can do that in a single place.

Microsoft TFS and Visual Studio offers a unified set of tools that servers all the development needs. As you can see in the picture Visual Studio is a star, has the main role in the ALM side by side with SharePoint, Microsoft Excel, Microsoft Project and Test Lab Management.

What TFS offers:

  • Work item tracking (bugs, test cases, tasks, user stories)
  • Version control
  • Test case management
  • Reports
  • Build management
  • Lab management

Based on organizations processes can be created templates that fit best those processes. By default there are included MSF Agile template and MSF CMMI Process.

(more to come …)