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

Slides:



Advertisements
Similar presentations
Processes. Outline Definition of process Type of processes Improvement models Example Next steps… 1.
Advertisements

Chapter 16: Analysis and Design (a short introduction) ● As engineers in other desciplines do, it necessary for real projects to “analyse” and “design”
SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
CMMI – Continuous as well as staged model CMMI capability levels – Incomplete, performed, managed, defined, quantitatively managed, optimized Example.
OPEN DEVELOPMENT, AGILE, XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
Supported by: Joint MSc curriculum in software engineering European Union TEMPUS Project CD_JEP New Topics for Software Evolution Miloš Radovanović.
Anna Ruokonen/TUT Open source and empirical studies An Empirical Study of Open-Source and Closed-Source Software Products by Paulson, J.W.; Succi,
March 30, Exploratory Testing Testing Approaches Analytical Information-driven Intuitive Exploratory Design the tests and test concurrently Learn.
Dr Kettani, Spring 2002 Software Engineering IIFrom Sommerville, 6th edition Software change l Managing the processes of software system change.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
DAIMIHenrik Bærbak Christensen1 Product Lines Architectural Reuse.
Software evolution.
Software evolution.
SE 555 Software Requirements & Specification 1 SE 555 Software Requirements & Specification Prototyping.
Problem with Software Requirements are complex The client does not know the functional requirements in advance Requirements may be changing Technology.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Chapter 27 Software Change.
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
University of Waterloo Adaptation, Selection, and Intelligent Design: The Forces Behind Software Evolution Michael W. Godfrey Software Architecture Group.
University of Waterloo How does your software grow? Evolution and architectural change in open source software Michael Godfrey Software Architecture Group.
1 Software Construction Software Construction Chapter 1.
SOFTWARE ENGINEERING MCS-2 LECTURE # 5. RAD (RAPID APPLICATION DEVELOPMENT) MODEL  In RAD model the components or functions are developed in parallel.
Software evolution. Objectives l To explain why change is inevitable if software systems are to remain useful l To discuss software maintenance and maintenance.
Software change  Managing the processes of software system change.
Legacy systems overview DT Legacy System definition “Legacy system is deficiency in a system in terms of its suitability to the business, its Platform.
TOPIC R Software Maintenance, Evolution, Program Comprehension, and Reverse Engineering SEG4110 Advanced Software Design and Reengineering.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
© S. Demeyer, S. Ducasse, O. Nierstrasz Intro.1 1. Introduction Goals Why Reengineering ?  Lehman's Laws  Object-Oriented Legacy Typical Problems  common.
Reviewing Recent ICSE Proceedings For:.  Defining and Continuous Checking of Structural Program Dependencies  Automatic Inference of Structural Changes.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
 CS 5380 Software Engineering Chapter 9 Software Evolution.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Summarizing the Content of Large Traces to Facilitate the Understanding of the Behaviour of a Software System Abdelwahab Hamou-Lhadj Timothy Lethbridge.
Open Source Software Architecture and Design By John Rouda.
Department of Information Business Discussion of a Large-Scale Open Source Data Collection Methodology Michael Hahsler and Stefan Koch Department of Information.
1 Evaluating Code Duplication Detection Techniques Filip Van Rysselberghe and Serge Demeyer Lab On Re-Engineering University Of Antwerp Towards a Taxonomy.
©Ian Sommerville 2004 Software Engineering. Chapter 21Slide 1 Chapter 21 Software Evolution.
Manag ing Software Change CIS 376 Bruce R. Maxim UM-Dearborn.
Educ 200C Wed. Oct 3, Variation What is it? What does it look like in a data set?
Evolution in Open Source Software: A Case Study Michael W. Godfrey Qiang Tu [paper in ICSM 2000] Software Architecture Group University of Waterloo.
Andrea Capiluppi Dipartimento di Automatica e Informatica Politecnico di Torino, Italy & Computing Dept. The Open University, UK AICA 2004, Benevento,
Software Evolution Program evolution dynamics Software maintenance Complexity and Process metrics Evolution processes 1.
Evolution in Open Source Software (OSS) SEVO seminar at Simula, 16 March 2006 Software Engineering (SU) group Reidar Conradi, Andreas Røsdal, Jingyue Li.
Evolution in Open Source Software: A Case Study
A Study of Cloning in the Linux SCSI Drivers Wei Wang, Michael W. Godfrey Software Architecture Group David R. Cheriton School of Computer Science University.
Understanding Software Evolution Michael W. Godfrey Software Architecture Group University of Waterloo.
EMEA Beat Schwegler Architect Microsoft EMEA HQ Ingo Rammer Principal Consultant thinktecture
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
University of Waterloo Four “interesting” ways in which history can teach us about software Michael W. Godfrey * Xinyi Dong Cory Kapser Lijie Zou Software.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
Copyright 2015, Robert W. Hasker. Continuous Inspection  Code reviews  Powerful tool  Difficult to ensure meaningful reviews take place  Static analysis.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
ARCH-06 Redesign & Harvest Mike Ormerod - Architect Christian Stiller - Senior Consultant Applied Technology Group.
Presented by Lu Xiao Drexel University Quantifying Architectural Debt.
University of Waterloo Exploring Structural Change and Architectural Evolution Qiang Tu and Michael Godfrey Software Architecture Group (SWAG) University.
1 Requirements Engineering for Agile Methods Lecture # 41.
Chapter 8: Maintenance and Software Evolution Ronald J. Leach Copyright Ronald J. Leach, 1997, 2009, 2014,
A service Oriented Architecture & Web Service Technology.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVI. Software Evolution.
Managing the System PPT SOURCE : Shari L. Pfleeger Joann M. Atlee.
Chapter 25: Architecture and Product Lines
Understanding Software Evolution
Chapter 27 Software Change.
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
CS310 Software Engineering Lecturer Dr.Doaa Sami
Software Processes Process should be
Chapter 8 Software Evolution.
On the notion of Variability in Software Product Lines
Presentation transcript:

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

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?

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).

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

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

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

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

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

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

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

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

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

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

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

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

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 *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.

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

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

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

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

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

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

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

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

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

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

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?

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

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

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