20
A Unified Approach to Architecture Conformance Checking Andrea Caracciolo, Mircea Filip Lungu, Oscar Nierstrasz WICSA ’15 http://scg.unibe.ch

A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

A Unified Approach to Architecture Conformance CheckingAndrea Caracciolo, Mircea Filip Lungu, Oscar Nierstrasz

WICSA ’15

http://scg.unibe.ch

Page 2: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Erosion

2

Design = Implementation

Compliance Monitoring

?

Page 3: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Compliance Monitoring

3

non-automated techniques60%

Page 4: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

4

A

Б

Compliance Monitoring

Page 5: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

5

A

Б

Tools

Compliance Monitoring

Page 6: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

6

A

Б

Specification Formalisms

Compliance Monitoring

Page 7: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

7

A

Б

Reports

Compliance Monitoring

Page 8: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

8

A

Б

Compliance Monitoring

Page 9: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

9

A

Compliance Monitoring

Page 10: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

10

Persistence cannot depend on Service

Impl must have annotation "@Service"

System cannot contain cycles

Dictō

A Unified Approach

Page 11: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Dictō

11

Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI must have latency < "100 ms"Tests must have method Setup, Teardown WebRoot must have child "servlet-mapping"

Rules @ scg.unibe.ch/dicto

Page 12: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Dictō

12

@ scg.unibe.ch/dicto

Maintainability

Compatibility

Performance

Reliability

Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI must have latency < "100 ms"Tests must have method Setup, Teardown WebRoot must have child "servlet-mapping"

Rules

Page 13: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Dictō

13

Controllers = Class with annotation:"@Controller"Views = Class with name:"app.*.*View"Tests = Method with modifier!:"static", name:"test*"Core = {Controllers, Model} except {Tests, Utils}

Entities @ scg.unibe.ch/dicto

Page 14: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Dictō

14

@ scg.unibe.ch/dicto

Code Local/Remote artifacts

Entities

Controllers = Class with annotation:"@Controller"Views = Class with name:"app.*.*View"Tests = Method with modifier!:"static", name:"test*"Core = {Controllers, Model} except {Tests, Utils}

Page 15: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Analysis

15

Test can only depend on Model, Controller

depend-on(com.app.View, com.app.View) = False depend-on(com.app.View, com.app.Test) = False depend-on(com.app.View, com.app.Util) = True

View can only depend on Model, Controller

depend-on(com.app.Test, com.app.View) = False depend-on(com.app.Test, com.app.Test) = False depend-on(com.app.Test, com.app.Util) = False

Test, View can only depend on Model, Controller

Page 16: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Reporting

16

SYSTEM cannot contain cycles

Persistence cannot depend on Service

Impl must have annotation "@Service"

Dictō

Statistics

Page 17: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Reporting

17

New IssueStatistics

SYSTEM cannot contain cycles

Persistence cannot depend on Service

Impl must have annotation "@Service"

Dictō

Page 18: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Evaluation

18

Medium size company various - Java EE / .NET100 employees

Open source project LMS - PHP (1.8M LOC)12 service providers, 900’000+ users

Large size companyB2B - Java EE (50K LOC)1’000 employees

Page 19: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Evaluation

19

Impact: Code quality? Awareness?

Expressivity/Usability: Fit needs? Usable?

Ease of adoption: Cost–effective? Process?

Page 20: A Unified Approach to - Portalscg.unibe.ch/.../2015-04-14-Caracciolo-Dicto-Wicsa.pdf2015/04/14  · Dictō 11 Core cannot contain code clones only Controllers can catch ValidationExCustomerAPI

Summary

DictōA uniform, readable, executable DSLfor specifying architectural constraints.

20

SYSTEM cannot contain cycles

Persistence cannot depend on Service

Impl must have annotation "@Service"

@ scg.unibe.ch/dictoAndrea Caracciolo