Upload
andrea-caracciolo
View
221
Download
3
Embed Size (px)
Citation preview
DictōKeeping Software Architecture Under Control
Andrea Caracciolo, Worblaufen, 2. april 2015
scg.unibe.ch/dicto/
Anonymized
Project
2
ÚResearch Project @ University of BernÚPeople: Me, Prof. Oscar Nierstrasz, Dr. Mircea LunguÚ2-3 years effort Ú5 publications
Anonymized
3
commit
CISCM
Anonymized
4
commit
CISCM
Architectural violation+
Anonymized
5
commit
CISCM
DictōChecker
Rules
Anonymized
6
DictōChecker
RulesService = Package with name: “ch.sbb.*service*”Persistence = Package with name: “ch.sbb.*persistence*”ImplClass = Class with name: “*Impl”
SYSTEM cannot contain cyclesPersistence cannot depend on ServiceImplClass must have annotation "@EstaService”
Anonymized
7
DictōChecker
Rules
Service = Package with name: “ch.sbb.*service.*”
VarName = VarType with attr: “value”VarName = VarType with attr!: “value”VarName = VarType with attr: “val*” SetName = {V1, V2} except {V3, V4}
Package [name]Class [name, annotation, superClass]Method [name, annotation, modifier, returntype, ..]Field [name, annotation, containingClass]File [path]WebResource [url, method, content, contentType]XMLTag [file, name, attribute, xpath]XMLTagAttribute [file, name, value, xpath]
Anonymized
8
DictōChecker
Rules
Persistence cannot depend on Service
VarName must predicateVarName cannot predicateonly VarName can predicateVarName can only predicate
Class / Package cannot depend on Class / PackageClass / Method must catch ClassSet <Package> must be layeredClass must have method Method / "String”Class / Method / Field must have annotation “@String(..)”System / Package cannot contain code clonesSystem / Package cannot contain cyclesWebResource must have latency < "Integer ms"WebResource must handle load from "Integer users"WebResource must have content "String”File must contain text "String” …
Anonymized
9
DictōChecker
RulesSYSTEM cannot contain cyclesPersistence cannot depend on ServiceImplClass must have annotation "@EstaService”
XML report
Anonymized
SonarQube integration
10SBB • ESTA • 02.04.15
Anonymized
Collaboration
11
ÚLearning Management System (open source)ÚPHP Framework (1.8M LOC)
ÚSince 1997 Ú49 institutional members; 12 service providers Ú~180 known installations worldwide▪ e.g. La Poste (F) - 90’000 users
Anonymized
Benefits
12
DesignÚEnforce guidelines ÚCheck NFRs
DocumentationÚReadable & executable specification
Anonymized