República Dominicana, dicto el siguiente ARTÍCULO 1. DADO ...
Dicto - industrial presentation 3
-
Upload
andrea-caracciolo -
Category
Technology
-
view
227 -
download
5
Transcript of Dicto - industrial presentation 3
![Page 1: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/1.jpg)
DICTO Architecture Conformance Checking
Andrea Caracciolohttp://scg.unibe.ch/dicto
![Page 2: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/2.jpg)
Architecture Compliance
2
=Design Code/
![Page 3: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/3.jpg)
Architecture Compliance
3
=Design Code/
![Page 4: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/4.jpg)
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ut dui fermentum, blandit ligula vel, hendrerit velit. Donec laoreet, urna et sodales pretium, lacus sapien pharetra libero, nec sodales neque velit sit amet tortor. Phasellus vitae magna at leo sagittis tincidunt. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent eu accumsan diam. Phasellus lectus enim, elementum sed ultrices vitae, volutpat eget urna. Aliquam vitae sagittis urna, in lobortis orci.
TestMethods = Class with annotation:"@Test"Controllers = Package with name:”*controller*”, name!:Core = {Controllers, Model} except {Tests, Utils}
Core cannot contain code clones only Controllers can catch ValidationExceptionsWebAPI must have latency < "100 ms"Tests must have method Setup, Teardown
only Controllers can catch InputExceptionsTests must have method Setup, TeardownXMLWeb must have child "servlet-mapping"
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ut dui fermentum, blandit ligula vel, hendrerit velit. Donec laoreet, urna et sodales pretium, lacus sapien pharetra libero, nec sodales neque velit sit amet tortor. Phasellus vitae magna at leo sagittis tincidunt. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent eu accumsan diam. Phasellus lectus enim, elementum sed ultrices vitae, volutpat eget urna. Aliquam vitae sagittis urna, in lobortis orci.
Analyzers
DSLEvaluatorArchitect
![Page 5: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/5.jpg)
Pre-configured rule checkers
![Page 6: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/6.jpg)
Custom rules
![Page 7: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/7.jpg)
Custom rules
![Page 8: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/8.jpg)
Rule examples
8
Controller, Model, Dao must be layered ServiceMethods must have annotation “@*Transactional" PojoMethods can only be named "get*", "set*" DataBean must have attribute “destroy-method"XMLServletClass must have text “[..].DispatcherServlet”
ModelClasses cannot lead to deadlock CustAPI must have latency < 100 msCustAPI must handle load from 30 users
Structure
Behaviour
http://scg.unibe.ch/dicto/examples.php
only TestPackage can contain dead methodsModel cannot contain contain cycles Model cannot have empty catch block
Flaws
![Page 9: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/9.jpg)
Rule examples
9
Entity DefinitionTests = Class with name:"*test_*" PojoMethods = Method with containingClass:”*.pojos.*" DeprecatedMethods = Method with annotation:"@Deprecated" JunitSetup = Method with annotation:"@Before", name:"setUp"
![Page 10: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/10.jpg)
project A
10
Persistence = Package with name:”**.persistence.**”, name!:”**.service.**”
Service = Class with superClass:”*.IService”ImplClasses = Class with name:”*Impl”
Persistence cannot depend on Serviceonly ImplClasses can have annotation “@XXService”System cannot contain cycles
50K LOC
![Page 11: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/11.jpg)
11
Persistence = Package with name:”**.persistence.**”, name!:”**.service.**”
Service = Class with superClass:”*.IService”ImplClasses = Class with name:”*Impl”
Persistence cannot depend on Serviceonly ImplClasses can have annotation “@XXService”System cannot contain cycles
4
16
19
analysis: 30 secproject A
![Page 12: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/12.jpg)
12
project B
![Page 13: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/13.jpg)
13
ClientScoutPackage can only depend on SharedScoutPackage ServerScoutPackage can only depend on SharedScoutPackage, ServicePackage ServicePackage can only depend on BusinessPackage BusinessPackage can only depend on ServicePackage, PersistencePackage FosBatch cannot depend on ForUiImpl FosBatch cannot depend on ForPublicImpl Persistence cannot depend on Service Batch cannot depend on Persistence […]
ModelClasses, DTOClasses must implement interface "java.io.Serializable" ServiceUiMethods, ServicePublicMethods must throw CisiServiceException ServiceImplClasses must have annotation "@XXXRemoteService"
0.5M LOCproject B
![Page 14: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/14.jpg)
14
ClientScoutPackage can only depend on SharedScoutPackage ServerScoutPackage can only depend on SharedScoutPackage, ServicePackage ServicePackage can only depend on BusinessPackage BusinessPackage can only depend on ServicePackage, PersistencePackage FosBatch cannot depend on ForUiImpl FosBatch cannot depend on ForPublicImpl Persistence cannot depend on Service Batch cannot depend on Persistence […]
ModelClasses, DTOClasses must implement interface "java.io.Serializable" ServiceUiMethods, ServicePublicMethods must throw CisiServiceException ServiceImplClasses must have annotation "@XXXRemoteService"
project B analysis: 8 min
27
22
12
7
8
![Page 15: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/15.jpg)
15
Core 1M LOC
![Page 16: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/16.jpg)
16
analysis: 2 minMain project
![Page 17: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/17.jpg)
17
0
5
10
15
20
Dicto
4
19
cycles
Accuracy
0
2
4
6
8
Dicto
2
8
Dependencies
![Page 19: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/19.jpg)
19
Integration
![Page 20: Dicto - industrial presentation 3](https://reader030.fdocumento.com/reader030/viewer/2022021419/587a54431a28ab520b8b504d/html5/thumbnails/20.jpg)
Summary
• Enforce guidelines
• Check NFRs
• Readable & executable specification
20
Persistence cannot depend on Service
Service must have annotation “@Service”
System cannot contain cycles
@ scg.unibe.ch/dicto