<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Task Patterns to support task-centric Social Software Engineering</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Benedikt Schmidt</string-name>
          <email>Benedikt.Schmidt@sap.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Wolfgang Reinhardt</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>SAP Research CEC Darmstadt</institution>
          ,
          <addr-line>Bleichstrasse 8, 64283 Darmstadt</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Paderborn, Institute of Computer Science</institution>
          ,
          <addr-line>Fuerstenallee 11, 33102 Paderborn</addr-line>
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Experience sharing to support software engineering is an important, yet di cult task. This paper presents an integration of the Task Pattern concept to support social software engineering. Task Pattern provide information objects and code examples to support software engineering tasks in a community of developers. They are generated based on information resulting from task-centric software development tools, e.g. the Tasktop system. As centrally organized and automatically extended information source they give a valuable insight into the process and product of software development tasks.</p>
      </abstract>
      <kwd-group>
        <kwd>task pattern</kwd>
        <kwd>social software engineering</kwd>
        <kwd>social information retrieval</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Software development can be considered as a speci c type of knowledge work
[
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Characteristics like weakly-structured processes, high degree of personal
decision involvement and only partial knowledge of the outcome are valid. These
aspects complicate adequate support of development processes. In this paper
we introduce a concept to support task-centric social software engineering in a
team, using the concept of Task Patterns [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Task Patterns collect information
artefacts created and used by developers when executing software development
tasks of similar kind. These artefacts are organized with respect to their meaning
for the described task class. With our approach we extend tools like Tasktop Pro
for Eclipse [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] which support users in executing their tasks by functionalities for
Task Pattern creation and enhancement for experience sharing. This is done by
a structured re-use of the information collected by these tools for Task Patterns
shared within a community.
      </p>
      <p>This paper is structured as follows. First, we introduce our view on social
software engineering and the possible elds of application for social information
retrieval in software engineering projects. Second, task-centric software
development and the Task Pattern concept are presented as foundation for the idea
of using task-centric software engineering to support experience transfer. Third,
Task Patterns for software engineering are presented as means for transferring
personal experience in a collaborative development environment.</p>
    </sec>
    <sec id="sec-2">
      <title>Conceptual Background</title>
      <p>In this section we introduce the concept of social software engineering and show
how social information retrieval (SIR) can be applied in software engineering
projects.
2.1</p>
      <sec id="sec-2-1">
        <title>Social Software Engineering</title>
        <p>
          Software engineering - especially in Open Source - is carried out in (large) teams.
The times when developers worked alone on their code seem de nitely to be over.
Surely this is not a trend of the recent years, as Gerald M. Weinberg stated in
1971 that software engineering is a social user-centered activity where
communication plays a key function [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] and that is supported by computers. Computer
supported cooperative work (CSCW) is an interdisciplinary eld of research
focussing on the connection of collaborative work and technical support for it.
As Ellis et al. de ne it CSCW looks at how groups work and seeks to discover
how technology (especially computers) can help them work [3, p. 39]. So CSCW
is part of the research conducted in the area of Computer Mediated
Communication (CMC). CMC researches how people and groups communicate using
web technologies and services like e-mail, blogs or bulletin boards. Restricting
this collaborative work in groups to the domain of software engineering leads to
the research area of collaborative (or social) software engineering. Regional and
temporal distribution of software development teams require speci c techniques
for communication and coordination, especially with respect to the domain of
knowledge sharing. Collaborative development environments (CDEs) are
providing optimal support for coordinating activities and communication in the
software engineering process conducted in teams [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
2.2
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>Social Information Retrieval in Software Engineering projects</title>
        <p>
          Social Information Retrieval (SIR) deals with obtaining information by utilizing
social processes. Information can be externalized artefacts as well as personal
expertise, so SIR can allow the retrieval of stored data or domain experts. There are
di erent techniques and methods for SIR [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]; techniques include collaborative
ltering, subjective relevance judgements and social bookmarking. Methods for
SIR comprise recommender systems, social navigation and social search. A mix
of the methods and techniques yield an added value for the users of services.
In software engineering projects the SIR needs structures to retrieve abstract
information like documents and API desciptions as well as more concrete
information like source code or best practise examples which t the engineering
requirements and guidelines of the speci c team. A CDE can o er a social
bookmarking approach allowing developers to bookmark important project-related
documents and include these information in the ranking of search results. [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]
show how methods and techniques of SIR can be successfully applied in the
context of software requirements engineering.
        </p>
        <p>With Task Pattern for software enginnering projects we propose a new type of
SIR technique: building patterns from task execution. We will store and analyse
tasks of developers, abstract from their speci c context and create a Task Pattern
from multiple task executions. This Task Pattern will be stored in a central Task
Pattern Repository and can be accessed by every developer.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Tasks and Task Pattern to support organization and execution of tasks</title>
      <p>
        Tasks have proven as e ective and e cient means to structure knowledge work.
A recent approach is task-centric software development, indicated by e.g. one
million downloads of the task-centric development support tool MyLyn [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
Still, task concepts in knowledge work and also software development are mainly
utilized as mechanism to support a user in executing his tasks by organizing
information objects. The Task Pattern concept has been proposed to re-use task
execution knowledge to share experience and support the retrieval of structured
information in a community.
3.1
      </p>
      <sec id="sec-3-1">
        <title>Task-centric Software Engineering</title>
        <p>
          Task-centric Software Development is the organization of programming activities
based on tasks using e.g. a task management system. One respective application
is MyLyn [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], an extension for the Eclipse IDE which observes the lines of code
a user works on for a speci c task. MyLyn is based on the following assumption:
The longer a user works on a speci c element of the code in a task context,
the higher is its relevance for the task. Empirical studies [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] prove that this
assumption holds. Thus the software code can be organized in terms of tasks. If
a developer interrupts a coding task and has to come back to it later, MyLyn
lters the code resources based on the earlier observed relevant lines of code thus
increasing the speed of resource access.
        </p>
        <p>
          MyLyn allows to share the relevant code parts for tasks in a given project
in a community. This allows a community to understand certain lines of code as
product of a coding task. This is a good rst step, but lacks additional
information. The process which lead to the product needs to be transferred additionally
to provide more understanding, following Floyds process-product
complementary view on software development [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Code examples might be worthless for
a novice who can not access information describing involved technologies and
frameworks. This information most probably has been used during the process
of coding. This implicitly has been taken up by the developers of MyLyn, as
they recently introduced Tasktop. Tasktop extends MyLyn beyond the
observation of code relevant for a task: it observes the interaction with di erent kinds
of information objects like e-mails, documents and web-resources as well. The
data collected by MyLyn and Tasktop seems to be a valuable basis for task
support beyond the individual organization. Both is integrated in Tasktop Pro
for Eclipse. A structure to organize the data respectively can be Task Patterns
which are introduced in the following.
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Task Patterns to share work experience</title>
        <p>
          Task Patterns are a structure to support individual task execution and to realize
tool-supported experience sharing in knowledge work. They hint to working
activities and information objects necessary to execute a speci c class of tasks. For
a user Task Patterns recommend work activities based on Abstraction Services.
These Services support users in identifying subtasks, information objects or
persons to collaborate with for a speci c purpose in a given task class. They are
capable to describe aspects of a task on di erent abstraction levels as described
in [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ].
        </p>
        <p>
          Task Patterns are not centrally organized but originate from abstractions
of di erent degrees on user task executions. These executions are explicit in
task-centric information system[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] which can be extended by Task Pattern
functionality. As such an interplay between a user task and the respective Task
Pattern realizes an enhancement life-cycle [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]: by connecting task and Task
Pattern and enriching the task by the abstracted pattern data each pattern re-use
in the community enhances the pattern, as described in [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. As such the Task
Pattern is a structure for a knowledge worker to learn how to execute a task,
meanwhile the structure is implicitly enriched by the knowledge worker himself.
The resulting pattern is a community e ort as it structures knowledge from real
task executions in the community in a re-usable way. In the following we explain
the concept of Task Patterns with Abstraction Services to support software
engineering activities.
4
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Task Patterns for Software Engineering</title>
      <p>Software development tasks in general result in the creation of program code as
product of the tasks. To create the respective program code developers often need
to look up di erent information or learn speci c techniques by using di erent
information objects like API descriptions, wikis, development handbooks etc.
4.1</p>
      <sec id="sec-4-1">
        <title>Structure and life-cycle of Task Pattern in Software Engineering</title>
        <p>As described, task-centric software development uses tools like Tasktop Pro to
automatically structure code and resources by means of tasks. We re-use this
information for Task Patterns which mesh up the di erent types of information:
code examples which stand for the product and abstract descriptions which help
to understand the process which lead to the product. Currently these
information types are not centrally organized, as code is spread across the development
project source les and other resources need to be accessed via folder structure
for les and bookmarks for web-resources. This leads to tedious
informationretrieval activities by the developer and a retrieval process which often uses
external data-sources like e.g. google code or development forums.</p>
        <p>Next to Abstraction Services for information objects like documents,
bookmarks or persons which help to structure documents or serve as expert nder, a
Code Abstraction Service serves as central collector for code examples. A Code
Abstraction Service basically collects program code which was created to solve
tasks described by the Task Pattern. It allows the user to identify relevant
passages which can be re-used to execute a new task. Thus it serves as a cheat-sheet
to highlight code solving a certain problem in the context of a program.</p>
        <p>As di erent types of information are included in a Task Pattern, a developer
can decide to what extent which type of support is necessary. Experts might get
support by code examples meanwhile novices need to understand the context
and design process itself and have to refer to abstract information. By combining
both, Task Patterns allow developers to balance their information requirements.</p>
        <p>The creation of a Task Pattern and the life-cycle of integrated Task
Pattern use and Task Pattern enhancement is shown in gure 1. After nishing
a development task which has been organized using Tasktop the user decides
to transform the information into a Task Pattern. To create a Task Pattern a
user only has to name a Task Pattern and decide which elements observed by
Tasktop are to be wrapped up by Abstraction Services. Abstraction Services
allow to structure similar kinds of information and to describe their purpose for
the task (Abstraction layer in gure 1). The program code created during the
execution of a task gets included in a Code Abstraction Service. The resulting
Task Pattern is stored in a public Task Pattern Repository. This repository can
be accessed by all developers which can make use of the pattern and enhance it
by their respective activities.</p>
        <p>Task Pattern</p>
        <p>Repository
create
task pattern</p>
        <p>refine
task pattern</p>
        <p>Abstraction Layer
abstracts personal context, creates reusable task pattern, refines stored task pattern</p>
        <p>Fig. 1. Realization of a life-cycle
Real Task</p>
        <p>Tasktop Task
Code</p>
        <p>Documents
knowledge intense
activities</p>
        <p>use
task pattern
Real Task</p>
        <p>Tasktop Task
Code</p>
        <p>Documents
knowledge intense
activities</p>
      </sec>
      <sec id="sec-4-2">
        <title>An example of Task Pattern in software engineering</title>
        <p>
          The following example shows the application of Task Pattern. We assume that
there is a community-embedded collaborative development environment (CCDE)
that supports informal communication amongst developers and serves as project
management tool for multiple di erent projects at the same time (cf. [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]).
Furthermore we assume that the CCDE hosts multiple projects that connect with
the social photo sharing site Flickr (http://www.flickr.com). So various
developers from di erent projects try to upload photos to and display photos from
Flickr using di erent programming languages. All developers are structuring
their daily work using Tasktop and make use of the possibility to create,
enhance and use patterns in the context of their local tasks. This already has
resulted in a pattern on accessing and displaying Flickr photos. The pattern
includes software code from 5 di erent tasks of this kind, realizing photo display
in di erent user interfaces. An additional excerpt from the Flickr API and a
\how-to" document are attached as well as a short e-mail discussion on caching
of photo sets to increase the accessibility.
        </p>
        <p>A developer wants to display Flickr photos. He queries the Task Pattern
repository and identi es the described pattern based on its name. He attaches
this pattern to his new task. Using Abstraction Services, the developer accesses
the code examples but has problems in understanding speci c parts of the
implemented code. He refers to the attached documents which enable him to
understand and re-use parts of the given code. Additionally he asks a colleague on
a speci c visualization technique including lters and receives a document on
this. The document gets included in his tasktop system, as all his activities are
tracked by the system. Due to the connection between task and Task Pattern the
developer easily can attach the additional information to the pattern. The Code
created by him gets automatically attached to the Code Abstraction Service.
4.3</p>
      </sec>
      <sec id="sec-4-3">
        <title>Integrating Task Patterns into the IDE</title>
        <p>As a realization we propose the extension of Tasktop Pro for Eclipse by
interaction functionalities with Task Patterns and Abstraction Services as visible in the
mockup g. 2. A Task Pattern gives access to the Abstraction Services which
provide access to documents, web resources, e-mails and example code (1). The
example code can be used by an additional code view to browse the program
code collected by the Abstraction Service during all di erent execution processes
(2). The task list has to be extended by a mechanism to attach Task Pattern to
tasks and the task list must show the attached Pattern with Abstraction Services
to the activated tasks. This application is currently under development at the
University of Paderborn.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Discussion</title>
      <p>Task Patterns in Software Engineering have been introduced as structure which
re-uses task information to realize experience sharing. Thereby Task Pattern
extend the scope of task-centric software development tools from an
organizational and analytical scope towards a tool supported awareness of the execution
process. This supports software development as social process, providing shared
understanding of problems and awareness of di erent problem solving types.</p>
      <p>
        The re-use of the Task Pattern concept shows its applicability to di erent,
more specialized domains of knowledge work. The domain of software engineering
shows a speci c bene t: one can assume that the product of most tasks is code.
This allows the easy identi cation of information resources which represent the
process of problem understanding and solving including the resulting code as
product. Thus, one can provide a combination of resources to support the process
of problem based learning and the examples of working products. The re-use of a
tool like Tasktop Pro especially allows the extensive automation of the involved
Task Pattern life-cycle [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Task Patterns for software engineering focus on
support of the individual solution of discrete, individual programming tasks.
With embedding Task Patterns for software engineering in a CCDE developers
can make use of social processes of recommendation and tagging and thus share
experience on similar, re-occurring tasks in a structured form which integrates
support for the understanding of the development process as well as for the
generated product.
      </p>
      <p>The presented integration of the Task Pattern approach for social software
engineering is currently under development at the University of Paderborn within
the scope of a master's thesis. The results will be evaluated and used to enhance
the social experience within software engineering projects and help users to nd
help from others.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>G.</given-names>
            <surname>Booch</surname>
          </string-name>
          and
          <string-name>
            <given-names>A. W.</given-names>
            <surname>Brown</surname>
          </string-name>
          .
          <article-title>Collaborative development environments</article-title>
          .
          <source>Advances in Computers</source>
          ,
          <volume>59</volume>
          :2{
          <fpage>29</fpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>T.</given-names>
            <surname>Catarci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Dix</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Katifori</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          .
          <source>Task-Centred Information Management. LECTURE NOTES IN COMPUTER SCIENCE</source>
          ,
          <volume>4877</volume>
          :
          <fpage>197</fpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Clarence</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Ellis</surname>
            ,
            <given-names>Simon J.</given-names>
          </string-name>
          <string-name>
            <surname>Gibbs</surname>
            , and
            <given-names>Gail</given-names>
          </string-name>
          <string-name>
            <surname>Rein</surname>
          </string-name>
          .
          <article-title>Groupware: some issues and experiences</article-title>
          .
          <source>Commun. ACM</source>
          ,
          <volume>34</volume>
          (
          <issue>1</issue>
          ):
          <volume>39</volume>
          {
          <fpage>58</fpage>
          ,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>C.</given-names>
            <surname>Floyd</surname>
          </string-name>
          .
          <article-title>STEPS-eine Orientierung der Softwaretechnik auf sozialvertragliche Technikgestaltung. Berichte des German Chapter of the ACM</article-title>
          ; Vol.
          <volume>29</volume>
          , pages
          <fpage>500</fpage>
          {
          <fpage>503</fpage>
          ,
          <year>1987</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>M.</given-names>
            <surname>Kersten</surname>
          </string-name>
          and
          <string-name>
            <given-names>G.C.</given-names>
            <surname>Murphy</surname>
          </string-name>
          .
          <article-title>Using task context to improve programmer productivity</article-title>
          .
          <source>In Proceedings of the 13th ACM SIGSOFT 14th international symposium on Foundations of software engineering</source>
          , pages
          <volume>1</volume>
          {
          <fpage>11</fpage>
          . ACM Press New York,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>S.</given-names>
            <surname>Lohmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Dietzold</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Heim</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Heino</surname>
          </string-name>
          .
          <article-title>A web platform for social requirements engineering</article-title>
          .
          <source>In Workshop Proceedings of Software Engineering</source>
          <year>2009</year>
          , volume P-
          <volume>150</volume>
          of Lecture Notes in Informatics, pages
          <volume>309</volume>
          {
          <fpage>316</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>E.</given-names>
            <surname>Ong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Grebner</surname>
          </string-name>
          , and
          <string-name>
            <given-names>U.V.</given-names>
            <surname>Riss</surname>
          </string-name>
          .
          <article-title>Pattern-based task management: pattern lifecycle and knowledge management. In 4 thConference of Professional Knowledge Management (WM</article-title>
          <year>2007</year>
          ), Workshop Integrierte WissensmanagementSysteme (
          <issue>IKMS2007</issue>
          ), Potsdam, Germany,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Wolfgang</given-names>
            <surname>Reinhardt</surname>
          </string-name>
          and
          <string-name>
            <given-names>Sascha</given-names>
            <surname>Rinne</surname>
          </string-name>
          .
          <article-title>An architecture to support learning, awareness, and transparency in social software engineering</article-title>
          . In Forthcoming: Special Track on Mashups for Learning,
          <source>International Conference on Computer Aided Learning (ICL2009)</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>U. V.</given-names>
            <surname>Riss</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Rickayzen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Maus</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.M.P. van der</given-names>
            <surname>Aalst</surname>
          </string-name>
          .
          <article-title>Challenges for Business Process and Task Management</article-title>
          .
          <source>Journal of Universal Knowledge Management</source>
          , pages
          <volume>77</volume>
          {
          <fpage>100</fpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>B.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          and
          <string-name>
            <given-names>Uwe V.</given-names>
            <surname>Riss</surname>
          </string-name>
          .
          <article-title>Task patterns as means for experience sharing</article-title>
          .
          <source>In Forthcoming: Proceedings of ICWL</source>
          <year>2009</year>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. M.
          <article-title>Schonstrom and</article-title>
          <string-name>
            <surname>S.A. Carlsson.</surname>
          </string-name>
          <article-title>Methods as knowledge enablers in software development organizations</article-title>
          .
          <source>In The 11th European Conference on Information Systems (ECIS</source>
          <year>2003</year>
          ),
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <article-title>Tasktop Technologies Inc. Tasktop pro</article-title>
          . http://tasktop.com/products/,
          <year>03 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>J. Triesch</surname>
            ,
            <given-names>D.H.</given-names>
          </string-name>
          <string-name>
            <surname>Ballard</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.M. Hayhoe</surname>
            , and
            <given-names>B.T.</given-names>
          </string-name>
          <string-name>
            <surname>Sullivan</surname>
          </string-name>
          .
          <article-title>What you see is what you need</article-title>
          .
          <source>Journal of Vision</source>
          ,
          <volume>3</volume>
          (
          <issue>1</issue>
          ):
          <volume>86</volume>
          {
          <fpage>94</fpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>Riina</given-names>
            <surname>Vuorikari</surname>
          </string-name>
          .
          <article-title>Can social information retrieval enhance the discovery and reuse of digital educational content?</article-title>
          <source>In RecSys '07: Proceedings of the 2007 ACM conference on Recommender systems</source>
          , pages
          <volume>207</volume>
          {
          <fpage>210</fpage>
          , New York, NY, USA,
          <year>2007</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Gerald</surname>
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Weinberg</surname>
          </string-name>
          .
          <article-title>The Psychology of Computer Programming</article-title>
          . John Wiley &amp; Sons, Inc., New York, NY, USA,
          <year>1971</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>