Estratto del documento

Tali regole potrebbero richiedere dati aziendali critici. I dati e le regole sono strettamente legati,

insieme si chiamano Entità.

Il livello è la distanza tra input e output.

Le Entità hanno accesso ai dati e hanno dentro delle policy.

6) Principi clean dell’architettura del software: principali componenti dell’architettura.

Policy, Entità, Casi d’Uso che sono una descrizione del modo in cui viene utilizzato un sistema

automatizzato. Contengono: input/output utente e le fasi di elaborazione.

7) Che cosa è una architettura del software e quali possono essere degli esempi di stili

architetturali.

L'architettura del software è la forma data al sistema da chi lo costruisce. Il suo scopo è

facilitare: lo Sviluppo, la Distribuzione, il Funzionamento e la Manutenzione. Il suo obbiettivo è

supportare il ciclo di vita del sistema. Stili Architetturali: Client-Server, Layered, (pipes and

filters), Microkernel, Service based, Event driven, Microservice, Serverless, …

8) Stili architetturali:pipes and filters, client server, layered, microkernel, event driven,

microservizi, service based e serverless.

Pipe and Filters: Sistema di flusso di dati per semplici sistemi. Pipe: flusso unidirezionale di

info. Filters: sono autonomi, indipendenti da altri filtri e senza stato, progettati per eseguire un

singolo compito specifico. Ci sono 4 tipi: Producer (inizio), Transformer (elaborazione), Tester

(scarto pass-through), Consumer (fine).

Client-Server: il Client richiede un servizio, il Server accetta la richiesta del Client, raccoglie le

info, elabora, genera la soluzione e la dà al Client, il Client e il Server comunicano tramite un

Mezzo di comunicazione.

Layered: Componenti Tecnicamente partizionati in strati logici orizzontali isolati e comunicano

solo con quello sopra e sotto. Di solito sono 4: Prestazioni, Aziendale, Persistenza, Database.

Microkernel: ha un piccolo sistema centrale per regole aziendali generali, con attaccati i "Plug-

in" che portano funzionalità e sono indipendenti e autonomi.

Event driven: È formato da componenti di "elaborazione eventi" disaccoppiati che ricevono,

elaborano gli eventi in modo asincrono distribuito. L’architettura reagisce a una situazione. C'è

un Orchestratore che indirizza le richieste in modo deterministico e sincrono ai vari "Processori

di richiesta" che le gestiscono e leggono/scrivono le info sul database e sono: Broker per

controllo dinamico sull'elaborazione o Mediatore per controllo sul flusso del processo.

Microservice: Ogni componente viene distribuita come unità separata e indipendente

implementata con pipe semplice con pipe. Ogni servizio modella un flusso. C’è un

partizionamento estremo del dominio.

Service based: Ha 3 macro-livelli: UI, Servizi Remoti a grana grossa (parte dell'applicazione)

detti "Servizi di Dominio", Database Monolitico condiviso.

Serverless: Incorpora servizi di terzi nel cloud per gestire la parte del server. Oppure quando la

parte del server viene eseguita in contenitori di elaborazione stateless di terzi.

Design Characteristics and Metrics

1) In che modo può essere descritta e caratterizzata la progettazione di un software?

Attraverso le metriche software che servono per valutare oggettivamente il software pur

rimanendo il giudizio umano permane.

2) Cosa si intende per metrica del software, quali sono i limiti nell’utilizzare metriche per

caratterizzare i software e quali tipi di metriche possono essere utilizzate.

Una metrica software rappresenta una misura quantitativa del grado in cui un sistema,

componente o processo possiede una proprietà o caratteristica definita. I limiti cono

l’inaccuratezza delle metriche tradizionali e la non linearità del codice o come la McCabe

potrebbero non essere misure assolute. Le tipologie sono: Del Prodotto cioè metriche su un

risultato intermedio o finale, Del Processo cioè sui metodi, tecniche e strumenti,

implementazioni usati, Del Progetto cioè sul tempo, budget e gestione.

3) Cosa si intende per analisi statica e dinamica del software.

L’analisi Statica: è sul codice scritto: linee di codice, livello di nidificazione, Complessità

Ciclomatica, Complessità di Halstead, Accoppiamento, Coesione, Duplicazione di Codice,

Punti Funzione.

L’analisi Dinamica: cioè come si comporta il sistema: Copertura del codice, Bug per riga,

Utilizzo delle funzionalità.

4) Caratteristiche delle misure basate:

a) Sul conteggio delle linee di codice.

LOC n° linee di codice

NLOC n° linee di codice senza commenti

CLOC/LOC (linee commento diviso linee codice) dice quanto è stato commentato

SLOC n° linee esclusi commenti e righe vuote

CLOC n° linee commenti

NCLOC n° linee esclusi commenti, vuote, intestazioni, pié di pagina, parentesi graffe (corpo

funzioni)

LLOC n° linee logiche (istruzioni)

BLOC n° di linee vuote

Svantaggi: NON considera la funzionalità e la complessità, codice prolisso, dipende

linguaggio usato

b) Sul livello di innestamento del codice.

comprende chiamate, livelli (le parentesi nell'espressioni matematiche), blocchi (if, while),

classi e funzioni nidificate. Nidificato significa profondo, cioè più difficile da leggere (più lo è

e peggio è)

NL livello nidificazione

LoopNL livello nidificazione in un ciclo

NLMean livello Medio nidificazione

NL#+ n° righe oltre un livello di nidificazione (NL4+, NL5+)

c) Sulla complessità del codice (Halstead e complessità ciclomatica di Mc Cabe).

Complessità ciclomatica: Attraverso Diagrammi rappresentanti flussi (Activity o State

Machine), McCabe = E - N + 2P dove E n° archi, N n° nodi, P n° componenti collegate (di

solito 1).

Complessità di Halstead: si basa sulla complessità lessicografica sulle relazioni tra

operatori (esegue azione) e operandi (partecipa all'azione). Svantaggi: NON considerate la

struttura, la logica e la progettazione

Assegnato: n1 n° operatori, n2 n° operandi, N1 somma occorrenze n1, N2 somma

occorrenze n2 (anche cicli)

Vocabolario n := n1 + n2

Lunghezza N := N1 + N2

Volume V := N * (Log2 n)

Lunghezza Calcolata := n1 log2 n1 + n2 log 2 n2

Difficoltà D := (n1/2) * (N2/n2)

Sforzo E := V * D

Tempo T := E/18 sec

n° Bug consentiti = E (2/3)/3000

5) Quali sono i problemi generati dalla duplicazione del codice.

Il “copia e incolla” codice, causato da sviluppo indipendente, violano il Principio DRY (cioè non

ripetere). Più ci sono parti copiate più è difficile la manutenzione ed è difficilissimo rintracciare

le parti copiate. La Ricerca avviene con: Corrispondenze Sintattiche, Token e Abstract Syntax

Tree (AST), …Tipologia di duplicazione: pezzi codice uguali, pezzi sintatticamente uguali,

pezzi uguali con modifiche, pezzi che eseguono stesso calcolo.

6) Come si possono misurare le relazioni tra i moduli del software.

Flusso di informazioni Henry-Kafura: fan_IN n° di info in ingresso, fan_OUT n° di info in uscita

Cp=(fan_IN*fan_OUT)^2 è Complessità del modulo del Programma p

Card and Glass: Complessità Strutturale del modulo m è S_m= fan_OUT^2 ; P_m n° variabili

(uscita o ingresso) nel modulo m; Complessità dei Dati è D_m=P_m/(fan_OUT + 1) ;

Complessità del Sistema P_m=S_m+D_m

7) Cosa si intende e come si descrive la coesione e l’accoppiamento dei moduli di un

software.

Accoppiamento: (è un principio di dipendenza) è il grado di dipendenza inter-modulare. Ci

sono 2 tipi: Efferente, quanto dipende dagli altri e Afferente, quanti gli altri dipendono da lui. Si

misura con Fenton e Melton. Ma si può misurare anche con Flusso di informazioni Henry-

Kafura e con Card and Glass.

Coesione: (è un principio di dipendenza) è il grado di dipendenza intra-modulare. Ci sono 2

tipi: Afferente, n° responsabilità interne e Efferente, n° dipendenze interne. Si misura con

Program Slice-Based and Data Slice-Based. Ma si può misurare anche con McCabe e

Halstead.

8) Quali sono le principali misure che caratterizzano un software costruito con un

linguaggio Object Oriented (CK metrics).

Nelle Metriche di OOP analizzano come le classi sono correlate e interagiscono tra loro. Si

usano Metriche CK (Chidamber e Kemerer) basate su manutenibilità, riusabilità, validità teorica

e empirica. Si basa su: Metodi ponderati per classe (WMC), Profondità dell'albero ereditario

(DIT), Numero di sottoclassi (NOC), Accoppiamento tra classi di oggetti (CBO), Risposta per

una classe (RFC), Mancanza di coesione nei metodi (LCOM).

Implementation

1) Che cosa si intende per fase di implementazione e quali sono le caratteristiche di questa

fase? In che modo le caratteristiche si influenzano e quando assumono una particolare

importanza? Che importanza è opportuno dare all’ottimizzazione del codice?

La fase di implementazione è l'atto di trasformare il progetto dettagliato in un programma in un

linguaggio di programmazione. Le caratteristiche di questa fase sono: Leggibilità, aiuta la

manutenibilità e la correttezza; Tracciabilità, aiuta la verifica e la validazione; Completezza,

garantisce il giusto comportamento; Manutenibilità adegua ai cambiamenti; Prestazioni

importanti per i sistemi in tempo reale o con vincoli di risorse. Le caratteristiche si influenzano

reciprocamente (anche in conflitto). Ad esempio, l'ottimizzazione può ridurre la leggibilità e la

manutenibilità. Pertanto, bisogna trovare equilibrio. L'ottimizzazione bisognerebbe farla dopo

aver misurato. L'ottimizzazione ha bassa importanza, a meno di soddisfare i requisiti non

funzionali.

2) Nozione dello standard ISO/EIC 25010.

Definisce un modello di qualità per i software (prodotti e in uso). Il prodotto ha 8 caratteristiche:

idoneità funzionale, prestazioni, compatibilità, usabilità, affidabilità, sicurezza, manutenibilità e

portabilità. In uso ha 5 caratteristiche: efficacia, efficienza, soddisfazione, libertà dal rischio e

copertura del contesto. Lo standard ha anche delle metriche per la qualità interna, esterna o in

uso.

3) Cosa si intende per stile di programmazione?

È il modo in cui viene scritto e organizzato il codice, seguendo convenzioni e regole per

migliorare la leggibilità, la manutenibilità e la qualità. Riguarda: i nomi, la formattazione, la

struttura, i costrutti e librerie e tecniche specifiche.

4) Come possono essere classificati i commenti?

Sono classificati in 6 tipi:

Spiegazione: spiegano in linguaggio umano;

Ripetizione: da evitati possono essere obsoleti o sbagliati;

Anteprima
Vedrai una selezione di 3 pagine su 10
Lista domande Ingegneria del software con risposte Pag. 1 Lista domande Ingegneria del software con risposte Pag. 2
Anteprima di 3 pagg. su 10.
Scarica il documento per vederlo tutto.
Lista domande Ingegneria del software con risposte Pag. 6
1 su 10
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher nicolo.cazzato di informazioni apprese con la frequenza delle lezioni di Ingegneria del software e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Modena e Reggio Emilia o del prof Guerra Francesco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community