Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Future Research Challenges in Software Evolution
1. 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
2. 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
3. PhDs in Europe
in the domain of
software evolution
(data for 2009 not yet included)
4. Observations
Software 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 !
5. 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
6. Changing software is costly
(Schach, 2008): Most of the effort and cost is spent on
post-delivery maintenance
based on various data sources
Average cost between Average cost between
1976 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
7. 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”
8. Software Evolution Challenges
The 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
9. Specific Scaleability
Challenge
Application Interconnected systems, distributed systems, ultra-large scale systems, …
domain
Problem 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, file
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.
10. Specific Software migration / re-engineering
Challenge
Application Any domain where “legacy” systems need to be upgraded to newer
domain technologies
Problem • 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
11. Specific Upgrading software frameworks
Challenge
Application ERP systems (e.g. SAP, Microsoft, Oracle, …), CMS systems, …
domain Any software framework that is subject to customisation
Problem 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 systems
Challenge • 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
12. Specific Runtime evolution and dynamic updating
Challenge
Application Telecommunication, distributed systems, finance, internet applications
domain Any domain that requires some degree of high availability
Problem Many systems have become so indispensable that one cannot (afford to)
shut them down to upgrade them
Challenge • 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.
13. Specific Model-driven evolution and maintenance
Challenge
Application MDE,MDA,MDD
domain Application domains where high-level models or domain-specific
visual languages are/can be used
Problem 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?
14. Generic Software quality improvement and quality assurance
Challenge
Application Any
domain
Problem • Software is too often suffering from poor quality and lack of
evolvability
• Software quality and evolvability problems are not visible to
managers
Challenge • 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
15. Generic Effort estimation and change impact analysis
Challenge
Application Any
domain
Problem For a given change request, it is very difficult to analyse its impact
or to estimate the effort it takes to implement it
Challenge 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?
16. Generic Integrate evolution support in software
Challenge development processes and tools
Application Any type of software development
domain
Problem Current software development tools do not provide sufficient
support for software evolution
Challenge • 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
17. Generic Empirical research in software evolution
Challenge
Application Any
domain
Problem Empirical research in software evolution is hard due to: lack of subjects,
lack of industrial data, threats to validity
Challenge • How to access industrial data of how software evolves “in the field” 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