1. INTRODUCTION
The overall cost of computer-based systems is associated to the
hardware where the system will be deployed and to the cost of
software development and maintenance. The cost of hardware has
systematically decreased over the last few decades. Moreover it
represents an initial and well-defined fixed cost. This scenario
indicates that the main restrictive factor for the development of
computer-based systems tends to be the cost of software. Software
represents a great share in the total cost of systems development.
Thus, the production of cost-effective quality software is essential
for the future of computer-based systems.
Software Engineering discipline has the cost-effective planning
and development of software as a goal [11]. Software is abstract
and intangible. It is not composed of materials, governed by
physical laws or constructed within manufacturing processes.
Software processes are complex and, like every intellectual
process, dependent on human judgment.
Software Engineering embraces a group of three fundamental
elements: methods, tools and procedures [7]. Together they allow
the software manager to control the software development process
and provide the practitioner with a base for the construction of
high quality productive software. The sequence of phases or
stages that the software has to go through from its initial
conceptualization to its final deployment and subsequent
maintenance life is called Software Paradigm or Software
Development Model.
The human aspect of software development emphasizes the
importance teaching the appropriate techniques, methods, models
and tools to future practitioners. Software development models are
especially important in this scenario since they provide the
structural framework where all the other activities involved in
developing professional software unleash [2].
During the last few decades several software development
models have been discussed in the context of Software
Engineering. Several comparisons have been performed and
published by different specialists in order to identify weaknesses
and strengths of different models. According to Song, et. al [12],
the existing comparisons are often largely based upon the
experiences of the practitioners and the intuitive understandings of
the authors. Consequently these comparisons tend to be subjective
and inaccurate. The use of a formal and well-defined technique
provides an effective way to compare development models.
Currently an immense diversity of software development
models exists. There is no ideal model, and different organizations
have developed approaches that are entirely different from one
another.
The objective of this work is to identify the main characteristics
of development models and compare them. We propose to adapt
the technique called CDM [12] (Compare Design Methodologies)
to compare models. The adapted technique is called CDMod