Laxminarayan Muktinutalapati Performance-Study of Message Passing in an Event Service: Java RMI Vs. TCP Sockets Cost Estimation The cost estimation process for this project is performed based on the Function Point Analysis (FPA) as outlined by the International Function Point Users Group (IFPUG). The analysis measures software in terms of user-level functionality and is independent of the technology used. It breaks down a software system into smaller components so they can be better understood and analyzed. This technique is widely used in several software applications. Size Estimation Using FPA FPA has been proven to be a reliable metric in estimating size, cost, and effort involved in developing software. Of the different methods available to count function points, we follow the one developed by Alan Albrecht1 and later revised by IFPUG. Size estimation using FPA essentially consists of the following steps: 1. Determining the unadjusted function point (UFP) count a. Identifying the function point components b. Determining complexity of each of the components– categorizing them into low, average, or high complexity c. Calculating the final UFP value 2. Determining the value adjustment factor (VAF) based on the general system characteristics (GSCs) 3. Compute final function point count (FPC) 4. Estimate total SLOC using the FPC and language factor for Java, the programming language Determining the unadjusted function point (UFP) count 1.a Identifying the function point components There are five major components required to determine the function point count. They are: External Inputs (EI): These are elementary processes in which derived data passes across the boundary from outside to inside. In this system, the number of consumers, producers and ENSs are the inputs. External Outputs (EO): These are elementary processes in which derived data passes across the boundary from inside to outside. The time taken for message passing from producer to ENS, from ENS to consumers, and the total time therefore from producer to consumer are the three outputs identified. External Queries (EQ): These are elementary processes with both input and output components that result in data retrieval from one or more internal logical files and external interface files. Each run of the system is set to a specific number of messages, producers and consumers. We assume there will be three different queries on the corresponding numbers. Internal Logical Files (ILF): These are user identifiable groups of logically related data that resides entirely within the applications boundary that are maintained through external inputs. The list of subscribers for a particular event, and the details of time elapsed for message passing from producer to ENS, and ENS to consumers are three such logical files identified in the system. External Interface Files (EIF): These are user identifiable groups of logically related data that are used for reference purposes only, and which reside entirely outside the system. No such files have been identified that interact with our system in the said manner. 1.b Complexity of the components The EI, EO, and EQ are rated based on the number of file types referenced (FTR) which are the files listed above and the corresponding date elements (DET) that they are made of. From the available references2 we may classify all these to be of low complexity. Similarly, the files- ILFs and EIFs are rated based on the record elements and data elements. Again, from available references the 3 ILFs are classified as having low complexity. 1.c. Calculating UFP Based on the complexity, each of the components is given certain weight. The table below lists the number of components in each category alongside the corresponding weights: Rating Values EO EQ EI ILF ELF Low 4 (3) 3 (3) 3 (3) 7 (3) 5 (0) Average 5 (0) 4 (0) 4 (0) 10 (0) 7 (0) High 6 (0) 5 (0) 6 (0) 15 (0) 10 (0) TOTAL 12 9 9 21 0 Total UFP = 12 + 9 + 9 + 21 + 0 = 51 Determining the value adjustment factor (VAF) The value adjustment factor (VAF) is based on 14 general system characteristics (GSC’s) that rate the general functionality of the application being counted. Each characteristic has associated descriptions that help determine the degrees of influence of the characteristics. The degrees of influence range on a scale of zero to five, from no influence to strong influence. ([2] – Section 11) The table below gives the summary rating: General System Characteristic 1. Data communications 2. Distributed data processing 3. Performance 4. Heavily used configuration 5. Transaction rate 6. On-Line data entry 7. End-user efficiency 8. On-Line update 9. Complex processing 10. Reusability 11. Installation ease 12. Operational ease 13. Multiple sites 14. Facilitate change TOTAL Degree of influence 2 3 1 5 5 0 1 0 2 3 1 5 4 3 35 The VAF is given by the following equation – 14 where: Ci = degree of influence for each General System Characteristic VAF = 0.65 + ( Ci ) / 100 i = from 1 to 14 representing each GSC. i =1 = summation of all 14 GSC’s. VAF = 0.65 + 35/100 = 1 Computing the final function point count (FPC) The final Function Point Count is obtained by multiplying the Value Adjustment Factor (VAF) times the Unadjusted Function Point (UFP). The standard function point equation is: FPC = UAF * VAF = 51 * 1 = 51 Estimating lines of code (SLOC) To arrive at the number of source lines of code we multiply the number of adjusted function points (FPC) with the language factor, which is an empirical measure of the number of SLOC per function point. The language factor for Java is assumed to be 53 (from various articles available on the web). Hence we have, SLOC = 51 * 53 = 2703 [1] Albrecht, A. J. 1979. Measuring Applications Development Productivity. Proceedings of IBM Application Development Joint Share Guide Symposium, Monterey, CA, 1979, pp. 83-92. [2] Longstreet, D. 2001. Function Point Training and Analysis Manual. Longstreet Consulting Inc, Revision Dates: Feb. 2001, 30 Aug. 2001, and 1 March 2002. <http://www.SoftwareMetrics.Com/freemanual.htm>.