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

Growing Software Systems

2c1389cd34e090ffb7c71ecbe3b00e1b?s=47 Marc
December 07, 2014

Growing Software Systems

Quick overview of evolutionary software development concepts and processes aimed to grow adaptive systems.

2c1389cd34e090ffb7c71ecbe3b00e1b?s=128

Marc

December 07, 2014
Tweet

Transcript

  1. Software Systems Growing

  2. None
  3. Software systems are grown, not built.

  4. Architecture won't gradually emerge out of refactorings.

  5. Frameworks are not the architecture Frameworks are TOOLS

  6. E-Type Evolution Processes Multi-agent, multi-level, multi-loop feedback systems

  7. Categories of Software Systems Conforms to an exact specification. Specification

    based → mathematical criteria. Consistent with a single external paradigm. Paradigmatic domain → stable assumptions. v.g. Unicode, Physics simulation S-Type P-Type E-Type Actively used and embedded in the real world. Evolutionary systems → constantly adapting to change.
  8. A consciously crafted evolutionary baseline architecture allows to: Adapt to

    change Defer decisions Cope with growth Reduce entropy Nurture quality Evolutionary Architecture Retain conceptual integrity
  9. Lehman's Laws of Software Evolution 1. Continuing Change 2. Increasing

    Complexity 3. Self Regulation 4. Conservation of Organisational Stability 5. Conservation of Familiarity 6. Continuing Growth 7. Declining Quality 8. Feedback System
  10. Lehman's Laws of Software Evolution 8. Feedback System 1. Continuing

    Change 6. Continuing Growth 3. Self Regulation 2. Increasing Complexity 7. Declining Quality 5. Conservation of Familiarity 4. Conservation of Organisational Stability
  11. E-Type Evolution Feedback Loops

  12. E-Type Planning R1 R2 R3 R4 Priorized Requeriment Queue Anatomy

    Plan Codebase Stable Baseline N Stable Baseline N+1 Release Captures dependencies & Coordinates parallelism System increments yielding evolution of the codebase IC1 IC2 IC3 IC4
  13. SP

  14. Software Products Conceptual Network Problem Domain Executable Systems Solves Embodied

    Essential Complexity Accidental Complexity 9/10 Effort • Tools • Frameworks • Methodologies • Concepts • Collaborations • Algorithms 1/10 Effort
  15. Software Product Lines Platform Core Assets Strategic Market Domain Product

    Family Supports Variants Market Segment Needs Fulfills
  16. Evolution of Software Product Models

  17. Bibliography Lehman, Meir M. Programs, Life Cycles, and Laws of

    Software Evolution. Madhavji, Nazim H., Fernandez Ramil Juan Carlos, and Dewayne E. Perry. Software Evolution and Feedback: Theory and Practice. Chichester, England: John Wiley & Sons, 2006. Print. Brooks, Frederick P. The Mythical Man-month: Essays on Software Engineering. Weiss, Michael. Economics of Software Product Development Collectives. Petersen, K. & Wohlin, C. Measuring the Flow in Lean Software Development.
  18. References Howeler & Yoon and Squared Design Lab Eco Pods

    Architectural Design with Robotic Arms. https://www.flickr.com/photos/justinbaeder/ https://www.flickr.com/photos/ellenjo/ https://www.flickr.com/photos/29487767@N02/ https://www.flickr.com/photos/annieominous/
  19. Thanks!!!