Presentation is loading. Please wait.

Presentation is loading. Please wait.

University of Waterloo How does your software grow? Evolution and architectural change in open source software Michael Godfrey Software Architecture Group.

Similar presentations


Presentation on theme: "University of Waterloo How does your software grow? Evolution and architectural change in open source software Michael Godfrey Software Architecture Group."— Presentation transcript:

1 University of Waterloo How does your software grow? Evolution and architectural change in open source software Michael Godfrey Software Architecture Group (SWAG) University of Waterloo

2 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?2 What is software evolution? “Evolution is what happens while you’re busy making other plans.” We distinguish between maintenance and evolution: –Maintenance is the planned set of tasks to effect changes. –Evolution is what actually happens to the software. All I want to know is: How and why does software evolve?

3 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?3 Lehman’s Laws in a nutshell Observations: –(Most) useful software must evolve or die. –As a software system gets bigger, its resulting complexity tends to limit its ability to grow. –Development progress/effort is (more or less) constant; growth is at best constant. Lehman/Turski’s model: y’= y + E/y 2 ~ (3Ex) 1/3 where y= # of modules, x = release number Advice: –Need to manage complexity. –Do periodic redesigns. –Treat software and its development process as a feedback system (and not as a passive theorem).

4 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?4 Lehman’s examples

5 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?5 Growth of # of source files

6 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?6 Growth of # of global fcns, variables, and macros

7 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?7 Growth of compressed tar file

8 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?8 Growth of Lines of Code (LOC) y =.21*x 2 + 252*x + 90,055 r2=.997

9 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?9 Average/median.c file size

10 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?10 Average/median.h file size

11 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?11 Growth of major SSs (dev. releases)

12 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?12 SS LOC as percentage of total system

13 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?13 SS LOC as percentage of total system (ignoring drivers)

14 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?14 Growth of arch SSs

15 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?15 Growth of drivers SSs

16 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?16 Observations and hypotheses Growth along devel. path is super-linear! y =.21*x 2 + 252*x + 90,055 r2=.997 y = size in LOC x = days since v1.0 r2 is “coefficient of determination” using least squares Lehman/Turski’s model: y’= y + E/y 2 ~ (3Ex) 1/3 where y= # of modules, x= release number –Linux’s strong growth is continuing. –This is stronger growth at MLOC level than observed by others (Lehman, Gall), even for other OSs.

17 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?17 Growth of fetchmail [Raymond]

18 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?18 Growth of pine

19 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?19 Growth of X Windows X11R6 X11R5 X11R3 X10R3 X10R4 X11R1 X11R2 X11R6.1 X11R6.3 X11R6.4

20 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?20 Growth of gcc/g++/egcs

21 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?21 Growth of vim (text editor)

22 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?22 vim avg % comments and blank lines per file

23 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?23 vim avg/median file size

24 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?24 vim ’s architecture

25 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?25 Change patterns and evolutionary narratives Phenomena observed in Linux evolution –Bandwagon effect –Contributed third party code –“Mostly parallel” enables sustained growth –Clone and hack –Careful control of core code; more flexibility on contributed drivers, experimental features

26 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?26 Change patterns and evolutionary narratives “Band-aid evolution” (just add a layer) –quick way to add new functionality, esp. if system is not well understood e.g., Y2K fixing, adding portability, new features “Vestigial features” –design artifact persists after rationale dies e.g., whale fin bone structure resembles hand “Adaptive radiation” [Lehman] –when conditions permit, encourage wild variation for a while. –later, evaluate and let “best” ideas live on. e.g., Linux kernel evolution “Convergent evolution” –compare similar systems to reference arch. (or to each other) e.g., everyone grows an XML generator in response to market pressure

27 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?27 Open questions What are the recurring patterns and compelling metaphors of software evolution? Does software evolve in the same way as the natural world? –The Nature of Economies, by Jane Jacobs How to measure size? –How to correlate size and quality? How to measure change? –How to model architectural change? What is the predictive power of such models? –Do the “other phenomena” dominate?

28 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?28 Change patterns and evolutionary narratives Cathedral style [Raymond] –careful control and management –debugging done before committing code –evolution is slow, planned, rarely undone Bazaar style (OSD) –lots of low-level changes, frequent fixes –lots of “building around” rather than wholesale changing, occasional redesigns –creeping feature-itis, “complete” dependency graph

29 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?29 Change patterns and evolutionary narratives Radical redesigns (localized and global) –aka “refactoring” –little new functionality added, but structure changes significantly, legacy cruft dissipates –likely “goodness” (design metrics) improves Migration patterns –look out for known translation idioms, especially if migration is not one big bang e.g., procedural-to-OO idioms

30 Michael W. Godfrey ASERC workshop August 2001 How does your software grow?30 Change patterns and evolutionary narratives OO evolutionary patterns –one recognizable design pattern transformed into another (or a variation of the original) requires good OO extraction tools (dynamic binding, polymorphism, reflection, etc.) Reuse patterns –components are (re)used in different systems e.g., build COTS interface, throw out homebrew DB


Download ppt "University of Waterloo How does your software grow? Evolution and architectural change in open source software Michael Godfrey Software Architecture Group."

Similar presentations


Ads by Google