dicto - industrial presentation

12
Dictō Keeping Software Architecture Under Control Andrea Caracciolo, Worblaufen, 2. april 2015 scg.unibe.ch/dicto/ Anonymized

Upload: andrea-caracciolo

Post on 15-Apr-2017

221 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Dicto - industrial presentation

DictōKeeping Software Architecture Under Control

Andrea Caracciolo, Worblaufen, 2. april 2015

scg.unibe.ch/dicto/

Anonymized

Page 2: Dicto - industrial presentation

Project

2

ÚResearch Project @ University of BernÚPeople: Me, Prof. Oscar Nierstrasz, Dr. Mircea LunguÚ2-3 years effort Ú5 publications

Anonymized

Page 3: Dicto - industrial presentation

3

commit

CISCM

Anonymized

Page 4: Dicto - industrial presentation

4

commit

CISCM

Architectural violation+

Anonymized

Page 5: Dicto - industrial presentation

5

commit

CISCM

DictōChecker

Rules

Anonymized

Page 6: Dicto - industrial presentation

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

Page 7: Dicto - industrial presentation

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

Page 8: Dicto - industrial presentation

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

Page 9: Dicto - industrial presentation

9

DictōChecker

RulesSYSTEM cannot contain cyclesPersistence cannot depend on ServiceImplClass must have annotation "@EstaService”

XML report

Anonymized

Page 10: Dicto - industrial presentation

SonarQube integration

10SBB • ESTA • 02.04.15

Anonymized

Page 11: Dicto - industrial presentation

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

Page 12: Dicto - industrial presentation

Benefits

12

DesignÚEnforce guidelines ÚCheck NFRs

DocumentationÚReadable & executable specification

Anonymized