INFORMACIN
PRESCRIPTIVOS
DEL
DESARROLLO
DE
SISTEMAS
DE
Variantes
Existen variantes de este modelo; especialmente destacamos la que hace uso
de prototiposy en la que se establece un ciclo antes de llegar a la fase de
mantenimiento, verificando que el sistema final este libre de fallos.
Desventajas
En la vida real, un proyecto rara vez sigue una secuencia lineal, esto crea una mala
implementacin del modelo, lo cual hace que lo lleve al fracaso.
El proceso de creacin del software tarda mucho tiempo ya que debe pasar por el
proceso de prueba y hasta que el software no est completo no se opera. Esto es la
base para que funcione bien.
El software evoluciona con el tiempo, los requisitos del usuario y del producto
suelen cambiar conforme se desarrolla el mismo. Las fechas de mercado y la
competencia hacen que no sea posible esperar a poner en el mercado un producto
absolutamente completo, por lo que se aconsejable introducir una versin funcional
limitada de alguna forma para aliviar las presiones competitivas.
En esas u otras situaciones similares los desarrolladores necesitan modelos de
progreso que estn diseados para acomodarse a una evolucin temporal o
progresiva, donde los requisitos centrales son conocidos de antemano, aunque no
estn bien definidos a nivel detalle.
En el modelo cascada y cascada realimentado no se tiene demasiado en cuenta la
naturaleza evolutiva del software, se plantea como esttico, con requisitos bien
conocidos y definidos desde el inicio.
Los evolutivos son modelos iterativos, permiten desarrollar versiones cada vez ms
completas y complejas, hasta llegar al objetivo final deseado; incluso evolucionar
ms all, durante la fase de operacin.
Los modelos iterativo incremental y espiral (entre otros) son dos de los ms
conocidos y utilizados del tipo evolutivo.
3.3. MODELOS ESPECIALES
Modelo iterativo incremental: En trminos generales, se puede distinguir, en la
figura 4, los pasos generales que sigue el proceso de desarrollo de un producto
software. En el modelo de ciclo de vida seleccionado, se identifican claramente
dichos pasos. La descripcin del sistema es esencial para especificar y confeccionar
los distintos incrementos hasta llegar al producto global y final. Las actividades
concurrentes (especificacin, desarrollo y validacin) sintetizan el desarrollo
pormenorizado de los incrementos, que se har posteriormente.
Modelo espiral: El modelo espiral fue propuesto inicialmente por Barry Boehm. Es
un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los
aspectos controlados y sistemticos del Modelo Cascada. Proporciona potencial para
desarrollo rpido de versiones incrementales. En el modelo Espiral el software se
construye en una serie de versiones incrementales. En las primeras iteraciones la
versin incremental podra ser un modelo en papel o bien un prototipo. En las
ltimas iteraciones se producen versiones cada vez ms completas del sistema
diseado.
El modelo se divide en un nmero de Actividades de marco de trabajo, llamadas
regiones de tareas. En general existen entre tres y seis regiones de tareas (hay
variantes del modelo). En la figura se muestra el esquema de un Modelo Espiral con
6 regiones. En este caso se explica una variante del modelo original de Boehm,
expuesto en su tratado de 1988; en 1998 expuso un tratado ms reciente.
Una visin alternativa del modelo puede observarse examinando el eje de punto
de entrada de proyectos. Cada uno de los circulitos () fijados a lo largo del eje
representan puntos de arranque de los distintos proyectos (relacionados); a saber:
Este modelo no se ha usado tanto, como el Cascada (Incremental) o MCP, por lo que
no se tiene bien medida su eficacia, es un paradigma relativamente nuevo y difcil
de implementar y controlar.
Modelo espiral Win & Win
Una variante interesante del Modelo Espiral previamente visto en la Figura es el
Modelo espiral Win-Win (Barry Boehm). El Modelo Espiral previo (clsico) sugiere
la comunicacin con el cliente para fijar los requisitos, en que simplemente se
pregunta al cliente qu necesita y l proporciona la informacin para continuar;
pero esto es en un contexto ideal que rara vez ocurre. Normalmente cliente y
desarrollador entran en una negociacin, se negocia coste frente a funcionalidad,
rendimiento, calidad, etc.
Es as que la obtencin de requisitos requiere una negociacin, que tiene xito
cuando ambas partes ganan.
Las mejores negociaciones se fuerzan en obtener Victoria & Victoria (Win & Win),
es decir que el cliente gane obteniendo el producto que lo satisfaga, y el
desarrollador tambin gane consiguiendo presupuesto y fecha de entrega realista.
Evidentemente, este modelo requiere fuertes habilidades de negociacin.
El modelo Win-Win define un conjunto de actividades de negociacin al principio de
cada paso alrededor de la espiral; se definen las siguientes actividades:
1. Identificacin del sistema o subsistemas clave de los directivos(*) (saber qu
quieren).
2. Determinacin de condiciones de victoria de los directivos (saber qu
necesitan y los satisface)
3. Negociacin de las condiciones victoria de los directivos para obtener
condiciones Victoria & Victoria (negociar para que ambos ganen).
3.4. EL PROCESO UNIFICADO DE DESARROLLO DE SOFTWARE.
Cada una de estas iteraciones se divide a su vez en una serie de disciplinas que
recuerdan a las definidas en el ciclo de vida clsico o en cascada: Anlisis de
requisitos, Diseo, Implementacin y Prueba. Aunque todas las iteraciones suelen
incluir trabajo en casi todas las disciplinas, el grado de esfuerzo dentro de cada una
de ellas vara a lo largo del proyecto.
de
Especificacin
La especificacin de requisitos describe el comportamiento esperado en el software
una vez desarrollado. Gran parte del xito de un proyecto de software radicar en la
identificacin de las necesidades del negocio (definidas por la alta direccin), as
como la interaccin con los usuarios funcionales para la recoleccin, clasificacin,
identificacin, priorizacin y especificacin de los requisitos del software.
Entre las tcnicas utilizadas para la especificacin de requisitos se encuentran:
Caso de uso,
Historias de usuario,
Arquitectura
La integracin de infraestructura, desarrollo de aplicaciones, bases de datos y
herramientas gerenciales, requieren de capacidad y liderazgo para poder ser
conceptualizados y proyectados a futuro, solucionando los problemas de hoy. El rol
en el cual se delegan todas estas actividades es el del Arquitecto.
El arquitecto de software es la persona que aade valor a los procesos de negocios
gracias a su valioso aporte de soluciones tecnolgicas.
La arquitectura de sistemas en general, es una actividad de planeacin, ya sea a
nivel de infraestructura de red y hardware, o de software.
La arquitectura de software consiste en el diseo de componentes de una aplicacin
(entidades del negocio), generalmente utilizando patrones de arquitectura. El
diseo arquitectnico debe permitir visualizar la interaccin entre las entidades del
negocio y adems poder ser validado, por ejemplo por medio de diagramas de
secuencia. Un diseo arquitectnico describe en general el cmo se construir una
aplicacin de software. Para ello se documenta utilizando diagramas, por ejemplo:
Diagramas de clases
Diagrama de despliegue
Diagrama de secuencia
Siendo los dos primeros los mnimos necesarios para describir la arquitectura de un
proyecto que iniciar a ser codificado. Depende del alcance del proyecto,
complejidad y necesidades, el arquitecto elige qu diagramas elaborar.
Las herramientas para el diseo y modelado de software se denominan CASE,
(Computer Aided Software Engineering) entre las cuales se encuentran:
Enterprise Architect
Programacin
Reducir un diseo a cdigo puede ser la parte ms obvia del trabajo de ingeniera
de software, pero no necesariamente es la que demanda mayor trabajo y ni la ms
complicada. La complejidad y la duracin de esta etapa est ntimamente
relacionada al o a los lenguajes de programacin utilizados, as como al diseo
previamente realizado.
Prueba
Consiste en comprobar que el software realice correctamente las tareas indicadas
en la especificacin del problema. Una tcnica de prueba es probar por separado
cada mdulo del software, y luego probarlo de forma integral, para as llegar al
objetivo. Se considera una buena prctica el que las pruebas sean efectuadas por
alguien distinto al desarrollador que la program, idealmente un rea de pruebas;
sin perjuicio de lo anterior el programador debe hacer sus propias pruebas. En
general hay dos grandes formas de organizar un rea de pruebas, la primera es que
est compuesta por personal inexperto y que desconozca el tema de pruebas, de
esta forma se evala que la documentacin entregada sea de calidad, que los
procesos descritos son tan claros que cualquiera puede entenderlos y el software
hace las cosas tal y como estn descritas. El segundo enfoque es tener un rea de
pruebas conformada por programadores con experiencia, personas que saben sin
mayores indicaciones en qu condiciones puede fallar una aplicacin y que pueden
poner atencin en detalles que personal inexperto no considerara.
Documentacin
Todo lo concerniente a la documentacin del propio desarrollo del software y de la
gestin del proyecto, pasando por modelaciones (UML),diagramas de casos de uso,
pruebas, manuales de usuario, manuales tcnicos, etc. todo con el propsito de
eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al
sistema.
Mantenimiento
Fase dedicada a mantener y mejorar el software para corregir errores descubiertos
e incorporar nuevos requisitos. Esto puede llevar ms tiempo incluso que el
desarrollo del software inicial. Alrededor de 2/3 del tiempo de ciclo de vida de un
proyecto2 est dedicado a su mantenimiento. Una pequea parte de este trabajo
consiste eliminar errores (bugs); siendo que la mayor parte reside en extender el
sistema para incorporarle nuevas funcionalidades y hacer frente a su evolucin.
Modelos y filosofas de desarrollo de software
La ingeniera de software dispone de varios modelos, paradigmas y filosofas de
desarrollo, en los cuales se apoya para la construccin del software, entre ellos se
puede citar:
Modelo de prototipos
Modelo en espiral
Desarrollo concurrente
Proceso Unificado
Naturaleza de la IS
La ingeniera de software tiene que ver con varios campos en diferentes formas:
Matemticas
Los programas tienen muchas propiedades matemticas. Por ejemplo la correccin
y lacomplejidad de muchos algoritmos son conceptos matemticos que pueden ser
rigurosamente probados. El uso de matemticas en la IS es llamado mtodos
formales.
Creacin
Los programas son construidos en una secuencia de pasos. El hecho de definir
propiamente y llevar a cabo estos pasos, como en una lnea de ensamblaje, es
necesario para mejorar la productividad de los desarrolladores y la calidad final de
los programas. Este punto de vista inspira los diferentes procesos y metodologas
que se encuentran en la IS.
Gestin de Proyectos
El desarrollo de software de gran porte requiere una adecuada gestin del proyecto.
Hay presupuestos, establecimiento de tiempos de entrega, un equipo de
profesionales que liderar. Recursos (espacio de oficina, insumos, equipamiento) por
adquirir. Para su administracin se debe tener una clara visin y capacitacin en
Gestin de Proyectos.
Arte
Los programas contienen muchos elementos artsticos. Las interfaces de usuario, la
codificacin, etc. Incluso la decisin para un nombre de una variable o una
clase. Donald Knuthes famoso por argumentar a la programacin como un arte.
3.6. HERRAMIENTAS CASE.
Las herramientas
Software Asistida
Clasificacin
Aunque no es fcil y no existe una forma nica de clasificarlas, las herramientas
CASE se pueden clasificar teniendo en cuenta los siguientes parmetros:
1. Las plataformas que soportan.
2. Las fases del ciclo de vida del desarrollo de sistemas que cubren.
3. La arquitectura de las aplicaciones que producen.
4. Su funcionalidad.
La siguiente clasificacin es la ms habitual basada en las fases del ciclo de
desarrollo que cubren:
para
automatizar
tareas
en
Existen otros nombres que se le dan a este tipo de herramientas, y que no es una
clasificacin excluyente entre s, ni con la anterior:
Editores UML.