a unified approach to · dictō 16 @ scg.unibe.ch/dicto rules method can only be named...

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

Upload: others

Post on 21-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

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 · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Architecture Erosion

2

=Design Code/

Page 3: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Architecture Erosion

3

Compliance Monitoring

Page 4: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Compliance Monitoring

4

non-automated techniques *60%

* How Do Software Architects Specify and Validate Quality Requirements? (ECSA 2014)

Page 5: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

5

A

Б

Compliance Monitoring

Page 6: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

6

A

Б

Tools

Compliance Monitoring

Page 7: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

7

A

Б

Specification Formalisms

Compliance Monitoring

Page 8: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

8

A

Б

Reports

Compliance Monitoring

Page 9: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

9

A

Б

Compliance Monitoring

Page 10: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

10

A

Compliance Monitoring

Page 11: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

11

Persistence cannot depend on Service

Impl must have annotation "@Service"

System cannot contain cycles

Dictō

A Unified Approach

Page 12: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Dictō

12

@ scg.unibe.ch/dicto

Persistence cannot depend on ServiceService must have annotation “@Service”System cannot contain cycles

Rules

Page 13: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Dictō

13

Persistence cannot depend on ServiceService must have annotation “@Service”System cannot contain cycles

@ scg.unibe.ch/dicto

Persistence = Package with name:"app.*persistence.*"Service = Package with name:”app.*service.*"

Entities

Rules

Page 14: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Dictō

14

@ scg.unibe.ch/dicto

Persistence cannot depend on Serviceonly Service can have annotation “@Service”System cannot contain cycles

Rules

EntitiesPersistence = Package with name:"app.*persistence.*"Service = Package with name:”app.*service.*"

Page 15: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Dictō

15

Persistence cannot depend on Serviceonly Service can have annotation “@Service”System cannot contain cycles

@ scg.unibe.ch/dicto

Persistence = Package with name:"app.*persistence.*"Service = Package with name:”app.*service.*”,

name!:"*persistence*"

Entities

Rules

Page 16: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Dictō

16

@ scg.unibe.ch/dicto

Rules

Method can only be named "String"only Package can contain dead methods

XMLTag must have attribute “String"WebResource must have content "String"

Method must catch Class

WebResource must have latency < int msWebResource must handle load from int users

Maintainability

Compatibility

Reliability

Performance

Page 17: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Analysis

17

depend-on(app.xx.persistence.yy, app.xx.service) depend-on(app.xx.persistence.yy2, app.xx.service) depend-on(app.xx.persistence.yy3, app.xx.service)

Persistence cannot depend on Service

.xml.sh

Page 18: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Analysis

18

Persistence cannot depend on Service

depend-on(app.xx.persistence.yy, app.xx.service) = True depend-on(app.xx.persistence.yy2, app.xx.service) = False depend-on(app.xx.persistence.yy3, app.xx.service) = False

.csv

Page 19: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Reporting

19

Persistence cannot depend on Service

Service must have annotation “@Service”

System cannot contain cycles

Dictō

Statistics

Page 20: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

20

Page 21: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

21

Page 22: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Reporting

22

New IssueStatistics

DictōPersistence cannot depend on Service

Service must have annotation “@Service”

System cannot contain cycles

Page 23: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

23

Page 24: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Evaluation

24

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 25: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Evaluation

25

Impact Process? Culture?

ValueCost–effectiveness? Quality?

ApplicabilityExpressivity? Usability?

Page 26: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Summary

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

26

Persistence cannot depend on Service

Service must have annotation “@Service”

System cannot contain cycles

@ scg.unibe.ch/dictoAndrea Caracciolo

Page 27: A Unified Approach to · Dictō 16 @ scg.unibe.ch/dicto Rules Method can only be named "String" only Package can contain dead methods XMLTag must have attribute “String" WebResource

Discussion Topics

27

Persistence cannot depend on Service

Service must have annotation “@Service”

System cannot contain cycles

@ scg.unibe.ch/dictoAndrea Caracciolo

- how to streamline/incentivize compliance monitoring?- which are the common obstacles?