An Architecture to Support
Learning, Awareness, and
Transparency in Social
Software Engineering
Wolfgang Reinhardt and Sascha Rinne
ABSTRACT
Classical tools for supporting software engineering teams (collaborative de-
velopment environment, CDE) are designed to support one team during the
development of a product. Often the required data sources or experts reside
outside of the internal project team and thus not provided by these CDEs.
is paper describes an approach for a community-embedded CDE (CCDE),
which is capable of handling multiple projects of several organizations, pro-
viding inter-project knowledge sharing and developer awareness. e present-
ed approach uses the mashup pattern to integrate multiple data sources in or-
der to provide software teams with an exactingly development environment.
10 Data Structure and Software Engineering: Challenges and Improvements
Keywords: Learning Systems, Knowledge Management, Cooperative
Development Environments, Learning Communities
Introduction
Traditional clichés about software developers lose their validity more and more.
Times, when programmers sat in dark cellars and tried to solve all problems on
their own are over once and for all. In the meantime software engineering has
become a very knowledge-intensive [5] and communicative process (not only but
also triggered by agile methods for software development) where the actors heav-
ily exchange data (see Google-Code), connect with like-minded (see Google Sum-
mer of Code), blog about experiences in their own weblogs, provide code snippets
free of charge (see Django-Snippets) or help novices with words and deeds in large
mailing lists. is social software engineering—the creation of software and relat-
ed artifacts within a social network—gained a lot of attention in recent software
engineering research [1,17]. Besides the improvements of integrated development
environments (IDE, e.g. Eclipse) or procedure models (e.g. eXtreme Program-
ming [3]) research is addressing improvements of the daily working and learning
environments of the developers. e main function of collaborative development
environments (CDE) [2] is to support the whole development process of a team
of software developers from start to nish. is includes version control of code
artifacts as well as process documentation, coordination of tasks or support for
division of labour.
CDEs usually are set up for one specic project; the possibilities for inter-
project-collaboration within an organization with multiple software projects are
very limited because the single CDEs are not able to exchange data.
Furthermore many developers are using data pools (bulletin boards, developer
communities, mailing lists and a lot more) outside the organization in order to
solve a specic problem. Furthermore existing CDEs lack in providing a transpar-
ent view on the progress of a project, awareness of developers’ competencies and
support for individual informal learning processes.
is paper describes an approach for a community-embedded CDE (CCDE),
which is capable of handling multiple projects of several organizations, provid-
ing inter-project knowledge sharing and developer awareness. e presented ap-
proach uses the mashup pattern to integrate multiple data sources in order to
provide software teams with an exactingly development environment. Further-
more we present requirements for a community of developers and sketch a rst
prototypical architecture for such a CCDE.

Get Data Structure and Software Engineering now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.