less satisfying to its users over time, unless it is continually adapted to meet new needs. 2. Increasing complexity—A software system will become progressively more complex over time, unless explicit work is done to reduce its complexity. 3. Self-regulation—The process of software evolution is self-regulating, with close to normal distribution of the product and process artifacts that are produced. 4. Conservation of organizational stability—The average effective global activity rate on an evolving software system does not change over time; that is, the amount of work that goes into each release is about the same. 5. Conservation of familiarity—The amount of new content in each successive release of a software system tends to stay constant or decrease over time. 6. Continuing growth—The amount of functionality in a software system will increase over time, in order to please its users. 7. Declining quality—A software system will be perceived as declining in quality over time, unless its design is carefully maintained and adapted to new operational constraints. 8. Feedback System—Successfully evolving a software system requires recognition that the development process is a multi-loop, multiagent, multilevel feedback system. 11 Godfrey, M. W. and German, D. M. (2013), On the evolution of Lehman's Laws. J. Softw. Evol. and Proc.. doi: 10.1002/smr.1636
freeze and replace replacement delivered enhancement phase conventional development Lateness Shortfall Inappropriateness Longevity Adaptability (shaded area) (slope of line) Source: Adapted from Davis 1988, pp1453-1455 User Requirements Always Grow 12
feature driven development, user stories, acceptance testing. lightweight and iterative (?) 22 developers talk to “Product Owner” assume change and react, rather than plan RE is ongoing and continuous
about implementation (Grant Ingersoll) 2008: First JIRA ticket created (Michael McCandless) 2010: Feature branch integrated into trunk (all) 2012: Feature ships as 4.0 Alpha 2009: Feature progress misses release 2.9; code later released for stress testing by others (McCandless) 2009: Unicode incompatibility detected (Robert Muir)
as your terms index impl?” “No – changing something like this requires a lot of coding, so it's better to do thought experiments first to winnow down the options." “ Mike, this change to byte[ ] in TermRef will break backwards compatibility, without some special attention paid to the utf-16 to utf-8 conversion. “ In my opinion it would be better to think in the future how we can improve lucene in the following ways: The term dictionary should be more "DFA-friendly", [etc.] “
Strategic vision emergent rather than directed. No hard deadlines. • JIRA is central to RE process. • Detailed knowledge lives inside the developer/requester. 28
seeing] that insufficient RE causes inconsistent, incomplete and incorrect requirements specifications and is responsible for a significant number of problems encountered in development projects.” – Klaus Pohl, preface to RE textbook 32
Manifesto, Agile BABOK, BDD etc. • Social nature of RE in OSS explored by Walter Scacchi. • Emmanuel Letier exploring requirements prediction. • Marco Lormans and Arie van Deursen worked on requirements coverage. • Niu et al. “Traceability-enabled refactoring for managing just-in-time requirements” • Heck and Zaidman: “Horizontal traceability for just-in-time requirements: the case for open source feature requests” 34