El model de prototips, és l'activitat de crear prototips d'aplicacions de programari des de zero o de versions incompletes de programari ja desenvolupat. Aquesta activitat de l'Enginyeria de programari es pot comparar amb la creació de prototips en altres camps com l'Enginyeria mecànica o la manufactura. Un prototip típicament simula pocs aspectes del producte final, i fins i tot pot ser completament diferent.

Els prototips tenen una gran quantitat de beneficis: El dissenyador de programari pot obtenir informació important dels primers usuaris del projecte. El client pot comparar si el programari fet, coincideix amb el de la seva especificació acordada per construir el projecte. També permet tenir una idea sobre les estimacions inicials del projecte i si els terminis proposats es podran complir amb èxit. El grau d'exhaustivitat i les tècniques utilitzades en la creació de prototips han estat en desenvolupament i en debat des de la seva proposta el 1970.

Descripció L'objectiu d'un prototip és la de permetre als usuaris avaluar el projecte proposat pels desenvolupadors, i si és el cas, proposar-los requeriments que no han proposat. És una manera més fàcil per als desenvolupadors que no pas llegir un document amb tota la descripció del programa, i que pot ser un factor important en la relació comercial entre els desenvolupadors i els clients. El disseny interactiu fa un ús intensiu del prototipatge amb aquesta finalitat.

El prototip també es pot utilitzar pel consumidor final per descriure i provar els requirements que no han sigut considerats, i que poden ser un factor clau en la relació comercial entre els dissenyadors i els clients.John Crinnion: Evolutionary Systems Development, a practical guide to the use of prototyping :within a structured systems methodology. Plenum Press, New York, 1991. Page 18. El disseny d'interacció fa un gran ús del model de prototips.

Aquest model és diferent de l'utilitzat en els anys 1960 i 1970 on primer es construïa tot el programa i tot seguit es tractaven les incoherències entre el disseny i la implementació. Això comportava softwares més costos i unes estimacions de cost i de temps pobres. La pràctica del prototipat és un dels punts clau de Frederick Phillips Brooks, Jr en el seu llibre del 1975 anomenat The Mythical Man-Month i també en el seu article anomenat No Silver Bullet.

Un exemple a gran escala de prototips va ser la implementació del traductor NYU's Ada/ED pel llenguatge Ada (llenguatge de programació.) Va ser implementat utilitzant el llenguatge SETL amb la intenció de produir un model semàntic executable pel llenguatge ADA, centrant-se més en la qualitat del disseny i la interfície d'usuari que no pas la velocitat i l'eficiència. El sistema NYU Ada/ED va ser la primera aplicació validada en llenguatge ADA, certificada l'11 d'abril de 1983.

Esquema del procés de creació dels prototips El procés de creació de prototips consta dels següents passos: Identificar els requisits bàsics, on es determinen les necessitats bàsiques, com la informació d'entrada i sortida. Els detalls, com per exemple la seguretat, poden ser ignorats. Desenvolupar el prototip inicial, on bàsicament només inclou la interfície d'usuari) Anàlisis, on els clients i usuaris finals examinen el prototip, i donen informació sobre els canvis o noves característiques. Revisió i millora del prototip, on fent servir la informació del client s'improvisa el prototip. Si es produeixen canvis en l'especificació, és possible que s'hagin de repetir els passos 3 i 4.

Esquema del cicle de vida d'un sistema Definició del projecte En aquesta etapa s'identifiquen els problemes, objectius i es determinen els requeriments de la informació de la manera més objectiva possible. Disseny Una vegada recopilada tota la informació s'elabora un disseny lógic del sistema d'informació. Llavors es realitzen les descripcions formals, que implica dissenyar procediments per l'obtenció de dades, interfície amb l'usuari, una base de dades eficient, etc. Programació Aquesta etapa es tradueix les especificacions del disseny en un codi de programació. Instal·lació Consisteix a provar el sistema i es fan les primeres avaluacions. Post-implementació En aquesta etapa s'avalua el sistema constantment després d'entrar en funcionament.

Dimensions dels prototips Dimensió del prototip|miniatura Les dimensions que té un prototip són les següents:

Prototip horitzontal Proporciona una àmplia visió de tot un sistema, centrant-se més en la interacció de l'usuari en comptes de la funcionalitat del sistema a baix nivell, com per exemple l'accés a la base de dades. És especialment útil per a confirmar els requisits de la interfície d'usuari i la visió del sistema, per fer demostracions i obtenir més acceptació per part de les empreses, i finalment per fer estimacions preliminars del temps de desenvolupament, cost i esforç.

Prototip vertical És una elaboració molt més completa d'una funció o subsistema, especialment útil per a l'obtenció detallada de requisits d'una funció donada, on aporta els següents beneficis: Refinament del disseny de la base de dades Obtenir informació sobre volums de dades, les necessitats de la interfície del sistema, determinar la mida de la xarxa i l'enginyeria del rendiment Aclarir els requisits complexos aprofundint en la funcionalitat real del sistema

Tipus de processos per la creació de prototips Els models de prototips tenen moltes variants. Tot i així, tots ells estan basats d'alguna manera amb en els dos tipus més importants: els Prototips d'un sol ús (Throwaway Prototyping) i els Prototips evolutius (Evolutionary prototyping).

Prototip d'un sol ús Es refereix a la creació d'un model que més endavant es descartarà en comptes d'utilitzar-se en una part final del model creat. El motiu més obvi d'aquest tipus és que es pot desenvolupar molt ràpidament, llavors els usuaris poden veure si s'ajusta a les seves necessitats, i es poden refinar els aspectes millorables en el seu desenvolupament. Fer canvis al principi del cicle del desenvolupament és molt rendible, ja que no s'ha de refer res, tot just estem començant.

Això és un punt fort d'aquest tipus, ja que si modifiquem el projecte després d'haver fet una gran quantitat de feina, aquests petits canvis poden ser molt complicats de posar en practica, a causa de la gran dependència que pot tenir el software. Guanyem molta rapidesa i estalviem recursos valuosos. Un altre punt fort és la capacitat de construir interfícies que els usuaris poden provar, i ja que és una de les parts essencials del projecte (perquè l'usuari fa servir la interfície per veure el sistema) podem conèixer les seves opinions.

Un prototip d'un sol ús es refereixen a la creació de un model que serà descartat de manera eventual en lloc d'esdevenir part del programari final. Després de reunir els requisits preliminars, es construeix un model de treball senzill, una interfície que els usuaris podran provar per veure si s'ajusta als requisits que volen que tingui el sistema final.

Com que aquest tipus de prototips es fan després duna investigació relativament curta i el seu objectiu és proporcionar als usuaris l'opció de tornar :a revisar les seves expectatives i aclarir els seus requisits, el mètode utilitzat en la seva construcció sol ser força informal, fent que la seva :part més important sigui la rapidesa de creació. Un cop aconseguit el seu objectiu, aquest prototip serà “llançat” i el sistema es desenvoluparà de :manera formal segons els requisits identificats.John Crinnion: Evolutionary Systems Development, a practical guide to the use of prototyping :within a structured systems methodology. Plenum Press, New York, 1991. Page 18.

La raó obvia que justifica la utilització d'uns prototips que seran descartats és la rapidesa. Aplicar canvis al principi del cicle de vida del desenvolupament és molt rendible perquè no hi ha res que s'hagi de refer. Modificar un projecte després que s'hagi dut a terme una quantitat raonable de feina, pot provocar grans esforços d'implementació, ja que en l'enginyeria de programari existeixen moltes dependències i un petit canvi pot generar una cadena de modificacions que pot canviar tota l'estructura general del sistema. A més, la rapidesa també és imprescindible en els Prototips d'un sol ús pel que fa al seu propi desenvolupament, ja que no interessa dedicar molts temps i diners en la creació d'un prototip que serà descartat en un futur.

... És encertat afirmar que la creació de Prototips d'usar i llençar és la manera més eficaç per resoldre les qüestions relacionades amb les :necessitats dels usuaris i, per tant, un major realç de la producció general de programari. Els requeriments poden ser identificats, simulats i provats de manera més ràpida i barata quan s'ignoren els problemes evolutius, el manteniment i l'estructura del programari. Això, al mateix temps, :dona lloc a l'especificació exacta de les necessitats i la posterior construcció d'un sistema bàsic i utilitzable en perspectiva de l'usuari per :mitjà dels models de prototips.S. P. Overmyer: Revolutionary vs. Evolutionary Rapid Prototyping: Balancing Software Productivity and HCI Design :Concerns. Center of Excellence in Command, Control, Communications and Intelligence (C3I), George Mason University, 4400 University Drive, Fairfax, :Virginia.

Prototip evolutiu L'objectiu principal és la de construir un prototip molt robust d'una manera estructurada, constantment sota millores. El motiu d'aquest disseny és que a mesura que anem construint el prototip inicial, aquest serà el cor del nou sistema, i s'aniran construint millores i nous requisits a mesura que es vagi desenvolupant.

L'objectiu principal de la creació dels Prototips evolutius és crear un prototip molt robust de manera estructurada, constantment refinada i reconstruïda. Quan aquests prototips són construïts, es pretén que siguin el centre del nou sistema, i que a patir d'ell se li incorporin millores i nous requisits.

“... El Prototip evolutiu reconeix que no entenem tots els requisits i es basa només en aquells que s'entenen bé.”Alan M. Davis: Operational Prototyping: A new Development Approach. IEEE Software, September 1992. Page 71.

Aquesta tècnica permet a l'equip de desenvolupament agregar noves característiques, o fer canvis que no es podrien realitzar durant els requisits i la fase de disseny.

“Perquè un sistema sigui útil, te que ser capaç d'evolucionar a través del seu sistema operatiu previst. Un producte mai es “fa”, sempre esta :madurant com tal com el seu entorn d'ús canvia... Sovint tractem de definir un sistema utilitzant el nostre marc més familiar de referència d'on :estem ara. Fem suposicions sobre la forma en què es durant a terme els negocis i la seva base tecnològica. Un pla es promulgat per desenvolupar la :capacitat, i tard o d'hora, quelcom semblant al sistema final enllestit.”Software Productivity Consortium: Evolutionary Rapid Development. SPC document SPC-97057-CMC, version 01.00.04, June 1997. Herndon, Va. Page 6.

Aquests prototips, presenten un gran avantatge respecte als Prototips d'un sol ús, i és en que són sistemes funcionals. Encara que no tinguin totes les característiques que els usuaris han planificat, poden ser utilitzats de forma provisional fins que el sistema final s'enllesteix.

“No es estrany que en un entorn de creació de prototips l'usuari disposi d'un prototip per l'ús pràctic a l'espera d'una versió més desenvolupada... :L'usuari pot decidir que un sistema defectuós sigui millor que un sistema absolut.”

En els Prototips evolutius, els desenvolupadors poden enfocar-se en parts del sistema que puguin comprendre en lloc de treballar en el desenvolupament de tot el sistema.