Ciclo di vita e fasi di sviluppo del software. Ciclo di vita dei sistemi software Processo del ciclo di vita del software


Riso. 5.2.

Questi aspetti sono:

  1. l'aspetto contrattuale, in cui il cliente e il fornitore entrano in rapporti contrattuali e attuano i processi di approvvigionamento e consegna;
  2. aspetto gestionale, che comprende le azioni di gestione dei soggetti che partecipano al ciclo di vita del software (fornitore, cliente, sviluppatore, operatore, ecc.);
  3. l'aspetto operativo, che comprende le azioni dell'operatore per fornire servizi agli utenti del sistema;
  4. aspetto ingegneristico, che contiene le azioni dello sviluppatore o del servizio di supporto sulla soluzione problemi tecnici relativi allo sviluppo o alla modifica di prodotti software;
  5. aspetto del supporto associato all'implementazione dei processi di supporto attraverso i quali gli help desk forniscono servizi necessari a tutti gli altri partecipanti al lavoro. In questo aspetto, possiamo evidenziare l'aspetto della gestione della qualità del software, che comprende processi di garanzia della qualità, verifica, certificazione, valutazione congiunta e audit.

I processi organizzativi vengono portati avanti livello aziendale o a livello dell'intera organizzazione nel suo insieme, creando le basi per l'implementazione e il miglioramento continuo dei processi del ciclo di vita del software.

5.6. Modelli e fasi del ciclo di vita del software

Il modello del ciclo di vita del software è inteso come una struttura che definisce la sequenza di esecuzione e le relazioni di processi, azioni e compiti durante tutto il ciclo di vita del software. Il modello del ciclo di vita dipende dalle specificità, dalla scala e dalla complessità del progetto e dalle condizioni specifiche in cui il sistema viene creato e opera.

Lo standard ISO/IEC 12207 non offre un modello specifico del ciclo di vita e metodi di sviluppo del software. Le sue disposizioni sono generali per tutti i modelli, metodi e tecnologie di sviluppo del software del ciclo di vita. Lo standard descrive la struttura dei processi del ciclo di vita del software, ma non specifica come implementare o eseguire le azioni e le attività incluse in questi processi.

Il modello del ciclo di vita di qualsiasi software specifico determina la natura del processo della sua creazione, che è un insieme di opere ordinate nel tempo, interconnesse e combinate in fasi (fasi), la cui implementazione è necessaria e sufficiente per creare software che soddisfi i requisiti specificati.

La fase (fase) della creazione del software è intesa come parte del processo di creazione del software, limitata da un certo periodo di tempo e termina con il rilascio di un prodotto specifico (modelli software, componenti software, documentazione, ecc.), determinato dai requisiti specificato per questa fase. Le fasi della creazione del software si distinguono per ragioni di pianificazione razionale e di organizzazione del lavoro che si conclude con risultati specifici. Il ciclo di vita del software solitamente comprende le seguenti fasi:

  1. formazione dei requisiti software;
  2. design (sviluppo di un progetto di sistema);
  3. implementazione (può essere suddivisa in sottofasi: progettazione esecutiva, codifica);
  4. test (può essere suddiviso in test e integrazione autonomi e integrati);
  5. messa in servizio (implementazione);
  6. funzionamento e manutenzione;
  7. smantellamento.

Alcuni esperti introducono una fase iniziale aggiuntiva: analisi di fattibilità sistemi. Qui intendiamo un sistema hardware e software per il quale il software viene creato, acquistato o modificato.

La fase di formazione dei requisiti software è una delle più importanti e determina in misura significativa (anche decisiva!) il successo dell'intero progetto. L'inizio di questa fase consiste nell'ottenere un'architettura di sistema approvata e convalidata, compresi gli accordi di base sulla distribuzione delle funzioni tra hardware e software. Questo documento dovrebbe contenere anche la conferma della comprensione generale del funzionamento del software, compresi gli accordi di base sulla distribuzione delle funzioni tra la persona e il sistema.

La fase di generazione dei requisiti software comprende le seguenti fasi.

  1. Pianificazione del lavoro prima del lavoro sul progetto. Gli obiettivi principali della fase sono determinare gli obiettivi di sviluppo, in via preliminare valutazione economica progetto, costruzione di un programma di lavoro, creazione e formazione di un gruppo di lavoro congiunto.
  2. Condurre un sondaggio sulle attività dell'organizzazione automatizzata (oggetto), nell'ambito del quale viene effettuata l'identificazione preliminare dei requisiti per il futuro sistema, la determinazione della struttura dell'organizzazione, la determinazione dell'elenco delle funzioni target dell'organizzazione, analisi della distribuzione delle funzioni tra dipartimenti e dipendenti, identificazione delle interazioni funzionali tra dipartimenti, flussi di informazioni all'interno e tra i dipartimenti, esterni all'organizzazione degli oggetti ed esterni impatti informativi, analisi dei mezzi esistenti per automatizzare le attività dell’organizzazione.
  3. Costruzione di un modello dell'attività di un'organizzazione (oggetto), che prevede l'elaborazione dei materiali del sondaggio e la costruzione di due tipi di modelli:

    • modello "AS-IS" ("as is"), che riflette lo stato attuale delle cose nell'organizzazione al momento dell'indagine e consente di comprendere come opera questa organizzazione, nonché di identificare colli di bottiglia e formulare proposte per migliorare la situazione;
    • modello "TO-BE" ("come dovrebbe essere"), che riflette l'idea di nuove tecnologie per l'organizzazione.

Ciascuno dei modelli dovrebbe includere un modello funzionale e informativo completo delle attività dell'organizzazione, nonché (se necessario) un modello che descriva le dinamiche del comportamento dell'organizzazione. Si noti che i modelli costruiti sono indipendenti significato pratico, indipendentemente dal fatto che un sistema informativo verrà sviluppato e implementato nell'azienda, poiché con il loro aiuto è possibile formare i dipendenti e migliorare i processi aziendali.

Il risultato del completamento della fase di generazione dei requisiti software sono le specifiche software, funzionali, tecniche e di interfaccia, per le quali viene confermata la loro completezza, verificabilità e fattibilità.

La fase di progettazione comprende le seguenti fasi.

  1. Sviluppo di un progetto di sistema software. In questa fase viene data la risposta alla domanda "Cosa dovrebbe fare il sistema futuro?", vale a dire: l'architettura del sistema, le sue funzioni, le condizioni operative esterne, le interfacce e la distribuzione delle funzioni tra gli utenti e il sistema, i requisiti per il software. e vengono determinati i componenti informativi, la composizione degli esecutori e le scadenze per lo sviluppo, il piano di debug del software e il controllo di qualità.

    La base di un progetto di sistema è costituita da modelli del sistema progettato, che sono costruiti sul modello “TO-BE”. Il risultato dello sviluppo di un progetto di sistema deve essere una specifica approvata e confermata dei requisiti software: specifiche funzionali, tecniche e di interfaccia, per le quali viene confermata la loro completezza, verificabilità e fattibilità.

  2. Sviluppo di un progetto (tecnico) dettagliato. In questa fase viene effettuata la progettazione vera e propria del software, compresa la progettazione dell'architettura del sistema e la progettazione dettagliata. Pertanto, viene data la risposta alla domanda: "Come costruire un sistema in modo che soddisfi i requisiti?"

Il risultato della progettazione dettagliata è lo sviluppo di una specifica software verificata, che include:

  • formazione di una gerarchia di componenti software, interfacce intermodulari per dati e gestione;
  • specifica di ciascun componente software, nome, scopo, presupposti, dimensioni, sequenza di chiamate, dati di input e output, errori output, algoritmi e circuiti logici;
  • formazione di strutture dati fisiche e logiche fino al livello dei singoli campi;
  • sviluppo di un piano per la distribuzione delle risorse di calcolo (tempo del processore centrale, memoria, ecc.);
  • verifica della completezza, coerenza, fattibilità e validità dei requisiti;
  • piano preliminare per l'integrazione e il debug, piano per il manuale utente e test di accettazione.

Il completamento della fase di progettazione dettagliata è end-to-end

Ciclo vitale software(PO) - il periodo di tempo che inizia dal momento in cui viene presa la decisione sulla necessità di creare prodotto software e termina al momento della sua completa cessazione dal servizio. Questo ciclo è il processo di creazione e sviluppo del software.

Fasi del ciclo di vita:

2. Progettazione

3. Attuazione

4. Assemblaggio, collaudo, collaudo

5. Attuazione (rilascio)

6. Scorta

Esistono 2 casi di produzione di software: 1) Il software viene realizzato per un cliente specifico. In questo caso, è necessario trasformare l'attività applicata in un'attività di programmazione. È necessario comprendere come funziona l'ambiente che deve essere automatizzato (analisi dei processi aziendali). Di conseguenza, viene visualizzata una specifica della documentazione del requisito, che indica quali attività specifiche devono essere eseguite. risolto e a quali condizioni. Questo lavoro viene eseguito da un analista di sistema (analista dei processi aziendali).

2) Il software è sviluppato per il mercato. È necessario eseguire ricerche di mercato e scoprire quale prodotto non è sul mercato. Ciò comporta molti rischi. L’obiettivo è sviluppare una specifica dei requisiti.

Progetto

Scopo - Definizione struttura generale software (di architettura). Il risultato è una specifica del software. Questo lavoro viene eseguito da un programmatore di sistema.

Attuazione

Scrittura del codice del programma. L'implementazione include sviluppo, test e documentazione.

Assemblaggio, test, test

Una raccolta di tutto ciò che è stato realizzato da diversi programmatori. Test dell'intero pacchetto software. Debug: ricerca ed eliminazione delle cause degli errori. Prova - chiarimento caratteristiche tecniche. Di conseguenza, il funzionamento del programma è garantito.

Attuazione (rilascio)

Implementazione: quando lavorano per un cliente. Comprende l'impostazione di un programma presso la sede del cliente, la formazione del cliente, le consultazioni, l'eliminazione di errori e carenze evidenti. Il software deve essere alienato: l'utente può lavorare con il software senza la partecipazione dell'autore.

Rilascio: quando il software viene sviluppato per il mercato. Inizia con la fase di beta testing. Risp. versione - versione beta. L'alpha test viene eseguito da persone della stessa organizzazione che non sono state coinvolte nello sviluppo dei programmi. Il beta testing è la produzione di diverse copie del software e l'invio a potenziali clienti. L'obiettivo è controllare nuovamente lo sviluppo del software.

Se viene immesso sul mercato un software fondamentalmente nuovo, sono possibili diversi beta test. Dopo il beta testing, rilascio di una versione commerciale.

Scorta

Eliminazione degli errori rilevati durante il funzionamento. Apportare miglioramenti non essenziali. Accumulo di proposte per lo sviluppo della prossima versione.

Modelli del ciclo di vita

1. Cascata (“cascata”, modello a cascata)

2. Prototipazione

Innanzitutto, non viene sviluppato il prodotto software in sé, ma il suo prototipo, che contiene una soluzione ai principali problemi che devono affrontare gli sviluppatori. Dopo aver completato con successo lo sviluppo del prototipo, il prodotto software reale viene sviluppato utilizzando gli stessi principi. Un prototipo consente di comprendere meglio i requisiti del programma in fase di sviluppo. Utilizzando un prototipo, il cliente può anche formulare in modo più accurato le proprie esigenze. Lo sviluppatore ha l'opportunità, utilizzando un prototipo, di presentarlo al cliente risultati preliminari il tuo lavoro.

3. Modello iterativo

L'attività è divisa in sottoattività e l'ordine della loro implementazione è determinato in modo che ciascuna sottoattività successiva espanda le capacità del software. Il successo dipende in modo significativo da quanto bene le attività sono suddivise in sottoattività e da come viene scelto l'ordine. Vantaggi: 1) la possibilità di partecipazione attiva del cliente allo sviluppo, ha l'opportunità di chiarire le sue esigenze durante lo sviluppo; 2) la capacità di testare parti appena sviluppate insieme a quelle sviluppate in precedenza, ciò ridurrà il costo del debugging complesso; 3) durante lo sviluppo, puoi iniziare l'implementazione in parti.

Ciclo di vita del software

Il ciclo di vita del software è un periodo di tempo che inizia dal momento in cui viene presa la decisione sulla necessità di creare un prodotto software e termina nel momento in cui viene completamente rimosso dal servizio. (Standard IEEE 610.12)

La necessità di determinare le fasi del ciclo di vita del software (LC) è dovuta al desiderio degli sviluppatori di migliorare la qualità del software attraverso una gestione ottimale dello sviluppo e l'uso di vari meccanismi di controllo della qualità in ogni fase, dalla definizione del problema al supporto per la creazione del software. Maggior parte idea generale Il ciclo di vita del software è un modello sotto forma di fasi fondamentali - processi, che includono:

Analisi del sistema e giustificazione dei requisiti software;

Progettazione software preliminare (bozza) e dettagliata (tecnica);

Sviluppo di componenti software, loro integrazione e debugging del software nel suo insieme;

Test, funzionamento di prova e replica di software;

Funzionamento regolare del software, supporto per il funzionamento e analisi dei risultati;

Manutenzione del software, sua modifica e miglioramento, creazione di nuove versioni.

Questo modello è generalmente accettato ed è conforme sia alle normative nazionali nel campo dello sviluppo del software che a quelle straniere. Dal punto di vista della garanzia della sicurezza tecnologica, è consigliabile considerare più in dettaglio le caratteristiche della rappresentazione delle fasi del ciclo di vita nei modelli stranieri, poiché è straniero software sono i portatori più probabili di difetti software di tipo sabotaggio.

Standard del ciclo di vita del software

GOST 34.601-90

ISO/IEC 12207:1995 (equivalente russo - GOST R ISO/IEC 12207-99)

La rappresentazione grafica dei modelli del ciclo di vita consente di evidenziare chiaramente le loro caratteristiche e alcune proprietà dei processi.

Inizialmente è stato creato un modello del ciclo di vita a cascata, in cui le fasi principali sono iniziate una dopo l'altra utilizzando i risultati del lavoro precedente. Prevede l'attuazione sequenziale di tutte le fasi del progetto in un ordine rigorosamente fisso. Il passaggio alla fase successiva significa il completamento completo del lavoro nella fase precedente. I requisiti definiti in fase di formazione dei requisiti sono rigorosamente documentati nel modulo termini di riferimento e vengono registrati per l'intero sviluppo del progetto. Ogni fase culmina nel rilascio di un set completo di documentazione sufficiente a consentire il proseguimento dello sviluppo da parte di un altro team di sviluppo. L'inesattezza di un requisito o la sua interpretazione errata comportano il fatto che è necessario tornare indietro alla fase iniziale del progetto e la rielaborazione richiesta non solo manda fuori programma il team di progetto, ma spesso porta ad un aumento qualitativo dei risultati. costi ed eventualmente alla conclusione del progetto nella forma originariamente prevista. Le principali idee sbagliate degli autori del modello a cascata sono il presupposto che il progetto attraversi l'intero processo una volta, che l'architettura progettata sia buona e facile da usare, che il progetto di implementazione sia ragionevole e che gli errori nell'implementazione siano facilmente eliminabili attraverso i test. Questo modello presuppone che tutti gli errori saranno concentrati nell'implementazione e quindi la loro eliminazione avviene in modo uniforme durante il test dei componenti e del sistema. Pertanto, il modello a cascata per grandi progetti non è molto realistico e può essere utilizzato efficacemente solo per creare piccoli sistemi.

Il più specifico è il modello del ciclo di vita a spirale. Questo modello si concentra sul processo iterativo delle fasi iniziali della progettazione. In queste fasi vengono creati in sequenza concetti, specifiche dei requisiti, progetti preliminari e dettagliati. Ad ogni turno si chiarisce il contenuto del lavoro e si concentra l'aspetto del software in creazione, si valuta la qualità dei risultati ottenuti e si pianifica il lavoro della successiva iterazione. Ad ogni iterazione vengono valutati:

Rischio di superamento delle scadenze e dei costi del progetto;

La necessità di eseguire un'altra iterazione;

Il grado di completezza e accuratezza della comprensione dei requisiti di sistema;

La fattibilità della conclusione del progetto.

La standardizzazione del ciclo di vita del software viene effettuata in tre direzioni. Il primo indirizzo è organizzato e stimolato dall'Organizzazione Internazionale per la Standardizzazione (ISO - International Standard Organization) e dalla Commissione Elettrotecnica Internazionale (IEC - International Electro-technical Commission). A questo livello viene effettuata la standardizzazione dei processi tecnologici più generali importanti per la cooperazione internazionale. La seconda direzione viene sviluppata attivamente negli Stati Uniti dall'Institute of Electrical and Electronics Engineers (IEEE) insieme all'American National Standards Institute (ANSI). Gli standard ISO/IEC e ANSI/IEEE sono principalmente di natura consultiva. La terza direzione è stimolata dal Dipartimento della Difesa degli Stati Uniti (DOD). Gli standard DOD hanno natura obbligatoria per le aziende che lavorano per conto del Dipartimento della Difesa degli Stati Uniti.

Per progettare software per un sistema complesso, in particolare un sistema in tempo reale, è consigliabile utilizzare un modello del ciclo di vita dell'intero sistema basato sulla combinazione di tutti opere famose nel quadro dei processi di base considerati. Questo modello è destinato all'uso nella pianificazione, programmazione e gestione di vari progetti software.

È consigliabile dividere l'insieme delle fasi di questo modello del ciclo di vita in due parti, che differiscono significativamente nelle caratteristiche dei processi, nelle caratteristiche tecniche ed economiche e nei fattori che li influenzano.

Nella prima parte del ciclo di vita, analisi del sistema, progettazione, sviluppo, test e collaudo di software. La gamma di lavoro, la sua complessità, durata e altre caratteristiche in queste fasi dipendono in modo significativo dall'oggetto e dall'ambiente di sviluppo. Lo studio di tali dipendenze per varie classi di software consente di prevedere la composizione e le caratteristiche principali dei programmi di lavoro per le nuove versioni del software.

La seconda parte del ciclo di vita, che riflette il supporto per il funzionamento e la manutenzione del software, è relativamente debolmente correlata alle caratteristiche dell'oggetto e dell'ambiente di sviluppo. La gamma di lavoro in queste fasi è più stabile, ma l'intensità e la durata del lavoro possono variare in modo significativo e dipendere dall'uso diffuso del software. Per qualsiasi modello di ciclo di vita, garantire sistemi software di alta qualità è possibile solo quando si utilizzano sistemi software regolamentati processo tecnologico in ciascuna di queste fasi. Questo processo è supportato da strumenti di automazione dello sviluppo, che è consigliabile selezionare tra quelli disponibili oppure crearli tenendo conto dell'oggetto di sviluppo e dell'elenco dei lavori ad esso adeguati.

Ciclo di vita del software

Uno dei concetti di base della metodologia di progettazione del software è il concetto del suo ciclo di vita del software (SOLC). Il ciclo di vita del software è un processo continuo che inizia dal momento in cui viene presa la decisione sulla necessità della sua creazione e termina al momento del suo completo ritiro dal servizio.

Principale documento normativo che regola il ciclo di vita del software è lo standard internazionale ISO/IEC 12207 (ISO - International Organization of Standardization - Organizzazione internazionale sulla standardizzazione, IEC - Commissione Elettrotecnica Internazionale - Commissione Internazionale di Ingegneria Elettrica). Definisce la struttura del ciclo di vita contenente i processi, le attività e i compiti che devono essere eseguiti durante la creazione del software. In questa norma Software (prodotto software) definito come un insieme programmi informatici, procedure ed eventualmente documentazione e dati associati. Processoè definito come un insieme di azioni interconnesse che trasformano alcuni dati di input in dati di output. Ogni processo è caratterizzato da determinati compiti e metodi per risolverli, dati di input ottenuti da altri processi e risultati.

La struttura del ciclo di vita del software secondo lo standard ISO/IEC 12207 si basa su tre gruppi di processi:

· principali processi del ciclo di vita del software (acquisto, consegna, sviluppo, esercizio, supporto);

· processi ausiliari che assicurano l'implementazione dei processi principali (documentazione, gestione della configurazione, garanzia della qualità, verifica, certificazione, valutazione, audit, problem solving);

· processi organizzativi(gestione del progetto, realizzazione delle infrastrutture di progetto, definizione, valutazione e miglioramento del ciclo di vita stesso, formazione).

Modelli del ciclo di vita del software

Modello del ciclo di vita- una struttura che determina la sequenza di esecuzione e la relazione tra fasi e fasi eseguite durante tutto il ciclo di vita. Il modello del ciclo di vita dipende dalle specificità del software e dalle condizioni specifiche in cui quest'ultimo viene creato e opera. I principali modelli del ciclo di vita sono i seguenti.

1. Modello a cascata(fino agli anni '70 del XX secolo) determina il passaggio sequenziale alla fase successiva dopo il completamento di quella precedente.

Questo modello è caratterizzato dall'automazione di singole attività non correlate, che non richiede integrazione e compatibilità delle informazioni, software, interfaccia tecnica e organizzativa.

Dignità: buoni indicatori in termini di tempo di sviluppo e affidabilità nella risoluzione dei singoli problemi.

Difetto: Non applicabile a progetti grandi e complessi a causa della variabilità dei requisiti di sistema su un lungo periodo di progettazione.

2. Modello iterativo(anni 70-80 del XX secolo) corrisponde alla tecnologia di progettazione “dal basso verso l’alto”. Consente ritorni iterativi alle fasi precedenti dopo aver completato la fase successiva;


Il modello prevede la generalizzazione delle soluzioni progettuali ottenute per i singoli problemi in soluzioni a livello di sistema. In questo caso, è necessario rivedere i requisiti precedentemente formulati.

Dignità: la capacità di apportare rapidamente modifiche al progetto.

Difetto: con un gran numero di iterazioni, i tempi di progettazione aumentano, sorgono discrepanze nelle soluzioni progettuali e nella documentazione e l'architettura funzionale e di sistema del software creato si confonde. La necessità di ridisegnare quello vecchio o di creare nuovo sistema possono verificarsi immediatamente dopo la fase di attuazione o di esercizio.

3. Modello a spirale(anni 80-90 del XX secolo) corrisponde alla tecnologia di progettazione “top-down”. Implica l'uso di un prototipo software che consente l'estensione del software. La progettazione del sistema ripete ciclicamente il percorso dal dettaglio dei requisiti al dettaglio del codice del programma.

Quando si progetta un'architettura di sistema, viene innanzitutto determinata la composizione dei sottosistemi funzionali e vengono risolti i problemi a livello di sistema (organizzazione di un database integrato, tecnologia per la raccolta, trasmissione e archiviazione delle informazioni). Quindi vengono formulati i problemi individuali e viene sviluppata la tecnologia per risolverli.

Durante la programmazione vengono prima sviluppati i principali moduli software e poi vengono sviluppati i moduli che svolgono le singole funzioni. Innanzitutto viene garantita l'interazione dei moduli tra loro e con il database, quindi l'implementazione degli algoritmi.

Vantaggi:

1. ridurre il numero di iterazioni e, di conseguenza, il numero di errori e incoerenze che necessitano di essere corretti;

2. riduzione dei tempi di progettazione;

3. semplificazione della creazione della documentazione di progetto.

Difetto: requisiti elevati per la qualità dell'archivio a livello di sistema (database di progettazione comune).

Il modello a spirale è la base tecnologie di sviluppo rapido delle applicazioni o la tecnologia RAD (sviluppo rapido di applicazioni), che prevede la partecipazione attiva degli utenti finali del futuro sistema nel processo della sua creazione. Le fasi principali dell’ingegneria dell’informazione sono le seguenti:

· Analisi e pianificazione della strategia informativa. Gli utenti, insieme agli sviluppatori specializzati, partecipano all'identificazione dell'area problematica.

· Progetto. Gli utenti, sotto la guida degli sviluppatori, prendono parte alla progettazione tecnica.

· Costruzione. Gli sviluppatori progettano una versione funzionante del software utilizzando linguaggi di quarta generazione;

· Attuazione. Gli sviluppatori addestrano gli utenti a lavorare nel nuovo ambiente software.

Lo sviluppo del software è impossibile senza comprendere il cosiddetto ciclo di vita del software. Potrebbe non essere necessario che l'utente medio lo sappia, ma è consigliabile padroneggiare gli standard di base (più tardi verrà detto perché è necessario).

Cos’è il ciclo di vita in senso formale?

Per ciclo di vita di qualsiasi applicazione si intende solitamente il tempo della sua esistenza, a partire dalla fase di sviluppo e fino al momento del completo abbandono d'uso nel campo di applicazione prescelto, fino al completo ritiro dell'applicazione dall'uso.

A proposito di in un linguaggio semplice, sistemi informativi sotto forma di programmi, banche dati o addirittura “sistemi operativi” sono richiesti solo se i dati e le opportunità che offrono sono aggiornati.

Si ritiene che la definizione del ciclo di vita non si applichi in alcun modo alle applicazioni di test, come le versioni beta, che sono le più instabili durante il funzionamento. Il ciclo di vita stesso del software dipende da molti fattori, tra i quali uno dei ruoli principali è giocato dall'ambiente in cui verrà utilizzato il programma. Tuttavia è anche possibile evidenziare condizioni generali, utilizzato per definire il concetto di ciclo di vita.

Requisiti iniziali

  • dichiarazione del problema;
  • analisi dei requisiti reciproci del futuro software per il sistema;
  • progetto;
  • programmazione;
  • codifica e compilazione;
  • test;
  • debug;
  • implementazione e manutenzione del prodotto software.

Lo sviluppo del software comprende tutte le fasi sopra menzionate e non può fare a meno di almeno una di esse. Ma sono stati stabiliti standard speciali per il controllo di tali processi.

Standard di processo del ciclo di vita del software

Tra i sistemi che predeterminano le condizioni e i requisiti per tali processi, oggi possiamo citarne solo tre principali:

  • GOST 34.601-90;
  • ISO/IEC 12207:2008;
  • CDM Oracle.

Per il secondo norma internazionale c'è un analogo russo. Si tratta di GOST R ISO/IEC 12207-2010, che è responsabile dell'ingegneria del sistema e del software. Ma il ciclo di vita del software descritto in entrambe le regole è essenzialmente identico. Questo è spiegato in modo abbastanza semplice.

Tipi di software e aggiornamenti

A proposito, per la maggior parte dei programmi multimediali attualmente conosciuti, rappresentano un mezzo per salvare i parametri di configurazione di base. L'uso di software di questo tipo è, ovviamente, piuttosto limitato, ma comprendere i principi generali del lavoro con gli stessi lettori multimediali non farà male. Ed ecco perché.

Includono infatti il ​​ciclo di vita del software solo a livello di aggiornamento della versione del lettore stesso o di installazione di codec e decoder. E i transcodificatori audio e video sono attributi integrali di qualsiasi sistema audio o video.

Esempio basato su FL Studio

Inizialmente, il sequenziatore di studio virtuale FL Studio si chiamava Fruity Loops. Il ciclo di vita del software nella sua modifica iniziale è terminato, ma l'applicazione è stata in qualche modo trasformata e ha acquisito la sua forma attuale.

Se parliamo delle fasi del ciclo di vita, in primo luogo, nella fase di impostazione del problema, sono state stabilite diverse condizioni obbligatorie:

  • creare un modulo per batteria simile alle macchine ritmiche come la Yamaha RX, ma utilizzando campioni one-shot o sequenze in formato WAV registrate dal vivo in studio;
  • integrazione in sistemi operativi Finestre;
  • la possibilità di esportare un progetto nei formati WAV, MP3 e OGG;
  • Compatibilità dei progetti con l'applicazione aggiuntiva Fruity Tracks.

Nella fase di sviluppo sono stati utilizzati gli strumenti del linguaggio di programmazione C. Ma la piattaforma sembrava piuttosto primitiva e non si adattava all'utente finale qualità richiesta suono.

A questo proposito, nella fase di test e debug, gli sviluppatori hanno dovuto seguire il percorso della società tedesca Steinberg e applicare il supporto per la modalità Full Duplex nei requisiti per il driver audio principale. La qualità del suono è diventata più elevata e ti consente di modificare il tempo, l'intonazione e applicare effetti FX aggiuntivi in ​​tempo reale.

La fine del ciclo di vita di questo software è considerata il rilascio della prima versione ufficiale di FL Studio, che, a differenza dei suoi antenati, aveva già l'interfaccia di un sequenziatore a tutti gli effetti con la possibilità di modificare i parametri su un 64 virtuale. Console di missaggio a due canali con aggiunta illimitata di tracce audio e tracce MIDI.

Non è finita qui. Nella fase di gestione del progetto, è stato introdotto il supporto per il collegamento dei plug-in del formato VST (prima la seconda e poi la terza versione), che una volta era stato sviluppato da Steinberg. In parole povere, qualsiasi sintetizzatore virtuale che supporti VST-host potrebbe connettersi al programma.

Non sorprende che presto qualsiasi compositore possa utilizzare analoghi di modelli "hardware", ad esempio set completi di suoni del popolare Korg M1. Inoltre. L'uso di moduli come Addictive Drums o il plugin universale Kontakt ha reso possibile riprodurre i suoni dal vivo di strumenti reali registrati con tutte le sfumature di articolazione in studi professionali.

Allo stesso tempo, gli sviluppatori hanno cercato di ottenere la massima qualità creando il supporto per i driver ASIO4ALL, che si è rivelato essere una spanna sopra la modalità Full Duplex. Di conseguenza, anche il bitrate è aumentato. Oggi la qualità del file audio esportato può essere di 320 kbps con una frequenza di campionamento di 192 kHz. E questo è un suono professionale.

Per quanto riguarda la versione iniziale, il suo ciclo di vita potrebbe essere definito completamente completo, ma tale affermazione è relativa, poiché l'applicazione ha solo cambiato nome e acquisito nuove funzionalità.

Prospettive di sviluppo

Quali siano le fasi del ciclo di vita del software è già chiaro. Ma vale la pena menzionare separatamente lo sviluppo di tali tecnologie.

Inutile dire che nessuno sviluppatore di software non è interessato a creare un prodotto fugace che difficilmente sopravviverà sul mercato per diversi anni. A lungo termine, tutti guardano al suo utilizzo a lungo termine. Ciò può essere ottenuto in diversi modi. Ma, di regola, quasi tutti si riducono al rilascio di aggiornamenti o nuove versioni di programmi.

Anche nel caso del sistema operativo Windows tali tendenze possono essere osservate ad occhio nudo. È improbabile che oggi ci sia almeno un utente che utilizza sistemi come le modifiche 3.1, 95, 98 o Millennium. Il loro ciclo di vita si è concluso dopo il rilascio di XP. Ma le versioni server basate sulle tecnologie NT sono ancora rilevanti. Anche Windows 2000 oggi non solo è molto attuale, ma in alcuni parametri di installazione o di sicurezza supera addirittura gli ultimi sviluppi. Lo stesso vale per il sistema NT 4.0 e per una modifica specializzata di Windows Server 2012.

Ma in relazione a questi sistemi, il sostegno dichiarato è ancora al massimo livello. Ma Vista, un tempo sensazionale, sta chiaramente vivendo il declino del suo ciclo. Non solo si è rivelato incompiuto, ma conteneva anche così tanti errori e lacune nel sistema di sicurezza che si può solo immaginare come una soluzione così insostenibile abbia potuto essere immessa sul mercato del software.

Ma se diciamo che lo sviluppo di software di qualsiasi tipo (di controllo o applicativo) non si ferma, possiamo solo dire che oggi non riguarda solo sistemi informatici, E dispositivi mobili, in cui le tecnologie utilizzate sono spesso più avanti rispetto al settore informatico. L'emergere di chip per processori basati su otto core non è delle migliori miglior esempio? Ma non tutti i laptop possono vantarsi di avere un tale hardware.

Alcune domande aggiuntive

Per quanto riguarda la comprensione del ciclo di vita del software, è del tutto arbitrario affermare che esso sia terminato ad un certo punto nel tempo, perché i prodotti software continuano a ricevere il supporto degli sviluppatori che li hanno creati. Piuttosto, il finale si riferisce alle applicazioni legacy che non soddisfano i requisiti sistemi moderni e non possono lavorare nel loro ambiente.

Ma anche tenendo conto progresso tecnico molti di loro potrebbero presto diventare insolventi. Successivamente dovrai decidere se rilasciare aggiornamenti o rivedere completamente l'intero concetto originariamente incorporato nel prodotto software. Da qui il nuovo ciclo, che prevede la modifica delle condizioni iniziali, dell'ambiente di sviluppo, dei test e del possibile utilizzo a lungo termine in una determinata area.

Ma nella tecnologia informatica oggi si preferisce lo sviluppo di sistemi di controllo automatizzati (ACS), che vengono utilizzati nella produzione. Anche i sistemi operativi perdono rispetto ai programmi specializzati.

Gli ambienti basati su Visual Basic rimangono molto più popolari dei sistemi Windows. E non stiamo affatto parlando di software applicativo per sistemi UNIX. Cosa possiamo dire se quasi tutte le reti di comunicazione degli stessi Stati Uniti funzionano esclusivamente per loro. A proposito, anche sistemi come Linux e Android sono stati originariamente creati su questa piattaforma. Pertanto, molto probabilmente, UNIX ha molte più prospettive rispetto ad altri prodotti messi insieme.

Invece di un totale

Resta da aggiungere che solo in questo caso principi generali e le fasi del ciclo di vita del software. In effetti, anche i compiti inizialmente impostati possono variare in modo molto significativo. Di conseguenza, le differenze possono essere osservate in altre fasi.

Ma le tecnologie di base per lo sviluppo di prodotti software e il loro successivo supporto dovrebbero essere chiare. Altrimenti, è necessario tenere conto delle specificità del software creato, degli ambienti in cui dovrebbe funzionare, delle capacità dei programmi forniti all'utente finale o alla produzione e molto altro ancora.

Inoltre, a volte i cicli di vita possono dipendere dalla rilevanza degli strumenti di sviluppo. Se, ad esempio, un linguaggio di programmazione diventa obsoleto, nessuno scriverà programmi basati su di esso, tanto meno li implementerà sistemi automatizzati gestione della produzione. Qui non vengono nemmeno i programmatori a venire alla ribalta, ma gli esperti di marketing che devono rispondere in modo tempestivo ai cambiamenti nel mercato dei computer. E non ci sono così tanti specialisti di questo tipo nel mondo. Il personale altamente qualificato in grado di tenere il polso del mercato sta diventando il più richiesto. E spesso sono i cosiddetti “ cardinali grigi”, da cui dipende il successo o il fallimento di un determinato prodotto software in campo informatico.

Potrebbero non sempre comprendere l'essenza della programmazione, ma sono chiaramente in grado di determinare i modelli del ciclo di vita del software e la durata del loro utilizzo, sulla base delle tendenze globali in quest'area. Una gestione efficace spesso produce risultati più tangibili. Sì, almeno tecnologie PR, pubblicità, ecc. L'utente potrebbe non aver bisogno di alcuna applicazione, ma se viene pubblicizzata attivamente, l'utente la installerà. Questo è già, per così dire, un livello subconscio (lo stesso effetto del 25° fotogramma, quando le informazioni vengono immesse nella coscienza dell'utente indipendentemente da lui).

Naturalmente, tali tecnologie sono proibite nel mondo, ma molti di noi non si rendono nemmeno conto che possono ancora essere utilizzate e influenzare in un certo modo il subconscio. Quanto costa “zombificare” i canali di notizie o i siti Internet, per non parlare dell’utilizzo di altro mezzi potenti, come l'esposizione agli infrasuoni (questo è stato utilizzato in una produzione d'opera), a seguito della quale una persona può provare paura o emozioni inappropriate.

Tornando al software, vale la pena aggiungere che alcuni programmi utilizzano un segnale acustico all'avvio per attirare l'attenzione dell'utente. E, come dimostra la ricerca, tali applicazioni sono più praticabili di altri programmi. Naturalmente aumenta anche il ciclo di vita del software, indipendentemente dalla funzione che gli è stata inizialmente assegnata. E, sfortunatamente, molti sviluppatori lo utilizzano, il che solleva dubbi sulla legalità di tali metodi.

Ma non sta a noi giudicare questo. È possibile che nel prossimo futuro vengano sviluppati strumenti per identificare tali minacce. Finora questa è solo una teoria, ma, secondo alcuni analisti ed esperti, fino a applicazione pratica Ne è rimasto ben poco. Se stanno già creando copie delle reti neurali del cervello umano, cosa possiamo dire?