Monday, November 5, 2012

Architecture as a coordination tool in Multi-Site Software Development

  Software  architecture and Architect play a crucial role  in  development  of  software  in  a  Global  software  development.  In  a  multi-site development  environment,  it  is  not  enough  to  coordinate  development  activities  to achieve  a  common  goal.  Rather,  more  emphasis  should  be  put  on  coordinating interdependencies  between  activities.  Shifting  the  interest  from  activities  (and subsystems)  toward  system-level  dependencies  requires  software  architects  and developers  to  have  a  common  understanding  of  the  software  architecture.  Coordination challenges in multi-site environment with geographically dispersed teams. It is claim that architecture could be used to coordinate distributed development. 

  To get first hand information about coordination issues based on the architecture,  in-depth analysis was performed on the software development project of an international information  and  communications  technology  (ICT)  company.  It  was  mainly  focused  in two  folds:  first,  coordination  problem  and  the  types  of  processes;  Second,  difference between  same-site  and  multi-site  development  environment.  The  goal  of  the  studied project  was  to  develop  a  directory  service  platform  for  the  global  telecommunications market. To gain easier management, the project was partitioned into two subprojects on 
the  basis  of  architecture  and  technology  (client  and  server  module).  The  development work  in  these  two  subprojects  was  carried  out  in  different  ways,  which  gave  us  a possibility to make comparisons between these two subprojects. Using the grounded-theory  approach  (Discovery  of  theory  through  the  analysis  of  data)  was  used  to investigate the importance of software architecture in multi-site coordination.  

  During  the  analysis,  six  different  coordination  processes  to  explain  most  of  the coordination problems in the case study were found out. These categories were:  
  • Managing interface between system components,  i.e.  how  the  functionalities  of one component affect the functionality of the other components. 
  • Managing  the  assembly  order  of  system  components,  i.e.  how  the  components can be integrated to each other into a working system. 
  •  Managing  interdependence  of  the  system  components,  i.e.  how  the  system components are dependent on each other. 
  •  Communication, i.e. how the communication between development participants is taking place. 
  •  Overall  responsibility,  i.e.  how  the  responsibility  of  decisions  related  to  the software architecture is taking place. 
  •  Orientation,  i.e.  how  the  orientation  of  development  participants  affects  the interpretation of the architecture in a shared situation. 

  The  results  of  the  comparison  between  same-site  and  multi-site  development problems were noted. The main difference between the two subprojects seemed to be in the informal communication and orientation. Client subproject had problems in informal communication  mainly  because  the  subproject  architect  and  designers  had  cultural differences  and  they  could  not  communicate  with  each  other.  The  physical  distance between subproject participants resulted in poor informal communication. The situation in  the  Server  subproject  was  better:  they  were  in  the  same  site,  and  in  this  way, 
informal  communication  was  easier.  The  architecture  description  was  poor  in  both subprojects, but the Server subproject participants did not see this as a major problem because they could talk with the architect everyday. The difference between architects’ orientation  in  these  two  subprojects  affected,  mostly,  the  content  of  the  architecture description.  In  the  Client  subproject, the architect’s orientation was business  oriented containing  analysis  of  different  business  cases  and  in  the  Server  subproject,  it  was  a 
technical  one  containing  technical  terms.  Both  of  the  architecture  descriptions  were partial, one from a purely business point of view and the other from  a purely technical point of view. 
  
  The role of software architecture in the coordination of multi-site software development through a case study. Objective was to better understand the coordination  in  multi-site  environment,  characterized  by  geographical,  cultural  and language distances between development participants.  Architecture was intended to be the  tool  for  coordination  in  the  project.  The  architecture  description  was  supposed  to contain the rules of how the components of the system exchange information with each other.  The  observed  problems  in  coordination  (lack  of  overall  responsibility, communication  and  orientation)  in  architecture  design  resulted  in  poor  or  missing architecture  description  and  different  interpretations  of  the  architecture  by  the  project members. These problems caused actual system coordination problems in later phases. 


  There  were  problems  with  managing  the  interfaces  between  system  components,  their assembly  order  and  interdependencies  between  them.  These  problems  manifested themselves in the difficulties of the realization of the final system as well as delays in the timetable.  

  In multi-site environment, it is not enough to coordinate activities, but in order to achieve  a  common  goal,  it  is  important  to  coordinate  interdependencies  between  the activities.  This  kind  of  coordination  needs  a  common  understanding  of  the  software architecture  between  software  development  participants.  Participants coordinate their development work through interfaces of their components. Each component can be developed separately, and thus, it is not necessary to take into account development of other components or distance, cultural and language differences between  sites.  The  important  issues  that  matter  in  are  the  appropriate  architecture description and well defined interfaces between components. Furthermore, these need to be  communicated,  both  informally  and  through  formal  descriptions,  to  all  parties involved. 

No comments:

Post a Comment