<!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>Defining Agents in a COTS-Aware Requirements Engineering Approach</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Lawrence Chung</string-name>
          <email>chung@utdallas.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kendra Cooper</string-name>
          <email>kcooper@utdallas.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dept. of Computer Science The University of Texas at Dallas MS 31 P.</institution>
          <addr-line>O. Box 830688 Richardson, TX</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2002</year>
      </pub-date>
      <fpage>35</fpage>
      <lpage>46</lpage>
      <abstract>
        <p>The goals of developing systems better, faster, and cheaper continue to drive software engineering practitioners and researchers to investigate software engineering methodologies that are novel, yet practical. As the size and complexity of systems continues to grow, there has been a growing interest in the investigation of social paradigms (e.g., agent- and goaloriented approaches) and the use of COTS components. These are being viewed more and more as promising, and also perhaps inevitable, solutions to this problem. The effective application of social paradigms and use of COTS components, however, requires a systematic approach that provides a set of concepts for modeling the subject matter, a set of guidelines for using such concepts, and tool support to assist the developer. In this paper, we present an overview of a COTS-Aware Requirements Engineering (CARE) approach that explicitly supports the use of COTS components. Our CARE approach is knowledge based, has a defined process, and is agent- and goal-oriented. In more detail, we present the models and ontology that support the definition of agents. Our CARE approach is validated using a part of a Digital Library System; a prototype of the CARE Assistant tool is used to present some preliminary results.</p>
      </abstract>
      <kwd-group>
        <kwd>requirements engineering</kwd>
        <kwd>agent-oriented</kwd>
        <kwd>goal-oriented</kwd>
        <kwd>COTS components</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>The goal of developing systems better, faster, and cheaper continues to drive software
engineering practitioners and researchers to investigate software engineering methodologies
that are novel, yet practical. As the size and complexity of systems continues to grow, there
has been a growing interest in the investigation of social paradigms (e.g., agent- and
goaloriented approaches) and the use of COTS components. These are being viewed more and
more as promising, and also perhaps inevitable, solutions to this problem.</p>
      <p>
        Our work is focused on creating, modeling and analyzing a goal- and agent-oriented
requirements engineering approach that explicitly supports the use of commercial off the
shelf (COTS) components. Our approach is called the COTS-Aware Requirements
Engineering (CARE) approach. It is agent-oriented (as in [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ][
        <xref ref-type="bibr" rid="ref25">25</xref>
        ][
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]), goal-oriented (as in
[
        <xref ref-type="bibr" rid="ref1 ref28 ref31 ref34">1</xref>
        ][
        <xref ref-type="bibr" rid="ref42 ref9">9</xref>
        ][
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]), has a defined process (as in [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]), and is knowledge-based (as in [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ][
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]). The
CARE approach is intended to provide a framework for integrating and extending existing
work in the areas of agent-oriented requirements engineering (RE), goal-oriented RE,
nonfunctional RE, conceptual modeling, and COTS research. The CARE approach is
intended to assist the requirements engineer in developing high quality specifications, not to
replace their intelligence and experience. We believe this work may be of interest to
researchers and practitioners involved in the development of complex systems that are
distributed, open, and large-scale.
      </p>
      <p>The CARE approach is being defined with a set of models and is supported with a prototype
of the CARE Assistant Tool. Models are used to embody abstract ideas in a concrete
representation. In a model, the ideas are more easily communicated, reviewed, and revised.
The properties we seek in a model include completeness, consistency, correctness, etc. We
also recognize that a model needs both an ontology and a methodology. An ontology is a
formal description of entities and their properties; it forms a shared terminology for the
objects of interest in the domain, along with definitions for the terms. A methodology
describes how the entities are used or created. In CARE, the models include a process,
product, and a meta-model. The process model describes the activities performed to define
the system agents, goals, system requirements, software requirements, and software
architecture (with respect to using COTS components). Each activity defines who performs it,
the steps, constraints, inputs, and outputs. The product model describes the format of the
output, or products, created using the process. The CARE meta-model defines the ontology
for the approach. Entities include agents, goals, system requirements, software requirements,
COTS components, assertions, and activities.</p>
      <p>
        We recognize that developing the CARE approach is an ambitious project. To accomplish the
work, we are using an iterative approach to define, refine, and validate the CARE models and
tool support [
        <xref ref-type="bibr" rid="ref38 ref5">5</xref>
        ][
        <xref ref-type="bibr" rid="ref39 ref6">6</xref>
        ]. This iteration is focused on integrating existing agent-oriented work that
supports the definition of agents. We define a product model, process model, and ontology;
the prototype of the CARE Assistant Tool is also extended to support the agent definition.
The approach is validated by applying it to (part of) a Digital Library System (DLS) example.
A DLS is selected as the example because it is a complex, large-scale, non-proprietary system
with a rich set of functional and non-functional requirements. A detailed description of the
CARE approach (including the process model, product model, meta-model, and ontology) is
available in the complimentary technical report [
        <xref ref-type="bibr" rid="ref38 ref5">5</xref>
        ].
      </p>
      <p>This paper is organized as follows. Following the introduction, we describe related work and
then provide an overview of the CARE approach. Subsequently, parts of the process, product,
and ontology that support the definition of agents are presented. Some of our lessons learned
are described; this is followed by our conclusions and future work.</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>The CARE approach draws upon research in a number of areas including agent- and
goaloriented paradigms, knowledge engineering, process engineering, and COTS based software
engineering work. As the focus of this work is integrating agent-oriented research in our
CARE approach, we focus the related work section on research in the use of COTS
components and agent-oriented paradigms in software engineering.</p>
      <p>
        Approaches that offer specific technical solutions that are applicable to the requirements
engineering phase include the Rational Unified Process (RUP), Model-Based Architecting
and Software Engineering (MBASE), and the Procurement Oriented Requirements
Engineering (PORE). RUP is a comprehensive, object oriented software engineering process
model [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], which is based on four phases (transition, construction, elaboration, and
inception) and a collection of core process disciplines (or workflows) including business
modeling, requirements, analysis and design, implementation, test, deployment, etc. We
include the RUP in our survey because it is an established, well accepted process. Although
the RUP is not goal- or agent-oriented, it does support the use of a component based
architecture. A component is defined in [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] as a nontrivial piece of software: a module,
package, or subsystem that fulfills a clear function, has a clear boundary, and can be
integrated into a well-defined architecture. In UML, a COTS component is represented as a
component, a physical and replaceable part of the system that provides a set of interfaces and
typically represents the physical packaging of classes, interfaces, and collaborations [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ].
With the RUP, the use of component based architecture can proceed in several ways. In
addition to supporting a more traditional approach in which a system is built from scratch,
RUP also supports building a system with the intent of developing re-usable, in-house
components and an assembly approach of building software from commercial off-the-shelf
components. For our requirements engineering work, we integrate the iterative approach in
our process.
      </p>
      <p>
        The MBASE approach focuses on the early phases of software engineering. It considers four
types of models: success, process, product and property [
        <xref ref-type="bibr" rid="ref3 ref30 ref33 ref36">3</xref>
        ] and is consistent for use with
COTS components [
        <xref ref-type="bibr" rid="ref37 ref4">4</xref>
        ]. MBASE uses four guiding principles to develop value-driven,
sharedvision-driven, change-driven, and risk-driven requirements. From the MBASE framework,
we draw on the ideas of developing a consistent set of models that are goal (i.e., success)
driven and support the use of COTS components.
      </p>
      <p>
        From the PORE technique, we draw on its support for the evaluation and selection of COTS
components [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ][
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. The PORE process model identifies four goals in a thorough COTS
selection process: a) acquiring information from the stakeholders, b) analyzing the
information to determine if it is complete and correct, c) making the decision about product
requirement compliance if the acquired information is sufficient, d) selecting one or more
candidate COTS components. The PORE approach also defines a meta-model that is
composed of the following constructs: agents, actions (these are performed by agents), events
(these trigger actions), goals (these are accomplished by actions), objects in the domain, state
of an object, state transitions of objects, components, and functions provided by the product.
In agent-oriented research, agents have been characterized by four properties [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ][
        <xref ref-type="bibr" rid="ref25">25</xref>
        ][
        <xref ref-type="bibr" rid="ref26">26</xref>
        ].
First, an agent is intentional and possesses intentional properties including goals, beliefs,
abilities, and commitments. Second, an agent is autonomous and makes decisions and
choices. Third, an agent depends on other agents to accomplish goals, complete tasks, or
furnish resources. This characteristic makes an agent able to accomplish goals they could not
achieve on their own. At the same time, however, it makes an agent vulnerable because it
depends on other agent. Fourth, an agent is strategic. This allows the agent to analyze its
opportunities and risks in the various proposals and configurations of a system.
      </p>
    </sec>
    <sec id="sec-3">
      <title>Overview of the CARE Approach</title>
      <p>
        An overview of the CARE approach is provided in this section (refer to Figure 1) and it is
illustrated with examples from the Digital Library System. The reader is referred to the
complimentary technical report in [
        <xref ref-type="bibr" rid="ref38 ref5">5</xref>
        ] for details. The CARE approach is characterized as
agent-oriented, goal-oriented, knowledge based, and has a defined process.
      </p>
      <p>
        The CARE approach supports the definition of agents, goals, system requirements, and
software requirements. The first task is to define the agents for the system. As part of the
definition, the goals of the agents are captured; these goals are used to drive the development
of the system. Goals are very high-level objectives of the system. The may be functional
(hardgoals) or non-functional (softgoals). Goals are related to the other goals of the system
using the NFR framework [
        <xref ref-type="bibr" rid="ref42 ref9">9</xref>
        ][
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. This framework has four kinds of relationships: makes
(very positive), helps (positive), hurts (negative), and breaks (very negative). As goals and
requirements are defined, COTS components are identified as possible matches.
When mapping goals and requirements to possible matches of COTS components, the
requirements engineer (RE) searches, matches, and selects from the components in the
repository. The RE considers the functional and non-functional capabilities and, with the
assistance of the software architect, the impact of using a component on the software
architecture. If a match is not found, the RE has a number of options. The RE may request
that the component engineer attempt to find another component available in the marketplace
and add it to the repository. The RE may try bridge the gap between the customer's needs and
the capabilities available in the components by asking the vendor to make a change to a
component or asking the customer to change a goal or requirement.
      </p>
      <p>Describing the CARE approach requires an agent-oriented notation. We have selected the i*
framework as it is well suited for describing goal and softgoal dependencies among agents</p>
      <sec id="sec-3-1">
        <title>Component</title>
      </sec>
      <sec id="sec-3-2">
        <title>Repository</title>
        <p>Goals
Specification
Component n
Specification
Component 2
Goals</p>
        <sec id="sec-3-2-1">
          <title>Requirement</title>
        </sec>
        <sec id="sec-3-2-2">
          <title>Engineer</title>
          <p>…
Goals</p>
        </sec>
        <sec id="sec-3-2-3">
          <title>External</title>
        </sec>
        <sec id="sec-3-2-4">
          <title>System</title>
        </sec>
        <sec id="sec-3-2-5">
          <title>Customer</title>
        </sec>
        <sec id="sec-3-2-6">
          <title>Manager</title>
        </sec>
        <sec id="sec-3-2-7">
          <title>End User</title>
        </sec>
        <sec id="sec-3-2-8">
          <title>Development</title>
        </sec>
        <sec id="sec-3-2-9">
          <title>Manager</title>
        </sec>
        <sec id="sec-3-2-10">
          <title>Softgoal2</title>
        </sec>
        <sec id="sec-3-2-11">
          <title>Goal1</title>
        </sec>
        <sec id="sec-3-2-12">
          <title>Goaln</title>
          <p>System
Requirement
System
Requirement</p>
          <p>Software</p>
          <p>Requirement
Software
Requirement
…
…</p>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>System</title>
      </sec>
      <sec id="sec-3-4">
        <title>Artifacts</title>
        <p>Specification</p>
        <p>Component 1
Legend</p>
        <p>
          Mapping System Goals to Component Goals
Mapping System, Software Requirements to Component Specification
Agent
[
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]. The i* framework is composed of two models: the strategic dependency and the
strategic rational model. The strategic dependency model is used to describe goal and
softgoal dependencies among intentional agents (agents that make choices). The concepts of
the strategic dependency model are embedded into the conceptual modeling language Telos
[
          <xref ref-type="bibr" rid="ref19">19</xref>
          ], a descendent of RML [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] - an object-oriented requirements modeling language for
functional requirements. As a result, i* provides an extensible, object-oriented
representational framework with classification, generalization, aggregation, attribution, and
time. The strategic rational model is used to describe how an agent accomplishes a goal in
terms of subgoals, softgoals, resources, and tasks. The strategic rationale mo del is surrounded
by an oval with a dashed line. The steps (subgoals, softgoals, tasks) an agent chooses to use
are called a routine.
        </p>
        <p>An overview of the CARE process model from an agent-oriented perspective is illustrated in
Figure 2. At this level, the agents are three interdependent businesses: Customer,
Development House, and the Component Vendor. For example, the Development House
depends upon the Customer to validate the system artifacts.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Refining the CARE Models</title>
      <p>CARE Process Model: Define Agents
The process model is refined (refer to Figure 3) to illustrate additional details for the goal to
deliver the system artifacts. In addition, this figure contains the strategic rationale model for
the RE. To accomplish the goal of delivering the agents, goals, and requirements for a
system, the RE performs the corresponding tasks.</p>
      <p>In Figure 4, the model is further refined to illustrate the tasks involved in defining the
baselined agents. The RE's tasks include elicit, analyze, correct, validate, and baseline the
agent definitions. The RE uses them iteratively to refine the definitions of the agents. Sources
of information to accomplish these tasks include the customer (end users, managers, etc.),
existing documentation for the system, the expertise of requirements engineers, software
architects, and component engineers, etc. Each of these tasks is described briefly below:</p>
      <p>Customer
Legend
Development</p>
      <p>House</p>
      <p>Component</p>
      <p>Sales</p>
      <p>Deliver Within Budget</p>
      <p>Component
Deliver On Time</p>
      <p>Component
Deliver High Quality</p>
      <p>Component</p>
      <p>Deliver
Component
Artifacts</p>
      <p>Component</p>
      <p>Vendor
Dependency
Relationship</p>
      <p>Goal</p>
      <p>
        Softgoal
Elicit Agents. The RE identifies and defines the agents, or stakeholders, for the system under
development. The agents may be people, computer systems, or businesses. For example, the
people may include the end-users, administrators, managers, people responsible for procuring
the system, and people responsible for developing the system. An agent is intentional and has
one or more roles to play. Each role has a unique identifier, agent dependencies, and abilities.
To elicit the initial set of agents, the RE begins with the enterprise goals and the initial
concept of the system. To identify additional agents, the RE may use interviews, surveys,
workflow analysis, and examine the documentation of the current system (if available). A
significant amount of work has been done in the area of elicitation (e.g.,[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ][
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]). In the
CARE approach, the RE can choose the specific technique used to elicit the agents. The RE
documents the decisions and the rationale for the decisions made performing the task.
Analyze Agents. The RE analyzes the agent descriptions to identify errors of commission
(conflicting, incorrect, and redundant agents) and omission (missing agents). The analysis is
performed with respect to the initial concept for the system and the enterprise goals. The RE
documents the decisions and the rationale for the decisions made performing the task.
Correct Agents. The RE corrects the definitions of the agents based on the analysis results.
The RE documents the decisions and the rationale for the decisions made performing the
task.
      </p>
      <p>Validate System Agents. The RE uses feedback from the customer to validate the definition
of the agents. The RE documents the decisions and the rationale for the decisions made
performing the task.</p>
      <p>Baseline System Agents. The RE and CM baseline the validated agent definitions and place
them under configuration management.</p>
      <p>Deliver Within Schedule</p>
      <p>Architecture
Deliver Within Budget</p>
      <p>Architecture
Deliver High Quality</p>
      <p>Architecture</p>
      <p>Deliver
Architecture</p>
      <p>Validate
Architecture
Component
Vendor</p>
      <p>Dependencies …
Define Baselined</p>
      <p>System Agents
(see Figure 4)</p>
      <p>Define Baselined</p>
      <p>System Reqs
(with COTS)</p>
      <p>…
Requirements</p>
      <p>Engineer</p>
      <p>Provide Arch.</p>
      <p>Expertise</p>
      <p>Define Baselined</p>
      <p>System Goals
(with COTS)
Define Baselined
Software Reqs
(with COTS)</p>
      <p>Maintain</p>
      <p>Repository
Maintain Quality</p>
      <p>Repository
Provide RE
Expertise</p>
      <p>Component</p>
      <p>Engineer
Maintain Quality</p>
      <p>Repository
Architect</p>
      <p>
        Maintain
Repository
CARE Product Model: Define Agent
The users of the CARE process may select their own techniques for the product model. In
this work, we use a tabular approach to summarize the attributes the RE needs to define. This
presentation is similar to examples available in the MBASE approach [
        <xref ref-type="bibr" rid="ref3 ref30 ref33 ref36">3</xref>
        ]. The presentation of
the attributes defined in this section is not intended to restrict the structure of the knowledge
base. The attributes for the Agents are described in this section. Each attribute has a brief
description, cardinality, and whether or not the attribute is optional or required. An example
of a system agent definition is provided in a tabular format in Appendix A.
      </p>
      <p>Unique Identifier. This attribute is used to support traceability. The Agent Unique Identifier
is “A_” followed by a unique three digit integer. (e.g., A_001). Each instantiation of an agent
has exactly one Unique Identifier attribute value. The attribute is required.</p>
      <p>Define
Baselined
Agents
Correct</p>
      <p>Agents
Elicit
Agents</p>
      <p>Analyze
Agents</p>
      <p>Validate
Agents</p>
      <p>Baseline
Agents
Type. This attribute defines the specialization of the agent. For example, the Agent may be a
User, Administrator, Development Staff, etc. Each instantiation of an agent has exactly one
Agent Type attribute value. The attribute is required.</p>
      <p>Role. This attribute defines the role an agent is performing. For example, in a DLS, the role
may be junior librarian, senior librarian, borrower, system administrator, etc. Each
instantiation of an agent has exactly one Role attribute value. The attribute is required.
Association. This attribute defines the association of the agent. For example, the agent may
be associated with the company acquiring the system, with the development house, or with a
component vendor. The Association attribute is optional.</p>
      <p>Perspective. This attribute defines the perspective of the agent. For example, the agent may
be viewing the system from a customer’s perspective or a developer’s perspective. Each
instantiation of an agent has exactly one Perspective attribute values. The attribute is
optional.</p>
      <p>Relevance. This attribute defines why the agent is relevant to the model of the system. For
example, how does the agent interact with the system to meet a business need. Each
instantiation of an agent has one or more Relevance attribute values. The attribute is required.
Other Agent Dependency. This attribute defines the other agents that are depended upon to
accomplish goals. The agents may be needed to accomplish a goal when the product is being
built or when the product is being used. Each instantiation of an agent has one or more other
agent dependency attribute values. The attribute is optional.</p>
      <p>Goals. This attribute defines the goals of the Agent. The goals may be related to building the
product or using the product. Each instantiation of an agent has one or more Goal attribute
values. The attribute is optional.</p>
      <p>Ability. This attribute defines the ability, or skills, the agent has to accomplish the goals.
Each instantiation of an agent has one or more Ability attribute values. The attribute is
optional.</p>
      <p>
        Assumptions. This attribute defines any assumptions about the Agent. Each instantiation of
an agent has one or more Assumptions attribute values. The attribute is optional.
Notes. This attribute defines any additional notes about the Agent. Each instantiation of an
agent has exactly one Agent Notes attribute value. The attribute is optional.
Agent Ontology
The most general class in the ontology is the Agent. Agents in this class are specialized as
enterprise (i.e., a company), people, and computer systems. Enterprise agents are specialized
into businesses involved in developing components, developing a customer's system, and a
customer. Associated with the development house are people who work for the company and
fill the roles of requirements engineer, software architect, and component engineer. The
agents may have one or more assertions (e.g., a system agent must have at least one system
goal) and they accomplish goals by performing activities.
Illustration
The support for defining system agents in the CARE approach is validated by applying it to
(part of) a DLS example. A DLS is selected as the example because it is a complex,
largescale, non-proprietary system with a rich set of functional and non-functional requirements.
The example is illustrated using the prototype of the CARE Assistant Tool. The prototype
supports a subset of the constructs in the meta-model, including the agents. ConceptBase [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]
is used as the database for the knowledge base implementation.
      </p>
      <p>The RE has a goal of defining the baselined system agents for the DLS. In this example, the
routine to define the set of baselined system agents is composed of the tasks to Elicit,
Analyze, Correct, Validate, and Baseline Agents. When the initial set of agents are defined,
their analysis identifies errors of omission such as undefined attributes and errors of
commis sion such as incomplete descriptions. The elicitation, analysis and correction of the
defin itions is an iterative process. When they are considered to be complete, consistent, and
correct by the RE, the customer is asked to validate the definitions. In an academic setting, we
realize that the tasks are significantly simplified as we do not have real customers.
Using the CARE process and product models for the definition of agents, the classes for the
agents and instances for the DLS example are defined in O-Telos. Example is presented
below for a junior librarian (refer to Figure 5 for a graphical representation).</p>
      <p>User_Goals1: Goal_G_002</p>
      <p>{* The DLS should be easy to use *}
User_Goals2: Goal_G_004</p>
      <p>{*The DLS should have high availability*}
User_Goals3: Goal_G_005
User_Goals4: Goal_G_006
User_Goals5: Goal_G_007
User_Goals6: Goal_G_008
User_Goals7: Goal_G_009
{*The DLS should have fast performance even when the
system is loaded with the maximum number of users *}
{*The users should be able to access a large number of
diverse objects*}
{*The users should be able to search, browse, and retrieve
objects quickly and efficiently from remote locations*}
{*The librarians should be able to maintain the library
quickly and efficiently*}
{*The librarians should be able to provide reference
support quickly and efficiently*}
Individual junior_librarian in UserAgentClass with
UniqueIdentifier</p>
      <p>User_ID: "A_001"
Association</p>
      <p>User_Association:"Library Company Inc."
Perspective</p>
      <p>User_Perspective: "Customer"
User_Type: "end user"</p>
      <p>User_role: "junior librarian"
Relevance</p>
      <p>User_Relevance:
"1. Interacts with borrowers to provide reference assistance.
2. Interacts with DLS to obtain library items.
3. Interacts with RE to provide domain expertise.</p>
      <p>4. Interacts with RE to validate agent, goals, requirements"
AgentDependency</p>
      <p>Agent_Dependency1: UserAgent_A_004
AgentDependency</p>
      <p>Agent_Dependency2: DeveloperAgent_A_009
Goals
Type
Role
Goals
Goals
Goals
Goals
Goals</p>
      <p>Goals</p>
      <p>Goals
Goals
End
User_Goals8: Goal_G_011
{*The DLS should be scaleable in order to accommodate
new collections or additions to the current collections. *}
User_Goals9:Goal_G_012</p>
      <p>{*The DLS should be secure*}
Ability</p>
      <p>User_ability: "Trained in library science, 0-2 years experience"
New agents identified in the CARE approach for the development house are the component
engineers (CEs). The CEs are responsible for adding, modifying, and deleting COTS components
into the repository. They are a source of technical expertise for the REs when matching and
selecting possible COTS components. The component vendor, an enterprise agent, is another new
addition when considering a COTS-aware approach. People agents working for the component
vendor such as the technical sales representative or technical support personnel are also
stakeholders in the system development.</p>
    </sec>
    <sec id="sec-5">
      <title>Lessons Learned</title>
      <p>We have already learned a number of lessons in developing this phase of the work. The
formalization into O-Telos class definitions has encouraged the development of a complete,
correct model. As the definitions were being developed, it became an iterative process to
define, validate, and correct the definitions.</p>
      <p>Attributes that were initially defined, but later appeared to have little value in the validation
with the DLS example, were deleted. An example of this case was in the System Agent class.
Initially, the name of an agent was included as an attribute. In the validation, it became clear
that the role the agent was playing (e.g., junior librarian) was more relevant.
As we modeled the interdependencies among agents, we encountered a problem while trying
to strictly adhere to the i* framework. In i*, agents are allowed to be decomposed and
refined, however goals are not. Due to the complexity of our model, we also need to
decompose goals to ensure the models are straightforward to review and correct. A simple
solution has been selected to work around the restriction: we represented the refinement of a
goal on a separate diagram. If this extension can be formally added to the i* framework it
may be valuable for the RE community.</p>
    </sec>
    <sec id="sec-6">
      <title>Conclusions and Future Work</title>
      <p>The CARE research project is defining CARE process, product, meta-model, and tool support
concurrently. The intent is to have a set of models and tool support that work together and are
practical to apply to complex, large-scale systems. An iterative approach is being used to
systematically extend and refine the models and tool support. As each part of the work
matures, it can be used to detect problems such as incompleteness, inconsistency, or
ambiguity in the other parts.</p>
      <p>
        In this paper, our contribution is to present our preliminary work in the CARE approach that
supports the definition of agents. We present the process model, product model, and agent
ontology; the approach is illustrated with an example from a Digital Library System. A more
detailed description of the CARE is available in [
        <xref ref-type="bibr" rid="ref38 ref5">5</xref>
        ]. The task to define system agents is
refined into steps to elicit, analyze, correct, validate, and baseline the definitions. In the
product model we capture a set of attributes for system agents including unique identifier,
type, role, association, perspective, relevance, other agent dependencies, goals, ability,
assumptions, and notes. Classes and instances of agents for part of a Digital Library System
are formalized in the O-Telos notation and presented using a prototype of our CARE
Assistant Tool. It is important to note that our approach does not capture some characteristics
of agents including a level of commitment or its strategic capability. We are investigating
solutions to this problem.
      </p>
      <p>As we have only used one example system to validate the work, we recognize that additional
validation with different systems is needed. The next example system we intend to use is a
telepresence system. We also plan to extend and refine the CARE approach's models
(process, product, meta) and tool support. More specifically, we propose to support reasoning
about contradictory, non-functional goals using the NFR framework.</p>
      <sec id="sec-6-1">
        <title>Appendix A. Semi-formal Agent Definition (Junior Librarian) Agent Example</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Antón</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Potts</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          , “
          <article-title>The Use of Goals to Surface Requirements for Evolving Systems”</article-title>
          ,
          <source>Int. Conf. on Software Engineering</source>
          , Kyoto, Japan,
          <fpage>19</fpage>
          -25
          <source>April</source>
          <year>1998</year>
          , pp.
          <fpage>157</fpage>
          -
          <lpage>166</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Basili</surname>
            ,
            <given-names>V.R.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Boehm</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , “
          <article-title>COTS-based systems top 10 list”</article-title>
          ,
          <source>Computer</source>
          , Vol.
          <volume>34</volume>
          Issue: 5, May
          <year>2001</year>
          , pp.
          <fpage>91</fpage>
          -
          <lpage>95</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Boehm</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Port</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Abi-Antoun</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Egyed</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <article-title>“Guidelines for the Life Cycle Objectives (LCO) and the Life Cycle Architecture (LCA) deliverables for Model-Based Architecting and Software Engineering (MBASE)”</article-title>
          ,
          <source>TR USC-CSE-98-519</source>
          ,
          <article-title>USC-Center for Software Eng</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Boehm</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          “
          <article-title>Requirements that handle IKIWISI, COTS, and Rapid Change"</article-title>
          , IEEE Computer, Vol.
          <volume>33</volume>
          Issue: 7,
          <string-name>
            <surname>July</surname>
          </string-name>
          <year>2000</year>
          , pp.
          <fpage>99</fpage>
          -
          <lpage>102</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Chung</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Cooper</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <article-title>"A COTS-Aware Requirements Engineering Approach: Defining System Level Age nts</article-title>
          , Goals, and Requirements, version
          <volume>2</volume>
          ",
          <source>TR UTDCS-11-02</source>
          , The University of Texas at Dallas,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Chung</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Cooper</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , “
          <article-title>Defining Goals in a COTS-Aware Requirements Engineering Approach"</article-title>
          ,
          <source>Proceedings of the International Council on Systems Engineering Symposium</source>
          <year>2002</year>
          (
          <article-title>INCOSE 2002), electronic proceedings</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Chung</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Cooper</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <article-title>“A Knowledge-Based COTS-Aware Requirements Engineering Approach"</article-title>
          ,
          <source>Proceedings of the International Conference on Software Engineering and Knowledge Engineering</source>
          <year>2002</year>
          (SEKE
          <year>2002</year>
          ), pp.
          <fpage>175</fpage>
          -
          <lpage>182</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Chung</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Katalagarianos</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marakakis</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mertikas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mylopoulos</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Vassiliou</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          , “
          <article-title>From Information System Requirements to Designs: a Mapping Framework”</article-title>
          ,
          <source>Information Systems</source>
          , Vol.
          <volume>16</volume>
          , No.
          <volume>4</volume>
          ,
          <issue>1991</issue>
          , pp.
          <fpage>429</fpage>
          -
          <lpage>461</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Chung</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nixon</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yu</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Mylopoulos</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <source>Non-Functional Requirements in Software Engineering</source>
          , Kluwer Academic Publishing,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>ConceptBase</surname>
          </string-name>
          ,
          <article-title>A deductive object manager for meta databases</article-title>
          , Aachen University of Technology (RWTH),
          <source>Germany, version 5.2</source>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Greenspan</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mylopolous</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Borgida</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , “
          <article-title>On formal requirements modeling languages: RML revisited”</article-title>
          ,
          <source>16th Int. Conf. on Software Eng.</source>
          ,
          <year>1994</year>
          , pp.
          <fpage>135</fpage>
          -
          <lpage>147</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Jacobson</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Booch</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Rumbaugh</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <source>The Unified Software Development Process</source>
          , Addison Wesley Longman, Inc., USA,
          <year>1999</year>
          .s
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Kato</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ; Komiya,
          <string-name>
            <surname>S.</surname>
          </string-name>
          ; Saeki,
          <string-name>
            <given-names>M.</given-names>
            ;
            <surname>Ohnishi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ;
            <surname>Nagata</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ;
            <surname>Yamamoto</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          ; Horai,
          <string-name>
            <surname>H.</surname>
          </string-name>
          ,
          <article-title>"A model for navigating interview processes in requirements elicitation"</article-title>
          , Eighth Asia-Pacific Software Engineering Conference,
          <year>2001</year>
          (APSEC
          <year>2001</year>
          ), pp.
          <fpage>141</fpage>
          -
          <lpage>148</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Kruchten</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , “
          <article-title>Modeling Component Systems with the Unified Modeling Language”</article-title>
          ,
          <source>Int. Workshop on Component-Based Software Eng.</source>
          ,
          <year>1998</year>
          , http://www.sei.cmu.edu/cbs/icse98/papers/p1.html.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Krutchen</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , “
          <article-title>What is the Rational Unified Process?”</article-title>
          ,
          <string-name>
            <surname>Rational Edge</surname>
          </string-name>
          e-zine, http://www.therationaledge.com/content/jan_01/f_rup_pk.html, January,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Tsai</surname>
            ,
            <given-names>J.J.P.</given-names>
          </string-name>
          ,
          <article-title>"A knowledge-based approach to requirements analysis"</article-title>
          ,
          <source>7th Int. Conf. on Tools with Artificial Intelligence</source>
          ,
          <year>1995</year>
          , pp.
          <fpage>26</fpage>
          -
          <lpage>33</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Maiden</surname>
            ,
            <given-names>N.A.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuim</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <article-title>and</article-title>
          <string-name>
            <surname>Ncube</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          “
          <article-title>Rethinking Process Guideance for Software Component Selection"</article-title>
          ,
          <source>Proc. of the 1st Int. Conf. of Component Based Eng.</source>
          ,
          <year>2002</year>
          , pp.
          <fpage>151</fpage>
          -
          <lpage>164</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Mylopoulos</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chung</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Nixon</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , “
          <article-title>Representing and using nonfunctional requirements: a process-oriented approach”</article-title>
          <source>IEEE Trans. on Software Eng.</source>
          ,
          <volume>18</volume>
          (
          <issue>6</issue>
          ),
          <year>June 1992</year>
          , pp.
          <fpage>483</fpage>
          -
          <lpage>497</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Mylopoulos</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Borgida</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jarke</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Koubarakis</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , “Telos:
          <article-title>Representing Knowledge about Information Systems”</article-title>
          ,
          <source>ACM Trans. Info</source>
          . Sys.,
          <volume>8</volume>
          (
          <issue>4</issue>
          ),
          <year>October 1990</year>
          , pp.
          <fpage>325</fpage>
          -
          <lpage>362</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Ncube</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Maiden</surname>
          </string-name>
          , N.,
          <article-title>“Guiding parallel requirements acquisition and COTS software selection”</article-title>
          ,
          <source>Proc. of the IEEE Int. Symp. on Requirements Eng</source>
          .
          <year>1999</year>
          , pp.
          <fpage>133</fpage>
          -
          <lpage>140</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Nuseibeh</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Easterbrook</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <article-title>"Requirements engineering: a roadmap", in</article-title>
          <string-name>
            <surname>A</surname>
          </string-name>
          . Finkelstein, editor,
          <source>"The Future of Software Engineering"</source>
          , Special Volume published in
          <source>conjunction with ICSE</source>
          <year>2000</year>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Rolland</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Grosz</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <article-title>"A general framework for describing the requirements engineering process"</article-title>
          ,
          <source>IEEE Int. Conf. on Systems, Man, and Cybernetics</source>
          ,
          <year>1994</year>
          , vol.
          <volume>1</volume>
          , pp.
          <fpage>818</fpage>
          -
          <lpage>823</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Yu</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , “
          <article-title>Modelling Strategic Relationships For Process Reengineering”</article-title>
          ,
          <source>DKBS-TR-94-6</source>
          , Univ. of Toronto, Canada, Dec.
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>van Lamsweerde</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Letier</surname>
          </string-name>
          , E., “
          <article-title>Handling Obstacles in Goal-Oriented Requirements Engineering”</article-title>
          ,
          <source>IEEE Trans. on Software Eng.</source>
          , Vol.
          <volume>26</volume>
          ,
          <year>September 2000</year>
          , pp.
          <fpage>978</fpage>
          -
          <lpage>1005</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Wooldridge</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Ciancarini</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <article-title>"Agent-Oriented Software Engineering: The State of the Art," Handbook of Software Engineering</article-title>
          and Knowledge Engineering, World Scientific Publishing Co.,
          <year>2001</year>
          , pp
          <fpage>1</fpage>
          -
          <lpage>28</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Wooldridge</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jennings</surname>
            ,
            <given-names>N.R.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Kinny</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <article-title>"A Methodology for Agent-Oriented Analysis and Design"</article-title>
          <source>Proc. 3rd Int. Conf. on Autonomous Agents</source>
          ,
          <year>1999</year>
          , pp.
          <fpage>69</fpage>
          -
          <lpage>76</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          <source>A_001</source>
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          1.
          <article-title>Interacts with RE to provide domain knowledge</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          2.
          <article-title>Interacts with RE to validate deliverables</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          3.
          <article-title>Interacts with proposed system to provide reference assistance to borrowers</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          1. UserAgent_A_
          <volume>002</volume>
          (senior librarian)
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          2. UserAgent_A_
          <volume>004</volume>
          (borrower)
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          3. DeveloperAgent_A_
          <volume>009</volume>
          (requirements engineer)
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          1. G_002
          <article-title>The DLS should be easy to use</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          2. G_004
          <article-title>The DLS should have high availability</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          3. G_005
          <article-title>The DLS should have fast performance even when the system is loaded with the maximum number of users</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          4. G_006
          <article-title>The users should be able to access a large number of diverse objects</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          5. G_007
          <article-title>The users should be able to search, browse, and retrieve objects quickly and efficiently from remote locations</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          6. G_008
          <article-title>The librarians should be able to maintain the library quickly</article-title>
          and efficiently
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          7. G_009
          <article-title>The librarians should be able to provide reference support quickly and efficiently</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          8. G_011
          <article-title>The DLS should be scaleable in order to accommodate new collections or additions to the current collections</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          9. G_012
          <article-title>The DLS should be secure</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          <source>Trained in Library Science</source>
          ,
          <fpage>0</fpage>
          -2 years experience
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>