Domanda

Chi sta vincendo nella "bassa vs alta fedeltà prototipazione" dibattito? Dovrebbe prototipo-zero (P0) la prima versione del prodotto finale? O dovrebbe essere P-0 sempre un usa e getta? Quale approccio è l'favorendo settore?

articolo Excelent da wikipedia: software di prototipazione

È stato utile?

Soluzione

Un prototipo dovrebbe essere sempre un usa e getta - un prototipo viene utilizzato per dimostrare rapidamente un concetto e influenzare il design del prodotto vero e proprio. In quanto tale, un sacco di cose che sono importanti per un prodotto vero e proprio (un'architettura e design pensiero-out, affidabilità, sicurezza, manutenibilità, ecc), si perdono per strada. Se fai prendere queste cose in considerazione durante la creazione del prototipo, non sei davvero costruendo più di un prototipo.

La mia esperienza con i prototipi in cui il codice direttamente evoluto in un prodotto reale dimostra che il risultato finale soffre a causa di esso - la mancanza di una vera e propria architettura ha provocato un sacco di codice acciottolata-insieme che doveva essere costantemente violato da aggiungere nuove caratteristiche. Ho anche visto un caso la tecnologia originale scelta per un rapido sviluppo del prototipo non era la scelta migliore per il prodotto reale, ed è stato necessario per la V2 una completa ri-scrittura.

Altri suggerimenti

Scrivi il prototipo, allora continuate a refactoring fino a quando non diventa il prodotto. La chiave è quello di non esitare a refactoring in caso di necessità.

Aiuta ad avere poche persone che lavorano su di esso inizialmente. Con troppe persone a lavorare su qualcosa, refactoring diventa più difficile.

Credo che siamo, i pedanti, abbiamo perso questa particolare battaglia - presunta "prototipi" (che per definizione dovrebbe essere riscritto da zero !!! -) sono infatti in fase di "evoluto" in (spesso cotto a metà "beta"), ecc.

Anche oggi, ho applaudito al tentativo intelligente da un mio collega di riconquistare il concetto , anche se il termine è una battaglia persa: lui è la creazione di un modo per prove del concetto di piccoli progetti da sviluppare (e, se il concetto venga dimostrato, trasferiti agli ingegneri del software per davvero la prototipazione, quindi lo sviluppo).

L'idea è che, nel nostro reparto, abbiamo molte persone che non sono (e non sono, infatti, suppone per essere -!) Gli sviluppatori di software, ma sono molto intelligente, esperto di computer , e in contatto quotidiano con la realtà "in trincea" - hanno sono quelli che hanno più probabilità di sentire l'odore un'opportunità per un certo potenziale di innovazione che potrebbero avere un impatto reale, una volta implementato come una "produzione- pronto" progetto software. I venditori, account manager, analisti di business, responsabili IT - presso la nostra azienda, tutti spesso si adattano a questa descrizione

.

Ma non sono andando a programmare in C ++, quasi per niente in Java, forse in Python, ma miglia di distanza da "productionized" - in realtà sono molto più probabile per improvvisare una prova intelligente di concetto in php, JavaScript, perl, bash, Excel VBA +, e diverse altre tecnologie "rapido e sporco" noi non neanche voglia di sogno su productionizing e sostenere per sempre -!)

Quindi, chiamando i loro prototipi "proof of concept", speriamo di incoraggiarli a incarnare i loro concetti audaci in forma concreta (blabberings vago linguaggio naturale e molto sventolio di mani che sono meno utili, ed estraneo alla cultura della società in ogni caso; -) e tuttavia fortemente indicano che tali progetti, se promosso a esistere fra gli obiettivi e le priorità degli ingegneri del software, c'è bisogno di essere programmato da zero - il concetto proof-of-serve, nel migliore dei casi, come un buon progetto / spec schizzo per quello che gli ingegneri stanno puntando per, sicuramente da non incrementale arricchito, ma rifatti dalla radice fino -!).

E 'presto per dire quanto bene questa idea funziona - mi chiedono in tre mesi, quando valutiamo gli sforzi del trimestre (in questo momento, stiamo solo fornendo un modello per loro, sulla scia della valutazione ultima Dipartimento per e società-saggio imprese del trimestre -!)

.

Risposta da BUNDALLAH, Hamisi

Un prototipo simula tipicamente solo alcuni aspetti delle caratteristiche del programma eventuale, e può essere completamente diverso da quello eventuale applicazione. Contrariamente a ciò che gli altri miei colleghi hanno suggerito in precedenza, non voglio consigliare il mio capo di optare per il buttare via prototipo di modello. Io sono con Anita su questo. Dati i due prototipi e le circostanze previste, vi consiglio caldamente la gestione (il mio capo) di optare per il modello prototipo evolutivo. L'azienda di essere grande con tutte le altre variabili indicate quali la complessità del codice, la novità del linguaggio di programmazione da utilizzare, non vorrei usare buttare via il prototipo del modello. Il buttare via prototipo diventa il punto di partenza da cui gli utenti possono rivedere le loro aspettative e chiarire le loro esigenze. Quando questo è stato raggiunto, il modello prototipo è 'buttato via', e il sistema è stato sviluppato formalmente in base alle esigenze individuate (Crinnion, 1991). Ma con questa situazione, gli utenti potrebbero non conoscere tutti i requisiti in una sola volta a causa della complessità dei fattori indicati in questa particolare situazione. prototipazione evolutiva è il processo di sviluppo di un sistema di computer da un processo di affinamento graduale. Ogni perfezionamento del sistema contiene una fase di sviluppo specifica del sistema e del software. In contrasto sia il tradizionale approccio a cascata e prototipazione incrementale, che ha richiesto a tutti di ottenere tutto a destra la prima volta questo approccio consente ai partecipanti di riflettere sulle lezioni apprese dal ciclo precedente (s). Si è soliti passare attraverso tre di questi cicli di affinamento graduale. Tuttavia non v'è nulla che possa impedire un processo di continua evoluzione, che è spesso il caso in molti sistemi. Secondo Davis (1992), una prototipazione evolutiva riconosce che non capiamo tutti i requisiti (come c'è stato detto sopra che il sistema è complesso, l'azienda è grande, il codice sarà complesso, e la lingua è abbastanza nuovo per il team di programmazione). L'obiettivo principale quando si utilizza evolutiva Prototyping è quello di costruire un prototipo molto robusto in modo strutturato e costantemente rifinirlo. La ragione di questo è che il prototipo evolutivo, quando costruito, costituisce il cuore del nuovo sistema, ed i miglioramenti e ulteriori requisiti sarà costruito. Questa tecnica permette al team di sviluppo per aggiungere funzioni, o di apportare modifiche che non poteva essere concepito durante i requisiti e fase di progettazione. Per un sistema per essere utile, deve evolvere in seguito all'uso nel suo ambiente operativo previsto. Un prodotto non è mai "fatto"; è sempre maturando come il cambiamento dell'ambiente di utilizzo. Sviluppatori spesso cercano di definire un sistema che utilizza la cornice più familiare di riferimento - dove sono attualmente (o meglio, lo stato attuale del sistema). Fanno ipotesi circa il modo in cui sarà condotta aziendale e la base tecnologica su cui sarà attuato il business. Un piano è emanata per sviluppare la capacità, e, prima o poi, qualcosa di simile al sistema previsto è consegnato. (SPC, 1997). Prototipi evolutivi hanno un vantaggio rispetto Throwaway Prototipi in quanto sono sistemi funzionali. Anche se non possono avere tutte le caratteristiche che gli utenti hanno in programma, essi possono essere utilizzati su base provvisoria fino a quando il sistema finale viene consegnato. In Evolutionary Prototyping, gli sviluppatori possono concentrarsi stessi per sviluppare le parti del sistema che comprendano invece di lavorare sullo sviluppo di un intero sistema. Per ridurre al minimo il rischio, lo sviluppatore non implementa funzionalità poco conosciuta. Il sistema parziale viene inviato ai siti dei clienti. Dato che gli utenti lavorano con il sistema, rilevano le opportunità di nuove funzionalità e dare le richieste di queste funzionalità per gli sviluppatori. Gli sviluppatori poi prendere queste richieste di miglioramento insieme con loro e utilizzare pratiche di gestione della configurazione audio per modificare il software-requisitispecificazione, aggiornare la progettazione, ricodificare e ripetere il test. (Bersoff e Davis, 1991). Tuttavia, i problemi principali con la prototipazione evolutiva sono dovuti a cattiva gestione: mancanza di tappe precise, mancanza di realizzazione - sempre rimandare quello che sarebbe nel presente prototipo fino alla successiva, la mancanza di una corretta valutazione, mancanza di chiarezza tra un prototipo e un sistema implementato, la mancanza di impegno continuo da parte degli utenti. Questo processo richiede un maggior grado di impegno sostenuto da parte degli utenti per un arco di tempo più lungo di sempre richiesto. Gli utenti devono essere costantemente informati su ciò che sta accadendo e di essere completamente a conoscenza delle aspettative dei 'prototipi'.

Riferimenti

Bersoff, E., Davis, A. (1991). Impatti dei modelli del ciclo di vita del software di gestione della configurazione. Comm. ACM.

Crinnion, J. (1991). Evolutionary Sistemi di sviluppo, una guida pratica per l'uso di prototipazione all'interno di una metodologia strutturata sistemi. Plenum Press, New York.

Davis, A. (1992). Prototipazione operativa: Un nuovo approccio allo sviluppo. IEEE Software.

Software Produttività Consortium (SPC). (1997). Rapido sviluppo evolutivo. SPC documentare SPC-97.057-CMC, la versione 01.00.04.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top