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 .
Read full abstract