Abstract
As a result of the development of software engineering , especially with
regard to improving the software systems within a short time to enhance the
development process and reduce cost as much as possible . Software
reusability is one of the most important software engineering metrics which
aim to reduce the effort and time in the development process . It is the process
of using pre-existing software components for implementing and updating
new software systems , thereby reducing effort , time and cost in addition to
increasing the quality and productivity of software systems . Many factors
affect the reusability of a software , of these factors , coupling and cohesion
are used in this search for the aforementioned purpose .
Reusability of classes is determined based on coupling and cohesion
results . Cohesion measures the intra-dependability of functions and variables
inside the class , while coupling measures the inter-dependability among
classes in the same package . The proposed expert system also used for
computing coupling , cohesion and reusability status , and produce
suggestions to enhance the reusability status of unreusable classes by offering
intelligence advices which depending on the weakness of the tested codes .
Proposed knowledge Base System (KBOSR) contains (61) rules to provide
and demonstrate why the items are not reusable by displaying code
weaknesses , and to provide advice, guidance and modifications to the code
for making the product reusable and displaying these guidelines and
instructions on user interfaces in a clear and easy-to-understand way, KBOSR
is the first knowledge base system to determine the status of reuse and
improve it .
The knowledge base was tested using 13 classes were distributed in
two packages , first package contains 5 classes , second package contains 8
classes , coupling and cohesion values of classes are computed . Coupling ,
cohesion and reusability status of these classes are determined , then , by
proposed expert system . Finally , suggestions of improvement of unresable
classes are displayed . The results of testing process have proved the strength
and validity of the proposed knowledge base in determining reusability status
of the software components , and the accuracy of the advices that were
suggested , these advices are practically applied on the codes of interest and
the modified codes proved to be highly reusable .