Lecture Notes in Computer Science: Collaborative Software André Tiago Magalhães do Carmo 1, César Barbosa Duarte 1, Paulo Alexandre Neves Alves de Sousa 1 and Ricardo Filipe Teixeira Gonçalves 1. 1 Departamento de Engenharia Informática, Faculdade de Engenharia da Universidade do Porto, Rua Dr. Roberto Frias, s/n 4200-465 Porto PORTUGAL {ei06118, ei06089, ei06047, ei06048}@fe.up.pt Abstract. This Lecture Note talks about Collaborative Software and how it can be important to help teamwork. Firstly, the concept Collaboration is explained. Then, a model based on communication, cooperation and coordination is presented. Next, some examples of teamwork based on that model are shown, and finally some problems about groupware are given. It is referred also how collaborative software helped in this Lecture Note in Computer Science development. Keywords: Collaboration, communication, coordination, cooperation, conferencing, software, groupware, software engineering. 1. Introduction This Lecture Note in Computer Science was preformed under Software Engineering course of Mestrado Integrado em Engenharia Informática e Computação at Faculdade de Engenharia da Universidade do Porto. Several affairs could be chosen, but Collaborative Software was thought to be the best one. In order to explain the concept of Software Collaboration we need to look into the past. When the first steps in computing were being taken, the code-and-fix model emerged. The code-and-fix strategy consisted in two steps[1]: write code; fix code to eliminate errors, enhance existing functionality, or add new feature Through time, computers became cheaper and more common. More and more people started using them to solver larger and larger problems, still using and evolving the original programming model. [1] When the complexity of the problems to be solved got bigger, the code-andfix approach was inadequate, leading to the so-called 'Software Crisis'. The lack of
structure and methods in this model caused low quality software, as well as projects busting their budget and deadline. This leads to the subject of this article. Some steps were necessary to overcome this crisis, and Collaborative Software was the answer. Lets start by comparing individual and team development. Unfortunately, advances in software development techniques have been thwarted by exponential increases in software complexity and size. The challenge, then, lies with bridging this gap and devising techniques to successfully handle this ever-increasing complexity. The motivation behind this research is to make an advance toward the end of the Software Crisis to help the software industry more reliably produce high quality software. [1] 1.1. Individual versus Team development To overcome the 'Software Crisis' several measures took place, according to the growing complexity of the problems to be solved. One of most popular team development methodologies is Pair Programming. It consists in 2-man approach, where one is the designated driver, writing the code itself or designing the architecture, and the other one is review his at the same time, correcting bugs and improving the quality of the code. This method is highly efficient, since the code is never compromised as there are, at all times, two pair of eyes reading the same code and optimizing it, as it was reffered in [1]. This eliminates almost all of the problems individual development creates, since sometimes small bugs may remain unnoticed to one person, but in this particular case, Pair Programming, another person is reading the code and can easily spot that error. This is where collaboration takes place. [1] 2. Collaboration Working together, the results achieved in a given task can be substantially improved [2]. Each element of the team exposes his ideas with consistence argumentation. Also important is to criticize other ideas so that the inconsistencies of each argument can be identified. This constant discussion increases the consistence of those ideas, leading to a final product much more solid. The fact that there is a working group increases the possibility of achieving more viable alternatives than the existing ones [3][4]. Despite it has many advantages, collaboration requires an additional effort to coordinate the team s members. These efforts are necessary so that all the ideas discussed can be useful to the team. If there is no appropriate coordination, a good idea could be discarded. It is necessary to avoid conflicts between team members, too. This and other actions are necessary so that the cooperation phase works as well as planed in the communication phase [5]. The 3C Model is a popular method to support the collaborative work and many authors refer it. This model is about communication, cooperation and coordination. All these three different types of collaboration are linked to each other.
It is necessary to communicate in order to cooperate, and the coordination is necessary to ensure that the work is going to match the goal defined before. None of these concepts can be separated, because they don t make any sense without the others [5][6]. Picture 1 3C Collaboration Model This diagram is based on [6]. Although these concepts are separated, they are liked between themselves [5]. Then it will be shown how the 3C s are dependents in the 3C Model. 2.1. Communication Communication is, perhaps, one of the most important aspects about Collaborative Programming, because it opens new doors and allows the collaboration between people. During communication phase, team members give ideas and discuss them. All of the ideas must be discussed and decisions must be taken. Members of the team need to communicate in order to realize how to complete their tasks. This communication can be synchronous, like a live chat, or asynchronous, like email, in order to give time to think about those ideas. [7] emphasized the importance of individual knowledge and cooperative practices, as the language of the hands in communicating face-to-face, that people develop in order to coordinate a variety of personal knowledge and achieve mutual understanding. The cultural context and knowledge influence how the individual
expressions of language are produced by the communicator and interpreted by the receiver. Inside a group of people working to fulfill one goal, communication it s a very important tool, because it will allow a better understanding and a better interaction between every single member of that group. There are some tools that support communication: email, forum s, CSCA tools (Computer Supported Collaborative Argumentation), voting tools, instant messengers, chats and many other. All these tools suport communications. [8]. 2.2. Coordination Communication generates actions [9], and these actions need coordination. Coordination must organize the team in order to make sure all tasks are done in the correct order. Moreover, it is important to ensure that there is no repeated work or lost ideas [6]. Like [10] said, coordination is about organizing tasks, accompanying them to make sure the right way is being followed. It is necessary to choose team members, maybe organize them in small groups, and identify objectives. The most difficult task of the coordination phase is to understand which objectives are important to the team and to the project, and the best way to complete those objectives. That s why coordination is very important, and it must track the project until the end. It starts before the development, continues during the process because new ideas and facts are always appearing, and continues until the end of all project. And, in big and complex projects, coordination can be more complex than the development itself. [10]. Picture 2 Coordination and its relation with other concepts based on [6]
Communication originates collaboration tasks, and it is very useful and important to guarantee tasks are completed. Depending on the software, it may have complex coordination methods, or just even social coordination. 2.3. Cooperation / Conferencing To cooperate is the act of working with other members towards a defined goal. Talking about collaborative software, they discuss and build a product in an ambient shared between themselves. That ambient can save previous versions of a software or even a document. It can record, too, the entire change log. According to [11], referred by [5], these records increase the confidence and makes sure that all the team members are in the right direction to an objective. Another way to make sure the goals are followed is in a more informal way. And there is a point where other concepts of the 3C Model are linked. Communication and discussion between all the members are necessary to take decisions during the cooperation phase, and coordination is also need. New ideas can be given (communication) during the cooperation phase. The entire project must be rethought, and there is a real need of coordination. New decisions can be taken, and this is a cycle that joins all these three concepts. That s why communication and coordination are not sufficient. It is necessary an ambient in which team members can discuss, organize their ideas, and build their product. So, a Conferencing tool is an interactive way to cooperate and discuss decisions to be taken. It gives facilities to discuss decisions taken by coordination [6]. Picture 3 Cooperation and its relation with other concepts based on [6]
An example of a conferencing tool is internet forums, like Moodle forums. Most of times, all these tools support the 3 concepts of the 3C Model, but in different situations. Teacher s advices, forum boards where messages are saved are a good example of conferencing tools. Other good example is a videoconference system, which provides audio and video in order to make it easier to team members to communicate and take decisions [12]. 3. Collaboration tools Local and wide networks experienced a great development over the last years. Work ambient benefited greatly with it, and computers are very important to any work. Collaborative software has experienced that improvement too. As it was said before, it allows team members to work in a different way. In order to make it possible to collaborate, collaborative systems incorporate Computer-Supported Cooperative Work (CSCW) [13]. There are several examples of collaborative software and they are normally divided into three different categories according to their according to their usage, communication tools, conferencing tools and management tools. Electronic communication tools are used to allow the communication between members of a group. Examples of this type of tools are Wikis, emails, voice mails, faxes, and others. Conferencing tools emphasize the exchange of information between members Examples include forums, instant messaging, online chat rooms and telephones. Collaborative Management tools are used to coordinate and manage the group activities. In this case we can highlight some tools like electronic calendars and online spreadsheets. These software s have great advantages. Most of them record previous versions of the project, allow the coordination to introduce guidelines which are useful to team members, allow all group to discuss and take decisions. Therefore, there are other software s which are more complex. Surely, there are projects more complex than others. Like it was said before, huge projects may require a great coordination and great communication tools. 3.1. Google Docs: an example of writing tools Collaborative writing tools are those technologies that facilitate the editing and reviewing of a text document by multiple individuals either in real-time or asynchronously. These can vary a great deal and can range from the simplicity of wiki system to more advanced systems. Basic features include the typical formatting and editing facilities of a standard word processor with the addition of live chat, live markup and annotation, co-editing, version tracking, RSS, number of max users, and more [14]. The fundamental concept behind collaborative-editing tools for documents is allowing people distant in space (and even in time), to cooperate in the
construction of a document. It is thus an extremely useful tool in the academic route (in the preparation of reports and scientific articles) and for a professional level (in the management of a company) [15]. Google has recently entered this field with its Google Docs, a fully-web based collaborative writing tool [14]. It is like an Office Suit, but it is accessible from the Internet. Users don t need to install any additional software. Only a browser and an Internet connecting are required. Some advantages are the fact that it s free, it supports Microsoft Office and Open Office formats, records changes made by other members and much more. The main disadvantage is that is possible to have conflicts between versions. [15] 3.2. Chat rooms Chat rooms are another example of collaborative software. It may be inserted in a collaborative ambient or not. For example, an online community can use chats only to talk to each other, with no objective. Although they are not interested in collaborate, in terms of what has been presented, they are actually collaborating. A chat rooms has all 3 concepts referred as part of the 3C Model. It gives users a way to send their messages (communicate), it needs coordination by room s administrators, and it has conferencing / cooperation facilities. Picture 4 Chat room
In the left side, there are group members. The first is the actual leader, and he has facilities to coordinate, like to choose if a member is allowed and more. Then, there are facilities for members to participate in the conversation, and to cooperate. Messages are shown and recorded making it possible to collaborate, even if that collaboration is not intentional. 3.3. Wiki Wikis are a good example of successful collaboration tools. It allows a community or a teamwork to collaborate. It is essentially a collection of Web pages that allows users to add content via a browser interface. Every team member can change wiki s content. In a software development team, a wiki can be very useful. Related to software development, a wiki can be used to give code examples or documentation (about an API, for example), collecting ideas, discuss them, bug tracking. It is possible to save older versions of documentation in order to make it possible to undo changes made. Change logs are also recorded. [16] Wiki s give also facilities to coordination. All the cooperation and communication is important, but in a project team needs coordination. Although all members can edit documents and pages, there must be someone to coordinate. All the ideas discussed by the team must be organized and wiki s make it possible. With appropriate coordination, communication and cooperation, and because it is an ongoing work to which anybody in the team can contribute, ideas and documentation tend to be more comprehensive and balanced as they have been corrected many times by the team. Older versions and change log are recorded and because of that ideas can become more and more consistence. And that is the main advantage of version and change log records. It is possible to study how ideas evolved, making new ideas more consistent. [16] 3.4. Moodle Moodle is another collaborative tool. It is normally used in an academic environment, but it can be also used in software development or other types of projects. It extends constructivism into social settings, wherein groups construct knowledge. There are a number of tools that make it easier to collaborate, including blogs, messaging, participant lists, as well useful tools like grading, reports, integration with other systems, forum s, voting and so on. It supports also coordination [17] [18] [19].
4. Problems in using collaboration tools The biggest problem in implementing groupware is convincing people to use it. A big effort is required to make people comfortable using it, and that means that people must trust on that software. Not all people trust in new technologies, mainly on computers. And, trusting in collaborative software is even more difficult. If people don't feel comfortable with the software, they won't use it. Employees should be given incentives to contribute: the rewards could be either financial or psychological. Companies should give their employees courses in which they can learn how to use it. That s the only way they can trust on that software. But not even employees need to adapt themselves. Superiors must trust and change their minds too. [19] Another problem is actually a lack of coordination, or even cooperation. Like it was said by many authors, and referred before, coordination is necessary to make sure the right way is being followed. And a real cooperation must happen. Without cooperation tools and good facilities to members to collaborate not all ideas are discussed. 5. Conclusion In the elaboration of this article an effort was made to use collaborative software. Software s like Microsoft Messenger, Google Docs and IRC were used so it is possible to make a better evaluation. Microsoft Messenger and IRC are a good example of collaboration. It was possible to discuss and share ideas when all the team members weren t face-to-face. Team group reflected on those ideas and toke decisions. A real coordination was necessary in order to make sure all members were in a correct way and not working in unnecessary things. Email, as an asynchronous collaboration tools, was important too. When team members were offline it was an excellent way to communicate, giving members time to think about the ideas that were given. Finally, Google Docs was used to cooperate. It was realized that change logs were quite important to control and coordinate how all process was going on. As expected, the productivity of the work improved a lot, although it was the first time the group used such methodologies. It is possible to assume that collaboration is a way to success. It makes easier to discuss ideas, and improves chances of appearance of new ones. In addition, Collaboration tools allow all these aspects, and make it possible to collaborate in a non face-to-face way, giving team members a chance to work comfortably in anyplace, and some times when they want. Collaboration greatly increases team success.
References 1. Williams, L. A.. The Collaborative Software Process. The University of Utah. 2. Fuks et al., 2002. 3. Turoff and Hiltz. 1982. 4. Silva, L. A. M.. O uso de ferramentas colaborativas e seu apoio ao processo de software. 5. Fuks, H.; Raposo, A. B.; Gerosa, M. A.. Engenharia de Goupware: Desenvolvimento de Aplicações Colaborativas..6. Fuks, H.; Raposo, A. B.; Gerosa, M. A.. 2003. Do Modelo de Colaboração à Engenharia de Groupware. 7. Delvin and Rosenberg. 1996. 8. Long and Baecker. 1997. 9. Winograd and Flores. 1987. 10. Tavares, A. P. B.; Amaral, A. B. do; Ferreira, A. F.; Zemolin, E.; Grasselli, M. A.; Hasselmann, M. V. N.; Gralha S. R.. Coordenação no Desenvolvimento de Software. 11. Daft and Lengel, 1986. 12. Lima, C. V.. 2007. Controlador de Conferências para Sistemas Colaborativos. 13. Silva, A. M. S.. O uso de ferramentas colaborativas e seu apoio ao processo de software. 14. Collaborative Writing Tools And Technology: A Mini-Guide, http://www.kolabora.com/news/2007/03/01/collaborative_writing_tools_and_tech nology.htm 15. Silva, R.; Costa, F.; Barbosa, N.; Guimarães, D.; Oliveira, H.; Silva, P.. 2008. Edição Colaborativa de Documentação. Faculdade de Engenharia da Universidade do Porto. 16. Schaffert, S.; Gruber, A.; Westenthaler, R.. A Semantic Wiki for Collaborative Knowledge Formation. Knowledge-based Information Systems Group, Salzburg Research. Austria. 17. Moodle, http://moodle.org 18. MoodleDocs, http://docs.moodle.org 19. Wikipedia, http://en.wikipedia.org/wiki/collaborative_software