1. INTRODUCTION
A growing body of studies [1–4] demonstrates discrepancies
between design artifacts produced before the implementation and
the design extracted from the delivered implementation. The
purpose of this study is to analyze these discrepancies and to
present observations on the purpose, evolution or erosion, of the
design artifacts.
“Software design artifact” is the subject of diverging
interpretations in the literature. Two definitions are used in this
article:
1. Pre-Implementation Design (Pre-ID) artifact: This
software design artifact is produced early in the
development cycle and before the code is written [2]. It
represents the planned design of the system.
2. Post-Implementation Design (Post-ID) artifact: This
software design artifact is obtained through the reverseengineering
of the source code [5]. It represents the
effective design of the system.
Pre-ID artifacts are the result of design activities performed
following requirements analysis and prior to code implementation.
The Pre-ID artifacts represent early snapshots of the design
activities. Not all design decisions are documented in an artifact.
In the real software development process some design activities
are performed continuously until the code is delivered. Many
design activities are implicit, which cause the design to drift from
what was planned in the Pre-ID artifact to what is seen in the
Post-ID artifact. While some domains (e.g. medical, avionics)
might impose a strict concordance between Pre-ID and Post-ID,
this study shows that typical software development will show a
drift between the planned architecture and the architecture found
in the delivered code. Therefore, the question is: Is this drift
harmful, beneficial or irrelevant?
This study aims at analyzing the nature of discrepancies between
Pre-ID and Post-ID artifacts in a disciplined software
development process. The goal is to formulate recommendations
and suggest practices regarding the Pre-ID activities. The analysis
is based on the data collected during a software development
project realized in close collaboration with an industrial partner.
Section 2 presents related work in the domain of software design.
Section 3 presents the context of this industry-based software
project. Section 4 presents the analysis of the collected data.