|
emi7oP <a href="http://etyxbsmwlbop.com/">etyxbsmwlbop</a>, [url=http://ejkbnyaqouhe.com/]ejkbnyaqouhe[/url], [link=http://iytqgxxmxvee.com/]iytqgxxmxvee[/link], http://ddjproogyauv.com/ |
IntroduzioneIntroduzioneAutori: 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 softwareIl 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 diffusioneSi 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 evoluzioneCon 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 mercatoIl 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 softwareAnni 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:
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 softwareVengono date tre diverse definizioni di ingegneria del software:
Il corpus delle conoscenzeLa professioneLa 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:
Le normative
Ingegneria del softwareCreare 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:
L’ingegnere dovrà avere conoscenze caratteristiche dell’ambiente entro cui il progetto finale funzionerà. Ingegneria del software e sistemiUn 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. |