jgs 516 00010000 What could be measured or analyzed? A bad design smells. Robert C. Martin describes the following odors (among others): 1. Rigidity – The system is hard to change because every change forces many other changes. 2. Fragility – Changes cause the system to break in conceptually unrelated places. 3. Immobility – It’s hard to disentangle the system into reusable components. 4. Viscosity – Doing things right is harder than doing things wrong. 5. Opacity – It is hard to read and understand. It does not express its intent well.
jgs 516 00010000 Problem Definition § Cycled components can only be used together: they can only be tested, reused, deployed and understood together. § Every node on a cycle depends on any other.
jgs 516 00010000 Acyclic Dependencies Principle § Avoid dependency cycles § Tangle. A subgraph with at least two nodes, where each node is reachable from each other. § Tangled metric. values greater zero indicate cyclic dependencies.
jgs 516 00010000 Abstractness of a Package § Express the portion of contained abstract types. § It is a value 0 to 1: 0 (only concrete classes) to 1 (only interfaces and abstract classes)
jgs 516 00010000 Instability of a Package § Indicates whether the package is mainly used by other artifacts (stable – hard to change) or if it mainly depends on other artifacts (instable – changeable). § It is a value 0 to 1: 0 only incoming dependencies to 1 (only outgoing dependencies)
jgs 516 00010000 Instability of a Package § Indicates whether the package is mainly used by other artifacts (stable – hard to change) or if it mainly depends on other artifacts (instable – changeable). § It is a value 0 to 1: 0 only incoming dependencies to 1 (only outgoing dependencies)
jgs SER 516 Software Agility Javier Gonzalez-Sanchez [email protected] Spring 2021 Disclaimer. These slides can only be used as study material for the class SER516 at ASU. They cannot be distributed or used for another purpose.