Modifiche recenti - Cerca:

emi7oP <a href="http://etyxbsmwlbop.com/">etyxbsmwlbop</a>, [url=http://ejkbnyaqouhe.com/]ejkbnyaqouhe[/url], [link=http://iytqgxxmxvee.com/]iytqgxxmxvee[/link], http://ddjproogyauv.com/

Introduzione

Introduzione

Autori: Alberto Taiocchi

Sommario
In questo capitolo sarà fatta un’introduzione all’Ingegneria del software dando una descrizione del contesto industriale del software, spiegando quali sono le origini della disciplina e fornendo una panoramica sul corpus di conoscenze che ci si attende da un ingegnere del software.

Il contesto industriale del software

Il software può essere inserito nel contesto industriale, infatti oggigiorno è considerato il core che lega professioni, mercati, industria. Nel campo industriale permette di produrre in maniera organizzata su grandi scale (per dimensione o volume), assicurando qualità al prodotto e garantendo un’efficiente produzione.

Dimensioni e diffusione

Si può notare come dal punto di vista delle dimensioni e diffusione l’utilizzo sia aumentato vertiginosamente nel corso del tempo. E’ sufficiente pensare che il Mercury nel 1962 era gestito con 1.000.000 di LoC (Lines of Code) fino ad arrivare nel 1990 a 82.000.000 di LoC per Hubble. Stesso discorso vale per i sistemi operativi dalle 2.500.000 LoC di Win 3.1 nel 1990 ai 40.000.000 di LoC di Windows XP nel 2002. Con l’aumentare della complessità e delle dimensioni del codice il costo di una LoC è cresciuto moltissimo non tanto per complessità implementative ma perché comprende anche i costi di analisi e di sviluppo. La crescita del software deve essere anche analizzata dal punto di vista della diffusione. Infatti, oggi, in ogni campo della vita quotidiana si ha a che fare con del software (dalla lavatrice, al telecomando del DVD, al cellulare).

Temi di oggi ed evoluzione

Con il passare del tempo anche il modo di sviluppare software si è evuluto. Dal punto di vista della crescita e dell’integrazione è molto difficile trovare software sviluppati da 0 from scratch, ma generalmente sono l’estensione di sistemi preesistenti o sono l’integrazione con altri. Pochi di questi vengono costruiti su misura. Un sistema è un insieme di componenti realizzati a parte (COAT) per poi essere integrati a formare un sistema complesso. Il software deve quindi essere visto come la composizione di moduli comperati o progettati ad hoc. I sistemi di oggi sono distribuiti, altamente dinamici, sviluppati per aziende decentralizzate. Sono composti da componenti autonomi ed eterogenei, gestiti localmente ma cooperanti tra loro in modo da offrire servizi sempre più complessi. Sono in continua evoluzione, la grande sfida per gli ingegneri del software è quella di progettare un software che sia in grado di adattarsi facilmente ai cambiamenti delle ‘’businnes rules’’. Il punto di vista qualitativo è fondamentale, non è sufficiente che il sistema esegua certe funzioni, devono essere eseguite con determinate caratteristiche.

Il mercato

Il mercato del software è composto da due grandi filoni, il primo vede il software come un prodotto (es. sw a bordo di un elettrodomestico), il secondo come parte di un servizio (es. gestione sito web). Il mercato in Italia è costituito da alcuni grandi operatori che coprono una consistente area di mercato e da un numero estremamente elevato di operatori di piccole e piccolissime dimensioni che detengono, comunque, un patrimonio importante in termini di know how e relazioni con i loro clienti. Il software sviluppato è prettamente di tipo gestionale, contabile (applicazioni Intranet, sviluppo di web aziendali, soluzioni di DataWarehousing, soluzioni ERP,applicazioni in area Extranet, applicativi di commercio elettronico). Ecco quindi che in questo contesto di evoluzione dei sistemi nascono delle nuove figure tra cui quella dell’ingegnere del software.

Le origini dell’ingegneria del software

Anni Programmazione Linguaggio Utente 40-50 Non strutturata- Individuale Assembler Progr. 60 Strutturata Alto livello Non è progr. Tabella 1.1: Evoluzione dell’ingegneria del software Negli anni 70 ha inizio la svolta decisiva. In seguito a grandi progetti che hanno portato a colossali fallimenti, le continue riflessioni determinarono la nascita (primordiale) dell’ingegneria del software. Il software passa da una produzione ‘artigiana’ a una ‘ingegneristica’ basata su un processo di progettazione:

  • Studio del contesto
  • Specifica
  • Idea progettuale
  • Progetto esecutivo
  • Realizzazione e costruzione
  • Elementi costruttivi (pattern, librerie)
  • Norme di qualità e controlli (controllo, collaudo, standard ISO)

L’artigiano da un idea estrae un prodotto. L’ingegnere da un idea ne ricava un progetto o modello sottoposto ad analisi. Al termine del loop-back progetto-analisi si realizza il prodotto finale. Per la riuscita di questo percorso, la disciplina mette a disposizione degli strumenti tra cui tecniche di progettazione, di controllo, di verifica di progetto e di coinvolgimento di aspetti gestionali.

Definizione di ingegneria del software

Vengono date tre diverse definizioni di ingegneria del software:

  1. Approccio sistematico allo sviluppo, operatività, manutenzione e ritiro del software (def. informatica)
  2. Disciplina tecnologica e gestionale per la produzione sistematica e la manutenzione di prodotti software sviluppati e modificati con tempi e costi preventivati (def. gestionale)
  3. Applicazione pratica, di conoscenze scientifiche, alla progettazione e costruzione dei programmi per calcolatori e della documentazione associata richiesta per svilupparli, esercirli e mantenerli.

Il corpus delle conoscenze

La professione

La professione dell’ingegnere del software è stata scritta nello SWEBOK. Questo libro rappresenta una certificazione professionale della figura dell’ingegnere del software. Racchiude una serie di caratteristiche e requisiti che devono essere soddisfatti per formare la professione in modo completo. I creatori del libro avevano in mente cinque obiettivi:

  • Caratterizzare i contenuti della disciplina.
  • Fornire approcci tipici al corpus di conoscenze della disciplina.
  • Promuovere una visione mondiale dell’ingegneria del software.
  • Delimitare i confini dell’ingegneria del software rispetto alle altre discipline.
  • Fornire attitudini individuali per poter certificare un prodotto.

Le normative

  • Regole da seguire per lo sviluppo di software (e non solo), frutto di accordi tra varie aziende e sviluppatori a livello mondiale.
  • Provvedono a creare uno standard entro il quale ci si può muovere durante la fase di creazione di un progetto;
  • Utilizzate per certificare la qualità di un’organizzazione;
  • Diverse normative che coprono tutti gli aspetti dell’ingegneria del Software.

Ingegneria del software

Creare delle soluzioni pratiche a problemi reali, applicando conoscenze scientifiche, tenendo conto di vincoli come costi e tempi. La figura dell’ingegnere del software deve possedere delle componenti di natura:

  • Tecnica (tecniche di controllo di progettazione);
  • Gestionale (pianificazione, stime di costi e tempo);
  • Sociale (rapporti con il cliente, gestione del personale coinvolto nel progetto).
  • Conoscenza approfondita del dominio applicativo (utenti, processi, terminologia adatta).

L’ingegnere dovrà avere conoscenze caratteristiche dell’ambiente entro cui il progetto finale funzionerà.

Ingegneria del software e sistemi

Un progetto software comprende un sistema composto da hardware, software, processi lavorativi e persone. Il focus si sposta quindi da un aspetto tecnico verso un aspetto sistemistico, caratterizzato da una parte tecnicarealizzativa, ma anche dal punto di vista ‘’gestionale-sociale’’ visto che sono coinvolte persone e processi lavorativi.

Modifica - Versioni - Stampa - Modifiche recenti - Cerca
Ultima modifica il 07/08/2006 ore 18:33 CEST ()