Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EL PROCESO DE DESARROLLO
Winnie Quito
Liana Perez
Brandon Hilas
20 de Abril de 2021
2
AGRADECIMIENTO
INDICE
I.1. GENERALIDADES:.....................................................................................................7
III.1. UNIFICADO............................................................................................................53
4
III.2. MODELADO...........................................................................................................55
IV.1. INTRODUCCIÓN...................................................................................................68
IV.3. FASES.......................................................................................................................69
IV.7. CONCLUSIONES....................................................................................................75
INTRODUCCION
5
Un sistema informático está compuesto por hardware y software. En cuanto al hardware, su producción se
realiza sistemáticamente y la base de conocimiento para el desarrollo de dicha actividad está claramente
definida. La fiabilidad del hardware es, en principio, equiparable a la de cualquier otra máquina
construida por el hombre. Sin embargo, respecto del software, su construcción y resultados han sido
Ingeniería de Software (CEIS), el estudio de mercado The Chaos Report realizado por Standish Group
Internactional en 1996, concluyó que sólo un 16% de los proyectos de software son exitosos (terminan
dentro de plazos y costos y cumplen los requerimientos acordados). Otro 53% sobrepasa costos y plazos y
cumple parcialmente los requerimientos. El resto ni siquiera llega al término. El primer reconocimiento
organizada en 1968 por la Comisión de Ciencias de la OTAN en Garmisch (Alemania), dicha situación
problemática se denominó crisis del software. En esta conferencia, así como en la siguiente realizada en
Roma en 1969, se estipuló el interés hacia los aspectos técnicos y administrativos en el desarrollo y
mantenimiento de productos software. Se pretendía acordar las bases para una ingeniería de construcción
de software. Según Fritz Bauer lo que se necesitaba era "establecer y usar principios de ingeniería
orientados a obtener software de manera económica, que sea fiable y funcione eficientemente sobre
máquinas reales".
6
el trabajo de desarrollo del software en distintas fases para mejorar el diseño, la gestión del
producto, y la gestión de proyecto. Es también conocido como el ciclo de vida del desarrollo de
son creados y completados por un equipo del proyecto para desarrollar o mantener una
como ágiles. Otras metodologías incluyen desarrollo en cascada, prototipado, desarrollo iterativo
Algunas personas consideran el "modelo" del ciclo de vida un término más general para
concreto para referirse a un proceso concreto escogido por una organización específica. Por
ejemplo, hay muchos procesos de desarrollo de software concretos que encajan en la espiral del
modelo del ciclo de vida. Este campo es a menudo considerado un subconjunto del ciclo de vida
como lo es el cliente que es el que tiene el problema en su empresa y desea que sea solucionado,
para esto existe el Analista de Sistema que es el encargado de hacerle llegar todos los
requerimientos y necesidades que tiene el cliente a los programadores que son las personas
encargadas de realizar lo que es la codificación y diseño del sistema para después probarlo y lo
instalan al cliente.
7
I.1. GENERALIDADES:
procesos para poder obtener un contrato. El estándar internacional que regula el método de
selección, implementación y monitoreo del ciclo de vida del software es ISO 12207.
aplican técnicas de gestión de proyectos para la creación del software. Sin una gestión del
mayor que el planeado. Dada la cantidad de proyectos de software que no cumplen sus metas en
términos de funcionalidad, costes o tiempo de entrega, una gestión de proyectos efectiva es algo
imprescindible.
organización.
8
I.2. FASES DEL PROCESO DE DESARROLLO DE SOFTWARE:
• Análisis de requisitos
Extraer los requisitos de un producto de software es la primera etapa para crearlo. Es la primera
de las etapas de desarrollo, corresponde a escuchar las peticiones para el sistema. Se planifica la
forma de llevar las ideas a un software, acá no debe ser un impedimento el lenguaje de
veces el usuario ignora para mejorar el programa. Se puede utilizar prototipos para que el usuario
tenga una vista previa y realice modificaciones antes de cualquier otra fase. Al final de esta fase
totalmente nuevo. No olvidar incluir presupuesto de servidores, licencias, bases de datos entre lo
más destacado. Mientras que los clientes piensan que ellos saben lo que el software tiene que
de ellos), es una parte crucial; de esta etapa depende en gran medida el logro de los objetivos
finales. Se han ideado modelos y diversos procesos de trabajo para estos fines. Aunque aún no
• Diseño y arquitectura
Se refiere a determinar cómo funcionará de forma general sin entrar en detalles. Consiste en
definen los casos de uso para cubrir las funciones que realizará el sistema, y se transforman las
datos, especialmente las tablas y las relaciones entre ellas. Se preparan todas las funcionalidades
prototipo ya que el primero solo incluye funcionalidades, esta muestra algo de diseño. El usuario
siempre quiere incluir más cosas y se debe dejar en claro que esto influye en el tiempo y el costo
problema principal está en calcular el tiempo para las etapas de desarrollo, para esto es mejor dar
10
un tiempo previsto pero que se pague sobre las funcionalidades. Si el proyecto es muy complejo
es mejor realizarlo por etapas para evitar desbordar el tiempo y el costo de todo el programa.
11
Implementación
En esta fase hay que elegir las herramientas adecuadas, un entorno de desarrollo
hay que intentar que el código no sea indescifrable siguiendo distintas pautas
adquisición de recursos necesarios para que el software funcione, además de desarrollar casos de
Programación y Desarrollo
Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería
programación utilizados.
metodologías, del estilo del programador, etc. Se pueden presentar mejoras u objeciones sobre el
rendimiento del programa. Dentro de las etapas de desarrollo es la más delicada porque cada
modificación puede cambiar toda la planificación. Esta fase tiene en si sub-fases a implementar:
análisis y diseño, la codificación, pruebas ingenieriles y ajustes. El avance del software se suele
Pruebas ingenieriles
Estas son las pruebas de cada funcionalidad en cada pantalla o reporte. Se debe probar la
automatizar este proceso, pero yo prefiero hacerlo por lo menos híbrido. Ya que en el camino se
van presentando ajustes y pruebas sobre los mismos. Es preferible anotar todos los ajustes para
adaptarlos después sino esta fase se podría alargar demasiado. Estas pruebas son diferentes a las
pruebas principales ya que estas son realizadas por los programadores y las otras por usuarios
Ajustes
Algunos incluyen esta fase con la anterior ya que apenas finaliza hay que realizar de
nuevo las pruebas. Puede haber varios ciclos que retrasan los proyectos, pero es inevitable en
algunos casos. Por otra parte, si los programadores son muy novatos se presentan demasiados
bugs (fallas del sistema). Entonces los equipos de desarrollo deberían tener una combinación
Pruebas
especificación. Una técnica de prueba es probar por separado cada módulo del software, y luego
probarlo de forma integral, para así llegar al objetivo. Se considera una buena práctica 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 evalúa
que la documentación entregada sea de calidad, que los procesos descritos son tan claros que
cualquiera puede entenderlos y el software hace las cosas tal y como están descritas.
15
El segundo enfoque es tener un área de pruebas conformada por programadores con
experiencia, personas que saben sin mayores indicaciones en que condiciones puede fallar una
aplicación y que pueden poner atención en detalles que personal inexperto no consideraría. Estas
son pruebas realizadas por usuarios finales, los cuales debe estar disponibles. Es recomendable
tener varios usuarios ya que uno solo no encontraría todas las posibles fallas. Se puede presentar
una lista de pruebas a realizar para evitar que se salten módulos o pantallas. De acá se genera una
gran lista de bugs detectados que pasan a ajustarse en una serie de ciclos. Es muy importante
Documentación
16
La documentación del diseño interno del software con el objetivo de facilitar su mejora y
API, tanto interior como exterior. Todo lo concerniente a la documentación del propio desarrollo
del software y de la gestión del proyecto, pasando por modelaciones (UML), diagramas, pruebas,
manuales de usuario, manuales técnicos, etc.; todo con el propósito de eventuales correcciones,
Mantenimiento
17
El mantenimiento o mejora de un software con problemas recientemente desplegado,
puede requerir más tiempo que el desarrollo inicial del software. Es posible que haya que
incorporar código que no se ajusta al diseño original con el objetivo de solucionar un problema o
ampliar la funcionalidad para un cliente. Si los costes de mantenimiento son muy elevados puede
que sea oportuno rediseñar el sistema para poder contener los costes de mantenimiento.
Mantener y mejorar el software para enfrentar errores descubiertos y nuevos requisitos. Esto
puede llevar más tiempo incluso que el desarrollo inicial del software. Alrededor de 2/3 de toda
la ingeniería de software tiene que ver con dar mantenimiento. Una pequeña parte de este trabajo
La mayor parte consiste en extender el sistema para hacer nuevas cosas. De manera
similar, alrededor de 2/3 de toda la Ingeniería civil, Arquitectura y trabajo de construcción es dar
mantenimiento. Se puede decir que con la mejora continua garantiza la calidad del producto, ya
que el estarla aplicando día con día es la mejor decisión que puede llegar a tener cualquier
empresa, porque de esta manera evita grandes problemas en la elaboración o desarrollo de los
productos. Esto es fundamental para todas las empresas ya que se vuelven competitivas, con
mayor productividad y eficiencia. No hay que olvidar que la mejora se da porque el cliente es el
rey y hay que satisfacer todas y cada una de sus necesidades siempre garantizando la calidad.
18
Varias aproximaciones del desarrollo del software han sido utilizadas desde el origen de
desarrollo . Las metodologías "tradicionales" como la de cascada, que tiene distintas fases, son a
veces conocidas como metodologías del ciclo de vida de desarrollo de software (SDLC), aunque
este término también podría ser utilizado de manera más general para referirse a cualquier
metodología.[cita requerida] Un enfoque del "ciclo de vida" con distintas fases contrasta con los
enfoques de las ágiles que definen el proceso de iteración, pero donde el diseño, la construcción,
Integración continua
La integración continua es la práctica de juntar todas las copias del trabajo de los
desarrolladores en una rama principal compartida varias veces al día. Grady Booch primero
varias veces al día.[5] La programación extrema (XP) adoptó el concepto de CI y defendió que
se hiciera la integración más de una vez al día – quizás tantas veces como decenas de muchos
Prototipado
- Una comprensión básica del problema fundamental del negocio es necesaria para evitar
resolver los problemas equivocados, pero esto se cumple para todas las metodologías del
software.
21
Desarrollo incremental
lineales e iterativos, con el objetivo principal de reducir el riesgo inherente del proyecto al dividir
proceso de desarrollo.
- Se realiza una serie de mini cascadas, donde todas las fases de la cascada se completan
el núcleo del sistema se definen a través del método cascada, seguido de una implementación
utilizando RAD se intercala con la escritura del propio software. La falta de una planificación
previa extensa generalmente permite que el software se escriba mucho más rápido, y hace que
sea más fácil cambiar los requisitos. El proceso de rápido desarrollo comienza con el desarrollo
eventualmente refinar los modelos de datos y procesos. Estas etapas se repiten iterativamente; un
mayor desarrollo da como resultado "una declaración de requisitos técnicos y diseño técnico
El término se utilizó por primera vez para describir un proceso de desarrollo de software
introducido por James Martin en 1991. Según Whitten (2003), es una fusión de varias técnicas
través de prototipos iterativos (en cualquier etapa de desarrollo), participación activa del usuario
- El control del proyecto implica priorizar el desarrollo y definir plazos de entrega o "cajas de
tiempo". Si el proyecto comienza a decaer, hay que hacer énfasis en reducir los requisitos para
“timeboxes”. Si los inicios de proyecto para resbalar, el énfasis encima está reduciendo
- Los métodos estándar de análisis y diseño de sistemas pueden incluirse en este marco.
I.4.
evolutivo, incremental, etc.). Adicionalmente una metodología debería definir con precisión los
25
artefactos, roles y actividades involucrados, junto con prácticas y técnicas recomendadas, guías
asociadas, que son aplicables a una (o algunas) actividades del proceso de desarrollo, por
de cada una de ellas. A grandes rasgos, si tomamos como criterio las notaciones utilizadas para
Por otra parte, considerando su filosofía de desarrollo, aquellas metodologías con mayor énfasis
están más orientadas a la generación de código con ciclos muy cortos de desarrollo, se dirigen a
De todas las metodologías ágiles, ésta es la que ha recibido más atención. Esto se debe en
parte a la notable habilidad de los líderes XP, en particular Kent Beck, para llamar la atención.
26
También se debe a la habilidad de Kent Beck de atraer a las personas a este acercamiento, y
vuelto un problema, pues ha acaparado la atención fuera de las otras metodologías y sus valiosas
Coraje. Construye sobre ellos una docena de prácticas que los proyectos XP deben seguir.
Muchas de estas prácticas son técnicas antiguas, tratadas y probadas, aunque a menudo
olvidadas por muchos, incluyendo la mayoría de los procesos planeados. Además de resucitar
estas técnicas, la XP las teje en un todo sinérgico dónde cada una refuerza a las demás. Una de
las más llamativas, así como inicialmente atractiva para mí, es su fuerte énfasis en las pruebas.
Mientras todos los procesos mencionan la comprobación, la mayoría lo hace con muy poco
énfasis. Sin embargo la XP pone la comprobación como el fundamento del desarrollo, con cada
una plataforma altamente estable para el desarrollo futuro. En esta plataforma XP construye un
proceso de diseño evolutivo que se basa en refacturar un sistema simple en cada iteración. Todo
con la adaptabilidad de una manera que indiscutiblemente la hace la más desarrollada entre todas
permite en cualquier momento realinear el software con los objetivos de negocio de su empresa,
ya que puede introducir cambios funcionales o de prioridad en el inicio de cada nueva iteración.
Esta metódica de trabajo promueve la innovación, motivación y compromiso del equipo que
forma parte del proyecto, por lo que los profesionales encuentran un ámbito propicio para
Beneficios
que le aporta cada requisito / historia del proyecto, el equipo los estima y con esta información el
Product Owner establece su prioridad. De manera regular, en las demos de Sprint el Product
Owner comprueba que efectivamente los requisitos se han cumplido y transmite se feedback al
equipo. Flexibilidad a cambios: Alta capacidad de reacción ante los cambios de requerimientos
generados por necesidades del cliente o evoluciones del mercado. La metodología está diseñada
para adaptarse a los cambios de requerimientos que conllevan los proyectos complejos.
- Reducción del Time to Market: El cliente puede empezar a utilizar las funcionalidades
más importantes del proyecto antes de que esté finalizado por completo.
28
- Mayor calidad del software: La metódica de trabajo y la necesidad de obtener una
superior.
burocracia y a la motivación del equipo que proporciona el hecho de que sean autónomos para
organizarse.
prestaciones que aportan mayor valor de negocio gracias a la priorización por retorno de
inversión.
equipo por sprint (los llamados puntos historia), con lo que consecuentemente, es posible estimar
fácilmente para cuando se dispondrá de una determinada funcionalidad que todavía está en el
Backlog.
primer lugar y de conocer la velocidad con que el equipo avanza en el proyecto, permite despejar
tal puede acomodar una gran variedad de procesos. De hecho, ésta es mi crítica principal al RUP
- como puede ser cualquier cosa acaba siendo nada. Yo prefiero un proceso que dice qué hacer
en lugar de dar opciones infinitas. Como resultado de esta mentalidad de armazón de procesos, el
RUP puede usarse en un estilo muy tradicional de cascada o de una manera ágil. Como resultado
usted puede usar el RUP como un proceso ágil, o como un proceso pesado - todo depende de
cómo lo adapte a su ambiente. Craig Larman es un fuerte defensor de usar el RUP de una manera
ágil. Su excelente libro introductorio sobre desarrollo OO contiene un proceso que está muy
basado en su pensamiento ligero del RUP. Su visión es que mucho del reciente empujón hacia
los métodos ágiles no es nada más que aceptar desarrollo OO de la corriente principal que ha
Una de las cosas que hace Craig es pasarse los primeros dos o tres días de una iteración
mensual con todo el equipo usando el UML para perfilar el diseño del trabajo a hacerse durante
la iteración. Esto no es un cianotipo del que no se pueda desviarse, sino un boceto que da una
perspectiva sobre cómo pueden hacerse las cosas en la iteración. Otra tachuela en el RUP ágil es
el proceso dX de Robert Martin. El proceso dx es una versión totalmente dócil del RUP que
para gente que tiene que usar el RUP, pero quiere usar XP. Como tal es a la vez XP y RUP y por
tanto un buen ejemplo del uso ágil del RUP. El proceso de ciclo de vida de RUP se divide en
cuatro fases bien conocidas llamadas Incepción, Elaboración, Construcción y Transición. Esas
fases se dividen en iteraciones, cada una de las cuales produce una pieza de software
30
demostrable. La duración de cada iteración puede extenderse desde dos semanas hasta seis
meses.
1. Incepción.- Significa "comienzo", pero la palabra original (de origen latino y casi en
desuso como sustantivo) es sugestiva y por ello la traducimos así. Se especifican los objetivos
del ciclo de vida del proyecto y las necesidades de cada participante. Esto entraña establecer el
alcance y las condiciones de límite y los criterios de aceptabilidad. Se identifican los casos de
uso que orientarán la funcionalidad. Se diseñan las arquitecturas candidatas y se estima la agenda
Típicamente es una fase breve que puede durar unos pocos días o unas pocas semanas.
2. Elaboración.- Se analiza el dominio del problema y se define el plan del proyecto. RUP
presupone que la fase de elaboración brinda una arquitectura suficientemente sólida junto con
de desarrollo, así como el soporte de herramientas de automatización. Al cabo de esta fase, debe
estar identificada la mayoría de los casos de uso y los actores, debe quedar descripta la
análisis para determinar los riesgos y se evalúan los gastos hechos contra los originalmente
planeados.
31
3. Construcción. - Se desarrollan, integran y verifican todos los componentes y rasgos de
la aplicación. RUP considera que esta fase es un proceso de manufactura, en el que se debe poner
resultados de esta fase (las versiones alfa, beta y otras versiones de prueba) se crean tan rápido
como sea posible. Se debe compilar también una versión de entrega. Es la fase más prolongada
de todas.
entregado. Se corrigen los últimos errores y se agregan los rasgos pospuestos. La fase consiste en
prueba beta, piloto, entrenamiento a usuarios y despacho del producto a mercadeo, distribución y
Configuración y Cambio, Gestión del Proyecto y Entorno. Además de estos flujos de trabajo,
- Desarrollo iterativo de software. Las iteraciones deben ser breves y proceder por
- Modelado visual del software. Se deben construir modelos visuales, porque los sistemas
complejos no podrían comprenderse de otra manera. Utilizando una herramienta como UML, la
arquitectura y el diseño se pueden especificar sin ambigüedad y comunicar a todas las partes
involucradas.
- Prueba de calidad del software. RUP pone bastante énfasis en la calidad del producto
entregado.
lineamientos claros de implementación que puedan compararse, por ejemplo, a los métodos
Crystal, en los que se detalla la documentación requerida y los roles según diversas escalas de
proyecto. En RUP esas importantes decisiones de dejan a criterio del usuario. Se asegura que
RUP puede implementarse "sacándolo de la caja", pero dado que el número de sus artefactos y
herramientas es inmenso, siempre se dice que hay que recortarlo y adaptarlo a cada caso. El
33
proceso de implementación mismo es complejo, dividiéndose en seis fases cíclicas también
PRINCIPALES ROLES:
Un Rol se define como una “Función que alguien o algo cumple” (Abstracta Academy, 2016).
Cada uno de los roles aportará al grupo parte del total necesario para tener éxito en el desarrollo.
Los roles son necesarios para cubrir todas las especificaciones necesarias para cumplir un
proceso ya que no todos tenemos las mismas cualidades y experiencias. Además, al asignar roles,
se definen objetivos y actividades para cada uno; lo anterior evitando que alguna actividad no sea
asignan de acuerdo a las capacidades de cada persona, así como también su especialización,
Gerente de proyecto
Tiene por función presentar informes sobre las litigaciones de riesgos, hacer cumplir los
plazos y lleva el control de los costos. También organiza el equipo, realiza planificación y estima
Se encarga del revelamiento de los requerimientos esenciales para el desarrollo del Software, la
documentación de los requerimientos para así el resto del equipo lo pueda consultar en cualquier
Testador
Diseña y ejecuta las pruebas, para ello requiere conocer el producto a probar claro esta, estudiar
funcionalidad del producto y desarrollar las pruebas que revelen incidentes críticos. Reporta los
Arquitecto de software
Determina las estructuras de la aplicación y las tecnologías con las que se construirá la
asegurar que todos los aspectos de la arquitectura se estén desarrollando de manera correcta.
Debe ser una persona con un innato sentido de liderazgo, dispuesto a formar a los integrantes del
No existe consenso sobre cuál es el mejor modelo del proceso software. Distintos equipos
de desarrollo pueden utilizar diferentes modelos de proceso software para producir el mismo tipo
de sistema software. Sin embargo, algunos modelos son más apropiados para producir ciertos
tipos de sistemas, de forma que si no se utiliza un modelo adecuado puede ocurrir que el sistema
El reparto de costes entre las distintas fases del proceso de desarrollo es difícil de
determinar dado los distintos modelos de proceso existentes. Sin embargo, en dependencia del
modelo que se adopte, al menos el 60% del coste total se emplea en la actividad de evolución del
productos software es mucho mayor que la tasa de productos software que quedan en desuso (no
tienen que ser mantenidos), por lo que el número de operaciones de mantenimiento que se
realizan sigue aumentando. El proceso de diseño software debería, por tanto, tener en cuenta la
software son:
Engineering) que den soporte a todas o alguna de las actividades del proceso de desarrollo.
el desarrollo fluye constantemente hacia abajo (como una cascada) a través de varias fases,
a menudo como un artículo publicado por Winston W. Royce en 1970, aunque Royce no usó el
término "cascada" en este artículo. Royce presentó este modelo como un ejemplo de un modelo
- Se mantiene un estricto control a lo largo de la vida del proyecto a través de una extensa
cada fase.
industria por su facilidad de gestión y visibilidad. Sin embargo, su principal problema reside en
práctica estas etapas no tienen fronteras tan bien definidas, lo que hace que, en no pocas
ocasiones, se solapen y compartan información. Los principales problemas de este modelo son:
dificultad para realizar prototipos, reutilizar software y realizar pruebas sin disponer de una
Esta "inflexibilidad" en un modelo de cascada pura ha sido una fuente de críticas por parte de los
gubernamentales a gran escala que superan el presupuesto, a lo largo del tiempo y en ocasiones
no cumplen con los requisitos debido al enfoque de Big Design Up Front . Excepto cuando se
requiere por contrato, el modelo de cascada ha sido ampliamente reemplazado por metodologías
requisitos hasta adquirir experiencia con el sistema. Es una combinación del Modelo de Cascada
para retrasar las decisiones hasta tener experiencia en el sistema. Durante el desarrollo de cada
que se tenga sobre los requisitos a implementar. Si se tiene un buen conocimiento, se puede optar
por cascada, si es dudoso, evolutivo. Hay muchas situaciones en las que los requerimientos
iniciales del software están razonablemente bien definidos, pero el alcance general del esfuerzo
de desarrollo imposibilita un proceso lineal. Además, tal vez haya una necesidad imperiosa de
dar rápidamente cierta funcionalidad limitada de software a los usuarios y aumentarla en las
entregas posteriores de software. En tales casos, se elige un modelo de proceso diseñado para
muchas características suplementarias (algunas conocidas y otras no). El cliente usa el producto
fundamental (o lo somete a una evaluación detallada). Como resultado del uso y/o evaluación, se
desarrolla un plan para el incremento que sigue. El plan incluye la modificación del producto
fundamental para cumplir mejor las necesidades del cliente, así como la entrega de
39
características adicionales y más funcionalidad. Este proceso se repite después de entregar cada
II.3.MODELO EVOLUTIVO
Los modelos evolutivos son iterativos. Se caracterizan por la manera en la que permiten
desarrollar versiones cada vez más completas del software. 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
requerimientos o el producto básico, pero los detalles del producto o extensiones del sistema aún
explícitamente para adaptarse a un producto que evoluciona con el tiempo. En este modelo se
refinando con la información que van suministrando los clientes y/o usuarios hasta que se
obtiene un sistema final que satisfaga todas las necesidades previstas. El sistema final obtenido
puede rediseñarse para producir otro más robusto y más fácil de mantener.
40
Existen dos tipos de procesos de desarrollo evolutivos:
- 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
decir, se debe trabajar con el cliente para identificar y construir el sistema final a partir de una
- Prototipado desechable: 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. El resultado del
Los principales problemas de este modelo son: escasa visibilidad; los continuos cambios
que hacen que los sistemas desarrollados estén deficientemente estructurados; y la necesidad de
hacen que la aplicación de este modelo se suela limitar a sistemas interactivos de tamaño
pequeño o mediano. La deficiente estructura dificulta las tareas de mantenimiento de ahí que se
suela aplicar a sistemas con una vida corta y a partes de grandes sistemas, especialmente a
II.4.MODELO TRANSFORMACIONAL
41
Se basa en disponer de una especificación formal del sistema y en transformar, con
aplican son correctas es posible asegurar que el sistema construido satisface la especificación, es
componentes del sistema final ya existe. El proceso de desarrollo se centra en integrar las partes
ya existentes más que en construir todo el sistema desde el principio. Las ventajas que desde un
punto de vista económico puede producir este modelo actualmente empiezan a ser estudiadas en
II.5.MODELO EN ESPIRAL
En 1988, Barry Boehm publicó un "modelo espiral" de desarrollo de software formal, que
combina algunos aspectos clave del metodologías de creación rápida de prototipos, modelo de
cascada y las metodologías de creación rápida de prototipos, en un esfuerzo por combinar las
42
ventajas de los conceptos de arriba había abajo y de abajo hacia arriba. Se incluye el análisis de
Proporcionó énfasis en un área clave que muchos consideraron que había sido descuidada
por otras metodologías: análisis del riesgo iterativo deliberado, particularmente adecuado para
sistemas complejos a gran escala. El modelo tiene la forma de una espiral en la que cada vuelta
representa cada una de las fases en las que se estructura el proceso software y está organizada en
cuatro sectores:
más adecuado.
Modelo Espiral Durante la primera vuelta alrededor de la espiral se definen los objetivos,
las alternativas y las restricciones, y se analizan e identifican los riesgos. Si el análisis de riesgo
indica que hay una incertidumbre en los requisitos, se puede usar la creación de prototipos en el
cuadrante de ingeniería para dar asistencia tanto al encargado de desarrollo como al cliente. El
modificaciones. Sobre la base de los comentarios del cliente se produce la siguiente fase de
centro y siguiendo hacia el exterior), se construyen sucesivas versiones del software, cada vez
más completa y, al final, al propio sistema operacional. El paradigma del modelo en espiral para
y al cliente entender y reaccionar a los riesgos en cada nivel evolutivo. Utiliza la creación de
prototipos como un mecanismo de reducción de riesgo, pero, lo que es más importante permite a
evolución de prototipos.
al dividir un proyecto en segmentos más pequeños y brindar mayor facilidad de cambio durante
el proceso de desarrollo, así como brindar la oportunidad de evaluar los riesgos y evaluar la
- "Cada ciclo implica una progresión a través de la misma secuencia de pasos, para cada
parte del producto y para cada uno de sus niveles de elaboración, desde un documento de
- Empieza cada ciclo con una identificación de las partes interesadas y sus "condiciones
Este es el modelo en el cual se ordenan rigurosamente las etapas del desarrollo del
software, de esto se obtiene que el inicio de una etapa de desarrollo deba de esperar el fin de la
etapa anterior. De esto se obtiene que cualquier error detectado lleve al rediseño del área de
al cliente, obtener críticas y retroalimentación, con lo cual se obtendrán los requisitos específicos
para la aplicación a partir de las metas graficas que son mostradas. Las etapas de este modelo
son:
1. Plan rápido
2. Modelo
4. Entrega y retroalimentación
5. Comunicación
Entre sus ventajas se encuentra que, es apto para el cliente que conoce a grandes rasgos el
46
objetivo del software y a su vez, al equipo de desarrollo le ofrece una mejor visibilidad de
crítica o bien retro alimentación por parte del usuario final, no se obtendrán completamente las
características del software. Estas se irán descubriendo en el proceso del avance del software,
mediante la creación de las diferentes versiones del código. En este modelo, se distinguen las
siguientes fases:
1. Especificación conceptual
2. Análisis de requisitos
3. Diseño inicial
4. Codificación y depuración.
trabajo con técnicas para su correcta utilización. Este tipo de modelo es esencial para el método
manera incremental, la cual sirve para obtener ventaja de lo que se ha realizado a lo largo del
proyecto. En este se entran a varias iteraciones con las cuales se obtendrá el software final y a su
47
vez, se le agregaran nuevas funcionalidades a cada etapa. Se puede dividir en los siguientes
procesos:
1. Etapa de inicialización
2. Etapa de iteración
anteriores.
Son las tareas que se crean que describen las partes que conforman el proyecto, son
compuesto por un grupo reducido de personas incluyendo desarrolladores y testes del sistema.
de la aplicación.
48
• Desarrollo concurrente
cliente servidor, en el cual se describen los múltiples procesos que ocurren simultáneamente en
la aplicación. Una de las características de este proceso es que está orientado a las necesidades
del usuario, las decisiones de la gestión y los resultados de las revisiones. Las ventajas que se
pueden mencionar es que está orientado a grupos de trabajo independientes, proporcionando una
visión exacta de lo que se lleva desarrollado del proyecto. Las desventajas se tienen que se
• Proceso unificado
Este proceso se distingue por la utilización de casos de uso, el cual está centrado en la
el cual puede ser implementado hacia otros proyectos de distintas organizaciones. Este proceso
es utilizado para evitar problemas legales con el método RUB dado que este otro método es una
marca registrada de IBM.En cada iteración, se busca el avance e iteración en determinadas áreas,
con la cual se obtendrán resultados en los cuales se puede constatar el tiempo que se ha dedicado
a las distintas áreas en el desarrollo de software. Sus principales características son: es iterativo e
incremental, dirigido por casos de uso, centrado en la arquitectura y enfocado en los riesgos.
RUP y llamado Proceso Unificado Rational, por el nombre de la empresa. Es uno de los modelos
orientados a objetos. Los principios básicos de este método son: adaptar el proceso, equilibrar
50
software.
software requiere que el sistema pueda ser estudiado desde diferentes puntos de vista, ya que un
usuario final necesita una visión diferente del sistema de la que necesita un analista o un
programador. UML incorpora toda una serie de diagramas y notaciones gráficas y textuales
destinadas a mostrar el sistema desde las diferentes perspectivas, que pueden utilizarse en las
Grady Booch, Jim Rumbaugh e Ivar Jacobson desarrollaron el UML a mediados de los
años noventa del siglo pasado con mucha realimentación de la comunidad de desarrollo de
software. El UML fusionó algunas notaciones de modelado que competían entre sí y que se
usaban en la industria del software en la época. En 1997, UML 1.0 se envió al Object
51
Management Group, un consorcio sin fines de lucro involucrado en especificaciones de
como resultado la adopción del UML 1.1 ese mismo año. El estándar actual es UML 2.0 y ahora
es un estándar ISO. Puesto que este estándar es tan nuevo, muchas antiguas referencias, como
Sin embargo, desde el punto de vista puramente tecnológico, UMI tiene una gran
cantidad de propiedades que han sido las que, realmente, han contribuido a hacer de UML el
estándar de facto de la industria que es en realidad. Algunas de las propiedades de UML como
variables si es necesario.
III.1. UNIFICADO
52
La palabra unificado tiene los siguientes significados relevantes para UML.
aceptados por muchos métodos orientados a objetos, seleccionando una definición clara para
cada concepto, así como una notación y una terminología. UML puede representar la mayoría de
los modelos existentes tan bien o mejor que como lo hacían los métodos originales.
notación en las diferentes etapas del desarrollo, incluso mezcladas en un solo modelo. No es
necesario traducir de una etapa a otra. Esta continuidad es crítica para un desarrollo iterativo e
incremental.
A través de los dominios de aplicación. UML está pensado para modelar la mayoría de
los dominios de aplicación, incluyendo aquellos que implican sistemas grandes, complejos, de
tiempo real, distribuidos, con tratamiento intensivo de datos o con cálculo intensivo, entre otras
propiedades. Puede haber áreas especializadas en las cuales un lenguaje especial para ese
propósito resulte más útil, pero UML pretende ser tan bueno o mejor que cualquier otro lenguaje
proceso de desarrollo detallado. Se pretende que sea usado como lenguaje de modelado
misma forma que un lenguaje de programación de propósito general puede ser usado en varios
estilos de programación. Está especialmente pensado para apoyar un estilo de desarrollo iterativo
e incremental.
hicimos un esfuerzo deliberado para descubrir y representar las relaciones subyacentes entre
muchas situaciones conocidas y desconocidas. Este proceso permitió comprender mejor los
conceptos y hacerlos más aplicables. Este no fue el propósito original de la unificación, pero sí
III.2. MODELADO
54
El modelado es una parte esencial de los grandes proyectos de software y también es útil
para proyectos medianos e incluso pequeños. Un modelo juega el papel análogo en el desarrollo
de software que los planos y otros planos (mapas del sitio, elevaciones, modelos físicos) juegan
completa y correcta, que se satisfagan las necesidades del usuario final y que el diseño del
características.
de forma que todo los implicados pueda entenderlos y estar de acuerdo con ellos.
Capturar decisiones del diseño en una forma mutable a partir de los requisitos.
grandes sistemas.
Diagramas
55
Para modelar clases, incluidos sus atributos, operaciones, relaciones y asociaciones con
otras clases,2 el UML proporciona un diagrama de clase, que aporta una visión estática o de
estructura de un sistema, sin mostrar la naturaleza dinámica de las comunicaciones entre los
Los elementos principales de un diagrama de clase son cajas, que son los íconos
dicha clase conoce o puede proporcionar todo el tiempo. Por lo general, los
Podrían ser valores que la clase puede calcular a partir de sus variables o valores
instancia y que puede obtener de otros objetos de los cuales está compuesto.
Los diagramas de clase también pueden mostrar relaciones entre clases. Una clase que
sea una subclase de otra clase se conecta con ella mediante una flecha con una línea sólida y con
una punta triangular hueca. La flecha apunta de la subclase a la superclase. Una asociación entre
dos clases significa que existe una relación estructural entre ellas.
57
En relación con el nombre de la clase, es importante destacar las siguientes
con mayúsculas.
otras palabras, debe ser significativo a la vez que simple. De no ser así, se
El nombre de cada atributo debe ser también significativo, pero a diferencia de los
nombres de clase, suelen comenzar en minúscula. El tipo de cada atributo puede ser cualquier
clase o bien puede ser un tipo de datos básico. El nombre de cada atributo y su tipo quedan
separados mediante dos puntos (‘:’). Finalmente, la visibilidad de cada atributo nos indica hasta
qué punto las operaciones de otras clases pueden acceder al atributo. Tenemos tres posibilidades:
Público: El atributo puede ser accedido desde otras clases. Para indicar en UML
Protegido: El atributo puede ser accedido desde las clases descendientes. Para
queda representado mediante una lista de operaciones. Para cada operación es necesario
las operaciones de la clase, anteponiendo los símbolos ‘+’ (operación pública), ‘#’ (operación
es idéntica a la de los atributos. Los parámetros (se pueden especificar cero, uno o más) responde
a la sintaxis:
modificar.
out, para especificar los parámetros de salida, que pueden modificarse para
III.4. DIAGR
A MAS DE
IMPLEMENTACIÓN
software y es útil para mostrar la distribución física de un sistema de software entre plataformas
ejecución, que se dibujan como cajas que contienen la etiqueta “<>”. Dichos nodos representan
Un caso de uso describe la manera en la que un usuario interactúa con el sistema, definiendo los
pasos requeridos para lograr una meta. Un diagrama UML de uso de caso es un panorama de
todos los casos de uso y sus relaciones. El mismo proporciona un gran cuadro de la
funcionalidad del sistema. En el diagrama de uso de caso, los casos de uso se muestran como
óvalos. Los actores se conectan mediante líneas a los casos de uso que realizan.
objetos durante la ejecución de una tarea. Este tipo de diagrama muestra el orden temporal en el
que los mensajes se envían entre los objetos para lograr dicha tarea. Puede usarse un diagrama de
software.
61
Existen muchas características especiales que pueden incluirse en un diagrama de
Se puede distinguir entre mensajes sincrónicos y asíncronos. Los primeros se muestran con
puntas de flecha sólidas mientras que los asíncronos lo hacen con puntas de flecha huecas.
Se puede mostrar un objeto que envía él mismo un mensaje con una flecha que parte del objeto,
gira hacia abajo y luego apunta de vuelta hacia el mismo objeto. Se puede mostrar la creación de
objeto dibujando una flecha etiquetada de manera adecuada (por ejemplo, con una etiqueta <>)
hacia una caja de objeto. En este caso, la caja aparecerá en el diagrama más abajo que las cajas
Se puede mostrar destrucción de objeto mediante una gran X al final de la línea de vida
del objeto. Otros objetos pueden destruir un objeto, en cuyo caso una flecha apunta desde el otro
objeto hacia la X. Una X también es útil para indicar que un objeto ya no se usa y que, por tanto,
proporciona otro indicio del orden temporal de las comunicaciones, pero enfatiza las relaciones
rectángulos. Las asociaciones entre objetos lo hacen mediante líneas que conectan los
rectángulos. Por lo general, en el diagrama existe una flecha entrante hacia un objeto que
comienza la secuencia de pase de mensaje. Esa flecha se etiqueta con un número y un nombre de
mensaje. Si el mensaje entrante se etiqueta con el número 1 y si hace que el objeto receptor
invoque otros mensajes en otros objetos, entonces los mencionados mensajes se representan
mediante flechas desde el emisor hacia el receptor a lo largo de una línea de asociación y reciben
números 1.1, 1.2, etc., en el orden en el que se llaman. Si tales mensajes a su vez invocan otros
mensajes, se agrega otro punto decimal y otro número al número que etiqueta dichos mensajes
parte de un sistema a través del flujo de control entre acciones que realiza el sistema. Es similar a
63
un diagrama de flujo, excepto porque un diagrama de actividad puede mostrar flujos
representado mediante un rectángulo redondeado, que corresponde a una tarea realizada por el
sistema de software. Las flechas desde un nodo acción hasta otro indican el flujo de control; es
decir, una flecha entre dos nodos acción significa que, después de completar la primera acción,
comienza la segunda acción. Un punto negro sólido forma el nodo inicial que indica el punto de
inicio de la actividad. Un punto negro rodeado por un círculo negro es el nodo final que indica el
fin de la actividad.
concurrentes. Se dibuja como una barra negra horizontal con una flecha apuntando hacia ella y
dos o más flechas apuntando en sentido opuesto. Cada flecha continua representa un flujo de
control que puede ejecutarse de manera concurrente con los flujos correspondientes a las otras
III.9. DIAGRAMAS DE
ESTADO
64
El comportamiento de un objeto en un punto particular en el tiempo con frecuencia
depende del estado del objeto; es decir, de los valores de sus variables en dicho momento.
Un diagrama de estado UML modela los estados de un objeto, las acciones que se
realizan dependiendo de dichos estados y las transiciones entre los estados del objeto.
65
IV.1. INTRODUCCIÓN
más popular del Proceso Unificado de Desarrollo, es establecer un modelo de proceso (un marco
Es iterativo e incremental
Algunas de las metas que se buscan al usar este modelo de proceso son:
con un plan de línea base y unos criterios de evaluación, que resulta en una
entrega)
IV.3. FASES
Estas son las fases en que se divide cada uno de los ciclos de vida por los que pasa un
proyecto software:
objetivos (de este ciclo) del proyecto. Los objetivos en esta fase son:
proyecto.
rápida y práctica.
necesaria.
o Ejecutar el despliegue.
que tiene una configuración modular cuando el proyecto cuenta con una arquitectura orientada a
Todas las actividades del RUP deben ser reestructuradas para soportar SOA
SOA define un conjunto de técnicas y productos de trabajo, tal como aparece en la figura
Los casos de uso son una técnica, muy característica de este modelo de proceso, con la
Si vemos el software como un sistema que ofrece a su entorno una serie de servicios, un caso de
uso es una forma de expresar la manera en que un usuario o un sistema externo (llamado 'actor')
lo utiliza.
70
Los casos de uso no describen ninguna funcionalidad interna (oculta al exterior) del
sistema, ni explican cómo se implementará. Simplemente muestran los pasos que el actor sigue
expresa la intención que tiene el actor al hacer uso del sistema. Como técnica de extracción de
requisitos permite que el analista se centre en las necesidades del usuario (¿qué espera éste lograr
al utilizar el sistema?), evitando que los desarrolladores dirijan la funcionalidad del nuevo
requisitos, el analista se concentra en las tareas centrales del usuario, las más importantes,
describiendo por lo tanto los casos de uso que mayor valor aportan al negocio. Esto facilita luego
Los casos de uso pueden ser útiles para establecer requisitos de comportamiento, pero no
funcionales. Los casos de uso deben complementarse con información adicional como reglas de
negocio, requisitos no funcionales, diccionario de datos, etc. que complementa los requisitos
formales del sistema. De hecho cada caso de uso considerado 'crítico' debería tener una serie de
bastante configurable y basado en fuertes estándares. Este entorno de proceso permite establecer
un método personalizado para cada organización, configurándolo para satisfacer las necesidades
que se están mejorando continuamente de forma regular para reflejar los cambios que sufre la
industria. Además, pretende obtener productos de muy alta calidad, si bien sus diferentes
características como el estar formado por varias fases, con múltiples iteraciones por fase, etc.
pueden provocar que el proceso sea costoso y no sea adaptable para proyectos de pequeña escala.
Aún así, el hecho de que este modelo siga un esquema iterativo e incremental permite bastante
Este modelo de proceso está pensado para usarse desde el principio de un nuevo proyecto, y
puede seguir utilizándose en todos los ciclos de desarrollo siguientes, mucho tiempo después de
La estructura del ciclo vital del proyecto (número de iteraciones, duración total
IV.7. CONCLUSIONES
72
En resumidas cuentas, podemos decir que el Proceso Unificado es un importante marco
de software.
Construcción: Implementación
Como desventajas, podemos señalar que requiere una gran previsión sobre lo que va a
ocurrir (para poder controlarlo) y que genera abundante trabajo adicional (y costes asociados) de
documentación y comunicación, con lo que no suele resultar práctico para proyectos pequeños.
73
Bibliografía
DanielRamos. (s.f.). Desarrollo de Software: Requisitos, Estimaciones y Análisis. 2 Edición - Daniel Ramos
GoogleLibros. (s.f.). El Proceso de Desarrollo de Software: 2ª Edición - Raúl Noriega Martínez - Google
Libros.
software, D. d. (s.f.). Proceso del desarrollo del software - Wikipedia, la enciclopedia libre.
VD, S. (s.f.). Fases del Proceso de Desarrollo del Software | Sistemas VD (wordpress.com).
vida, C. d. (s.f.). Ciclo de vida del software: todo lo que necesitas saber (intelequia.com).