Software engineering is a knowledge-intensive process encompassing requirements gathering, design, development, testing, deployment, maintenance, and project coordination and management activities. It is highly unlikely that all members of a development team possess all the knowledge required for the aforementioned activities. This underlies the need for knowledge sharing support to enable software organizations to (1) effectively share domain expertise between the customer and the development team; (2) identify the requirements of the software system; (3) capture non-externalised knowledge of the development team members; (4) bring together knowledge from distributed individuals to form a repository of organisational knowledge; (5) retain knowledge that would otherwise be lost due to the loss of experienced staff; and (6) improve organisational knowledge dissemination. More traditional approaches, like the Waterfall model and its variances, facilitate knowledge sharing primarily through documentation. They also promote usage of role- based teams and detailed plans of entire software development lifecycle. The allocation of work specifies “not only what is to be done but how it is to be done and the exact time allowed for doing it” [24]. This shifts the focus from individuals and their creative abilities to the processes themselves. These traditional approaches are often referred to as “plan-driven” or “task-based”. In contrary, agile methods emphasise and value individuals and interactions over processes [6]. When comparing