Ingegneria del software: dai requisiti all'architettura.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Ingegneria del software: dai requisiti all'architettura. http://creativecommons.org/licenses/by-nc-nd/2.5/"

Transcript

1 Ingegneria del software: dai requisiti all'architettura

2 Bologna: Omid Ehsani Solution Lightcode S.r.l. (

3 Pisa: Lorenzo Barbieri Solution ObjectWay S.p.a. ( Co-fondatore del Gruppo Italiano Utenti Solution Architect (GUISA

4 Trento: Andrea Saltarello Solution Managed Designs S.r.l. ( Presidente dello User Group Italiano.NET (UGIdotNET Co-fondatore del Gruppo Italiano Utenti Solution Architect (GUISA

5 Agenda Solution Architecture Overview Principi di Analisi Modellare la soluzione: da UML ai Domain Specific Languages Break Domain Model e architetture layered Pranzo Progettare Data Access Layer User Interface Architecture Break Architetture real world Q&A

6 Solution Architecture Overview Andrea Saltarello Solution Managed Designs S.r.l. (

7 Cosa è l Architettura? Secondo la definizione ANSI/IEEE Std : L organizzazione basilare di un sistema, rappresentato dalle sue componenti, dalle relazioni che esistono tra di loro e con l ambiente circostante, e dai principi che governano la sua progettazione e evoluzione."

8 Architettura: cosa? L architettura di un sistema *è* definita durante la fase di progettazione. L architettura *non è* parte dell analisi: l analisi si concentra su cosa deve fare il sistema La progettazione si concentra su come esso debba farlo

9 L architetto: Architetto: le responsabilità Recepisce i requisiti funzionali (emersi durante l analisi) e quelli non funzionali (es: availability, scalabilità, security ) Effettua una analisi del rapporto costi/benefici per determinare il miglior modo di soddisfare i requisiti, eventualmente ricorrendo a componenti commerciali o comunque già sviluppati Suddivide i grandi sistemi in (layer di) sottosistemi individualmente assegnabili ad uno sviluppatore o ad un gruppo di lavoro Genera specifiche : sketch, modelli o prototipi per comunicare al gruppo di lavoro le modalità di realizzazione

10 Architettura: luoghi comuni Architetto!= Analista Architetto!= Project Manager Architettura!= Design Al limite Design Architettura Architetto : Developer

11 Principi di Analisi Lorenzo Barbieri Solution ObjectWay S.p.a. (

12 Requisito: una definizione 1. Condizione o capacità che occorre all utente per risolvere un problema o raggiungere un obiettivo 2. Condizione o capacità che deve essere raggiunta o posseduta dal sistema per soddisfare un contratto, standard, specifica o altro documento formale 3. La rappresentazione documentata di una condizione o capacità (1 o 2)

13 Requisiti: la teoria La norma ISO9126, pubblicata nella sua prima versione nel 1991, ha definito il modello dei requisiti qualitativi del software. Secondo tale modello i requisiti sono raggruppabili in 6 "caratteristiche" e in 21 "sottocaratteristiche, distinte fra caratteristiche esterne (orientate all utente) e caratteristiche interne (orientate allo sviluppo e manutenzione).

14 Requisiti: Caratteristiche Funzionalità Disponibilità Usabilità Efficienza Manutenibilità Portabilità Idoneità Maturità Comprensione Tempo Risposta Analizzabilità Adattabilità Accuratezza Tolleranza Apprendimento Utilizzo Risorse Modificabilità Installabilità Interoperabilità Recupero Utilizzabilità Stabilità Coesistenza Sicurezza Attrattiva Collaudabilità Sostituibilità Concordanza Funzionali Non Funzionali

15 Recepire i requisiti La mancanza di requisiti o la mancanza della loro gestione sono tra le cause principali del fallimento dei progetti Recepire i requisiti significa circoscrivere il problema Non sempre è semplice definire i confini di un sistema. Per chiarire meglio i confini può essere utile introdurre il concetto di Attore

16 Attori Un attore è un umano, una macchina o un altro sistema Un attore usa il sistema o è coinvolto durante l uso del sistema (ha una interazione diretta col sistema) Gli attori non sono parte del nostro sistema

17 Casi d uso: introduzione Storie di uso del sistema, user stories Ogni caso d uso è una collezione di scenari di uso Ogni caso d uso è scatenato da almeno un attore Ogni caso d uso descrive: tutti i possibili di modi (scenari) per ottenere un preciso valore o obiettivo per un particolare attore tutte le eccezioni che non permettono di ottenere il valore o l obiettivo Lo stile con cui è scritto varia dall informale/romanzato al formale/pseudocodice deve essere comprensibile al target (in questa fase lo stakeholder)

18 Casi d uso: utilità Rappresentazione grafica sintetica Identificare chi interagisce col sistema Identificare quali interfacce il sistema avrà e verso chi Accordarsi col cliente sulle macrofunzionalità (feature) Raggruppare le feature per attore (obiettivi di ciascun attore) Aiutare a verificare che non si stiano tralasciando feature

19 Requisiti Utente vs. Requisiti Software I Requisiti Utente che abbiamo visto fino ad adesso sono definiti dall utente (li scriviamo attraverso il processo di elicitazione) I Requisiti Software servono per descrivere in maniera completa il sistema. Un Requisito Software: descrive un comportamento del sistema soddisfa un bisogno dell utente, un vincolo, uno standard, etc...

20 Software Requirements Specifications Una SRS deve essere leggibile da: Stakeholder, committenti, etc... (è la base del contratto) Team di progetto (è la base dell analisi, dell architettura e del design) Team di test Team che prepara la documentazione In pratica tutti i soggetti coinvolti nel progetto

21 Specificare i requisiti funzionali tramite Use Case In questa fase gli Use Case saranno molto più dettagliati di quelli usati (opzionalmente) nella fase precedente. Uno use case: è un completo e significativo flusso di interazioni fra attori e sistema è iniziato da un attore che richiama una certa funzionalità del sistema, che reagisce per fornire qualcosa di valore all attore L insieme di tutti gli use case definisce tutti i modi possibili di usare il sistema

22 Cosa non deve contenere una SRS? Design - Come soddisfare i requisiti Test - Come sapere se i requisiti sono stati soddisfatti Piani di progetto Quando e come i requisiti saranno implementati

23 Architettura: esprimere il modello I modelli permettono di rappresentare formalmente un sistema. Tipicamente, è di grande aiuto avvalersi di un formalismo per la modellazione. Lo standard de iure (ma anche de facto) per la modellazione è UML (Unified Modeling Language)

24 Introduzione a Unified Modeling Language Riccardo Golia Solution Architect

25 Agenda Introduzione I tre approcci di UML Classificazione dei diagrammi Diagramma dei casi d uso Diagramma delle classi Diagramma di sequenza

26 Cosa è UML UML (Unified Modeling Language) è una famiglia di notazioni grafiche basate su meta-modello per la descrizione e la rappresentazione di un sistema software basato sul paradigma orientato agli oggetti (Object-Oriented). Notazione: insieme di elementi grafici aggregati a formare diversi diagrammi, ciascuno dedicato a descrivere un diverso aspetto del sistema software. Meta-modello: schema che definisce i concetti stessi di UML al fine di aumentarne il rigore formale per rendere possibile la trasformazione delle notazioni in codice sorgente e viceversa.

27 I tre approcci di UML UML introduce un livello di astrazione maggiore rispetto ai linguaggi di programmazione per agevolare la discussione sulle scelte di design. La sua adozione avviene tipicamente con uno dei seguenti approcci: UML come abbozzo (sketch) Documentazione, discussione e condivisione delle idee Basso rigore formale Selettività: focalizzazione solo su alcuni aspetti dell applicazione Bassa, se non nessuna dipendenza dal tool di modellazione UML come progetto (blueprint) Completezza Alto rigore formale Forward e reverse (round-trip) engineering Forte dipendenza dal tool di modellazione UML come linguaggio di programmazione Diagrammi compilabili No forward e reverse engineering Fortissima dipendenza dal tool di modellazione

28 UML come abbozzo

29 UML come progetto

30 UML come linguaggio

31 Classificazione dei diagrammi 1/2 Diagrammi strutturali: Diagramma delle classi Diagramma degli oggetti Diagramma di deployment Diagramma dei package Diagramma dei componenti Diagramma di struttura composita [*] [*] Novità di UML 2.0

32 Classificazione dei diagrammi 2/2 Diagrammi comportamentali: Diagramma dei casi d uso Diagramma di interazione: Diagramma di sequenza Diagramma di comunicazione Diagramma di interazione generale [*] Diagramma di temporizzazione [*] Diagramma di macchina a stati Diagramma delle attività [*] Novità di UML 2.0

33 Diagramma dei casi d uso 1/5 E un diagramma comportamentale. Serve per identificare i requisiti funzionali di un sistema tramite la descrizione delle interazioni del sistema stesso con le entità ad esso esterne. Uno scenario è una sequenza di passi che caratterizzano una particolare interazione col sistema. Ciascun caso d uso rappresenta un insieme di scenari che hanno tra loro in comune lo scopo finale dell interazione. I diagrammi dei casi d uso sono alla base della definizione delle caratteristiche funzionali di un sistema software.

34 Diagramma dei casi d uso 2/5 Sistema Parte dell applicazione che svolge una funzione specifica. Attore Rappresenta qualcosa o qualcuno che interagisce col sistema. Caso d uso Azione intrapresa da un attore nell ambito del sistema. Relazione Collega gli attori ai casi d uso, oppure attori e casi d uso tra loro stessi: relazione di associazione (tra attori e casi d uso) relazione di inclusione (tra casi d uso) relazione di estensione (tra casi d uso) relazione di generalizzazione (tra casi d uso e tra attori)

35 Diagramma dei casi d uso 3/5 Relazione di associazione Attore Relazione di inclusione Relazione di estensione Relazione di generalizzazione Casi d uso

36 Diagramma dei casi d uso 4/5 Relazione di inclusione: il caso d uso è esteso obbligatoriamente dal caso d uso a cui è collegato. Relazione di estensione: il caso d uso è esteso facoltativamente dal caso d uso che gli è collegato. Si noti il senso della freccia invertito.

37 Diagramma dei casi d uso 5/5 Compilazione di un ordine Per compilare un ordine, il cliente deve poter associare ad esso i suoi dati reperibili in funzione del codice cliente o del nominativo, e i dati del prodotto reperibili tramite il codice dell articolo, la descrizione o la categoria merceologica. Il sistema deve calcolare il prezzo del prodotto in funzione di eventuali sconti associati al cliente e verificare la disponibilità a magazzino dell articolo richiesto.

38 Diagramma delle classi 1/5 E il diagramma più conosciuto ed usato. E un diagramma strutturale, statico. Descrive la struttura delle classi che compongono il sistema software e identifica le relazioni statiche esistenti tra le classi stesse. Permette di individuare le dipendenze tra le classi.

39 Diagramma delle classi 2/5 Classi: Nome (fully-qualified: package::nome_classe) Attributi: visibilità nome : tipo molteplicità = default {proprietà} Operazioni: visibilità nome ([direzione nome : tipo = default]*) : tipo di ritorno {proprietà} Visibilità delle caratteristiche: + public, private, # protected, ~ package Caratteristiche statiche Associazioni semplici e associazioni bidirezionali Classi di associazione Molteplicità Generalizzazioni Aggregazione e composizione Dipendenze Note e vincoli Interfacce e classi astratte Classi parametriche Enumerazioni

40 Diagramma delle classi 3/5 Interfaccia Interfaccia Attributi Operazioni Nota Vincolo Generalizzazione Composizione Dipendenza Associazione Classe Molteplicità

41 Diagramma delle classi 4/5 Aggregazione Rappresenta la relazione fra un aggregato e le sue parti costitutive, dove ciascuna parte può esistere indipendentemente dall aggregato. Composizione Rappresenta la relazione fra un aggregato e le sue parti costitutive, dove ciascuna parte non può esistere senza la classe complessiva. Le parti per esistere necessitano della classe intera, la cui distruzione comporta a cascata la distruzione delle sue parti.

42 Classi astratte Caratteristiche statiche Diagramma delle classi 5/5 Classi parametriche Enumerazioni

43 Diagramma di sequenza 1/5 E un diagramma comportamentale, di interazione dinamica. E il diagramma di interazione più usato. Descrive la collaborazione di un insieme di oggetti che collettivamente hanno l onere di implementare un determinato comportamento. Documenta generalmente il comportamento di un singolo scenario. Include gli oggetti e i messaggi scambiati tra di essi durante l esecuzione di un caso d uso particolare.

44 Diagramma di sequenza 2/5 Partecipante Un oggetto attivo o una entità che partecipa allo scenario descritto dal diagramma di sequenza. Messaggio Sincrono (in genere una chiamata a funzione): l oggetto chiamante rimane in attesa che l esecuzione della funzione invocata sia terminata prima di procedere. Simbolo: Asincrono: non c è bisogno di aspettare la risposta per procedere nella computazione. Simbolo: Ritorno: rappresenta il valore ritornato in seguito all invocazione di una funzione. Simbolo:

45 Diagramma di sequenza 3/5 Found message Partecipanti Attivazione Linea di vita Messaggi sincroni Messaggio di ritorno

46 Diagramma di sequenza 4/5 Creazione di partecipanti Distruzione di partecipanti Chiamata interna

47 Diagramma di sequenza 5/5 Cicli e condizioni: loop: ciclo alt: condizione (if then else) opt: condizione (if then)

48 Sequenza vs Comunicazione

49 Introduzione ai Domain Specific Languages Omid Ehsani Solution Lightcode S.r.l. (

50 Da UML a DSL 1/3 UML è eccellente per abbozzare, progettare, comunicare, documentare E universalmente conosciuto Può descrivere molti aspetti del software Può essere utilizzato a vari livelli: dal più astratto al più dettagliato La tentazione di utilizzarlo per progettare sviluppare documentare in un solo colpo è molto forte... come il lato oscuro della forza!!! Ma...

51 Da UML a DSL 2/3... Ma gli innumerevoli tentativi di sviluppare con UML hanno lasciato sul campo molte vittime Mantenere i modelli aggiornati è estremamente oneroso Quando i modelli non rispecchiano più il codice non servono più a nulla! Tool costosi e spesso non integrati o all altezza delle aspettative Spesso invece che descrivere logiche complesse con i formalismi visuali si fa prima a scrivere codice!... E soprattutto UML descrive il dominio del problema in termini generici: Ampio raggio di utilizzo, ma non adatto ad automatismi

52 Da UML a DSL 3/3 I DSL (Domain Specific Language) invece hanno l obiettivo, e l ambizione, di trasformare i modelli nel prodotto finale Legati ad un dominio specifico e molto ristretto Basati su modelli, generalmente visuali Alto livello di astrazione Estremamente produttivi, facili da utilizzare Generano / Sono il prodotto finale

53 DSL: La tariffazione telefonica Call Record base rate: /s call length call store friend discount rate: /s calendar month friends calls other calls call length store bill billing period

54 Software Factories Un modello organizzativo per industrializzare lo sviluppo del software Linee di produzione Guida contestuale Frameworks, tools, assets MDD (Model Driven Development) => DSL

55 Object Oriented Design Andrea Saltarello Solution Managed Designs S.r.l. (

56 Object Oriented Design overview Come procedere? Secondo l autorevole Gangs of Four : You must find pertinent objects, factor them into classes at the right granularity, define class interfaces and inheritance hierarchies, and estabilish key relationships among them. In pratica, dobbiamo rielaborare il frutto dell analisi tenendo in considerazione le possibilità offerte dall orientamento all oggetto.

57 Diagramma dei casi d uso: un esempio Gestione vendite Internet Client Recupero Ordini Cliente Aggiungi Cliente Database Agente di televendita Rimuovi Cliente

58 OOD: dagli Use Case alle Classi La descrizione dei casi d uso è alla base del design delle classi Sostantivi = classi o attributi A user requests the orders for a customer by using a particular customer ID. The ID is validated by the database, and an error message is displayed if the customer does not exist. If the ID matches a customer, the customer s name, address, and date of birth are retrieved, in addition to any outstanding orders for the customer. Details about each order are retrieved, including the ID, the date, and the individual order items that make up an order. Verbi = operazioni (metodi) Esempi: ValidateCustomer, RetrieveOrders, RetrieveOrderItems

59 Object Oriented Design overview (Reloaded) Possiamo migliorare la struttura statica applicandovi dei design pattern

60 Design Patterns Defined "Each pattern describes a problem which occurs over and over again in our environment, and then describes the core solution to that problem, in such a way that you can use the solution a million times over, without ever doing it the same way twice. Christopher Alexander A Pattern Language, 1977

61 OOD: Design Patterns I pattern costituiscono soluzioni sperimentate a problemi concreti, utilizzabili in contesti applicativi differenti. Possiamo pensare ad un pattern come alla descrizione di un problema comune e di una soluzione generalmente applicabile, fattorizzati in maniera elegante....oppure ancora... Possiamo pensare ai pattern come ad un gergo evoluto per trasmettere idee e comprendere i problemi e le soluzioni in modo più efficiente.

62 Design Patterns unleashed Il Testo di riferimento è: Design Patterns: Elements of Reusable Object-Oriented Software di Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides Sono loro la Gang of Four... da cui [GoF]

63 Design Patterns applied I design pattern ci aiutano a risolvere problemi di tutti i giorni. Esempi: Ricordate VB6? La default instance si ottiene con Singleton Conoscete ADO.NET? La dipendenza dal provider si elimina con Factory Method

64 Design Patterns applied: Factory method Problema: Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.

65 Design Patterns: il verbo? I pattern sono: Le Sacre Scritture? L A-Team? Oppure La Forza?

66 Dice il saggio Non dobbiamo pensare ai pattern come a dogmi, bensì come alle centurie di Nostradamus: vanno interpretati

67 Pattern vs. Idiomi Un pattern insiste sul paradigma, è un modello, un esempio generico Un idioma insiste sulla tecnologia, è una soluzione specifica ad un linguaggio Ad esempio: Observer vs. delegate/eventi Iterator vs. IEnumerator

68 Idiomatic Design Un design idiomatico rinuncia alla genericità della soluzione basata su pattern a favore di una implementazione basata sulle caratteristiche della tecnologia disponibile

69 Design idiomatico vs..net Classi o strutture? Strutture se il tipo è immutabile ed ha un footprint <= 16 bytes Classi se il footprint è > 16 bytes e/o avete bisogno di ereditarietà Non usare List nelle API pubbliche, preferendo: IList System.Collections.ObjectModel.Collection<T>

70 Application Modeling Andrea Saltarello Solution Managed Designs S.r.l. (

71 Agenda Overview dei pattern architetturali Transaction Script Table Module Active Record Domain Model Service Layer

72 Pattern Architetturali Esistono alcune blueprint utilizzabili per definire l architettura di base di una applicazione: sono pattern architetturali la cui grana è più grossa dei comuni design pattern

73 Transaction Script [P of EAA, 110] Organizes business logic by procedures where each procedure handles a single request from the presentation. Most business applications can be thought of as a series of transactions. A transaction may view some information as organized in a particular way, another will make changes to it. Each interaction between a client system and a server system contains a certain amount of logic. In some cases this can be as simple as displaying information in the database. In others it may involve many steps of validations and calculations. A Transaction Script organizes all this logic primarily as a single procedure, making calls directly to the database or through a thin database wrapper. Each transaction will have its own Transaction Script, although common subtasks can be broken into subprocedures.

74 Transaction Script In pratica In pratica: significa implementare una funzione per ogni operazione atomica Logica procedurale infilata dentro una applicazione basata su toolkit OO

75 Transaction Script : pro & contro Pro: Bassa difficoltà di implementazione Contro: Prono a duplicazione del codice

76 Table Module [P of EAA, 125] A Table Module organizes domain logic with one class per table in the data-base, and a single instance of a class contains the various procedures that will act on the data. The primary distinction with Domain Model (116) is that, if you have many orders, a Domain Model (116) will have one order object per order while a Table Module will have one object to handle all orders.

77 Table Module In pratica Le parole DataTable e incapsulamento vi suggeriscono qualcosa?

78 Table Module : Pro & Contro Pro: Built-in in ADO.NET, e ben supportato da Visual Studio (Typed Dataset) Un solo Table Module per differenti data source Contro: Non ha il concetto di identità degli oggetti Poco OO

79 Active Record [P of EAA, 160] An object that wraps a row in a database table or view, encapsulates the database access, and adds domain logic on that data. An object carries both data and behavior. Much of this data is persistent and needs to be stored in a database. Active Record uses the most obvious approach, putting data access logic in the domain object. This way all people know how to read and write their data to and from the database.

80 Active Record In pratica Una entità per ogni tabella Le entità hanno struttura analoga a quelle delle tabelle del database Le entità contengono la logica di persistenza Le entità contengono logica di dominio It's often hard to tell the difference between a Row Data Gateway and an Active Record. The crux of the matter is whether there's any domain logic present, if so you have an Active Record. A Row Data Gateway should contain only database access logic, and no domain logic. (cit.)

81 Active Record: Pro e Contro Pro: (Relativamente) Semplice da implementare Toolkit che lo supportano/supporteranno (Castle Project, LINQ to SQL) Contro: Fortemente accoppiato allo schema del database

82 Domain Model pattern [P of EAA, 116] An object model of the domain that incorporates both behavior and data. At its worst business logic can be very complex. Rules and logic describe many different cases and slants of behavior, and it's this complexity that objects were designed to work with. A Domain Model creates a web of interconnected objects, where each object represents some meaningful individual, whether as large as a corporation or as small as a single line on an order form.

83 Domain Model In pratica La modellazione object oriented pura e requisite driven della realtà trattata dal dominio del problema Le entità contengono both data and behaviour

84 Domain Model : Pro & Contro Pro: Manutenibilità e flessibilità notevoli Massimo sfruttamento del paradigma OO Contro: La gestione della persistenza può rivelarsi onerosa In assenza di logiche complesse l onere di implementazione non è giustificato

85 Persistenza del Domain Model Il Domain Model rappresenta lo schema dati della nostra applicazione, ma prima o poi dobbiamo fare i conti con la gestione della persistenza dei dati, tipicamente affidata ad un Mapper

86 Data Mapper [P of EAA, 165] A layer of Mappers (473) that moves data between objects and a database while keeping them independent of each other and the mapper itself. The Data Mapper is a layer of software that separates the in-memory objects from the database. Its responsibility is to transfer data between the two and also to isolate them from each other. With Data Mapper the in-memory objects needn't know even that there's a database present; they need no SQL interface code, and certainly no knowledge of the database schema. Since it's a form of Mapper, Data Mapper itself is even unknown to the domain layer.

87 Data Mapper In pratica Esistono delle classi CRUD sulla cui interfaccia appaiono le classi del Domain Model quali vettori dei dati, cioè: Accettano in ingresso istanze del Domain Model Restituiscono istanze del Domain Model

88 Domain Model anemici Un Domain Model è anemico quando viene privato (in parte) del proprio comportamento. Poiché può essere conveniente rendere Persistence Ignorant il Domain Model, ne consegue che l anemia non è una caratteristica on/off, bensì un indicatore

89 Service Layer [P of EAA, 133] Defines an application's boundary with a layer of services that establishes a set of available operations and coordinates the application's response in each operation. A Service Layer defines an application's boundary [Cockburn PloP] and its set of available operations from the perspective of interfacing client layers. It encapsulates the application's business logic, controlling transactions and coordinating responses in the implementation of its operations

90 Service Layer In pratica L approccio appena descritto è spesso definito SOA (Service Oriented Architecture) Quando implementiamo una SOA, i servizi fungono da Remote Facade [P of EAA, 388] verso la business logic da essi incapsulata, quindi: interfacce CRUDy non sono SOA gli oggetti veicolati sono dei semplici DTO Il servizio non implementa la business logic, bensì la usa (ad esempio, scriptando il Domain Model [P of EAA, 116])

91 Ricapitolando In ottica SOA, i servizi: non distribuiscono oggetti, bensì messaggi: il servizio ed il consumer concordano sul contratto da essi definito sono autonomi, e fungono da remote facade verso business logic ad essi locale Se dobbiamo distribuire oggetti,.net offre una *vera* tecnologia ORB: si chiama Remoting e può essere utilizzato anche con http

92 Architettura: un esempio Ipotizziamo una applicazione enterprise con i soliti requisiti: DB-independent (tecnologia e struttura) GUI-independent (almeno Win e Web)

93 Applicazioni Enterprise I più penseranno che siano le applicazioni che usano i computer che appaiono in Star Trek, ma secondo Fowler sono: Applicazioni che usano e consumano una considerevole mole di dati, applicandovi logiche complesse e variabili nel tempo (libera cit. da [P of EAA], N.d.T.)

94 Enterprise application design Per soddisfare i requisiti, optiamo per una architettura stratificata su 3 livelli: presentation, business, data Concentrare la logica applicativa nel business layer facilita l implementazione di GUI eterogenee Isolare l accesso ai dati in un DAL (Data Access Layer) permette di disaccoppiare la business logic dal DB

95 Responsabilità 3-layer Architecure Costruzione delle View Binding View/Entity Tiene solitamente lo stato dell applicazione Tiene la logica di flusso tra View

96 Responsabilità 3-layer Architecure Servizi Applicativi Regole di Business Gestione dello stato delle Entity

97 Responsabilità 3-layer Architecure Logica di Accesso al Database Richiamo di Stored Proc su DB Restituzione di DTO, DataReader, DataSet

98 Data Access Layer Andrea Saltarello Solution Managed Designs S.r.l. ( Giancarlo Sudano Solution ObjectWay S.p.a. (

99 Disegno di un DAL Requisiti del nostro DAL: Indipendenza dallo schema fisico Indipendenza dal DBMS Configurabile come plug-in

100 Business layer vs. Data layer La nostra applicazione disporrà di un DAL specifico per ogni DBMS supportato; definiremo quindi l API che sarà implementata da ogni DAL La business logic riceverà un riferimento al DAL corrente, che sarà creato da una factory Per assicurare l indipendenza dalla struttura del DB, il business layer e il DAL comunicheranno utilizzando esclusivamente istanze di business entities o DTO

101 Architettura del DAL Separiamo la definizione del DAL dalla sua implementazione mediante il pattern Separated Interface [P of EAA, 476] Il business layer riceverà un riferimento al DAL corrente, che sarà creato da una Abstract Factory [GoF, 87]

102 Separated Interface pattern [P of EAA, 476] Defines an interface in a separate package from its implementation. As you develop a system, you can improve the quality of its design by reducing the coupling between the system's parts. A good way to do this is to group the classes into packages and control the dependencies between them This way a client that needs the dependency to the interface can be completely unaware of the implementation. The Separated Interface provides a good plug point for Gateway

103 Abstract Factory pattern Creates an instance of several families of classes Provide an interface for creating families of related or dependent objects without specifying their concrete classes.

104 Unit of Work [P of EAA, 184] When you're pulling data in and out of a database, it's important to keep track of what you've changed. Similarly you have to insert new objects you create and remove any objects you delete. A Unit of Work keeps track of everything you do during a business transaction that can affect the database.

105 Template Method [GoF, 325] Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure.

106 Query Object [P of EAA, 316] An object that represents a database query. A Query Object is an interpreter [GoF], that is, a structure of objects that can form itself into a SQL query. You can create this query by referring to classes and fields rather than tables and columns. In this way those who write the queries can do so independently of the database schema and changes to the schema can be localized in a single place.

107 Identity Map [GoF, 195] Ensures that each object gets loaded only once by keeping every loaded object in a map. Looks up objects using the map when referring to them

108 DAL: Advanced Features Poiché disaccoppiato dalla applicazione, il DAL può implementare varie strategie di ottimizzazione dell accesso ai dati, tra le quali: Lazy load Gestione del lock

109 Lazy Load pattern [P of EAA, 200] An object that doesn't contain all of the data you need but knows how to get it. For loading data from a database into memory it's handy to design things so that as you load an object of interest you also load the objects that are related to it. ( ) A Lazy Load interrupts this loading process for the moment, leaving a marker in the object structure so that if the data is needed it can be loaded only when it is used. As many people know, if you're lazy about doing things you'll win when it turns out you don't need to do them at all.

110 Optimistic Offline Lock [P of EAA, 416] Prevents conflicts between concurrent business transactions by detecting a conflict and rolling back the transaction. Data integrity is at risk once two sessions begin to work on the same records and lost updates are quite possible. Also, with one session editing data that another is reading an inconsistent read becomes likely. ( ) Optimistic Offline Lock solves this problem by validating that the changes about to be committed by one session don't conflict with the changes of another session.

111 Introduzione agli ORM Un Object Relational Mapper è un toolkit consistente in: Una API per eseguire operazioni CRUD Un linguaggio (o API) per la definizione di query operanti su classi e proprietà Una modalità di mapping di metadati (classi<->tabelle, proprietà<->colonne) Noi useremo NHibernate beta (3), porting del framework di persistenza Hibernate per Java

112 DAL: Object/Relational Mapping Se volessimo utilizzare ORM (es: NHibernate) potremmo usare il pattern Adapter [GoF, 139] per trasformarne l interfaccia in quella del DAL (Mapper / Table Data Gateway).

113 Adapter pattern [GoF, 87] Match interfaces of different classes Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.

114 User Interface Architecture Corrado Cavalli Managed Designs S.r.l. (

115 Approccio alla user interface La UI è spesso snobbata E l architettura che conta Area meno nobile Ultima parte ad essere sviluppata Legata Visual Studio 2005 Mancanza di guidelines architetturali Design patterns vs UI?

116 Il problema Realizzare una UI la quale: Non vincoli il modello Possa essere sostituibile Rappresentazione grafica Tecnologia realizzativa (Win/Web/WPF, ) Supporti lo unit-testing

117 La soluzione Applicare i patterns alla UI! (no Transaction Script ) Abbandonare la modalità RAD di Visual Studio Usare VS come semplice designer Impoverire la UI Yes, more code

118 The patterns Model View Controller Model View Presenter Supervising Controller Passive View Presenter First

119 Actors Model Implementa le funzionalità di business E indipendente dal contesto di utilizzo View Implementa la logica di presentazione Rappresenta i dati esposti dal model Gestisce le interazioni con l utente Controller Implementa la logica di controllo Gestisce i comandi della View verso il model Può agire sulla view

120 MVC - Model View Controller Update state Set state Model Change view View Controller User action View e Controller conoscono Model Entrambi agiscono verso Model Model è indipendente da View e Controller

121 MVP - Supervising Controller Set state Model IView Update view View Presenter User action View è aggiornata via Databinding Nei casi complessi interviene il Presenter Le gestures sono delegate al Presenter

122 MVP Passive view Set state Model IView Update view View Presenter User action Solo Presenter conosce Model Solo Presenter agisce verso Model View è passiva (Passive View) Model è indipendente da Presenter

123 Presenter First IModel Set state Model IView Update view View Presenter User event Intercambiabilità di Model, View e Presenter Gli attori sono totalmente disaccoppiati

124 Vantaggi IView Presenter IModel Mock Object Mock Object Unit Testing tool Indipendenza della View Testing indipendente del Presenter

125 MVP Applied: Demo NSK Main Presenter Main Presenter Customers Presenter Customer Presenter Navigation Service Model

126 Bibliografia [GoF] Design Patterns: Elements of Reusable Object-Oriented Software, Erich gamma et al, Addison-Wesley [P of EAA] Pattern of Enterprise Application Architecture, Martin Fowler, Addison-Wesley [DDD] Domain Driven Design, Eric Evans, Addison-Wesley

127 Link: Active Record Pattern, Wikipedia: DomainSpecificLanguage, Bliki Martin Fowler: ml Domain-specific programming language, Wikipedia:

128 Link: GUISA: Wiki UGIdotNET: MSDN Architecture Center: rsemsdn/architetti/default.mspx

129 Credits Solution Architecture Overview: Andrea Saltarello [Managed Designs S.r.l.] Principi di Analisi: Lorenzo Barbieri [ObjectWay S.p.a.] Introduzione a UML Riccardo Golia Introduzione ai Domain Specific Languages Omid Ehsani [Lightcode S.r.l.] Domain Model e architetture layered Andrea Saltarello [Managed Designs S.r.l.] Progettare Data Access Layer Andrea Saltarello [Managed Designs S.r.l.] Giancarlo Sudano [ObjectWay S.p.a.] UI Architecture Corrado Cavalli [Managed Designs S.r.l.]

130 Q&A

Architettura del software: una introduzione

Architettura del software: una introduzione Architettura del software: una introduzione Andrea Saltarello Software Architect @ Managed Designs S.r.l. andrea.saltarello@manageddesigns.it http://blogs.ugidotnet.org/pape http://creativecommons.org/licenses/by-nc-nd/2.5/

Dettagli

Concetti di base di ingegneria del software

Concetti di base di ingegneria del software Concetti di base di ingegneria del software [Dalle dispense del corso «Ingegneria del software» del prof. A. Furfaro (UNICAL)] Principali qualità del software Correttezza Affidabilità Robustezza Efficienza

Dettagli

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Progettazione OO E. TINELLI Punto di Partenza Il modello di analisi E una rappresentazione minima del

Dettagli

SOA!= OO. Andrea Saltarello Software Architect @ Managed Designs S.r.l. andrea.saltarello@manageddesigns.it http://blogs.ugidotnet.

SOA!= OO. Andrea Saltarello Software Architect @ Managed Designs S.r.l. andrea.saltarello@manageddesigns.it http://blogs.ugidotnet. SOA!= OO Andrea Saltarello Software Architect @ Managed Designs S.r.l. andrea.saltarello@manageddesigns.it http://blogs.ugidotnet.org/pape http://creativecommons.org/licenses/by-nc-nd/2.5/ Chi sono Solution

Dettagli

Ingegneria del Software. Introduzione ai pattern

Ingegneria del Software. Introduzione ai pattern Ingegneria del Software Introduzione ai pattern 1 Definizione di pattern [dal [dal vocabolario vocabolario Garzanti] Garzanti] Alcuni esempi: Pattern architetturale Pattern di circuito stampato Pattern

Dettagli

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

Dettagli

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Ingegneria del Software La fase di Analisi Giulio Destri Ing. del software: Analisi - 1 Scopo del modulo Definire

Dettagli

Modellazione dei dati in UML

Modellazione dei dati in UML Corso di Basi di Dati e Sistemi Informativi Modellazione dei dati in UML Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Introduzione UML (Unified Modeling Language):

Dettagli

Strumenti di modellazione. Gabriella Trucco

Strumenti di modellazione. Gabriella Trucco Strumenti di modellazione Gabriella Trucco Linguaggio di modellazione Linguaggio formale che può essere utilizzato per descrivere (modellare) un sistema Il concetto trova applicazione soprattutto nell

Dettagli

Design Patterns. Sommario. Architettura a 3 Livelli Concetti Generali Presentazione Dominio Sorgente Dati DIB 1. Design Patterns DIB 2

Design Patterns. Sommario. Architettura a 3 Livelli Concetti Generali Presentazione Dominio Sorgente Dati DIB 1. Design Patterns DIB 2 DIB 1 Sommario Architettura a 3 Livelli Concetti Generali Presentazione Dominio Sorgente Dati DIB 2 Architettura a 3 Livelli DIB 3 Architettura a 3 Livelli Presentazione Gestione dell interazione degli

Dettagli

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

!#$%&&'()#*%+%+!#$',,'()#*%+ -)%*&'&'+'$.)+-$$%&&) !#$%&&'(%)'*+%,#-%#.'%&'#/0)-+#12+3,)4+56#7+#.')8'9 !"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se

Dettagli

7. Architetture Software

7. Architetture Software 7. Architetture Software progettare la struttura Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 7. Architetture Software 1 / 20 Scopo della fase di design

Dettagli

API e socket per lo sviluppo di applicazioni Web Based

API e socket per lo sviluppo di applicazioni Web Based API e socket per lo sviluppo di applicazioni Web Based Cosa sono le API? Consideriamo il problema di un programmatore che voglia sviluppare un applicativo che faccia uso dei servizi messi a disposizione

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo Design Pattern L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo sviluppo dei programmi, il loro mantenimento,

Dettagli

Il documento rappresenta una guida sintetica per descrivere sia la filosofia che il modulo software per l implementazione dei workflow in recuper@2.

Il documento rappresenta una guida sintetica per descrivere sia la filosofia che il modulo software per l implementazione dei workflow in recuper@2. Il documento rappresenta una guida sintetica per descrivere sia la filosofia che il modulo software per l implementazione dei workflow in recuper@2.0 ver 1.0 del 19/03/2013 Nettuno Solutions s.r.l. Viale

Dettagli

UML Component and Deployment diagram

UML Component and Deployment diagram UML Component and Deployment diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania I diagrammi UML Classificazione

Dettagli

UniRoma2 - Ingegneria del Software 1 1

UniRoma2 - Ingegneria del Software 1 1 Object Oriented Analysis - OOA La fase di OOA definisce, secondo un approccio ad oggetti, COSA un prodotto software deve fare (mentre la fase di OOD definisce, sempre secondo un approccio ad oggetti, COME

Dettagli

Sequence Diagram e Collaboration Diagram

Sequence Diagram e Collaboration Diagram Sequence Diagram e Collaboration Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Sommario Interaction

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo

Dettagli

Automazione Industriale 4- Ingegneria del Software

Automazione Industriale 4- Ingegneria del Software Automation Robotics and System CONTROL Università degli Studi di Modena e Reggio Emilia Automazione Industriale 4- Ingegneria del Software Cesare Fantuzzi (cesare.fantuzzi@unimore.it) Ingegneria Meccatronica

Dettagli

UML e (R)UP (an overview)

UML e (R)UP (an overview) Lo sviluppo di sistemi OO UML e (R)UP (an overview) http://www.rational.com http://www.omg.org 1 Riassumento UML E un insieme di notazioni diagrammatiche che, utilizzate congiuntamente, consentono di descrivere/modellare

Dettagli

PROGRAMMA CORSO Analista Programmatore JAVA - ORACLE

PROGRAMMA CORSO Analista Programmatore JAVA - ORACLE PROGRAMMA CORSO Analista Programmatore JAVA - ORACLE 1. JAVA 1.1 Introduzione a Java Introduzione Cosa è Java 1.2 Sintassi e programmazione strutturata variabili e metodi tipi di dati, array operatori

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Dispensa di database Access

Dispensa di database Access Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di

Dettagli

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione SQL DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE SQL è più di un semplice linguaggio di interrogazione! Linguaggio di definizione dati (Data-definition language, DDL):! Crea/distrugge/modifica relazioni

Dettagli

Presentazione di Cedac Software

Presentazione di Cedac Software Agenda Presentazione di Cedac Software SOA ed ESB Analisi di un caso studio Esempi Q&A Presentazione di Cedac Software 1 2 Presentazione di Cedac Software S.r.l. Divisione Software Azienda nata nel 1994

Dettagli

Sistemi informativi secondo prospettive combinate

Sistemi informativi secondo prospettive combinate Sistemi informativi secondo prospettive combinate direz acquisti direz produz. direz vendite processo acquisti produzione vendite INTEGRAZIONE TRA PROSPETTIVE Informazioni e attività sono condivise da

Dettagli

INGEGNERIA DEL SOFTWARE. Prof. Paolo Salvaneschi

INGEGNERIA DEL SOFTWARE. Prof. Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica INGEGNERIA DEL SOFTWARE Prof. Paolo Salvaneschi 1 Obiettivi Scopi del corso: - Fornire gli elementi di base della disciplina,

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Introduzione ai Database! Tipologie di DB (gerarchici, reticolari, relazionali, oodb) Introduzione ai database Cos è un Database Cos e un Data Base Management System (DBMS)

Dettagli

Il modello di ottimizzazione SAM

Il modello di ottimizzazione SAM Il modello di ottimizzazione control, optimize, grow Il modello di ottimizzazione Il modello di ottimizzazione è allineato con il modello di ottimizzazione dell infrastruttura e fornisce un framework per

Dettagli

Introduzione. Il software e l ingegneria del software. Marina Mongiello Ingegneria del software 1

Introduzione. Il software e l ingegneria del software. Marina Mongiello Ingegneria del software 1 Introduzione Il software e l ingegneria del software Marina Mongiello Ingegneria del software 1 Sommario Il software L ingegneria del software Fasi del ciclo di vita del software Pianificazione di sistema

Dettagli

Scenario di Progettazione

Scenario di Progettazione Appunti del 3 Ottobre 2008 Prof. Mario Bochicchio SCENARIO DI PROGETTAZIONE Scenario di Progettazione Il Committente mette a disposizione delle risorse e propone dei documenti che solitamente rappresentano

Dettagli

Corso di Laurea Triennale in Ingegneria Informatica. Corso di Ingegneria del software A. A. 2004-2005. Marina Mongiello

Corso di Laurea Triennale in Ingegneria Informatica. Corso di Ingegneria del software A. A. 2004-2005. Marina Mongiello Corso di Laurea Triennale in Ingegneria Informatica Corso di Ingegneria del A. A. 2004-2005 1 La progettazione È applicata indipendentemente dal modello di processo utilizzato. Parte dal punto in cui sono

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Programmazione Java Avanzata Spring - JDBC

Programmazione Java Avanzata Spring - JDBC Programmazione Java Avanzata Spring - JDBC Ing. Gianluca Caminiti Riferimenti Spring http://www.springsource.org/ (scaricate il reference) Beginning Spring 2 - From Novice to Professional. APress. 2008

Dettagli

Generazione Automatica di Asserzioni da Modelli di Specifica

Generazione Automatica di Asserzioni da Modelli di Specifica UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Generazione Automatica di Asserzioni da Modelli di Specifica Relatore:

Dettagli

Progetto. Struttura del documento di specifica dei requisiti, Casi d uso. manuel.comparetti@iet.unipi.it

Progetto. Struttura del documento di specifica dei requisiti, Casi d uso. manuel.comparetti@iet.unipi.it Progetto Struttura del documento di specifica dei requisiti, Casi d uso manuel.comparetti@iet.unipi.it 1 Documenti da produrre Il progetto deve comprendere i seguenti documenti: Documento di specifica

Dettagli

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere. UML e i Casi d USO I casi d uso specificano una sequenza di azioni che producono un risultato visibile agli attori del sistema. Essi nascono per fornire descrizioni delle capacità del sistema. I casi d

Dettagli

SWIM v2 Design Document

SWIM v2 Design Document PROGETTO DI INGEGNERIA DEL SOFTWARE 2 SWIM v2 DD Design Document Matteo Danelli Daniel Cantoni 22 Dicembre 2012 1 Indice Progettazione concettuale Modello ER Entità e relazioni nel dettaglio User Feedback

Dettagli

Modellazione di sistema

Modellazione di sistema Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Modellazione di sistema E. TINELLI Contenuti Approcci di analisi Linguaggi di specifica Modelli di

Dettagli

Addition X DataNet S.r.l. www.xdatanet.com www.xdatanet.com

Addition X DataNet S.r.l. www.xdatanet.com www.xdatanet.com Addition è un applicativo Web che sfrutta le potenzialità offerte da IBM Lotus Domino per gestire documenti e processi aziendali in modo collaborativo, integrato e sicuro. www.xdatanet.com Personalizzazione,

Dettagli

Software solido e usabile

Software solido e usabile La tecnica di analisi e progetto Domain-Driven Design Software solido e usabile Nel cuore della complessità del software Che cos è il Domain-Driven Design È un approccio alla costruzione di sistemi software

Dettagli

Luca Milan http://fewbit.com info@fewbit.com

Luca Milan http://fewbit.com info@fewbit.com Luca Milan http://fewbit.com info@fewbit.com At its worst business logic can be very complex. Rules and logic describe many different cases and slants of behavior, and it s this complexity that objects

Dettagli

Un approccio innovativo per il delivery di servizi in infrastrutture di nomadic computing

Un approccio innovativo per il delivery di servizi in infrastrutture di nomadic computing Un approccio innovativo per il delivery di servizi in infrastrutture di nomadic computing Relatore Prof. Ing. Stefano Russo Correlatore Ing. Domenico Cotroneo Candidato Armando Migliaccio matr. 41/2784

Dettagli

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A. 2011-2012

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A. 2011-2012 Sapienza Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Corso di Laurea in Ingegneria Informatica ed Automatica Corso di Laurea in Ingegneria dei Sistemi Informatici

Dettagli

Domain- Driven Design Giovedì, 21 giugno 2012 Speaker: Manuel Scapolan

Domain- Driven Design Giovedì, 21 giugno 2012 Speaker: Manuel Scapolan Domain- Dri ven Design Giovedì, 21 giugno 2012 Speaker: Manuel Scapolan Domain Driven Design E un insieme di principi che ci aiutano a non fallire nel processo di sviluppo di un software * * considerando

Dettagli

CORSO DI PROGRAMMAZIONE JAVA

CORSO DI PROGRAMMAZIONE JAVA CORSO DI PROGRAMMAZIONE JAVA Corso di Programmazione Java Standard Edition ( MODULO A) OBIETTIVI ll corso ha come obiettivo quello di introdurre la programmazione a oggetti (OOP) e di fornire solide basi

Dettagli

design patterns e GRASP

design patterns e GRASP design patterns e GRASP 1 design patterns una coppia / particolarmente importante a cui viene dato un nome vengono espressi in un formato molto rigido, ad es. nome descrizione sintetica della descrizione

Dettagli

Brochure Internet. Versione 2010.1 The Keyrules Company s.r.l. Pagina 2 di 8

Brochure Internet. Versione 2010.1 The Keyrules Company s.r.l. Pagina 2 di 8 Ogni organizzazione possiede un sistema di regole che la caratterizzano e che ne assicurano il funzionamento. Le regole sono l insieme coordinato delle norme che stabiliscono come deve o dovrebbe funzionare

Dettagli

EXPLOit Content Management Data Base per documenti SGML/XML

EXPLOit Content Management Data Base per documenti SGML/XML EXPLOit Content Management Data Base per documenti SGML/XML Introduzione L applicazione EXPLOit gestisce i contenuti dei documenti strutturati in SGML o XML, utilizzando il prodotto Adobe FrameMaker per

Dettagli

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali DESIGN PATTERN CREAZIONALI DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2013 2014 rcardin@math.unipd.it

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Design Pattern: Storia Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Base di dati e sistemi informativi

Base di dati e sistemi informativi Base di dati e sistemi informativi Una base di dati è un insieme organizzato di dati opportunamente strutturato per lo svolgimento di determinate attività La base di dati è un elemento fondamentale per

Dettagli

Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

GenLApp Generazione Lista di Applicazioni. Design Patterns. Classi Essenziali. Modellazione Dati. Progettazione della Linea di Prodotti

GenLApp Generazione Lista di Applicazioni. Design Patterns. Classi Essenziali. Modellazione Dati. Progettazione della Linea di Prodotti Progettazione della Linea di Prodotti GenLApp Generazione Lista di Applicazioni Progettazione della Linea di Prodotti Classi Essenziali Responsabilità sui 3 Livelli Architetturali Descrizione delle Responsabilità

Dettagli

Object Oriented Software Design

Object Oriented Software Design Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Object Oriented Software Design Corso di Tecniche di Programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria

Dettagli

19. LA PROGRAMMAZIONE LATO SERVER

19. LA PROGRAMMAZIONE LATO SERVER 19. LA PROGRAMMAZIONE LATO SERVER Introduciamo uno pseudocodice lato server che chiameremo Pserv che utilizzeremo come al solito per introdurre le problematiche da affrontare, indipendentemente dagli specifici

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello del sistema 4 2.1 Requisiti hardware........................ 4 2.2 Requisiti software.........................

Dettagli

Distributed Object Computing

Distributed Object Computing Evoluzione Architetturale Distributed omputing entralizzata Monolitica anni 60-70 Reti locali di P anni 80 Reti lient Server anni 80-90 Internet The network is the computer Paolo Falcarin Sistemi Informativi

Dettagli

Architettura del software: dai Casi d Uso al Modello

Architettura del software: dai Casi d Uso al Modello Architettura del software: dai Casi d Uso al Modello Lorenzo Barbieri Sono un Senior Trainer/Consultant in ObjectWay SpA (www.objectway.it), specializzato in architetture Microsoft.NET, Windows, SQL Server,

Dettagli

WorkFlow Management Systems

WorkFlow Management Systems WorkFlow Management Systems Cosa è un? Automazione di un processo aziendale (business process) con: documenti, informazioni e compiti partecipanti insieme predefinito di regole obiettivo comune 2 Esempi

Dettagli

Una metodologia per la specifica di software basato su componenti

Una metodologia per la specifica di software basato su componenti Luca Cabibbo Architetture Software Una metodologia per la specifica di software basato su componenti Dispensa ASW 445 ottobre 2014 La mappa non è il territorio. Douglas R. King 1 -Fonti [UML Components],

Dettagli

L o. Walter Ambu http://www.japsportal.org. japs: una soluzione agile (www.japsportal.org)

L o. Walter Ambu http://www.japsportal.org. japs: una soluzione agile (www.japsportal.org) L o JAPS: una soluzione Agile Walter Ambu http://www.japsportal.org 1 Lo sviluppo del software Mercato fortemente competitivo ed in continua evoluzione (velocità di Internet) Clienti sempre più esigenti

Dettagli

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Siti web centrati sui dati Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Volumi di riferimento

Volumi di riferimento Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di

Dettagli

Corso: Sistemi di elaborazione delle informazioni 2. Anno Accademico: 2007/2008. Docente: Mauro Giacomini

Corso: Sistemi di elaborazione delle informazioni 2. Anno Accademico: 2007/2008. Docente: Mauro Giacomini Corso: Sistemi di elaborazione delle informazioni 2. Anno Accademico: 2007/2008. Docente: Mauro Giacomini Organizzazione no-profit per lo sviluppo di standard che fornisce linee guida per: lo scambio la

Dettagli

Architettura SW Definizione e Notazioni

Architettura SW Definizione e Notazioni Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Stili Architetturali E. TINELLI Architettura SW Definizione e Notazioni Definizione ANSI/IEEE Std Std1471-2000

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Architetture software

Architetture software Corso di Laurea Magistrale in Ingegneria Informatica Corso di Ingegneria del A. A. 2013-2014 Architettura software 1 Architetture software Sommario Definizioni 2 Architettura Definizione. L architettura

Dettagli

B.P.S. Business Process Server ALLEGATO C10

B.P.S. Business Process Server ALLEGATO C10 B.P.S. Business Process Server ALLEGATO C10 REGIONE BASILICATA DIPARTIMENTO PRESIDENZA DELLA GIUNTA REGIONALE UFFICIO SISTEMA INFORMATIVO REGIONALE E STATISTICA Via V. Verrastro, n. 4 85100 Potenza tel

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

UML - Unified Modeling Language

UML - Unified Modeling Language UML E CASI D USO UML - Unified Modeling Language Linguaggio stardardizzato per identificare e modellizzare le specifiche di un S.I. Coerente con il paradigma della programmazione ad oggetti Definito a

Dettagli

Diagrammi dei package

Diagrammi dei package Diagrammi dei package Package Meccanismo di raggruppamento di più classi (riferito al momento della compilazione) in unità di livello più alto, al fine di dominare la complessità strutturale di un sistema

Dettagli

La specifica del problema

La specifica del problema 2.9 (Caso di studio facoltativo) Pensare a oggetti: esame del problema Iniziamo ora a esaminare il nostro caso di studio di progettazione e implementazione orientate agli oggetti. Le sezioni Pensare a

Dettagli

Ciclo di vita dimensionale

Ciclo di vita dimensionale aprile 2012 1 Il ciclo di vita dimensionale Business Dimensional Lifecycle, chiamato anche Kimball Lifecycle descrive il framework complessivo che lega le diverse attività dello sviluppo di un sistema

Dettagli

Introduzione ai Web Services Alberto Polzonetti

Introduzione ai Web Services Alberto Polzonetti PROGRAMMAZIONE di RETE A.A. 2003-2004 Corso di laurea in INFORMATICA Introduzione ai Web Services alberto.polzonetti@unicam.it Introduzione al problema della comunicazione fra applicazioni 2 1 Il Problema

Dettagli

Rational Unified Process Introduzione

Rational Unified Process Introduzione Rational Unified Process Introduzione G.Raiss - A.Apolloni - 4 maggio 2001 1 Cosa è E un processo di sviluppo definito da Booch, Rumbaugh, Jacobson (autori dell Unified Modeling Language). Il RUP è un

Dettagli

Progettazione : Design Pattern Creazionali

Progettazione : Design Pattern Creazionali Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

1. BASI DI DATI: GENERALITÀ

1. BASI DI DATI: GENERALITÀ 1. BASI DI DATI: GENERALITÀ BASE DI DATI (DATABASE, DB) Raccolta di informazioni o dati strutturati, correlati tra loro in modo da risultare fruibili in maniera ottimale. Una base di dati è usualmente

Dettagli

Replica di Active Directory. Orazio Battaglia

Replica di Active Directory. Orazio Battaglia Orazio Battaglia Active Directory è una base di dati distribuita che modella il mondo reale della organizzazione. Definisce gli utenti, i computer le unità organizzative che costituiscono l organizzazione.

Dettagli

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare

Dettagli

Introduzione al mondo della persistenza. Dott. Doria Mauro doriamauro@gmail.com

Introduzione al mondo della persistenza. Dott. Doria Mauro doriamauro@gmail.com Hibernate Introduzione al mondo della persistenza Dott. Doria Mauro doriamauro@gmail.com La questione della persistenza Il modo dei database è complesso e le tecniche e le tecnologie sono molte. Per anni

Dettagli

Capitolo 13. Interrogare una base di dati

Capitolo 13. Interrogare una base di dati Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per

Dettagli

Architetture Applicative

Architetture Applicative Alessandro Martinelli alessandro.martinelli@unipv.it 6 Marzo 2012 Architetture Architetture Applicative Introduzione Alcuni esempi di Architetture Applicative Architetture con più Applicazioni Architetture

Dettagli

Guida all uso del web service SDMX

Guida all uso del web service SDMX Guida all uso del web service SDMX Introduzione L obiettivo di questo documento è l illustrazione sintetica degli step che tecnicamente bisogna compiere affinché un generico client sia in grado di interagire

Dettagli

Processo parte VII. Strumenti. Maggiore integrazione. Sviluppo tecnologico

Processo parte VII. Strumenti. Maggiore integrazione. Sviluppo tecnologico Strumenti Processo parte VII Leggere Cap. 9 Ghezzi et al. Strumenti software che assistono gli ingegneri del software in tutte le fasi del progetto; in particolare progettazione codifica test Evoluzione

Dettagli

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino Integration Services Project SQL Server 2005 Integration Services Permette di gestire tutti i processi di ETL Basato sui progetti di Business Intelligence di tipo Integration services Project SQL Server

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Processi di Sviluppo Agile Origini dello Sviluppo Agile Proposta di un gruppo di sviluppatori che rilevava una serie di criticità degli approcci convenzionali: Troppa rigidità dei

Dettagli

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS Basi di Basi di (Sistemi Informativi) Sono una delle applicazioni informatiche che hanno avuto il maggiore utilizzo in uffici, aziende, servizi (e oggi anche sul web) Avete già interagito (magari inconsapevolmente)

Dettagli

Corso di Amministrazione di Reti A.A. 2002/2003

Corso di Amministrazione di Reti A.A. 2002/2003 Struttura di Active Directory Corso di Amministrazione di Reti A.A. 2002/2003 Materiale preparato utilizzando dove possibile materiale AIPA http://www.aipa.it/attivita[2/formazione[6/corsi[2/materiali/reti%20di%20calcolatori/welcome.htm

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

Programmazione a Oggetti Modulo B

Programmazione a Oggetti Modulo B Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione

Dettagli

Una metodologia di progettazione di applicazioni web centrate sui dati

Una metodologia di progettazione di applicazioni web centrate sui dati Una metodologia di progettazione di applicazioni web centrate sui dati A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 1 / 2 0 1 2 Progettazione logica di un sito web centrato sui dati Si

Dettagli

Candidato: Luca Russo Docente: Prof. Raffaele Montella. 27 Marzo 2013

Candidato: Luca Russo Docente: Prof. Raffaele Montella. 27 Marzo 2013 e di e di Candidato: Luca Russo Docente: Corso di laurea in Informatica Applicata Facoltá di Scienze e Tecnologie Programmazione su Reti 27 Marzo 2013 Traccia d esame Sviluppare multitier con disaccoppiamento

Dettagli

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,

Dettagli

Implementazione di MVC. Gabriele Pellegrinetti

Implementazione di MVC. Gabriele Pellegrinetti Implementazione di MVC Gabriele Pellegrinetti 2 Come implementare il pattern Model View Controller con le tecnologie JSP, ASP e XML Implementazione del pattern MVC in Java (JSP Model 2) SUN è stato il

Dettagli

La Metodologia adottata nel Corso

La Metodologia adottata nel Corso La Metodologia adottata nel Corso 1 Mission Statement + Glossario + Lista Funzionalià 3 Descrizione 6 Funzionalità 2 Schema 4 Schema 5 concettuale Logico EA Relazionale Codice Transazioni In PL/SQL Schema

Dettagli