\nop{
The introduction of object oriented technology in the practice
of software engineering has been of significant influence on
the software life cycle.
}
\nop{
Traditionally, the software life cycle is subdivided in an analysis phase
in which the requirements for a system are laid down,
a design phase in which a conceptual architecture for a system meeting the requirements
put forward in the analysis phase is proposed,
an implementation phase in which the conceptual structure resulting from the design phase
is embodied in actual software and an operational phase that includes
installing and maintenance of the system.
The transition from one phase to the next usually involves a significant
effort of translating the results into the formalism appropriate to that phase.
}
The use of object oriented techniques in the design
and implementation phases of software development projects
has resulted in a shift of emphasis in favor of the design phase
since the effort of implementing a system in an object oriented programming language
on the basis of an object oriented design may be regarded as a process
of refining the decisions laid down in the design.
The use of object oriented techniques has thus effectively reduced the gap between
the concept-oriented world of design and
the technology-oriented world of implementation. C.f. [WWW90] and [Meyer88].
This development may be taken a step further by proposing a
logic-based object oriented language that allows to employ
an abstract specification of an object oriented system as a prototype.\ftn{
In this context I may remark that, independent of the introduction of
object oriented technology, the need for prototyping
has arisen in software engineering practice
to accommodate the
difficulty of eliciting the proper requirements
in the analysis phase.
It is generally acknowledged that prototyping is well supported
by object oriented programming languages.
}
We will introduce a distributed logic programming language DLP
that allows to specify an object oriented system in a highly
abstract way.
The language proposed extends logic programming with features specifically
geared towards the specification of object oriented
systems and thus corrects what has been commonly felt to be one of the major
drawbacks of logic programming:
the lack of support for specifying large systems in a structured way.
In addition to object oriented features, the language DLP supports
parallelism, by allowing objects to have activity of their
own.
For many problem areas, concurrency or parallelism is a very natural phenomenon.
Parallism and distribution fit in well with the object oriented paradigm
since the actual (possibly concurrent) behavior or location of an object
may remain hidden for the clients of an object.
An important application of DLP lies in the area of distributed knowledge based systems.
We feel that the object oriented modeling approach may support
a proper distribution of the various reasoning tasks that are involved,
by taking the natural activity of the actors in a domain as
the guideline in developing an intelligent system.