Operatore Informatico Giuridico Informatica Giuridica A.A 2003/2004 I Semestre Ciclo di vita del software Lezione 2 prof. Monica Palmirani Hardware e Software - prima definizione Hardware: parte fisica del computer costituita da parti elettroniche e meccaniche Firmware: insieme di microprogrammi registrati sulle memorie permanenti dei dispositivi elettronici, solitamente introdotti dal costruttore e cablati nell hardware Software: Insieme di programmi scritti in qualche linguaggio di programmazione eseguibili dal computer
Software - seconda definizione Istruzioni che eseguite da un computer svolgono una funzione prestabilita con prestazioni prestabilite - (programma) strutture dati mediante le quali i programmi trattano adeguatamente le informazioni - (schemi logici e fisici dei dati) documenti che descrivono le operazioni e l uso dei programmi - (documentazione tecnica e manuale utente) [R.S. Pressman,Principi di Ingegneria del software, McGraw-Hill 2000] Tipologia del software Software di base software al servizio di altri software sistema operativo: insieme di programmi che governano le funzioni e le risorse primarie del calcolatore esecuzione di programmi operazioni di ingresso/uscita gestione di file protezione rilevazione errori Software applicativo: dedicato ad uno scopo applicativo
Strati del software Utente Programmi applicativi Linguaggi e ambienti di programmazione Sistema operativo Firmware HARDWARE Tipologie di software software real-time - software dedicato alla sorveglianza, all analisi e all elaborazione di eventi esterni (rilevamento di temperature di una piastra di acciaio durante la lavorazione) software gestionale - elaborazione dei dati e dei processi aziendali - 70%-80% software scientifico - astronomia, calcolo parallelo, etc.
Tipologie di software software di Intelligenza Artificiale - basati su algoritmi non numerici - sistemi esperti, reti neruali, dimostratori di teoremi, etc. software embedded - programmi residenti in prodotti industriali (lavatirici, forno, termostati ambientali, etc.) software per PC - applicativi di office-automation (fogli elettronici, elaboratori di testi, etc.) software basato su WEB - B2B, B2C, portali, etc. Categorie di software Generici prodotti software standardizzati venduti sul mercato le specifiche vengono dettate dal mercato e dal produttore stesso Dedicati progetti ad hoc creati per un determinato cliente le specifiche vengono dettate dal cliente Prodotto vs. Progetto
Azioni Oggetti problema Schema di percorso: dal problema ai risultati Comprendere il problema ANALISI algoritmo PROGRAMMAZIONE software ELABORAZIONE risultati Elenco di istruzioni per ottenere la soluzione Tradurre la soluzione in un linguaggio comprensibile al calcolatore Algoritmo tradotto in un linguaggio eseguibile dal calcolatore Fase di esecuzione del programma da parte del computer Esempio Problema- Prelevare contanti in banca Analisi - si possono prelevare contanti in diversi modi:bancomat, mediante assegno, chiedendo un prestito, fare una rapina, etc. Algoritmo - si decide per il bancomat, si descrivono i passi operativi e le istruzioni che attivano il bancomat Elaborazione- esecuzione delle operazioni Risultati - i contanti
Algoritmo - definizione intuitiva Elenco preciso di operazioni, comprensibile da un esecutore, che definisce una sequenza finita di passi i quali risolvono ogni problema di un dato tipo (classe di problemi). algoritmo deriva dal nome di un matematico arabo - alkhuwarizmi vissuto nel nono secolo d.c. Esempio: operazioni necessarie per compiere una telefonata, per prelevare denaro dal bancomat, per iscriversi ad un esame, etc. Esempio - bancomat macro operazioni 1. Estrazione della tessera bancomat 2. Inserimento della tessera nell apposito macchinario 3. Scelta dell operazione da eseguire 4. Inserimento del codice segreto 5. Conclusione operazione 6. Prelievo tessera 7. Prelievo contanti
Algoritmo - definizione rigorosa Sequenza ordinata finita di passi, ripetibili e non ambigui, che se eseguita con determinati dati in ingresso (input) produce in uscita(output) dei risultati ovvero la soluzione di una classe di problemi dati algoritmo risultati Soluzione ad una classe di problemi Caratteristiche dell algoritmo Un algoritmo si suppone sempre che comunichi con l ambiente acquisendo dati e restituendo risultati Le operazioni di cui è composto l algoritmo si dicono istruzioni Ogni istruzione opera su dei dati o prodotti dall algoritmo stesso o acquisiti dall esterno
Produzione del Software il software si genera trasformando l algoritmo in un linguaggio di programmazione comprensibile ed eseguibile dal calcolatore poiché però il calcolatore comprende solo codice macchina (sequenza di zero e uno) sono nati linguaggi di alto livello che si interpongono fra il codice macchina e l algoritmo algoritmo Programma in linguaggio di alto livello Programma in linguaggio macchina comprensibile ma non eseguibile eseguibile Codice sorgente e oggetto Il programma scritto in linguaggio Assembler o in linguaggio di alto livello viene detto programma sorgente o CODICE SORGENTE Il programma sorgente è l input dato ai traduttori che producono in uscita il programma in linguaggio macchina o CODICE OGGETTO Codice SORGENTE TRADUTTORE Codice OGGETTO
Ingegneria del software Il termine viene coniato durante una conferenza NATO nel 1968 in Germania a Garmish - crisi del software - costi, controllo, governabilità, qualità, manutenzione La IEEE (1993) definisce gli ambiti dell ingegneria del software: (a) disciplina che regola in modo scientifico lo sviluppo, la gestione e la manutenzione del software, (b) studio delle strategie di cui al punto a). Insieme di passi che definiscono il percorso di creazione del software Strategia di base STUMENTI METODI PROCESSO QUALITA TOTALE Tools automatizzati di supporto ai metodi e ai processi -CASE Tecniche per governare i passi Motivazioni incrementare la qualità del software ossia rendere maggiormente industrializzato un processo che è ancora molto artigianale governare la complessità ossia non far fallire progetti di grandi dimensioni o di nuova concezione minimizzare i costi di produzione e manutenzione ossia consentire un facile intervento da parte di persone diverse dallo sviluppatore originario riciclare il software ossia riutilizzo di lavoro già fatto
Fasi del processo di sviluppo sw Analisi - analisi dei requisiti -3%* Progettazione - specifiche -8% Implementazione - sviluppo del codice -7% Validazione - collaudo -15% Installazione e documentazione 10% correzioni Modificazione - 67% del costo 10% adattamenti Smaltimento 50% nuove funzioni Modelli di processo Modello a cascata - le fasi elencate sono in stretta sequenza - 70 Modello prototipale - le fasi si intersecano e producono ciclicamente prototipi da sottoporre al cliente - usa e getta o esplorativa Modello incrementale - produce versioni intermedie di prodotto raffinabile fino alla versione finale Modello a spirare di Boehm - 88 ogni ciclo della spirale rappresenta una fase suddivisa per funzioni che mirano a controllare il rischio
Modello a cascata Modello prototipale
Modello incrementale Fase 3 Fase 2 Fase 1 Modello a spirale
Prodotti del processo A t t i v i t a D o c u m e n t i P r o d o t t i A n a lis i re q u is iti S tu d io d i fa ttib ilita, S c h e m a d i r e q u is it i D e f in iz io n e r e q u is it i D o c u m e n t i d e i r e q u is it i S p e c if ic a d e l s is te m a S p e c if ic h e f u n z io n a li, p ia n o d i a c c e t ta z io n e, D r a f t d e l m a n u a le u t e n te P r o g e t t o a r c h it e t tu r a le S p e c if ic a a r c h it e t t u r a le, p ia n o d i te s t in g d e l sistem a P r o g e t t o in t e r f a c c ia S p e c if ic a in t e r f a c c ia, p ia n o d i in te g r a z io n e P r o g e t t o d e t ta g lia t o, S p e c if ic a d e l p r o g e t t o, p ia n o d i te s t in g u n ita C o d if ic a C o d ic e d e l p r o g r a m m a T e s t in g d e lle u n it a R a p p o r t o s u l t e s t d e lle u n it a T e s t in g d e i m o d u li R a p p o r to s u l te s t d e i m o d u li T e s t in g d i in t e g r a z io n e R a p p o r to s u l te s i d i integrazione,m anuale T e s t in g d e l s is t e m a R a p p o r to s u i te s t d e l sistem a T e s t d i a c c e t ta z io n e S is t e m a f in a le e d o c u m e n t a z io n e Prodotti del processo e clausole contrattuali Studio di fattibilità - deve essere accettato dal cliente- nei casi di gara di appalto pubblica l AIPA indica lo schema da seguire e il documento diviene la base per comporre il capitolato tecnico Elenco dei requisiti di sistema - deve essere approvato dal clientedefinisce la base delle funzioni su cui si effettuerà il collaudo finale Specifiche di interfaccia - è bene farle firmare dal cliente Verbale di avanzamento lavori - deve essere prodotto dal fornitore e vidimato dal cliente al fine di documentare ritardi, modificazioni, integrazioni, etc. rispetto all elenco dei requisiti di sistema Verbale di collaudo finale - deve essere approvato dal cliente e solitamente è il passo che da vita al pagamento Manutenzione - è buona norma inserire una clausola di regolamentazione della manutenzione Documentazione tecnica e documentazione utente - occorre sempre richiederla - non sempre viene infatti fornita
Clausole per la tutela della prodotto marchio e logo proprietà - colui che è proprietario del bene uso - clausole che regolamentano l uso del bene differenziando anche la destinazione d uso (per ricerca, scopo di lucro, etc.) accesso - clausole che regolamentano l accesso ai dati connessi al bene (banche dati) rivendita/cessione - clausole che regolamentano la rivendita a terzi territorialità - clausole che regolamentano la territorialità geografica delle clausole sopra esposte modificazioni - clausole che regolamentano la modificabilità del software - personalizzazioni su cliente integrabilità - clausole che regolamentano la possibilità di integrare il software altri programmi Reverse engineering - inserire una clausola esplicita per evitare il reverse engineering = operazione che mediante dei tool software evince dal codice oggetto il codice sorgente all 80-90%