Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Final Review 22

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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.

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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?

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Agile Process 1

Slide 12

Slide 12 text

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]

Slide 13

Slide 13 text

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]

Slide 14

Slide 14 text

Technical Debt 2

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

Design 3

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Structure 4

Slide 21

Slide 21 text

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?

Slide 22

Slide 22 text

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 ) { // .. } }

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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?

Slide 26

Slide 26 text

Metrics 5

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Families, Lines, and Factories 6

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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.