110 likes | 567 Views
DeMarco’s Bang Metric. By William Lord & Jason C. Slaughter. Primitives. Functional primitives (FuP) Data elements (DE) Objects (OB) Relationships (RE) States (ST) Transitions (TR) Modified manual functional primitives (FuPM) Input data elements (DEI) Output data elements (DEO)
E N D
DeMarco’s Bang Metric By William Lord & Jason C. Slaughter
Primitives • Functional primitives (FuP) • Data elements (DE) • Objects (OB) • Relationships (RE) • States (ST) • Transitions (TR) • Modified manual functional primitives (FuPM) • Input data elements (DEI) • Output data elements (DEO) • Retained data elements (DER) • Data tokens (TCi) • Relationship connections (REi)
Primitives Only the following primitives are used in the calculation of DeMarco’s bang metric. • Functional primitives (FuP) • Objects (OB) • Relationships (RE) • Data tokens (TCi) • Relationship connections (REi)
Distribution of Software Applications Scientific Commercial Data-Strong Hybrid All Projects Function-Strong
Application Classification RE/FuP < 0.7 Function-Strong Application RE/FuP > 1.5 Data-Strong Application midrange indicates Hybrid
Function-strong algorithm Set initial value bang = 0 do while functional primitives remain to be evaluated compute token-count for primitive i compute corrected FuP increment (CFuPI) allocate primitive to class assess class and note weight multiply CFuPI by assessed weight bang = bang + weighted CFuPI enddo
Primitve Classification ClassWeight Class 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
Function-strong algorithm Set initial value bang = 0 do while functional primitives remain to be evaluated compute token-count for primitive i compute corrected FuP increment (CFuPI) allocate primitive to class assess class and note weight multiply CFuPI by assessed weight bang = bang + weighted CFuPI enddo
Data-strong Algorithm set initial value bang = 0 do while objects remain to be evaluated in data model compute count of relationships for object i compute corrected OB increment (COBI) bang = bang + COBI enddo