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

SER516 Lecture 09

SER516 Lecture 09

Software Agility
Technical Skills
(202102)

B546a9b97d993392e4b22b74b99b91fe?s=128

Javier Gonzalez

February 07, 2019
Tweet

Transcript

  1. jgs SER 516 Software Agility Lecture 09: Technical Skills Dr.

    Javier Gonzalez-Sanchez javiergs@asu.edu javiergs.engineering.asu.edu | javiergs.com PERALTA 230U Office Hours: By appointment
  2. People Factors

  3. jgs 00001001 Agile Principles 1. Our highest priority is to

    satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. 2. Working software is the primary measure of progress. Deliver working software frequently, with a preference to the shorter timescale. 3. Build projects around motivated individuals. People must work together daily throughout the project.
  4. jgs 00001001 Agile Principles 4. The best software emerges from

    self–organizing teams. 5. The most efficient and effective method of conveying information to and within a development team is face–to–face conversation. 6. Simplicity is essential. Continuous attention to technical excellence and good design enhances agility. 7. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
  5. jgs 00001001 People Factors People Factors Amicability Motivated individuals work

    together daily tune and adjust Skills value simplicity technical excellence Communication self-organized conveying information face-to-face
  6. jgs 00001001 People Factors People Factors Amicability Motivated individuals work

    together daily tune and adjust Skills value simplicity technical excellence Communication self-organized conveying information face-to-face
  7. jgs 00001001 People Factors People Factors Amicability Motivated individuals work

    together daily tune and adjust Skills value simplicity technical excellence Communication self-organized conveying information face-to-face
  8. jgs 00001001 Scenario 2

  9. jgs 00001001 Coding “Writing clean code is what you must

    do in order to call yourself a professional.” –Robert C. Martin
  10. jgs 00001001 Coding “Writing clean code is what you must

    do in order to call yourself a professional.” –Robert C. Martin Clean Code: a) Readable and Well-structured b) Extensible c) Testable
  11. jgs 00001001 Coding § “Any fool can write code that

    a computer can understand. Good programmers write code that humans can understand”. -Martin Fowler § “Even bad code can function”. –Robert C. Martin
  12. jgs 00001001 Coding § “The ratio of time spent reading

    vs writing is well over 10:1” – Robert C. Martin
  13. jgs 00001001 Cost As a mess build, the productivity of

    the team decrease. Eventually the team ask for a redesign (i.e., more time)
  14. jgs 00001001 Clean Code Principles 1. Readability e.g. Coding guidelines.

    2. Simplification and Specification e.g. KISS (Keep It Simple by K. Johnson). 3. Decoupling e.g. LOD (Law of Demeter). 4. Avoid Code Bloat e.g. DRY (Do not Repeat Yourself).
  15. Do your projects have clean code? Readability

  16. jgs 00001001 Readability

  17. jgs 00001001 Readability

  18. jgs 00001001 Readability

  19. jgs 00001001 Readability

  20. jgs 00001001 Readability

  21. jgs 00001001 Readability Flag?

  22. jgs 00001001 Readability

  23. jgs 00001001 Readability

  24. jgs 00001001 Readability

  25. jgs 00001001 Readability

  26. jgs 00001001 Readability

  27. jgs 00001001 Reference § Clean code. Robert Martin.

  28. 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.