SER516 Lecture 25

SER516 Lecture 25

Software Agility: Project and Process Management
Structural Quality II
(202003)

B546a9b97d993392e4b22b74b99b91fe?s=128

Javier Gonzalez

March 01, 2019
Tweet

Transcript

  1. SER516 Software Agility: Project and Process Management Javier Gonzalez-Sanchez javiergs@asu.edu

    javiergs.engineering.asu.edu Office Hours: By appointment
  2. Previously … 19

  3. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 3 Principles

    1. Acyclic Dependency Principle (ADP): Avoid dependency cycles . 2. Stable Dependency Principle (SDP): Every dependency between modules a and b should terminate on a module whose Ia < Ib or Aa > Ab 3. Stable Abstraction Principle (SAP): More stable a package is, the more abstract it should be.
  4. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 4 Dependency

    Graph
  5. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 5 Metrics

    ü Tangled ü Abstractness ü Instability
  6. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 6 Example

    A) B)
  7. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 7 Question

    public class Foo { Bar b= new Bar(new Car()); public Foo (Car c) { c.doIt(b); } public void m (Delta d) { d.action(b); } } public class System { public ... main ( ...) { Foo f = new Foo(); //... } } • Tangled: • ISystem = • IFoo = • IBar • Afoo • Any candidate for “painful” zone:
  8. Structural Quality 19

  9. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 9 Main

    Sequence Abstract concrete Stable Hard to Change Only incoming dependencies Unstable Changeable Only outgoing dependencies
  10. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 10 Distance

    § Distance: how far a package is away from the Main Sequence § D = A + I – 1 Values -1 to 1 § Absolute Distance |D|
  11. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 11 Example

    project3.common.model project3.client.UI project3.server.controller
  12. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 12 Example

    1 • Distance • Abstractness • Instability • Afferent Coupling (in) • Efferent Coupling (out)
  13. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 13 Example

    2 | Instability?
  14. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 14 Example

    2 | Abstractness?
  15. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 15 Example

    2 | Distance?
  16. Tool

  17. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 17 Tools

    1. Download and install STAN https://stan4j.com Stand alone or Eclipse plug-in 1. Metrics 2. Ca, Ce, I, A, D. 2. Distance Plot 3. Dependency Graph 4. Violations Report
  18. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 18 Violations

    Report
  19. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 19 Violations

    Report around 20 is perfect, up to 50 is still fine, up to 100 is critical, above 150 is really bad, and more than 250 is !
  20. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 20 Quiz

    6 1. Download and install STAN https://stan4j.com 2. For your Project3 submit in a document: § Ca, Ce, I, A, D. § Violations report § Distance plot § Dependency Graph § One or two paragraphs conclusion § Add only the name of participating team members § Individual submissions are OK 3. Due: Tonight 11:59 PM. (Blackboard à Homeworks à Quiz 6)
  21. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 21 Reference

    § Agile Software Development: Principles, Patterns, and Practices. Robert C. Martin. Prentice Hall. 2006. Chapter 30.
  22. SER516 – Software Agility Javier Gonzalez-Sanchez javiergs@asu.edu Spring 2018 Disclaimer.

    These slides can only be used as study material for the SER516 course at ASU. They cannot be distributed or used for another purpose.