SER516 Software Agility: Project and Process Management Javier Gonzalez-Sanchez [email protected]u javiergs.engineering.asu.edu Office Hours: By appointment
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
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?
Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 10 Questions about YOUR projects § Velocity § D metric § A metric § Clean code cases § Diagrams § Etc.
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
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]
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
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?
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 ) { // .. } }
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?
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
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
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.