dicto - wicsa 2015

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

Upload: andrea-caracciolo

Post on 23-Jan-2018

270 views

Category:

Technology


0 download

TRANSCRIPT

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

WICSA ’15

http://scg.unibe.ch

Architecture Erosion

2

=Design Code/

Architecture Erosion

3

Compliance Monitoring

Compliance Monitoring

4

non-automated techniques *60%

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

5

A

Б

Compliance Monitoring

6

A

Б

Tools

Compliance Monitoring

7

A

Б

Specification Formalisms

Compliance Monitoring

8

A

Б

Reports

Compliance Monitoring

9

A

Б

Compliance Monitoring

10

A

Compliance Monitoring

11

Persistence cannot depend on Service

Impl must have annotation "@Service"

System cannot contain cycles

Dictō

A Unified Approach

Dictō

12

@ scg.unibe.ch/dicto

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

Rules

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

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.*"

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

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

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

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

Reporting

19

Persistence cannot depend on Service

Service must have annotation “@Service”

System cannot contain cycles

Dictō

Statistics

20

21

Reporting

22

New IssueStatistics

DictōPersistence cannot depend on Service

Service must have annotation “@Service”

System cannot contain cycles

23

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

Evaluation

25

Impact Process? Culture?

ValueCost–effectiveness? Quality?

ApplicabilityExpressivity? Usability?

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

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?