22 research outputs found
AN INDUCTIVE METHOD FOR DISCOVERING DESIGN PATTERNS FROM OBJECT-ORIENTED SOFTWARE SYSTEMS
Object-Oriented Design Patterns (OODPs) have been proposed as a
technique to encapsulate design experience and aid in design reuse.
However, so far, there is very little empirical evidence about what we
can expect from this emergent technology. For instance, to date little
research has focused on the development of techniques for discovering
workable patterns that can be captured, formalized, packaged, and
quantitatively evaluated. Our work is a step in this direction. In
this paper we present an inductive method aimed at helping us discover
OODPs in existing OO software systems. It encompasses a set of
procedures rigorously defined in order to be repeatable and usable by
practitioners who are not acquainted with reverse architecting
processes. Guidelines are provided and a case study is shown that
demonstrates the usefulness of the approach.
(Also cross-referenced as UMIACS-TR-96-10
A Validation of Object-Oriented Design Metrics as Quality Indicators
This paper presents the results of a study conducted at the University
of Maryland in which we experimentally investigated the suite of
Object-Oriented (OO) design metrics introduced by [Chidamber&Kemerer,
1994]. In order to do this, we assessed these metrics as predictors of
fault-prone classes. This study is complementary to [Li&Henry, 1993]
where the same suite of metrics had been used to assess frequencies of
maintenance changes to classes. To perform our validation accurately,
we collected data on the development of eight medium-sized information
management systems based on identical requirements. All eight projects
were developed using a sequential life cycle model, a well-known OO
analysis/design method and the C++ programming language. Based on
experimental results, the advantages and drawbacks of these OO metrics
are discussed. Several of Chidamber&Kemerer's OO metrics appear to be
useful to predict class fault-proneness during the early phases of the
life-cycle. We also showed that they are, on our data set, better
predictors than "traditional" code metrics, which can only be
collected at a later phase of the software development processes.
(Also cross-referenced as UMIACS-TR-95-40
Measuring the Impact of Reuse on Quality and Productivity in Object-Oriented Systems
This paper presents the results of a study conducted at the University
of Maryland in which we assessed the impact of reuse on quality and
productivity in OO systems. Reuse is assumed to be a very effective
strategy for software industry to build high-quality
software. However, there is currently very little empirical
information about what we can expect from reuse in terms of
productivity and quality gains. This also applies to OO development
which is supposed to facilitate reuse. Our experiment is one step
towards a better understanding of the benefits of reuse in an OO
framework, considering currently available technology. Data was
collected, for four months, on the development of eight medium-size
management information systems with equivalent requirements. All eight
projects were developed using the Waterfall Software Engineering Life
Cycle Model, an Object-Oriented (OO) design method and the C++
programming language. This study indicates significant benefits from
reuse in terms of reduced defect density and rework as well as
increased productivity.
(Also cross-referenced as UMIACS-TR-95-2
Analytical and Empirical Evaluation of Software Reuse Metrics
How much can be saved by using pre-existing (or somewhat modified)
software components when developing new software systems? With the
increasing adoption of reuse methods and technologies, this question
becomes critical. However, directly tracking the actual cost savings due
to reuse is difficult. A worthy goal would be to develop a method of
measuring the savings indirectly by analyzing the code for reuse of
components. The focus of this paper is to evaluate how well several
published software reuse metrics measure the ``time, money and quality''
benefits of software reuse. We conduct this evaluation both analytically
and empirically. On the analytic front, we first develop some properties
that should arguably hold of any measure of ``time, money and quality''
benefit due to reuse. We assess several existing software reuse metrics
using these properties. Empirically, we constructed a toolset (using
GEN++) to gather data on all published reuse metrics from C++ code; then,
using some productivity and quality data from ``nearly replicated''
student projects at the University of Maryland, we evaluate the
relationship the known metrics and the process data. The results show that
different reuse metrics can be used as predictors of different quality
attributes, and suggest possible directions for improving the known
measures.
(Also cross-referenced as UMIACS-TR-95-82
Characterizing and Assessing a Large-Scale Software Maintenance Organization
One important component of a software process is the organizational
context in which the process is enacted. This component is often
missing or incomplete in current process modeling approaches. One
technique for modeling this perspective is the Actor-Dependency (AD)
Model. This paper reports on a case study which used this approach to
analyze and assess a large software maintenance organization. Our goal
was to identify the approach's strengths and weaknesses while
providing practical recommendations for improvement. The AD model was
found to be very useful in capturing the important properties of the
organizational context of the maintenance process, and aided in the
understanding of the flaws found in this process. However, a number of
opportunities for extending and improving the AD model were
identified. Among others, there is a need to incorporate quantitative
information to complement the qualitative model.
(Also cross-referenced as UMIACS-TR-94-112
Understanding and Predicting the Process of Software Maintenance Releases
One of the major concerns of any maintenance organization is how
to estimate the cost of subsequent releases of software systems. Planning
the next release, maximizing the increase in functionality and improving
the quality are vital to successful maintenance management. The objective
of this paper is to present the results of a case study in which an
incremental and inductive approach was used to build a model for
predicting software maintenance releases in a large-scale software
maintenance organization. This study was conducted in the Flight Dynamics
Division (FDD) of the NASA Goddard Space Flight Center (GSFC). This
organization is representative of many other software maintenance
organizations. Over one hundred software systems totalling about 4.5
million lines of code are maintained by this organization. Many of these
systems have been maintained for many years and regularly produce new
releases. The maintenance costs in this organization have increased
considerably over the last few years. This paper shows the predictive
model developed for the FDD's software maintenance release process.
Lessons learned during the establishment of a measurement-based software
maintenance improvement program in this organization are also described
and future work is outlined.
(Also cross-referenced as UMIACS-TR-95-79
Qualitative Analysis for Maintenance Process Assessment
In order to improve software maintenance processes, we first need to be
able to characterize and assess them. These tasks must be performed in
depth and with objectivity since the problems are complex. One approach is
to set up a measurement-based software process improvement program
specifically aimed at maintenance. However, establishing a measurement
program requires that one understands the problems to be addressed by the
measurement program and is able to characterize the maintenance
environment and processes in order to collect suitable and cost-effective
data. Also, enacting such a program and getting usable data sets takes
time. A short term substitute is therefore needed.
We propose in this paper a characterization process aimed specifically at
maintenance and based on a general qualitative analysis methodology. This
process is rigorously defined in order to be repeatable and usable by
people who are not acquainted with such analysis procedures. A basic
feature of our approach is that actual implemented software changes are
analyzed in order to understand the flaws in the maintenance process.
Guidelines are provided and a case study is shown that demonstrates the
usefulness of the approach.
(Also cross-referenced as UMIACS-TR-96-7
white paper Enhancing Rational Unified Process for Capability Maturity Model Integration Compliance: A Methodological Approach
truste
Supporting Software Process Evolution in Adele/Tempo
Software process evolution corresponds to the act of improving the existing prescriptive software process models in a controlled and supported way. As software processes change constantly, it is therefore necessary to support one or more methods for assisting environment administrators in improving models. Changes are made in order to adapt software process models to new requirements, correct inconsistencies encountered in the course of execution, and modify, add or remove certain constraints. This article shows how software process evolution is supported in the Tempo. Tempo is a process-oriented software engineering environment where software processes are formally described in an object-oriented process schema. In Tempo, a process schema is comprised of descriptions of software agents, software products and software processes. A new approach is presented which supports the dynamic evolution of software process descriptions. In this approach, software process change is the result of tailoring the behavior of software objects manipulated during software process enaction