27.03.2014 Views

SEKE 2012 Proceedings - Knowledge Systems Institute

SEKE 2012 Proceedings - Knowledge Systems Institute

SEKE 2012 Proceedings - Knowledge Systems Institute

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Table I shows the relationships between hello.c and<br />

anymessage.c in terms of attribut es such as size,<br />

complexity, etc. We ran the wc program in the Unix<br />

environment [http://www.computerhope.com/unix/uwc.htm]<br />

on hello.c and anymessage.c. As predicted, the reusable<br />

program is large r and has more parameters. We also<br />

hypothesize that anymessage.c will be more complex,<br />

require more testing, require more design know ledge, have<br />

higher execution speed, and require more time to develop. Thus<br />

Table I summarizes our theoretical model of the relationship<br />

between a one-use and a reusable component. In the remainder<br />

of this paper, w e will empirically evaluate certain aspects of<br />

this model.<br />

TABLE I: hello.c (one-use component) VS. anymessage.c<br />

(reusable component)<br />

Attribute hello.c anymessage.c<br />

Size (lines, chars,<br />

executable)<br />

(1, 8, 9878) (10, 25, 9931)<br />

Parameters 0 2<br />

Domain <strong>Knowledge</strong> Low Medium<br />

Testing < ><br />

Design < ><br />

Execution Speed < ><br />

Effort < ><br />

B. Motivation<br />

For practitioners and researchers, there are two motivations<br />

in our stu dy. One is that even though the relation between<br />

software quality and reuse has been established, no empirical<br />

study has been foun d comparing one-use and equivalent<br />

reusable components. The other motivation is that practitioners<br />

and researchers need to address the problem of how to build<br />

reusable components. This exploratory study used a<br />

comprehensive list of reuse design principles presented in the<br />

past two decades for software reuse and identified the most<br />

used reuse design principles. This can be a guideline for<br />

building reusable components. One major limitation of our<br />

study is that the components studied are small in size.<br />

However, this is an exploratory study and with 107 subjects,<br />

nearly all of whom have some experience in software<br />

engineering. The sample size is adequate for comparing oneuse<br />

and reusable components. Also, this exploratory study is a<br />

baseline for future study on designing, building, and measuring<br />

reusable components.<br />

One study that is similar to ours is presented by Seepold<br />

and Kunzmann [14] for components written in VHDL .<br />

However, the major limitation in that study was that it involved<br />

only four com ponents - two one-use and two equivalent<br />

reusable components. According to that study the complexity,<br />

effort and productivity were all higher for reusable<br />

components. The reasons identified were due to overhead in<br />

domain analysis, component verification and documentation.<br />

This paper is organized as follows: section II provides an<br />

overview of the reuse design process and principles; section III<br />

presents the hypotheses analyzed in this study; section IV<br />

discusses the method employed, metrics used for evaluation,<br />

and the s-stemmer component used in our study; section V<br />

presents the results and discussion; and section VI presents the<br />

conclusions and future work.<br />

II. REUSE DESIGN PRINCIPLES<br />

How to make a software component reusable has been one<br />

of the key questions for software reuse research. Reusable<br />

components may be built from scratch or re-engineered from<br />

existing artifacts. As can be seen from Fig. 1., the quality of the<br />

reusable components may be measured in terms of safety<br />

(when implemented and/or merged with another component),<br />

execution speed (generally the reusable components are slower<br />

than the one-use components), cost, and size. Size may be<br />

measured by source lines of code (SLOC). We assume that the<br />

higher the SLOC, the higher will be the complexity resulting in<br />

higher numbers of faults and parameters.<br />

Many reuse design principles have been proposed. These<br />

are summarized in the mindmap in Fig. 1 based on the work by<br />

[1]. The principles are at var ious levels of abstraction. The 3<br />

C's model of reuse design [15], for example, was developed to<br />

explore the reuse design process in a general framework. It<br />

specifies three levels of design abstraction: 1. Concept –<br />

representation of the abstract semantics. 2. Content –<br />

implementation details of the code or software. 3. Context –<br />

environment required to use the component.<br />

III. HYPOTHESES<br />

This paper aims primarily to study and test four<br />

hypotheses related to the reusable components. Due to the<br />

higher complexity and functionality of the reusable<br />

components, their size (in SLOC - source lines of code), effort<br />

(in hours), the productivity (in source lines of code per hour)<br />

and number of parameters should be significantly higher than<br />

their equivalent one-use components. The choice of the<br />

metrics is discussed in section 4.3. These hypotheses are<br />

summarized in equations (1), (2), (3), and (4). SLOC Reuse is the<br />

actual source lines of code in the reusable component while<br />

SLOC ReuseDiff is the difference in the source lines of code<br />

between the reusable and one-use components. The difference<br />

is considered for the productivity of reusable components<br />

because the reusable components studied in this paper were<br />

not built from scratch; instead , they were reengineered by<br />

modifying the one-use components based on the reuse design<br />

principles given in Fig. 1.<br />

SLOC Reuse > SLOC one-use (1)<br />

Effort Reuse > Effort one-use (2)<br />

SLOC ReuseDiff/hour > SLOC one-use/hour (3)<br />

Parameters Reuse > Parameters one-use (4)<br />

195

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!