inference engine. The process of building the knowl-
edge base involves the selection of a knowledge rep-
resentation method, knowledge acquisition, and pos-
sibly low-level knowledge encoding. In order to cre-
ate an inference engine a reasoning technique must be
selected, and the engine has to be programmed.
In the formal analysis of RBS (Lig˛eza, 2006)
some important aspects of the design and implemen-
tation are identified. The first concerns rulebase de-
sign, including: the formal logical language of the
representation, formal syntax of the representation
method, representation expressiveness, which is re-
lated to the expressiveness of the underlying logic,
and particular rule syntax. The second comes down
to the inference engine implementation, including:
inference strategy, interpreter model, including rule
matching method, and conflict resolution algorithm.
In order to design and implement a RBS in an
efficient way, the knowledge representation method
should support the designer, introducing a scalable vi-
sual representation. As the number of rules exceeds
even relatively very low quantities, it is hard to keep
the rule-base consistent, complete, and correct. These
problems are related to knowledge-base verification,
validation, and testing. To meet security requirements
a formal analysis and verification of RBS should be
carried out (Vermesan and Coenen, 1999). This anal-
ysis usually takes place after the design stage. How-
ever, there are design and implementation methods,
such as the XTT, that allow for on-line verification
during the design and gradual refinement of the sys-
tem.
Supporting rulebase modelling remains an essen-
tial aspect of the design process. In this area number
of approaches are present. The simplest one consists
in writing rules in the low-level RBS language, such
as one of Jess (www.jessrules.com). A more so-
phisticated approaches are based on the use of some
classic visual rule representations. This is a case of
LPA VisiRule, (www.lpa.co.uk) which uses decision
trees. Approaches such as XTT (Nalepa, 2004) aim at
developing a new language for visual rule modelling.
While RBS found wide range of industrial appli-
cations in „classic AI domains” e.g. decision support,
system diagnosis, or intelligent control, the technol-
ogy did not find applications in the mainstream soft-
ware engineering – due to some fundamental differ-
ences between knowledge and software engineering.
3 SOFTWARE AND
KNOWLEDGE ENGINEERING
Rule-based systems (RBS) constitute today one of
the most important classes of the so-called Knowl-
edge Based Systems (KBS). Building real-life KBS
is a complex task. Since their architecture is fun-
damentally different from classic software, typical
Software Engineering approaches cannot be applied
efficiently. Some specific development methodolo-
gies, commonly referred to as Knowledge Engineer-
ing (KE), are required.
What makes KBS distinctive is the separation of
knowledge storage (the knowledge base) from the
knowledge processing facilities. In order to store
knowledge, KBS use various knowledge representa-
tion methods, which are declarative in nature. In case
of RBS these are production rules. Specific knowl-
edge processing facilities, suitable for particular rep-
resentation method being used, are selected then. In
case of RBS these are logic-based inference engines.
The knowledge engineering process, involves two
main tasks: knowledge base design, and inference en-
gine implementation. Furthermore, other tasks are
also required, such as: knowledge base analysis and
verification, and inference engine optimization. The
performance of a complete RBS should be evaluated
and validated. While this process is specific to expert
systems, it is usually similar in case of other KBS.
What is important about the process, is the fact
that it should capture the expert knowledge and rep-
resent it in a way that is suitable for processing (this is
the task for a knowledge engineer). The actual struc-
ture of a KBS does not need to be system specific – it
should not „mimic” or model the structure of the real-
world problem. However, the KBS should capture
and contain knowledge regarding the real-world sys-
tem. The task of programmers is to develop process-
ing facilities for the knowledge representation. The
level at which KE should operate is often referred
to as the knowledge level (Newell, 1982). It should
be pointed out, that in case of KBS there is no sin-
gle universal engineering approach, or universal mod-
elling method (such as UML in software engineer-
ing). Different classes of KBS may require specific
approaches, see (Lig˛eza, 2006; Torsun, 1995).
Software engineering (SE) is a domain where a
number of mature and well-proved design methods
exist; furthermore, the software development process
and its life cycle is represented by several models.
One of the most common models is called the water-
fall model (Sommerville, 2004). In the software engi-
neering process a number of development roles can be
identified: users and/or domain experts, system ana-
ENASE 2007 - International Conference on Evaluation on Novel Approaches to Software Engineering
42