dicto - industrial presentation

Post on 15-Apr-2017

220 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related