Este documento describe varios modelos y estándares relacionados con el proceso de desarrollo de software, incluyendo IEEE/EIA 12207, SWEBOOK, CMMI y PMBOK. Explica que IEEE/EIA 12207 establece un marco común de procesos del ciclo de vida de software, mientras que SWEBOOK define el cuerpo de conocimiento de ingeniería de software. También describe cómo CMMI y PMBOK proveen mejores prácticas para mejorar la calidad y gestión de proyectos de software.
4. Proceso.
Un proceso, entendido de manera general, es una
serie de pasos que incluyen actividades, restricciones
y recursos que resultan en un producto determinado
con ciertas características
Un proceso es una secuencia o grupo de actividades
que van añadiendo valor a un producto o servicio
destinado a un cliente interno o externo
6. Proceso - Características
Tienen responsables
definidos.
Límites bien definidos:
Alcance, inicio, fin,
entradas, productos
esperados, clientes y
proveedores.
Interacciones y
responsabilidades bien
definidas.
Procedimientos
documentados (entre
ellos el aseguramiento
de la calidad)
Controles de evaluación
y retroialimentación
cercanos al punto de
ejecución cada
actividad.
Medidas de evaluación y
objetivos que los
relacionan con el cliente
Tiempos de ciclos
conocidos
7. Proceso de
software
• Un proceso de software es una serie de
actividades relacionadas que conduce a la
elaboración de un producto de software.
Estas actividades pueden incluir el
desarrollo de software desde cero en un
lenguaje de programación estándar.
8. Proceso de software
No hay un proceso ideal.
La mayoría de las organizaciones
han diseñado sus propios
procesos de desarrollo de
software.
Los procesos han evolucionado
para beneficiarse de las
capacidades de la gente en una
organización y de las
características específicas de los
sistemas que se están
desarrollando.
Para algunos sistemas, como los
sistemas críticos, se requiere de
un proceso de desarrollo muy
estructurado.
Para los sistemas empresariales,
con requerimientos rápidamente
cambiantes, es probable que sea
más efectivo un proceso menos
formal y flexible.
9. Las descripciones de los procesos deben incluir:
• Son los resultados de una actividad del proceso.
Productos
• Responsabilidades de la gente que interviene en el proceso.
• Ejemplos de roles: gerente del proyecto, programador, etc.
Roles
• Declaraciones válidas antes y después de que se realice una
actividad del proceso o se cree un producto.
• Ej. Precondición: Cliente apruebe todos los requerimientos,
Postcondición: Revisar modelos UML que describen la
arquitectura.
Precondiciones y postcondiciones
10. Clasificación de los procesos de software
Dirigidos por un plan.
• Todas las actividades del proceso se planean por anticipado y el
avance se mide contra dicho plan
Procesos ágiles.
• La planeación es incremental y es más fácil modificar el proceso
para reflejar los requerimientos cambiantes del cliente.
Como plantean Boehm y Turner (2003), cada enfoque es adecuado para diferentes tipos de software. Por lo
general, uno necesita encontrar un equilibrio entre procesos dirigidos por un plan y procesos ágiles.
11. Un proceso de software efectivo :
Habilita a la organización Incrementar su productividad al desarrollar software:
Permite estandarizar esfuerzos, promover reuso, repetición y consistencia entre
proyectos.
Provee la oportunidad de introducir mejores prácticas de la industria.
Permite entender que las herramientas deben ser utilizadas para soportar un
proceso.
Establece la base para una mayor consistencia y mejoras futuras
12. Un proceso de
software
mejora los
esfuerzos de
mantenimiento
y soporte:
Define cómo manejar los cambios y
liberaciones a sistemas de software
existentes.
Define cómo lograr la transición del
software a la operación, y cómo
ejecutar los esfuerzos de operación y
soporte.
13. Proceso de software
• Muchas organizaciones promueven la mejora del proceso de software.
• Los procesos quizás incluyan técnicas obsoletas o tal vez no aprovechen las
mejores prácticas en la industria de la ingeniería de software. En efecto,
muchas organizaciones aún no sacan ventaja de los métodos de la
ingeniería de software en su desarrollo de software.
• Los procesos de software pueden mejorarse con la estandarización de los
mismos, donde se reduce la diversidad en los procesos de software en una
organización.
• Esto conduce a mejorar la comunicación, a reducir el tiempo de
capacitación, y a que el soporte de los procesos automatizados sea más
económico.
17. IEEE/EIA (ISO/IEC) 12207
Procesos del ciclo de vida del software
Esta Norma Internacional establece un
marco común para los procesos del ciclo de
vida del software, con una terminología
bien definida, que puede ser referenciada
por la industria del software.
Contiene procesos, actividades y tareas que
deben aplicarse durante la adquisición de
un sistema, producto o servicio de software
y durante el suministro, desarrollo,
operación, mantenimiento y eliminación de
productos de software
El estándar "no prescribe un modelo de ciclo de vida de software específico, metodología de
desarrollo, método, enfoque de modelado o técnica (no especifica los detalles de cómo
implementar o llevar a cabo las actividades y tareas que implica los procesos)
18. IEEE/EIA
(ISO/IEC) 12207
- Procesos
• Divide los procesos del ciclo de vida del
software en cuatro grupos de procesos
principales:
• Proceso de acuerdos, establece los
acuerdos entre el proveedor y el cliente.
• Incluye los procesos de adquisición y
suministro
• Procesos organizativos de habilitación de
proyectos, incluye
• Gestión del modelo del ciclo de vida,
Gestión de la infraestructura, Gestión
de la cartera, Gestión de los recursos
humanos, Gestión de la calidad y los
procesos de gestión del conocimiento
19. IEEE/EIA
(ISO/IEC) 12207
- Procesos
• Procesos de gestión técnica.
• Planificación de tareas, Evaluación y
control de proyectos, Gestión de
decisiones, Gestión de riesgos, Gestión
de la configuración, Gestión de la
información, Medición, Aseguramiento
de la calidad
• Procesos técnicos
• Análisis de negocios o misiones,
Definición de necesidades y requisitos de
las partes interesadas, Definición de
requisitos de sistemas / software,
Definición de la arquitectura, Definición
de diseño, Análisis del sistema,
Implementación, Integración,
Verificación, Transición, Validación,
Operación, Mantenimiento, Disposición
21. SWEBOOK
(Software
Engineering Body
of Knowledge
Guide)
• La Guía del Cuerpo de Conocimientos
de Ingeniería de Software es un
documento creado por la Software
Engineering Coordinating Committee,
promovido por el IEEE Computer
Society, que se define como una guía
al conocimiento presente en el área
de la Ingeniería del Software
22. SWEBOOK -
Objetivos
principales
• 1. Promover una visión coherente de la
ingeniería de software en todo el mundo.
• 2. Para aclarar el lugar y establecer el límite de
la ingeniería de software con respecto a otras
disciplinas como la informática, la gestión de
proyectos, la ingeniería informática y las
matemáticas.
• 3. Caracterizar los contenidos de la disciplina de
ingeniería de software.
• 4. Para proporcionar un acceso tópico al cuerpo
de conocimiento de ingeniería de software
• 5. Proporcionar una base para el desarrollo
curricular y para la certificación individual y el
material de licencia
23. SWEBOOK GUIDE – Áreas de conocimiento
• Requisitos de Software
• Diseño de Software
• Construcción de Software
• Pruebas de Software
• Mantenimiento de Software
• Gestión de la configuración
• Gestión de la Ingeniería de
Software
• Proceso de Ingeniería de Software
• Herramientas y métodos de la
Ingeniería de Software
• Calidad del Software
• Práctica Profesional de la Ingeniería
de Software
• Economía de la Ingeniería de
Software
• Fundamentos de Computación
• Fundamentos Matemáticos
• Fundamentos de Ingeniería
24. Las primeras cinco KAs representan lo que ISO llama los procesos primarios en el estándar 12207, y las otras cinco KAs los procesos de soporte y organización.
25. CMMI (Capability Maturity Model Integration)
• CMMI es un modelo que contiene las mejores prácticas y que provee a las
organizaciones de aquellos elementos que son esenciales para que los procesos
de negocio de las mismas sean efectivos.
• Ventajas:
• Proporciona un marco y un lenguaje común, lo que se traduce en la ruptura
de las barreras de la comunicación en el interior de las organizaciones.
• Permite que los usuarios puedan enfocarse específicamente en la mejora, ya
que ayudan a que no pierdan la idea global.
• Aporta años de experiencia.
• Ayudan a mejorar la satisfacción del cliente.
• Permiten producir productos y servicios de alta calidad.
26.
27. CMMI (Capability Maturity Model Integration)
• Hacer uso del modelo CMMI para el desarrollo de software, no solo
permite optimizar procesos de negocios, sino que también trae consigo
una serie de beneficios, entre ellos los siguientes:
• La gestión y la ingeniería de las actividades se encuentran entrelazadas de una
manera explícita, tan es así que facilita el reconocimiento de los objetivos del
negocio.
• Permite hacer la incorporación de la experiencia adquirida en otras zonas de las
mejores prácticas. Algunos ejemplos serían la medición, gestión de riesgos y de
proveedores.
• Poder aplicar prácticas de alta madurez mucho más robustas.
• Cumplir de forma mucho más completa con las normas ISO.
28. PMBOK
Este instrumento provee la estandarización a nivel global para profesionales de la dirección de
proyectos y es un producto creado por el PMI (Project Management Institute).
Describe normas, métodos, procesos y prácticas establecidas internacionalmente y que son de
gran ayuda para los directores de proyectos en la aplicabilidad de cualquier proyecto.
Ha sido diseñado por varios profesionales de esta disciplina y documenta la información
necesaria para iniciar, planificar, ejecutar, supervisar, controlar y cerrar un proyecto, además
establecen los grupos de procesos y áreas de conocimiento que se deben implementar en cada
una de las etapas de un proyecto.