Ing. Iván Soria Solís Ing. Iván Soria Solís Rev. 1.04 Abril 2014 Rev. 1.04 Abril 2014
1.- El proceso del Software
Proceso
Proceso
El Proceso del Software
Principales estándares y modelos
Principales estándares y modelos
La Ingeniería del Software es una ingeniería muy joven que necesita:
Definirse a sí misma: ¿Cuáles son las áreas de conocimiento que la comprenden?
Definirse a sí misma: ¿Cuáles son las áreas de conocimiento que lacomprenden?
Definir los procesos que intervienen en el desarrollo, mantenimiento y operación del software
Definir los procesos que intervienen en el desarrollo, mantenimiento yoperación del software
De las mejores prácticas, extraer modelos de cómo ejecutar esos procesos para evitar los problemas de la “crisis del software”
De las mejores prácticas, extraer modelos de cómo ejecutar esosprocesos para evitar los problemas de la “crisis del software”
Definir estándares menores para dibujar criterios unificadores en requisitos, pruebas, gestión de la configuración, etc.
Definir estándares menores para dibujar criterios unificadores enrequisitos, pruebas, gestión de la configuración, etc.
SWEBOK: Software Engineering Body of knowledge
ISO/IEC 12207: Procesos del ciclo de vida del software
CMM / CMMI
ISO/IEC TR 15504
ISO 12207: Propósito
ISO 12207: Propósito
El estándar no prescribe:
Que deba emplearse ningún tipo de documentación específica. Que deba emplearse un tipo específico de ciclo de desarrollo.
Métodos concretos para el desarrollo, mantenimiento u operación del software.
Define el QUÉ, no el CÓMO.
Dice cuáles son los procesos, actividades y tareas implicados en el desarrollo, mantenimiento y operación de los sistemas de software,
asentando un marco estándar de referencia internacional, pero no se ocupa ni prescribe técnicas específicas.
Define el QUÉ, no el CÓMO.
Dice cuáles son los procesos, actividades y tareas implicados en el desarrollo, mantenimiento y operación de los sistemas de software,
asentando un marco estándar de referencia internacional, pero no se ocupa ni prescribe técnicas específicas.
El estándar sirve de referencia desde dos perspectivas diferentes:
•Para la adquisición de sistemas y servicios de software.
•Para el suministro, desarrollo, mantenimiento y operación de productos de software. El estándar no cubre el desarrollo de productos de software para distribución comercial masiva (productos “en caja”).
No se trata de un estándar de certificación, tipo ISO 9000, sino de un estándar para la normalización.
No se trata de un estándar de certificación, tipo ISO 9000, sino de un estándar para la normalización.
ISO 12207: Propósito
ISO 12207: Propósito
Establece un marco común para el ciclo de vida del software en los procesos de:
Adquisición, suministro, desarrollo, operación y mantenimiento del software Gestionar, controlar y mejorar el marco
Como base de referencia para el trabajo e intercambio entre organizaciones de software Establecer un estándar para evitar una situación de Torre de Babel en la
gestión e ingeniería del software, proporcionando un marco y un lenguaje común en la disciplina del software
Establecer un estándar para evitar una situación de Torre de Babel en la gestión e ingeniería del software, proporcionando un marco y un lenguaje común en la disciplina del software
Periodo de tiempo que comienza al concebir la idea de un nuevo sistema de software, y termina cuando este se retira y deja de funcionar.
Periodo de tiempo que comienza al concebir la idea de un nuevo sistema de software, y termina cuando este se retira y deja de funcionar.
Ciclo de vida del software
El Proceso del Software
ISO 12207
ISO 12207
ISO 12207 define los procesos que componen el ciclo de vida del softwareCiclo de vida
Concepto
Retirada
Proceso 1
… Proceso N
Actividad 1
Tarea 1 Tarea 2 … Tarea n
…
Actividad n
Tarea 1 Tarea 2 … Tarea n
ISO 12207
ISO 12207
ISO 12207 establece un nexo con la Ingeniería de sistemas al considerar alsoftware como parte de un sistema.
Desde esta perspectiva se establece a la Ingeniería de sistemas como fundamento de la Ingeniería del Software.¿Qué es un sistema?
¿Qué es un sistema?
“Colección de componentes organizados para cumplir una función o conjunto de funciones específicas”.
IEEE Standard 610.12-1990
Elemento del sistema Elemento del
sistema
Elemento del sistema Elemento del
sistema
Elemento del sistema Elemento del
sistema Elemento del
sistema Elemento del
sistema
Sistema de Entrada
Sistema de Salida Sistema
“Colección de elementos relacionados de forma que puedan realizar un objetivo
ISO 12207: Procesos
ISO 12207: Procesos
Procesos primarios
Procesos primarios
Procesos de soporte
Procesos de soporte
Procesos organizacionales
Procesos organizacionales
Adquisición Adquisición Suministro Suministro Desarrollo Desarrollo Operación Operación Mantenimiento Mantenimiento Documentación DocumentaciónGestión de configuración
Gestión de configuración
Control de calidad
Control de calidad
Verificación Verificación Validación Validación Reuniones Reuniones Auditoría Auditoría
Resolución de problemas
Resolución de problemas
Gestión Gestión Mejora Mejora Infraestructura Infraestructura Formación Formación
Ciclo de vida del software
VISIÓN GENERAL DE LOS PROCESOS, RELACIONES Y ROLES
VISIÓN GENERAL DE LOS PROCESOS, RELACIONES Y ROLES
Adquiriente
Adquiriente
PROCESO DE ADQUISICIÓN
PROCESO DE ADQUISICIÓN
PROCESO DE SUMINISTRO
PROCESO DE SUMINISTRO
PROCESO DE OPERACIÓN
PROCESO DE OPERACIÓN
PROCESO DE MANTENIMIENTO
PROCESO DE
MANTENIMIENTO PROCESO DE
DESARROLLO PROCESO DE DESARROLLO Suministrador Suministrador Operador Usuario Operador Usuario Desarrollador Mantenedor Desarrollador Mantenedor Usuario del proceso de soporte Usuario del proceso de soporte Gestor Gestor P R O C E S O S D E S O P O R T E Documentación Gestión de la
configuración
Aseguramiento calidad Verificación
Validación
Reuniones de seguimiento Auditoría
Resolución de problemas
Ciclo de vida del software
Modelos de ciclo de vida para el desarrollo
Modelos de ciclo de vida para el desarrollo
La aplicación de los procesos, tanto en el desarrollo como en el posterior
mantenimiento y operación del software, se dibuja a través de unos “patrones fijos” que configuran el esquema de mapa de situación, relación y continuidad entre los diferentes procesos, actividades y tareas.
En la etapa de desarrollo los patrones básicos son:
Desarrollo en cascada. (o variante secuencial)
Desarrollo en espiral.Una vez desarrollada la primera versión, el ciclo de vida del sistema discurre en cada momento según uno de los siguientes patrones.
Desarrollo incremental del sistema.
Desarrollo evolutivo del sistema.Sobre estos patrones básicos, en las diferentes etapas del ciclo de vida pueden intervenir como modificadores los siguientes factores:
Prototipado.
Concurrencia.
Componentes comerciales y reutilización.Ciclo de vida del software
Modelos de ciclos de vida
Modelos de ciclos de vida
CASCADA
CASCADA
ESPIRAL
ESPIRAL MODELOS
CICLOS DESARROLLO MODELOS CICLOS DEVIDA DE SISTEMAS
INCREMENTAL INCREMENTAL EVOLUTIVO EVOLUTIVO CASCADA CASCADA CONCURRENCIA CONCURRENCIA
COMPONENTES COMERCIALES Y REUTILIZAZIÓN
COMPONENTES COMERCIALES Y REUTILIZAZIÓN
Ciclo de vida del software
Modelos de ciclos de desarrollo
Modelos de ciclos de desarrollo
Cascada
Cascada
Requisitos
Diseño
Codificación
Pruebas
Integración
Ciclo de vida del software
Modelos de ciclo de desarrollo
Modelos de ciclo de desarrollo
Cascada
[1]Cascada
[1]El modelo en cascada refleja la necesidad impuesta por la realidad de retornar con frecuencia desde una fase hacia las anteriores con la información generada al
avanzar el desarrollo.
Este modelo, como el anterior, reconoce la importancia de disponer de unos
requisitos y un diseño previo antes de comenzar con la codificación del sistema, pero al mismo tiempo se enfrenta al hecho de que en la realidad la dificultad que supone disponer de documentación elaborada de requisitos y diseño antes de empezar a codificar puede actuar como una barrera que bloquee el comienzo de la siguiente fase.
Por estas razones el modelo no se ha hecho muy popular, y los equipos que lo aplican pueden caer en la tentación de comenzar con el diseño o incluso con la codificación, sin tener un conocimiento suficiente de los requisitos.
Resulta apropiado para:
Desarrollar nuevas versiones de sistemas ya veteranos en los que el desconocimiento de las necesidades de los usuarios, o del entorno de operación no plantean riesgos.
Sistemas pequeños, sin previsión de evolución a corto plazo.Ciclo de vida del software
Modelos de ciclo de desarrollo
Modelos de ciclo de desarrollo
Ciclo de vida del software
Modelos de ciclo de desarrollo
Modelos de ciclo de desarrollo
Espiral
Espiral
El ciclo de iteración de este modelo evolutivo se convierte en una espiral, que al
representarse sobre ejes cartesianos muestra en cada cuadrante una clase particular de actividad: Planificación, Análisis de riesgo, Ingeniería y Evaluación, que se
suceden de forma consecutiva a lo largo del ciclo de vida del desarrollo
•En la planificación de cada vuelta se establece el contexto del desarrollo y se decide qué parte del mismo se abordará en el ciclo siguiente.
•Las actividades de análisis de riesgo evalúan las alternativas posibles para la ejecución de la siguiente parte del desarrollo, seleccionando la más ventajosa y previendo los riesgos posibles.
•Las actividades de ingeniería corresponden a las indicadas en los modelos lineales (secuencial y cascada): análisis, diseño, codificación, etc.
•Las actividades de evaluación analizan los resultados de la fase de ingeniería, tomando el resultado de la evaluación como punto de partida para el análisis de la siguiente fase.
Ciclo de vida del software
Modelos de ciclos de evolución
Modelos de ciclos de evolución
Incremental
Incremental
R E Q U IS IT O S R E Q U IS IT OS DiseñoDiseño CodificaciónCodificación PruebasPruebas IntegraciónIntegración Mantenim.Operación
Operación
Mantenim. Sub-sistema
Diseño
Diseño CodificaciónCodificación PruebasPruebas IntegraciónIntegración Operación Mantenim.
Operación
Mantenim. Sub-sistema
Diseño
Diseño CodificaciónCodificación PruebasPruebas ……
SISTEMA
El modelo incremental mitiga la rigidez del modelo en cascada, descomponiendo el desarrollo de un sistema en partes; para cada una de las cuales se aplica un ciclo de desarrollo (en cascada en la representación gráfica siguiente).
Las ventajas que ofrece son:
El usuario dispone de pequeños subsistemas operativos que ayudan a perfilar mejor las necesidades reales del sistema en su conjunto.
El modelo produce entregas parciales en periodos cortos de tiempo,Ciclo de vida del software
Modelos de ciclos de evolución
Modelos de ciclos de evolución
Incremental
Incremental
Aunque en la representación gráfica de la figura anterior, los desarrollos de cada subsistema se solapan en el tiempo, en su aplicación real, el segundo y siguientes subsistemas pueden comenzar una vez concluido el anterior.
Resulta apropiado:
•Desarrollo de sistemas en los que el cliente necesita disponer de parte de la funcionalidad antes de lo que costaría desarrollar el sistema completo.
Ciclo de vida del software
Modelos de ciclos de evolución
Modelos de ciclos de evolución
Evolutivo
Evolutivo
Diseño
Diseño CodificaciónCodificación PruebasPruebas IntegraciónIntegración Operación Mantenim.
Operación
Mantenim. Sistema
Este modelo está compuesto por varios ciclos de desarrollo. Cada uno de ellos produce un sistema completo con el que se operará en el entorno de operación. La información acumulada en el desarrollo de cada sistema, y durante su fase de operación sirve para mejorar o ampliar los requisitos y el diseño del siguiente. En realidad es un ciclo de vida común a todos los sistemas desarrollados que se mejoran a través de versiones sucesivas.
Requisitos
Requisitos
Diseño
Diseño CodificaciónCodificación PruebasPruebas IntegraciónIntegración Operación Mantenim.
Operación
Mantenim. Sistema
Requisitos
Requisitos
Diseño
Diseño …… Requisitos
Ciclo de vida del software
Modelos de ciclos de evolución
Modelos de ciclos de evolución
Evolutivo
Evolutivo
Las circunstancias en las que este modelo puede resultar apropiado son
Desconocimiento inicial de todas las necesidades operativas que seránprecisas, generalmente por tratarse del desarrollo de un sistema que operará en un entorno nuevo sin experiencia previa.
Necesidad de que el sistema entre en operación en tiempos inferiores a los que serían necesarios para diseñarlo y elaborarlo de forma exhaustiva.
Necesidad de desarrollar sistemas en entornos cambiantes (sujetos a normas legislativas, mejora continua del producto para hacer frente a desarrollos de la competencia, etc.).Ciclo de vida del software
Creación del modelo de ciclo de vida
Creación del modelo de ciclo de vida
Al iniciar el proyecto, el responsable de la arquitectura de procesos debe realizar los siguientes pasos:
Análisis de las circunstancias ambientales del proyecto.
Diseño del modelo específico de ciclo de vida para el proyecto (sobre las bases de los diseños más apropiados, para el desarrollo y la evolución del sistema de software.
Mapeo de las actividades sobre el modelo.
Desarrollo del plan para la gestión del ciclo de vida del proyecto. Debe considerar aspectos como:
Posibilidad de descomposición del sistema en subsistemas de software
Estabilidad esperada de los requisitos.
Novedad del proceso o procesos gestionados por el sistema en el entorno del cliente.
Criticidad de las agendas y presupuestos.
Grado de complejidad del interfaz de operación, criticidad de la usuabilidad.Suponga que va desarrollar una aplicación relativa a la gestión de pedidos de una empresa. En este caso el cliente no tiene todavía muy claro qué es lo que quiere. Además, el personal informático va a utilizar una tecnología que le resulta completamente nueva. Discútase qué modelo de ciclo de vida es más apropiado para desarrollar esta solución y sustente su respuesta.