Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SER516 Lecture 26

SER516 Lecture 26

Software Agility: Project and Process Management
Final Review
(202004)

Javier Gonzalez-Sanchez
PRO

March 03, 2019
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. SER516
    Software Agility:
    Project and Process Management
    Javier Gonzalez-Sanchez
    [email protected]u
    javiergs.engineering.asu.edu
    Office Hours: By appointment

    View Slide

  2. Final Review
    22

    View Slide

  3. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 3
    Grading
    Exams (2) 50%
    25% + 25%
    25%
    Labs, Quizzes,
    Assignments
    100%
    A+
    97
    A
    93
    A-
    89
    B+
    85
    B
    81
    B-
    77
    C+
    73
    C
    69
    -10%
    10 times randomly
    (-1% per absence)
    Attendance
    25%
    Team Project
    (graded individually)
    D
    65

    View Slide

  4. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 5
    Books
    § Ian Sommerville. Software Engineering
    (10th Edition). Addison-Wesley.
    § Martin, Robert C. Clean Code: A Handbook of Agile
    Software Craftsmanship. 2008.
    § Agile Software Development: Principles, Patterns, and
    Practices. Robert C. Martin. Prentice Hall. 2006.
    Chapter 30.
    § Rubin, K.S. Essential Scrum 2012, Addison-Wesley.

    View Slide

  5. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 6
    Concepts and Theory
    • INVEST
    • DEEP
    • PBI
    • DRY
    • KISS
    • Coupling / Cohesion
    • D
    • A
    • I
    • Ce
    • Ca
    • Tangled
    § Requirement
    § Story
    § Story point
    § Estimation
    § Planning
    § Planning Poker
    § Burndown Chart
    § LOC, ELOC
    § Cyclomatic Complexity
    § Grooming
    § SOC
    § DI

    View Slide

  6. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 7
    Questions about Process

    View Slide

  7. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 8
    Questions about Design

    View Slide

  8. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 9
    Questions about Code
    • Clean?
    • Yes, no, why?
    • DRY?
    • Yes, no, why?
    • KISS?
    • Yes, no, why?
    • Readable?
    • Yes, no, why?
    • Good comments?

    View Slide

  9. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 10
    Questions about YOUR projects
    § Velocity
    § D metric
    § A metric
    § Clean code cases
    § Diagrams
    § Etc.

    View Slide

  10. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 11
    Note
    The following is a summary of the most relevant ideas.
    But, the exam is not limited to these,
    i.e.,
    The following IS NOT a comprehensive list

    View Slide

  11. Agile Process
    1

    View Slide

  12. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 13
    Review
    § Lecture 2: Background of process models (5); agile vs plan-based;
    what is and what is not “Agile”; agile manifesto; When to use agile and
    when is not a “good” option? Factors to be reviewed [Somerville 2,3]
    § Lecture 3: Requirement vs Task; Product backlog; sprint; agile
    process, ceremonies, and roles; burndown chart [Somerville 3,4]
    § Lecture 4: Agile principles (7) [Rubin 3]
    § Lecture 5: People factors (3); clean coding; clean code principles;
    [Martin 1]
    § Lecture 6: PBI; user story; epics; features; themes; [Rubin 5]

    View Slide

  13. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 14
    Review
    § Lecture 7: storyboard; epic vs story; INVEST; common errors [Rubin
    5,6]
    § Lecture 8: Product backlog; DEEP; Planning Poker; Grooming; [Rubin
    6]
    § Lecture 9: Sprint; Sprint characteristics; sprint planning; sprint
    backlog; [Rubin 4]
    § Lecture 10: KISS, DRY, Readable, Coding Guidelines for Java [Java]
    § Lecture 11: Estimation; Velocity; [Rubin 7]

    View Slide

  14. Technical Debt
    2

    View Slide

  15. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 16
    Definition
    Technical
    Debt
    shortcuts
    purposely
    taken
    Bad things
    that plague
    systems
    Bad design
    Defects
    Insufficient test
    coverage
    Excessive manual
    testing
    Poor integration
    management
    Lack of platform
    experience
    • Naïve Debt
    • Unavoidable Debt
    • Strategic Debt
    § Activities to handle technical debt

    View Slide

  16. Design
    3

    View Slide

  17. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 18
    Patterns
    § Observer
    § Delegate
    § Factory

    View Slide

  18. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 19
    Simple Design Rules
    § Write Tests.
    Why?
    § Simple
    How?
    § Expressiveness.
    What?
    How?
    § Minimize items?
    Why?

    View Slide

  19. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 20
    Question
    A
    B

    View Slide

  20. Structure
    4

    View Slide

  21. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 22
    Lecture 18
    § Dependency Injection (DI)
    What is?
    How to implement it?
    § Separation of Concerns (SOC)
    What is?
    How to implement it?
    § Low Coupling
    What is?
    How to implement it?

    View Slide

  22. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 23
    DI, DOC, LC
    § public class Car {
    public Car () {
    engine = new Engine();
    wheels = new Wheels[4];
    seat = new Seats[4];
    // ..
    }
    }
    § public class Car {
    public Car (Engine e, Wheels[] w, Seat[] s ) {
    // ..
    }
    }

    View Slide

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

    View Slide

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

    View Slide

  25. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 26
    Question
    § LOC per method?
    § CC per method?
    § Tangled (best value)?
    § Distance (best value)?
    § Is 0 the best value for A?
    § Is 0 the best value for I?

    View Slide

  26. Metrics
    5

    View Slide

  27. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 28
    ADP, SDP, and SAP
    § Acyclic Dependency Principle (ADP)
    § Stable Dependency Principle (SDP)
    Where a dependency ends?
    § Stable Abstraction Principle (SAP)
    More stable, more abstract

    View Slide

  28. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 29
    ADP ?

    View Slide

  29. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 30
    Equations
    § Instability = Cout
    (Cin + Cout)
    § A =
    // Question: a package with 1 interface and 4 classes
    // implementing the interface.
    § D = A + I – 1

    View Slide

  30. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 31
    SDP ?
    in:0 out 2
    in:1 out 2
    in:1 out 0
    in:2 out 1 in:1 out 0

    View Slide

  31. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 32
    SDP?

    View Slide

  32. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 33
    D?

    View Slide

  33. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 34
    I ?

    View Slide

  34. Families, Lines, and Factories
    6

    View Slide

  35. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 36
    Lecture 21
    § Define: Product Family, Software Factories, and Product
    Lines
    § Productivity, Quality, and Evolution capability
    § Abstraction, granularity, and specificity

    View Slide

  36. SER516 – Software Agility
    Javier Gonzalez-Sanchez
    [email protected]
    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.

    View Slide