A Unified Approach to - Andrea Caracciolocaracciolo.github.io/Dicto-Wicsa.pdfA Unified Approach...
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/1.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/20.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/21.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/22.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/24.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/25.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/26.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022052721/5f0a683e7e708231d42b7b9c/html5/thumbnails/27.jpg)
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?