Academia.eduAcademia.edu

Collaboration model of software development

2011

Software development is a series of processes activity involving more than one person, especially in medium to large software projects. Each activity of software development is carried out by various combination of different individual. Collaboration occurs in every phase of the process software development. The right team collaboration method is one of the important things in success software development. This research is focused to develop collaboration model of software development to meet time schedule, budget, scope, and software quality. The collaboration model of software development is generated from survey of collaboration method (about face to face and virtual collaboration) and software development methodology especially agile methodology. The direct collaboration was used in the software specification processes, and combination (with a direct and virtual) collaboration was used during software design, implementation, and validation. Team coordination in every process of software development was done with face to face method. The same artifacts were used in this collaboration model with some collaboration software tools. Combination between face to face and virtual communication was used in this model. The model is implemented in small case software development project. During the software development, some measurement is carried out. The measurement included the measurement of project completion time, cost, software specification, and software quality. The software is developed in time schedule (two months), cost under budged, and meet specification. In addition, the software has built a fairly good quality. Thus, this collaboration model good use in software development to achieved accuracy of schedule, cost, scope, and quality.

H7 - 1 2011 International Conference on Electrical Engineering and Informatics 17-19 July 2011, Bandung, Indonesia Collaboration Model of Software Development Tien Fabrianti Kusumasari#1, Iping Supriana#2, Kridanto Surendro#3, Husni Sastramihardja#4 #1 Information System Program Study, STMIK IM Bandung Jl.Jakarta No.79 Bandung, Indonesia 1 tien_kusumasari@yahoo.com # School of Electrical Engineering and Informatics, Bandung Institute of Technology Jl. Ganessa No.10 Bandung, Indonesia 2 iping@informatika.org endro@informatika.org 4 husni@informatika.org 3 Abstract— Software development is a series of processes activity involving more than one person, especially in medium to large software projects. Each activity of software development is carried out by various combination of different individual. Collaboration occurs in every phase of the process software development. The right team collaboration method is one of the important things in success software development. This research is focused to develop collaboration model of software development to meet time schedule, budget, scope, and software quality. The collaboration model of software development is generated from survey of collaboration method (about face to face and virtual collaboration) and software development methodology especially agile methodology. The direct collaboration was used in the software specification processes, and combination (with a direct and virtual) collaboration was used during software design, implementation, and validation. Team coordination in every process of software development was done with face to face method. The same artifacts were used in this collaboration model with some collaboration software tools. Combination between face to face and virtual communication was used in this model. The model is implemented in small case software development project. During the software development, some measurement is carried out. The measurement included the measurement of project completion time, cost, software specification, and software quality. The software is developed in time schedule (two months), cost under budged, and meet specification. In addition, the software has built a fairly good quality. Thus, this collaboration model good use in software development to achieved accuracy of schedule, cost, scope, and quality. Keywords— software development, collaboration, collaboration model, software process, collaboration method. I. INTRODUCTION A software project is a project with high uncertainty, so that software project success is relatively low. [12] notes, software development is a highly complex and unpredictable task since many specialized groups are typically required to collaborate on one project. According to the Standish Group in 2009 [13] , 32% of all software project succeeding which are delivered on time, on budget, with required features and functions. And then 44% of it were challenged which are late, 978-1-4577-0751-3/11/$26.00 ©2011 IEEE over budget, and/or with less than the required features and functions and 24% failed which are cancelled prior to completion or delivered and never used. The top six reason for software project failure were • incomplete requirement, • lack of user involvement, • lack of resources, • unrealistic expectations, • lack of executive support, and • changing requirements and specifications. Note that none of these reasons speak to languages, or development environment, or hardware choices. Five of the six have to do with communications between builders and stakeholders ("Clients" or "Users") [2]. Beside that, software development activity such as analysis, design, testing, and coding may be carried out by different combinations of individuals [4]. Therefore, collaboration and coordination in software development project play an important role in determining the success of a software project. So, this paper will discuss more about collaboration model contribution in software development. Some collaborative model researches in software development have been done, including relation between collaboration model and tool with software result and process development. In this paper will be more discuss about collaboration model and tool collaborative selection to support the model. And the final goal of the model in this paper is gain successful of software project development, to meet time, budget, scop, and product quality. Research conducted by [9] concerning the relationship collaboration model and tool with collaborative problem solving and program development. The study showed a positive relationship between collaborative model with collaborative problem solving and program development. Based on research conducted by [7], there is positive relationship between virtual communication medium with three components of the software project successes (team productivity, interaction quality, and satisfaction process). Research on the relationship between group interaction (face to face interaction and combine method) with group effectiveness conducted by [18] suggest a positive relationship between group interactions (combine face to face and virtual) with the effectiveness of group. This paper is organized as six sections. In the following section will be discus about collaboration concept in agile methodology and the prior works. The third section reviews collaboration model design, and case study in section four. In the fifth section is discus about collaboration model and the result of case study. And the final section is conclusion and the future work. II. THEORY AND RELATED WORK Collaboration is the basis for bringing together the knowledge, experience and skills of multiple team members to contribute to the development of a new product more effectively than individual team members performing their narrow tasks in support of product development [11]. Software development has been described as a collaborative problem-solving activity where success is dependent upon knowledge acquisition, information sharing and integration, and the minimization of communication breakdowns [16]. In a typical software development process, developers perform several different activities: they use numerous tools to develop software artefacts ranging from source code and models to documentation and test scenarios, they use other tools to manage and coordinate their development work, and they spend a lot of time communicating with other members on their team [5]. In this section will be discus about collaboration model in software methodology (agile methodology) and prior research about collaboration method in software development. A. Collaboration in Agile Methodology There so many methodologies is introduced in software development. Indeed, 25 years, a large number of different approach to software development have been introduced, of which only few have survived to used today [17]. Right now, agile methodology is the most popular methodology in software development. The popularity of agile methodology is increase with increasing success of the implementation of this method. The ITEA AGILE project shows that the application of agile software development methods and processes can offer an up to 70% reduction in lead time and costs in a wide range of different industry sectors [16]. Agile methodology emerged due to evolving and changing software requirements changing software requirements [14]. As this approach the requirement is not always feasible there is also a need for flexible, adaptable and agile method, which allow the developers to make late change in the specifications [17]. Agile principle in software first put forward in agile software development manifesto in 2001. The twelve principles of agile manifesto are [1] : • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. • Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. • Business people and developers must work together daily throughout the project. • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. • The most efficient and effective method of conveying information to and within a development team is faceto-face conversation. • Working software is the primary measure of progress. • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. • Continuous attention to technical excellence and good design enhances agility. • Simplicity--the art of maximizing the amount of work not done--is essential. • The best architectures, requirements, and designs emerge from self-organizing teams. • At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. The focal values honoured by the agilists are presented in following [17] : • individual and interaction over processes and tools • working software over comprehensive documentation • customer collaboration over contract negotiation • responding to change over following a plan Effective communication, collaboration, and coordination are the main contributing factors for success in agile methods [6]. Research have been conducted by [6] shows following : • Physical environment and the effective use of tools like whiteboards, status boards, and so forth, played an important role in communication and collaboration. • Separate cubicle areas helped in performing tasks that require considerable focus and attention, whereas halfheight glass barriers between these cubicles made their occupants visible and reachable to each other and also facilitated in communication, coordination, and collaboration. • Close proximity of business experts and separate but adjacent rooms for two different teams working on the same project also helped in inter- and intra-team communication, collaboration, and coordination • Agile method is valuable for small organization. [16] propose the following ‘‘sweet spots’’ the presence of which in software development work enhance the prospect for a successful project outcome : • Two to eight people in one room : communication and community • Onsite usage experts : short and continuous feedback cycles • Short increments : in one to three month, allows quick testing and repairing • Fully automated regression test : unit and functional test stabilize code and allow continuous improvement • Experienced developers : experience speed up the development time from 2 to 10 time compare to slower team members Research conducted by [8] to comparison of three developer team with XP method. These teams rely on two apparently simple mechanisms of co-ordination and collaboration: story cards and the Wall. They use different way of story card and the wall in mature XP team developer. The teams work in different commercial organizations developing different systems, yet we find significant similarities between their used of these two artifacts. B. Collaboration Model There have been various models of team collaboration. The models focusing on various aspects while describing those aspects at different levels of detail. However, for a model of collaboration to be an effective mechanism for understanding the operating cognitive mechanisms underlying collaborative team behaviour the model needs to be defined at a level of granularity, which covers all the major components and mechanisms of team collaboration [15]. [9] said that comprehensive model that took into consideration cognitive issues involved in a group development is missing. Because of that, he developed the collaborative problem solving model for software development. This collaborative model is based on the Dual Common Model that focuses on individual cognitive aspects of problem solving and programming. Experiment conduct by [9], show positive correlation collaborative model and problem solving and program development. Groupware tool had negative correlation with overall problem solving and program development. According [15], collaboration model is defined by the problem area characteristics. The model consists of general inputs (e.g. task description, team roles), collaboration stages that the team goes through during the problem-solving task, the cognitive processes used by the team and final team output(s) (e.g. selected course of action, recommendations, products). The four cognitive processes include: • the meta-cognitive processes, • the information processing tasks, • the knowledge required to support the information tasks, • the communication mechanisms for knowledge building and information processing. Communication is important for collaboration in many ways of team work. Software project success is highly dependent upon knowledge acquisition, information sharing, and integration [7]. These issues suggest that the communication medium utilized to support the software development activity must adequately facilitate uncertainty reduction and, more important, equivocality reduction [7]. Research conducted by [18] indicated that : • Combined group (face to face and virtual communication) reach a higher level of development than virtual group. • There was a positive relationship between the level of group development, the quality of work product, and the degree of satisfactions. • There was a negative relationship between group development level and creativity Experiment about correlation of medium communication (face to face and virtual) and software project success (interaction quality, process satisfaction, and team productivity) conduct by [7]. The results of his experiment indicated : • Face to face medium communication have positive correlation with team productivity • There no significant differences between the face to face and videoconferencing setting for group process satisfaction. III. COLLABORATION MODEL DESIGN Based on previous researches that have been done, collaboration conducted by team collaboration in agile methodology are : • Business people and developers must work together daily throughout the project [1]. • The most efficient and effective method of conveying information to and within a development team is faceto-face conversation [1] • individual and interaction over processes and tools [17] While the factors that determine the success of software projects using agile methodologies are [16]: Direct communication and small community • Onsite usage experts • Short increments • Fully automated regression test • Experienced developers Some researches state that direct communication (face to face) would be more effective in the development team [7],[18], and determination of the collaboration model will have a positive impact in the team development [9]. Therefore, based on communication and collaboration in agile methodology [1],[16], [17] and the results of research about communication and collaboration [7], [9], [18] proposed a model of collaboration in software development. The model is placed in the five generic framework software engineering. According [19], there are generic process framework for software engineering encompasses five activities : communication (with the customer and stakeholders), planning, modelling, construction, and deployment. These five generic framework activities can be used during the development of small, simple program, the creation of large web application, and for engineering of large, computer complex-computer based system. Broadly speaking the model was illustrated in the Fig. 1. Collaboration and communication of software requirements was done by face to face communication and story card. Requirements understanding would be more effective if the analyst has knowledge in the system domain area. Collaboration between developer and customer does not like agile software methodology when one of developers has knowledge in that domain area. Collaboration tool between developer and customer can use the paper contains a form of input, process, and output of the system software will be made. Deployment process is a process involving developer and customers. Collaboration and communication in this process is done by face to face. While collaboration tools are used for coordination and repository. IV. CASE STUDY Fig. 1 Collaboration model of software development Collaboration in the planning process conducted between project leader, analyst, and architect with combine medium face to face and collaboration tools. Collaboration tool used to help documentation of the story cards, knowledge sharing, tool selection, and tasks assignment. The maximum results, if all three actors in the planning process must understand the domain system. Collaboration on modelling was conducted among analyst, project leader, and software architect to design the outline of the software architecture of system and possible changes. Collaboration tools necessary to assist the model design of software system. And the design of structure program is made directly using a programming language used in developing system. Collaboration tools needed to help explain the logic processing system on GUI and program structure. Medium communication used in this process is a face to face and virtual (chat and email). Construction process involves coding, create automated test, and validation. Collaboration in construction process is done by using collaboration tools and software configuration management tool. Collaboration tool is used for coordination knowledge sharing, and repository. Software Configuration management (SCM) tool is used for programming by all programmers (programmers and testers). SCM is a set of activities designed to control change by identifying the work products that are likely to change, establishing relationships among them, defining mechanisms for managing different versions of these work products, controlling the changes imposed, and auditing and reporting on the changes made [19]. SCM tool provides construction services in both system and unit tests. Medium communication that used in the construction process is a combination of face to face and virtual communication. A. Project Software Case Collaboration model of software development model is applied in one case of software project, with a small team and small sized software in 2 months. Software project that was built is a web-based application in the industry processes domain. Development team consists of 6 persons with the following composition: • A project leader concurrently analyst • An architecture concurrently software programmer • Three of the programmers • A technical support In this team, the analyst is to understand the domain industry processes (chemical engineer). Software architect is an experienced software architect and programmer. The programmers consist of two beginners and an experienced programmer. In this case programmers develop software as well as automated unit testing. Technical support served as data entry and technical writer. Software development in object oriented programming paradigm with php language and MySQL Data Base Management System (DBMS). Collaboration in software development project was conducted in accordance with the model that has been determined (Fig. 1) with the selection of collaboration tools such as in Fig. 2 Collaboration tools selected are freeware software tools. For selected wiki collaboration tool is PBwork, SCM tool chosen is mercurial, and user interface design by using mocking bird. While a virtual communication medium by using email and instant messenger (google talk). Fig. 2 Implemented Collaboration Model of Software Development B. Result The result of the implementation of collaborative models in software project case is measured by the accuracy of cost, time, scope of the software, and software quality. This software project with the collaboration model was conducted meet in budget, appropriate time, scope, and software quality. Software quality was measured by complexity with sonar tool. Complexity of the software project case explained in TABLE I. TABLE I SOFTWARE QUALITY Item Software size Comment Complexity Violations Rules compliance Value • 15 936 line of code • 481 files • 115 classes • 1012 methods 24,3% • 2.8 / method • 27.1 / class 797 87.8 % V. DISCUSSION Collaboration model adopts from agile methodology and combined with a few adjustments to the conditions that may occur in environment business. In agile methodologies principles [1] define business people and developers must work together daily throughout the project. Sometime, it is not possible. Therefore, this collaboration model offers a solution. Requirement phase is about understanding requirement and system. By hiring software analyst who understand the domain system, but still understand of software engineering principles. Collaboration of the model is done by combining collaboration between virtual (software tool) and face to face. This is in accordance with the agile methodology that collaboration between developers should be done with the help of tools and direct collaboration [1], [6], [17], [18]. Selection of software tools in the implementation tailored to the software development needed. In this case of software project software tool selection is done by following considerations: • Communication tools: instant messenger (gtalk) and em ail, because at that moment all teams members are available and familiar with this tool. • Mocking bird is a collaboration tool to create Graphical User Interface (GUI) design. This tool is adequate to the needs of user interface design and easy to use by the analyst on the team. • Collaboration tools use in this software project is wiki (PBwork). In software development communities, especially open source and global software development teams, wiki is already widely used for documentation and coordination purpose but not programming purpose [20]. • SCM tool used is mercurial, because mercurial SCM is adequate for software development needed, freeware, windows platform support, and familiar with architect in this team. Selection team members become essential in this collaboration model. Some special analyst may be hired and experienced programmer and architect mandatory presence [16], [18]. In addition, this collaboration model also requires automated testing like expressed by Cookburn [16]. Implementation this collaboration model in small software project mentioned above, provide positive results: on time, schedule, scope, and meet the quality software. Measuring software quality is measured in this case is the complexity, comments, and violations. Based on quality measurement, it is stated that the source code generated has a low complexity, with comments as necessary to explain the source code. Rules compliance of source code is 87.8%. The biggest violation occurred because they use of already available components made by other developers. VI. CONCLUSION AND FUTURE WORK Collaboration in software development occurs in every phase of development process, between customers, developers, and stakeholders. Collaboration suggested in this model is a combination of face to face and collaboration software tools. Selection of software tools depending on the needs of software development and mastery of the tool. Ability and knowledge of developers in domain areas of the system which will be made is one factor determining the success of software projects. The presence of experienced developers is determines project software success. This research can be developed even further by doing a statistical analysis of many sizes of software projects. Then do a more in-depth study and research of the relationship between ways of collaboration, software tool selection, the ability of developers, software development method with success and quality of software projects. ACKNOWLEDGMENT We’d like to thank all of our team members of “web emisi” project for our collaboration to success software project. We’d also like to thank Operator Training Simulator (OTS) team members for their support. REFERENCES [1] [2] [3] [4] [5] (2011) Agile Alliance website. [Online]. Available: http://www.agilealliance.org/the-alliance/the-agile-manifesto/thetwelve-principles-of-agile-software/ B. Boehm. (2002) IEEE Software on Slideshare homepage. [Online]. Available : http://www.slideshare.net/bstaud/six-reasons-for-softwareproject-failure-presentation B. Crawford and C. Le´on de la Barra, “Does eXtreme Programming support Collaborative Creativity?,” in Proc. IMECS Vo.01, 2008. C. Cook, and N. Churcher, “Modeling and measuring collaborative software engineering,” in Proc. ACSC, 2005, Vol.38. p. 267--277. C. Treude and M. A. Storey. (2010) IEEEtran homepage. [Online]. Available: http://csdl.computer.org/dl/trans/ts/5555/01/tts2010990059.pdf [6] [7] [8] [9] [10] [11] [12] [13] D. Mishra and A. Mishra, “Effective communication, collaboration, and coordination in eXtreme Programming: human-centric perspective in a small organization,” Human Factors and Ergonomics in Manufacturing, Vol. 19, pp. 438–456, 2009. H. P. Andres, “A comparison of face-to-face and virtual software development team,” Team Performance Management., vol. 8, pp. 39– 48, Number 1/2. 2002. H. Sharp and H. Robinson, “Collaboration and co-ordination in mature eXtreme Programming teams,” Int. J. Human–Computer Studies, vol. 66(7), pp. 506–518, Oct. 2007. J. D. Tommarello, S. R. Hiltz, C. Perez, F. P. Deek, and J. P . Keen, “Collaborative software development : experimental result,” in Proc. HICSS’03, 2002, p.10. J. Whitehead, “Collaboration in software engineering : a roadmap,” IEEE FOSE’07., pp. 214–255, May. 2007. K. Crow. (2002) Collaboration on DRM Associates. [Online]. Available: http://www.npd-solutions.com/collaboration.html K. S. Na, X. Li, J. T. O. Simson, and K. Y. Kim, “Uncertainty profile and software project performance : A cross-national comparation,” The Journalof system and software ., vol.70, pp. 155-163, 2004. M. Bishop. (2009) irise homepage on irise blog. [Online]. Available : http://www.irise.com/blog/index.php/2009/06/08/2009-standish-groupchaos-report-worst-project-failure-rate-in-a-decade/ [14] [15] [16] [17] [18] [19] [20] M. Omar, S. L. Syed-Abdullah, and A. Yasin, “The impact of agile approach on software engineering teams,” American Journal of Economics and Business Administration 3, pp.12-17, 2011. N. Warner, M. Letsky, and M. Cowen. (2003) [Online]. Available: www.au.af.mil/au/awc/awcgate/navy/model_of_team_collab.doc P. Abrahamsson. (2007) ITEA homepage on Innovation Report. modeling,. [Online]. Available: ww.itea2.org/project/result/download/result/5583 P. Abrahamsson, O. Salo, J. Ronkainen, and J. Warsta. (2002) VTT homepage on Agile software development method (review and analysis). [Online]. Available: http://www.vtt.fi/inf/pdf/publications/2002/P478.pdf R. J. Ocker, “The relationship between interaction, group development, and outcome : a study of virtual communication,” in Proc.IEEE HICSS’01, 2001, p. 10 R. Pressman, Software Engineering (a practitioner’s approach), 7th ed., Singapore: Mc Graw Hill International, 2010. W. P. Xiao, C. Y. Chi, and M. Yang, “On-line collaborative software development via wiki,” in Proc. of International symposium on Wikis WikiSym 07, 2007, p. 177-183.