Monday, November 5, 2012

Systematic Task Allocation Evaluation in Distributed Software Development


You can download the original paper from : Systematic Task Allocation Evaluation in Distributed Software Development
You can download the presentation from : Systematic Task Allocation Evaluation in Distributed Software Development

   In the present world, Global Software Development(GSD) has become a very common method of developing a software. Many organizations have in fact established atleast one of their sites in some of the countries like India, China etc. where they can find cheap labor. And hence many major challenges like communication, cultural differences, time shift etc have become inevitable. The task allocation in such cases can become extremely difficult considering all the problems. Here I would like to talk about some of the methods discussed by Jürgen Münch1 and Ansgar Lamersdorf2 in one of their publications where they talked about an approach to allocate tasks in a Distributed Software development. We must follow a systematic approach to evaluate the tasks before allocating them. Particularly, the factors influencing a decision and their relative weight have to be determined individually for every project. Here is a possible way to do it. First we will understand the goals of the problem in hand.
Goal 1: Identify the project-specific influencing factors for a task allocation decision and their impact.
Goal 2: Evaluate the possible task allocation alternatives according to the project specific influencing factors. Here is the short version of the steps discussed in the paper.

Process Steps:
  1. Define Viewpoint: At first, the viewpoint of the decision (i.e., the decision maker) must be identified. This is the person responsible for the decision and the one who has the relevant information about the context
of the allocation decision.

  2. Define Context: The context of the project comprises the characterization of the available sites (and their relations such as time-zone distances), the distribution of work to different tasks, and constraints on the task allocation decision (i.e., already assigned tasks). It thus defines the input for the task allocation decision.

  3. Define Focus: The focus of the evaluation is on the project goals. Now, these goals have to be specified further: Which criteria define project success (e.g., cost, quality)? The different possible assignments will later be evaluated with respect to these criteria. If possible, the measures should be quantifiable. If different measures are named, a strategy for weighting them against each other should also be defined (e.g., if assignment A results in higher cost and higher quality compared to assignment B, which is rated as being suited better with respect to the goals and the given context?).

  4. Define Variation Factors: Variation factors are all those factors that have an allocation-dependent influence on the evaluation criteria. For example, if developer experience differed between sites, then assigning more work to the experienced sites would probably decrease effort. Given that effort is an evaluation criterion, developer experience would therefore be a variation factor (because its impact on effort would be dependent on the question of which tasks are assigned to the experienced or inexperienced sites). We categorize variation factors into (a) characteristics of sites (e.g., cost rate, experience), (b) dependencies between sites (e.g., time-zone differences), (c) characteristics of tasks (e.g., size), (d) dependencies between tasks (e.g., coupling), and (e) task-site dependencies (e.g., the knowledge for performing task X existing at site Y).

  5. Define Baseline: The goal of this process step is to derive a baseline for the success measures. Depending on the overall goal (i.e., establishing distributed development vs. modifying a distributed task assignment) and available knowledge, the baseline can reflect collocated development (all work would be assigned to one site) or an already established assignment (work would be assigned as in previous projects). The baseline may, for instance, be determined by expert estimations, historical project data, or using standard prediction models.

  6. Define Impact of Variation Factors: In this process step, the impact of every variation factor (defined in step 4) on every criterion in the focus (defined in step 3) is evaluated. This can be done with the help of expert estimations or by analyzing past projects. For example, if effort is in the evaluation focus and time-zone difference was defined as a variation factor, the step should answer the question “How does a certain time-zone difference between two sites affect the effort overhead for tasks assigned to these sites?” If possible, this should be done quantitatively.

  7. Assess Variation Factors: For all tasks and sites identified in step 2, the values of the variation factors are now assessed for the project at hand.

  8. Evaluate Assignment Alternative: Finally, every possible assignment can now be evaluated using the results of the previous steps. Depending on whether quality focus and impact of variation factors were described quantitatively or not, the evaluation can now provide predictions or guidelines and hints for every assignment that is of interest.


Of course these steps only say that if you follow them, there is a higher rate of success. You can never decide or measure how much knowledge a person has and classify them as good or bad. Thus, the quantification of the factors are very difficult to determine..

No comments:

Post a Comment