+ All Categories
Home > Documents > Overview

Overview

Date post: 01-Jan-2016
Category:
Upload: kennedy-lee
View: 26 times
Download: 0 times
Share this document with a friend
Description:
Overview. Find out why software engineering is important see some software engineering failures Get acquainted with – the Chair of Software Engineering the research the people the teaching. Accelerating Agile Development through Software Reuse. Karlsruher Entwicklertag - PowerPoint PPT Presentation
18
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
Transcript
Page 1: Overview

1

Software EngineeringProf. 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 EntwicklertagMay 9th, 2012

Page 2: Overview

2

Software EngineeringProf. 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 andcost 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

DesignCode

Test

Reuse

Page 3: Overview

3

Software EngineeringProf. 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”

Page 4: Overview

4

Software EngineeringProf. 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

Page 5: Overview

5

Software EngineeringProf. 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

Page 6: Overview

6

Software EngineeringProf. 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

■ ….

Page 7: Overview

7

Software EngineeringProf. Dr. Colin Atkinson 7

Page 8: Overview

8

Software EngineeringProf. Dr. Colin Atkinson 8

Page 9: Overview

9

Software EngineeringProf. 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

Page 10: Overview

10

Software EngineeringProf. 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 desiredinterface

compilecomponents

find matching components

establish acceptability

through tests

reuse

public void testTitleRetrieval () {

Movie movie = new Movie("Star Wars", 0);assertTrue(movie.getTitle ()

. equals("Star Wars"));}

public void testTitleRetrieval () {

Movie movie = new Movie("Star Wars", 0);assertTrue(movie.getTitle ()

. equals("Star Wars"));}

b)

c)

d)

e)

define desired semantics as tests

Page 11: Overview

11

Software EngineeringProf. 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); ….}

Page 12: Overview

12

Software EngineeringProf. Dr. Colin Atkinson 12

Test Driven Search (Merobase)

Page 13: Overview

13

Software EngineeringProf. 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

■ …

Page 14: Overview

14

Software EngineeringProf. Dr. Colin Atkinson 14

Test Driven (Code Conjurer)

Page 15: Overview

15

Software EngineeringProf. Dr. Colin Atkinson 15

Page 16: Overview

16

Software EngineeringProf. Dr. Colin Atkinson 16

Proactive Recommendation Example

Page 17: Overview

17

Software EngineeringProf. 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/

■ 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: [email protected]

Page 18: Overview

18

Software EngineeringProf. 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


Recommended