Design and Implementation of Intelligent Troubleshooting System
Design and Implementation of Intelligent Troubleshooting System
TROUBLESHOOTING SYSTEM
BY
MIKE DAVID
011/02/CSC/023
AUGUST 2017
STATUS
TITLE
( OR )
1 Front sheet
2 Abstract
3 Declaration of Originality
4 Contents
5 Acknowledgement
6 Aims/Objectives
9 Discussion
10 Conclusion
11 Future work
12 References
1
ACKNOWLEDGEMENT
I am eternally grateful to God almighty for life and mercy to get to this point in my educational
journey. Am grateful to my parents Mr. and Mrs. S. Akpan Ukpong, my siblings; Tonia, Nicky,
Cyril, Blessing, Gina and Emediong for their support. Am also grateful to my very special friend
Ada Okoro, my friends and course mates; Anthony Atta, Micah Aikhuele, Ayodeji Odulaja, Ovie
Emevor, Ogunmakin Niyi, Shedrack Udoka, Salimon Jamiu, Abraham and Moses Okotore for
I want to express my profound gratitude to my supervisor, MR. Prince Akinsola Akinsanya, for his
guidance and direction. Am grateful to the HOD of Computer Science Caleb University, Dr. A.O
Oloyede. I also want to express my gratitude to Prof. O. B. Longe, Dean of Student affairs Caleb
University.
2
ABSTRACT
Even with decades of technological improvements in their development computers like all other
systems still fail one way or another or develop faults. Solving these faults is easy only if the
diagnosis is effectively carried out. Applying artificial intelligence in the diagnosis of computer
faults has been in implementation for years and this paper is written to add yet another approach
to this practice.
The aim of this project is to design and develop an intelligent trouble shooting system using a
linear matching algorithm to develop a forward chaining inference as opposed to using an expert
system shell. The developed system exhibits a two inference process to arrive at solutions to
problem, and exhibited good results when evaluated using test cases, as well as other metrics such
as ease of interaction and expandability of its knowledgebase. The system is developed using
object oriented approach and developed using a waterfall model of software engineering. The
inference module of the system was developed using java programming language, while the
This project only catches a small scope of computer system problems to be solved with this
approach to developing an expert system. The prototype showed promising results in solving
common PC issues.
3
CONTENTS
2.2.2 HISTORY............................................................................................................................... 12
4
3.2.1 System Analysis Phase ........................................................................................................ 24
Utilized Software................................................................................................................................. 35
5
4.5.1 Modular Testing .................................................................................................................. 39
41
5 CONCLUSION ..................................................................................................................... 46
5.1 RECOMMENDATIONS.................................................................................................................. 46
REFERENCES ............................................................................................................................. 49
APPENDIX ................................................................................................................................... 52
Code snippet for inference engine ......................................................................................................... 52
TABLE OF FIGURES
Figure 4.9 Solutions window display causes and solution to a user power issue request. ........... 41
Figure 4.10 Result window displaying solution for user performance issue request. .................. 42
Figure 4.12 Cluster bar chart showing number of solutions resolved .......................................... 45
LIST OF TABLES
7
CHAPTER ONE
1 INTRODUCTION
All Systems whether organic or inorganic, mechanical or electrical, digital or analogue may
potentially fail at some point in time. Computer systems are no exception to this fact, as they
exhibit failures of different kinds, costing affected organization and individuals’ loss of valuable
data, resources and time. Troubleshooting is a knowledge intensive task, which requires skill and
experience. Even with ample knowledge available, troubleshooting may still prove to be a
Intelligent systems are components if artificial intelligence which aim to simulate the decision
model of experts in a particular domain or area of expertise. Expert systems as they are called are
not meant to replace but to support human experts in reaching accurate decisions faster. Expert
systems are designed using a rule-based approach. When the user selects an item on the user
the precise cause of system failure. An expert system has a knowledge base as a core part of its
system, from which it draws up data and facts to arrive at a decision. The knowledge base of an
expert system contains knowledge (data, facts and information) from experts in a specific field.
The inference engine is the decision maker of the expert system. It is a rule-based program which
This project is study which reports an implementation of a troubleshooting expert system. This
study utilizes the benefits of an expert system in the area of troubleshooting. Standard methods in
troubleshooting were acquired as knowledge base. An expert system software was designed using
8
the acquired knowledge. This system purpose is to mitigate error and time wastage in
troubleshooting.
system problem issues, can aid both experts and users in resolving system issues. The task of
accurately diagnosing a system failure can be highly prone to error, thereby leaving system with
probable additional damage from erroneous diagnosis. It is therefore imperative that computer
troubleshooting should be an undertaking which has standard steps and tested guidelines in its
approach to diagnosing and solving system problems. Even with industry best-practice solutions
available, the nature of some problems have varying methods of resolution. Currently available
expert system are commonly designed using expert system shells which were developed in the
early days of expert system development, and hence might not meet up with current demands of
such system. It is therefore imperative to develop new approaches, algorithms and/or models for
developing expert systems. An intelligent system is a very valuable tool to ICT technicians,
reducing error plagued diagnosis, reducing overall troubleshooting resolution by hours. Expert
systems do not forget knowledge once acquired, having negligible time lag in accessing data. It is
an invaluable tool to any computer technician for searching through a database that provides
The aim of this study is to develop a troubleshooting system that is intelligent, and enables users
to speedily system issues, and effectively utilize the computer system. The objectives of the study
is:
9
To develop a knowledgebase that is independent of the logic code (can be modified without
1.3 SCOPE
Computer problems could be hardware or software based in nature, or may even be categorized in
the nature of system utilization like network troubleshooting. Each type of system has its own set
of steps and diagnostic approach, as system attempting to solve every type of system altercation
would be too broad. Due to this reason this study focused on basic hardware problems, software
As with every research endeavor carried on this particular subject matter, this work aims to add to
the body of knowledge in this particular area of research. The results of this work should reveal
new methods or approach, algorithms or model to solving problems of similar nature. This write-
up facilitates an evaluation of already existing systems and their modes of implementation, to highlight
Time factor: Developing a system of this nature requires 3 months for each of the
are not well documented or easily obtained and interviewing experts is time consuming.
10
CHAPTER TWO
2 LITERATURE REVIEW
2.1 INTRODUCTION
Intelligent systems is a popular area of research in computer science stimulating lots of research
and development efforts over the years. Multiple research and study has been conducted into
developing and improving these systems, for both commercial and academic purposes. A study of
materials and documentations of research works carried out in this area provides deeper insight
into the theoretical basis of this study, as well as its vast potential in synthesizing expert decision
making. Improvements have been made in the development of these systems, albeit, there is still
room for more improvement. The sections that follow is an exploration of the theoretical
background for the study and a summation of related works reviewed by the researcher in a bid to
gain greater insight into the subject matter, its theoretical foundation and its current
Research and development of systems that can exhibit any form of reasoning or cognitive thinking
is a subfield of computer science, which integrates knowledge from other disciplines such as
neuroscience and psychology. This subfield of computer science is called artificial intelligence
According to the father of Artificial Intelligence John McCarthy, it is “The science and
to Nils J. Nilsson “Artificial intelligence is that activity devoted to making machines intelligent,
and intelligence is that quality that enables an entity to function appropriately and with foresight
11
in its environment”. It is a branch of computer science concerned with synthesis or modeling of
2.2.2 HISTORY
The first ever formal work recognized to be associated with artificial intelligence was carried out
by Warren McCulloch and Walter Pitts in 1943. They proposed a model of neurons described as
being in “on” or “off” states, and the “on” state being switch by stimuli from adjacent neurons.
Their work was based on the physiological function of neurons in the human brain, propositional
logic due to Russell and Whitehead, and Alan Turing’s theory of computation. They showed that
functions could be computed by a network of neurons and that logical operators could be realized
using a number of structured nets. In 1950 two Harvard undergraduates, Marvin Minsky and Dean
Edmonds built the first neural network computer called the SNARC. The term ‘artificial
In 1956 at Dartmouth College in Hanover New Hampshire, John McCarthy who later became one
of the most influential individuals in the field, organized a summer workshop of ten researchers in
the U.S. interested in neural nets, intelligence and related studies. McCarthy proposed a study of
artificial intelligence, with the purpose of show that a machine could stimulate all forms of
intelligence. The workshop did not achieve any notable new fits in the field, but brought together
important individuals that would be pivotal in the advancement of the field in the near future,
established artificial intelligence as a field. In 1958 John McCarthy designed LISP, a high level
From the beginning there were a lot of bold predictions from AI researchers on the future
breakthroughs and milestones in the field. One of such predictions was made by Herbert Simon
who predicted that a computer would be chess champion and would prove a significant
12
mathematical theorem in ten years. These actually became a reality 40 years down the line. These
failures were as a result of early achievements being based on solving simple problems with
algorithms that were only effect for simple problems, as well as limitations in hardware
performance. And so these simple systems failed when tried on more complex and wider selection
problems. An example of such failure was the translation machine by the U.S National Research
Council to translate Russian scientific papers during the wake of the sputnik launch in 1957. The
syntactic translation and word replacement alone could not capture the meaning of sentences. The
famous translation of “the spirit is willing but the flesh is weak” as “the vodka is good but the meat
is rotten” by the machine illustrates difficulty in solving problems without proper background
During the early decades of AI problems were solved by hard coding elementary reasoning into
steps to solve problems. Due to the limitation of this approach the alternative was to build programs
with more specific and robust data. The DENDRAL program (Buchanan et al 1969) was one of
the first examples of this approach. The program was developed by ED Feigenbaum, Bruce
Buchanan and Joshua Lederberg (a Nobel laureate geneticist). The DENDRAL was a program to
approach to AI development sparked renewed interest in the field with more expert systems being
developed.
The first commercial AI system (expert system) was the R1, an automated ordering system for
Digital Equipment Corporation. From 1980 the AI became an industry with unprecedented growth.
Corporations started building expert systems, vision systems and robots. AI intelligent
systems/programs are now integrated to almost every technology available spanning from search
engines, mobile phones, voice recognition systems and a vast collection of applications.
13
2.2.3 APPLICATIONS/RESEARCH AREAS
Game Playing; Early AI implementations exhibited their problem solving capabilities by playing
simple board games such as chess or checkers. In recent times AI is playing a more strategic role,
both as the opponent to humans in some games and as a game character decision making feature
Language Processing; is one the most widely researched application of AI, due to its apparent
benefits. Much work is now put into making machines that can communicate effectively with
humans, thereby surpassing limitations of earlier system that were based solely on syntactic
manipulation.
Expert systems; this is the most prevalent applications of AI. It is a knowledge based system that
accesses knowledge of experts. It used in a lot of industry proprietary software and commercially
Vision systems; studies how a machine receives and interprets visual information, this is one of the
most important area of AI research. Its applications in machine perception include; face detection
Speech recognition; an application of AI for voice recognition and is also crucial to how machines
Robotics; the goal is to make robots that can be autonomous in decision making. A lot of decision
making and learning areas of AI is being implemented in robotics to make these machines
intelligent agents.
14
Deep learning; a collection of learning procedures, which has facilitated object recognition in
images, video labeling, and activity recognition, and is currently being applied in other areas of
Neural Networks; is an area of research for the purpose modeling the neural network of the human
brain in machines. It has made recent strides in pattern recognition and object detection, but is still
For this project a knowledge-based system also called an expert system is going to be employed
Expert systems also known as knowledge based systems is a field of AI that deals with simulating
the decision making capabilities of human experts in a particular knowledge domain. These
systems are referred to as ‘knowledge based’ for their data intensive approach at decision making
and problem solving, as opposed to the classical algorithmic approach at problem solving. This
technique of decision making is modelled on the presumption that human experts can make
decisions based on how much knowledge they have concerning that specific domain, this
knowledge must be specific, unambiguous and detailed. The major differentiating factor of ES
over other programs is that its core algorithm is not encapsulated in its code, but as knowledge
stored in its knowledge base. This facilitates easier modification of the program without
Expert systems surfaced in the 60s as further research in AI sought to remedy the limitations of
hard coded algorithm based reasoning. One of the earliest implementations of ESs was
DENDRAL, which was developed at Stanford in the late 1960s. It was designed to identify
15
molecular structure of organic chemicals from spectral analysis and chemical formula of
molecules.
‘The DENDRAL program (Buchanan et al., 1969) was an early example of this approach. It was
Buchanan (a philosopher turned computer scientist), and Joshua Lederberg (a Nobel laureate
geneticist) teamed up to solve the problem of inferring molecular structure from the information
provided by a mass spectrometer. The input to the program consists of the elementary formula of
the molecule (e.g., C6H13NO2) and the mass spectrum giving the masses of the various fragments
of the molecule generated when it is bombarded by an electron beam. For example, the mass
spectrum might contain a peak at m = 15, corresponding to the mass of a methyl (CH3)
resulting in a second milestone program MYCIN, which was a medical diagnoses program
developed by Feigenbaum, Buchanan and Dr. Edward Shortliffe to diagnose blood infections. It
was a program with about 450 rules. It was a significant program because it wasn’t developed on
any theoretical framework like DENDRAL did. It was the first system in which its knowledge
base was derived from extensively interviewing experts in the domain, who have derived their
knowledge from text books and experience, which is the general methodology for contemporary
Other early expert systems include the PROSPECTOR for identifying ore deposits in a particular
locations (Duda et al 1979), SID (Synthesis if Integral Design) software program, developed in
1982 was the first system used for design of a product. By the end of 80s a majority of the fortune
500 companies had deployed their own expert systems in some capacity or the other. Since then
16
the usage of expert systems has grown over the years, as it is applied for decision support in almost
all industries.
Early expert systems were mostly rule based, but there have been other approaches over the years
Rule-Based Expert Systems; is the most popular method of implementing an expert system, which
represents data in a modular manner. The bases of this approach is the use of ‘if then’ conditional
reasoning, with rules that are the condition to be met in other to arrive at a specific decision.
Object Oriented Expert System; in object-based system also called frame-based system, objects
are used to represent knowledge rather than rules. One advantage of this kind of knowledge
representation is the fact that an object contains not only information about itself, but defines also
how the object behaves. This kind of approach is like object oriented programming used in most
high level programming languages. This kind of approach can also be implemented with known
OOP languages.
representing and reasoning with a deeper knowledge of the application domain. This approach
sometimes attempts to represent the domain knowledge mathematically. This approach reduces
Case-Based Expert System; solves problems by reusing knowledge from past similar situations.
The aim of this approach is to learn from past experience of similar situations and offer solutions
based on previous experience. Case-based systems a solution oriented in problem solving instead
of symptomatic in nature.
17
Hybrid Expert System; are expert systems designed by integrating two or more types of expert
system approaches together to make one system. It can be very effective as the drawbacks of one
1. Knowledge Base; Consists of problem solving rules procedures, and intrinsic data relevant to the
problem domain.
2. Working Memory; refers to task-specific data for the problem under consideration.
3. Inference Engine; is the brain of the system, it is a generic control mechanism that applies the
knowledge in the knowledge base to the task specific data to arrive at some solution or conclusion.
Forward chaining; this approach checks the condition of a rule to determine whether it is
true or false. If the condition is true, then the action part of the rule is also true. This
procedure continues until a solution is found or a dead end is reached. Forward chaining is
steps/paths that leads to the goal. Backward chaining is very good when all outcomes are
known and the number of possible outcomes is not large. In this case, a goal is specified
and the expert system tries to determine what conditions are needed to arrive at the specified
Sourav et al (2013) proposed a web based troubleshooting system. This is a web based
18
existing troubleshooting system written in prolog by the developers. It implemented a rule-based
expert system for diagnosing and troubleshooting computer faults. It also included Microsoft
standard error codes and solutions for handling such errors, through integrating DLLs (Dynamic
Link Library).The system being web operated with network connection and thus, can be affected
by network issues. Also Mohd et al ( 2009) developed a web based troubleshooting software
designed with computer networks in mind, its main aim is to provide an expert solution system
designed to cater to network issues alone. The system relied heavily on inputs by the system user
in order to proffer solutions. The system was implemented as a web based application using
existing web technologies; ASP (active server pages), HTML and Scripts. As with other web based
Sylvester and Adesola (2013) in a study developed an expert troubleshooting system using an
object-oriented analysis and Design (OOAD) using unified modeling language (UML) for its
modeling. The system featured a database built using MySQL, while its expert system
implementation was carried out using java programming language. It was developed using the
Netbean IDE for java. The program featured a vibrant and friendly user interface allowing for easy
user interaction. An Object Oriented approach was also employed by D.V. Kodavade and S.D.Apte
(2011) in creating a diagnostic system that employs backward chaining inference mechanism to
determine causes of faults. The system was designed to check for microprocessor failures using
object oriented approach and a rule based approach. It was designed with the purpose of developing
a system with the capabilities to troubleshoot circuits just from analyzing the circuit schematic on
the same level as an experienced engineer. The system recorded better results using the object
based approach for diagnosis in comparison with rule based approach. The system recorded high
19
accuracy of system diagnosis which exhibited a successful implementation of an object oriented
approach.
Abrham and Vuda (2014) in a study details a system for troubleshooting computer systems failure
using a pattern matching algorithm called Rete algorithm. The system was developed using prolog
via SWI-prolog editor tool. According to the research, the system out performed a forward
chaining expert system approach in solving PC issues. The systems performance was impressive,
even with its difficult user interface which is complex to operate. Another similar by Amanuel
(2016) was designed using a decision tree model and the framework uses the sequence stipulated
by the decision tree when diagnosing PC issues. The system is also implemented with prolog using
SWI-prolog IDE. The system uses a rule-based approach to its knowledge based implementation.
Another popular approach to developing expert systems is the forward chaining. Piotr and
Przemysław (2015) outlined a framework exhibited the utilizing of an expert system for M-28
flying machine maintenance support. It utilized CLIPS expert system development language. The
software conducted assessments by utilizing expert evaluation procedure on M-28 aircraft. The
system implemented both backward and forward chaining inference, this was achieved by setting
a trigger to the desired inference in the inference engine cache. The system gave positive
performance results which could be improved upon for maintenance solutions of other types of
aircraft. K.Selvani et al, (2011) in another similar research proposed a networking expert system
designed to diagnose wireless mesh networks for errors. It implemented a forward chaining
inference. Some of the faults of the system are; connectivity problems, insecure access, slow
response due to network drawback, packet loss, as well as a complex user interface. Forward
20
developed an intelligent troubleshooting in CLIPS for troubleshooting computer hardware failure.
Davood and Reza (2015) designed an expert system that could update its knowledge base,
meaning the system could learn. The system was made for the purpose of solving wired network
connections. VP-Expert shell was used for this project because it doesn’t require any inference
engine coding. The proposed systems knowledge base can be updated with new knowledge there
A rule based system was developed by Narendra and Bart (1997). The system was developed to
help field technicians/engineers diagnose HP T500 server platform systems. The system was
integrated into the servers to obtain crash reports when a crash case occurs. A rule based approach
was used for the system development, with a modular language developed for the purpose of
creating the system. The system proved useful but had some difficulties as it had over 1400 rules,
coding these rules was time consuming, also crash reports from the system came in burst making
Prior works in expert systems have been in diverse domain areas, spanning many industries and
applications fields. Among all of its many application areas, the use of Artificial Intelligence in
diagnosing and troubleshooting different kinds of systems and machinery has been one of its most
troubleshooting, these systems have been deployed for troubleshooting varying type of systems,
ranging from large industrial machines to airplanes. From the review of different works it is
apparent that there are diverse means of developing such a system, even with the shared theoretical
21
framework, there exist many tools and programming languages to facilitate the creation of
knowledge-based systems. However, it is clear that there are still drawbacks to existing works
upon which researches such as this seek to improve on. Some of these issues are; poor user
interface which is complex for an average user to comprehend, limited expert knowledge
acquisition.
Diagnosing and troubleshooting computer failures is a very difficult and confusing task which is
error prone in nature, even for individuals with some level of technical computer knowledge.
System maintenance and evaluation procedure is a knowledge intensive activity, which has strict
sequential pattern for some kinds of errors. It is therefore imperative that a means of making
22
CHAPTER THREE
3 RESEARCH METHODOLOGY
This section covers the approach to design, considerations and steps to be utilized for the
development of this research. From theoretical framework of this research there a number of
approaches to building expert systems, each with its drawbacks and advantages. After careful
consideration the researcher has opted for a hybrid approach for the development of the said
system. An objected oriented approach will be applied with the integration of independent external
knowledge-base as in the rule-based system. The subsequent chapters give detail development path
The purpose of this research is to develop a troubleshooting system that can facilitate PC diagnostic
activities even for individuals that are not knowledgeable in computer troubleshooting procedures.
With the goal of achieving the objectives of this research as the main consideration, the chosen
approach has been deduced as the best path to the systems implementation by the researcher. The
object orientation approach allows for more flexibility in interface design as compared to using
already existing rule-based shells. The developer possesses control to choose and alter the
algorithm that generates the inference of the system. Object oriented approach which is very
effective in constructing expert systems does have limitation of the expert knowledge being hard
coded with logic, which motivated the researcher to integrate the independent knowledgebase
system of the rule-based system with the object oriented approach. The knowledgebase of the
system will be developed outside of the systems logic, as this will allow the systematically upgrade
of the system with input of new data only not require a modification of the logic code. The systems
inference will be coded with a popular objective oriented language for easy user interface design
23
as these allow easy integration of user interface tools as well as inbuilt user interface libraries. The
engineering. This model was chosen for its simplicity and ease of implementation. The stages of
the development process are detailed in the subsequent sections of the write-up
This is the first stage of the systems development, and the results determine every other phase of
development. This section specifies the expected features of this system in three categories
Knowledgebase requirements
User Interface Requirement(s): This is a specification of the kinds of features required in the user
interaction module of this project. It should provide key interface requirements that will achieve
24
System Logic Requirement(s): The logic functions that specific to this project are stated here for
At this stage of the system development the structural and logical framework of the system is
designed. This phase takes the result of the Analysis phase and outputs designs for the system
implementation phase. The different design areas for this project include;
Knowledgebase design
System Algorithm/Modeling
Knowledgebase Design: The design of the data structures and management systems that stores and
manages the retrieval/modification of the expert knowledge is for the system, is what the
System Algorithm/Modeling: The algorithm and model for the system logic development is either
User Interface Designed: The layout and look of the user interface is designed to fit specifications
from the analysis phase, while also considering optimum user experience.
This stage of development is the development of the system proper where, all of the design phase
deliverables are utilized to develop the system according to the stipulated objectives and
requirements.
Knowledge Acquisition.
Knowledge validation
Knowledge Representation.
25
Knowledge Coding.
Knowledge Acquisition: The acquisition of expert knowledge for this project will extracted from
published works by established technicians with years of experience, troubleshooting guide books
and manuals and manufacturer publications. The reason for this approach is for the timely
obtaining of required expert knowledge, and detailed outline of common PC failures and
complementing solutions that have been used before. These document will be used on the
Knowledge Verification: For the purpose of creating a system that proffers relevant solutions that
resolves PC failure successfully, a validation process for the expert knowledge would be carried
out. This activity is to ensure that solutions submitted to a user is relevant to real PC issues, and is
Knowledge Representation: Knowledge procured from the acquisition phase of the project will
require arrangement to facilitate efficient structuring and coding of the knowledge base. A model
will be designed to show the hierarchy of symptoms and solutions, which will illustrate a solution
Knowledge Coding: The knowledge coding phase involves the converting of the knowledge base
into a digital data that can be integrated with the inference engine of the system. The expert
knowledge will be injected into a relatable database, with its hierarchy structured as database tables
and sub-tables. These tables and sub-tables will be classified into symptom tables and solution
tables, and integrated with the knowledge base classes of the program logic.
26
Inference Engine Coding: The inference engine will be coded using a high level objected oriented
programming language. The inference engine will implement the rule-based approach using ‘if
then else’ rules, by utilizing the inbuilt conditional statements and functions of the language.
User Interface Development: The user interface will be designed using the UI tools of the objected
oriented language used in the logic coding. Other graphics and UI development tools may also be
To ensure that the system works properly and is efficient in terms of performance, the system will
be subjected to debugging of its code to check for errors and bugs. It is important that all
Also an evaluation of the systems performance would be carried out to exhibit the results of the
development efforts of the researcher. Also to show that the system meets its intended objectives
27
CHAPTER FOUR
An intelligent troubleshooting software is a program that can help individuals remedy computer
prompt users to choose from a list of problems that could accurately describe the kind of issues
that the user is experiencing, for the purpose of providing probable solutions to the specified
problem. The system is composed of three modules; the user interface which is how a user
communicates with the system, the inference engine which is the brain of the system and
implements the rules of the system, and the knowledge-base contains the expert knowledge used
by the software.
The system will be called “PCRestore”, and will be restricted to computer start-up and
An intelligent troubleshooting system developed for the purpose of aiding system failure diagnosis
and failure resolution should fulfil some basic and technical requirements, if it is to effectively
achieve its objectives. For this particular system, the objective to consider include; a user friendly
logic, a proper implementation of expert knowledge in expert system. With these objectives, as a
backdrop, the requirements for this system are broken into categories;
28
The interface should provide good user experience
User interaction with the system should be restricted to mouse clicking gestures
The knowledge-base should be independent of the logic code of the system. That is, the
data structure for storing the expert knowledge should not be part of the systems source
code.
The knowledge-base should be subject to modification without the need of tampering with
The system is separated into independent modules that integrate together to function as a single
system that troubleshoots PC failure or performance issues. With the requirements obtained from
the system analysis, a design of the system is performed with each module of the system designed
independently of one another. The design of each of the modules was structured to meet its
The systems structure is a modular design consisting of modules that are independent of each other
integrated into a single system. This system is composed of three modules; the user interface, the
inference engine or the system logic and the knowledge-base which holds the expert knowledge.
29
The
Jx jxxj jx x
Inference
Engine
The knowledge base of the system is implemented as a relational database that can be integrated
with the systems logic, and allows retrieval of the expert knowledge for inference purposes.
The knowledge-base will be a database that can be accessed from the program code, it will consist
of tables containing troubleshooting problems and their corresponding causes and solutions. Each
table will represent a particular category of computer problem, containing common problems in
Table Description
Power issue Table It stores power issue problems with its causes and solutions
Performance issue Table This table stores performance issue problem and its
Booting issue Table The table stores booting problems and solutions
30
4.3.3 User Interface Design
The user interface is designed to restrict user interactions to mouse clicking events for ease of use
and to amplify a good user experience, this ensures consistent user interaction even with different
users with varying technical knowledge of computer systems. The user interface will consist of
buttons and display areas for displaying options to users, obtaining inputs from a user and returning
appropriate results.
functional windows. The interface would be composed of multiple windows, with each window
designed for a specific activity. The user interface of this application is structured into various
view;
The Welcome Dialog; is the first interactive component the user sees when the program is
The Main window; is the main UI component that the user interacts with. It prompts the
user for a selection of problems and gets the input from the user inference.
31
Figure 4.2 Wireframe of Main Window
The Results window; Displays the solution to the selected problem with its probable cause.
32
Graphic Design: these include the design of user interface components to give visual appeal to
the user and enhance user interaction. These design of components include;
a system icon,
button icons,
An adaptation of the linear search algorithm was adapted into the development linear matching
algorithm for implementing the system logic. This algorithm is used to find a match from a linear
set, by making a sequential search over all items in the set. The systems expert knowledge is made
up of rules which are the problems to be detected by the system, and a sequential match of the user
input with the set rules is how the system will arrive at problem resolution.
Algorithm Steps
Step 1: set i = 1;
Step 4: Go to step 2
The model of this system was developed with UML (Unified Modeling language). It is a general
purpose modeling language utilized by software engineers for software development. It is a widely
33
4.3.5.1 Activity Diagram
A model called ‘rule matching model’ was developed to depict the sequence of the logic execution.
This model depicts the stepwise flow of how the system matches problems rules to user inputs to
The modeled is an adapted activity UML model, which shows graphical workflow representations
34
4.4 SYSTEM DEVELOPMENT
This section of the report details the implementation activities of this project, with appropriate
information of tools used to perform these activities. This phase of development utilized the
outputs of the design stage to guide the development of the different modules of the system. The
efforts were carried out modularly, with each module being developed, independent of the other.
But even with the modular nature of the system, each components development was executed with
Utilized Software
The knowledge-base development is carried out using knowledge engineering best practices.
Certain consideration were taken into account on the development of the knowledge such as;
availability of expert knowledge in specified domain area, reliability of expert knowledge in this
domain, ease of utilization of obtained knowledge and effective representation in the expert
knowledge.
35
4.4.3 Knowledge Acquisition
The acquiring of relevant expert knowledge for this project was obtained through already existing
industry documentation on the subject matter. This approach to knowledge acquisition guaranteed
that knowledge obtained were already tested and verified as acceptable solutions to well-known
and common errors. Also, because computers have been around for decades, there are industry
standard fault diagnosis and failure repair that are accepted and have been used in resolving many
error cases. The documents containing such knowledge are made available by manufacturers,
technical institutes and authors with years of experience in the field. For this project knowledge
In order that the knowledge acquired is effectively developed into the knowledge-base of the
system, the knowledge obtained from different sources should be represented using a technique
that delivers the knowledge in a consistent manner. A model is used to present the knowledge for
The knowledge obtained is broken down into categories according the kind of issues they address.
Each category of knowledge is then separated into problems, causes and solutions. Each problem
36
Figure 4.5 Knowledge Representation model
MySQL query language was used in the development of the knowledge-base, via MySQL query
browser. The knowledge-base is developed as a relational database with the relations as the
different categories of troubleshooting problems. A database called pcrestore was created in the
query browser, and the various categories of expert knowledge were subdivided into tables. Three
tables were created; power, performance and booting to represent the three categories of
knowledge obtained. Each table had three columns; a problem column, cause column to hold the
cause(s) corresponding to related problem and a solution column where the solution knowledge is
stored. The other part of the knowledge-base development is the integration into the system logic
37
4.4.6 Inference Engine Coding
The inference engine which is the brain of the system was developed using java programming
language. Java is a strongly typed, high level, object oriented computer programming language. It
is a widely used and well documented language with a wide variety of application area. It possesses
all the major features of OOP (object oriented programming); inheritance, encapsulation and
polymorphism. The project uses an object oriented approach to rule based expert system for
developing the system, and java supports this approach well since it is object oriented and can
The system login was separated into two major classes, the main class in which all inference was
coded and also integrated the user interface code and the knowledge class which holds functions
for integrating with the knowledge base for knowledge retrieval. The main class extends the java
JFrame library for creating the user interface with java. This class contains code for displaying
problems when a user selects a category of problem from the displayed category buttons. It also
has functions for comparing a user selection with the knowledge-base to retrieve relevant solutions
for the user from the knowledge class. The knowledge class contains code for integrating the
knowledge base to the system logic. It consist of functions to pass retrieved data to the main class
and also nested classes each holding code for retrieving data for each of the specific categories of
expert knowledge. These subclasses are; power, performance and booting. Each of the subclasses
contains statements of establishing a connection to the knowledge base, and functions for querying
the database and retrieving data. Java can connect to the database via the JDBC (Java Database
Connectivity) driver and API which is part of the JDK (java development kit). The system logic
38
4.4.7 User Interface Development
The user interface was developed in the Netbean IDE using the drag and drop feature for building
swing application and also coded in the same IDE. Its code is embedded along with the main code
of the main class of the system logic for easy and direct integration. The UI is built using the Java
Swing library which supports basic interface development in most operating systems. Since the
user interface design specified two windows, the main and results windows, two separate window
layouts were created using java swing. The main window consist of buttons for the various
categories of system issues, a list area for displaying problems associated with the selected button
and a button for submitting the user selection for inference. The result window which is called
after the user submits a problem is composed of two text area for displaying the cause(s) and
solution(s) to corresponding problem selected by the user, and a reset button for refreshing the
system for another session. Another component of the UI is the exit dialog which recommends
other alternative for problems that are outside the scope of the system.
This is the testing of each of the modules of the system independent of the other modules to
ascertain if they gave results. The three modules of the system where tested after their development
to check if they met design requirements. For the system logic this entailed checking for and
The system testing entails checking the fully integrated system if it is fully running and meeting
up to the specified objectives. The system testing was performed on the computer on which it was
The welcome dialog is the first component that appears when the system is started, it welcomes
The main window of the system is the window in which the different kinds of problems is
40
4.5.4 Input snapshot
Figure 4.9 Solutions window display causes and solution to a user power issue request.
41
Figure 4.10 Result window displaying solution for user performance issue request.
4.6 Evaluation
Evaluation of this expert system in comparison to existing works is quite difficult as most existing
works are proprietary and hence have information on their performance measurements restricted.
Other reviewed works contained limited evaluation data from which to derive their performance
number. However, I will point the features of this system that makes it stands out from other similar
works.
1. Number of diagnostic steps; is considered important for systems as it would affect speed
at which the system can respond to request. This system exhibited a two-step diagnostic
process, which the first step is identifying the problem category and the second step
diagnosis the problem. The system effectively executed the two step process with
promising result.
42
2. Ease of interaction; is one of the drawbacks observed in reviewed works, as navigating to
inserting or editing the integrated database of the system. This process was also tested
during the testing phase of the system as new expert knowledge was introduced into the
system.
The systems diagnostic and resolution performance was tested using 10 fictitious test error and
Fictitious Result
The fictitious test cases were derived from common system failure issues reported by windows
users.
Power 3 1 4
Performance 2 0 2
Booting/Startup 2 2 4
43
Chart Title
Booting/Shutdown
Performance
Power
Unsolved Solved
Real test cases were obtained from some Caleb university student with common system issues
Power 2 0 2
performance 2 0 2
Booting/Shutdown 0 1 0
44
Chart Title
Booting/Shutdown
Performance
Power
Unsolved Solved
The system showed effectiveness in solving some common system issues, while failing to proffer
effective solution for some of the test cases. The performance of the system relies heavily on the
knowledge-base of the system as its ability to supply effective solution depends on the quality in
The system did solve over 70% of the cases tested, showing that it can be an effective
troubleshooting tool.
45
CHAPTER FIVE
5 CONCLUSION
Artificial intelligence is the new frontier in computer science, even though it is decades old in
research. Expert system continues to be one of the most popular and widely used research areas of
artificial intelligence. Troubleshooting of computer failures being one of these application areas
of expert systems, has benefitted immensely as these approach can help solidify standardization of
troubleshooting practice.
existing methods of implementing said systems. During the course of developing this system, the
researcher was able to gain some insight into the theoretical background of the system. This
insights and a summary of the project are detailed in this section of this work.
5.1 RECOMMENDATIONS
During the course of this project work the author observed some areas of concern as it affects this
area of research.
1. The author observed that data and effective analysis of data hold very important key to
2. Easy development of artificial intelligence with the help of existing expert shells is fast
becoming obsolete, therefore the current system demands of expert system requires
improved techniques.
46
5.2 FUTURE WORKS
The prototype developed for this project though effective, can be improved and adapted for many
domain areas. The researcher gives some ideas on potential future research works related to this
work;
1. An adaptation of this work as a distributed application, which can be accessed by users via
the internet without the need for local installation. With computing capabilities improving
at incredible pace, web based applications are currently increasing in availability as one of
as the developed prototype, if accessible over the internet would be a convenient tool. The
failure.
3. A research into adapting machine perception into the existing prototype. Machine
perception is a sub-area of artificial intelligence that deals with how machines can perceive
and interact with their external environment, through evaluating and deciphering sensory
5.3 SUMMARY
The system developed in this project used a linear matching algorithm, which though effective can
still be improved. It exhibited an easy to use interface and a two-step inference engine, which
reduced the number of inference steps of the system. The prototype of the system did meet its
47
objective in varying degrees. It showed an overall failure resolution accuracy of 73% in test carried
out. An object oriented implementation of the system was developed using java, which showed
the effectiveness of such approach in solving logical problems. For real world use of this system,
48
REFERENCES
Abdullah Saad AlMalaise Al Ghamdi , Syed Mutiullah Hussaini and Abdul Khadar Jilani(2013)
Empirical Model using Expert System Techniques in Hardware Failure of a System during Backup
of Data. (IJCSNS) International Journal of Computer Science and Network Security, VOL.13
Abrham Debasu Mengistu and Dr.Vuda Sreenivasarao (2014), Knowledge Based Robot System
for Diagnosis and Troubleshooting of Personal Computer Using Artificial Intelligence Rete
Amanuel Ayde Ergado, (2016) Self Learning Computer Troubleshooting Expert System
International Journal of Artificial Intelligence & Applications (IJAIA), Vol. 7, No. 1, January
2016.
AYANGBEKUN Oluwafemi JacobA and IBRAHIM Waliyat OlabisiB (2015), An Expert System
for Diagonising and Troubleshooting Radio Transmitter Faults. International Journal of Computer
C.Angeli., “Diagnostic Expert Systems: From Experts a. Knowledge to Real –Time Systems.”
Advanced Knowledge Based Systems: Model, Applications & Research. Vol.1. PP 50- b. 73,
2010.
D.V. Kodavade and S.D.Apte, (2011) Troubleshooting Microprocessor Based System Using An
Object Oriented Expert System. (IJACSA) International Journal of Advanced Computer Science
49
Dattatraya Vishnu Kodavade, Shaila Dinakar Apte (2012), A Universal Object Oriented Expert
System Frame Work for Fault Diagnosis. International Journal of Intelligence Science, 2012, 2,
63-70.
Davood Ekhtiyarzadeh and Reza Radfar (2015) Designing An Expert System For Internet
Information, Security and System Management, 2015, Vol.4, No.2, pp. 476-487.
George. F Luger, Artificial intelligence; structures and strategy for complex problem solving. 6th
Troubleshooting Wireless Mesh Networks Using Rule-Based Expert System. International Journal
Mohd Helmy Abd Wahab, Nurazzah Abu Bakar, Mohamad Farhan Mohamad Mohsin (2009)
2009.
Nalepa, G.J., Bobek, S.: Rule-based solution for context-aware reasoning on mobile devices.
Narendra Dev and Bart Anderson, (1997) Pimtool, an Expert System to Troubleshoot Computer
Hardware Failures: IAAI-97 Proceedings. Copyright © 1997, AAAI (www.aaai.org). All rights
reserved.
50
Piotr Golanski and Przemysław Madrzycki, (2015) Use of the Expert Methods In Computer Based
Maintenance Support Of The M-28 Aircraft, Zeszyty Naukowe AMW — Scientific Journal of
PNA 2015.
Samy S. Abu Naser and Abu Zaiter A. Ola (2008), AN EXPERT SYSTEM FOR DIAGNOSING
EYE DISEASES USING CLIPS. Journal of Theoretical and Applied Information Technology.
Sourav Mandal, Sumanta Chatterjee, Biswarup Neogi, (2013) Diagnosis and Troubleshooting of
Computer Faults, Based on Expert System and Artificial. Intelligence International Journal of Pure
2010.
Swati Gupta, Ritika Singhal (2012), Fundamentals and Characteristics of an Expert System.
International Journal on Recent and Innovation Trends in Computing and Communication ISSN
Sylvester I. Ele and Adesola W.A, 2013 Design Of Computer Fault Diagnosis And
Troubleshooting System (Cfdts): West African Journal of Industrial and Academic Research Vol.9
Yan C., Ma S., Zhou G., Fang J., Fault Diagnostic Expert System of Rolling Element Bearing
Based on CLIPS, ‘Journal of Information and Computational Science’, 2013, Vol. 10, No. 10, pp.
51
APPENDIX
javax.swing.JButton();
import javax.swing.JOptionPane;
jScrollPane3 = new
*/
javax.swing.JScrollPane();
public class pcrestoreFrame extends
jlistQuestion = new
javax.swing.JFrame {
javax.swing.JList<String>();
Result rs = new Result();
jbSubmit = new javax.swing.JButton();
Knowledge kb = new Knowledge();
setDefaultCloseOperation(javax.swing.Window
private String[] dlist =
Constants.EXIT_ON_CLOSE);
{"jamee","johnny","peter"};
jbPower.setText("Power");
private String selected;
jbPower.setPreferredSize(new
private String issue;
java.awt.Dimension(100, 50));
initComponents(); }
52
public void jlistQuestion.setFixedCellWidth(600);
actionPerformed(java.awt.event.ActionEvent
jlistQuestion.setFocusCycleRoot(true);
evt) { jbPowerActionPerformed(evt); }
jlistQuestion.setOpaque(false);
});
jScrollPane3.setViewportView(jlistQuestion);
jbPerformance.setText("Performance");
jbPerformance.setPreferredSize(new jbSubmit.setText("SUBMIT");
jbPerformance.addActionListener(new java.awt.event.ActionListener() {
evt) { } });
jbPerformanceActionPerformed(evt); } });
javax.swing.GroupLayout jPanel1Layout =
jLabel1.setText("QUESTION"); new javax.swing.GroupLayout(jPanel1);
jlistQuestion.setBorder(javax.swing.BorderFacto
jPanel1.setLayout(jPanel1Layout);
ry.createBevelBorder(javax.swing.border.Bevel
jPanel1Layout.setHorizontalGroup(jPanel1Layo
Border.RAISED));
ut.createParallelGroup(javax.swing.GroupLayou
jlistQuestion.setFont(new
t.Alignment.LEADING).addGroup(jPanel1Layout.
java.awt.Font("Tahoma", 0, 14)); // NOI18N
createSequentialGroup() .addGap(21, 21,
jlistQuestion.setCursor(new 21).addGroup(jPanel1Layout.createParallelGrou
java.awt.Cursor(java.awt.Cursor.DEFAULT_CURS p(javax.swing.GroupLayout.Alignment.LEADING
OR)); )
53
.addGroup(javax.swing.GroupLayout.Alignment. 849,javax.swing.GroupLayout.PREFERRED_SIZE)
TRAILING, ).addContainerGap().addGroup(javax.swing.Gro
jPanel1Layout.createSequentialGroup() upLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup().addCo
.addGroup(jPanel1Layout.createParallelGroup(j
mponent(jbSubmit).addGap(395, 395, 395))))
avax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment. );
TRAILING,
jPanel1Layout.setVerticalGroup(jPanel1Layout.c
jPanel1Layout.createSequentialGroup().addGro
reateParallelGroup(javax.swing.GroupLayout.Ali
up(jPanel1Layout.createParallelGroup(javax.swi
gnment.LEADING).addGroup(jPanel1Layout.cre
ng.GroupLayout.Alignment.TRAILING).addComp
ateSequentialGroup().addGroup(jPanel1Layout.
onent(jbPerformance,javax.swing.GroupLayout.
createParallelGroup(javax.swing.GroupLayout.A
PREFERRED_SIZE,javax.swing.GroupLayout.DEF
lignment.LEADING)
AULT_SIZE,javax.swing.GroupLayout.PREFERRE
addGroup(jPanel1Layout.createSequentialGrou
D_SIZE).addComponent(jbPower,javax.swing.Gr
p().addContainerGap(46,
oupLayout.PREFERRED_SIZE,javax.swing.GroupL
Short.MAX_VALUE).addComponent(jLabel1)
ayout.DEFAULT_SIZE,javax.swing.GroupLayout.
.addPreferredGap(javax.swing.LayoutStyle.Com
PREFERRED_SIZE)).addGap(18, 18,
ponentPlacement.UNRELATED)
Short.MAX_VALUE).addComponent(jScrollPane
.addComponent(jScrollPane3,
3,
javax.swing.GroupLayout.PREFERRED_SIZE, 517,
javax.swing.GroupLayout.PREFERRED_SIZE,849,j
javax.swing.GroupLayout.PREFERRED_SIZE).add
avax.swing.GroupLayout.PREFERRED_SIZE)).add
PreferredGap(javax.swing.LayoutStyle.Compon
Component(jLabel1,
entPlacement.UNRELATED).addComponent(jbS
javax.swing.GroupLayout.Alignment.TRAILING,
ubmit)).addGroup(jPanel1Layout.createSequent
javax.swing.GroupLayout.PREFERRED_SIZE,
54
ialGroup().addGap(59,59,59).addComponent(jb javax.swing.GroupLayout.DEFAULT_SIZE,
Power,javax.swing.GroupLayout.PREFERRED_SI javax.swing.GroupLayout.PREFERRED_SIZE)));
ZE, javax.swing.GroupLayout.DEFAULT_SIZE,
layout.setVerticalGroup(layout.createParallelGr
javax.swing.GroupLayout.PREFERRED_SIZE)
oup(javax.swing.GroupLayout.Alignment.LEADI
.addPreferredGap(javax.swing.LayoutStyle.Com
NG)
ponentPlacement.UNRELATED).addComponent(
.addGroup(layout.createSequentialGroup()
jbPerformance,
.addComponent(jPanel1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
Short.MAX_VALUE)
.addGap(41, 41, 41)) );
.addContainerGap())
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane()); );
jPanel1.getAccessibleContext().setAccessibleNa
getContentPane().setLayout(layout);
me("");
layout.setHorizontalGroup(
jPanel1.getAccessibleContext().setAccessibleDe
layout.createParallelGroup(javax.swing.GroupLa
scription("");
yout.Alignment.LEADING)
pack();
.addGroup(javax.swing.GroupLayout.Alignment.
jbPerformanceActionPerformed(java.awt.event.
.addComponent(jPanel1,
ActionEvent evt) {
javax.swing.GroupLayout.PREFERRED_SIZE,
issue = "performance";
55
setList(kb.getPerformanceProblems()); elected()));
jlistQuestion.setBorder(BorderFactory.createEm rs.setSolutionText(kb.getPerformanceSolutions(
} rs.setVisible(true);}
jbPowerActionPerformed(java.awt.event.Action
selected = jlistQuestion.getSelectedValue();
Event evt) { issue = "power";
return selected;
jlistQuestion.setBorder(BorderFactory.createEm
} JOptionPane.showMessageDialog(null,
{rs.setCauseText(kb.getPowerCauses(getSelecte
try {
d()));
for(javax.swing.UIManager.LookAndFeelInfo
rs.setSolutionText(kb.getPowerSolutions(getSel
info :
ected()));
javax.swing.UIManager.getInstalledLookAndFee
if(issue.equalsIgnoreCase("performance")){ javax.swing.UIManager.setLookAndFeel(info.get
rs.setCauseText(kb.getPerformanceCauses(getS ClassName());
56
break;}} /* Create and display the form */
java.awt.EventQueue.invokeLater(new
} catch (ClassNotFoundException ex) {
Runnable() {
java.util.logging.Logger.getLogger(pcrestoreFra
}
} catch (IllegalAccessException ex) {
me.class.getName()).log(java.util.logging.Level.S
private javax.swing.JList<String> jlistQuestion;
EVERE, null, ex); }
private JDialog Welcome;}
57