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

Growing Software Systems

Marc
December 07, 2014

Growing Software Systems

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

Marc

December 07, 2014
Tweet

More Decks by Marc

Other Decks in Technology

Transcript

  1. 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.
  2. 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
  3. 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
  4. 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
  5. 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
  6. SP

  7. 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
  8. Software Product Lines Platform Core Assets Strategic Market Domain Product

    Family Supports Variants Market Segment Needs Fulfills
  9. 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.
  10. 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/