27
Comprehensive System for Systematic Case-Driven Software Reuse SOFSEM 2010 25.01.2010 M. Śmiałek , A. Kalnins, E. Kalnina, A. Ambroziewicz, T. Straszak, K. Wolter Warsaw University of Technology, Poland IMCS University of Latvia, Latvia University of Hamburg, Germany

Comprehensive System for Systematic Case-Driven Software Reuse

Embed Size (px)

DESCRIPTION

Comprehensive System for Systematic Case-Driven Software Reuse. M. Śmiałek , A. Kalnins, E. Kalnina, A. Ambroziewicz, T. Straszak, K. Wolter. Warsaw University of Technology , Poland IMCS University of Latvia, Latvia University of Hamburg, Germany. SOFSEM 2010 25 . 01 .20 10. - PowerPoint PPT Presentation

Citation preview

Page 1: Comprehensive System for Systematic Case-Driven Software Reuse

ComprehensiveSystem for Systematic Case-Driven

Software Reuse

SOFSEM 2010

25.01.2010

M. Śmiałek, A. Kalnins, E. Kalnina,A. Ambroziewicz, T. Straszak, K. Wolter

Warsaw University of Technology, PolandIMCS University of Latvia, LatviaUniversity of Hamburg, Germany

Page 2: Comprehensive System for Systematic Case-Driven Software Reuse

Outline – reuse schema

Software Case 1Software Case 1Software Case 1Software Case 1Software Case 1

Requirements 1 Design 1 Code 1

Software Case 12

Requirements 2 Design 2 Code 2

δR2

Requirements driven Transformation driven

Retrieval technologies

Software case repositories

Page 3: Comprehensive System for Systematic Case-Driven Software Reuse

ReDSeeDS Engine

3

Page 4: Comprehensive System for Systematic Case-Driven Software Reuse

Software Case 1Software Case 1Software Case 1Software Case 1Software Case 1

Requirements 1 Design 1 Code 1

Software Case 12

Requirements 2 Design 2 Code 2

δR2

Reuse schema – step 1

Page 5: Comprehensive System for Systematic Case-Driven Software Reuse

RSL = scenarios + vocabulary

Course manage r

Add new course

Show extended course list

Page 6: Comprehensive System for Systematic Case-Driven Software Reuse

RSL Editor

Page 7: Comprehensive System for Systematic Case-Driven Software Reuse

Evolution schema – step 2

Software Case 1Software Case 1Software Case 1Software Case 1Software Case 1

Requirements 1 Design 1 Code 1

Software Case 12

Requirements 2 Design 2 Code 2

δR2

Page 8: Comprehensive System for Systematic Case-Driven Software Reuse

DesignAL_Interfaceal_operation

DL_Interfacedl_operation

R to D transformation rules

Requirements

Scenario stepScenario step

Application Behavior

Domain Behavior

Domain Notion

DS Logic

Domain StatementUse Case

Scenario step

Page 9: Comprehensive System for Systematic Case-Driven Software Reuse

D = t(R) - structure

CourseManagement

IShowOwnedCourses

IChangeCourseData

IShowExtendedCourseList IAddNewCourse

UserInterface::UIComponent

UI

BusinessLogic::CoursesServ ices

ICourseICourseList

«interface»CourseManagement::IAddNewCourse

+ entersCourse()+ wantsToAddCourse()

«interface»CourseManagement::

IShowExtendedCourseList

+ wantsToSeeCourseList()

«interface»CoursesServices::

ICourse

+ registers(CourseDTO)+ verifies(CourseDTO)

«interface»CoursesServices::

ICourseList

+ builds(CourseListDTO)

«interface»UserInterface::UI

+ showsCourseEntryForm()+ showsCourseErrorMessage()+ showsCourseList()

Page 10: Comprehensive System for Systematic Case-Driven Software Reuse

D = t(R) - dynamics

Page 11: Comprehensive System for Systematic Case-Driven Software Reuse

Evolution schema – step 3

Software Case 1Software Case 1Software Case 1Software Case 1Software Case 1

Requirements 1 Design 1 Code 1

Software Case 12

Requirements 2 Design 2 Code 2

δR2

Page 12: Comprehensive System for Systematic Case-Driven Software Reuse

class CShowExtendedCourseList implements IShowExtendedUserList {// (...) wantsToSeeCourseList(){ // // }}

Application logic code

class CShowExtendedCourseList implements IShowExtendedUserList {// (...) wantsToSeeCourseList(){ ICourseList.builds(cl); UI.showsCourseList(cl); }}

CourseManagement

IShowExtendedCourseList

CourseManagement

IShowOwnedCourses

IChangeCourseData

IShowExtendedCourseList IAddNewCourse

UserInterface::UIComponent

UI

BusinessLogic::CoursesServ ices

ICourseICourseList

CourseManagement::IAddNewCourse

+ entersCourse()+ wantsToAddCourse()

CourseManagement::IShowExtendedCourseList

+ wantsToSeeCourseList()

CoursesServices::ICourse

+ registers(CourseDTO)+ verifies(CourseDTO)

CoursesServices::ICourseList

+ builds(CourseListDTO)

UserInterface::UI

+ showsCourseEntryForm()+ showsCourseErrorMessage()+ showsCourseList()

Page 13: Comprehensive System for Systematic Case-Driven Software Reuse

class CCourseList implements ICourseList {// (...) void builds(CourseListDTO cld){ // // // // // }}

Domain logic code

class CCourseList implements ICourseList {// (...) void builds(CourseListDTO cld){ UserListDTO resList; for (i=1; i==user_list_length; i++) { resList.add(userList[i]); } cld=resList; }}

CoursesServices

ICourseList

R1

CourseManagement

IShowOwnedCourses

IChangeCourseData

IShowExtendedCourseList IAddNewCourse

UserInterface::UIComponent

UI

BusinessLogic::CoursesServ ices

ICourseICourseList

CourseManagement::IAddNewCourse

+ entersCourse()+ wantsToAddCourse()

CourseManagement::IShowExtendedCourseList

+ wantsToSeeCourseList()

CoursesServices::ICourse

+ registers(CourseDTO)+ verifies(CourseDTO)

CoursesServices::ICourseList

+ builds(CourseListDTO)

UserInterface::UI

+ showsCourseEntryForm()+ showsCourseErrorMessage()+ showsCourseList()

Page 14: Comprehensive System for Systematic Case-Driven Software Reuse

R to D to C and reuse

Design

Requirements

Non-functional Requirements

R to D Transformation

Technological Framework

D to C Transformation

System Structure

Application Behaviour

Domain Behaviour

Functional Requirements

Domain Definition

Code

Page 15: Comprehensive System for Systematic Case-Driven Software Reuse

Reuse schema – step 4

Software Case 1Software Case 1Software Case 1Software Case 1Software Case 1

Requirements 1 Design 1 Code 1

Software Case 12

Requirements 2 Design 2 Code 2

δR2

Page 16: Comprehensive System for Systematic Case-Driven Software Reuse

Extending requirements

Page 17: Comprehensive System for Systematic Case-Driven Software Reuse

Reuse schema – step 5

Software Case 1Software Case 1Software Case 1Software Case 1Software Case 1

Requirements 1 Design 1 Code 1

Software Case 12

Requirements 2 Design 2 Code 2

δR2

Page 18: Comprehensive System for Systematic Case-Driven Software Reuse

CourseManagement

IShowOwnedCourses

IChangeCourseData

IShowExtendedCourseList IAddNewCourse

BusinessLogic::CoursesServ ices

ICourseICourseFilter «interface»CoursesServices::

ICourse

+ registers(CourseDTO)+ verifies(CourseDTO)

«interface»CoursesServices::ICourseFilter

+ buildsCourseListWith(CourseFilterDTO, CourseListDTO)

UserInterface::UIComponent

UI

«interface»UserInterface::UI

+ showsCourseEntryForm()+ showsCourseErrorMessage()+ showsCourseFilterForm()+ showsCourseList()

«interface»CourseManagement::

IShowExtendedCourseList

+ entersCourseFilter()+ wantsToSeeCourseList()

«interface»CourseManagement::IAddNewCourse

+ entersCourse()+ wantsToAddCourse()

R to D to C again

CourseManagement

IShowOwnedCourses

IChangeCourseData

IShowExtendedCourseList IAddNewCourse

UserInterface::UIComponent

UI

BusinessLogic::CoursesServ ices

ICourseICourseList

CourseManagement::IAddNewCourse

+ entersCourse()+ wantsToAddCourse()

CourseManagement::IShowExtendedCourseList

+ wantsToSeeCourseList()

CoursesServices::ICourse

+ registers(CourseDTO)+ verifies(CourseDTO)

«interface»CoursesServices::

ICourseList

+ builds(CourseListDTO)

UserInterface::UI

+ showsCourseEntryForm()+ showsCourseErrorMessage()+ showsCourseList()

Page 19: Comprehensive System for Systematic Case-Driven Software Reuse

New application logic code

class CShowExtendedCourseList implements IShowExtendedUserList {// (...) wantsToSeeCourseList(){ UI.showsCourseFilterForm(f); }}

CourseManagement

IShowExtendedCourseList

CourseManagement

IShowOwnedCourses

IChangeCourseData

IShowExtendedCourseList IAddNewCourse

UserInterface::UIComponent

UI

BusinessLogic::CoursesServ ices

ICourseICourseList

CourseManagement::IAddNewCourse

+ entersCourse()+ wantsToAddCourse()

CourseManagement::IShowExtendedCourseList

+ wantsToSeeCourseList()

CoursesServices::ICourse

+ registers(CourseDTO)+ verifies(CourseDTO)

CoursesServices::ICourseList

+ builds(CourseListDTO)

UserInterface::UI

+ showsCourseEntryForm()+ showsCourseErrorMessage()+ showsCourseList()

Page 20: Comprehensive System for Systematic Case-Driven Software Reuse

New domain logic code

class CCourseList implements ICourseList {// (...) void builds(CourseFilterDTO fil, CourseListDTO cld){ UserListDTO resList; for (i=1; i==user_list_length; i++) { if compare(udto,userList[i]) resList.add(userList[i]); } cld=resList; }}

CoursesServices

ICourseFilter

R2

CourseManagement

IShowOwnedCourses

IChangeCourseData

IShowExtendedCourseList IAddNewCourse

UserInterface::UIComponent

UI

BusinessLogic::CoursesServ ices

ICourseICourseList

CourseManagement::IAddNewCourse

+ entersCourse()+ wantsToAddCourse()

CourseManagement::IShowExtendedCourseList

+ wantsToSeeCourseList()

CoursesServices::ICourse

+ registers(CourseDTO)+ verifies(CourseDTO)

CoursesServices::ICourseList

+ builds(CourseListDTO)

UserInterface::UI

+ showsCourseEntryForm()+ showsCourseErrorMessage()+ showsCourseList()

C1

Page 21: Comprehensive System for Systematic Case-Driven Software Reuse

Determine elements for reuse

Software Case 1Software Case 1Software Case 1Software Case 1Software Case 1

Requirements 1 Design 1 Code 1

Software Case 12

Requirements 2 Design 2 Code 2

δR2

Page 22: Comprehensive System for Systematic Case-Driven Software Reuse

Similarity measures

Similarity measures based on:• common terminology• description logic • structural approach

(defResource c1::Client--NounPhrase (rdf:type owl:Class)(owl:intersectionOf TRRSL:NounPhrase

(owl:Restriction (owl:onProperty TRRSL:nounLink)(owl:allValuesFrom TY::order2))(owl:Restriction

(owl:onProperty TRRSL:isPartOfDomainStatement_d1e3741)(owl:allValuesFrom c2::order--DomainStatement))))

Page 23: Comprehensive System for Systematic Case-Driven Software Reuse

Showing similarity

Page 24: Comprehensive System for Systematic Case-Driven Software Reuse

Showing elements for reuse

Page 25: Comprehensive System for Systematic Case-Driven Software Reuse

Summary – evolution or revolution?

Software Case 1Software Case 1Software Case 1Software Case 1Software Case 1

Requirements 1 Design 1 Code 1

Software Case 12

Software Case 15

Requirements 4

δR4

Design 4 Code 4

Requirements 2 Design 2 Code 2

δR2

QR4

“instant diff”

“instant refactor”

support for reuse

Page 26: Comprehensive System for Systematic Case-Driven Software Reuse

Thank you for your attention.

www.redseeds.eu

Page 27: Comprehensive System for Systematic Case-Driven Software Reuse

Consortium members, duration and budget

27

Infovide S.A.Warsaw University of Technology

HITeC e.V.University of Koblenz-LandauPRO DV Software AGFraunhofer - Gesellschaft (Institute for Experimental Software Engineering)

Vienna University of Technology

Algoritmu sistemos, UAB

C/S IT Ltd. - Cybersoft

Heriot-Watt University

Latvia Institute of Mathematics and Computer Science - University of Latvia

Budget: 3.804.000,- € Community Contribution: 2.990.710,- €Duration: September 2006 – October 2009