Architetture dei componenti
La pratica di sviluppo e di utilizzo delle architetture dei componenti facilita la gestione della complessità e favorisce il riutilizzo poiché le architetture dei componenti si basano su componenti indipendenti, sostituibili e modulari.
Relazioni
Elementi correlati
Descrizione principale

immagine delle architetture dei componenti

Architettura basata sul componente con livelli

Cosa significa architettura del componente?

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.

Enfasi strutturale

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.

Sviluppo basato sul componente

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.