Future Research Challenges in Software Evolution Tom Mens Université de Mons General Chair of the ERCIM Working Group on Software Evolution With contributions from other WG members: Y.-G. Guéhéneuc, J. Buckley, R. Mittermeir, A. Winter, J. Muccini, R. Wuyts, R. Laemmel, S. Ducasse, J.M. Jézéquel, K. Mens, J. Visser
Some references used in this presentation• L. Erlikh. Leveraging legacy system dollars for E-business. IT Pro, May/June, pages 17-23, IEEE Press, 2000• T. Mens, M. Wermelinger, S. Ducasse, S. Demeyer, R. Hirschfeld, and M. Jazayeri. Challenges in software evolution. In Proc. Int’l Workshop on Principles of Software Evolution (IWPSE), 2005.• N. H. Madhavji, J. F. Ramil, D. E. Perry. Software Evolution and Feedback: Theory and Practice. John Wiley & Sons, 2006.• S. R. Schach. Object Oriented Software Engineering, McGraw Hill, 2008. ISBN 978-007-125941-5• T. Mens, S. Demeyer. Software Evolution. Springer, 2008• T. Mens, The ERCIM Working Group on Software Evolution: the Past and the Future. Proc. IWPSE-EVOL 2009 (ESEC /FSE proceedings), ACM, 2009• T. Mens. CSMR 2009 European Projects Track. Proc. CSMR, pages 275–276. IEEE, 2009
PhDs in Europein the domain ofsoftware evolution(data for 2009 not yet included)
ObservationsSoftware change/evolution is • inevitable • unpredictable • costly • difficult • time- and resource-consuming • poorly supported by tools, techniques, formalisms • underestimated by managers • poorly understood • If performed well, a major success factor for business innovation !
Software changes are unavoidable / inevitable• Continuous business innovation • Is essential for competitiveness and survival of companies • Is an important driver of software evolution• Requirements changes due to • New customers; existing customers with new demands • Changes in organisational structure; competitors • Changes in legislation • Feedback loop: The changed software may be the reason why the environment changes !• Continuous software quality improvement • Bug fixes • Improvement of quality, performance, reliability, … • Anti-regressive work to counter software ageing/erosion• Changes in external environment • New hardware and software technologies • New versions of interacting software
Changing software is costly(Schach, 2008): Most of the effort and cost is spent on post-delivery maintenance based on various data sourcesAverage cost between Average cost between1976 and 1981 1992 and 1998 Development 25% Development 33% Maintenance 67% Maintenance 75%(Erlikh, 2000, IT Pro) “Leveraging legacy system dollars for E-business” more than 90% of companies resources dedicated to software maintenance
How/why is software evolution research relevant to society and industry?Software evolution is a transversal research activity that is required • In all software engineering activities • E.g. requirements specifications, analysis and design, programming, deployment, … • At all levels of abstraction • E.g. executable code, bytecode, source code, design models, … • In all software development paradigms • For all technologies • In a wide variety of application domains • For many different types of “stakeholders”
Software Evolution ChallengesThe order of the following list of challenges does not reflect their relative importance. We consider them all very important.Some challenges are generic (i.e. relevant to any type of software), while others are specific to a particular domain
Specific ScaleabilityChallengeApplication Interconnected systems, distributed systems, ultra-large scale systems, …domainProblem Current research only studies evolution of individual systems. Solutions do not scale up to very large systems involving multiple languages, multiple levels of abstraction, different geographical locations, with hundreds or thousands of developers, a large (and diverse) user base, different data sources, …Challenge • Provide techniques that support multi-language systems • Cope with massive amounts of data (e.g. metadata, programs, models, languages, processes, tools, documentation, tests) • Combine many different data sources (e.g. version repositories, ﬁle systems, databases, mailing lists, developer fora, bug tracking systems) • Combine many different technologies and paradigms • Performance: how to achieve it, and keep it when the system evolves • Tools: how to debug and maintain such systems? • Study and support co-evolution of interconnected systems.
Specific Software migration / re-engineeringChallengeApplication Any domain where “legacy” systems need to be upgraded to newerdomain technologiesProblem • Legacy systems that are of strategic value to the company have become too expensive to modify, or need to make use of newer technologies • “Wrapping” existing legacy systems is a short-term workaround solution that does not have long-term benefits • Today’s new technology will be tomorrow’s legacy !Challenge • How to migrate/re-engineer legacy systems (and their data) in a timely, cost-effective, resource-limited manner? • How to ensure that the resulting system has the desired quality and functionality? • How to migrate to new technologies and paradigms? (E.g. towards cloud computing, multi-core computing, and so on) • How to use software transformation techniques to automate the migration process? • Come up with good software process models for migration
Specific Upgrading software frameworksChallengeApplication ERP systems (e.g. SAP, Microsoft, Oracle, …), CMS systems, …domain Any software framework that is subject to customisationProblem Many major software vendors develop software frameworks, i.e., partial software systems that need to be customised by their clients. • For vendors, upgrading such frameworks is problematic as it often conflicts with the customisations (add-ons, add-ins, plug-ins) made by the clients. • Customers suffer from vendor lock-in, which threatens evolvability of their IT systemsChallenge • Provide techniques to address the upgrade problem and to facilitate framework development and upgrading • Ensure data consistency and preservation after an upgrade • Provide means to evolve frameworks away from vendor lock-in
Specific Runtime evolution and dynamic updatingChallengeApplication Telecommunication, distributed systems, finance, internet applicationsdomain Any domain that requires some degree of high availabilityProblem Many systems have become so indispensable that one cannot (afford to) shut them down to upgrade themChallenge • How to safely update/change a software system during its execution? • How to build in a control system to decide when and how to change? • How to achieve dynamic reconfiguration of (component-based, service- oriented etc.) distributed architectures? • Context-awareness: How to make software more robust to changes by dynamically adapting to its context of use.Remark The static evolution challenges are as least as important to industry as the dynamic evolution challenge stated here.
Specific Model-driven evolution and maintenanceChallengeApplication MDE,MDA,MDDdomain Application domains where high-level models or domain-specific visual languages are/can be usedProblem How to support evolution and reengineering of software that make heavy use of models (i.e. any kind of software artefact at a higher abstraction level than source code) Examples of models: business process models, analysis and design models, architectures, ...Challenge • How to support traceability between software artefacts? • How to cope with co-evolution • of models and code • of different types of models • of programs and data • How to show that adopting MDE delivers a return-on- investment?
Generic Software quality improvement and quality assuranceChallengeApplication AnydomainProblem • Software is too often suffering from poor quality and lack of evolvability • Software quality and evolvability problems are not visible to managersChallenge • Make software quality and evolvability visible to decision makers by providing integrated techniques and tools for measuring, controlling and improving these non-functional properties • Based on measurable and visible quality problems, managers and project leaders can start to focus on medium- and long-term ROI, as opposed to quick-and-dirty solutions that have a direct profit but are difficult to maintain in the long run
Generic Effort estimation and change impact analysisChallengeApplication AnydomainProblem For a given change request, it is very difficult to analyse its impact or to estimate the effort it takes to implement itChallenge Provide non-intrusive tool support for logging current effort, measuring developer productivity, … in order to address the following questions: • When should an accepted change request be planned? • What is the estimated (local and system-wide) impact of a particular change? • How much effort (time and resources) does it take to make a particular change? • When and where should one restructure the software to make a planned change easier?
Generic Integrate evolution support in softwareChallenge development processes and toolsApplication Any type of software developmentdomainProblem Current software development tools do not provide sufficient support for software evolutionChallenge • Provide better languages, formal methods, and tools that embrace and provide more explicit support for incremental change • Design for change: address maintenance and evolution issues during initial development to create longer-lasting and enduring software systems • Support co-evolution of requirements, design, code, tests • Focus on quality and other non-functional attributes : need for integrated techniques to measure, control and improve these aspects of software • Integrate process support in the development environment
Generic Empirical research in software evolutionChallengeApplication AnydomainProblem Empirical research in software evolution is hard due to: lack of subjects, lack of industrial data, threats to validityChallenge • How to access industrial data of how software evolves “in the ﬁeld” and the ability to perform empirical studies based on this data? • How to involve a sufficient number of subjects (e.g. experienced developers) in an experiment in order to obtain statistically significant results? • How to set up an experiment in such a way that it is replicable by other researchers (access to data, tools, and other resources)? • How to identify the main problems maintainers face? Open source partially addresses this problem: it is easier to access/study/ analyse their data