1 / 16

How does your software grow? Evolution and architectural change in open source software

How does your software grow? Evolution and architectural change in open source software. Michael Godfrey Software Architecture Group (SWAG) University of Waterloo. What is software evolution?. “ Evolution is what happens while you’re busy making other plans.”

regina
Download Presentation

How does your software grow? Evolution and architectural change in open source software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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? How does your software grow?

  3. Lehman’s examples How does your software grow?

  4. Growth of # of source files How does your software grow?

  5. Growth of Lines of Code (LOC) y = .21*x2 + 252*x + 90,055 r2=.997 How does your software grow?

  6. Average/median .h file size How does your software grow?

  7. SS LOC as percentage of total system How does your software grow?

  8. SS LOC as percentage of total system (ignoring drivers) How does your software grow?

  9. Growth of pine How does your software grow?

  10. Growth of gcc/g++/egcs How does your software grow?

  11. Growth of vim(text editor) How does your software grow?

  12. vim avg/median file size How does your software grow?

  13. vim’s architecture How does your software grow?

  14. 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 How does your software grow?

  15. 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 How does your software grow?

  16. 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? How does your software grow?

More Related