a unified approach to - andrea caracciolocaracciolo.github.io/dicto-wicsa.pdfa unified approach...
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?