Progettazione e Architettura Software: Concetti Essenziali per lo Sviluppo

Classificato in Informatica

Scritto il in italiano con una dimensione di 7,81 KB

Progettazione di Sistemi Strutturati

È il processo di decidere quali componenti e le loro interconnessioni sono necessarie per risolvere un problema ben specificato.

Tipi di Progettazione Software

Progettazione Dati

Trasforma i dati del modello del campo dell'informazione, creato durante l'analisi, in strutture di dati necessarie per implementare il software.

Progettazione Strutturale

Definisce le relazioni tra gli elementi strutturali principali del programma. L'obiettivo principale della progettazione strutturale è quello di sviluppare una struttura modulare del programma e rappresentare le relazioni tra i moduli di controllo.

Progettazione Procedurale

Trasforma gli elementi strutturali in una descrizione procedurale del software. La progettazione procedurale viene eseguita dopo aver definito la struttura del programma e dei dati. Definisce gli algoritmi di elaborazione necessari.

Importanza della Progettazione Software

L'importanza della progettazione del software si può riassumere in una sola parola: qualità.

La progettazione è il processo che sta alla base della qualità dello sviluppo del software. La progettazione produce rappresentazioni di software che permettono di valutarne la qualità.

La progettazione strutturata tende a trasformare lo sviluppo del software da una pratica tradizionale a una disciplina ingegneristica.

Qualità e Attributi del Software

  • Efficienza
  • Manutenibilità
  • Modificabilità
  • Flessibilità
  • Governo
  • Utilità

Progettazione di Sistema

È la strategia di alto livello per risolvere problemi e costruire una soluzione.

Decisioni Chiave nella Progettazione di Sistema

  • Organizzare il sistema in sottosistemi.
  • Identificare la concorrenza inerente al problema.
  • Assegnare i sottosistemi a processori e compiti.
  • Gestire l'accesso alle risorse globali.
  • Selezionare la strategia di controllo del software.
  • Gestire le condizioni al contorno e stabilire le priorità di compensazione.

Modellazione e Progettazione Orientata agli Oggetti (OOP)

Si basa sul pensare ai problemi da risolvere utilizzando modelli che sono stati organizzati sulla base di concetti del mondo reale.

Modelli Fondamentali nell'OOP

  • Modello a Oggetti: Descrive la struttura dei dati degli oggetti e delle loro relazioni.
  • Modello Dinamico: Descrive gli aspetti comportamentali del cambiamento del sistema nel tempo.

Concetto di Componente

Un Componente è un pezzo di codice pre-confezionato che incapsula alcune funzionalità esposte tramite interfacce standard.

Vantaggi dell'Utilizzo di Componenti

  • Riutilizzo del software: Porta a un aumento del livello di riutilizzo del software.
  • Semplifica il testing: Permette di eseguire test tramite un'analisi dei componenti prima di testare l'intero set di componenti assemblati.
  • Semplifica la manutenzione del sistema: Con un debole accoppiamento tra i componenti, è possibile aggiornare e/o aggiungere componenti in base alle esigenze, senza influenzare altre parti del sistema.
  • Qualità superiore: Poiché un componente può essere costruito e poi continuamente migliorato da un esperto o un'organizzazione, la qualità delle applicazioni basate su componenti migliorerà nel tempo.

Architettura del Software

È l'organizzazione fondamentale di un sistema, costituita dai suoi componenti, dalle loro relazioni e dal contesto in cui è implementato, nonché dai principi che orientano la sua progettazione ed evoluzione.

Scopo dell'Architettura del Software

Fornire elementi che aiutano il processo decisionale e al contempo fornire un linguaggio comune e concetti che permettono la comunicazione tra i team partecipanti a un progetto.

Modelli e Viste dell'Architettura

  • Visione Statica: Descrive i componenti dell'architettura.
  • Visione Funzionale: Descrive la funzione di ciascun componente.
  • Visione Dinamica: Descrive come i componenti si comportano nel tempo e come interagiscono.

Architetture Comuni

  • Architettura Monolitica: Il software è organizzato in un unico blocco funzionale con componenti strettamente collegati.
  • Architettura Client-Server: Il carico computazionale è suddiviso tra due parti distinte (client e server), con ruoli specifici.
  • Architettura a Tre Strati (Tier): Specializzazione dell'architettura client-server in cui il carico è suddiviso in tre parti (o strati) con una chiara divisione delle funzioni: un livello di presentazione (interfaccia utente), uno per la logica di business (calcolo e modellazione del business) e uno per la persistenza dei dati. Ogni strato interagisce solo con quello adiacente.

Progettazione Specifica

Progettazione dell'Interfaccia Utente (UI Design)

È la progettazione di applicazioni, macchine, dispositivi di comunicazione mobile, applicazioni software e siti web incentrata sull'esperienza dell'utente e sull'interazione.

Progettazione di Database

Può essere complessa, ma seguendo alcune semplici regole sarà più facile creare un database ottimale per il prossimo progetto.

Processo di Progettazione e Controlli

Riguarda la preparazione adeguata dei dati o degli elementi di base delle informazioni e la loro elaborazione tramite regole e procedure per eseguire diverse operazioni (calcoli).

Controllo

Attività di collaudo, ispezione, audit, controllo di gestione e regolamentazione di un fenomeno (processo, attività).

Metriche del Software

Una Metrica è uno strumento che quantifica un criterio. Le metriche ci aiutano a comprendere sia il processo tecnico utilizzato per sviluppare un prodotto, sia il prodotto stesso.

Tipi di Misure e Metriche

  • Misure Indirette: Riguardano la qualità, la funzionalità, la complessità, l'efficienza, l'affidabilità, la manutenibilità, ecc.
  • Metriche del Software: Sono associate allo sviluppo di funzionalità del software, complessità ed efficienza.
  • Metriche Tecniche: Si concentrano sulle caratteristiche del software. Misurano la struttura del sistema e come è stato realizzato.
  • Metriche di Qualità: Forniscono un'indicazione di quanto il software soddisfi i requisiti impliciti ed espliciti del cliente.
  • Metriche di Produttività: Si concentrano sulle prestazioni del processo di ingegneria del software. Indicano quanto sarà produttivo il software progettato.
  • Metriche Orientate alle Persone: Forniscono informazioni su come le persone sviluppano software e, soprattutto, sul punto di vista umano dell'efficacia degli strumenti e dei metodi. Riguardano le misure relative al personale che svilupperà il sistema.
  • Metriche Orientate al Formato: Servono a stimare i tempi di completamento del software e il numero di persone necessarie. Sono misure dirette per il software e il processo di sviluppo, utili se un'organizzazione software dispone di una documentazione semplice.
  • Metriche Orientate alla Funzione: Sono misure indirette del software e del processo di sviluppo. Invece di calcolare le Linee di Codice (LDC), le metriche orientate alla funzione si concentrano sulle funzionalità e sull'usabilità del programma.

Svantaggi delle Metriche

Non esiste un regime di criteri generalmente accettato.

Voci correlate: