Web 2.0 technologies such as wikis, blogs, tags and feeds have been adopted and adapted by software engineers. A week before our second workshop on Web 2.0 for Software Engineering (Web2SE), I’ve conducted a (non-systematic) literature review to find out what we already know about the use of Web 2.0 by software developers. In this first of two blog posts, I’ll focus on wikis, blogs and micro-blogs.
One of the first articles describing the advantages and disadvantages of wikis in software development was authored by Panagiotis Louridas for IEEE Software in 2006 [»]. He explains that wikis offer flexibility that relieves project managers from having to get everything perfect from the beginning. Wikis are easy to change, but due to their flexibility, they require tolerance and openness in the organization that they are implemented in.
So far, the use of wikis by software developers has been studied in four main areas: documentation, requirements engineering, collaboration, and knowledge sharing.
Wikis cater to many of the patterns for consistent software documentation presented by Filipe Correia and colleagues [»]: information proximity, co-evolution, domain-structured information and integrated environments. One major advantage of using wikis for documentation is the possibility to combine different kinds of content into a single document. For example, Ademar Aguiar and colleagues introduce XSDoc wiki [»] to enable the combination of different kinds of software artifacts in a wiki structure. However, in a recent paper, Barthélémy Dagenais and Martin Robillard found that open source developers who originally selected a public wiki to host their documentation eventually moved to a more controlled infrastructure because of maintenance costs and decrease of authoritativeness [»].
The flexibility of wikis is well-suited for a process with as much uncertainty as requirements engineering [»]. Steffen Lohmann and colleagues present a wiki-based platform that implements several community-oriented features aimed at engaging a larger group of stakeholders in collecting, discussing, developing, and structuring software requirements [»]. David Ferreira and Alberto Rodrigues da Silva also present an approach for enhancing requirements engineering through wikis. Their approach focuses on the integration of a wiki into other software development tools [»]. Semantic wikis that enhance traditional wikis with ontologies offer the opportunity to further process wiki content. For example, Peng Liang and colleagues present an approach for requirements reasoning using semantic wikis [»].
Khalid Rames Al-asmari and Liguo Yu report on early experiences that show how wikis can support various collaboration tasks. They describe that wikis are easy to use, reliable, and inexpensive compared to other communication methods [»]. Several wiki-based tools aimed at supporting collaboration in software development have been proposed. Ken Bauer and colleagues present WikiDev 2.0, a wiki implementation that integrates information about various artifacts, clusters them, and presents views that cross tool boundaries. Annoki, a tool from the same research group presented by Brendan Tansey and Eleni Stroulia at Web2SE 2010 [»], supports collaboration by improving the organization, access, creation and display of content stored on the wiki. Galaxy Wiki presented by WenPeng Xiao and colleagues takes the integration of wikis into software development processes a step further [»]: Developers write source code in the form of a wiki page and are able to compile, execute and debug programs in wiki pages. Wikigramming by Takashi Hattori follows a similar approach [»]: Each Wiki page contains a Scheme function which is executed on a server. Users can edit any function at any time, and see the results of their changes right away. Wikigramming will be presented at Web2SE 2011.
Closely related to the use of wikis for collaboration is their use for knowledge sharing. Ammy Phuwanartnurak and David Hendry report preliminary findings on information sharing that they discovered through the analysis of wiki logs [»]. They found that many wiki pages were co-authored, and that wiki participation differs by role. Viktor Clerc and colleagues found that wikis are particularly good for managing and sharing architectural knowledge [»]. Another paper by Jörg Rech and colleagues describes that the knowledge sharing enabled by wikis allows for increased reuse of software artifacts of different kinds [»]. Filipe Correia and colleagues propose Weaki, a weakly-typed wiki prototype designed to support incremental formalization of structured knowledge in software development [»]. Semantic wikis also play a role in knowledge sharing: Björn Decker and colleagues propose support for structuring the knowledge on wikis in form of semantic wikis [»]. A more recent paper by Walid Maalej and colleagues provides a survey of the state-of-the-art of semantic wikis [»]. They conclude that semantic wikis provide lightweight, incremental and machine-readable software knowledge articulation and sharing facilities.
Further applications of wikis in software engineering include traceability and rationale management as described by Michael Geisser and colleagues [»], and the role of wiki-based editing functionalities on Q&A websites as we describe in our recent ICSE NIER paper [»].
The role of blogs in software development is not as well understood as the role of wikis. The most comprehensive study of the use of blogs by software developers to date was conducted by Dennis Pagano and Walid Maalej and will be published at MSR this year [»]. The authors found that the most popular topics that developers blog about are high-level concepts such as functional requirements and domain concepts and that developers are more likely to blog after corrective engineering and management activities than after forward engineering and re-engineering. An earlier study from the same research group by Walid Maaley and Hans‐Jörg Happel looks at how software developers describe their work [»]. They found that blogs and other media are a step towards diaries for software developers.
The theme of requirements engineering through blogs was also addressed by Shelly Park and Frank Maurer [»]. They discuss strategies for gathering requirements information through blogs. However, as observed by Norbert Seyff and colleagues, end-user involvement in software development is an ambivalent topic [»]. They present a mobile requirements elicitation tool that enables end-users to blog their requirements in situ without facilitation by analysts.
In a recent study that I conducted with Chris Parnin for Web2SE 2011, we found that blogs also play a role in documentation [»]. By analyzing the Google results for API calls of the jQuery API, we found that 87.9% of the API methods were covered by blogs, mainly featuring tutorials and personal experiences about those API methods.
The use of microblogging services such as twitter was first studied by Sue Black and colleagues for Web2SE 2010 [»]. Most respondents in their survey reported using several social media tools, and twitter as well as instant messaging were among the most popular tools. A more detailed study on the use of twitter by software developers was authored by Gargi Bougie and colleagues and will be published at Web2SE 2011 [»]. They found that software developers use twitter’s capabilities for conversation and information sharing extensively and that the use of twitter by software developers notably differs between users from different projects.
Several researchers have started to integrate microblogging services into development environments. Wolfgang Reinhardt presents an Eclipse-based prototype for integrating twitter and other microblogging services into the IDE [»]. Adinda, a browser-based IDE introduced by Arie van Deursen and colleages [»], also includes microblogging for traceability purposes, in particular aimed at tracking which requirements are responsible for particular design decisions, code fragments, test cases, etc. A more detailed description of the microblogging integration envisioned by this research group is given by Anja Guzzi and colleagues [»]. They present an approach that combines microblogs with interaction data collected from the IDE. Participants in their study used the microblogging tool to communicate future intentions, ongoing activities, reports about the past, comments and todos.