0% encontró este documento útil (0 votos)
22 vistas64 páginas

Gestión de Proyectos de Software: SDLC y Metodologías

Cargado por

cristel soto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas64 páginas

Gestión de Proyectos de Software: SDLC y Metodologías

Cargado por

cristel soto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Programa de Ingeniería

de Sistemas

INGENIERÍA DE
SOFTWARE

Sesión 2:
Gestión del proyecto de
desarrollo de software.
Análisis de Requerimientos
Contenido
Gestión del proyecto de desarrollo de software

1. Ciclo de vida del desarrollo de software (SDLC)


2. Metodologías de gestión del desarrollo de software:
tradicionales y ágiles
3. Especificación de procesos de software:
• Análisis del problema – necesidad
• Actividades de captura de requerimientos – Casos de uso
Tema
Gestión del proyecto de
desarrollo de software.
Análisis de
Requerimientos
Ciclo de Vida del Software
Ingeniería de Software

ISO/IEC/IEEE 1[Link] es un marco de referencia que contiene las


actividades y las tareas involucradas en el desarrollo, la explotación y el
mantenimiento de un producto software, abarcando desde la definición
hasta la finalización de su uso

Es secuencia estructurada y bien definida de las etapas por las que pasa el software en su
desarrollo, desde que se concibe la idea hasta que el software deja de utilizarse (obsolescencia)
Cada etapa va acompañada de una serie de actividades y tareas, y una documentación de salida
de cada una de estas fases y que servirá de entrada a la fase siguiente

La ISO/IEC/IEE 12207 es el estándar sobre los procesos del ciclo de vida del software y
se propone como el modelo de referencia de procesos, aunque se puede trabajar con
otros modelos
Ciclo de Vida del Desarrollo de Software
Ingeniería de Software

• Consiste en determinar:
• Fases productivas de un proyecto
• Objetivos de cada fase productiva
• Productos obtenidos en cada una
de estas fases, así como sus
características
Desarrollo de Software como un proceso
Ingeniería de Software

Triangulo de hierro 
Ingeniería de Software

Modelos / Metodologías de gestión


del desarrollo de software
Tradicionales y Ágiles
Modelos tradicionales de desarrollo de Software
Ingeniería de Software

Un modelo es una representación simplificada de un proceso de software


que conlleva una estrategia global para abordar el desarrollo de software
Descomponen los proyectos en fases Inicio, análisis, diseño, desarrollo, pruebas,
entrega, mantenimiento
Tratando de “imitar” las fases de otras ingenierías.
Ejemplos:
• Cascada (Waterfall): también conocido como modelo clásico o modelo lineal
• Ciclo de Vida en V
• De Prototipos o Desarrollo Evolutivo
• Incremental
• Orientados a Objetos
• Etc.
Modelo en Cascada (Waterfalls)
Ingeniería de Software

• Enfoque sistemático y secuencial


del desarrollo Requerimientos
• Paso de fase al conseguir los objetivos
• Obtención de documentos como criterio Análisis
de finalización de fase

SISTEMA / SOFTWARE
• El final de una fase puede suponer un Diseño
punto de revisión
• Problemas: Desarrollo

o Visión estática de los requerimientos


ignorando su volatilidad  Rigidez Pruebas

o Poca participación de usuario una • Desarrollo lineal



vez que la especificación es obtenida •
Desarrollo por bloques
Estructura rígida
Integración

o Mucho tiempo en pasar por todo el


Mantenimiento
ciclo (Piattini et al., 2004)
o Modelo monolítico (Pressman, 2010):
Sistema listo muy al final

Versión original es de W. Royce (Royce, 1970), pero aparecen después numerosos refinamientos
Ciclo de Vida en V
Ingeniería de Software

Contiene las mismas etapas que el


ciclo de vida en cascada puro
A diferencia, se le agregaron dos
subetapas:
• De verificación entre las etapas
de diseño y pruebas
• De validación entre las etapas
de análisis y mantenimiento
Basados en Prototipos
Ingeniería de Software

• Su finalidad es probar varias suposiciones con respecto a las características requeridas por el sistema
• Se crean con rapidez
• Evolucionan a través de un proceso iterativo

• Desechable:
El prototipo es una versión rudimentaria del
sistema que posteriormente es desechada.
Se usa como herramienta auxiliar de la
especificación de requisitos y el diseño
La iteración ocurre cuando el prototipo se
pone a punto para satisfacer las necesidades
del cliente, permitiendo a la vez que el
desarrollador comprenda mejor lo que
necesita hacer
Este enfoque suele derivar en un modelo
lineal una vez que el prototipo ha
cumplido su misión
Basados en Prototipos
Ingeniería de Software

• Evolutivo:
El prototipo debe convertirse, eventualmente, en el sistema final
Se utiliza cuando no se conoce con seguridad lo que se quiere construir
Se comienza diseñando e implementando las partes más destacadas del sistema
La evaluación del prototipo proporciona la realimentación necesaria para aumentar y refinar el prototipo
El prototipo evoluciona y se transforma en el sistema final
No disminuye el tiempo entre la definición de los requisitos y la entrega del producto
Desarrollo incremental
Ingeniería de Software

[Ingeniería de Software. Sommerville I.., 2002]


Metodologías OO
Ingeniería de Software

• Historia unida a la evolución de los lenguajes de POO: a fines de los 60’s SIMULA, a fines
de los 70’s Smalltalk-80, la primera versión de C++ por Bjarne Stroustrup en 1981 y
actualmente Java, C#, etc
• A fines de los 80’s comenzaron a consolidarse algunas metodologías Orientadas a Objeto
• En 1995 aparece el Método Unificado, que posteriormente se reorienta para dar lugar
al Unified Modeling Language (UML), la notación OO más popular en su momento
• Métodos OO con notaciones predecesoras de UML: OOAD (Booch), OOSE (Jacobson), Coad &
Yourdon, Shaler & Mellor y OMT (Rumbaugh)
• Algunas metodologías orientadas a objetos basadas en UML: Rational Unified
Process (RUP), OPEN, MÉTRICA 3
Metodología RUP
Ingeniería de Software

Rational Unified Process (RUP) - (Proceso Unificado


de Rational)

Guiado y Manejado por Casos de Uso


Es un producto del proceso de ingeniería de software
que proporciona un enfoque disciplinado para
asignar tareas y responsabilidades dentro de Centrado en la Arquitectura
una organización de desarrollo
Iterativo e Incremental
Su meta es asegurar la producción del software de
alta calidad que resuelve las necesidades de los Desarrollo Basado en Componentes
usuarios dentro de un presupuesto y tiempo
establecidos Utilización de UML

Proceso Integrado

15
Ingeniería de Software

Metodología RUP

16
Metodología RUP - Fases
Ingeniería de Software

1. Concepción
• Se especifican los objetivos del ciclo de vida del proyecto, las necesidades de cada participante
• Se establece el alcance, 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 y el presupuesto de todo el proyecto
• 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
• Brinda una arquitectura suficientemente sólida junto con requerimientos y planes bastante estables
• Se describen en detalle la infraestructura y el ambiente de desarrollo, así como el soporte de
herramientas de automatización
• Se debe identificar la mayoría de los casos de uso y los actores, debe quedar descripta la arquitectura de
software y se debe crear un prototipo de ella
• Al final de la fase se realiza un análisis para determinar los riesgos y se evalúan los gastos hechos contra
los originalmente planeados
17
Metodología RUP - Fases
Ingeniería de Software

3. Construcción
• Se desarrollan, integran y verifican todos los componentes y rasgos de la aplicación
• Esta fase es un proceso de manufactura, en el que se debe poner énfasis en la administración de los
recursos y el control de costos, agenda y calidad
• Los resultados de esta fase (las versiones alfa, beta y otras versiones de prueba) se crean tan rápido
como sea posible
• Se debe probar también una versión de entrega
• Es la fase más prolongada de todas

4. Transición
• Comienza cuando el producto está suficientemente maduro para ser 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 ventas
• Se produce también la documentación
• Se llama transición porque se transfiere a las manos del usuario, pasando del entorno de desarrollo al 18
de producción
Metodología RUP – Flujos de Trabajo
Ingeniería de Software

A través de las 4 fases se desarrollan en paralelo nueve flujos de trabajo o disciplinas:

• Modelado de Negocios

• Requerimientos

• Análisis y Diseño

• Implementación

• Prueba

• Despliegue

• Gestión de Configuración y Cambio

• Gestión del Proyecto

• Ambiente o Entorno

19
Metodología RUP - Hitos
Ingeniería de Software

Compromiso de
Aceptación
recursos para fase
del cliente
elaboración

Concepción Elaboración Construcción Transición

Tiempo

Hito Hito Hito Liberación


Objetivos Arquitectura Capacidad Producto
Operacional

20
Metodologías ágiles de desarrollo de Software
Ingeniería de Software

Mediados de los 90, fuertes críticas a los métodos


tradicionales  Retrasos, altos costos, baja calidad
 Insatisfacción del cliente

En 2001  Manifiesto Ágil:


- Flexibilidad
- Agilidad
- Capacidad de adaptación

Desarrollo iterativo e incremental


que permite la entregas continuas y de valor

Frecuencia de Entrega
Obtención rápida de resultados y
satisfacción del cliente  simplicidad y
mejora continua (producto y proceso de gestión del
proyecto)
Grado de Cambio
Metodologías ágiles de desarrollo de Software
Ingeniería de Software

Muchas organizaciones optan por participar estrechamente con


el equipo desarrollador de su proveedor de software  Permite
tener un mayor control sobre el producto final
Para trabajos colaborativos como éste es necesario definir una serie de
pautas que todos los colaboradores han de seguir
Ejemplos:
• Extreme Programming (XP)
• Scrum
• Kanban
• Métodos Crystal (Crystal Methods)
eXtreme Programming
Ingeniería de Software

Método ágil basado en


cuatro principios:
• Simplicidad
• Comunicación
• Retroalimentación
• Valor
Ciclo de vida XP
Ingeniería de Software

“Spikes” (“tarea de investigación”) suelen ser de dos tipos: técnicos o funcionales. Los funcionales se utilizan para
analizar funcionalidad, su riesgo y complejidad. Los técnicos se utilizan para determinar la viabilidad.
En Scrum también existen: Es una tarea en un sprint que no pertenece necesariamente a una historia de usuario
Principios de Scrum
Ingeniería de Software

• Conjunto de prácticas que enfatizan la comunicación diaria y la reevaluación


flexible de los planes que se llevan a cabo en fases breves e iterativas de
trabajo
• Equipos multifuncionales, auto-dirigidos y auto-organizados
• Al principio de cada iteración, hay planeamiento adaptativo guiado por el cliente (Product
Owner)
• Iteraciones (Sprints) de treinta días; se admite que sean más frecuentes
• Encuentros diarios con las tres preguntas (¿Qué has hecho? ¿Qué problemas tienes? ¿Qué
harás hoy? . Se realizan siempre en el mismo lugar, en círculo
• Demostración a participantes externos (Clientes, etc.) al fin de cada iteración
• Enfatiza en valores y prácticas de gestión, no en cuestiones técnicas de desarrollo
Ciclo de vida Scrum
Ingeniería de Software

• Lista de producto o product backlog: es una lista de los requisitos del producto. El dueño del producto es el único responsable de su
contenido y el orden de prioridades de las tareas. Puede actualizarse en cualquier momento
• Lista de pendientes del sprint o sprint backlog: elementos de la lista de producto seleccionados para el próximo sprint
• Incremento o increment: elementos de la lista de productos completados durante un sprint
Modelos de desarrollo de Software - Comparación
Ingeniería de Software
Modelos de desarrollo de Software - Comparación
Ingeniería de Software

Métodos híbridos, combinan la adaptabilidad de los ágiles con la formalidad y documentación de los métodos rigurosos
tradicionales
Metodologías ágiles: adaptando la ingeniería del software a los
negocios
Ingeniería de Software
Ingeniería de Software

Especificación de Procesos de
Software
Análisis del Problema
Ingeniería de Software
Ingeniería de Software
Ingeniería de Software
Ingeniería de Software
Ingeniería de Software
Ingeniería de Software
Ingeniería de Software
Ingeniería de Software

Especificación de Procesos de
Software
Captura de Requisitos
Ingeniería de Software
¿Que es un requisito?
Ingeniería de Software

Es una valoración clara de las necesidades que un sistema debe


alcanzar.
• Debe indicar:
 Qué necesita el sistema, basado en condiciones corrientes y previsibles
 Qué rasgos del sistema servirán para satisfacer el contexto del mismo
 Cómo el sistema debe ser construido

• Es una condición o capacidad que debe cumplir o poseer un sistema o


componente de un sistema para satisfacer un contrato, un estándar, una
especificación o algún otro documento impuesto

• El conjunto de requerimientos forma la base para el desarrollo de un sistema


o un componente de un sistema
¿Que describe un requisito?
Ingeniería de Software

• Una facilidad a nivel usuario


Ej.: ‘el procesador de palabras debe incluir un verificador de ortografía y un comando de corrección’

• Una propiedad muy general del sistema


Ej.: ‘el sistema debe asegurar que la información personal nunca se haga disponible sin autorización’

• Una restricción específica del sistema


Ej.: ‘el sensor debe ser activado 10 veces por segundo’

• Una restricción para el desarrollo del sistema


Ej.: ‘el sistema debe ser desarrollado usando Lenguaje C’

• Cómo llevar a cabo algún cálculo


Ej.: ‘la nota final debe ser calculada sumando las notas del examen, proyecto y cursada del estudiante
basado en la siguiente fórmula nota final = (0.3 *examen_parcial + 0.3*nota_TP + 0.4*examen_final)/3
Importancia de los requisitos
Ingeniería de Software

• El argumento de Ingeniero
• El ingeniero debe desarrollar soluciones a problemas
• Una buena solución puede solo ser desarrollada si el ingeniero tiene un buen
entendimiento del problema
• El argumento económico
• Los costos de errores aumentan si pasa más tiempo sin detectarlos
• Argumento empírico
• Los errores latentes de entender y manejar requerimientos son la mayor causa de
exceso de costos
• Argumento de seguridad
• Los mayores riesgo de seguridad están centrado en requi inadecuados o mal
entendidos
Niveles de los Requisitos
Ingeniería de Software
Actividades de la Captura de Requisitos
Ingeniería de Software

Según el RUP, los principales pasos para capturar los requisitos son:

• Identificación de Actores y Casos de uso

• Priorizar Casos de Uso

• Detallar Casos de Uso

• Estructurar el MCU

• Prototipar la interfaz de usuario (GUI)


Identificación de escenarios
Ingeniería de Software

• ¿Qué tareas necesita el actor que realice el sistema?

• ¿Qué información consulta el actor? ¿Quién crea esos datos? ¿Se pueden
modificar? ¿Quién puede hacerlo?

• ¿Qué cambios externos necesita informar el actor al sistema? ¿Cuándo y con qué
frecuencia?

• ¿De qué eventos necesita el actor que le informe el sistema? ¿Cuándo y con qué
frecuencia?
Identificación de Requerimientos
Ingeniería de Software
Requerimiento Funcional
Ingeniería de Software
Requerimiento No Funcional
Ingeniería de Software
Identificación de Requerimientos
Ingeniería de Software
¿Por qué Trazabilidad de Requerimientos con Casos
Ingeniería de Software

de Uso?
Trazabilidad de Requerimientos con Casos de Uso
Ingeniería de Software
Priorización de casos de uso
Ingeniería de Software

• Determinar cuáles son necesarios para el desarrollo en las primeras iteraciones y


cuáles pueden dejarse para posteriores iteraciones

• Cuestiones a tener en cuenta:

• CU con dificultad de desarrollo

• CU imprescindibles para la puesta en marcha del sistema

• Organización del desarrollo incremental

• Disponibilidad de equipo de desarrollo

• Se revisa la priorización con el Jefe de Proyecto y se utiliza como entrada para la


planificación de cada iteración del proyecto
Priorización de casos de uso
Ingeniería de Software

Formula
Generar Visita = 0.2*5+0.3*6+0.4*8+0.1*9 = 6.9

Los valores que se colocan en cada caso de uso van de 1 hasta 10


Priorización de casos de uso
Ingeniería de Software

Formula
Tomar Pedido = 0.4*4+0.3*5+0.2*10+0.1*10 = 6.1

Los valores que se colocan en cada caso de uso van de 1 hasta 10


Ingeniería de Software

Modelo de casos de uso de sistemas


Ejemplo
Ingeniería de Software

PROCESO LOGÍSTICO
El Gerente de Logística en las entrevista describió los requisitos que debería
tener el nuevo sistema.

• R1. El encargado de compras debe de ingresar al sistema por medio de una


pantalla de login

• R2. El encargado de compras debe registrar la compra en el sistema


Ejemplo
Ingeniería de Software

PROCESO LOGÍSTICO
1.- Encontrar los actores
El Gerente de Logística en las entrevista describió los requisitos que debería
tener el nuevo sistema.
• R1. El encargado de compras debe de ingresar al sistema por medio de una
pantalla de login
• R2. El encargado de compras debe registrar la compra en el sistema
Ejemplo
PROCESO LOGÍSTICO
Ingeniería de Software

2.- Encontrar los casos de


uso
El Gerente de Logística en las entrevista describió los requisitos que debería
tener el nuevo sistema.

• R1. El encargado de compras debe de ingresar al sistema por medio de una


pantalla de login

• R2. El encargado de compras debe registrar la compra en el sistema


Diagrama de Casos de Uso
Ingeniería de Software
Autoevaluación
Sesión 2
¿Cuál es el propósito general del ciclo de vida de desarrollo de software?

Establecer el equipo de desarrollo de aplicaciones


Pregunta 1

Servir de marco de referencia para realizar las actividades y las tareas involucradas en el desarrollo, la
explotación y el mantenimiento de un producto software

Establecer los objetivos y el alcance del proyecto


¿Qué beneficios se obtienen al seguir una metodología de desarrollo en proyectos de
software?

Mayor satisfacción del cliente.


Pregunta 2

Mejor comunicación entre los integrantes del equipo de desarrollo y el cliente

Claridad en los pasos y prácticas a seguir por el equipo durante el desarrollo del proyecto
¿Por qué es importante realizar un análisis detallado de requerimientos
en proyectos de software?

Para establecer el presupuesto del proyecto.


Pregunta 3

Para identificar los recursos necesarios para el desarrollo.

Para comprender las necesidades y expectativas de los usuarios del software.


El CVDS (SDLC) serve de marco de referencia para realizar las actividades y
Conclusiones

las tareas involucradas en el desarrollo, la explotación y el mantenimiento de


un producto software

El principal beneficio que se obtiene al seguir una metodología de desarrollo


en proyectos de software es la claridad en los pasos y prácticas a seguir por
parte del equipo durante el desarrollo del proyecto

El análisis exhaustivo de requerimientos en proyectos de software es esencial


para comprender las necesidades de los usuarios y evitar malentendidos
durante el desarrollo

También podría gustarte