ingegneria software Flashcards
Nell’ambito della produzione del software, si descrivano le caratteristiche dei MODELLI EVOLUTIVI
I sistemi software evolvono nel tempo e i loro requisiti cambiano durante lo sviluppo, a volte il cliente riesce a definire solo obiettivi generali per il software ma non riesce a identificare requisiti dettagliati.I modelli evolutivi sono iterativi e caratterizzati in modo tale da consentire lo sviluppo di versioni sempre più complete del software.
POLIMORFISMO?descrivendone i VANTAGGI in abbinamento all’istanziamento dinamico (late binding)
Si parla di polimorfismo per creare metodi con lo stesso nome ma implementazioni differenti.
Il polimorfismo, abbinato all’istanziamento dinamico (late binding), permette a ciascun oggetto di rispondere a uno stesso messaggio in modo appropriato a seconda della classe da cui deriva.
Nell’ambito della progettazione di interfaccia utente (GUI), si spieghi cosa si intende per PROJECT STANDARD riportando alcuni esempi
Definisce degli standard per: Terminologia, metafore e icone, caratteristiche delle finestre.
Il project standard ha l’obiettivo di agevolare l’utilizzo da parte dell’utente.
Alcune priorità consigliate, ad esempio, sono:
-allargare i bottoni della window
-allargare solo un bottone
-usare un simbolo al posto del testo
-inserire la scelta nel menu
Si spieghi (indicando anche alcuni esempi) la differenza tra le fonti di costo ed i fattori di costo nell’ambito della MISURAZIONE DEL SOFTWARE
Le finti di costo sono i costi delle risorse per lo sviluppo del software: costo del personale tecnico, costo del personale di supporto, costo delle risorse informatiche e costi generali della struttura.
I fattori di costo sono: numero di istruzioni da codificare, capacità motivazione e coordinamento degli addetti allo sviluppo, complessità del programma e caratteristiche dell’ambiente di sviluppo.
Si elenchino i MECCANISMI DI ASTRAZIONE utilizzati durante il processo di analisi
I principali meccanismi di astrazione sono classificazione, generalizzazione, aggregazione e associazione.
- classificazione permette di raggruppare in classi a seconda delle proprietà.
- generalizzazione si fa alla relazione is-a che permette di astrarre le caratteristiche comuni fra più classi definendo superclassi.
- aggregazione esprime la relazione part-of.
- associazioni permettono di stabilire una connessione tra classi, tipicamente bidirezionale.
Nell’ambito della misurazione del software, si elenchino i principali fattori che ne determinano il COSTO DEL SOFTWARE
Nel ciclo di vita del software la misurazione serve a prevedere o stimare tempi di consegna, costo di lavorazione, qualità del prodotto.
La stima dei costi dipende, oltre dalle fonti di costo (costo delle risorse per lo sviluppo), anche da fattori di costo.
Nell’ambito delle INTERFACCE UTENTE, si spieghino brevemente le differenze tra i modelli multi-window, multi-document e multi-paned
Nel modello multi-window ci sono molte main window (ciascuna con un menu) e molte child windows (senza menu) possibili per ciascuna main window.(molto flessibile ma navigazione complessa)
Nel modello multi-document c’è una sola main window con menu, la top window guida una serie di documenti window e deve sempre rimanere aperta. (flessibilità inferiore ma più intuitivo)
Nel modello multi-paned c’è una window alla volta con o senza menu ed eventuali suddivisioni in aree.(non flessibile, usata per applicazioni self-service)
descrivere MODELLO A CASCATA
Il modello a cascata suggerisce un approccio sistematico e sequenziale lineare, in cui l’output di ogni fase rappresenta l’input della successiva; è inadeguato quando: i requisiti sono incerti o non noti durante le fasi iniziali del progetto, non permette di modificare i risultati delle fasi precedenti alla luce di errori riscontrati a posteriori e solo al termine del progetto si genera una versione funzionante del programma.
descrivere il MODELLO INCREMENTALE
Il modello incrementale è un modello iterativo che combina il modello a cascata a sottosistemi del prodotto finale producendo software a incrementi.
ognuna delle fasi produce un software funzionante.
descrivere MODELLO RAD
Il modello RAD è un modello [incrementale] che punta a un [ciclo di sviluppo molto breve], si tratta di un [adattamento del modello a cascata] dove l’obiettivo di accelerare lo sviluppo è raggiunto grazie a strategie costruttive fondate sull’uso di [componenti].
modello non modularizzabile.
caratteristiche dei MODELLI PRESCRITTIVI?
sono (modello a cascata, RAD, modello a spirale,…)
caratteristiche:
-approccio sequenziale
-pianificazione dettagliata
-rigore nei processi
-flessibilità limitata
-gli stadi del ciclo includo fasi di verifica.
-ultimo stadio di deployment della versione finale completa
Si elenchino e si descrivano brevemente i SEI CRITERI DI USABILITA’ di un’interfaccia utente
Per usabilità si intende l’efficacia, l’efficienza e la soddisfazione con cui determinati utenti eseguono determinati compiti.
I sei criteri dell’usabilità e loro obiettivi sono:
- veloce da usare.
- facile da imparare.
riduce gli errori, riduzione della percentuale degli errori incorreggibili.
- piacevole da utilizzare.
- facile da memorizzare.
- facile da navigare.
Si elenchino e si discutano brevemente 3 QUALITA’ DEL SOFTWARE
-facilità d’uso
-affidabilità software
-produttività = efficienza nella produzione software
Si illustri il PRINCIPIO DI MODULARITA’ commentandone i benefici sullo sviluppo del software
La modularità ha la capacità: di scomporre un sistema complesso in parti più semplici, di comporre un sistema complesso a partire dai moduli esistenti, di capire un sistema in funzione delle sue parti e di modificare un sistema modificando solo un piccolo insieme delle sue parti.
Tutti i servizi devono essere dello stesso modulo.
Ogni modulo è indipendente.
Si illustrino brevemente le differenze di METODI DI ANALISI orientata agli oggetti, agli stati e alla funzioni
Nell’analisi orientata agli oggetti ci si basa sull’identificazione degli oggetti e sulle interrelazioni tra loro.
L’obiettivo dell’analisi orientata alle funzioni è rappresentare il sistema come insieme di flussi informativi, una rete di processi che trasformano i flussi informativi.
Nell’analisi orientata agli stati abbiamo diversi stati operativi del sistema che mutano attraverso le transizioni di stato.
Si illustrino brevemente le caratteristiche fondamentali di UNIFIED PROCESS
(il modello up è un modello prescrittivo)
-approccio ITERATIVO ED INCREMENTALE
-architettura centrale
- model-based
- GUIDATO DAI CASI ‘USO
Si definisca la QUALITA’ DEL SOFTWARE RIUSABILITA’ un software è riusabile se può essere usato, in tutto o in parte, per costruire nuovi sistemi e si spieghi in quali modi essa è incoraggiata dal paradigma a oggetti
un software è riusabile se può essere usato, in tutto o in parte, per costruire nuovi sistemi.
L’APPROCCIO AD OGGETTI, grazie all’ereditarietà, permette di aggiungere nuove caratteristiche a un sistema riducendo i costi di manutenzione (estendibilità) e di costruire nuove funzionalità a partire dall’esistente (riusabilità). (a differenza dell’APPROCCIO FUNZIONALE)
Si spieghi cos’è un nodo in un diagramma di deployment.
Un nodo rappresenta un tipo di risorsa computazionale su cui i MANUFATTI possono essere dislocati per l’esecuzione.
Un MANUFATTO rappresenta un’entità concreta nel mondo reale.
QUALITA’ del software: RIUSABULITA’,
La riusabilità è una qualità interna relativa al prodotto, un software è riusabile se può essere usato, in tutto o in parte, per costruire nuovi sistemi.
Si spieghi il significato del PRINCIPIO DI ANTICIPAZIONE dei cambiamenti nell’ingegneria del software
la capacità di prevedere i cambiamenti a cui il software sarà sottoposto durante il suo ciclo di vita determina la sua manutenzione e la sua riusabilità.
Lo scopo è di rendere il progetto facilmente modificabile.
Si spieghi cos’è uno STEREOTIPO in UML e si diano tre esempi di stereotipi predefiniti
Uno stereotipo è un meccanismo di estendibilità, permette di introdurre nuovi elementi di modellazione a partire da quelli esistenti.
Alcuni esempi di stereotipi predefiniti utilizzati sono “l’umarello” e stringhe tra «», come include ed extend.
Si illustri il ruolo dello STUDIO DI FATTIBLITA’ all’interno del ciclo di vita del software, precisandone obiettivi e risultati
Nella FASE DI PIANIFICAZIONE vengono definiti gli obiettivi, i fabbisogni e viene condotto lo studio di fattibilità.
Quest’ultimo è necessario per individuare possibili strategie di attuazione e avere una prima idea dei costi, dei benefici e dei tempi.
Si spieghi cos’è un TEMPLATE in UML e in che modo si rappresenta
Un template è un concetto che consente di creare classi o tipi parametrici. Questo permette di definire classi, operazioni o tipi che possono essere parametrizzati con uno o più parametri. I template in UML sono noti anche come “generics” o “template classes”.
Questo favorisce il riuso del codice e la creazione di componenti software più generici e flessibili.
Si spieghi cos’è un PACKAGE e si illustrino struttura e utilizzo dei DIAGRAMMI del package
Un package è un raggruppamento di elementi del modello semanticamente correlati.
Il diagramma mostra i package e le loro relazioni di dipendenza, contenimento e specializzazione.
Esistono quattro tipi di dipendenza tra package: use, import, access, trace.
Si definisca il numero ciclomatico del grafo di controllo di una procedura, si enunci il teorema di Mills.
poi se il programma ha procedure al suo interno?
Il teorema di Mills: v(G)=d+1; dove v(G) è il numero ciclomatico del grafo G modificato, d è il numero dei punti di decisione del programma.
Se il programma ha procedure al suo interno, il numero ciclomatico dell’intero grafo è dato dalla somma dei numeri ciclomatici dei singoli grafi indipendenti v(G)=e-n+2p; dove e sono gli archi, n i nodi e p il numero di grafi (procedure) indipendenti.
Si spieghi la differenza tra un SOFTWARE CORRETTO e un SOFTWARE ROBUSTO
Un software corretto rispetta le specifiche di progetto mentre è robusto se si comporta in modo ragionevole anche in circostanze non previste dalle specifiche di progetto.
(la robustezza tratta pure i casi non trattati)
Spiegare il doppio significato e utilizzo della relazione di RAFFINAMENTO/REALIZZAZIONE in UML
Questa relazione è utilizzata per definire una relazione tra un elemento più astratto (l’elemento da raffinare o realizzare) e un elemento più concreto (l’elemento raffinato o realizzato).
1)la relazione di raffinamento/realizzazione è utilizzata per indicare che una classe (o un altro elemento) implementa un’interfaccia definita da un altro elemento. Ad esempio, una classe può “realizzare” un’interfaccia.
2)Raffinamento di un caso d’uso o operazione: caso d’uso generico viene suddiviso in sottocasi d’uso
Si elenchino e si definiscano almeno due QUALITA’ DEL SOFTWARE relative al processo
Le qualità relative al processo riguardano i metodi utilizzati durante lo sviluppo del software e sono:
-robustezza,
-verificabilità
-produttività
-tempestività
-trasparenza.
( la tempestività misura la capacità del processo di produzione del software di rispettare i tempi di consegna)
( Un processo è trasparente se permette di capire il suo stato attuale e tutti i suoi passi)
Si spieghi cos’è un INTERFACCIA in UML e come può essere messa in relazione con le classi che la implementano e quelle che la usano
Un interfaccia è un insieme di funzionalità pubbliche identificate da un nome.
Non ha alcuna specifica di struttura interna; è una classe astratta senza attributi e senza associazioni ma solo operazioni astratte (senza implementazione).
Un’altra classe che usa l’interfaccia può essere collegata ad essa da una freccia di dipendenza («use»).
Si definiscano le seguenti QUALITA’ software: EFFICIENZA, PORTABILITA’, INTEROPERABILITA’
Sono tutte qualità ESTERNE RELATIVE AL PROGETTO, quindi basate sulle caratteristiche stesse del software.
(La portabilità si presenta se il software può funzionare su più piattaforme.
L’interoperabilità fa riferimento all’abilità di un sistema di coesistere e cooperare con altri sistemi)
Si illustri il concetto di POWERTYPING in UML e se ne dia almeno un esempio
il powertyping è una forma di tipizzazione avanzata che consente di definire relazioni tra i tipi e gli oggetti in modo più ricco di significato.
es: dati animali e diete. dieta divisa in sottoclasssi. ogni animale associato ad ogni sottoclasse di dieta.
Si illustri in termini generali il concetto di DIPENDENZA IN UML e si diano almeno tre esempi di stereotipi di dipendenza
In generale, A dipende da B quando una variazione in B può comportare una variazione in A. Nelle classi una dipendenza indica che una classe cliente dipende da alcuni servizi di una classe fornitore.
può essere generica.
esempi di stereotipi di dipendenza:
-extend
-include
-import
Si elenchino e si illustrino brevemente tutte le FASI DEL CICLO DI VITA del software
Pianificazione: Definizione degli obiettivi e dei requisiti del progetto.
Analisi dei Requisiti: Raccolta, analisi e documentazione dei requisiti del software.
Progettazione: Creazione di un design dettagliato del sistema.
Implementazione: Scrittura del codice sorgente del software.
Testing e Validazione: Verifica e validazione del software attraverso una serie di test.
Rilascio: Distribuzione del software agli utenti finali.
Manutenzione e Miglioramento: Correzione di bug, aggiornamenti e miglioramenti continui.
Si illustri il concetto di EREDITARIETA’ nel paradigma a oggetti, spiegandone vantaggi ed eventuali svantaggi
L’ereditarietà basa la definizione e implementazione di una classe su quelle di altre classi.
La classe generalizzante è detta superclasse, quella specializzante sottoclasse o classe derivata.
Ciascuna sottoclasse eredita dalla sua superclasse la struttura e i comportamenti
Si illustrino le diverse tipologie di TECNICHE DI VERIFICA DEL SOFTWARE STATICHE
Le tecniche possono essere dinamiche o statiche.
Nelle tecniche statiche o di analisi, il corretto funzionamento del sistema viene verificato analizzando direttamente la struttura dei moduli e il codice che li realizza.
-code walkthrough
-code inspection.
Si illustrino le diverse tipologie di TECNICHE DI VERIFICA DEL SOFTWARE DINAMICHE
Nelle tecniche dinamiche o di testing, il corretto funzionamento del sistema viene controllato sulla base di prove sperimentali.
si divide in
-testing in the small
-testing in the large
descrivere come funzia testing in the small(TECNICA DINAMICA DI VERIFICA DEL SOFTWARE)
Il “testing in the small” è una tecnica dinamica di verifica del software che si concentra sull’esame delle singole unità di codice, come funzioni, procedure o classi.
fa uso di “test-cases”
Si illustri il concetto di INCAPSULAMENTO nel paradigma a oggetti, spiegandone pro ed eventuali contro
L’incapsulamento protegge l’oggetto nascondendo lo stato dei dati e l’implementazione delle sue operazioni. Gli oggetti incapsulano gli attributi e le operazioni che li possono modificare.
pro: implementazione nascosta.
contro: complessità.
descrivere come funzia testing in the big(TECNICA DINAMICA DI VERIFICA DEL SOFTWARE)
Il “testing in the big” si concentra sulla verifica del sistema software nel suo insieme, sul comportamento complessivo del software.
Questa tecnica mira a identificare comportamenti indesiderati a livello di sistema, piuttosto che a livello di singole unità di codice.
Si spieghi cos’è il METODO COCOMO e come può essere utilizzato
Il COCOMO è acronimo di COnstructive COst MOdel.
Si calcola una stima iniziale dei costi di sviluppo in base alla dimensione del software da produrre, poi la si migliora sulla base di un insieme di parametri.
La dimensione viene spesso misurata in base a linee di codice sorgente.
Si illustrino i principi fondamentali del MODEL-DRIVEN DEVELOPMENT spiegando in particolare il ruolo svolto dai diversi modelli
Il model-driven development è un tipo di sviluppo in cui si creano modelli formali del software che vengono poi fatti evolvere mentre il sistema viene progettato e implementato.
I modelli diventano la guida del processo di sviluppo.
[Infatti, prevede l’uso di strumenti per la generazione automatica del codice e dei test case a partire dai modelli]
Si descrivano brevemente le caratteristiche dei diversi tipi di MANUTENZIONE DEL SOFTWARE
La manutenzione può essere correttiva, adattiva, evolutiva o perfettiva. Le prime due avvengono nella fase di manutenzione quando durante il funzionamento vengono rilevati errori.
Le ultime due avvengono nella fase di evoluzione del software quando necessitano nuove funzionalità o migliorie all’operatività.
vantaggio TECNICA DI PROTOTIPAZIONE USA E GETTA
- alcune caratteristiche del sistema possono non essere state considerate
- non c’è specifica per il mantenimento a lungo termine
- il prototipo non è strutturato bene e sarebbe difficile da mantenere