Architettura basata sul componente con livelli
Un'architettura del componente è un'architettura basata su componenti sostituibili come descritto in Concetto: Componente. Poiché le architetture dei componenti sono basate su componenti
indipendenti, sostituibili e modulari, esse facilitano la gestione della complessità e favoriscono il riutilizzo.
I casi di utilizzo portano il RUP (Rational Unified Process) attraverso l'intero ciclo di vita, ma le attività di
progettazione sono incentrate sulla nozione di architettura di sistema e, per sistemi con molti software, di architettura software.
Il punto principale delle iterazioni iniziali del processo - per la maggior parte nella fase di elaborazione - è quello
di produrre e convalidare una architettura software, che nel ciclo di sviluppo iniziale assume la forma di
un prototipo strutturale eseguibile che gradatamente si evolve, fino a diventare il sistema definitivo nelle iterazioni
finali.
Per architettura eseguibile, si intende una parziale implementazione del sistema creata per dimostrare proprietà e
funzioni selezionate del sistema, in particolare quelle che soddisfano requisiti non funzionali. Lo scopo
dell'architettura eseguibile è quello di ridurre i rischi legati a prestazioni, produttività, capacità, affidabilità ed
altre caratteristiche, in modo che la completa capacità funzionale del sistema possa essere aggiunta nella fase di costruzione su una base solida, senza paura di errori.
Per un'introduzione alla nozione di architettura - in particolare di architettura software - ed una spiegazione dei
motivi per cui questa nozione è fondamentale, consultare Concetto:
Architettura software.
Il RUP fornisce un modo sistematico per progettare, sviluppare e convalidare un'architettura. Vengono offerti modelli
per la descrizione strutturale dei concetti di più viste strutturali e per la cattura di stile strutturale, regole di
progettazione e vincoli. La disciplina Analisi e progettazione contiene attività specifiche che consentono
di identificare vincoli strutturali ed elementi importanti dal punto di vista della struttura e linee di guida per le
scelte strutturali. Il processo di gestione illustra il modo in cui la pianificazione delle iterazioni iniziali
considera la progettazione di un'architettura e la risoluzione dei principali rischi tecnici. Consultare la disciplina
Gestione progetto e tutte le attività associate al Ruolo: Architetto di software per ulteriori informazioni.
L'architettura è importante per diverse ragioni:
-
Consente di acquisire e conservare il controllo intellettuale sul progetto, per gestirne la complessità e per
conservare l'integrità del sistema.
Un sistema complesso è più della somma delle relative parti; più di una successione di piccole decisioni tattiche
indipendenti. Deve essere dotato di una struttura coerente ed unificante per organizzare tali parti in modo
sistematico e deve fornire regole precise relative alla crescita del sistema senza che la propria complessità
diventi troppo elevata.
L'architettura stabilisce i mezzi per migliorare la comunicazione e la comprensione del progetto mediante una serie
comune di riferimenti, un vocabolario comune con cui discutere i problemi di progettazione.
-
E' una base effettiva per il riutilizzo su larga scala.
Articolando in modo chiaro i componenti principali e le interfacce critiche tra di essi, un'architettura consente
di ragionare sul riutilizzo, sia quello interno, che è l'identificazione delle parti comuni, sia quello esterno,
che è l'utilizzo di componenti già pronti. Tuttavia, consente anche il riutilizzo su larga scala: il riutilizzo
dell'architettura stessa nel contesto di una linea di prodotti con funzionalità diverse in un dominio comune.
-
Fornisce una base per la gestione del progetto.
La pianificazione e le risorse sono organizzate lungo le linee dei componenti principali. Le decisioni strutturali
fondamentali vengono prese da un piccolo team dell'architettura e non vengono distribuite. Lo sviluppo è suddiviso
tra piccoli team, ciascuno responsabile di una o più parti del sistema.
Lo sviluppo basato sul componente è una variazione dello sviluppo dell'applicazione generale in cui:
-
L'applicazione viene assemblata da componenti eseguibili separati sviluppati in modo relativamente
indipendente gli uni dagli altri, potenzialmente da team diversi. Tali componenti sono definiti in RUP come
"componenti di assemblaggio". Consultare Concetto:
Componente per una definizione più dettagliata.
-
L'applicazione può essere aggiornata mediante incrementi più piccoli, aggiornando solo alcuni dei
componenti di assemblaggio che compongono l'applicazione.
-
I componenti di assemblaggio possono essere condivisi tra le applicazioni, creando delle opportunità di
riutilizzo e dipendenze tra progetti.
-
Le applicazioni basate su componenti tendono ad essere distribuite, anche se questo non è strettamente
correlato all'essere basate su componenti.
I componenti di assemblaggio derivano da quanto segue:
-
Nella definizione di un'architettura modulare, vengono identificati, isolati, progettati, sviluppati e testati
componenti corretti. Tali componenti possono essere testati singolarmente ed integrati gradatamente per comporre
l'intero sistema.
-
Inoltre, alcuni di tali componenti possono essere sviluppati in modo da essere riutilizzabili, specialmente i
componenti che forniscono soluzioni comuni ad una vasta gamma di problemi comuni. Tali componenti riutilizzabili,
che possono essere in numero maggiore rispetto alle raccolte di librerie di classe o di programmi di utilità,
formano la base del riutilizzo all'interno di un'organizzazione, incrementando la qualità e la produttività
generali del software.
-
Negli ultimi tempi, l'avvento di infrastrutture di componenti di grande successo commerciale - come CORBA,
Internet, ActiveX, JavaBeans, .NET e J2EE - ha attivato un'industria completa di componenti giù pronti per diversi
domini, consentendo di acquistare ed integrare componenti evitando di svilupparli internamente.
Il primo punto nell'elenco precedente utilizza e potenzia i vecchi concetti di modularità ed incapsulamento tipici
della tecnologia basata sugli oggetti. Gli ultimi due punti nell'elenco modificano la metodologia di sviluppo del
software, passando dalla programmazione del software riga per riga alla composizione del software mediante
l'assemblaggio di componenti.
Il RUP supporta lo
sviluppo basato sui componenti nei seguenti modi:
-
L'approccio iterativo consente di identificare i componenti in modo progressivo e decidere quali di essi
sviluppare, quali riutilizzare e quali acquistare.
-
L'architettura del software consente di articolare la struttura - i componenti ed i modi in cui essi si integrano -
che include i modelli ed i meccanismi fondamentali mediante i quali essi interagiscono. Ciò, a sua volta, supporta
gli aspetti di pianificazione della gestione del progetto, in quanto le dipendenze dei componenti possono
consentire di determinare i componenti da sviluppare contemporaneamente e quelli da sviluppare in sequenza.
-
I concetti, come pacchetti, sottosistemi e livelli, vengono utilizzati durante l'analisi e la progettazione per
organizzare i componenti e specificare le interfacce.
-
Il test è organizzato prima per i componenti e poi, gradatamente, per insiemi maggiori di componenti integrati.
Per ulteriori informazioni sui componenti, fare riferimento a Concetto:
Componente.
|