Organizzare e riutilizzare tecniche, strumenti ed esempi preziosi
Pubblicato il 17 aprile 2007
Da qualche parte, qualche volta, qualcuno ha affrontato un problema simile al tuo e ha capito come risolverlo. E se si potesse catturare l’informazione duramente conquistata da quella persona e mettere la soluzione in una forma riutilizzabile? Questo è esattamente ciò che i pattern di progettazione e analisi hanno fornito agli ingegneri del software negli ultimi dieci anni. Tuttavia, questi pattern generalmente discutono una soluzione specifica; non forniscono molta guida nell’imparare come identificare il pattern corretto e applicare quel pattern in primo luogo.
Per fortuna, ci si può rivolgere ai framework analitici, che combinano soluzioni riutilizzabili con pattern di analisi, ricerca, tecniche di organizzazione utili, ed esempi specifici di approcci di successo. Un framework analitico è un po’ come la vostra biblioteca personale, fatta su misura per la vostra esperienza e il vostro background.
I pattern di analisi sono stati usati nello sviluppo del software per molti anni per fornire soluzioni per l’accesso ai dati, il monitoraggio e la gestione delle transazioni, la sicurezza, la messaggistica, le interfacce utente e altre esigenze applicative. Non sono pensati per essere implementati nel codice, ma piuttosto per permettere agli analisti di comprendere domini problematici complessi.
I quadri analitici incorporano tali modelli e forniscono anche una lista di controllo delle competenze, degli strumenti e delle tecniche che sono necessarie per la ricerca di una particolare area, come l’analisi del business o l’architettura di sistema. Questo può essere una grande manna per le aziende che cercano competenze specifiche per soddisfare un bisogno attuale. Se un candidato può dimostrare l’esperienza e le abilità elencate, è probabile che quel candidato avrà successo con il compito.
Comprendere la struttura del quadro analitico
Considerate per un momento come qualcuno addestrato nella lavorazione del legno va a creare mobili. Un lavoratore limitato a pochi semplici strumenti e alle sue conoscenze personali può trovare difficile e dispendioso creare nuovi pezzi. D’altra parte, se alla stessa persona viene fornito un laboratorio completamente arredato, strumenti potenti e una libreria completa di piani e pezzi di esempio, troverà molto più facile creare mobili complessi e interessanti. Allo stesso modo, le prestazioni di un analista possono essere migliorate dall’accesso a una serie di modelli di analisi collaudati, potenti strumenti e tecniche di analisi, e molteplici esempi di approcci di modellazione efficaci per la cattura e la presentazione di informazioni complesse.
Un quadro analitico è composto da cinque componenti principali: un assortimento di strumenti, un insieme di modelli di soluzione utili, uno o più moduli di modelli, molteplici tecniche e abilità di ricerca e metodi per raggruppare informazioni complesse. La tabella 1 mostra gli elementi necessari per un quadro di analisi del business.
Tabella 1. Struttura di analisi del business
Elemento | Descrizione |
---|---|
Strumenti | L’elaborazione di testi, software di modellazione, controllo della versione dei documenti |
Patterns | Modelli specifici del settore, modelli di sistemi di business, strutture di organizzazione aziendale |
Forme del modello | Organizzazione, Unified Modeling Language (UML) business case, attività UML, Zachman Framework |
Tecniche | Osservazione, intervista, studio dei documenti |
Abilità | Prendere appunti, Ascolto attivo, facilitazione delle riunioni, leadership del team, pensiero critico, ragionamento per analogia |
Categorizzazione | Quadro dei processi aziendali, gerarchia dei dipartimenti, casi d’uso aziendali, grafico di dipendenza funzionale |
In questo quadro di analisi aziendale, gli strumenti efficaci per la scoperta e la cattura dei processi di business includono software di modellazione (in particolare la modellazione UML, se i requisiti di business sono catturati come casi d’uso), aiuti per l’elaborazione di testi, e qualche forma di controllo di versione per modelli e documenti. Gli strumenti possono essere fatti su misura per bisogni specifici o possono essere strumenti più generali, come un semplice aiuto per il disegno visivo.
I modelli di analisi ricorrenti possono essere efficaci quando applicati a un particolare dominio di analisi. Nel quadro dell’analisi del business, questi schemi includono schemi di sistemi di business (come l’inserimento degli ordini, il controllo dell’inventario e la risoluzione degli scambi), schemi specifici dell’industria (come l’instradamento della telefonia, la spedizione e la programmazione dei pacchi e i controlli della produzione di farmaci) e strutture di business (come matrici, gerarchie e organizzazioni distribuite). Gli schemi sono temi che sono stati trovati a verificarsi ripetutamente in particolari aree di business. Per maggiori informazioni su come catturare i temi di business ricorrenti, fare riferimento a “Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML”. (Vedere la sezione Argomenti correlati per ulteriori informazioni.)
Puoi usare una selezione di forme di modelli per catturare informazioni complesse. Per l’analisi analitica complessa, esiste un certo numero di forme di modello utili, come Unified Modeling Language (UML) per i sistemi software-intensive, Systems Modeling Language (SysML) per l’ingegneria dei sistemi, e lo Zachman Framework per i problemi trasversali dell’organizzazione. Nell’esempio del quadro di analisi del business mostrato nella tabella 1, le forme di modello utili per studiare i processi di business includono UML (per la modellazione dei processi e dei casi d’uso), gli organigrammi gerarchici e una forma potenzialmente modificata del modello Zachman.
Tecniche e competenze sono un aspetto cruciale di qualsiasi approccio di analisi. È importante essere in grado di fornire una valutazione delle competenze attualmente disponibili di un individuo o di un team. Per esempio, la tecnica dell’intervista richiede la capacità di prendere appunti e di ascoltare attivamente. La conduzione di un workshop di gruppo richiede le abilità di facilitazione e di leadership del team. L’analisi del sistema si basa sulle capacità di pensare criticamente al problema (riconoscendo come il problema può essere diviso in domini più piccoli e semplici) e applicare soluzioni simili trovate in altre aree.
L’obiettivo dell’analisi è presentare i risultati a un pubblico. Il miglior analista del mondo non avrà successo se non è in grado di organizzare le informazioni in un modo significativo e presentabile. Gli strumenti automatizzati forniscono solo una parte della soluzione a questo problema; l’organizzazione generale delle informazioni determina il modo in cui il pubblico previsto utilizzerà i dati. Nel quadro dell’analisi del business, questi principi di categorizzazione sono rappresentati dai processi di business (dove il business è diviso in sottodomini), dai grafici di dipendenza tra i casi d’uso del business, e dalla struttura organizzativa generale (tipicamente, gerarchica).
Applicare un quadro analitico
Ora che sapete cosa comprende un quadro analitico, dovete imparare ad usarlo. Ci sono almeno tre situazioni in cui un quadro analitico può essere utile. La prima è quando un individuo deve cambiare ruolo. Per esempio, un analista di business può spostarsi in un ruolo di analista di sistema o in un ruolo di analista di test. Ogni ruolo ha responsabilità diverse e produce una serie completamente diversa di documentazione e prodotti di lavoro. Se l’individuo può richiamare un quadro analitico preesistente (con esempi appropriati), sarà molto più facile prepararsi e passare al nuovo ruolo. L’individuo deve imparare quali strumenti, tecniche, schemi, modelli e approcci organizzativi funzionano meglio in ogni situazione. L’accesso a un modello analitico per ciascuna di queste aree può ridurre notevolmente il tempo speso nella ricerca di soluzioni.
La seconda area in cui i quadri analitici possono rivelarsi utili è nella valutazione delle abilità e della preparazione di un gruppo di outsourcing. La maggior parte delle organizzazioni che utilizzano l’outsourcing near-shore o offshore si basano sull’esperienza passata dei team per valutare la loro capacità di consegnare gli artefatti concordati. Se il team in outsourcing è tenuto a uno standard particolare, definito da un modello analitico specifico che si è dimostrato efficace, c’è una maggiore fiducia che il team avrà la corretta raccolta di materiali e abilità. Lo stesso si può dire per i team interni, anche se tipicamente questi team hanno già dimostrato un particolare approccio, che fornisce la fonte del quadro analitico.
La terza area in cui i quadri analitici sono utili è la formazione. Se si studia il quadro presentato nella tabella 1, dovrebbe essere evidente che questi possono formare la base per un piano di formazione per il miglioramento della squadra. È possibile eseguire una valutazione per determinare se la giusta collezione di elementi del quadro, strumenti, modelli e abilità è già disponibile tra i membri del team o deve essere aggiunta attraverso l’acquisto di uno strumento o la formazione del personale.
Creazione e adattamento dei quadri
Un quadro analitico è utile solo se gli strumenti sono familiari al modellatore. Ricordando il falegname di talento, i migliori strumenti sono inutili senza l’applicazione creativa di un artigiano addestrato e di talento. Allo stesso modo, costruire modelli esteticamente piacevoli richiede l’adattamento di uno o più quadri analitici ad un dominio problematico. È necessario sapere come selezionare il framework più pertinente, familiarizzare con gli elementi del framework e adattare gli elementi del framework al problema in questione.
Molti problemi hanno aspetti ricorrenti, quindi spesso è possibile adattare un framework strettamente correlato. Per esempio, quasi tutti i sistemi informatici legacy hanno bisogno di una qualche forma di indagine progettuale, se non altro per addestrare i nuovi sviluppatori alla manutenzione e all’estensione del sistema. Perciò, un framework di progettazione di sistema sarebbe più applicabile di un framework di processo aziendale.
La creazione di un nuovo framework può essere semplice come la clonazione di un framework esistente e l’aggiunta di nuovi modelli ed esempi. D’altra parte, framework più complessi, come uno che può essere sviluppato per l’analisi e la gestione di progetti di sistemi embedded, possono avere poco in comune con altri framework esistenti, quindi potrebbe essere necessario crearli da zero. Dovreste iniziare a considerare gli strumenti e le tecniche che potete applicare al dominio. Per esempio, potrebbe essere necessario modificare le tecniche esistenti, come l’intervista o la facilitazione del gruppo, per supportare il nuovo dominio. Potreste essere in grado di fornire altri strumenti al modellatore per compiti specifici, come il computer-aided software engineering (CASE) per organizzare il contenuto di una federazione di siti web. Col passare del tempo, si può estendere il framework per includere più esempi. Infine, alla conclusione del progetto, potete catturare formalmente le tecniche e i modelli che si sono dimostrati più utili come modelli di analisi da usare per il prossimo problema applicabile.
Potreste aver bisogno di adattare un quadro analitico prima che sia utilizzabile in un particolare contesto. L’adattamento di un quadro comporta l’inclusione di nuovi modelli o schemi organizzativi per meglio adattarsi alle esigenze del soggetto. In questo modo, è possibile estendere e sviluppare queste strutture per nuovi domini problematici. Quando si rendono disponibili nuovi strumenti e tecniche, e quando vengono scoperti e codificati nuovi schemi di analisi, è possibile aggiungerli al proprio toolkit e organizzarli in un framework modificato. Se il livello di modifica è significativo, può indicare che si dovrebbe costruire un framework completamente nuovo.
Mettere in uso il framework analitico
Immagina di essere uno sviluppatore senior che è stato appena assegnato ad una nuova posizione di architetto per un sistema legacy. Non sei stato coinvolto nel lavoro di sviluppo originale, ma devi imparare rapidamente il sistema e portare uno staff di nuovi membri del team alla velocità necessaria, il che richiede che tu per primo ti metta al passo. Fortunatamente, avete alcune cose a vostro favore. In primo luogo, avete una buona serie di architetture di esempio da altri sistemi simili nell’azienda. Secondo, hai accesso al modello analitico per l’architettura del software (vedi Tabella 2).
Tabella 2. Schema analitico per l’architettura del software
Elemento | Descrizione |
---|---|
Strumenti | Profiler di codice, strumento di segnalazione di database, modello di documento di architettura del software, software di modellazione, analisi del codice |
Patterns | Software-deployment patterns, architecture patterns, system-design patterns, data-storage patterns |
Modelli | Modelli dinamici (come UML sequence, algorithm charts, UML state, e UML activity), database entity-relationship diagrams, modelli strutturali (come UML class e function call map), diagrammi di flusso di dati, modelli di sistemi aziendali |
Tecniche | Pensiero astratto, organizzazione e categorizzazione, analisi critica, prendere appunti |
Competenze | Struttura del codice, analisi del flusso, comportamento del sistema |
Categorizzazione | Comportamento funzionale, dipendenza dal sottosistema, dipendenza dal componente, imballaggio della distribuzione |
Utilizzando il quadro dell’architettura del software, il tuo primo passo è di assemblare tutti gli strumenti raccomandati. Lo strumento di modellazione fornisce la capacità di visualizzare il codice esistente in un modello UML, permettendoti di investigare la struttura esistente del codice. Il profiler di runtime è prezioso per registrare gli stack delle chiamate mentre la funzionalità dell’applicazione viene eseguita.
Poi, potete investigare i modelli architetturali comuni presenti nell’applicazione. Potete identificare questi pattern, se presenti, usando le descrizioni di pattern comuni annotate nel framework, specialmente i pattern di analisi e progettazione. Molti di questi pattern sono pubblicati; conoscere i più comuni sarà spesso sufficiente per uno sforzo di analisi architetturale.
La familiarità con una varietà di forme di modelli, come i diagrammi entità-relazione (ERD), UML, e altri approcci di modellazione orientati al sistema, vi fornirà una vasta gamma di opzioni di modellazione. Categorizzando questi modelli per comportamento funzionale, logico rispetto alla struttura fisica e agli stati di comportamento interno, si otterrà un utile registro dell’architettura generale del sistema. Infine, è importante conoscere i propri limiti. L’autovalutazione è un compito difficile ma necessario per assicurarsi e rassicurarsi che tutte le competenze veramente necessarie siano disponibili per il team. Usare l’insieme delle competenze attese elencate nel quadro analitico dell’architettura del software fornisce un buon punto di partenza per determinare i tipi di abilità richieste per un compito di analisi dell’architettura. Il quadro analitico vi fornisce una lista di controllo della quantità minima di elementi necessari per avere successo. Ulteriori competenze possono essere richieste per architetture specializzate, come le reti di trasporto.
Sommario
Studiare e comprendere sistemi software complessi può essere un compito impegnativo. Per avere successo, è necessario impiegare una varietà di strumenti e tecniche per raccogliere, organizzare e presentare le descrizioni del sistema. Creando e adattando quadri analitici, potete prepararvi con largo anticipo e raccogliere strumenti ed esempi utili da usare nella vostra situazione attuale. Ora che sapete quali elementi compongono un framework analitico di successo, come riutilizzare i framework e come crearne di nuovi, sarete ben preparati ad affrontare molte delle situazioni comuni che si incontrano nei problemi complessi di oggi.
Risorse scaricabili
- PDF di questo contenuto
- Per maggiori informazioni sugli archetipi di business, leggi Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML, di Jim Arlow e Ila Neustadt (Addison-Wesley Professional, 2003).
- Guardate la serie in tre parti (PDF) di Ben Lieberman su L’arte della modellazione, che vi insegna a costruire un quadro analitico, l’organizzazione e la costruzione di modelli e la composizione visiva (developerWorks, agosto 2003).
- Imparate a modellare con forme strutturali, temi organizzativi e perni di diagramma nell’articolo di Ben Lieberman, “Costruire modelli di sistema efficaci” (developerWorks, marzo 2007).