A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach...

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

Transcript of A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach...

Page 1: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

Architecture Erosion

2

=Design Code/

Page 3: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

Architecture Erosion

3

Compliance Monitoring

Page 4: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

Compliance Monitoring

4

non-automated techniques *60%

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

Page 5: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

5

A

Б

Compliance Monitoring

Page 6: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

6

A

Б

Tools

Compliance Monitoring

Page 7: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

7

A

Б

Specification Formalisms

Compliance Monitoring

Page 8: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

8

A

Б

Reports

Compliance Monitoring

Page 9: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

9

A

Б

Compliance Monitoring

Page 10: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

10

A

Compliance Monitoring

Page 11: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

Reporting

19

Persistence cannot depend on Service

Service must have annotation “@Service”

System cannot contain cycles

Dictō

Statistics

Page 20: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

20

Page 21: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

21

Page 22: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

23

Page 24: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

Evaluation

25

Impact Process? Culture?

ValueCost–effectiveness? Quality?

ApplicabilityExpressivity? Usability?

Page 26: A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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 - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach Dictō 12 @ scg.unibe.ch/dicto Persistence cannot depend on Service Service must have

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?