U P NIVERSITÀ DEGLI STUDI DI ADOVA DIPARTIMENTO DI MATEMATICA CORSO DI LAUREA IN INFORMATICA Realizzazione di un modulo di mining multiprospettiva per un tool di process mining analysis Tesidilaureatriennale Relatore: Laureando: Prof. AlessandroSperduti GianmarcoMidena Annoaccademico2015-16 2 Ringraziamenti Vorrei innanzitutto ringraziare l’azienda Siav S.p.A. e tutti i suoi dipendenti per la serietà ecompetenzadimostrataeperavermipermessodivivereun’esperienzadistagedeterminante perlamiacrescitaprofessionale. Ringrazio il mio tutor aziendale, Dott. Daniele Turato, per essere stato sempre disponibi- leepazienteneimieiconfronti,eperavermiresopartecipedelledecisionirelativealcontesto dellostage. Vorrei esprimere i miei più sinceri ringraziamenti verso tutti i docenti da cui ho potuto im- pararequalcosa,checonlaloroprofessionalitàmihannoguidatolungoquestopercorsodistudi. Un ringraziamento particolare lo dedico però al Prof. Alessandro Sperduti, relatore della miatesi,perlasuagentilezza,ilsuosupportoeiltempodedicatomiperpermettermidiconcre- tizzarequestoimportantetraguardodellamiavita. Desideroringraziaresentitamentelamiafamigliaeimieiparentiperavermiaiutatoesostenuto durantequestopercorso. Infine vorrei ringraziare i miei amici e conoscenti per essermi stati sempre accanto duran- tequestiannidistudio. Padova,Dicembre2015 GianmarcoMidena Indice 1 Introduzione 10 1.1 Contestodelprogetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2 Descrizionedellostage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3 Descrizionedell’azienda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 Background 14 2.1 Esplosionedeidati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2 Limitidellamodellazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3 Processmining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.1 Tipologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.1.1 Processdiscovery . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.1.2 Conformancechecking . . . . . . . . . . . . . . . . . . . . 17 2.3.1.3 Enhancement . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3.2 Alcuneprospettive . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3.2.1 Prospettivadelflussodelcontrollo . . . . . . . . . . . . . . 18 2.3.2.2 Prospettivaorganizzativa . . . . . . . . . . . . . . . . . . . 18 2.3.2.3 Prospettivadeicase . . . . . . . . . . . . . . . . . . . . . . 18 2.3.2.4 Prospettivatemporale . . . . . . . . . . . . . . . . . . . . . 19 2.3.3 Play-in,Play-outeReplay . . . . . . . . . . . . . . . . . . . . . . . . 19 2.4 Modellazioneeanalisidiprocesso . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4.1 L’artedellamodellazione . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4.2 Modellidiprocesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4.2.1 Sistemaatransizionedistati . . . . . . . . . . . . . . . . . 22 2.4.2.2 RetidiPetri . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4.2.3 Workflownet . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4.2.4 YAWL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.4.2.5 BPMN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.4.2.6 EPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4.2.7 Reticausali . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3 Tecnologieutilizzate 27 3.1 JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2 AngularJS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3 D3.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.4 bpmn-js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.5 AngularMaterial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.6 JSDoc3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3 4 INDICE 3.7 SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.8 JAX-WS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.9 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.10 ApacheTomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 Ingegneriadeirequisiti 33 4.1 Estrazionedeirequisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.1 Sorgentideirequisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.2 Tecnicheutilizzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.2 Modellazioneconcettuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.2.1 Casid’uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.3 Classificazionedeirequisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.4 Requisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.5 Tracciamentodeirequisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.6 Specificadeirequisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.7 Utentidelsistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.8 Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5 Progettazionearchitetturale 43 5.1 Principi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.2 Decisioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.3 Patternarchitetturale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.3.1 Architetturaclient-servermultilivello . . . . . . . . . . . . . . . . . . 45 5.4 Vistedell’architettura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.4.1 Diagrammidisequenza. . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.5 Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6 Progettazionedidettaglio 49 6.1 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.1.1 bipod::frontEnd . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.1.2 bipod::frontEnd::process . . . . . . . . . . . . . . . . . . . 51 6.1.3 bipod::frontEnd::bpmn . . . . . . . . . . . . . . . . . . . . . 52 6.1.4 bipod::frontEnd::filter . . . . . . . . . . . . . . . . . . . . 54 6.1.5 bipod::frontEnd::error . . . . . . . . . . . . . . . . . . . . . 55 6.1.6 bipod::frontEnd::shared . . . . . . . . . . . . . . . . . . . . 56 6.2 Designpatterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 6.2.1 Singleton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6.2.2 TemplateView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6.2.3 Observer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.2.4 ChainofResponsibility . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.2.5 Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.2.6 DependecyInjection . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.2.7 AMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7 Verificaevalidazionedelsoftware 65 7.1 AnalisiStatica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7.2 Analisidinamica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7.2.1 Tipiditest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 INDICE 5 7.2.2 Testdiunità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.2.3 Testdiintegrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 7.2.4 Testdisistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7.2.5 Testdivalidazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8 Conclusioni 75 8.1 Obiettiviraggiunti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 8.2 Consuntivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 8.3 Materialeprodotto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 8.4 Conoscenzeacquisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 8.5 Considerazionisullostage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 8.6 Considerazionisullapreparazioneaccademica . . . . . . . . . . . . . . . . . . 79 8.7 Sviluppifuturi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Acronimi 82 Glossario 84 Bibliografia 94 Elenco delle figure 1 InternetofEvents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2 LogoSiavS.p.A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3 IlciclodivitadelBPM mostraidiversiusideimodellidiprocesso . . . . . 16 [G] [G] 4 Processmining. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5 Play-out. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6 Play-in. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 7 Replay. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 8 Esempiodisistemaatransizionedistati. . . . . . . . . . . . . . . . . . . . . . 22 9 EsempiodiretediPetri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 [G] 10 EsempiodidiagrammaYAWL . . . . . . . . . . . . . . . . . . . . . . . . . . 24 [G] 11 EsempiodidiagrammaBPMN . . . . . . . . . . . . . . . . . . . . . . . . . 25 [G] 12 EsempiodidiagrammaEPC . . . . . . . . . . . . . . . . . . . . . . . . . . 26 [G] 13 LogoAngular.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 [G] 14 StrutturaSOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 [G] 15 LogoJava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 16 LogoApacheTomcat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 17 UC1: Casod’uso pubblico. . . . . . . . . . . . . . . . . . . . . . . . . . . 36 [G] 18 UC2: Casod’uso privato. . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 [G] 19 Suddivisionerequisitiperfonte. . . . . . . . . . . . . . . . . . . . . . . . . . 38 20 Suddivisionerequisitipercategoria. . . . . . . . . . . . . . . . . . . . . . . . 39 21 Suddivisionerequisitiperimportanza. . . . . . . . . . . . . . . . . . . . . . . 39 22 Esempiodiarchitetturaatrelivelli. . . . . . . . . . . . . . . . . . . . . . . . . 45 23 Selezionediuneventlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 [G] 24 Modificadellivellodidettagliodiattività . . . . . . . . . . . . . . . . . . . 47 [G] 25 Packagebipod::frontEnd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 26 Packagebipod::frontEnd::process. . . . . . . . . . . . . . . . . . . . . . . . . 51 27 Packagebipod::frontEnd::bpmn. . . . . . . . . . . . . . . . . . . . . . . . . . 52 28 Packagebipod::frontEnd::filter. . . . . . . . . . . . . . . . . . . . . . . . . . . 54 29 Packagebipod::frontEnd::error. . . . . . . . . . . . . . . . . . . . . . . . . . . 55 30 Packagebipod::frontEnd::shared. . . . . . . . . . . . . . . . . . . . . . . . . . 56 31 StrutturalogicadelpatternSingleton. . . . . . . . . . . . . . . . . . . . . . . 57 32 StrutturalogicadelpatternTemplateView. . . . . . . . . . . . . . . . . . . . . 58 33 StrutturalogicadelpatternObserver. . . . . . . . . . . . . . . . . . . . . . . . 59 34 StrutturalogicadelpatternChainofResponsibility. . . . . . . . . . . . . . . . 60 35 StrutturalogicadelpatternCommand. . . . . . . . . . . . . . . . . . . . . . . 62 36 StrutturalogicadelpatternDependencyInjection. . . . . . . . . . . . . . . . . 62 37 Graficosoddisfacimentorequisiti. . . . . . . . . . . . . . . . . . . . . . . . . 76 6 ELENCODELLEFIGURE 7 38 Consuntivodelleoredilavoro. . . . . . . . . . . . . . . . . . . . . . . . . . . 77 39 Esempiodimodelloconmolteprospettivecontemporaneamenteattive. . . . . . 80 40 Esempiodimodelloconanimazioni. . . . . . . . . . . . . . . . . . . . . . . . 81 Elenco delle tabelle 1 Requisitipiùrilevanti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2 Alcunitestdiunità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3 Alcunitestdiintegrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4 Alcunitestdisistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5 Alcunitestdivalidazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6 Codiceprodotto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 7 DocumentazioneProdotta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 8 ELENCODELLETABELLE 9 Sommario La presente tesi di laurea rappresenta la relazione finale del lavoro svolto durante il perio- do di stage dal laureando Gianmarco Midena, presso l’azienda Siav S.p.A. di Rubano (PD). Lo stage è stato svolto alla conclusione del percorso di studi della laurea triennale, sotto la supervisionedelProf. AlessandroSperdutiedelDott. DanieleTurato,edhaavutounaduratadi circatrecentoventiore. L’obiettivo dello stage è consistito nella realizzazione di un’applicazione prototipo per la rappresentazione visiva e manipolazione di modelli di processo ottenuti come prodotto del processodiprocessdiscovery . [G] Icontenutidellatesisisvilupperannoin7capitoli. Nelprimocapitolovieneintrodottoiltemadellostage. Nelsecondocapitolovengonodescrittelenozionifondamentalinecessariepercapirel’argo- mentotrattatodallostage. Nelterzocapitolovengonopresentateletecnologieutilizzatedurantelostage. Nelquartocapitoloverrannodescritteleattività svolteeiprodottiottenuticonl’ingegneria [G] deirequisiti. Nelquintocapitoloverrannodescritteleattività svolteeiprodottiottenuticonlaprogettazio- [G] nearchitetturale. Nelsestocapitoloverrannodescritteleattività svolteeiprodottiottenuticonlaprogettazione [G] didettaglioeconl’implementazionedelsoftware. Nelsettimocapitoloverràtrattatalafasediverificaevalidazionedelsoftware. Nell’ottavocapitoloverrannoinfineesposteleconsiderazioniconclusivesulprogettoesull’e- sperienzalavorativa. Nell’ultimapartesonopresentiappendicieilglossario. Glossario Nell’appendiceèpresenteunglossariocontenenteledescrizioniditutteleparoleosequenzedi paroleaventiapedicelasequenzadicaratteri“[G]”. Capitolo 1 Introduzione Oggisonoinmoltiaconsiderareidatiunadellepiùgrandiricchezzedellasocietàmoderna. Si pensi che attualmente in 10 minuti vengono prodotti molti più dati rispetto a tutti quelli prodottiapartiredaitempidellapreistoriafinoa10annifa. Ciascunindividuogeneradatiinognimomento,anchesenzarenderseneconto,sibastipensare adunasemplicetelefonata,all’inviodiun’e-mailoadunacquistomediantecartadicredito. L’insiemeformatodatuttiidatigeneratieregistratiprendeilnomediinternetdeglieventio InternetofEvents. L’internetdeglieventiècostituitodaquattrodiversesorgentidieventi : [G] Figura1: InternetofEvents. • l’internetdeicontenuti(oInternetofContent),associatoalconcettoclassicodiinternete dibigdata ,eaventetraisuoiprincipalirappresentantiGoogleeWikipedia; [G] • l’internetdellepersone(oInternetofPeople),associatoalconcettodisocial,ecostituito datuttiglieventi socialichegeneranodati,comeimessaggidiTwittereFacebook; [G] 10
Description: