In case of small software Development Company which has
outsourced the development to another company, the role of the first company is
like a customer who is paying for the services provided by the outsourcing
company. The role of Test Driven Development (TDD) is of great advantage in
this scenario.
The client company
(one who outsourced the project) ideally would like to make sure that the
requirements are clearly understood by the outsourcing company. Test driven
development approach involves that the test should be written first before the
actual code is developed. The test serves as documentation for the
functionality the code is going to deliver as the test code will be testing for
some of the features to be provided by the code. The outsourcing team can
discuss the tests with the client to ensure that the tests cover meets the
requirements. The tests are technical in
nature with no fancy English words which gives room for multiple
interpretations, so it is easier for both the parties to come to the same
conclusion and avoid confusions in later stages of development.
Test driven development is usually done following Agile
methodology of short sprint cycles. So the outsourcing team can give the
updates on the progress of the software more frequently. This also reduces the
chances of getting lost away from the requirements which is an important issue
in case of outsourcing. Number of passing tests can serve as a measure for the
progress of the outsourcing team. Also “Pass or Fail” measurements of the tests
provide a clear picture of whether the solution meets the test and hence the
requirement specification, so at any given time the client has an idea of how
many requirements have been met by the outsourcing company. This is a better
indication of progress compared to the traditional approach of tracking the
percentage of the tasks completed.
Requirements keep changing. TDD helps the outsourcing team
to easily accommodate the changing requirements from the client. So the
development is more flexible. The automated tests developed as part of TDD help
the outsourcing team to undergo regression testing and correct the sections of
code that stopped working with the changes in the requirements.
So TDD is beneficial for the client company to effectively
communicate the requirements and to track the progress on the development. For
the outsourcing company TDD is beneficial from the overall software development
perspective.
In case of the Big company the outsourcing is not of the
entire project but of certain modules. The organization is more like
geographically distributed teams working for the same project. In this
situation communication is a big barrier. The language disparity might make the
things worse. The TDD methodology of writing the tests first before the actual
code development help in making sure that the requirements are properly
understood by all geographically distributed team members. The tests act as the requirement
specification document which was the case of small software company too.
The outsourcing company is generally in different time zone
to get the development happening round the clock. So the availability of all the employees
working on the project at the same time is difficult to get this makes the
project management a bit difficult. But the scrum updates in the form of
mails/online scrum tools can be a solution to understanding the progress on the
project.
TDD enables anybody to just run the test cases and find out
what sections of the code are failing. So if a shared version control system is
being used then the coordinator can “get” the tests and run them to find out
the progress and potential problems in the code. The failure cases can be later
discussed over phone or email.
TDD is very helpful at the time of integration. Integrating
the modules that are being developed by the outsourcing team with the other
modules can be easily done with TDD. TDD ensures that at the time of module
completion all the sections of code are well tested and fully functional. So it
is easy to put everything together.
Thus TDD seems to be a good methodology when opting for the
software outsourcing.