Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
base objects and system objects are application independent. They are used during
OOD to enhance the application model with implementation specic information. Base
objects represent basic functionality, such as basic data structures, numbers and predened
user interface objects. System objects represent system functionality of the underlying
hardware and system software, such as an interface to a database management system
and a debugger window.
Concerning the third and last point, the object-oriented paradigm is used both for pro-
gramming languages and for database systems. The problems of coupling programming
languages and database systems based on dierent modeling paradigms are well known
as impedance mismatch . This metaphor describes the problems caused by two dierent
paradigms, the programming language paradigm and the database paradigm. Whereas
traditional programming languages may be characterized as being procedural, supporting
record-at-a-time processing and complex structured data types, traditional (relational)
database systems can be characterized as being declarative, supporting set-at-a-time pro-
cessing, and simple data types. The object-oriented paradigm helps to overcome the
disadvantages of working with two dierent worlds. The data model of an object-oriented
database system is based on similar concepts as the semantic model underlying an object-
oriented programming language. The schema of an object-oriented database system con-
sists of a set of objects which are developed in terms of the same analysis and design
concepts as object-oriented systems in general. The seaming schism between database
view and application program view is resolved due to the same underlying object-oriented
modeling paradigm.
Design Design
Implementation Implementation
4 rk
e wo t
m en
Fra lopm
ve
De
introduced. The model distinguishes two kinds of development cycles, one for the deve-
lopment of specic projects and the other for the development of reusable components.
For the former, again three dierent development cycles are oered depending on the
degree of reusability. Each development cycle consists of three phases, namely analysis,
design, and implementation, which are iteratively processed. However, the life cycle mo-
del does not constrain the underlying development method in terms of which steps have
to be processed and which outputs produced. To this extent the life cycle model is also a
generic life cycle model.
Figure 2 depicts the four kinds of development cycles of the object-oriented life cycle
model. During Development from Scratch (1) the object classes of the application at hand
are developed from scratch. Descriptions of these classes resulting from analysis, design
and implementation are stored as analysis results, design results, and implementation
results, respectively, in a conguration management system, called product database. The
information stored in the product database serves two purposes. Firstly, it is used for the
development of reusable components (see (4) below), and secondly, it eases the iterative
processing of the various phases. Since the feedback loops from implementation to design
and from design to analysis should be taken with care they are depicted with dashed lines.
During Development through Reuse (2) the object classes of the application at hand are
all constructed from reusable components of a repository, called framework database . If
no component with the required behavior is found in the database the specication of the
system has to be slightly modied to t existing components or the development has to
switch to Development with Reuse (see (3) below). Note that reuse covers all development
phases.
During Development with Reuse (3) the object classes of the application at hand are
looked up in the framework database. If no components proper for the current problem
can be found, the object classes are newly developed. The results of development with
7
reuse are stored in the product database. Note that development with reuse describes
the current state of practice. However, on the long run we should go for development
through reuse. As a prerequisite for both (2) and (3) we have to stock the framework
database. Thus, during Development of Reusable Components (4) precursor applications
of a particular problem domain stored in the product database are analyzed and/or general
domain analysis of this problem domain is performed. As a result, application frameworks,
i.e. reusable components for the inspected problem domain are developed and stored in
the framework database.
Development based on reusability has impacts on the project organization of an enter-
prise. There are at least two new job proles necessary to put into practice the life cycle
model of Figure 2. Firstly, there must be a reuse promotor who motivates members of a
particular project to reuse existing components. And secondly, there must exist a project
independent reuse administrator responsible for stocking the framework database. The
latter task is also known as experience factory in the literature [1].
reuse in the large is more than just a lip service the following organisational principles have
to be taken seriously. Firstly, object-oriented development is development by investment .
Reusable components have to be developed although no client will pay the initial costs of
component development. Secondly, object-oriented development has to go for a no-not-
invented-here syndrom . The developers have to be motivated to reuse existing components
despite the extra work to learn the contents of the framework database. And thirdly, new
metrics like the lines-of-reused-code metric are necessary to take reusability into account.
We conjecture that the above mentioned obstacles are resolved in the not-so-distant
future, thus making object-oriented development a real alternative for building quality
systems.
Acknowledgements
Thanks to Jan Overbeck and Michael Schre
, who contributed to the development of the
object-oriented life cycle model, and to Stefan Rausch-Schott and Werner Retschitzegger
for helpful comments on earlier drafts of the paper.
REFERENCES
1. V. Basili, The Experience Factory and its Relationship to Other Improvement Para-
digms. In I. Sommerville, M. Paul (eds.): Software Engineering (ESEC'93), Springer,
LNCS 717, 1993, 68-83.
2. T. DeMarco, Structured Analysis and Systems Specication, Prentice-Hall, 1979.
3. I. Jacobson, Object-oriented Software Engineering, Addison-Wesley, 1992.
4. R.E. Johnson, A B. Foote, Designing reusable classes, Journal of Object-Oriented
Programming (JOOP), Vol. 1, No. 2, 1988, 22-35.
5. J. Martin, Information Engineering, Prentice Hall, 1990.
6. B. Meyer, Tools for the New Culture: Lessons from the Design of the Eiel Class
Library, Communications of the ACM, Vol. 33, No. 9, 1990, 68-88.
7. D.E. Monarchi, G.I. Puhr, A Research Typology for Object-Oriented Analysis and
Design, Communications of the ACM, Vol. 35, No. 9, 1992, 35-47.
8. T.W. Olle, J. Hagelstein, I.G. Macdonald, C. Rolland, H.G. Sol, F.J.M. Van Assche,
A.A. Verrijn-Stuart, Information Systems Methodologies: A Framework for Under-
standing, 2nd edition, Addison-Wesley, 1991.
9. O.M. Nierstrasz, A Survey of Object-Oriented Concepts. In W. Kim, F. Lochovsky
(eds.): Object-Oriented Concepts, Databases and Applications, ACM Press and
Addison-Wesley, 1989.
10. D. Tsichritzis, Object-Oriented Development for Open Systems. In G.X. Ritter(ed.):
Information Processing 89 - IFIP World Computer Congress, North-Holland, 1989,
1033-1040.
11. D.C. Tsichritzis, O. Nierstrasz, S. Gibbs, Beyond Objects: Objects, International
Journal of Intelligent and Cooperative Information Systems, Vol. 1, No. 1, 1992.
12. P.T. Ward, S. Mellor, Structured Development for Real-time Systems, Prentice-Hall,
1985.
13. E. Yourdon, Modern Structured Analysis, Prentice Hall, 1989.