growing software systems

19
Software Systems Growing

Upload: marc

Post on 14-Jul-2015

75 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Growing Software Systems

Software SystemsGrowing

Page 2: Growing Software Systems
Page 3: Growing Software Systems

Software systems are grown, not built.

Page 4: Growing Software Systems

Architecture won't gradually emerge out of refactorings.

Page 5: Growing Software Systems

Frameworks are not the architectureFrameworks are TOOLS

Page 6: Growing Software Systems

E-Type Evolution ProcessesMulti-agent, multi-level, multi-loop feedback systems

Page 7: Growing Software Systems

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.

Page 8: Growing Software Systems

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

Page 9: Growing Software Systems

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

Page 10: Growing Software Systems

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

Page 11: Growing Software Systems

E-Type Evolution Feedback Loops

Page 12: Growing Software Systems

E-Type Planning

R1

R2

R3

R4

PriorizedRequerimentQueue

AnatomyPlan

Codebase

StableBaseline N

StableBaseline N+1

Release

Captures dependencies&

Coordinates parallelism

System incrementsyielding evolutionof the codebase

IC1

IC2

IC3

IC4

Page 13: Growing Software Systems

SP

Page 14: Growing Software Systems

Software Products

Conceptual Network

Problem Domain

Executable Systems

Solves Embodied

EssentialComplexity

AccidentalComplexity

9/10 Effort

● Tools● Frameworks● Methodologies

● Concepts● Collaborations● Algorithms

1/10 Effort

Page 15: Growing Software Systems

Software Product Lines

PlatformCore Assets

Strategic MarketDomain

Product Family

Supports

Variants

Market SegmentNeeds

Fulfills

Page 16: Growing Software Systems

Evolution of Software Product Models

Page 17: Growing Software Systems

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.

Page 18: Growing Software Systems

References

Howeler & Yoon and Squared Design LabEco 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/

Page 19: Growing Software Systems

Thanks!!!