Object Oriented Metrics to measure the quality of software upon PHP source code with PHP_depend
INTRODUCTION Astra Graphia Information Technology PT. is an Information Technology (IT) consultant company which sale, distributed, and maintain both hardware and software for all level customer with either in-house or reseller software. Astra Graphia run SAP application from www.SAP.com which supports their daily business activity processes. However, there are some improvement and update on implemented SAP application on daily basis, which is needed by departments in order to supports their business activity processes. Request online system is a web based application which is built with Personal Home Page (PHP) language programming in order to record and control all improvement or update request in SAP application. For future implementation, the intelligent of this application will be extended with such as technology such as Data Warehouse [19,20,21,22,23] or Data Mining with some options algorithms such as Attribute Oriented Induction(AOI)[24,25,26,27,28,29,30,31] or Attribute Oriented Induction High level Emerging Patterns (AOIHEP)[32,33,34,35,36]. Meanwhile, Open Source Software has impacted software industry and recently became extremely popular such as Personal Home Pages (PHP), Java Server Pages (JSP), Java and so on. This paper will investigate how to measure PHP source code with PHP_depend. The investigation will examine 32 PHP source codes from Request online system application which supports improvement or update request upon SAP application, PHP_Depend is a small program that performs static code analysis on a given source base , According to G. Kour and S. Evolution PHP_Depend can generate a large set of software metrics from a given code base and identify parts of an application where refactoring should be applied . Object Oriented that makes designs more powerfull, more maintainable, and more reusable for design system. Recently, almost all system design already uses a technique Object Oriented, in the design of a system designed to ensure software quality meet the standard Object Oriented Programming (OOP) need be tested to detect and subsequently handle all errors in it. A number of schemes are used for testing purpose and this measurement will make the result software which easy maintenance, understandability and reusability. This paper present how to perform a software measurement and presents the results in the a report that is easily understood by management, with this report can be used to predict the level of error and how much cost to spend on developing the program
RELATED WORK IN THE LITERATURE Measuring the discriminative power of object-oriented class cohesion metrics , this paper obtain the same cohesion values for different classes that have the same number of methods and attributes but different CPCIs. Software Quality Estimation through Object Oriented Design Metrics , this paper obtain how these metrics are useful in determining the quality of any software designed by using object oriented paradigm. Critical Analysis of Object Oriented Metrics in Software Development , this paper obtain to a review and analysis of object oriented metrics is presented for identification and validation of object oriented metrics and out of various metrics. Evaluating the impact of different types of inheritance on the object oriented software metrics , this paper discuss focuses on effects of inheritance on object oriented metrics. Implementation of ISO 9126-1 quality model for asset inventory information system by utilizing object oriented metrics, this paper aim Proposed ISO 9126-1 quality model has been internally evaluated by object oriented metric using case study on Politeknik Caltex Riau (PCR) which is one of the organization that engaged in academic area. Software Product Quality, this chapter by Martin Glinz discus about software product quality. Effectiveness of encapsulation and object-oriented metrics to refactor code and identify error prone classes using bad smells , this research develop a metrics model to identify smelly classes to improve Encapsulation and Object-oriented Metrics. Applying the ISO 9126 quality model to test specifications , this paper apply ISO 9126 for model to test specifications. An ISO 9126-based Quality Model to Assess the Quality of TTCN-3 Test Specifications 2 Software Quality Models , this chapter apply ISO 9126 to Assess the Quality of TTCN-3 Test Specifications, TTCN-3 is ETSI Centre for Testing and Interoperability.
PHP_DEPEND SOFTWARE METRIC MEASUREMENT EXPERIMENTS The experiments used source codes of Request online system application (ROLIS) which was allocated in sub directory C:\PEAR\proyektoPHP\rolisdev as PHP project. The experiments were carried on windows 7.0 operating system and used PHP version 5.2.3, including PEAR (PHP Extension and Application Repository) package which provide library PHP open source code. This PHP project will be measured with PHP-depend software metrics with such as next steps:
The execution time for each experiment will be different which depend on your computer size and allocation process in your computer. Next is explanation for each PHP_depend experiment and they are: A. Summary XML. This PHP_depend experiment will be executed in sub directory PEAR by giving statement: php pdepend –summaryxml=C:\PEAR\results\summary.xml C:\PEAR\proyektoPHP\rolisdev. Figure 2 shows the statement execution and was executed in 3.22 minutes with memory allocation 94.50 MB and the result shows: • Parsing source files : 657 • Executing Cyclomatic Complexty-Analyzer:5629 • Executing Class Level-Analyzer: 6240 • Executing Code Rank-Analyzer: 1410 • Executing Cohesion-Analyzer:10716 • Executing Coupling-Analyzer: 5639 • Executing Hierarchy-Analyzer: 5375 • Executing Inheritance-Analyzer: 1405 • Executing NPatch Complexity-Analyzer:5685 • Executing Node Count-Analyzer : 3692 • Executing Node Loc-Anlyzer: 3947
B. Pyramid report. This PHP_depend experiment will be executed in sub directory PEAR as well and by typing statement: Phppdepend–overviewpyramid=c:PEAR\results\pyramid.svg :\PEAR\proyektoPHP\rolisdev. Figure 3 shows the statement execution and was executed in 2.19 minutes with memory allocation 93.50 MB and the result will shows: • Parsing source files : 657 • Executing Coupling-Analyzer: 5629 • Executing Cyclomatic Complexty -Analyzer:5681 • Executing Inheritance-Analyzer: 1405 • Executing Node Count-Analyzer : 3692 • Executing Node Loc-Anlyzer: 3947
- Charts. This PHP_depend experiment will be executed in sub directory PEAR as well by giving statement: php pdepend — jdepend-chart = \ PEAR \ results \ jdepend.svg : \ PEAR \ proyektoPHP \ rolisdev. Figure 5 shows the statement execution and was executed in 00.15 minutes with memory allocation 88.25 MB and the result will shows: • Parsing source files : 657 • Executing Dependency-Analyzer: 3411
INTERPRETATION OF PHP_DEPEND SOFTWARE METRICS MEASUREMENT EXPERIMENTS After running the PHP_depend software metric then we need to interpret the result as the conclusion of software metric measurement upon Request online system application as PHP project which was allocated in sub directory C:\PEAR\proyektoPHP\rolisdev will generate Pyramid Report shown in Figure 4 and Chart report shown in Figure 6. • LOC = CYCLO/LOC (1) • NOM = LOC/NOM (2) • NOC = NOM/NOC (3) • NOP = NOC/NOP (4) • CALLS = FANOUT/CALLS (5) • NOM = CALLS/NOM (6) The score for each of metrics in these 3 categorization of metric are shown in figure 4 as result of running pyramid report experiment and they are ANDC=0.588, AHH=0.242, NOP=5, NOC=254, NOM=3433, LOC=59994, CYCLO=17457, CALLS=9412 and FANOUT=346 as shown in figure 4. In order to find the software size then we need to score all these metrics with equations (1) to (6) where the number of dividend and divisor in each equation will refer to number its metric as shown in figures 4 or 8. The scoring only applied to size and complexity, and coupling categorization metrics as shown in figure 7, where inheritance categorization metrics such as ANDC and AHH didn’t include since they have already their scores.As shown in figures 4 or 8, metrics CYCLO and LOC in equation (1) will have number 17457 and 59994 respectively, metrics LOC and NOM in equation (2) have number 59994 and 3433 respectively. Metrics NOM and NOC in equation (3) have number 3433 and 254 respectively, metrics NOC and NOP in equation (4) have number 254 and 5 respectively. Meanwhile, Metrics FANOUT and CALLS in equation (5) have number 346 and 9412 respectively, metrics CALLS and NOM in equation (6) have number 9412 and 3433 respectively. The metrics LOC, NOM, NOC and NOP in left side in figure 8 as size and complexity categorization metric as shown in figure 7 with equations between (1) and (4). The score of metric LOC is executed with equation (1) = CYCLO/LOC=17457/59994 = 0.291. The score of metric NOM is executed with equation (2) =LOC/NOM =59994/3433=17.476. The score of metric NOC is executed with equation (3) =NOM/NOC=3433/254=13.516 and the score of metric NOP is executed with equation (4) = NOC/NOP=254/5=50.8. Figure 4 shows these 4 size and complexity categorization metrics’ score such as LOC=0.291, NOM=17.467, NOC=13.516 and NOP=50.8 in the left side. Meanwhile, the score for metrics CALLS and NOM in right side in figure 8 as coupling categorization metric as shown in figure 7 will be executed with equations (5) and (6). The score of metric CALLS is executed with equation (5) =FANOUT/CALLS=346/9412=0.037 and the score of metric NOM is executed with equation (6) =CALLS/NOM =412/3433=2.742. Figure 4 shows these 2 coupling categorization metrics score such as CALLS=0.037 and NOM=2.742 in the right side. Moreover, in order to give easy understanding the software size measurement based on PHP_depend software metrics as shown in pyramid report in figure 4, then the metrics scores will be categorized into 3 different colour such as black, green and orange colours. The black, green and orange colours refer to low, average and high scores based on reference value on table 1, where each number as minimum score. For example, AHH metric has minimum low score 0.09 with range score between 0.09-0.209, minimum average score 0.21 with range score between 0.21-0.319 and minimum high score 0.32 with range score start from 0.32.
CONCLUSION This paper presents how to perform measurements based on Object Oriented Metrics for PHP programming language, many tools that can be used to measurements for this paper used PHP_depend and source codes of Request online system application for testing, PHP_depend experiments generate summary XML, Pyramid report and Report Charts. The conclusion of after testing we suggest Request online application system developed using PHP framework such as Codeigniter Framework, Laravel Framework or Zend framework, so we get a system that is more reliable and easier to develop. For PHP_Depend we suggest for Pyramid report and Chart Report continue to be developed to make it more easier to understand for user.