1.1.1.
PROBLEMA GENERAL
¿Cómo determinar la influencia de la metodología de prototipos en la calidad
de un software desarrollado, empleando los principios, lineamientos de esta
metodología?
1.2. OBJETIVOS DE LA INVESTIGACION
1.2.1. Objetivo general
- Conocer los principios y teorías de la metodología de prototipos y los
casos de aplicación con éxito en los proyectos de desarrollo de software
en el Perú.
1.2.2. Objetivos específicos
- Determinar la influencia del uso de la metodología de prototipos en la
eficiencia del desarrollo de un software.
- Determinar las ventajas y desventajas de usar la metodología de
prototipos, en los proyectos de desarrollo de software.
- Conocer los casos donde se aplicó exitosamente la metodología de
prototipos en el Perú.
1.3. HIPOTESIS DE LA INVESTIGACION
1.3.1. HIPOTESIS GENERAL
Es posible conocer los principios y teorías de la metodología de prototipos
mediante el análisis de un caso de aplicación, que utiliza esta metodología.
1.3.2. HIPOTESIS ESPECIFICAS
- El uso de la metodología de prototipos determina la eficiencia de un
software terminado.
- En el Perú la metodología de prototipos es bastante usada por que
permite realizar cambios antes del entregable final.
CAPITULO II
MARCO TEORICO
2.1. BASES TEORICAS
2.1.1. EL SOFTWARE
El software de computadora es el producto que construyen los
programadores profesionales y al que después le dan mantenimiento
durante un largo tiempo. Incluye programas que se ejecutan en una
computadora de cualquier tamaño y arquitectura, contenido que se
presenta a medida de que se ejecutan los programas de cómputo e
información descriptiva tanto en una copia dura como en formatos
virtuales que engloban virtualmente a cualesquiera medios
electrónicos. La Ingeniería de Software esta formada por un proceso,
1
un conjunto de métodos (practicas) y un arreglo de herramientas que
permite a los profesionales elaborar software de computo de alta
calidad. (Pressman, 2010)
Por lo general, un sistema de software consiste en diversos
programas independientes, archivos de configuración que se utilizan
para ejecutar estos programas, un sistema de documentación que
describe la estructura del sistema, la documentación para el usuario
que explica como utilizar el sistema y sitios web que permitan a los
usuarios descargar la información de productos recientes.
(Sommerville, 2005)
El desarrollo de Software, es posiblemente una de las áreas que van
avanzando a pasos agigantados con el paso del tiempo, pero también
con mayor discreción, si bien es cierto que hoy la sociedad puede
disfrutar de una gran cantidad de software con muchísimas
funciones, esta nunca se percata de la existencia del desarrollo del
software como tal, para la sociedad el software hoy en dia es
importante para poder subsistir, sin importar de donde provenga.
Incluso las personas están tan acostumbrados a hacer uso de
diversos tipos de software, que sin ellos el cambio seria sumamente
radical en sus vidas.
[Link]. LA IMPORTANCIA DEL SOFTWARE EN LA
SOCIEDAD
El software es importante porque afecta a casi todos
aspectos de nuestras vidas y ha invadido nuestro
2
comercio, cultura y actividades cotidianas. La ingeniería
de software es importante porque nos permite construir
sistemas complejos en un tiempo razonable y con alta
calidad. (Pressman, 2010)
Está claro lo que es el software, hablando en lenguaje que
las personas entiendan, son los programas que se
ejecutan dentro de una computadora, empezando por el
sistema operativo, acompañado de cualquier de los
programas que tengas en tu computadora, sin el software,
solamente estaríamos frente a un grupo de chips, cables
y aparatos sin funcionamiento.
Sin embargo, la sociedad actual ya no podría vivir sin el
software, aunque esta no se percate de ello lo podemos
ver simplemente en la cantidad de personas que utilizan
una computadora hoy en dia, lo podemos apreciar
claramente en el uso domestico de compitadoresm
aunque este se ha reducido considerablemente.
Incrementando la presencia de tablets o teléfonos
inteligentes.
Esta década quedara marcada como la época en la que
los dispositivos moviles tomaron el mando de la
tecnología, el software se sigue modernizando
llevandonos a limites que tal bez hace 10 años jamás
imaginamos, sin embargo hoy podemos disfrutar de
3
software de altísima calidad, con lo cual podemos
destacar el desarrollo del software a un nivel que nos
permite diferencia entre una época y la otra.
[Link]. BENEFICIOS DEL SOFTWARE PARA LA SOCIEDAD
Hablemos de beneficios, hoy en día un teléfono celular
puede realizar funciones que jamás imaginaste, puedes
automatizar tu vida, programar alertas para saber que
hacer a cada hora y que no olvidar nada, poder
comunicarte con personas en cualquier parte del mundo
gracias al desarrollo del software móvil que se viene
generando desde principios de la década.
[Link]. CARACTERISTICAS DEL SOFTWARE
Según Pressman el software es elemento de un sistema
lógico y no de uno físico. Por tanto, tiene características
que difieren considerablemente de las del hardware.
El software se desarrolla o modifica con intelecto;
no se manufactura en el sentido clásico.
El software no se “desgasta”
Aunque la industria se mueve hacia la
construcción basada en componentes, la mayor
parte del software se construye para un uso
individualizado. (Pressman, 2010)
4
Según Sommerville las características esenciales de un
sistema de software bien diseñado son:
Mantenibilidad
Confiabilidad
Eficiencia
Usabilidad (Sommerville, 2005)
Podemos decir que el software es un elemento del
sistema que es lógico. Una forma mas sencilla de
interpretar las características del software seria de la
siguiente manera:
El software se desarrolla, no se fabrica.
El software no se estropea.
Los softwares se construyen a medida, en vez de
ensamblar componentes existentes.
[Link]. ELEMENTOS DEL SOFTWARE
5
Documentacion: Programas:
Describe el Cuando se ejecutan
funcionamiento, la realizan una o varias
estructura, operacion funciones con el
y uso de los rendimiento
programas. esperado.
Estructuras de Datos: Permiten
que los programas manipulen
adecuadamente la informacion.
2.1.2. PROBLEMAS EN LA PLANIFICACION DE UN PROYECTO DE
SOFTWARE
A. ESTABLECER EL AMBITO DEL SOFTWARE
Describe la función, el rendimiento, las restricciones, las
interfaces y la fiabilidad.
Se evalúan las funciones descritas en el enunciado del
ámbito o se refinan.
Las consideraciones de rendimiento abarcan los requisitos
de tiempos de respuesta y de procesamiento.
Las restricciones marcan los límites del software debidos al
hardware externo, la memoria disponible y otros sistemas
existentes.
6
Para la obtención de la información necesaria para el ámbito, o
sea para acercar al cliente y al desarrollador (ingeniero del
software, analista), y para hacer que comience el proceso de
comunicación es establecer una reunión o entrevista preliminar.
Se sugiere que el analista comience haciendo preguntas de que
lleven a un entendimiento básico del problema.
• El primer conjunto de cuestiones se centra en el cliente, en
los objetivos globales y en los beneficios.
• El siguiente conjunto de cuestiones permiten que el analista
comprenda mejor el problema y que el cliente exprese sus
percepciones sobre una solución.
• La última serie de preguntas se centra en la efectividad de
la reunión, son conocidas como Meta-Cuestiones:
¿es usted la persona apropiada para responder a
estas preguntas?
¿son oficiales sus respuestas?
¿son relevantes mis preguntas para su problema?
¿hago muchas preguntas?
¿existe alguien más que pueda proporcionar más
información?
¿hay algo más que deba preguntarle?
Esta sesión de preguntas-y-respuestas solo se debería utilizar en
el primer encuentro, reemplazándose posteriormente por un tipo
7
de reunión que combine elementos de resolución de problemas,
negociación y especificación.
B. ESTIMACIÓN DE LOS RECURSOS REQUERIDOS
La segunda tarea en la planificación, es la estimación de los
recursos requeridos para acometer el esfuerzo de desarrollo
software. - Personas, recursos humanos - Componentes de
software reutilizables (componentes ya desarrollados o
experimentados), que reducen el coste de desarrollo y aceleran
la entrega. - Componentes nuevos - Recursos de ingeniería de
software y de hardware. Cada recurso se especifica con 4
características:
Descripción del recurso,
Informe de disponibilidad,
Fecha en la que se requiere,
Tiempo durante el que será utilizado.
C. ESTIMACION DEL PROYECTO DE SOFTWARE
En el principio el costo del software constituía un pequeño
porcentaje del costo total de los sistemas basados en
computadoras. Hoy en día el software es el elemento más caro
de la mayoría de los sistemas informáticos. Es una pequeña
planeación sobre qué es lo que va a ser mi proyecto. Una de las
actividades cruciales del proceso de gestión del proyecto del
software es la planificación.
8
Cuando se planifica un proyecto de software ese tiene que
obtener estimaciones de esfuerzo humano requerido, de la
duración cronológica del proyecto y del costo. Pero en muchos
de los casos las estimaciones se hacen valiéndose de la
experiencia pasada como única guía. Si un proyecto es bastante
similar en tamaño y funciona un proyecto pasado es probable que
el nuevo requiera aproximadamente la misma cantidad de
esfuerzo, que dure aproximadamente lo mismo que el trabajo
anterior. Si el proyecto es distinto entonces puede que las
experiencias obtenidas no sean suficientes.
La planeación efectiva de un proyecto de software depende de la
planeación detallada de su avance, anticipando problemas que
puedan surgir y preparando con anticipación soluciones
tentativas a ellos. Se supondrá que el administrador del proyecto
es responsable de la Planeación desde la definición de requisitos
hasta la entrega del sistema terminado.
Los puntos analizados posteriormente generalmente son
requeridos por grandes sistemas de programación, sin embargo,
estos puntos son validos también para sistemas pequeños.
Panorama. Hace una descripción general del proyecto
detalle de la organización del plan y resume el resto del
documento.
9
Plan de fases. Se analiza el ciclo de desarrollo del proyecto
como es: análisis de requisitos, fase de diseño de alto nivel,
fase de diseño de bajo nivel, etc. Asociada con cada fase
debe de haber una fecha que especifique cuando se debe
terminar estas fases y una indicación de cómo se pueden
solapar las distintas fases del proyecto.
Plan de organización. Se defínelas responsabilidades
específicas de los grupos que intervienen en el proyecto.
Plan de pruebas. Se hace un esbozo general de las
pruebas y de las herramientas, procedimientos y
responsabilidades para realizar las pruebas del sistema.
Plan de control de modificaciones. Se establece un
mecanismo para aplicar las modificaciones que se
requieran a medida que se desarrolle el sistema.
Plan de documentación. Sus funciones definir y controlar
la documentación asociada con el proyecto.
Plan de capacitación. Se describe la preparación de los
programadores que participan en el proyecto y las
instrucciones a los usuarios para la utilización del sistema
que se les entregue.
Plan de revisión e informes. Se analiza cómo se informa
del estado del proyecto y se definen las revisiones formales
asociadas con el avance de proyecto.
10
Plan de instalación y operación. Se describe el
procedimiento para instalar el sistema en la localidad del
usuario.
Plan de recursos y entregas. Se resume los detalles
críticos del proyecto como fechas programadas, marcas de
logros y todos los artículos que deben entrar bajo contrato.
Índice. Se muestra en donde encontrar las cosas dentro del
plan.
Plan de mantenimiento. Se establece un bosquejo de los
posibles tipos de mantenimiento que se tienen que dar para
futuras versiones del sistema.
Errores
Errores clásicos en un proyecto de software
Mal análisis en los requerimientos.
Una mala planeación.
No tener una negociación (documento, contrato) con el
cliente.
No hacer un análisis costo beneficio.
Desconocer el ambiente de trabajo de los usuarios.
Desconocer los usuarios que trabajan con el sistema.
Mala elección de recursos (hardware, software, humanos).
Herramientas para la planificación y Gestión de productos
Software.
11
Para poder completar con éxito un proyecto de software, se necesita
tener un control riguroso sobre el tiempo, las personas o los
imprevistos que puedan surgir, como por ejemplo cambios en el
software. Para ayudarnos en la planificación y gestión de proyectos,
Microsoft nos proporciona dos herramientas básicas: Microsoft
Project y Microsoft Solutions Framework.
2.1.3. PROBLEMAS DEL EQUIPO DE UN PROYECTO DE SOFTWARE
Un error frecuente en empresas de programación es tener a todo el
mundo haciendo de todo. Aunque eso en algún que otro escenario
puede funcionar bien, causa que esas personas no puedan
emitir estimados de calidad, ya que les resulta imposible poder
determinar cuánto tiempo van a dedicar a cada tarea.
Es por ello que los roles dentro de un equipo de programación deben
ser lo más dedicados posible. Obviamente, dependiendo del tamaño
de la aplicación, del tiempo y de los recursos disponibles, el equipo
podrá ser de un tamaño u otro. Pero hay una serie de puestos que
son imprescindibles para que todo funcione adecuadamente.
Estos puestos tienen unas responsabilidades bien definidas. Los
puestos que mínimamente se deben cumplir son los siguientes:
JEFE DE PROYECTO
Es el encargado de realizar el análisis de los requerimientos del
cliente. De hacer el seguimiento diario de las tareas y de resolver
12
cualquier problema de comunicación con otros equipos si los hubiera.
En el caso de que este equipo se convierta en cliente de otro equipo,
esta persona es la que se encarga de realizar la comunicación con
ellos. Obligatoriamente tiene que tener un background de
programador, necesita entender a los programadores y la
problemática a la que se enfrentan diariamente para poder asegurar
que los requerimientos recogen toda la información necesaria para
poder realizar la tarea. Es el responsable de que la implementación
de esos requerimientos se haga correctamente.
LÍDER DE EQUIPO
Es el programador líder, debe ser alguien senior, con capacidad
organizativa. Se encarga de redactar y mantener actualizados los
requerimientos. También se encarga de escribir las especificaciones
técnicas y crear las tareas, asignándolas a los desarrolladores de su
equipo. Sus tareas de programación deben limitarse única y
exclusivamente a la arquitectura, marcando la línea a seguir por el
resto de programadores. Aparte de esto, tiene que revisar el trabajo
de los programadores a su cargo para asegurar la calidad del código
escrito.
DESARROLLADOR
Es un programador, que se encarga de ejecutar el trabajo asignado
por el líder del equipo. En un proyecto de software, normalmente el
13
20% del código constituye arquitectura y el 80% restante consiste en
utilizar esa arquitectura para completar los requerimientos. Los
desarrolladores son los encargados de completar ese 80%.
DISEÑADOR GRÁFICO Y UX
Este rol consiste en, a nivel de UX, realizar los flujos de
trabajo dentro de una aplicación a nivel de mockups, para determinar
posteriormente, los diseños que habrá que realizar y como se va a
comportar la aplicación. Posteriormente, es el encargado de realizar
el diseño gráfico de las pantallas que compone la aplicación,
atendiendo a las reglas de UX que determinen la posición de los
elementos, los esquemas de colores, tipografías, etc.
LÍDER DE CALIDAD
Debe ser alguien con conocimientos de programación y análisis, que
sea capaz, utilizando los requerimientos, de desarrollar una suite de
tests que verifiquen que el software cumple con los requerimientos.
El líder de calidad es el último responsable de que las características
funcionan tal y como se han especificado en los requerimientos.
INGENIERO EN CALIDAD
Es un programador o alguien con conocimientos de programación,
encargado de escribir la suite de tests para automatizar el testeo del
programa.
14
Si se desarrollan productos de software, por lo general, estos deben
venir acompañados de algún tipo de documentación, para ello, se
necesitarían dos roles más:
LÍDER DE DOCUMENTACIÓN
Alguien con conocimientos técnicos, capaz de entender los
requerimientos y, a partir de ellos, generar la documentación
necesaria, se encarga de organizar el contenido a escribir y marcar
la línea a seguir en cuanto a documentación.
DOCUMENTADOR TÉCNICO
También debe tener un trasfondo técnico, para poder escribir
contenido que tenga significado y se utilice el vocabulario adecuado.
Su objetivo es completar la documentación sobre todas las
características del producto.
2.1.4. PROBLEMAS DE LA TECNOLOGÍA UN PROYECTO DE
SOFTWARE
La tecnología cambia rápidamente:
Las nuevas versiones de los sistemas operativos salen cada pocos
años, por ejemplo, hace unos veinte años estábamos trabajando con
MS-DOS, y ahora prácticamente nadie lo recuerda.
Hoy en día, cualquier software nuevo, es casi seguro que será
construido con una estructura de aplicaciones empresariales o
15
frameworks como Java de Sun Microsystems 2 Enterprise Edition
(J2EE) o Microsoft NET. Estos frameworks en los que se basan gran
número de aplicaciones, van evolucionando, proporcionando nuevas
características o modificando las existentes.
Resumiendo, las tecnologías de desarrollo de software cambian más
rápido que otras tecnologías, como pueden ser las de la
construcción.
La tecnología es un dominio muy vasto:
En el desarrollo de software se utilizan muchas tecnologías,
normalmente estas cambian en cada proyecto, y se utilizan varias a
la vez, por lo que la complejidad aumenta y los programadores no
llegan a tener nunca una experiencia amplia en un juego de
tecnologías concreto.
Cómo factor agravante, cada año aparecen nuevas tecnologías en el
mercado, que, aunque pueden tener funcionalidades interesantes,
requieren aprendizaje.
La experiencia en tecnología es incompleta:
Las tecnologías de desarrollo de software se quedan obsoletas en
muy poco tiempo, apareciendo nuevas tecnologías.
Esto implica que parte de los conocimientos y la experiencia
adquirida con una tecnología particular pierda valor, y que los
16
desarrolladores estén aprendiendo nuevas tecnologías a la vez que
está desarrollando con ellas.
2.1.5. Metodologías tradicionales
Las metodologías tradicionales se caracterizan por exponer procesos
basados en planeación exhaustiva.
Esta planeación se realiza esperando que el resultado de cada
proceso sea determinístico y predecible.
La experiencia ha mostrado que, como consecuencia de las
características del software, los resultados de los procesos no son
siempre predecibles y sobre todo, es difícil predecir desde el
comienzo del proyecto cada resultado. Sin embargo, es posible por
medio de la recolección y estudio de métricas de desarrollo lograr
realizar estimaciones acertadas en contextos de desarrollo
repetibles.
Remontándose a la historia, el modelo de cascada fue uno de los
primeros modelos de ciclo de vida (MCV) que formalizó un conjunto
de procesos de desarrollo de software. Este MCV describe un orden
secuencial en la ejecución de los procesos asociados. El modelo
espiral se postuló como una alternativa al modelo de cascada. La
ventaja de este modelo radica en el perfeccionamiento de las
soluciones encontradas con cada ciclo de desarrollo, en términos de
dar respuesta a los requerimientos inicialmente analizados. El
17
modelo de cascada y el modelo espiral suponen, de manera general,
que los requerimientos del cliente no cambian radicalmente en el
transcurso del desarrollo del sistema.
Por otro lado, la realización de prototipos es una herramienta en la
que se apoyan diferentes MCV. Un prototipo debe tener el objetivo
de mostrar al cliente o a la gerencia del proyecto el resultado que se
obtendrá de la implementación de cada uno de los requerimientos
del cliente una vez terminado el desarrollo. Con los prototipos se
tiene la posibilidad de obtener retroalimentación de manera
temprana.
La solución a algunos de los problemas presentados por las
metodologías tradicionales se logra con una gran evolución del
modelo espiral. El proceso unificado propone la elaboración de varios
ciclos de desarrollo, donde cada uno finaliza con la entrega al cliente
de un producto terminado. Este se enmarca entre los conocidos
modelos iterativo-incremental.
2.1.6. Metodologías ágiles
Grupos de desarrollo han experimentado soluciones que basan su
fundamento en la adaptabilidad de los procesos de desarrollo, en
lugar de seguir esperando lograr resultados predecibles de un
proceso que no evoluciona. Esta comunidad de desarrolladores e
investigadores han nombrado su trabajo bajo lo que conocemos
18
como metodologías ágiles. Las metodologías ágiles como puede
entenderse mal, no están en
contra de administrar procesos de desarrollo. Por el contrario,
promueve la formalización de procesos adaptables. La compilación
de los principios y valores que resaltan las metodologías ágiles fue
formalizada en el manifiesto para el desarrollo de software ágil. Este
documento desarrollado por los representantes de cada una de las
metodologías que en el momento se presentaban como ágiles, logra
resumir en un conjunto de ideas las prácticas que una metodología
de este estilo debe llevar a cabo. Como característica fundamental,
la habilidad de responder al cambio es la principal característica de
las metodologías ágiles.
XP, una de las más difundidas, es una metodología de desarrollo de
software ágil que define pocas reglas y pocas prácticas. XP
promueve la adaptabilidad de los procesos de desarrollo basándose
en los principios y prácticas que presenta. Quienes trabajan usando
XP deben seguir procesos disciplinados, pero más que eso, deben
combinar la disciplina con la adaptabilidad necesaria del proceso.
Las metodologías de Cristal se basan en el principio de que tipos
diferentes de proyectos requieren tipos diferentes de metodologías.
La metodología escogida debe depender de dos factores: el número
de personas en el proyecto, y las consecuencias de los errores.
Conforme al principio de las metodologías ágiles, Scrum recalca la
19
imposibilidad de encontrar procesos definidos y repetibles cuando no
existen problemas, personas, ni ambientes definidos y repetibles.
2.1.7. Ciclo de Vida del Software
[Link]. Análisis y definición de requerimientos
Se obtiene todos los requerimientos del servicio,
restricciones y metas del sistema.
Se definen a partir de las consultas a los usuarios.
Se recoge todas las especificaciones del sistema
Se recoge todas las especificaciones del software
[Link]. Diseño del sistema y del software
Se establece la arquitectura del sistema
Divide los requerimientos en hardware y software y
sus relaciones
[Link]. Implementación y Pruebas
El diseño de software se hace como un conjunto de
unidades de programas (“módulos”) sistema.
Las pruebas de esta etapa se llaman pruebas de
unidad y tienen como objetivo velar que cada parte
cumpla su especificación
[Link]. Integración y Pruebas
Las unidades de programa (módulos) se integran
20
Las pruebas de esta etapa se llaman pruebas de
integración y asegura que se cumplan los
requerimientos de software.
Después de estas pruebas exitosas se entrega el
producto al cliente
[Link]. Funcionamiento y Mantenimiento
Por lo general es la etapa más larga del ciclo de vida
del software.
Luego de instalado el software, la etapa de
mantenimiento incluye la corrección de errores no
descubiertos en las etapas anteriores, mejorar las
implementaciones y ajustar nuevos requerimientos.
A partir de esta fase la cascada se devuelve a
cualquiera de las etapas anteriores
2.1.8. MODELO DE PROTOTIPADOS
[Link]. ¿Qué es un prototipo?
Un prototipo en sentido genérico es una implementación parcial pero
concreta de un sistema o una parte de este que principalmente se
crean para explorar cuestiones sobre aspectos muy diversos del
sistema durante el desarrollo de este.
[Link].1. Características de un prototipo
Son formidables herramientas de:
21
Comunicación entre todos los componentes del
equipo de desarrollo y los usuarios.
Participación, para integrar activamente a los
usuarios en el desarrollo.
Dan soporte a los diseñadores a la hora de escoger
entre varias alternativas. Permiten a los diseñadores
explorar diversos conceptos del diseño antes de
establecer los definitivos.
Permiten evaluar el sistema desde las primeras fases
del desarrollo (facilitan la exploración de ideas sobre
nuevos conceptos tecnológicos).
Son esenciales para la documentación, tanto de
conceptos funcionales del sistema como de tareas
concretas del mismo.
Son el primer paso para que ideas abstractas sean
concretas, visibles y testeables.
Fomentan la iteratividad.
Mejoran la calidad y la completitud de las
especificaciones funcionales del sistema.
Son herramientas de propósito general, pues sirven
para comprobar la fiabilidad técnica de una idea,
clarificar requisitos que quedaron “indeterminados” o
ver cómo responde con el resto de la aplicación.
22
[Link]. Modelo de prototipos
El Modelo de prototipos, en Ingeniería de software, pertenece a los
modelos de desarrollo evolutivo. El prototipo debe ser construido en
poco tiempo, usando los programas adecuados y no se debe utilizar
muchos recursos.
El diseño rápido se centra en una representación de aquellos aspectos
del software que serán visibles para el cliente o el usuario final. Este
diseño conduce a la construcción de un prototipo, el cual es evaluado
por el cliente para una retroalimentación; gracias a ésta se refinan los
requisitos del software que se desarrollará. La interacción ocurre
cuando el prototipo se ajusta para satisfacer las necesidades del
cliente. Esto permite que al mismo tiempo el desarrollador entienda
mejor lo que se debe hacer y el cliente vea resultados a corto plazo.
El software, como todos los sistemas complejos, evoluciona en el
tiempo. Es frecuente que los requerimientos del negocio y del
producto cambien conforme avanza el desarrollo, lo que hace que no
sea realista trazar una trayectoria rectilínea hacia el producto final;
los plazos apretados del mercado hacen que sea imposible la
terminación de un software perfecto, pero debe lanzarse una versión
limitada a fin de aliviar la presión de la competencia o del negocio;
se comprende bien el conjunto de requerimientos o el producto
básico, pero los detalles del producto o extensiones del sistema aún
están por definirse. En estas situaciones y otras parecidas se necesita
23
un modelo de proceso diseñado explícitamente para adaptarse a un
producto que evoluciona con el tiempo. (Pressman, Ingenieria del
Software, 2010)
[Link]. Modelo Evolutivo
Los modelos evolutivos son modelos iterativos, permiten desarrollar
versiones cada vez más completas y complejas, hasta llegar al
objetivo final deseado; incluso evolucionar más allá, durante la fase
de operación. (Pressman, Ingenieria del Software, 2010)
La idea detrás de este modelo es el desarrollo de una implantación
del sistema inicial, exponerla a los comentarios del usuario, refinarla
en N versiones hasta que se desarrolle el sistema adecuado. Una
ventaja de este modelo es que se obtiene una rápida realimentación
del usuario, ya que las actividades de especificación, desarrollo y
pruebas se ejecutan en cada iteración.
[Link]. Hacer prototipos
Es frecuente que un cliente defina un conjunto de objetivos generales
para el software, pero que no identifique los requerimientos
detallados para las funciones y características. En otros casos, el
desarrollador tal vez no esté seguro de la eficiencia de un algoritmo,
de la adaptabilidad de un sistema operativo o de la forma que debe
adoptar la interacción entre el humano y la máquina. En estas
24
situaciones, y muchas otras, el paradigma de hacer prototipos tal vez
ofrezca el mejor enfoque.
Aunque es posible hacer prototipos como un modelo de proceso
aislado, es más común usarlo como una técnica que puede
implementarse en el contexto de cualquiera de los modelos de
proceso descritos en este capítulo. Sin importar la manera en la que
se aplique, el paradigma de hacer prototipos le ayudará a usted y a
otros participantes a mejorar la comprensión de lo que hay que
elaborar cuando los requerimientos no están claros. El paradigma de
hacer prototipos (véase la figura 2.6) comienza con comunicación.
Usted se reúne con otros participantes para definir los objetivos
generales del software, identifica cualesquiera requerimientos que
conozca y detecta las áreas en las que es imprescindible una mayor
definición. Se planea rápidamente una iteración para hacer el
prototipo, y se lleva a cabo el modelado (en forma de un “diseño
rápido”). Éste se centra en la representación de aquellos aspectos del
software que serán visibles para los usuarios finales (por ejemplo,
disposición de la interfaz humana o formatos de la pantalla de
salida). El diseño rápido lleva a la construcción de un prototipo. Éste
se entrega y es evaluado por los participantes, que dan
retroalimentación para mejorar los requerimientos. La iteración
ocurre a medida que el prototipo es afinado para satisfacer las
necesidades de distintos participantes, y al mismo tiempo le permite
a usted entender mejor lo que se necesita hacer. El ideal es que el
25
prototipo sirva como mecanismo para identificar los requerimientos
del software. Si va a construirse un prototipo, pueden utilizarse
fragmentos de programas existentes o aplicar herramientas (por
ejemplo, generadores de reportes y administradores de ventanas) que
permitan generar rápidamente programas que funcionen.
En la mayoría de los proyectos es raro que el primer sistema
elaborado sea utilizable. Tal vez sea muy lento, muy grande, difícil
de usar o todo a la vez. No hay más alternativa que comenzar de
nuevo, con más inteligencia, y construir una versión rediseñada en la
que se resuelvan los problemas. (Brooks, 1995)
[Link].1. Inconvenientes de hacer prototipos
El prototipo sirve como “el primer sistema”. Lo que Brooks
recomienda es desecharlo. Pero esto quizá sea un punto de vista
idealizado. Aunque algunos prototipos se construyen para ser
“desechables”, otros son evolutivos; es decir, poco a poco se
transforman en el sistema real. Tanto a los participantes como a
los ingenieros de software les gusta el paradigma de hacer
prototipos. Los usuarios adquieren la sensación del sistema real,
y los desarrolladores logran construir algo de inmediato. No
obstante, hacer prototipos llega a ser problemático por las
siguientes razones:
1. Los participantes ven lo que parece ser una versión funcional
del software, sin darse cuenta de que el prototipo se obtuvo
de manera caprichosa; no perciben que en la prisa por hacer
26
que funcionara, usted no consideró la calidad general del
software o la facilidad de darle mantenimiento a largo plazo.
Cuando se les informa que el producto debe rehacerse a fin
de obtener altos niveles de calidad, los participantes gritan
que es usted un tonto y piden “unos cuantos arreglos” para
hacer del prototipo un producto funcional. Con demasiada
frecuencia, el gerente de desarrollo del software cede.
2. Como ingeniero de software, es frecuente que llegue a
compromisos respecto de la implementación a fin de hacer
que el prototipo funcione rápido. Quizá utilice un sistema
operativo inapropiado, o un lenguaje de programación tan
sólo porque cuenta con él y lo conoce; tal vez implementó
un algoritmo ineficiente sólo para demostrar capacidad.
Después de un tiempo, quizá se sienta cómodo con esas
elecciones y olvide todas las razones por las que eran
inadecuadas. La elección de algo menos que lo ideal ahora
ha pasado a formar parte del sistema.
Aunque puede haber problemas, hacer prototipos es un
paradigma eficaz para la ingeniería de software. La clave es
definir desde el principio las reglas del juego; es decir, todos los
participantes deben estar de acuerdo en que el prototipo sirva
como el mecanismo para definir los requerimientos. Después se
descartará (al menos en parte) y se hará la ingeniería del software
27
real con la mirada puesta en la calidad. (Pressman, Ingenieria del
Software, 2010)
[Link]. Tipos de desarrollo evolutivo
Desarrollo Exploratorio
El objetivo de este enfoque es explorar con el usuario los requisitos hasta
llegar a un sistema final. El desarrollo comienza con las partes que se
tiene más claras. El sistema evoluciona conforme se añaden nuevas
características propuestas por el usuario.
Enfoque utilizando prototipos
El objetivo es entender los requisitos del usuario y trabajar para mejorar
la calidad de los requisitos. A diferencia del desarrollo exploratorio, se
comienza por definir los requisitos que no están claros para el usuario y
se utiliza un prototipo para experimentar con ellos. El prototipo ayuda a
terminar de definir estos requisitos.
[Link]. Etapas
Recolección y refinamiento de requisitos.
Modelado, diseño rápido.
Construcción del Prototipo.
Desarrollo, evaluación del prototipo por el cliente.
Refinamiento del prototipo.
Producto de Ingeniería.
28
Se comienza elaborando un prototipo del producto final: que aspecto
tendrá, como funcionará. Para muchas interfaces de usuario, este modelo
puede resultar tana simple como unos dibujos en lápiz y papel o tan
complejo como el propio código operativo final. Para interfaces
de hardware o estaciones de trabajo, el modelo puede consistir en maquetas
de espuma, caucho, cartón o cartulina. Cuanto más próximo se encuentre
el prototipo al producto real, mejor será la evaluación, si bien se pueden
obtener magníficos resultados con prototipos de baja fidelidad.
[Link]. Ventajas
No modifica el flujo del ciclo de vida.
Reduce el riesgo de construir productos que no satisfagan las necesidades
de los usuarios.
Reduce costo y aumenta la probabilidad de éxito.
Exige disponer de las herramientas adecuadas.
Este modelo es útil cuando el cliente conoce los objetivos. generales para
el software, pero no identifica los requisitos detallados de entrada,
procesamiento o salida.
También ofrece un mejor enfoque cuando el responsable del desarrollo
del software está inseguro de la eficacia de un algoritmo, de la
adaptabilidad de un sistema operativo o de la forma que debería tomar la
interacción humano-máquina.
Para que sea efectivo
Debe ser un sistema con el que se pueda experimentar.
29
Debe ser comparativamente barato (menor que el 10%).
Debe desarrollarse rápidamente.
Énfasis en la interfaz de usuario.
Equipo de desarrollo reducido.
Herramientas y lenguajes adecuadas.
[Link]. Desventajas
Debido a que el usuario ve que el prototipo funciona piensa que este es el
producto terminado y no entienden que recién se va a desarrollar
el software.
El desarrollador puede caer en la tentación de ampliar el prototipo para
construir el sistema final sin tener en cuenta los compromisos de calidad
y mantenimiento que tiene con el cliente.
El usuario tiende a crearse unas expectativas cuando ve el prototipo de
cara al sistema final. A causa de la intención de crear un prototipo de
forma rápida, se suelen desatender aspectos importantes, tales como la
calidad y el mantenimiento a largo plazo, lo que obliga en la mayor parte
de los casos a reconstruirlo una vez que el prototipo ha cumplido su
función. Es frecuente que el usuario se muestre reacio a ello y pida que
sobre ese prototipo se construya el sistema final, lo que lo convertiría en
un prototipo evolutivo, pero partiendo de un estado poco recomendado.
En aras de desarrollar rápidamente el prototipo, el desarrollador suele
tomar algunas decisiones de implementación poco convenientes (por
30
ejemplo, elegir un lenguaje de programación incorrecto porque
proporcione un desarrollo más rápido). Con el paso del tiempo, el
desarrollador puede olvidarse de la razón que le llevó a tomar tales
decisiones, con lo que se corre el riesgo de que dichas elecciones pasen a
formar parte del sistema final.
CAPITULO III
INTERVENCION METODOLOGICA
31
CAPITULO IV
RESULTADOS
32
CONCLUSIONES
33
BIBLIOGRAFIA
1. Brooks. (1995).
2. Pressman, R. S. (2010). Ingeniería de Software - Un enfoque práctico. McGRAW-HILL
INTERAMERICANA EDITORES.
3. Pressman, R. S. (2010). Ingenieria del Software.
4. Sommerville, I. (2005). Ingeniería de Software (7ma ed.). (M. M. Romo, Ed.) Madrid:
PEARSON EDUCACION. Obtenido de
[Link]
enieria%20del%20Software%207ma.%20Ed.%20-%20Ian%[Link]
34