Keynote for my Master Thesis. This work consists in the development of a tool, named Ocelot, which implements different approach for automatic test case generation, using search-based techniques. Ocelot is able to instrument and automatically generate high quality test suites both in terms of coverage and size, for programs written in C language.
Keynote for my Master Thesis. This work consists in the development of a tool, named Ocelot, which implements different approach for automatic test case generation, using search-based techniques. Ocelot is able to instrument and automatically generate high quality test suites both in terms of coverage and size, for programs written in C language.
Emerasoft University è la Divisione di Emerasoft che si occupa di fornire corsi di formazione specialistici aziendali e interaziendali.
Tutti i corsi forniti da Emerasoft possono essere interamente finanziati grazie ai Fondi Interprofessionali (Fondimpresa, Forte, Fondir, FBA, Foncoop, ecc). Contattateci per costruire insieme il vostro piano formativo aziendale.
The design patterns are recurring solutions to common problems in software design.
The design patterns in computer science were formally described for the first time in the book "Design Patterns: Elements of Reusable Object-Oriented Software", whose authors are often called the Gang of Four, GoF or Go4.
Quando, come e perché utilizzare PowerMock. Vengono analizzati i legami tra design delle applicazioni e strumenti di test. Sono presenti esempi di codice semplice ma verosimile con i rispettivi test.
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...Stefano Costanzo
Lo scopo di questo lavoro di tesi è lo sviluppo di un approccio meta-euristico basato sugli algoritmi genetici per la risoluzione di problemi multi-obiettivo sia di programmazione lineare che di ottimizzazione combinatoria. Alcune tipologie di questi problemi si prestano ad essere risolti mediante algoritmi ad-hoc che fanno leva sulle caratteristiche strutture matematiche delle variabili di ingresso con cui sono modellati, così come evidenziato nella vasta letteratura esaminata. Il presente lavoro propone invece di generalizzare queste tecniche in modo da poter offrire uno o più algoritmi che sappiano gestire contemporaneamente il maggior numero di classi di problemi. Inoltre, l’intrinseca complessità dovuta alla natura multi-obiettivo dei problemi affrontati, richiede di spostare l’attenzione dai metodi deterministici-tradizionali a quelli evolutivi-euristici. Viene quindi delineato il profilo di un algoritmo genetico capace di elaborare problemi multi-obiettivo con vincoli lineari, non lineari, variabili intere e strutture di variabili combinatorie. Particolare attenzione viene dedicata alle fasi precedenti il ciclo puro di ottimizzazione di un algoritmo genetico, introducendo delle procedure di semplificazione dei sistemi di vincoli lineari e un metodo di eliminazione delle uguaglianze, notoriamente ostiche per gli approcci evolutivi. Risultati sperimentali, su molteplici classi di problemi test, vengono confrontati con algoritmi genetici esistenti mostrando dei comportamenti sicuramente incoraggianti per un raffinamento ulteriore della strategia delineata.
Emerasoft University è la Divisione di Emerasoft che si occupa di fornire corsi di formazione specialistici aziendali e interaziendali.
Tutti i corsi forniti da Emerasoft possono essere interamente finanziati grazie ai Fondi Interprofessionali (Fondimpresa, Forte, Fondir, FBA, Foncoop, ecc). Contattateci per costruire insieme il vostro piano formativo aziendale.
The design patterns are recurring solutions to common problems in software design.
The design patterns in computer science were formally described for the first time in the book "Design Patterns: Elements of Reusable Object-Oriented Software", whose authors are often called the Gang of Four, GoF or Go4.
Quando, come e perché utilizzare PowerMock. Vengono analizzati i legami tra design delle applicazioni e strumenti di test. Sono presenti esempi di codice semplice ma verosimile con i rispettivi test.
Definizione e sviluppo di un algoritmo genetico multiobiettivo per problemi d...Stefano Costanzo
Lo scopo di questo lavoro di tesi è lo sviluppo di un approccio meta-euristico basato sugli algoritmi genetici per la risoluzione di problemi multi-obiettivo sia di programmazione lineare che di ottimizzazione combinatoria. Alcune tipologie di questi problemi si prestano ad essere risolti mediante algoritmi ad-hoc che fanno leva sulle caratteristiche strutture matematiche delle variabili di ingresso con cui sono modellati, così come evidenziato nella vasta letteratura esaminata. Il presente lavoro propone invece di generalizzare queste tecniche in modo da poter offrire uno o più algoritmi che sappiano gestire contemporaneamente il maggior numero di classi di problemi. Inoltre, l’intrinseca complessità dovuta alla natura multi-obiettivo dei problemi affrontati, richiede di spostare l’attenzione dai metodi deterministici-tradizionali a quelli evolutivi-euristici. Viene quindi delineato il profilo di un algoritmo genetico capace di elaborare problemi multi-obiettivo con vincoli lineari, non lineari, variabili intere e strutture di variabili combinatorie. Particolare attenzione viene dedicata alle fasi precedenti il ciclo puro di ottimizzazione di un algoritmo genetico, introducendo delle procedure di semplificazione dei sistemi di vincoli lineari e un metodo di eliminazione delle uguaglianze, notoriamente ostiche per gli approcci evolutivi. Risultati sperimentali, su molteplici classi di problemi test, vengono confrontati con algoritmi genetici esistenti mostrando dei comportamenti sicuramente incoraggianti per un raffinamento ulteriore della strategia delineata.
3. Problema introduttivo
• La classe MyArray rappresenta vettori di numeri
• Un suo metodo esegue la stampa dell’array secondo due
formati:
– MathFormat (es. )
– StandardFormat (es. )
• Questi formati potrebbero essere in futuro sostituiti da altri
Come isolare l’algoritmo di formattazione del contenuto
Come isolare l’algoritmo di formattazione del contenuto
dell’array ,, per farlo variare in modo indipendente dal
dell’array per farlo variare in modo indipendente dal
resto dell’implementazione della classe?
resto dell’implementazione della classe?
Ingegneria del Software - A.A. 2003/2004
6. Il pattern Strategy (1/7)
• Nome Strategy [GoF95]
• Synopsis Consente la definizione di una famiglia di algoritmi, li
incapsula e li rende intercambiabili tra loro.
Lo Strategy permette di cambiare l’algoritmo
utilizzato indipendentemente dal client che lo usa.
• Context Cfr. esempio introduttivo
• Forces - Un programma deve fornire più varianti di un
algoritmo o comportamento.
- Si vuole incapsulare “differenze comportamentali”
in classi separate ed offrire un modo consistente di
accesso a tali comportamenti.
Ingegneria del Software - A.A. 2003/2004
7. Il pattern Strategy (2/7)
Client
• Solution - Gli “attori” del pattern Iterator sono:
– Client: Classe che desidera ignorare “chi” e “come” implementerà un
determinato algoritmo o comportamento
– AbstractStrategy: Contratto che definisce le regole di accesso alle
classi che implementano l’algoritmo o comportamento sopra citato
– ConcreteStrategyX: Classi che implementano l’algoritmo o
comportamento sopra citato
Ingegneria del Software - A.A. 2003/2004
8. Il pattern Strategy (3/7)
• Consequences Permette di determinare dinamicamente il
comportamento di oggetti client
eliminando cascate di if o switch
• Implementation -
• Java API usage Nel package java.util.zip:
Ingegneria del Software - A.A. 2003/2004
9. Il pattern Strategy (4/7)
• Code
example
Ingegneria del Software - A.A. 2003/2004