Summary of Class Presentation for February 24, 1999 We introduced the bang metric of Tom DeMarco as an alternative to function points. Function points and its variations are much more popular, but we covered function points extensively last semester. Bang was introduced in the early 1980's as an alternative. Both function points and bang are specification metrics. They are based on the specification of user and customer requirements for the product and can be used for predictive and evaluative purposes. Both of these metrics attempt to provide a number for how much "work" a piece of software is doing. We need a measurement of work to evaluate our development process, our products, and our personnel. Size provides a very simple metric for work ( number of lines of code, for example), but size is too easily manipulated by developers and does not take complexity and most other software quality aspects into account. Function points are briefly introduced on pages 527 - 528 of the textbook. Students should read this material carefully and refer back to their notes and some projects from Computer Science 315 for additional details and explanations. Bang is briefly introduced on pages 529 - 531 of the textbook. The presentation today provided many more details missing from the textbook. On Friday, we will do an example using the program provided with assignment 1, but made more general and more complex. Here are the items covered in class today, but which are not available in the textbook: 1. Complete Table for Converting TCi to CFPi TCi CFPi TCi CFPi TCi CFPi 2 1.0 8 12.0 15 29.3 3 2.4 9 14.3 16 32.0 4 4.0 10 16.6 17 34.7 5 5.8 11 19.0 18 37.6 6 7.8 12 21.5 19 40.4 7 9.8 13 24.1 20 43.2 14 26.7 2. CLasses for Characterizing the Function Primitives: separation: primitives that divide the incoming data items. amalgamation: primitives that merge incoming data items. data direction: primitives that steer data according to a control variable. simple update:" primitives that update one or more items of stored data storage management: primitives that analyze stored data and act based on the state of that data. edi: primitives that evaluate net input data at the man-machine boundary. verification: primitives that check for and report on internal inconsistencies. text manipulation: primitives that deal with text strings. synchronization: primitives that decide when to act or prompt others to act. output generation: primitives that format net output data flows. display: primitives that construct composite outputs: graphs, pictures, etc. tabular analysis: primitives that do formatting and simple tabular output. arithmnetic: primitives that do simple mathematics ( arithmetic). computation: primitives that do complex arithmetic ( integration, differentiation, transforms, matric manipulation, etc.) initiation: primitives that establish starting values for stored data. device management: primitives that interact with devices outside the product. 3. Lookup Associated Weight Separation 0.6 Synchronization 1.5 Amalgamation 0.6 Output Generation 1.0 Data Direction 0.3 Display 1.8 Simple Update 0.5 Tabular Analysis 1.0 Storage Management 1.0 Arithmetic 0.7 Edit 0.8 Initiation 1.0 Verification 1.0 Computation 2.0 Text Manipulation 1.0 Device Management 2.5 4. REi to COBi Table REi COBi 1 1.0 2 2.3 3 4.0 4 5.8 5 7.8 6 9.8 >6 2* REi