Tuesday, November 20, 2012

Managing Complexity in Collaborative Software Development: On the Limits of Modularity

Marcelo Cataldo, Matthew Bass, James D. Herbsleb, and Len Bass. Managing complexity in
collaborative software development: On the limits of modularity. InCSCW’06, Banff, Alberta,
Canada., November 2006. ACM.


View the paper here.
View the presentation here.

Abstract:-

    This paper is about the common mistakes which occur in a distributed development. The paper has listed about the poor practices which are followed by industries following distributed development and what serious consequences they pay up because of these types of negligence. The paper aims at making us understand that identification and management of dynamic dependencies between components of software systems is a constant challenge for software development organizations through 4 case studies. We have to appreciate the above statement by means of case studies which author speaks about. The problems occurring in a distributed development can range from simple syntactic differences to complex semantic dependencies. To overcome all these problems, the author suggests the necessity of communication and coordination.


Discussions:-

    The paper starts with the Conway’s law which states that organizations which design systems in distributed manner often produce designs which are copies of the communication structures of these organizations. Conway’s law which was proposed in 1968 doesn’t hold true today because at that time, communication tools was not as prevalent like as they are today. So, if proper communication and coordination is ensured between different teams spread across the world, a single product can be built with less cost, more intellect, less time and better quality. Baldwin’s and Clark’s work suggests that for this improvement to achieve, there has to very good modularization of work by architects so that teams can work independently and parallelly with as little communication and coordination possible between different teams.

    The author explains the first case study in which some design specification was changed by one team. They changed the syntactic formation of the code given by the central team. But the team did not document that changes were made, nor did they mention about the changes done by them in forums or video conferences etc. The team did not even mention about the change being done to the other teams which were likely going to use their piece of code. Finally, when another team used it, there was a serious problem in understanding the resolving needed. This shows the importance of documentation and communication in global software development

    In the second case study, a team changed the semantics of the interface of code which was going to be used heavily later on by many teams. The team made the changes in code without the proper acknowledgement from central team. As a result, there was a big spiraling effect on all the development centers to make changes in their code to suit according to the required interface. This shows again the importance of teams following the proper orders by central teams and not creating their own rules.
    
    In the third case study, the modularization of a project work was not done properly. The code which was having inter dependencies on each other was split across different teams. As a result, continuous communication and coordination was needed between the two teams which did not take place for long. This shows the importance of architect roles in properly modularizing the work and then dividing it into different teams.
    
    In the final case study, it shows the importance of contact person of the group. In a country where international language is not spoken and if the contact person who is the lone link between the two sides of the world, falls sick, it can have catastrophic effects on the development. That is what happened in the final case study.

    Communication and coordination is very important in teams which are performing distributed development. But yet, it is necessary that modularization of the work is done in such a way that communication and coordination happening among the teams is as little as possible so that work can take independent of each other. Also, maintaining proper documentation is extremely important in case of distributed development.

No comments:

Post a Comment