Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Software Engineering Prof. Dr. Colin Atkinson 1 Overview 1.Find out why software engineering is important ■ see some software engineering failures 2.Get.

Similar presentations


Presentation on theme: "1 Software Engineering Prof. Dr. Colin Atkinson 1 Overview 1.Find out why software engineering is important ■ see some software engineering failures 2.Get."— Presentation transcript:

1 1 Software Engineering Prof. Dr. Colin Atkinson 1 Overview 1.Find out why software engineering is important ■ see some software engineering failures 2.Get acquainted with – ■ the Chair of Software Engineering ■ the research ■ the people ■ the teaching Accelerating Agile Development through Software Reuse Colin Atkinson Karlsruher Entwicklertag May 9th, 2012

2 2 Software Engineering Prof. Dr. Colin Atkinson 2 Reconciling Agility and Reuse ■ software reuse and agile development have the same underlying goal - ■ to allow new applications to be built more rapidly and cost effectively ■ but they are usually not applied at the same time ■ agile processes almost exclusively focus on developing new software ■ Challenge  ■ make reuse a central part of agile development Analysis Design Code Test Reuse

3 3 Software Engineering Prof. Dr. Colin Atkinson 3 Component Reuse ■ Software Reuse ■ “the process of creating software systems from existing software rather than building software systems from scratch.” [Krueger 92] ■ software component markets famously proposed by McIlroy in 1968 [McIlroy 68] ■ the “holy grail” of software engineering, but has failed to take off to the extent expected or desired ■ Software Component ■ any cohesive and compact unit of software functionality with a well defined interface ■ includes simple programming language classes as well as more complex artefacts such as web services and EJBs ■ not focussed on “snippets”

4 4 Software Engineering Prof. Dr. Colin Atkinson 4 Why “Reuse” Did Dot Take Off ■ Historically, there were there main barriers to systematic component reuse ■ Not enough good components to reuse ■ 200 was considered a lot of components in the golden years of reuse research (1980s and 1990s) ■ Crude retrieval technology ■ often returned a high proportion of unsuitable components or missed many relevant ones ■ Unfavourable risk/effort balance ■ chances of success through reuse too low to justify the effort involved

5 5 Software Engineering Prof. Dr. Colin Atkinson 5 What’s Different Today ■ The situation has improved significantly since the turn of the millennium ■ Plenty of good components to reuse ■ high bandwidth internet available to all ■ vast repositories of open source code ■ web service revolution ■ Advanced retrieval technology ■ Lucene indexing engine ■ advanced retrieval algorithms ■ Radically different risk/effort balance ■ unobtrusive component recommendation tools becoming available

6 6 Software Engineering Prof. Dr. Colin Atkinson 6 Merobase ■ One of the largest software component search engines ■ more than 10 million components ■ Public Features ■ multiple component types ■ source code, binary code, web services, Android apps ■ hybrid search algorithms ■ keyword, name, interface,.. ■ lookup (library, documentation,..) ■ service execution ■ metrics ■ ….

7 7 Software Engineering Prof. Dr. Colin Atkinson 7

8 8 Software Engineering Prof. Dr. Colin Atkinson 8

9 9 Software Engineering Prof. Dr. Colin Atkinson 9 Search Result Quality ■ The new generation of code search engines provides dramatically enhanced search quality ■ Average precision: ■ Signature-based search = 1% ■ string-based search = 16% ■ Name-based = 17% ■ Interface-based= 54% ■ However, this is not enough to significantly change the “build or buy” trade-off ■ Probability of finding component that are really “fit for purpose” is too low compared to the effort involved in exploring reuse opportunities  Need higher precision ■ Semantic search

10 10 Software Engineering Prof. Dr. Colin Atkinson 10 Test-Driven Search ■ most practical way of evaluating a component’s “fitness for purpose” is to test it - ■ can deliver 100% precision identify desired interface compile components find matching components establish acceptability through tests reuse public voidtestTitleRetrieval() { Moviemovie= newMovie("StarWars", 0); assertTrue(movie.getTitle().equals("StarWars")); } public voidtestTitleRetrieval() { Moviemovie= newMovie("StarWars", 0); assertTrue(movie.getTitle().equals("StarWars")); } b) c) d) e) define desired semantics as tests

11 11 Software Engineering Prof. Dr. Colin Atkinson 11 Test Driven Search Example ■ desired interface ■ excerpt of JUnit test public class Mortgage { public Mortgage(double rate, int years, double loan) {} public double MonthlyPayment() {} public double TotalPayment() {} } public void testMortgage() { private Mortgage m = new Mortgage(4.5, 12, 250000); assertEquals(2250.02, m.MonthlyPayment(), 0.01); private Mortgage m = new Mortgage(4.5, 12, 250000); assertEquals(324,002.94, m.TotalPayment(), 0.01); …. }

12 12 Software Engineering Prof. Dr. Colin Atkinson 12 Test Driven Search (Merobase)

13 13 Software Engineering Prof. Dr. Colin Atkinson 13 Code Conjurer Eclipse Plugin ■ Seamlessly integrates Merobase driven search into the Eclipse development environment ■ Main Features ■ code-driven search ■ test-driven search JUnit test driven queries ■ unobtrusive (background) recommendation ■ component dependency resolution ■ interface recommendation ■ code metadata (metrics) ■ Interface adaptation ■ …

14 14 Software Engineering Prof. Dr. Colin Atkinson 14 Test Driven (Code Conjurer)

15 15 Software Engineering Prof. Dr. Colin Atkinson 15

16 16 Software Engineering Prof. Dr. Colin Atkinson 16 Proactive Recommendation Example

17 17 Software Engineering Prof. Dr. Colin Atkinson 17 Conclusion ■ Test-driven search fits naturally into agile, test driven development ■ When used together with a test-driven development strategy like XP, test-driven search makes the effort involved in finding suitable components almost zero ■ Is the key enabling technology for integrating reuse-oriented and agile development ■ can accelerate the agile development process ■ Get involved.. ■ Code Conjurer http://www.code-conjurer.org/http://www.code-conjurer.org/ ■ use it, provide feedback, help enhance it (open source) ■ make your own tools search-driven ■ publically accessible Merobase API ■ create your own code search engine ■ merobase can crawl any content in CVS, SVN,.. repositories ■ Further information: atkinson@informatik.uni-mannheim.de

18 18 Software Engineering Prof. Dr. Colin Atkinson 18 For Further reading ■ W. Janjic, M. Schumacher, Der Herr der Codes, Eclipse Magazin, 2.12, S&S Media GmbH, Frankfurt am Main, 2012 ■ O Hummel, W Janjic, C Atkinson, Code conjurer: Pulling Reusable Software out of Thin Air, IEEE Software 25 (5), 2008


Download ppt "1 Software Engineering Prof. Dr. Colin Atkinson 1 Overview 1.Find out why software engineering is important ■ see some software engineering failures 2.Get."

Similar presentations


Ads by Google