Information Technology Reference
In-Depth Information
Traceability is the degree to which dependencies are made explicit between
different artifacts such as stakeholder needs, requirements, design, system
components, source code, etc. [27]. This issue has been investigated especially in
early phases of software development such as requirements engineering. Trace
dependencies can have different types, such as usage and abstraction dependencies
(e.g. refinement and tracing [31]), and traceability matrices [15] have been widely
used to record such dependencies. Since a change in an early phase can be traced
through the development process, traceability matrices allow developers to improve
software understanding and maintainability. They may ensure, for example, whether
there are test cases for all requirements or whether stakeholders' requirements are
fulfilled in the final system, both forward and backward. We claim that these matrices
may be further exploited beyond their current use. In particular, the evaluation of the
information captured by traceability matrices provides a means both to detect
crosscutting and to assess the degree of crosscutting in software systems.
In this paper, we propose a definition of crosscutting based on the study of trace
dependencies through an extension to traceability matrices. This definition allows
developers both to identify crosscutting concerns in early phases [6] and to trace
crosscutting concerns from early stages to subsequent phases of the software life
cycle. We describe a conceptual framework with precise definitions of scattering,
tangling and crosscutting. Although there are other definitions of crosscutting in the
literature, these definitions are usually very tied to the implementation level, such as
[23]. A study of similarities and differences of such definitions and ours is out of the
scope of this paper. An extended description of our definition can be found in [8-9].
The rest of the paper is structured as follows. In Sect. 2, we introduce our
definition of crosscutting based on trace dependencies. In Sect. 3, we describe how to
represent and visualize crosscutting in a matrix and how to derive this matrix from the
dependency matrix using a scattering and tangling matrix. Transitivity of trace
relations is shown in Sect. 4. Then in Sect. 5, we show some case studies where we
apply the concepts introduced in the previous sections. We discuss the relationship
between crosscutting and related concepts such as coupling and decomposition in
Sect. 6, also making some observations about our framework. Finally, in Sect. 7 and 8
we present related work and conclusions of the paper.
2 Crosscutting Pattern
In this section, we first introduce an intuitive notion of crosscutting, which will be
generalized in a crosscutting pattern. Based on this pattern we provide precise
definitions of scattering, tangling and crosscutting, and their relations.
For example, assume we have three concerns shown as elements of a source in
Fig. 1, and four requirements (e.g., use cases) shown as elements of a target.
This picture is consistent with the citation at the beginning of the Introduction.
Intuitively, we could say that s1 crosscuts s3 for the given relation between source
and target elements. In this figure we only show two abstraction levels, but multiple
intermediate levels between source and target may exist. This picture also fits other
Search WWH ::




Custom Search