The Bang Metric
19.3.2 The Bang Metric
Like the function point metric, the bang metric can be used to develop an indication of the size of the software to be implemented as a consequence of the analysis model. Developed by DeMarco [DEM82], the bang metric is “an implementation indepen- dent indication of system size.” To compute the bang metric, the software engineer must first evaluate a set of primitives—elements of the analysis model that are not further subdivided at the analysis level. Primitives [DEM82] are determined by eval- uating the analysis model and developing counts for the following forms: 5
Functional primitives (FuP). The number of transformations (bubbles) that “Rather than just
appear at the lowest level of a data flow diagram (Chapter 12). musing on what
Data elements (DE). The number of attributes of a data object, data ele- ‘new metric’ might
ments are not composite data and appear within the data dictionary. apply . . . we should
also be asking Objects (OB). The number of data objects as described in Chapter 12. ourselves the more
Relationships (RE). The number of connections between data objects as basic question,
‘What will we do described in Chapter 12. with metrics.’”
States (ST). The number of user observable states in the state transition dia-
Michael Mah and
gram (Chapter 12).
Larry Putnam
Transitions (TR). The number of state transitions in the state transition dia- gram (Chapter 12).
In addition to these six primitives, additional counts are determined for Modified manual function primitives (FuPM). Functions that lie outside
the system boundary but must be modified to accommodate the new system. Input data elements (DEI). Those data elements that are input to the system. Output data elements. (DEO). Those data elements that are output from
the system. Retained data elements. (DER). Those data elements that are retained
(stored) by the system. Data tokens (TC i ). The data tokens (data items that are not subdivided
within a functional primitive) that exist at the boundary of the ith functional primitive (evaluated for each primitive).
Relationship connections (RE i ). The relationships that connect the ith object in the data model to other objects.
DeMarco [DEM82] suggests that most software can be allocated to one of two domains: function strong or data strong, depending upon the ratio RE/FuP. Function-strong
5 The acronym noted in parentheses following the primitive is used to denote the count of the par- ticular primitive, e,g., FuP indicates the number of functional primitives present in an analysis model.
CHAPTER 19 T E C H N I C A L M E T R I C S F O R S O F T WA R E
applications (often encountered in engineering and scientific applications) empha- size the transformation of data and do not generally have complex data structures. Data-strong applications (often encountered in information systems applications) tend to have complex data models.
RE/FuP < 0.7 implies a function-strong application.
0.8 < RE/FuP < 1.4 implies a hybrid application. RE/FuP > 1.5 implies a data-strong application.
Because different analysis models will partition the model to greater or lessor degrees of refinement, DeMarco suggests that an average token count per primitive is
TC avg
i /FuP
be used to control uniformity of partitioning across many different models within an application domain. To compute the bang metric for function-strong applications, the following algo- rithm is used:
set initial value of bang = 0; do while functional primitives remain to be evaluated
Compute token-count around the boundary of primitive i Compute corrected FuP increment (CFuPI) Allocate primitive to class Assess class and note assessed weight Multiply CFuPI by the assessed weight bang = bang + weighted CFuPI
enddo The token-count is computed by determining how many separate tokens are “visi-
ble” [DEM82] within the primitive. It is possible that the number of tokens and the number of data elements will differ, if data elements can be moved from input to out- put without any internal transformation. The corrected CFuPI is determined from a table published by DeMarco. A much abbreviated version follows:
TC i CFuPI
The assessed weight noted in the algorithm is determined from 16 different classes of functional primitives defined by DeMarco. A weight ranging from 0.6 (simple data routing) to 2.5 (data management functions) is assigned, depending on the class of the primitive.
For data-strong applications, the bang metric is computed using the following algorithm:
PA R T T H R E E C O N V E N T I O N A L M E T H O D S F O R S O F T WA R E E N G I N E E R I N G
set initial value of bang = 0; do while objects remain to be evaluated in the data model
compute count of relationships for object i compute corrected OB increment (COBI) bang = bang + COBI
enddo The COBI is determined from a table published by DeMarco. An abbreviated version
Once the bang metric has been computed, past history can be used to associate it with size and effort. DeMarco suggests that an organization build its own versions of the CFuPI and COBI tables using calibration information from completed software projects.
Parts
» The Concurrent Development Model
» SUMMARY Software engineering is a discipline that integrates process, methods, and tools for
» PEOPLE In a study published by the IEEE [CUR88], the engineering vice presidents of three
» THE PROCESS The generic phases that characterize the software process—definition, development,
» THE PROJECT In order to manage a successful software project, we must understand what can go
» METRICS IN THE PROCESS AND PROJECT DOMAINS
» Extended Function Point Metrics
» METRICS FOR SOFTWARE QUALITY
» INTEGRATING METRICS WITHIN THE SOFTWARE PROCESS
» METRICS FOR SMALL ORGANIZATIONS
» ESTABLISHING A SOFTWARE METRICS PROGRAM
» Obtaining Information Necessary for Scope
» An Example of LOC-Based Estimation
» QUALITY CONCEPTS 1 It has been said that no two snowflakes are alike. Certainly when we watch snow
» SUMMARY Software quality assurance is an umbrella activity that is applied at each step in the
» R diagram 1.4 <part-of> data model; data model <part-of> design specification;
» SYSTEM MODELING Every computer-based system can be modeled as an information transform using an
» Facilitated Application Specification Techniques
» Data Objects, Attributes, and Relationships
» Entity/Relationship Diagrams
» Hatley and Pirbhai Extensions
» Creating an Entity/Relationship Diagram
» SUMMARY Design is the technical kernel of software engineering. During design, progressive
» Data Modeling, Data Structures, Databases, and the Data Warehouse
» Data Design at the Component Level
» A Brief Taxonomy of Styles and Patterns
» Quantitative Guidance for Architectural Design
» Isolate the transform center by specifying incoming and outgoing
» SUMMARY Software architecture provides a holistic view of the system to be built. It depicts the
» The User Interface Design Process
» Defining Interface Objects and Actions
» D E S I G N E VA L U AT I O N
» Testing for Real-Time Systems
» Organizing for Software Testing
» Criteria for Completion of Testing
» The Transition to a Quantitative View
» The Attributes of Effective Software Metrics
» Architectural Design Metrics
» Component-Level Design Metrics
» SUMMARY Software metrics provide a quantitative way to assess the quality of internal product
» Encapsulation, Inheritance, and Polymorphism
» Identifying Classes and Objects
» The Common Process Framework for OO
» OO Project Metrics and Estimation
» Event Identification with Use-Cases
» SUMMARY Object-oriented analysis methods enable a software engineer to model a problem by
» Partitioning the Analysis Model
» Designing Algorithms and Data Structures
» Program Components and Interfaces
» SUMMARY Object-oriented design translates the OOA model of the real world into an
» Testing Surface Structure and Deep Structure
» Deficiencies of Less Formal Approaches 1
» What Makes Cleanroom Different?
» Design Refinement and Verification
» SUMMARY Cleanroom software engineering is a formal approach to software development that
» Structural Modeling and Structure Points
» Describing Reusable Components
» SUMMARY Component-based software engineering offers inherent benefits in software quality,
» Guidelines for Distributing Application Subsystems
» Middleware and Object Request Broker Architectures
» An Overview of a Design Approach
» Consider expert Web developer will create a complete design, but time and cost can be appropriate
» A Software Reengineering Process Model
» Reverse Engineering to Understand Data
» Forward Engineering for Client/Server Architectures
» SUMMARY Reengineering occurs at two different levels of abstraction. At the business level,
Show more