SlideShare una empresa de Scribd logo
1 de 17
República Bolivariana de Venezuela
Ministerio del Poder Popular Para la Educación Universitaria
Universidad Nacional Experimental Sur del Lago “Jesús María
Semprum”
Programa Nacional de Formación en Informática
Trayecto II – Trimestre I
Ing del Software
Procesos de Desarrollo de Software
Prof: Integrantes:
Ing. Palomares Maryleivis Morán Leynes C.I. 26.347.622
González María C.I. 27.183.773
Bravo Wenvania C.I. 27.538.945
Delgado Daviana C.I. 26.347.907
Montiel Denisse C.I. 26.258.456
Santa Bárbara de Zulia, Abril 2017
Introducción
En las dos últimas décadas las notaciones de modelado y posteriormente
las herramientas han sido las "balas de plata" para el deseado éxito en el
desarrollo de software. El proceso de desarrollo asumido en este contexto
llevaba asociada una marcada tendencia hacia el control del proceso
mediante una rigurosa definición de actividades, artefactos y roles. Este
esquema "tradicional" para abordar el desarrollo de software ha demostrado
ser efectivo en proyectos de gran envergadura donde por lo general se exige
un alto grado de ceremonia en el proceso. Sin embargo, este enfoque no
resulta ser el más adecuado para muchos de los proyectos actuales donde el
contexto es muy cambiante, y en donde se exige reducir drásticamente los
tiempos de desarrollo pero manteniendo una alta calidad. En la práctica, para
muchos equipos de desarrollo, ante las dificultades para utilizar metodologías
tradicionales, se llegó a la resignación de prescindir del "buen hacer" de la
ingeniería del software con el objetivo de ajustarse a estas restricciones.
Ante esta situación, las metodologías ágiles aparecen como una posible
respuesta para llenar este vacío metodológico. Por estar especialmente
orientadas para proyectos pequeños, las metodologías ágiles constituyen
una solución a medida, con una elevada simplificación que a pesar de ello no
renuncia a las prácticas esenciales para asegurar la calidad del producto. El
tema es de rabiosa actualidad. La curiosidad que siente la mayor parte de
ingenieros de software, profesores, e incluso alumnos, sobre los métodos
ágiles hace prever una fuerte proyección industrial de las metodologías
ágiles. Por un lado, para muchos equipos de desarrollo el uso de
metodologías tradicionales les resulta muy lejano a su forma de trabajo
actual considerando las dificultades de su introducción e inversión asociada
en formación y herramientas. Por otro, las características de los proyectos
para los cuales las metodologías ágiles han sido especialmente pensadas se
ajustan a un amplio rango de proyectos industriales de desarrollo de
software; aquellos en los cuales los equipos de desarrollo son pequeños, con
plazos reducidos, requisitos volátiles, nuevas tecnologías, etc. Esto último
abriría interesantes canales de cooperación entre la industria y la
universidad.
Metodologías Empleadas
Una metodología software es un enfoque, una manera de interpretar la
realidad o la disciplina en cuestión, que en este caso particular
correspondería a la Ingeniería del Software. Es una aproximación organizada
y sistemática para el ciclo de vida del sistema o sus partes. Especifica las
tareas individuales y sus secuencias [Palvia y Nosek, 1993] Conjunto de
procedimientos, técnicas, herramientas y un soporte documental que ayuda a
los desarrolladores a realizar nuevo software [Piattini et al., 2004]
Metodologías orientadas a procesos
La Ingeniería del Software se fundamenta en el modelo básico
entrada/proceso/salida de un sistema, estas metodologías se enfocan
fundamentalmente en la parte de proceso , utilizan un enfoque de
descomposición descendente para evaluar los procesos del espacio del
problema y los flujos de datos con los que están conectados. Este tipo de
metodologías se desarrolló a lo largo de los años 70
Representantes de este grupo son las metodologías de análisis y
diseño estructurado como:
1) Merise [Tardieu et al., 1986]
2) YSM (Yourdon Systems Method) [Yourdon Inc., 1993]
3)SSADM (Structured Systems Analysis and Design Method)
4) [Ashworth y Goodland, 1990]
5) METRICA v.2.1 [MAP, 1995]
6) METRICA v3.0 (Parcialmente)
7) [MAP, 2001]
Metodologías orientadas a Datos
Estas metodologías se centran más la parte de entrada/salida, las
actividades de análisis comienzan evaluando en primer lugar los datos y sus
interrelaciones para determinar la arquitectura de datos subyacente, cuando
esta arquitectura está definida, se definen las salidas a producir y los
procesos y entradas necesarios para obtenerlas.
Representantes
1) JSP (Jackson Structured Programming) [Jackson, 1975]
2) JSD (Jackson Structured Design) [Jackson, 1983]
3) LCP (Logical Construction Program) [Warnier, 1974]
4) DESD (Desarrollo de Sistemas Estructurados de Datos), también
conocido como metodología Warnier-Orr [Orr, 1977]
Orientadas a Estados y Transiciones
Aproximación que se encuentra aún en una fase temprana de desarrollo,
utiliza técnicas y conceptos de Inteligencia Artificial para especificar y generar
sistemas de información.
Representantes
1) KADS (Knowledge Acquisition and Development Systems) [Wielinga et
al., 1991]
2) IDEAL [Gómez et al., 1998] Orientadas al diseño del conocimiento
Orientadas al desarrollo de sistemas hipermediales
Pretenden sistematizar la creación de aplicaciones Web dentro de un
proceso de creación de software bien definido, muchas de estas
aproximaciones adolecen de tratar de forma separada los aspectos
hipermediales de los meramente funcionales, esto dificulta el afrontar el
problema del desarrollo de aplicaciones Web dentro de un contexto uniforme
Representantes
1) HDM (Hypermedia Design Model) [Garzotto et al., 1993]
2) HFPM (Hypermedia Flexible Process Modeling) [Olsina, 1998]
3) OOHDM (Object-Oriented Hypermedia Design Method) [Rossi, 1996]
4) OOH-Method [Gómez et al., 2000]
5) OOWS (Object-Oriented Web-Solutions) [Pastor et al., 2001a]
6) WSDN (Web Site Design Method) [De Troyer y Leune, 1997]
Basadas en métodos formales
Implican una revolución en los procedimientos de desarrollo, ya que a
diferencia de todas las anteriores, se basan en teorías matemáticas que
permiten una verdadera aproximación científica y rigurosa al desarrollo de
sistemas de información y software asociado
Representantes
1) OO-Method [Pastor et al., 2001b]
Metodologías Ágiles
Un proceso es ágil cuando el desarrollo de software tiene las siguientes
características:
Es incremental, es cooperativo, es sencillo y es adaptable.
En 2001, Kent Beck y otros 16 notables desarrolladores, escritores y
consultores (conocidos como la Alianza Ágil) firmaron el Manifiesto para el
desarrollo ágil del software, el cual establecía: Hemos descubierto mejores
formas de desarrollar software al construirlo por nuestra cuenta y ayudar a
otros a hacerlo. Por medio de este trabajo hemos llegado a valorar: A los
individuos y sus interacciones sobre los procesos y las herramientas, al
software en funcionamiento sobre la documentación extensa, a la
colaboración del cliente sobre la negociación del contrato, a la respuesta al
cambio sobre el seguimiento de un plan Introducción a la Ingeniería del
Software
Importancia
El ambiente moderno de los negocios ocasiona que los sistemas basados
en computadores y los productos de software estén en cambios continuos y
deben realizarse en forma acelerada. La ingeniería del software ágil
representa una opción razonable a la ingeniería convencional para ciertas
clases de software y ciertos tipos de proyectos de software. Ha demostrado
su utilidad al entregar sistemas exitosos con rapidez.
La Alianza Ágil Define 10 Principios para quienes alcanzar la agilidad:
1) Nuestra mayor prioridad es satisfacer al cliente mediante la entrega
temprana y continua de software valioso .
2) Bienvenidos lo requisitos cambiantes, incluso en fases tardías del
desarrollo.
3) Entrega con frecuencia software en funcionamiento, desde un par de
semanas hasta un par de meses, con una preferencia por la escala de
tiempo mas corta.
4) Los dueños de los procesos de negocios y los desarrolladores deben
trabajar juntos a diario a lo largo del proyecto.
5) Construir proyectos alrededor de individuos motivados.
6) Darles el ambiente y el soporte que necesitan, y confiar en ellos para
obtener el trabajo realizado.
7) El método mas eficiente y efectivo de transmitir información hacia y
dentro de un equipo de desarrollo es la conversación cara a cara.
8) El software en funcionamiento es la medida primaria de progreso.
9) Los procesos ágiles promueven el desarrollo sustentable.
10) Los patrocinadores, desarrolladores y usuarios deben ser capaces de
mantener un paso constante de manera indefinida.
Programación extrema
Pone más énfasis en la adaptabilidad que en la previsibilidad, cambio de
requisitos es evidente modelo de proceso iterativo e incremental, pruebas
unitarias continuas, programación en parejas Integración del equipo de
programación con el cliente, corrección de todos los errores refactorización
del código , propiedad del código compartida, simplicidad en el código
SCRUM
Es un proceso marco que incluye un conjunto de prácticas y roles
predefinidos El equipo crea un incremento de software potencialmente
entregable (utilizable) Se acuerda la cantidad de trabajo de compromiso.
Proceso Unificado de desarrollo de Software
El Proceso Unificado es un proceso de desarrollo de software: “conjunto
de actividades necesarias para transformar los requisitos del usuario en un
sistema software”. · RUP es un marco genérico que puede especializarse
para una variedad de tipos de sistemas, diferentes áreas de aplicación, tipos
de organizaciones, niveles de aptitud y diferentes tamaños de proyectos. ·
RUP está basado en componentes. El sw esta formado por componentes
software interconectados a través de interfaces. · RUP está dirigido por
casos de uso, centrado en la arquitectura, y es iterativo e incremental.
Fases
Cada ciclo constas de cuatro fases: inicio, elaboración, construcción, y
transición.
Fase de Inicio
Durante la fase de inicio se desarrolla una descripción del producto final, y
se presenta el análisis del negocio. Esta fase responde las siguientes
preguntas:
· ¿Cuáles son las principales funciones del sistema para los usuarios más
importantes?
· ¿Cómo podría ser la mejor arquitectura del sistema?
· ¿Cuál es el plan del proyecto y cuánto costará desarrollar el producto?
En esta fase se identifican y priorizan los riesgos más importantes. El
objetivo de esta fase es ayudar al equipo de proyecto a decidir cuáles son los
verdaderos objetivos del proyecto. Las iteraciones exploran diferentes
soluciones posibles, y diferentes arquitecturas posibles. Puede que todo el
trabajo físico realizado en esta fase sea descartado. Lo único que
normalmente sobrevive a la fase de inicio es el incremento del conocimiento
en el equipo.
Los artefactos que típicamente sobreviven a esta fase son:
- Un enunciado de los mayores requerimientos planteados generalmente
como casos de uso.
- Un boceto inicial de la arquitectura.
- Una descripción de los objetivos del proyecto.
- Una versión muy preliminar del plan del proyecto.
- Un modelo del negocio.
La fase de inicio finaliza con el Hito de Objetivos del Ciclo de Vida. Este
hito es alcanzado cuando el equipo de proyectos y los stakeholders llegan a
un acuerdo sobre:
- Cuál es el conjunto de necesidades del negocio, y que conjunto de
funciones satisfacen estas necesidades.
- Una planificación preliminar de iteraciones.
- Una arquitectura preliminar.
Debe poder responderse las siguientes cuestiones:
- ¿Se ha determinado con claridad el ámbito del sistema?
¿Se ha determinado lo que va a estar dentro del sistema y fuera de el
sistema?
- ¿Se ha llegado a un acuerdo con todas las personas involucradas
(stakeholders) sobre los requisitos funcionales del sistema?
- ¿Se vislumbra una arquitectura que pueda soportar estas características?
- ¿Se identifican los riesgos críticos?
¿Se prevé forma de mitigarlos?
- ¿El uso del producto justifica la relación costo-beneficio?
- ¿Es factible para su organización llevar adelante el proyecto?
- ¿Están los inversores de acuerdo con los objetivos?
Fase de Elaboración
Durante la fase de elaboración se especifican en detalle la mayoría de los
casos de uso del producto y se diseña la arquitectura.
Las iteraciones en la fase de elaboración:
- Establecen una firme comprensión del problema a solucionar.
- Establece la fundación arquitectural para el software.
- Establece un plan detallado para las siguientes iteraciones.
- Elimina los mayores riesgos.
El resultado de esta fase es la línea base de la arquitectura. En esta fase
se construyen típicamente los siguientes artefactos:
- El cuerpo básico del sw en la forma de un prototipo arquitectural.
- Casos de prueba
- La mayoría de los casos de uso (80%) que describen la funcionalidad del
sistema.
- Un plan detallado para las siguientes iteraciones.
La fase de elaboración finaliza con el hito de la Arquitectura del Ciclo de
Vida. Este hito se alcanza cuando el equipo de desarrollo y los stakeholders
llegan a un acuerdo sobre:
- Los casos de uso que describen la funcionalidad del sistema.
- La línea base de la arquitectura
- Los mayores riesgos han sido mitigados
- El plan del proyecto
Al alcanzar este hito debe poder responderse a preguntas como:
- ¿Se ha creado una línea base de la arquitectura?
¿Es adaptable y robusta? ¿Puede evolucionar?
- ¿Se han identificado y mitigado los riesgos más graves?
- ¿Se ha desarrollado un plan del proyecto hasta el nivel necesario para
respaldar una agenda, costes, y calidad realistas?
- ¿Proporciona el proyecto, una adecuada recuperación de la inversión?
- ¿Se ha obtenido la aprobación de los inversores?
Fase de Construcción
Durante la fase de construcción se crea el producto. La línea base de la
arquitectura crece hasta convertirse en el sistema completo. Al final de esta
fase, el producto contiene todos los casos de uso implementados, sin
embargo puede que no este libre de defectos. Los artefactos producidos
durante esta fase son:
- El sistema software
- Los casos de prueba
- Los manuales de usuario
La fase de construcción finaliza con el hito de Capacidad Operativa Inicial.
Este hito se alcanza cuando el equipo de desarrollo y los stakeholders llegan
a un acuerdo sobre:
- El producto es estable para ser usado
- El producto provee alguna funcionalidad de valor
- Todas las partes están listas para comenzar la transición
Fase de Transición
Cubre el período durante el cual el producto se convierte en la versión
beta. Las iteraciones en esta fase continúan agregando características al sw.
Sin embargo las características se agregan a un sistema que el usuario se
encuentra utilizando activamente. Los artefactos construidos en esta fase
son los mismos que en la fase de construcción. El equipo se encuentra
ocupado fundamentalmente en corregir y extender la funcionalidad del
sistema desarrollado en la fase anterior.
La fase de transición finaliza con el hito de Lanzamiento del Producto.
Este hito se alcanza cuando el equipo de desarrollo y los stakeholders llegan
a un acuerdo sobre:
- Se han alcanzado los objetivos fijados en la fase de Inicio.
- El usuario está satisfecho.
Disciplinas
Cada disciplina es un conjunto de actividades relacionadas (flujos de
trabajo) vinculadas a un área específica dentro del proyecto total. Las más
importantes son: Requerimientos, Análisis, Diseño, Codificación, y Prueba. El
agrupamiento de actividades en disciplinas es principalmente una ayuda para
comprender el proyecto desde la visión tradicional en cascada.
Está asociada con un conjunto de modelos que se desarrollan. Estos
modelos están compuestos por artefactos. Los artefactos más importantes
son los modelos que cada disciplina realiza: modelo de casos de uso,
modelo de diseño, modelo de implementación, y modelo de prueba.
Proceso Unificado de Software
El Proceso Unificado consiste en una serie de disciplinas o flujos de
trabajo que van desde los requisitos hasta las pruebas. Los flujos de trabajo
desarrollan modelos desde el modelo de casos de uso hasta el modelo de
pruebas.
Elementos para Interpretar el Modelado del Software (Lenguaje
Unificado de Modelado)
Los elementos de UML son los bloques básicos de construcción de un
sistema orientado a objetos. Son abstracciones que constituyen los
ciudadanos de primera clase en un modelo. Se utilizan para construir
modelos bien formados.
• Posee tres tipos de elementos:
1) Estructurales
Clase
Una clase es una descripción de un conjunto de objetos que comparten
los mismos atributos, operaciones, relaciones y semántica. Es un concepto
de diseño, en ejecución, el sistema está formado por instancias de clases
(Objetos)
Las clases se pueden utilizar para: capturar el vocabulario del sistema que
se está desarrollando (fase de análisis) representar la solución
Objeto
Un objeto representa una instancia de una clase en un determinado
contexto. Es un concepto de ejecución . El sistema estará formado por un
conjunto de objetos interaccionando entre sí
Interfaz
Colección de operaciones que especifican un servicio que puede ser
ofrecido por una clase o componente. Describen el comportamiento visible
externamente de dichos elementos. Pueden representar el comportamiento
completo de la clase/componente o solo una parte. Una interfaz define un
conjunto de especificaciones de operaciones (signaturas), pero no las
implementaciones de dichas operaciones.
Caso de Uso
Describe un comportamiento de un sistema, clase o componente, desde
el punto de vista del usuario. Describe un conjunto de secuencias de
acciones que ejecuta un sistema y que produce un resultado observable que
es de interés para un usuario particular. Se emplea para estructurar los
aspectos de comportamiento. Un caso de uso es realizado por una
colaboración.
Colaboración
Define una interacción entre una sociedad de roles y otros elementos que
colaboran para proporcionar un comportamiento mayor que la suma de sus
comportamientos aislados. Tienen dimensión estructural y de
comportamiento
Clase Activa
Tipo especial de clase cuyos objetos tienen uno o más procesos o hilos
de ejecución Pueden dar origen a actividades de control. Son iguales que
las clases salvo que sus objetos pueden ser concurrentes con otros objetos
de clases activa
Componente
Parte modular de la arquitectura física de un sistema que oculta su
implementación tras un conjunto de interfaces externas. Define su
comportamiento en base a interfaces requeridas y ofertadas Reemplazables
El sistema se define en base a componentes conectados entre sí. Los
componentes pueden ser de granularidad variable
Artefacto
Parte física y reemplazable de un sistema que contiene información física
(bits). Es utilizada o generada en el proceso de desarrollo Hay diferentes
artefactos de despliegue: código fuente, ejecutables, scripts, etc.
Nodo
Elemento físico que existe en tiempo de ejecución y representa un
recurso computacional. En un nodo pueden residir un conjunto de artefactos.
Sirven para describir las plataformas en las que se ejecutan las aplicaciones
2. De Comportamiento
Interacción
Comportamiento que comprende un conjunto de mensajes
intercambiados entre un conjunto de objetos, dentro de un contexto
particular, para un propósito específico. Sirven para modelar el
comportamiento de una sociedad de objetos, o una operación individual.
Además de a los objetos implicados, involucran: Mensajes, Acciones y
Enlaces (conexiones entre objetos).
Máquina de Estados
Comportamiento que especifica las secuencias de estados por las que
pasa un objeto o una interacción durante su vida, en respuesta a eventos,
junto con sus reacciones a dichos eventos. Sirven para especificar el
comportamiento de una clase individual o una colaboración de clases.
Involucran a: Estados, Transiciones (flujo de un estado a otro), Eventos (que
disparan una transición) y Actividades (respuesta a una transición)
Actividad
Comportamiento que especifica la secuencia de pasos que ejecuta un
proceso computacional. Una acción es un paso de una actividad.
3) De Agrupamiento
Paquete
Es recomendable que el contenido sea una colección de elementos UML
relacionados de forma lógica. Se pueden utilizar en cualquier tipo de
diagrama UML. Un paquete puede contener otros paquetes, sin límite de
anidamiento, pero cada elemento pertenece a (está definido en) sólo un
paquete. La visibilidad de los elementos incluidos en un paquete puede
controlarse para que algunos sean visibles fuera del paquete mientras que
otros permanezcan ocultos.
Diagramas de Flujo
Es la representación gráfica de flujo de secuencia rutinarias. Se basan en
la utilización de diversos símbolos para representar operaciones específicas.
Se les llama diagramas de flujo porque los símbolos utilizados se conectan
por medio de flechas para indicar la secuencia de la operación.
Tipos:
1) Formato vertical: En él el flujo o la secuencia de las operaciones, va de
arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso
con toda la información que se considere necesaria, según su propósito.
2) Formato horizontal: En él, el flujo o la secuencia de las operaciones, va
de izquierda a derecha.
3) Formato panorámico: El proceso entero está representado en una sola
carta y puede apreciarse de una sola mirada mucho más rápido que leyendo
el texto, lo que facilita su comprensión, aun para personas no familiarizadas.
Registra no solo en línea vertical, sino también horizontal, distintas acciones
simultáneas y la participación de más de un puesto o departamento que el
formato vertical no registra.
4) Formato Arquitectónico: Describe el itinerario de ruta de una forma o
persona sobre el plano arquitectónico del área de trabajo. El primero de los
flujogramas es eminentemente descriptivo, mientras que los utilizados son
fundamentalmente representativos.
Ejemplo:
Símbolos y Notaciones
Inicio o fin Actividad Decisión
Conector
Ciclo de Vida
El proceso de desarrollo de software no es único. No existe un proceso de
software universal que sea efectivo para todos los contextos de proyectos de
desarrollo. Debido a esta diversidad, es difícil automatizar todo un proceso
de desarrollo de software.
A pesar de la variedad de propuestas de proceso de software, existe un
conjunto de actividades fundamentales que se encuentran presentes en
todos ellos [4]:
1. Especificación de software: Se debe definir la funcionalidad y
restricciones operacionales que debe cumplir el software.
2. Diseño e Implementación: Se diseña y construye el software de
acuerdo a la especificación.
3. Validación: El software debe validarse, para asegurar que cumpla con
lo que quiere el cliente.
4. Evolución: El software debe evolucionar, para adaptarse a las
necesidades del cliente.
Además de estas actividades fundamentales, Pressman [1] menciona un
conjunto de “actividades protectoras”, que se aplican a lo largo de todo el
proceso del software. Ellas se señalan a continuación:
 Seguimiento y control de proyecto de software.
 Revisiones técnicas formales.
 Garantía de calidad del software.
 Gestión de configuración del software.
 Preparación y producción de documentos.
 Gestión de reutilización.
 Mediciones.
 Gestión de riesgos.
Pressman [1] caracteriza un proceso de desarrollo de software. Los
elementos involucrados se describen a continuación:
 Un marco común del proceso, definiendo un pequeño número de
actividades del marco de trabajo que son aplicables a todos los proyectos
de software, con independencia del tamaño o complejidad.
 Un conjunto de tareas, cada uno es una colección de tareas de
ingeniería del software, hitos de proyectos, entregas y productos de
trabajo del software, y puntos de garantía de calidad, que permiten que las
actividades del marco de trabajo se adapten a las características del
proyecto de software y los requisitos del equipo del proyecto.
 Las actividades de protección, tales como garantía de calidad del
software, gestión de configuración del software y medición, abarcan el
modelo del proceso. Las actividades de protección son independientes de
cualquier actividad del marco de trabajo y aparecen durante todo el
proceso.
Conclusión
No existe una metodología universal para hacer frente con éxito a cualquier
proyecto de desarrollo de software. Toda metodología debe ser adaptada al
contexto del proyecto (recursos técnicos y humanos, tiempo de desarrollo, tipo de
sistema, etc. Históricamente, las metodologías tradicionales han intentado abordar
la mayor cantidad de situaciones de contexto del proyecto, exigiendo un esfuerzo
considerable para ser adaptadas, sobre todo en proyectos pequeños y con
requisitos muy cambiantes. Las metodologías ágiles ofrecen una solución casi a
medida para una gran cantidad de proyectos que tienen estas características. Una
de las cualidades más destacables en una metodología ágil es su sencillez, tanto en
su aprendizaje como en su aplicación, reduciéndose así los costos de implantación
en un equipo de desarrollo.
Esto ha llevado hacia un interés creciente en las metodologías ágiles. Sin
embargo, hay que tener presente una serie de inconvenientes y restricciones para
su aplicación, tales como: están dirigidas a equipos pequeños o medianos (Beck
sugiere que el tamaño de los equipos se limite de 3 a 20 como máximo, otros dicen
no más de 10 participantes), el entorno físico debe ser un ambiente que permita la
comunicación y colaboración entre todos los miembros del equipo durante todo el
tiempo, cualquier resistencia del cliente o del equipo de desarrollo hacia las
prácticas y principios puede llevar al proceso al fracaso (el clima de trabajo, la
colaboración y la relación contractual son claves), el uso de tecnologías que no
tengan un ciclo rápido de realimentación o que no soporten fácilmente el cambio
Bibliografía
Análisis y Diseño de Sistemas. Libro Virtual.
http://ac.itdurango.mx/araceli_dguez/LIBROS%20ELECTRONICOS/Kendall%
20&%20Kendall%20-
Edicion%203%20Analisis%20y%20dise%F1o%20de%20sistemas.pdf
Diagramas de Flujo. Libro Virtual
https://electronicsdj.files.wordpress.com/2009/09/diagramas-de-flujo.pdf
Metodologías Ágiles en el Desarrollo de Software. 2013. Libro Virtual
http://issi.dsic.upv.es/archives/f-1069167248521/actas.pdf
Metodologías de Desarrollo de Software. Libro Virtual.
https://uvirtual.unet.edu.ve/file.php/419/Metodologias_de_desarrollo_de_Soft
ware_IS.pdf
Proceso Software y Ciclo de Vida. Libro Virtual.
https://www.fdi.ucm.es/profesor/gmendez/docs/is0809/02-
ProcesoCicloDeVida.pdf
Patricia López y Francisco Ruiz. Lenguaje Unificado de Modelado – UML.
Libro Virtual. http://ocw.unican.es/ensenanzas-tecnicas/ingenieria-del-
software-i/materiales-de-clase-1/is1-t02-trans.pdf

Más contenido relacionado

La actualidad más candente

Metodologias Agiles
Metodologias AgilesMetodologias Agiles
Metodologias Agilespuyol10
 
Metodologías ágiles en el desarrollo de software
Metodologías ágiles en el desarrollo de softwareMetodologías ágiles en el desarrollo de software
Metodologías ágiles en el desarrollo de softwareprinceos
 
Ciclo de vida clásico de desarrollo de sistemas
Ciclo de vida clásico de desarrollo de sistemasCiclo de vida clásico de desarrollo de sistemas
Ciclo de vida clásico de desarrollo de sistemasAndrezMendozaMelendr
 
Presentación MeRinde 6CNSL Abril 2010
Presentación MeRinde 6CNSL Abril 2010Presentación MeRinde 6CNSL Abril 2010
Presentación MeRinde 6CNSL Abril 2010Kiberley Santos
 
Qué metodología será más adecuada para mi proyecto software
Qué metodología será más adecuada para mi proyecto softwareQué metodología será más adecuada para mi proyecto software
Qué metodología será más adecuada para mi proyecto softwareLeanSight Consulting
 
Metodologias de software ISI-311 Trabajo Practico#2
Metodologias de software ISI-311 Trabajo Practico#2Metodologias de software ISI-311 Trabajo Practico#2
Metodologias de software ISI-311 Trabajo Practico#2RICARDOANDRESSAUCEDO
 
Metodologías ágiles
Metodologías ágilesMetodologías ágiles
Metodologías ágilesFabian Garzon
 
Metodología de Desarrollo de Software en base a MDE con DSL
Metodología de Desarrollo de Software en base a MDE con DSLMetodología de Desarrollo de Software en base a MDE con DSL
Metodología de Desarrollo de Software en base a MDE con DSLSantiago Jacome
 
Introducción a las Metodologías Ágiles
Introducción a las Metodologías ÁgilesIntroducción a las Metodologías Ágiles
Introducción a las Metodologías ÁgilesCondiminds
 
Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agilesAdam Guevara
 
Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agilesmmanuelo
 
Metodologías de desarrollo de software ucp
Metodologías de desarrollo de software   ucpMetodologías de desarrollo de software   ucp
Metodologías de desarrollo de software ucpAlonso Toro Lazo
 
Análisis de la importancia del uso de metodologías de desarrollo y métricas d...
Análisis de la importancia del uso de metodologías de desarrollo y métricas d...Análisis de la importancia del uso de metodologías de desarrollo y métricas d...
Análisis de la importancia del uso de metodologías de desarrollo y métricas d...guestbbd363
 
Metodologías Ágiles para el Desarrollo de Software y Metodologias Para el de...
Metodologías Ágiles  para el Desarrollo de Software y Metodologias Para el de...Metodologías Ágiles  para el Desarrollo de Software y Metodologias Para el de...
Metodologías Ágiles para el Desarrollo de Software y Metodologias Para el de...Joel Fernandez
 

La actualidad más candente (17)

Metodologias Agiles
Metodologias AgilesMetodologias Agiles
Metodologias Agiles
 
Metodologías ágiles en el desarrollo de software
Metodologías ágiles en el desarrollo de softwareMetodologías ágiles en el desarrollo de software
Metodologías ágiles en el desarrollo de software
 
Ciclo de vida clásico de desarrollo de sistemas
Ciclo de vida clásico de desarrollo de sistemasCiclo de vida clásico de desarrollo de sistemas
Ciclo de vida clásico de desarrollo de sistemas
 
Métodos agiles
Métodos agilesMétodos agiles
Métodos agiles
 
Presentación MeRinde 6CNSL Abril 2010
Presentación MeRinde 6CNSL Abril 2010Presentación MeRinde 6CNSL Abril 2010
Presentación MeRinde 6CNSL Abril 2010
 
Qué metodología será más adecuada para mi proyecto software
Qué metodología será más adecuada para mi proyecto softwareQué metodología será más adecuada para mi proyecto software
Qué metodología será más adecuada para mi proyecto software
 
Metodologiasde desarrollo de software
Metodologiasde desarrollo de softwareMetodologiasde desarrollo de software
Metodologiasde desarrollo de software
 
Metodologias de software ISI-311 Trabajo Practico#2
Metodologias de software ISI-311 Trabajo Practico#2Metodologias de software ISI-311 Trabajo Practico#2
Metodologias de software ISI-311 Trabajo Practico#2
 
Metodologías ágiles
Metodologías ágilesMetodologías ágiles
Metodologías ágiles
 
Metodología de Desarrollo de Software en base a MDE con DSL
Metodología de Desarrollo de Software en base a MDE con DSLMetodología de Desarrollo de Software en base a MDE con DSL
Metodología de Desarrollo de Software en base a MDE con DSL
 
Introducción a las Metodologías Ágiles
Introducción a las Metodologías ÁgilesIntroducción a las Metodologías Ágiles
Introducción a las Metodologías Ágiles
 
Monografia
MonografiaMonografia
Monografia
 
Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agiles
 
Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agiles
 
Metodologías de desarrollo de software ucp
Metodologías de desarrollo de software   ucpMetodologías de desarrollo de software   ucp
Metodologías de desarrollo de software ucp
 
Análisis de la importancia del uso de metodologías de desarrollo y métricas d...
Análisis de la importancia del uso de metodologías de desarrollo y métricas d...Análisis de la importancia del uso de metodologías de desarrollo y métricas d...
Análisis de la importancia del uso de metodologías de desarrollo y métricas d...
 
Metodologías Ágiles para el Desarrollo de Software y Metodologias Para el de...
Metodologías Ágiles  para el Desarrollo de Software y Metodologias Para el de...Metodologías Ágiles  para el Desarrollo de Software y Metodologias Para el de...
Metodologías Ágiles para el Desarrollo de Software y Metodologias Para el de...
 

Similar a Procesos de desarrollo de software

Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agilesmartin8730
 
Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agilesmartin8730
 
Todo agilok
Todo agilokTodo agilok
Todo agilokCRJOSE
 
Metodologías para el desarrollo de software en PYMES
Metodologías para el desarrollo de software en PYMESMetodologías para el desarrollo de software en PYMES
Metodologías para el desarrollo de software en PYMESMarceloFalappa5
 
Administracion de proyectos software i estudiantes
Administracion de proyectos software i estudiantesAdministracion de proyectos software i estudiantes
Administracion de proyectos software i estudiantesCyber Brel'R
 
Presentacion diego
Presentacion diegoPresentacion diego
Presentacion diegodiegoching2
 
Metodologías de Desarrollo de Software Jr
 Metodologías de Desarrollo de Software Jr Metodologías de Desarrollo de Software Jr
Metodologías de Desarrollo de Software JrJunior Leal
 
Requirements Engineering for Software and Systems_chapter07 (1).pdf
Requirements Engineering for Software and Systems_chapter07 (1).pdfRequirements Engineering for Software and Systems_chapter07 (1).pdf
Requirements Engineering for Software and Systems_chapter07 (1).pdfLuciaMartnez7
 
Metodología de ingeniaría de Sofware-2022.pdf
 Metodología de ingeniaría de Sofware-2022.pdf Metodología de ingeniaría de Sofware-2022.pdf
Metodología de ingeniaría de Sofware-2022.pdfMarcoHuamani4
 
Eq1 metodología incremental presentacion
Eq1 metodología incremental presentacionEq1 metodología incremental presentacion
Eq1 metodología incremental presentacionIng Salgado Harrison
 
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405JonathanEusebioTolen
 
Metodologiasagilesarquitectura
MetodologiasagilesarquitecturaMetodologiasagilesarquitectura
Metodologiasagilesarquitecturaroisbelfigueroa
 
r3022837166376237762356d7263d524.05272591.pdf
r3022837166376237762356d7263d524.05272591.pdfr3022837166376237762356d7263d524.05272591.pdf
r3022837166376237762356d7263d524.05272591.pdfRebeca Ortega
 

Similar a Procesos de desarrollo de software (20)

Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agiles
 
Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agiles
 
Metodologia de software
Metodologia de softwareMetodologia de software
Metodologia de software
 
Todo agilok
Todo agilokTodo agilok
Todo agilok
 
Articulo agiles metodos
Articulo agiles metodosArticulo agiles metodos
Articulo agiles metodos
 
Metodologías para el desarrollo de software en PYMES
Metodologías para el desarrollo de software en PYMESMetodologías para el desarrollo de software en PYMES
Metodologías para el desarrollo de software en PYMES
 
Administracion de proyectos software i estudiantes
Administracion de proyectos software i estudiantesAdministracion de proyectos software i estudiantes
Administracion de proyectos software i estudiantes
 
Presentacion diego
Presentacion diegoPresentacion diego
Presentacion diego
 
Metodologías de Desarrollo de Software Jr
 Metodologías de Desarrollo de Software Jr Metodologías de Desarrollo de Software Jr
Metodologías de Desarrollo de Software Jr
 
Requirements Engineering for Software and Systems_chapter07 (1).pdf
Requirements Engineering for Software and Systems_chapter07 (1).pdfRequirements Engineering for Software and Systems_chapter07 (1).pdf
Requirements Engineering for Software and Systems_chapter07 (1).pdf
 
Metodologiasagiles
MetodologiasagilesMetodologiasagiles
Metodologiasagiles
 
Metodología de ingeniaría de Sofware-2022.pdf
 Metodología de ingeniaría de Sofware-2022.pdf Metodología de ingeniaría de Sofware-2022.pdf
Metodología de ingeniaría de Sofware-2022.pdf
 
Eq1 metodología incremental presentacion
Eq1 metodología incremental presentacionEq1 metodología incremental presentacion
Eq1 metodología incremental presentacion
 
Exposicion
ExposicionExposicion
Exposicion
 
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405
 
Metodologías de modelado para aplicaciones web
Metodologías de modelado para aplicaciones webMetodologías de modelado para aplicaciones web
Metodologías de modelado para aplicaciones web
 
Metodologiasagilesarquitectura
MetodologiasagilesarquitecturaMetodologiasagilesarquitectura
Metodologiasagilesarquitectura
 
METODOLOGÍAS ÁGILES EN TI
METODOLOGÍAS ÁGILES EN TIMETODOLOGÍAS ÁGILES EN TI
METODOLOGÍAS ÁGILES EN TI
 
METODOLOGÍAS ÁGILES
METODOLOGÍAS ÁGILESMETODOLOGÍAS ÁGILES
METODOLOGÍAS ÁGILES
 
r3022837166376237762356d7263d524.05272591.pdf
r3022837166376237762356d7263d524.05272591.pdfr3022837166376237762356d7263d524.05272591.pdf
r3022837166376237762356d7263d524.05272591.pdf
 

Procesos de desarrollo de software

  • 1. República Bolivariana de Venezuela Ministerio del Poder Popular Para la Educación Universitaria Universidad Nacional Experimental Sur del Lago “Jesús María Semprum” Programa Nacional de Formación en Informática Trayecto II – Trimestre I Ing del Software Procesos de Desarrollo de Software Prof: Integrantes: Ing. Palomares Maryleivis Morán Leynes C.I. 26.347.622 González María C.I. 27.183.773 Bravo Wenvania C.I. 27.538.945 Delgado Daviana C.I. 26.347.907 Montiel Denisse C.I. 26.258.456 Santa Bárbara de Zulia, Abril 2017
  • 2. Introducción En las dos últimas décadas las notaciones de modelado y posteriormente las herramientas han sido las "balas de plata" para el deseado éxito en el desarrollo de software. El proceso de desarrollo asumido en este contexto llevaba asociada una marcada tendencia hacia el control del proceso mediante una rigurosa definición de actividades, artefactos y roles. Este esquema "tradicional" para abordar el desarrollo de software ha demostrado ser efectivo en proyectos de gran envergadura donde por lo general se exige un alto grado de ceremonia en el proceso. Sin embargo, este enfoque no resulta ser el más adecuado para muchos de los proyectos actuales donde el contexto es muy cambiante, y en donde se exige reducir drásticamente los tiempos de desarrollo pero manteniendo una alta calidad. En la práctica, para muchos equipos de desarrollo, ante las dificultades para utilizar metodologías tradicionales, se llegó a la resignación de prescindir del "buen hacer" de la ingeniería del software con el objetivo de ajustarse a estas restricciones. Ante esta situación, las metodologías ágiles aparecen como una posible respuesta para llenar este vacío metodológico. Por estar especialmente orientadas para proyectos pequeños, las metodologías ágiles constituyen una solución a medida, con una elevada simplificación que a pesar de ello no renuncia a las prácticas esenciales para asegurar la calidad del producto. El tema es de rabiosa actualidad. La curiosidad que siente la mayor parte de ingenieros de software, profesores, e incluso alumnos, sobre los métodos ágiles hace prever una fuerte proyección industrial de las metodologías ágiles. Por un lado, para muchos equipos de desarrollo el uso de metodologías tradicionales les resulta muy lejano a su forma de trabajo actual considerando las dificultades de su introducción e inversión asociada en formación y herramientas. Por otro, las características de los proyectos para los cuales las metodologías ágiles han sido especialmente pensadas se ajustan a un amplio rango de proyectos industriales de desarrollo de software; aquellos en los cuales los equipos de desarrollo son pequeños, con plazos reducidos, requisitos volátiles, nuevas tecnologías, etc. Esto último abriría interesantes canales de cooperación entre la industria y la universidad.
  • 3. Metodologías Empleadas Una metodología software es un enfoque, una manera de interpretar la realidad o la disciplina en cuestión, que en este caso particular correspondería a la Ingeniería del Software. Es una aproximación organizada y sistemática para el ciclo de vida del sistema o sus partes. Especifica las tareas individuales y sus secuencias [Palvia y Nosek, 1993] Conjunto de procedimientos, técnicas, herramientas y un soporte documental que ayuda a los desarrolladores a realizar nuevo software [Piattini et al., 2004] Metodologías orientadas a procesos La Ingeniería del Software se fundamenta en el modelo básico entrada/proceso/salida de un sistema, estas metodologías se enfocan fundamentalmente en la parte de proceso , utilizan un enfoque de descomposición descendente para evaluar los procesos del espacio del problema y los flujos de datos con los que están conectados. Este tipo de metodologías se desarrolló a lo largo de los años 70 Representantes de este grupo son las metodologías de análisis y diseño estructurado como: 1) Merise [Tardieu et al., 1986] 2) YSM (Yourdon Systems Method) [Yourdon Inc., 1993] 3)SSADM (Structured Systems Analysis and Design Method) 4) [Ashworth y Goodland, 1990] 5) METRICA v.2.1 [MAP, 1995] 6) METRICA v3.0 (Parcialmente) 7) [MAP, 2001] Metodologías orientadas a Datos Estas metodologías se centran más la parte de entrada/salida, las actividades de análisis comienzan evaluando en primer lugar los datos y sus interrelaciones para determinar la arquitectura de datos subyacente, cuando esta arquitectura está definida, se definen las salidas a producir y los procesos y entradas necesarios para obtenerlas.
  • 4. Representantes 1) JSP (Jackson Structured Programming) [Jackson, 1975] 2) JSD (Jackson Structured Design) [Jackson, 1983] 3) LCP (Logical Construction Program) [Warnier, 1974] 4) DESD (Desarrollo de Sistemas Estructurados de Datos), también conocido como metodología Warnier-Orr [Orr, 1977] Orientadas a Estados y Transiciones Aproximación que se encuentra aún en una fase temprana de desarrollo, utiliza técnicas y conceptos de Inteligencia Artificial para especificar y generar sistemas de información. Representantes 1) KADS (Knowledge Acquisition and Development Systems) [Wielinga et al., 1991] 2) IDEAL [Gómez et al., 1998] Orientadas al diseño del conocimiento Orientadas al desarrollo de sistemas hipermediales Pretenden sistematizar la creación de aplicaciones Web dentro de un proceso de creación de software bien definido, muchas de estas aproximaciones adolecen de tratar de forma separada los aspectos hipermediales de los meramente funcionales, esto dificulta el afrontar el problema del desarrollo de aplicaciones Web dentro de un contexto uniforme Representantes 1) HDM (Hypermedia Design Model) [Garzotto et al., 1993] 2) HFPM (Hypermedia Flexible Process Modeling) [Olsina, 1998] 3) OOHDM (Object-Oriented Hypermedia Design Method) [Rossi, 1996] 4) OOH-Method [Gómez et al., 2000] 5) OOWS (Object-Oriented Web-Solutions) [Pastor et al., 2001a] 6) WSDN (Web Site Design Method) [De Troyer y Leune, 1997]
  • 5. Basadas en métodos formales Implican una revolución en los procedimientos de desarrollo, ya que a diferencia de todas las anteriores, se basan en teorías matemáticas que permiten una verdadera aproximación científica y rigurosa al desarrollo de sistemas de información y software asociado Representantes 1) OO-Method [Pastor et al., 2001b] Metodologías Ágiles Un proceso es ágil cuando el desarrollo de software tiene las siguientes características: Es incremental, es cooperativo, es sencillo y es adaptable. En 2001, Kent Beck y otros 16 notables desarrolladores, escritores y consultores (conocidos como la Alianza Ágil) firmaron el Manifiesto para el desarrollo ágil del software, el cual establecía: Hemos descubierto mejores formas de desarrollar software al construirlo por nuestra cuenta y ayudar a otros a hacerlo. Por medio de este trabajo hemos llegado a valorar: A los individuos y sus interacciones sobre los procesos y las herramientas, al software en funcionamiento sobre la documentación extensa, a la colaboración del cliente sobre la negociación del contrato, a la respuesta al cambio sobre el seguimiento de un plan Introducción a la Ingeniería del Software Importancia El ambiente moderno de los negocios ocasiona que los sistemas basados en computadores y los productos de software estén en cambios continuos y deben realizarse en forma acelerada. La ingeniería del software ágil representa una opción razonable a la ingeniería convencional para ciertas clases de software y ciertos tipos de proyectos de software. Ha demostrado su utilidad al entregar sistemas exitosos con rapidez. La Alianza Ágil Define 10 Principios para quienes alcanzar la agilidad: 1) Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software valioso . 2) Bienvenidos lo requisitos cambiantes, incluso en fases tardías del desarrollo. 3) Entrega con frecuencia software en funcionamiento, desde un par de semanas hasta un par de meses, con una preferencia por la escala de tiempo mas corta.
  • 6. 4) Los dueños de los procesos de negocios y los desarrolladores deben trabajar juntos a diario a lo largo del proyecto. 5) Construir proyectos alrededor de individuos motivados. 6) Darles el ambiente y el soporte que necesitan, y confiar en ellos para obtener el trabajo realizado. 7) El método mas eficiente y efectivo de transmitir información hacia y dentro de un equipo de desarrollo es la conversación cara a cara. 8) El software en funcionamiento es la medida primaria de progreso. 9) Los procesos ágiles promueven el desarrollo sustentable. 10) Los patrocinadores, desarrolladores y usuarios deben ser capaces de mantener un paso constante de manera indefinida. Programación extrema Pone más énfasis en la adaptabilidad que en la previsibilidad, cambio de requisitos es evidente modelo de proceso iterativo e incremental, pruebas unitarias continuas, programación en parejas Integración del equipo de programación con el cliente, corrección de todos los errores refactorización del código , propiedad del código compartida, simplicidad en el código SCRUM Es un proceso marco que incluye un conjunto de prácticas y roles predefinidos El equipo crea un incremento de software potencialmente entregable (utilizable) Se acuerda la cantidad de trabajo de compromiso. Proceso Unificado de desarrollo de Software El Proceso Unificado es un proceso de desarrollo de software: “conjunto de actividades necesarias para transformar los requisitos del usuario en un sistema software”. · RUP es un marco genérico que puede especializarse para una variedad de tipos de sistemas, diferentes áreas de aplicación, tipos de organizaciones, niveles de aptitud y diferentes tamaños de proyectos. · RUP está basado en componentes. El sw esta formado por componentes software interconectados a través de interfaces. · RUP está dirigido por casos de uso, centrado en la arquitectura, y es iterativo e incremental. Fases Cada ciclo constas de cuatro fases: inicio, elaboración, construcción, y transición. Fase de Inicio Durante la fase de inicio se desarrolla una descripción del producto final, y se presenta el análisis del negocio. Esta fase responde las siguientes preguntas:
  • 7. · ¿Cuáles son las principales funciones del sistema para los usuarios más importantes? · ¿Cómo podría ser la mejor arquitectura del sistema? · ¿Cuál es el plan del proyecto y cuánto costará desarrollar el producto? En esta fase se identifican y priorizan los riesgos más importantes. El objetivo de esta fase es ayudar al equipo de proyecto a decidir cuáles son los verdaderos objetivos del proyecto. Las iteraciones exploran diferentes soluciones posibles, y diferentes arquitecturas posibles. Puede que todo el trabajo físico realizado en esta fase sea descartado. Lo único que normalmente sobrevive a la fase de inicio es el incremento del conocimiento en el equipo. Los artefactos que típicamente sobreviven a esta fase son: - Un enunciado de los mayores requerimientos planteados generalmente como casos de uso. - Un boceto inicial de la arquitectura. - Una descripción de los objetivos del proyecto. - Una versión muy preliminar del plan del proyecto. - Un modelo del negocio. La fase de inicio finaliza con el Hito de Objetivos del Ciclo de Vida. Este hito es alcanzado cuando el equipo de proyectos y los stakeholders llegan a un acuerdo sobre: - Cuál es el conjunto de necesidades del negocio, y que conjunto de funciones satisfacen estas necesidades. - Una planificación preliminar de iteraciones. - Una arquitectura preliminar. Debe poder responderse las siguientes cuestiones: - ¿Se ha determinado con claridad el ámbito del sistema? ¿Se ha determinado lo que va a estar dentro del sistema y fuera de el sistema? - ¿Se ha llegado a un acuerdo con todas las personas involucradas (stakeholders) sobre los requisitos funcionales del sistema? - ¿Se vislumbra una arquitectura que pueda soportar estas características?
  • 8. - ¿Se identifican los riesgos críticos? ¿Se prevé forma de mitigarlos? - ¿El uso del producto justifica la relación costo-beneficio? - ¿Es factible para su organización llevar adelante el proyecto? - ¿Están los inversores de acuerdo con los objetivos? Fase de Elaboración Durante la fase de elaboración se especifican en detalle la mayoría de los casos de uso del producto y se diseña la arquitectura. Las iteraciones en la fase de elaboración: - Establecen una firme comprensión del problema a solucionar. - Establece la fundación arquitectural para el software. - Establece un plan detallado para las siguientes iteraciones. - Elimina los mayores riesgos. El resultado de esta fase es la línea base de la arquitectura. En esta fase se construyen típicamente los siguientes artefactos: - El cuerpo básico del sw en la forma de un prototipo arquitectural. - Casos de prueba - La mayoría de los casos de uso (80%) que describen la funcionalidad del sistema. - Un plan detallado para las siguientes iteraciones. La fase de elaboración finaliza con el hito de la Arquitectura del Ciclo de Vida. Este hito se alcanza cuando el equipo de desarrollo y los stakeholders llegan a un acuerdo sobre: - Los casos de uso que describen la funcionalidad del sistema. - La línea base de la arquitectura - Los mayores riesgos han sido mitigados - El plan del proyecto Al alcanzar este hito debe poder responderse a preguntas como:
  • 9. - ¿Se ha creado una línea base de la arquitectura? ¿Es adaptable y robusta? ¿Puede evolucionar? - ¿Se han identificado y mitigado los riesgos más graves? - ¿Se ha desarrollado un plan del proyecto hasta el nivel necesario para respaldar una agenda, costes, y calidad realistas? - ¿Proporciona el proyecto, una adecuada recuperación de la inversión? - ¿Se ha obtenido la aprobación de los inversores? Fase de Construcción Durante la fase de construcción se crea el producto. La línea base de la arquitectura crece hasta convertirse en el sistema completo. Al final de esta fase, el producto contiene todos los casos de uso implementados, sin embargo puede que no este libre de defectos. Los artefactos producidos durante esta fase son: - El sistema software - Los casos de prueba - Los manuales de usuario La fase de construcción finaliza con el hito de Capacidad Operativa Inicial. Este hito se alcanza cuando el equipo de desarrollo y los stakeholders llegan a un acuerdo sobre: - El producto es estable para ser usado - El producto provee alguna funcionalidad de valor - Todas las partes están listas para comenzar la transición Fase de Transición Cubre el período durante el cual el producto se convierte en la versión beta. Las iteraciones en esta fase continúan agregando características al sw. Sin embargo las características se agregan a un sistema que el usuario se encuentra utilizando activamente. Los artefactos construidos en esta fase son los mismos que en la fase de construcción. El equipo se encuentra ocupado fundamentalmente en corregir y extender la funcionalidad del sistema desarrollado en la fase anterior.
  • 10. La fase de transición finaliza con el hito de Lanzamiento del Producto. Este hito se alcanza cuando el equipo de desarrollo y los stakeholders llegan a un acuerdo sobre: - Se han alcanzado los objetivos fijados en la fase de Inicio. - El usuario está satisfecho. Disciplinas Cada disciplina es un conjunto de actividades relacionadas (flujos de trabajo) vinculadas a un área específica dentro del proyecto total. Las más importantes son: Requerimientos, Análisis, Diseño, Codificación, y Prueba. El agrupamiento de actividades en disciplinas es principalmente una ayuda para comprender el proyecto desde la visión tradicional en cascada. Está asociada con un conjunto de modelos que se desarrollan. Estos modelos están compuestos por artefactos. Los artefactos más importantes son los modelos que cada disciplina realiza: modelo de casos de uso, modelo de diseño, modelo de implementación, y modelo de prueba. Proceso Unificado de Software El Proceso Unificado consiste en una serie de disciplinas o flujos de trabajo que van desde los requisitos hasta las pruebas. Los flujos de trabajo desarrollan modelos desde el modelo de casos de uso hasta el modelo de pruebas. Elementos para Interpretar el Modelado del Software (Lenguaje Unificado de Modelado) Los elementos de UML son los bloques básicos de construcción de un sistema orientado a objetos. Son abstracciones que constituyen los ciudadanos de primera clase en un modelo. Se utilizan para construir modelos bien formados. • Posee tres tipos de elementos: 1) Estructurales Clase Una clase es una descripción de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica. Es un concepto de diseño, en ejecución, el sistema está formado por instancias de clases (Objetos)
  • 11. Las clases se pueden utilizar para: capturar el vocabulario del sistema que se está desarrollando (fase de análisis) representar la solución Objeto Un objeto representa una instancia de una clase en un determinado contexto. Es un concepto de ejecución . El sistema estará formado por un conjunto de objetos interaccionando entre sí Interfaz Colección de operaciones que especifican un servicio que puede ser ofrecido por una clase o componente. Describen el comportamiento visible externamente de dichos elementos. Pueden representar el comportamiento completo de la clase/componente o solo una parte. Una interfaz define un conjunto de especificaciones de operaciones (signaturas), pero no las implementaciones de dichas operaciones. Caso de Uso Describe un comportamiento de un sistema, clase o componente, desde el punto de vista del usuario. Describe un conjunto de secuencias de acciones que ejecuta un sistema y que produce un resultado observable que es de interés para un usuario particular. Se emplea para estructurar los aspectos de comportamiento. Un caso de uso es realizado por una colaboración. Colaboración Define una interacción entre una sociedad de roles y otros elementos que colaboran para proporcionar un comportamiento mayor que la suma de sus comportamientos aislados. Tienen dimensión estructural y de comportamiento Clase Activa Tipo especial de clase cuyos objetos tienen uno o más procesos o hilos de ejecución Pueden dar origen a actividades de control. Son iguales que las clases salvo que sus objetos pueden ser concurrentes con otros objetos de clases activa Componente Parte modular de la arquitectura física de un sistema que oculta su implementación tras un conjunto de interfaces externas. Define su comportamiento en base a interfaces requeridas y ofertadas Reemplazables
  • 12. El sistema se define en base a componentes conectados entre sí. Los componentes pueden ser de granularidad variable Artefacto Parte física y reemplazable de un sistema que contiene información física (bits). Es utilizada o generada en el proceso de desarrollo Hay diferentes artefactos de despliegue: código fuente, ejecutables, scripts, etc. Nodo Elemento físico que existe en tiempo de ejecución y representa un recurso computacional. En un nodo pueden residir un conjunto de artefactos. Sirven para describir las plataformas en las que se ejecutan las aplicaciones 2. De Comportamiento Interacción Comportamiento que comprende un conjunto de mensajes intercambiados entre un conjunto de objetos, dentro de un contexto particular, para un propósito específico. Sirven para modelar el comportamiento de una sociedad de objetos, o una operación individual. Además de a los objetos implicados, involucran: Mensajes, Acciones y Enlaces (conexiones entre objetos). Máquina de Estados Comportamiento que especifica las secuencias de estados por las que pasa un objeto o una interacción durante su vida, en respuesta a eventos, junto con sus reacciones a dichos eventos. Sirven para especificar el comportamiento de una clase individual o una colaboración de clases. Involucran a: Estados, Transiciones (flujo de un estado a otro), Eventos (que disparan una transición) y Actividades (respuesta a una transición) Actividad Comportamiento que especifica la secuencia de pasos que ejecuta un proceso computacional. Una acción es un paso de una actividad. 3) De Agrupamiento Paquete Es recomendable que el contenido sea una colección de elementos UML relacionados de forma lógica. Se pueden utilizar en cualquier tipo de diagrama UML. Un paquete puede contener otros paquetes, sin límite de anidamiento, pero cada elemento pertenece a (está definido en) sólo un
  • 13. paquete. La visibilidad de los elementos incluidos en un paquete puede controlarse para que algunos sean visibles fuera del paquete mientras que otros permanezcan ocultos. Diagramas de Flujo Es la representación gráfica de flujo de secuencia rutinarias. Se basan en la utilización de diversos símbolos para representar operaciones específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas para indicar la secuencia de la operación. Tipos: 1) Formato vertical: En él el flujo o la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito. 2) Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a derecha. 3) Formato panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aun para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra. 4) Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos. Ejemplo:
  • 14. Símbolos y Notaciones Inicio o fin Actividad Decisión Conector Ciclo de Vida El proceso de desarrollo de software no es único. No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo. Debido a esta diversidad, es difícil automatizar todo un proceso de desarrollo de software. A pesar de la variedad de propuestas de proceso de software, existe un conjunto de actividades fundamentales que se encuentran presentes en todos ellos [4]: 1. Especificación de software: Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software. 2. Diseño e Implementación: Se diseña y construye el software de acuerdo a la especificación. 3. Validación: El software debe validarse, para asegurar que cumpla con lo que quiere el cliente. 4. Evolución: El software debe evolucionar, para adaptarse a las necesidades del cliente. Además de estas actividades fundamentales, Pressman [1] menciona un conjunto de “actividades protectoras”, que se aplican a lo largo de todo el proceso del software. Ellas se señalan a continuación:  Seguimiento y control de proyecto de software.  Revisiones técnicas formales.  Garantía de calidad del software.  Gestión de configuración del software.  Preparación y producción de documentos.  Gestión de reutilización.  Mediciones.  Gestión de riesgos. Pressman [1] caracteriza un proceso de desarrollo de software. Los
  • 15. elementos involucrados se describen a continuación:  Un marco común del proceso, definiendo un pequeño número de actividades del marco de trabajo que son aplicables a todos los proyectos de software, con independencia del tamaño o complejidad.  Un conjunto de tareas, cada uno es una colección de tareas de ingeniería del software, hitos de proyectos, entregas y productos de trabajo del software, y puntos de garantía de calidad, que permiten que las actividades del marco de trabajo se adapten a las características del proyecto de software y los requisitos del equipo del proyecto.  Las actividades de protección, tales como garantía de calidad del software, gestión de configuración del software y medición, abarcan el modelo del proceso. Las actividades de protección son independientes de cualquier actividad del marco de trabajo y aparecen durante todo el proceso.
  • 16. Conclusión No existe una metodología universal para hacer frente con éxito a cualquier proyecto de desarrollo de software. Toda metodología debe ser adaptada al contexto del proyecto (recursos técnicos y humanos, tiempo de desarrollo, tipo de sistema, etc. Históricamente, las metodologías tradicionales han intentado abordar la mayor cantidad de situaciones de contexto del proyecto, exigiendo un esfuerzo considerable para ser adaptadas, sobre todo en proyectos pequeños y con requisitos muy cambiantes. Las metodologías ágiles ofrecen una solución casi a medida para una gran cantidad de proyectos que tienen estas características. Una de las cualidades más destacables en una metodología ágil es su sencillez, tanto en su aprendizaje como en su aplicación, reduciéndose así los costos de implantación en un equipo de desarrollo. Esto ha llevado hacia un interés creciente en las metodologías ágiles. Sin embargo, hay que tener presente una serie de inconvenientes y restricciones para su aplicación, tales como: están dirigidas a equipos pequeños o medianos (Beck sugiere que el tamaño de los equipos se limite de 3 a 20 como máximo, otros dicen no más de 10 participantes), el entorno físico debe ser un ambiente que permita la comunicación y colaboración entre todos los miembros del equipo durante todo el tiempo, cualquier resistencia del cliente o del equipo de desarrollo hacia las prácticas y principios puede llevar al proceso al fracaso (el clima de trabajo, la colaboración y la relación contractual son claves), el uso de tecnologías que no tengan un ciclo rápido de realimentación o que no soporten fácilmente el cambio
  • 17. Bibliografía Análisis y Diseño de Sistemas. Libro Virtual. http://ac.itdurango.mx/araceli_dguez/LIBROS%20ELECTRONICOS/Kendall% 20&%20Kendall%20- Edicion%203%20Analisis%20y%20dise%F1o%20de%20sistemas.pdf Diagramas de Flujo. Libro Virtual https://electronicsdj.files.wordpress.com/2009/09/diagramas-de-flujo.pdf Metodologías Ágiles en el Desarrollo de Software. 2013. Libro Virtual http://issi.dsic.upv.es/archives/f-1069167248521/actas.pdf Metodologías de Desarrollo de Software. Libro Virtual. https://uvirtual.unet.edu.ve/file.php/419/Metodologias_de_desarrollo_de_Soft ware_IS.pdf Proceso Software y Ciclo de Vida. Libro Virtual. https://www.fdi.ucm.es/profesor/gmendez/docs/is0809/02- ProcesoCicloDeVida.pdf Patricia López y Francisco Ruiz. Lenguaje Unificado de Modelado – UML. Libro Virtual. http://ocw.unican.es/ensenanzas-tecnicas/ingenieria-del- software-i/materiales-de-clase-1/is1-t02-trans.pdf