|
Appunti informatica |
|
Visite: 1029 | Gradito: | [ Picolo appunti ] |
Leggi anche appunti:Federico FagginFederico Faggin E' conosciuto in tutto il mondo per quella sua intuizione che Supermercati e informaticaSUPERMERCATI E INFORMATICA Indice: Ø Introduzione Ø Cenni Il dispositivo PIA Periferal Interface AdapterIl dispositivo PIA Periferal Interface Adapter I campi relativi alla configurazione |
Definizioni di Software
Un insieme di artefatti che lo compongono, prodotti durante il suo sviluppo; un sistema software, essendo rivolto ad altri utenti, dovrà essere usabile, portabile, affidabile, etc
Insieme di programmi, procedure, regole, e ogni altra documentazione relativa al funzionamento di un sistema di elaborazione dati (from IEEE)
Caratteristiche del Software:
- Il Software è intangibile.
Il Software si sviluppa o si struttura, non si fabbrica nel senso tradizionale.
- Il Software è facile da riprodurre.
- Il Software non si consuma ma si deteriora a causa delle modifiche.
Categorie di Software:
- Software Personalizzato(Custom): per uno specifico cliente.
- Software Generico(General): venduto sul mercato.
- Software Embedded o Stand alone: per uno dato hardware con funzionalità specifiche.
- Applicazioni Web: applicazioni accessibili dalla rete tramite browser.
- Software di sistema: programmi al servizio di altri programmi.
- Software a tempo reale(real time): per il controllo e monitoraggio.
- Data processing software: usati per supportare vari business; fondamentale l'accuratezza e la sicurezza dei dati.
Definizione di Ingegneria del Software
- (0) disciplina ingegneristica che si occupa di tutti gli aspetti relativi allo sviluppo del sofware.
- (1) applicazione di un approccio sistematico, disciplinato, quantificabile allo sviluppo, esercizio e manutenzione del software; cioè, l'applicazione dell'ingegneria al software.
- (2) studio degli approcci di cui al punto (1) (from IEEE)
- Processo Software: un insieme di fasi ed attività aventi per obiettivo lo sviluppo o l'evoluzione di un sistema software.
- Modello di Processo Software (talora detti ancora CVS): Una descrizione semplificata del processo software, osservato da un determinato punto di vista.
- Metodi: Approcci strutturati o tecniche per sviluppare software di qualità, a costi contenuti.
- Strumenti: Sistemi software usati per aiutare le attività dei processi software(CASE).
- E ancora : Standard, Normative, Linee Guida, Principi,
Obiettivo dell'Ingegneria del Software è di definire metodi e procedure per lo sviluppo del software, utili ad ottenere sistemi di grandi dimensioni, di alta qualità, a basso costo, ed in breve tempo.
Software Life Cycle: Il periodo di tempo che inizia quando un prodotto software è stato concepito e termina quando il prodotto non è più disponibile per l'uso. Il ciclo di vita del software tipicamente include: fase di concepimento, fase di requisiti, fase di progettazione, fase di implementazione, fase di test, la fase di rilascio e installazione, fase di mantenimento, e talvolta, fase di pensionamento. Nota: Queste fasi possono sovrapporsi o essere eseguita in modo iterativo. (IEEE 1990)
Software Development Cycle : Il periodo di tempo che inizia con la decisione di sviluppare un prodotto software e termina quando il prodotto viene consegnato. Questo ciclo comprende in genere una fase di requisiti, la fase di progettazione, fase di implementazione, la fase di prova, e talvolta la fase di rilascio e installazione. (IEEE 1990)
Software Life Cycle: un frame work contenente i processi, attività, compiti e per lo sviluppo, il funzionamento e la manutenzione di un prodotto software, si considera la vita del sistema dalla definizione dei requisiti alla cessazione del suo uso. (IEEE 1996)
Le Attività strutturali fondamentali:
. Comunicazioni: Comunicazioni con cliente/stakeholders per la raccolta dei requisiti.
. Pianificazione: Descrizione operazioni, rischi, risorse necessarie, piano di lavoro.
. Modellazione : Costruzione di Modelli per specificare requisiti software e progettuali.
. Costruzione: Codifica e collaudo.
. Messa in Esecuzione: Rilascio al cliente e raccolta feedback.
OR
. Specifica: definizione di ciò che il sistema dovrà fare e dei vincoli di progettazione
. Sviluppo: progettazione e programmazione
. Convalida: si verifica che il software sia esattamente ciò che il cliente richiede
. Evoluzione: si modifica il software per adeguarlo a requisiti dell'utente e del mercato che cambiano.
Modelli del processo di sviluppo del software:
Modello a Cascata (Waterfall models)
-- La attività(tasks) da seguire sono ben definite.
-- Gli output di ciascuna attività(deliverables) precisamente individuati.
-- La fine di ogni attività è un punto rilevante(milestone) del processo.
-- Il modello pero assume che i requisiti possano essere congelati alla fine della fase di specifica, ma ciò è impensabile per un sistema i cui requisiti non siano ben chiari neanche al committente.
Il cliente deve essere paziente. Solo alla fine dell'arco temporale del progetto si genera una versione.
Sviluppo Evolutivo
I modelli evolutivi sono modelli iterativi che tengano conto del continuo evolvere del prodotto SW. Sono caratterizzati in modo da perfezionare il software attraverso varie versioni del software.
Sviluppo Evolutivo - Esplorativo
L'obiettivo è di lavorare col cliente per esaminare i requisiti iniziali e farli evolvere fino al sistema finale. Dovrebbe partire da pochi requisiti ben compresi e aggiungere nuove
caratteristiche proposte dal cliente.
. Vantaggi: Rapido feedback e possibilità di far cambiare I requisiti
. Problemi: Mancanza di visibilità del processo; i sistemi diventano spesso mal strutturati (per i continui cambiamenti);
. Applicabilità: A sistemi interattivi di piccole e medie dimensioni o per sviluppare alcune parti di sistemi di grandi dimensioni.
Sviluppo Evolutivo - Prototipale
Il prototipo è un mezzo attraverso il quale si interagisce con il committente per accertarsi di aver ben compreso le sue richieste, per specificare meglio tali richieste, per valutare la
fattibilità del prodotto. Dopo la fase di utilizzo del prototipo si passa alla produzione della versione definitiva del SS mediante un modello che, in generale, è di tipo waterfall.
2 tipi di prototipazione:
mock-up: produzione completa dell'interfaccia utente. Consente di definire con completezza e senza ambiguità i requisiti.
breadboard: implementazione di sottoinsiemi di funzionalità critiche del SS, non nel senso della fattibilità ma in quello dei vincoli pesanti che sono posti nel funzionamento del SS (carichi elevati, tempo di risposta, ), senza le interfacce utente.
Sviluppo Iterativo
La mutevolezza ed instabilità dei requisiti impongono di adottare processi di sviluppo ciclici, in cui il software viene consegnato in una serie di incrementi, prodotti in vari cicli di
processo (iterazioni) in cui si ritorna sulle fasi già condotte.
Sviluppo Iterativo - Sviluppo Incrementale
Vi sono situazioni in cui è l'ampiezza stessa dell'attività di sviluppo che preclude un processo puramente lineare. Inoltre, vi può essere un urgente bisogno di fornire all'utente un insieme limitato di funzionalità software con una certa rapidità. La consegna sono eseguiti per incrementi ogni incremento rilascia parte delle funzionalità richieste.
> Ai requisiti Utente vengono associati livelli di priorità e quelli a priorità maggiore vengono rilasciati con I primi incrementi.
> Una volta partito lo sviluppo di un incremento, I relativi requisiti devono essere congelati, mentre I requisiti coinvolti in incrementi successivi possono continuare ad evolvere.
> I servizi comuni possono essere implementati all'inizio del processo, o quando una funzione è richiesta da un dato incremento.
. Vantaggi: Clienti non devono aspettare il sistema completo per la consegna, ma possono disporre al più presto dei requisiti più critici, attraverso I primi incrementi. I primi incrementi possono essere usati per aiutare a definire i requisiti degli incrementi successivi. Si riduce il rischio di un fallimento totale del progetto. I servizi a più alta priorità saranno anche testati più intensamente degli altri.
Problemi: Gli incrementi devono essere relativamente piccoli ma può essere difficile predisporre i requisiti in incrementi della dimensione giusta. I servizi comuni (richieste da più requisiti) potrebbero non essere implementate presto senza avere ben chiari tutti i requisiti.
Sviluppo ad Implementazione Incrementale
Sviluppo Iterativo - Sviluppo a Spirale (di Boehm)
Il processo è rappresentato come una spirale, piuttosto che una sequenza di attività con retroazioni. Ogni giro nella spirale rappresenta una fase del processo. Non prevede fasi prefissate a priori (come la specifica o il design) ma i cicli sono definiti in base al caso specifico. C'è una esplicita gestione dei rischi che vengono valutati e risolti durante tutto il processo.
(1) Determinazione degli obiettivi : Definizione di obiettivi, vincoli e piano di gestione della fase.
(2) Valutazione e riduzione del rischio: Si analizzano I rischi della fase e si scelgono le attività necessarie a gestire I rischi.
(3) Sviluppo e Convalida: Si sceglie un modello di sviluppo per il sistema tra I modelli generici.
(4) Pianificazione: Il progetto viene revisionato e si decide se continuare con un nuovo giro della spirale. Si pianifica tale giro.
Sviluppo basata sul Riuso (CBSE)
Sviluppo basato sul riuso sistematico, integrando componenti esistenti o interi sistemi COTS (Commercial off the shelf).
Fasi del Processo: Specifica dei requisiti; Analisi dei componenti; Modifica dei Requisiti (specificando i componenti disponibili); Progettazione con riuso; Sviluppo e Integrazione.
Sviluppo basato su Metodi Formali
Basato sul formalismo matematico. Partendo da i requisiti formalizzati matematicamente, si trasformano automaticamente le specifiche in codice mantenendo la correttezza e la verifica è ottenuta implicitamente.
. Problemi: necessità di specifici skill (in linguaggi matematici); Impossibilità a specificare formalmente alcune parti; Difficoltà del cliente nella convalida dei requisiti.
. Applicabilità: Non adatti per sistemi di grandi dimensioni; Usati solo per parti critiche.
Appunti su: |
|