Improving Development Flow

709 views

Published on

Introductory material about development flow and software science.

TOPICS
- Technical Debt
- DevOps
- Lean Software Development
- Software Quality
- Clean Architecture
- Gamification & Fun
- Team Culture

Published in: Business, Technology
  • Be the first to comment

  • Be the first to like this

Improving Development Flow

  1. 1. IMPROVING DEVELOPMENT FLOW INTRODUCTORY MATERIAL
  2. 2. LEAN PRINCIPLES ELIMINATE WASTE BUILT-IN QUALITY DELIVER LEARN DEFER DECISIONS 360º PANORAMA
  3. 3. LEAN PRINCIPLES ELIMINATE WASTE BUILT-IN QUALITY DEFER DECISIONS 360º PANORAMA CODING MANAGEMENT ARCHITECTURE DEVOPS
  4. 4. DEVELOPMENT Key Elements FLOW SMART OPERATIONS CLEAN ARCHITECTURE BEAUTIFUL CODE TEAM CULTURE LEAN MANAGEMENT MEASURABLE UX
  5. 5. PRESERVING DEVELOPMENT FLOW GOOD CODE DIRTY CODE COST ($) TIME (⌚)
  6. 6. PRESERVING DEVELOPMENT FLOW NO FUTURE DIRTY CODE X COST ($) REWRITE OPPORTUNITY TIME (⌚) BANKRUPTCY
  7. 7. PRESERVING DEVELOPMENT FLOW Pressure applied RESULT On time, On budget CLAIM Productivity improved REMAINING WORK TECHNICAL DEBT TIME PLANNED RELEASE FULL QUALITY RELEASE
  8. 8. PRESERVING DEVELOPMENT FLOW FLUIDITY BOOST ADAPTABILITY SHRINK VISCOSITY STAGNATION
  9. 9. SOFTWARE QUALITY ISO9126 FUNCTIONALITY RELIABILITY PORTABILITY INTERNAL EXTERNAL QUALITY EFFICIENCY MAINTAINABILITY USABILITY
  10. 10. SOFTWARE COMPLEXITY DIFFICULTY PROGRAMMER PROGRAM debugging modifying coding testing
  11. 11. SOFTWARE METRICS SIZE METHOD CLASS / MODULE Comment Percentage - CP Source Lines of Code - SLOC # Methods, Files, Classes &c. Cyclomatic Complexity - CC Test Code Coverage - TCC Coupling Between Object Classes - CBO Lack of Cohesion in Methods - LCOM
  12. 12. SIZE Less is more. Sometimes...
  13. 13. SIZE FATTEN SOURCES Feature creep Patchwork Automated tools Heavyweight frameworks Careless packaging ARTIFACTS DEVELOPMENT Packages Memory Network Source code Disk DEPLOYMENT RUNTIME
  14. 14. SOURCE CODE SURFACE SLOC # CLASSES # PACKAGES
  15. 15. METHODS
  16. 16. CYCLOMATIC COMPLEXITY Number of independent execution paths
  17. 17. CYCLOMATIC NUMBER M = E - N + 2P entry WHERE E = # Edges N = # Nodes P = # Exit nodes exit for loop
  18. 18. CYCLOMATIC NUMBER 1 1 2 M = 5 - 5 + 2 2 4 3 2 4 3 5 5
  19. 19. CYCLOMATIC NUMBER 1 2 SAFE 5 DANGEROUS 10 HIGHLY DANGEROUS CATASTROPHIC
  20. 20. TEST CODE COVERAGE Statement COMPLIANCE LEVELS Test Effectiveness Ratio - TER TER1 Control-flow branches TER2 Linear Code Sequence and Jump - LCSAJ TER3
  21. 21. CLASS / MODULE
  22. 22. COUPLING FAN-OUT FAN-IN Depth of inheritance CHILDREN
  23. 23. COHESION “ For each module in isolation, how tightly bound or related its internal elements are to one another. The most effectively modular system is the one for which the sum of functional relatedness between pairs of elements not in the same module is minimized; among other things, this tends to minimize the required number of intermodular connections and the amount of intermodular coupling. Edward Yourdon & Larry L. Constantine Structured Design
  24. 24. EQUILIBRIUM
  25. 25. FOCUS EQUILIBRIUM Multi-level Quality & Planning SEMANTICS Key abstractions Well defined boundaries Clean interactions EMBODIMENT Visualize project state Minimize time-boxing Avoid isolation Forget frameworks
  26. 26. GET INTO FLOW State of mind in which awareness and action become one
  27. 27. HAVE FUN S.M.A.R.T GOALS SERIOUS FUN Challenge Mastery Accomplishment CELEBRATE Purpose Focus Meaning CONTINUOUS REINFORCEMENT HARD FUN
  28. 28. CRITICAL ADVICE PRACTICES ARE JUST MEANS TO ACHIEVE GOALS
  29. 29. THANK YOU!

×