Ingegneria del Software: Principi fondamentali e modularità

Slide dall'Università degli Studi di Bari Aldo Moro su Ingegneria del Software: Principi dell'ingegneria del software. Il Pdf esplora concetti chiave come rigore, formalità, separazione degli interessi, astrazione e incrementalità, con esempi visivi di alta coesione e basso accoppiamento, utile per lo studio universitario di Informatica.

Mostra di più

53 pagine

Ingegneria del Software
Principi dell’ingegneria del software
Corso A: Danilo Caivano
Vita Santa Barletta
Corso B: Antonio Piccinno
Vita Santa Barletta
2
Caivano – Piccinno - Barletta | Il Software e L’Ingegneria del Software
2
Software Engineering Research LABoratory
2
Sommario
• Introduzione
• Principi fondamentali
1. Rigore e Formalità
2. Separazione degli Interessi
3. Modularità
4. Anticipazione del Cambiamento
5. Astrazione
6. Generalità
7. Incrementalità
• Esempio: produzione di un compilatore

Visualizza gratis il Pdf completo

Registrati per accedere all’intero documento e trasformarlo con l’AI.

Anteprima

Sommario dei Principi

  • Introduzione
  • Principi fondamentali
  1. Rigore e Formalità
  2. Separazione degli Interessi
  3. Modularità
  4. Anticipazione del Cambiamento
  5. Astrazione
  6. Generalità
  7. Incrementalità
  • Esempio: produzione di un compilatore

Software Engineering Research LABoratory Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 2

Introduzione ai Principi

Software Engineering Research LABoratory 3 Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 3

Principi dell'Ingegneria del Software

  • I principi formano le basi dei metodi, tecniche, metodologie e strumenti
  • Sette principi sono fondamentali in tutte le fasi dello sviluppo software: ❑ Produzione ❑ Manutenzione
  • La modularità e la pietra angolare della progettazione dei sistemi software

4 Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software Software Engineering Research LABoratory 4

Applicazione dei Principi

  • I principi descrivono proprietà desiderabili dei prodotti e dei processi in termini generali ed astratti
  • I principi sono applicabili in tutti i processi di sviluppo del software, indipendentemente da: ❑ Il contesto di sviluppo ❑ Il tipo di sistema da sviluppare ❑ L'ambiente di sviluppo ❑ L'ambiente target del sistema software
  • I principi si trasformano in pratiche attraverso metodi e tecniche ❑ Spesso i metodi e le tecniche sono confezionate in metodologie ❑ Le metodologie possono essere supportate dagli strumenti che potenziano gli sviluppatori

Software Engineering Research LABoratory 5 Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 5

Rappresentazione Grafica delle Relazioni

Principi dell'Ingegneria del Software si fondano su si fondano su Tecniche Metodi usano usano Metodologie supportano Strumenti Software Engineering Research LABoratory 6 Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 6

Rigore e Formalità

1 Software Engineering Research LABoratory 7 Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 7

Concetti di Rigore e Formalità

  • L'Ingegneria del Software è un'attività creativa, ma deve essere praticata sistematicamente
  • Il RIGORE è il giusto complemento alla creatività per aumentare la confidenza in tutto ciò che si sviluppa
  • Il Rigore è la coerenza con le pre-condizioni e con lo scopo del manufatto che si sta producendo oltre che con il metodo e le tecniche che si intendono utilizzare nella produzione ❑ Inflessibilità, esattezza, precisione assoluta
  • Esistono diversi livelli di rigore, quello più alto è la FORMALITÀ
  • Formalità è l'uso esclusivo di formalismi matematici per guidare lo sviluppo del software e per valutarlo

Software Engineering Research LABoratory 8 Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 8

Esempio di Prodotto Rigoroso

  • Precondizione ❑ 3 un Volo con un tempo di Durata prevista ❑ Il volo è classificabile come: Nazionale, Intracontinentale, Intercontinentale
  • Postcondizione ❑ Definiti i Servizi di Ristoro da erogare
  • Rigoroso ❑ Se Durata del Volo < 1hh: distribuire bevande ❑ Se Durata del Volo >1 hh e Tipo di Volo = Intracontinentale: Distribuire Bevande e Snack ❑ Se Durata del Volo >1hh e Tipo di Volo = Intercontinentale: Distribuire Bevande e Pranzo di Volo = Intercontinentale: ❑ Se Durata Volo > 8hh e Tipo Distribuire Bevande, Pranzo e Colazione. . Consente di derivare rigorosamente e sistematicamente i dati per la verifica dinamica

Software Engineering Research LABoratory 9 Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 9

Esempio di Prodotto Formale

  • Formale ❑ Condizioni Durata Volo : [1,8 [ Tipo di Volo : [Nazionale; Intracontinentale; Intercontinentale] ❑ Azioni Distribuzione : [Bevande; Snack; Pranzo; Colazione] Distribuzione = F (Durata Volo, Tipo Volo)
  1. Durata Volo < 1 [1 ... 8] > 8
  2. Tipo Volo Nazionale Intracontinentale or Intercontinentale Nazionale Intracontinentale Intercontinentale Nazionale or Intracontinentale Intercontinentale
  3. Bevanda X X X X
  4. Snack X .
  5. Pranzo . . X
  6. Colazione x

1 2 3 4 5 6 7 10 Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software Software Engineering Research LABoratory X

Esempio di Processo Rigoroso

  • La descrizione rigorosa delle attività e delle relazioni tra loro da eseguire durante lo sviluppo del software aiuta a: ❑ gestire il progetto ❑ accertare i tempi ed i costi del progetto

Software Engineering Research LABoratory Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 11

Vantaggi del Rigore e Formalismo

  • Il rigore consente di sviluppare software con buoni livelli di qualità ❑ La scrittura rigorosa della documentazione la rende comprensibile e tracciabile, quindi l'applicazione software ha una buona manutenibilità . Il formalismo consente la gestione automatica dello sviluppo software ❑ Un programma specificato formalmente può essere generato automaticamente ❑ Un processo descritto formalmente può essere monitorato automaticamente e se non sono implicate attività umane può essere eseguito automaticamente
  • I concetti trattati nello sviluppo di un'applicazione sono ad alto contenuto semantico, quindi sono difficilmente formalizzabili . Pertanto è necessario che siano almeno rigorosi per evitare che si realizzi software con dissonanze concettuali; questo è un rischio che quando si verifica genera molte diseconomie

Software Engineering Research LABoratory Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 12

Svantaggi del Rigore e Formalismo

  • È difficile per uno sviluppatore mantenere sistematicamente lo stesso livello di rigore; spesso egli si comporta non conformemente
  • Il formalismo richiede molto impegno persona

Software Engineering Research LABoratory Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 13

Separazione degli Interessi

2 SEPARAZIONE DEGLI INTERESSI Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 14 Software Engineering Research LABoratory

Concetti di Separazione degli Interessi

  • Separare le decisioni necessarie per risolvere aspetti diversi dello stesso problema
  • Esistono diverse modalità di separazione: ❑ Per Tempo. Aspetti che si rilevano in tempi diversi ❑ Per Caratteristiche. Ogni aspetto rilevante corrisponde ad una caratteristica, ognuna è analizzata separatamente dall'altra ❑ Per Prospettive. Ogni aspetto attiene alla prospettiva di un portatore di interessi ❑ Per Parti. Ogni capacità del sistema deve riguardare una parte di esso

Software Engineering Research LABoratory Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 15

Esempi di Separazione per Prodotto e Processo

  • Separazione per Tempo. I problemi e le attività dell'analisi si separano da quelli della progettazione
  • Separazione per Caratteristiche. Si progetta prima il sistema software con una elevata qualità della struttura. Successivamente, se fosse necessario, si affina la struttura perché sia efficiente quanto è richiesto
  • Separazione per Prospettive. Si struttura il sistema per assicurare una buona usabilità; si rivede poi la struttura per assicurare una manutenzione economica; si implementano le specifiche riusando software disponibile per assicurare economia nello sviluppo; si progetta l'interfaccia utente per rendere usabile il sistema; si prova il sistema per verificare quanto sia efficiente
  • Separazione per Parti. Le applicazioni devono essere progettate con le seguenti parti: ❑ Gestire l'interfaccia ❑ Gestire le regole di dominio applicativo ❑ Gestire i dati persistenti
  • Ognuna di queste parti deve essere suddivisa, sino ad arrivare alle capacità prime che costituiranno l'architettura

Software Engineering Research LABoratory Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 16

Vantaggi della Separazione degli Interessi

  • I problemi da affrontare nello sviluppo di un'applicazione software sono di diversi tipi ed in diversi domini. Tutti richiedono compromessi specifici
  • L'applicazione di questo principio consente di analizzare, uno per volta, i differenti aspetti/interessi di un grande problema, diminuendo così il numero di decisioni da assumere contemporaneamente

Software Engineering Research LABoratory Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 17

Svantaggi della Separazione degli Interessi

  • Separare gli aspetti potrebbe far perdere la ottimizzazione perché si assumono decisioni riguardanti aspetti differenti che potrebbero trascurare la relazione esistente tra alcune di esse ❑ Per questo motivo due o più aspetti con caratteristiche comuni conviene non separarli

Software Engineering Research LABoratory Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 18

Modularità

3 MODULARITA Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 19 Software Engineering Research LABoratory

Concetti di Modularità

  • I Moduli sono parti del Sistema Software ❑ Ognuno realizza una parte delle sue funzioni ❑ Tutti cooperano tra loro per realizzare gli scopi del Sistema Software
  • I moduli devono avere ❑ Alta coesione interna: misura la forza che giustifica la coesistenza logica degli elementi interni di un modulo (istruzioni, procedure, metodi ... ) ❑ Basso accoppiamento tra loro: misura la densità ed il tipo di interdipendenza tra moduli
  • Un'applicazione si può costruire secondo due vie ❑ Si scompone il problema in moduli e successivamente si dettaglia il progetto di ognuno di essi: approccio Top Down ❑ Si parte dai moduli in dettaglio e si compongono per ricavare moduli sempre più grandi: approccio Bottom Up

Software Engineering Research LABoratory Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software 20

Esempi di Struttura Modulare

Struttura ad alto accoppiamento e bassa coesione interna Struttura con alta coesione e basso accoppiamento Software Engineering Research LABoratory 21 Caivano - Piccinno - Barletta | Il Software e L'Ingegneria del Software

Non hai trovato quello che cercavi?

Esplora altri argomenti nella Algor library o crea direttamente i tuoi materiali con l’AI.