1.5k

# SER516 Lecture 19a

Software Agility
Structural Metrics I
(202103)

## Javier Gonzalez-SanchezPRO

February 23, 2019

## Transcript

1. ### jgs SER 516 Software Agility Lecture 19: Dependency Principles Dr.

Javier Gonzalez-Sanchez javiergs@asu.edu javiergs.engineering.asu.edu | javiergs.com PERALTA 230U Office Hours: By appointment
2. ### jgs 516 00010000 Assignment 05 § Third Sprint Sprint Backlog

Burndown Chart Retrospective Review Product – Source Code – Clean Source Code Product – Class Diagram– Clean Design Due date Assignment 5.3 – March 30

17. ### 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.
18. ### jgs 516 00010000 Goal § Measuring Quality § Dependency Analysis

§ Detect “potential” design flaws
19. ### jgs 516 00010000 Principles 1. Acyclic Dependency Principle (ADP) 2.

Stable Dependency Principle (SDP) 3. Stable Abstraction Principle (SAP)

21. ### 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.
22. ### 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.

24. ### 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)
25. ### 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)
26. ### 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)
27. ### jgs 516 00010000 • Instability = Cout (Cin + Cout)

Stable Abstraction Principle IC = ?, A= ? IX = ?, A= ? IA = ?, A= ?

29. ### jgs SER 516 Software Agility Javier Gonzalez-Sanchez javiergs@asu.edu 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.