Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniería de Software
(parte 2)
Proceso software.
Tiempo
Planeación y seguimiento del plan.
Conformada por actividades, recursos y
tiempo. Requerimientos
“Un marco de referencia que contiene los procesos, las actividades y las tareas
involucradas en el desarrollo, la explotación y el mantenimiento de un producto
de software, abarcando la vida del sistema desde la definición de los requisitos
hasta la finalización de su uso”
(ISO 12207)
Fase en que se establece qué servicios se requieren del sistema y cuáles son
las restricciones de operación y desarrollo del mismo.
Reporte de
Estudio de viabilidad
viabilidad
Obtención y Modelos de
análisis de sistema
requisitos
Requerimientos
Especificación del usuario
de requisitos y del sistema
Validación de
requisitos Documento
U.T. N°1 Introducción a la Ingeniería de Software
Requerimientos
Proceso de Software
Diseño e implementación
Implementación
Transforma la estructura anterior en un programa ejecutable.
Diseño
Diseño Diseño de Diseño
Abstracción estructura
Arquitectónico Interfaz algoritmo
datos
Prueba de
Plan de prueba Plan de prueba Plan de prueba unidades y
de aceptación de sistema De subsistema
módulos
Sistemas Sistema
existentes nuevo
No existe una única forma de organizar las fases del ciclo de vida del
software.
La forma más natural de organizar las fases, seria de manera secuencial según
ocurren en el tiempo, pero esto se ha demostrado que no es realista por la
naturaleza evolutiva del software.
Modelos evolutivos: Son modelos que se adaptan a la evolución que sufren los
requisitos del sistema en función del tiempo.
Incremental (Desarrollo iterativo y creciente), Espiral.
Modelos para sistemas orientados a objetos: Modelos con un alto grado de iteración y
solapamiento entre fases
De agrupación, Proceso Unificado.
Pruebas
Mantenimiento
Características:
Ventajas Desventajas
Debido a la estructura lógica del modelo, a menudo Se tarda mucho tiempo en pasar por todo el ciclo.
se puede evitar errores conceptuales.
Es un modelo fácil de implementar y entender. Las revisiones de proyectos de gran complejidad son
muy difíciles
Está orientado a documentos, lo que es un alivio Una etapa determinada del proyecto no se puede
para los nuevos programadores y desarrolladores, llevar a cabo a menos de que se haya culminado la
siendo de gran utilidad en la fase de pruebas. etapa anterior.
Es un modelo conocido y utilizado con frecuencia. Se convierten las especificaciones en
implementaciones de manera informal.
Promueve una metodología de trabajo efectiva: Cualquier error de diseño detectado en la etapa de
Definir antes que diseñar, diseñar antes que prueba conduce necesariamente al rediseño del
codificar. sistema, aumentando los costos de desarrollo.
Impone una estructura de gestión de proyectos.
El modelado se centra en la
representación de aquellos
aspectos del software que serán
visibles para los usuarios finales
Modelo de
Modelo de gestión Modelo de
gestión datos
Modelo de
datos
Modelo de
procesos Propuesto por James Martin
Modelo de Generación
en 1991.
datos Modelo de
de
aplicación
procesos
Prueba y
Modelo de Generación
entrega
Enfatiza un ciclo de
procesos
de
aplicación
desarrollo extremadamente
corto (funcional entre 60 o
Prueba y 90 días).
Generación entrega
de
aplicación
Prueba y
entrega
60-90 días
U.T. N°1 Introducción a la Ingeniería de Software
Modelos de proceso de software (Modelos tradicionales)
Modelo RAD (Rapid application development)
Características
Ventajas Desventajas
Es muy rápido. Requiere clientes y desarrolladores comprometidos en
las rápidas actividades necesarias para completar un
sistema en un marco de tiempo abreviado. Si no hay
compromiso, por ninguna de las partes constituyentes,
el proyecto fracasará.
Permite trabajar en él varías No es recomendado para sistemas grandes que no se
personas a la vez. pueden modularizar adecuadamente.
No es adecuado cuando los riesgos técnicos son altos
(Ej: uso de tecnologías nuevas).
Entrega del 3°
Incremento 3 Análisis Diseño Implementación Pruebas Mantenimiento
incremento
Funcionalidad
Tiempo
Modelos de proceso de software (Modelos evolutivo)
Modelo incremental (Desarrollo iterativo y
creciente)
Propuesto por Harlan Mills en el año 1980.
Es el modelo de desarrollo de software creado en respuesta a las debilidades del
modelo cascada.
Características:
Características:
Iterativo e Incremental.
Se compone de las fases: Inicio, Elaboración, Construcción y Transición. Cada fase esta dividida en una
serie de iteraciones y cada iteración esta dividida por las fases de ciclo de vida de software.
Centrado en la arquitectura
Asume que no existe un modelo único que cubra todos los aspectos del sistema.
Características:
Menor énfasis en el análisis, diseño y documentación
Equipos pequeños
Desarrollo incremental
Programación (planificación temporal) en cajas de tiempo
Supervivencia en un entorno caótico
Diversos enfoques:
XP (eXtreme Programming)
SCRUM
Se creó entonces la Agile Alliance, una organización sin ánimo de lucro dedicada a promover el desarrollo ágil de software.
Para lograrlo, el primer paso que dieron fue redactar el Manifiesto Ágil, un documento que resume los principios de la filosofía
ágil.
Valores:
Principios:
procesos • Debe permitirse a los miembros del equipo desarrollar sus propias
formas de trabajar sin procesos establecidos.
Adoptar el cambio • Esperar a que cambien los requerimientos del sistema, y de este modo,
diseñar el sistema para adaptar dichos cambios.
simplicidad • Siempre que sea posible, trabajar de manera activa para eliminar la
complejidad del sistema.
Características
Desarrollo iterativo e incremental.
Coraje Simplicidad Respeto
Programación en parejas.
Pruebas unitarias continuas.
Corrección periódica de errores.
Integración del equipo de programación con el cliente. Retroalimentación
Ventajas Desventajas
Pensado para desarrollos en que la idea del Dificultad para documentar.
producto no esta totalmente definida.
Fomenta la comunicación entre los clientes Es recomendable emplear XP solo en
y los desarrolladores. proyectos a corto plazo y simples.
Desarrollo rápido. Fuerte dependencia de los involucrados en
el proyecto.
Mejora continua de los procesos y el equipo Posibles “roces” con el cliente, por
de desarrollo. desconocimientos en materia técnica que
causan demora en la toma de decisiones o
por proponer cambios de requerimientos
que no son posibles o poco viables.
Team (Desarrolladores).
Características:
Desarrollo incremental de los requisitos del proyecto, en bloques temporales cortos y fijos.
Se prioriza lo que tiene más valor para el cliente.
Solapa las diferentes fases del desarrollo, en lugar de realizar una tras otra en un ciclo
secuencial o en cascada.
Reuniones cortas diarias.
Fijar tiempos máximos para cumplir los objetivos.
Equipos auto-dirigidos y auto-organizados.
Sprint Backlog
Registro de requisitos desde el punto de vista del los desarrolladores. Es la lista de tareas a realiza durante el
Sprint.
Incremento
Resultado del Sprint.
Flujo de trabajo:
Sprint
Periodo en que se lleva a cabo el desarrollo. Compromiso
Scrum diario
Reunión diaria, de 5 a 10 min, para ver el estado del proyecto. SCRUM
Tiene como objetivo mantener a los miembros del equipo actualizados.
Revisión Sprint
Al final de un Sprint.
Es una reunión, en donde se presenta los trabajos completados. Apertura Enfoque
Retrospectiva del Sprint
Al final de un Sprint.
Cada miembro del equipo deja sus impresiones del Sprint superado, con el fin de realizar una mejora continua
de los procesos.
Practicas
Visualizar y mostrar el proceso
Mostrar el proceso de desarrollo a través de un tablero público para todos los involucrados.
Principios
Comenzar por lo que se va a hacer ahora
Se puede comenzar aplicando en las funciones y procesos actuales y estimular cambios continuos, incrementales y evolutivos
en un sistema nuevo o existente.
Ventajas Desventajas
Flexibilidad Difícil de utilizar en proyectos nuevos
muy grandes y con tiempos muy
definidos.
Fácil de visualizar estado actual del Un tablero obsoleto, puede generar
proyecto. problemas en el proceso de desarrollo.
Scrum Kanban
Cadencia Sprints periódicos de duración Flujo continuo
fija (de 2 a 4 semanas)
Entregas Al final de cada Sprints Entrega continua