Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
A Unified Approach to Architecture Conformance CheckingAndrea Caracciolo, Mircea Filip Lungu, Oscar Nierstrasz
WICSA ’15
http://scg.unibe.ch
Erosion
2
Design = Implementation
Compliance Monitoring
?
Compliance Monitoring
3
non-automated techniques60%
4
A
Б
诶
Compliance Monitoring
5
A
Б
诶
Tools
Compliance Monitoring
6
A
Б
诶
Specification Formalisms
Compliance Monitoring
7
A
Б
诶
Reports
Compliance Monitoring
8
A
Б
诶
Compliance Monitoring
9
A
诶
Compliance Monitoring
10
Persistence cannot depend on Service
Impl must have annotation "@Service"
System cannot contain cycles
Dictō
A Unified Approach
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
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
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
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}
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
Reporting
16
SYSTEM cannot contain cycles
Persistence cannot depend on Service
Impl must have annotation "@Service"
Dictō
Statistics
Reporting
17
New IssueStatistics
SYSTEM cannot contain cycles
Persistence cannot depend on Service
Impl must have annotation "@Service"
Dictō
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
Evaluation
19
Impact: Code quality? Awareness?
Expressivity/Usability: Fit needs? Usable?
Ease of adoption: Cost–effective? Process?
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