© Selico, Nieuwegein 2011
1971 1975 1978 1980
Eindgebruiker Gebruiker / Tester Ontwerper Adviseur / Ontwerper
1984 Adviseur 1986 Projectleider 1988 Productdirecteur 1990 1995 2003 2009
Systeemintegrator Directeur Directeur LaQuSo Adviseur research
© Selico, Nieuwegein 2011
Slachtoffer Mini 12 kb Mainframe / Mini Organisatie / Mainframe D&M Pakketten, BLUES MTT - AMADEUS Tools - BLUES, IFPA, RISA Reverse Engineering Projectmanagement Software Factory Kwaliteits & Testtools Architectuurmodellen
1978
Idee
1980
Data General D&M (Interpreter, eigen tekstverwerker, niet-grafisch)
1984
Macintosh
1986
Explosieve groei in tools
1988
Windows
Jaren ‘90
© Selico, Nieuwegein 2011
stand-alone, ondersteuning ontwikkelaar
BLUES (grafisch, 8 modules o.a. ISAC, DFD, NS, Data model)
BLUES & Reverse Engineering
Integratie tools in Ontwikkelomgevingen Shake-out einde BLUES
© Selico, Nieuwegein 2011
© Selico, Nieuwegein 2011
A Multi-Method Approach for Developing Universal Specifications
JSD SSADM SASD IE ISAC HOS NIAM BSP MERISE SADT © Selico, Nieuwegein 2011
Hoeveel is er veranderd in 25 jaar?
© Selico, Nieuwegein 2011
Gegevens uit 1986 © Selico, Nieuwegein 2011
© Selico, Nieuwegein 2011
Een logisch vervolg op AMADEUS Onderdeel van BLUES
Programmeertaal Model wijzigen Model Model Programmertaal
3GL Start met COBOL
© Selico, Nieuwegein 2011
© Selico, Nieuwegein 2011
Refactoring: changing program structure and readability without changing functionality
•
• • •
System scope (dead-code elimination, predicate duplication, predicate extraction, argument removal, functor renaming) Module scope (renaming, splitting, merge, dead-code) Predicate scope (renaming, move, adding argument, argument reordering) Clause scope (if-then-else introduction, if-then-else inversion, local predicate extraction)
© Selico, Nieuwegein 2011
refactoring
MetricView SAAT SAAT
Quality Assessment
Code generation
code
MODEL e.g.UML
Reverse engineering
Visualization Metrics Complexity Maintainability Consistency Completeness Coupling Cohesion
Verification & validation
PNML
mCRL2
Deadlock identification
PetriNet tools
Simulation
e.g., Yasper
Model-based Testing
Woflan Gast / TorX © Selico, Nieuwegein 2011
Test case generation & execution
Soundness check
Extended VS Cobol II Grammar Ralf Lämemel& Cris Verhoef, and Tailored Cobol.jj Bernard Pinon GNU GPL
Grammar file jtb.out.jj
JTB (UCLA, BSD)
*.cob A&V Repository
LOC metrics
*.prg
Parser package
Visitor package (interfaces)
Syntax tree package
*.cob
Preprocessor
JavaCC (Open source, BSD)
Artifacts’ DB
Metrics & call files
Parser & Counter
Complexity Tree metrics Call info
Visitors
Artifacts: metrics& structural data
GUI & Control Converters
Code Repository Extravis TU/e © Selico, Nieuwegein 2011
CCFinder
Table Vision
Matrix View
Toshihiro Kamiya
TU/e
TU/e
Name, Class Count, Abstract Class Count, Ca, Ce, A, I, D, V: bsh,0,0,1,0,0,0,1,1 com.caucho.burlap.client,0,0,1,0,0,0,1,1 com.caucho.burlap.io,0,0,1,0,0,0,1,1 com.caucho.burlap.server,0,0,1,0,0,0,1,1 com.caucho.hessian.client,0,0,1,0,0,0,1,1 com.caucho.hessian.io,0,0,1,0,0,0,1,1 com.caucho.hessian.server,0,0,1,0,0,0,1,1 com.ibatis.common.util,0,0,1,0,0,0,1,1 oracle.toplink.essentials.sessions,0,0,1,0,0,0,1,1 oracle.toplink.exceptions,0,0,2,0,0,0,1,1 oracle.toplink.expressions,0,0,1,0,0,0,1,1 oracle.toplink.internal.databaseaccess,0,0,1,0,0,0,1,1 oracle.toplink.jndi,0,0,1,0,0,0,1,1 oracle.toplink.logging,0,0,1,0,0,0,1,1 oracle.toplink.publicinterface,0,0,2,0,0,0,1,1 oracle.toplink.queryframework,0,0,1,0,0,0,1,1 oracle.toplink.sessionbroker,0,0,1,0,0,0,1,1 oracle.toplink.sessions,0,0,2,0,0,0,1,1 oracle.toplink.threetier,0,0,1,0,0,0,1,1 oracle.toplink.tools.sessionconfiguration,0,0,1,0,0,0,1,1 oracle.toplink.tools.sessionmanagement,0,0,1,0,0,0,1,1 org.aopalliance.aop,0,0,9,0,0,0,1,1 org.aopalliance.intercept,0,0,24,0,0,0,1,1 org.apache.axis.encoding.ser,0,0,1,0,0,0,1,1 org.apache.catalina.loader,0,0,1,0,0,0,1,1
(2)
org.quartz.xml,0,0,1,0,0,0,1,1 org.springframework.aop,24,20,17,6,0,83,0,26,0,09,1 org.springframework.aop.aspectj,39,7,3,24,0,18,0,89,0,07,1 org.springframework.aop.aspectj.annotation,27,3,0,19,0,11,1,0,11,1 org.springframework.aop.aspectj.autoproxy,3,0,1,8,0,0,89,0,11,1 org.springframework.aop.config,17,3,1,15,0,18,0,94,0,11,1 org.springframework.aop.framework,37,9,22,18,0,24,0,45,0,31,1 org.springframework.jdbc.core,53,20,6,20,0,38,0,77,0,15,1 org.springframework.jdbc.core.metadata,22,2,1,10,0,09,0,91,0,1 org.springframework.jdbc.core.namedparam,10,4,3,12,0,4,0,8,0,2,1 org.springframework.jdbc.core.simple,17,6,0,12,0,35,1,0,35,1 org.springframework.jdbc.core.support,8,5,2,14,0,62,0,88,0,5,1 org.springframework.jdbc.datasource,27,7,13,14,0,26,0,52,0,22,1 org.springframework.jdbc.datasource.lookup,8,2,2,13,0,25,0,87,0,12,1 org.springframework.jdbc.object,14,8,0,12,0,57,1,0,57,1 org.springframework.jdbc.support,15,5,12,16,0,33,0,57,0,1,1 org.springframework.jdbc.support.incrementer,15,4,0,8,0,27,1,0,27,1 org.springframework.jdbc.support.lob,18,5,5,12,0,28,0,71,0,02,1 org.springframework.jdbc.support.nativejdbc,10,2,2,7,0,2,0,78,0,02,1 org.springframework.jdbc.support.rowset,4,2,2,6,0,5,0,75,0,25,1 org.springframework.jdbc.support.xml,7,6,0,7,0,86,1,0,86,1 org.springframework.web.servlet.view.xslt,4,2,0,17,0,5,1,0,5,1 org.springframework.web.struts,16,5,0,22,0,31,1,0,31,1 org.springframework.web.util,24,6,26,15,0,25,0,37,0,38,1 org.w3c.dom,0,0,12,0,0,0,1,1 org.xml.sax,0,0,3,0,0,0,1,1
org.aspectj.weaver,0,0,2,0,0,0,1,1 org.aspectj.weaver.ast,0,0,1,0,0,0,1,1 org.aspectj.weaver.bcel,0,0,1,0,0,0,1,1 org.aspectj.weaver.internal.tools,0,0,1,0,0,0,1,1 org.aspectj.weaver.loadtime,0,0,1,0,0,0,1,1 org.quartz.spi,0,0,1,0,0,0,1,1 org.quartz.utils,0,0,1,0,0,0,1,1
(1)
(3) AV Repository (4) Abstractness and Instability 1
Instability (I)
0.8
0.6
0.4
0.2
0 0
0.2
0.4
0.6 Abstractness (A)
0.8
1
Log file
Application
Process Model
Convert to MXML
Frequent Paths
Social Network MXML Log file
Filtering
Filtered MXML Log file
Client
Cycles Law/Property
4 eyes
© Selico, Nieuwegein 2011
Performance
Conformance
Process Log Decision
© Selico, Nieuwegein 2011
Keuze
2) process model
3) organizational model
4) social network
Start
Register order
Prepare shipment
(Re)send bill
Ship goods
Contact custom er
Receive paym ent
Archive order
End
1) basic performance metrics
5) performance characteristics
If …then …
7) Decision point analysis 6) auditing/security
en ….. Code!!!!!!!! © Selico, Nieuwegein 2011
Statische Analyse vs Dynamische Analyse
ExtraVis (TU/e) © Selico, Nieuwegein 2011
Research › VU Rosetta –project › TU/e Code Mining
Gebruik RE & parsertechnologie voor (code) analyse
Veelheid aan tools
Parsers op het net (Koppelen met grammatica)
© Selico, Nieuwegein 2011
Dank voor uw aandacht © Selico, Nieuwegein 2011