Está en la página 1de 62

Universidad Politcnica

Salesiana
Carrera de Sistemas 2014
Ingeniera de Software
I NG. MAURI CI O ORTI Z
MORTI ZO@UPS.EDU. EC
Captulo 2: Procesos
del Software
PROCESO DEL SOFTWARE
MODELOS DEL PROCESO DE SOFTWARE
I TERACI N DE PROCESOS
ACTI VI DADES DEL PROCESO
METODOLOG AS PARA DESARROLLO DE SOFTWARE




Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 2
Objetivos
Presentar los conceptos de Software y Proceso de software
Identificar los diferentes modelos de Proceso de Software
Mostrar conceptos de iteracin de procesos
Enumeras las actividades de un proceso
Presentar las metodologas de desarrollo del proceso
Describir modelos de procesos para Ingeniera de requerimientos, Desarrollo de
Software, Pruebas y Evolucin
Entender cuando utilizar los modelos para el proceso de software
Diferenciar entre modelos del proceso del software y metodologas para desarrollo de
software


Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 3
PROCESO DE
SOFTWARE
PROCESO DEL SOFTWARE
MODELOS DEL PROCESO DE SOFTWARE
I TERACI N DE PROCESOS
ACTI VI DADES DEL PROCESO
METODOLOG AS PARA DESARROLLO DE SOFTWARE
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 4
Proceso de software
IEEE: Una secuencia de pasos ejecutados para un propsito dado
Se ajusta a las prcticas especficas de las distintas ingenieras
Dos componentes: acciones y propsito;
La meta le da al proceso una serie de cualidades
Pfleeger: Podemos pensar al conjunto ordenado de tareas como un proceso: una serie de
pasos que involucran actividades, restricciones y recursos que producen una determinada salida
esperada
Basili: Los procesos de ingeniera de software son especficos.
Importante: El proceso est conformado por los pasos que se dan, no por su descripcin




Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 5
Estructura de los conceptos de
proceso
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 6
Ejemplo de niveles de proceso
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 7
El concepto de proceso
(Pfleeger)
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 8
Tcnica / Mtodo / Herramienta
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 9
Dos caminos para desarrollo del
software
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 10
Modelos de Proceso
de Software
PROCESO DEL SOFTWARE
MODELOS DEL PROCESO DE SOFTWARE
I TERACI N DE PROCESOS
ACTI VI DADES DEL PROCESO
METODOLOG AS PARA DESARROLLO DE SOFTWARE
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 11
El Proceso de Software
(Sommerville)
Un conjunto estructurado de actividades necesarias para desarrollar un sistema de software
Especificacin
Diseo
Validacin
Evolucin
Un modelo de proceso de software es una representacin abstracta de un proceso. Representa
una descripcin de un proceso desde una perspectiva particular
Ian Sommerville
Ch04 / Ing.
Mauricio Ortiz
PROCESOS DEL SOFTWARE 12
Modelos de proceso de software genrico
Paradigmas de proceso
Codificar y corregir
Se trata de primero implementar algo de cdigo y luego pensar acerca de requisitos, diseo, validacin,
y mantenimiento.
Modelo de cascada
Fases de especificacin y desarrollo separadas y distintas
Desarrollo evolutivo
Especificacin y desarrollo estn entrelazados
Desarrollo formal de sistemas
Un modelo de sistema matemtico es formalmente transformado en una implementacin
Desarrollo basado en la reutilizacin
El sistema es ensamblado a partir de componentes pre-existentes
Ing. Mauricio Ortiz
PROCESOS DE SOFTWARE 13
Codificar y corregir (Code-and-Fix)
Este es el modelo bsico utilizado en los inicios del desarrollo de software y contiene dos pasos:
Escribir cdigo.
Corregir problemas en el cdigo.
Este modelo tiene tres problemas principales:
Despus de un nmero de correcciones, el cdigo puede tener una muy mala estructura, hace que los
arreglos sean muy costosos.
Frecuentemente, an el software bien diseado, no se ajusta a las necesidades del usuario, por lo que
es rechazado o su reconstruccin es muy cara.
El cdigo es difcil de reparar por su pobre preparacin para probar y modificar.

Ing. Mauricio
Ortiz
PROCESOS DE SOFTWARE 14
Modelo de Cascada (Royce, 1970)
Ing. Mauricio Ortiz
PROCESOS DE SOFTWARE 15
Requirements
definition
System and
software design
Implementation
and unit testing
Integr ation and
system testing
Operation and
maintenance
Fases del Modelo de Cascada
Anlisis y definicin de Requerimientos
Diseo de sistema y del software
Implementacin y prueba de unidades
Integracin y prueba del sistema
Operacin y mantenimiento
Ing. Mauricio
Ortiz
PROCESOS DE SOFTWARE 16
Problemas del Modelo de Cascada
Dificultad para incorporar cambios despus de que el proceso parte
Particionamiento inflexible del proyecto en etapas distintas
Esto dificulta responder a cambios en los requerimientos del cliente
Por lo tanto, este modelo es slo apropiado cuando los requerimientos son muy bien comprendidos

Ing. Mauricio
Ortiz
PROCESOS DE SOFTWARE 17
Desarrollo Evolutivo
Desarrollo exploratorio
El objetivo es trabajar con los clientes y evolucionar hacia un sistema final desde una especificacin
inicial. Debera partir con requerimientos bien conocidos
Prototipos desechables
El objetivo es entender los requerimientos del sistema.
Debera comenzar con requerimientos pobremente conocidos
Ing. Mauricio
Ortiz
PROCESOS DE SOFTWARE 18
Desarrollo Evolutivo
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 19
Validation
Final
version
Development
Intermediate
versions
Specification
Initial
version
Outline
description
Concurr ent
activities
Desarrollo Evolutivo
Problemas
Falta de visibilidad del proceso
Los sistemas a menudo resultan pobremente estructurados
Puede ser necesario contar con habilidades especiales (ej., lenguajes para prototipos rpido)
Aplicabilidad
Para sistemas interactivos pequeos o de mediano tamao
Para partes de sistemas grandes (ej, la interfaz del usuario)
Para sistemas de corta vida til
Ing. Mauricio
Ortiz
PROCESOS DE SOFTWARE 20
Desarrollo Formal de Sistemas

Basado en la transformacin de una especificacin matemtica a travs de diferentes
representaciones hacia un programa ejecutable
Las transformaciones son preservantes-de-correctitud de modo que es evidente mostrar que
el programa se ajusta a sus especificaciones
Personificado a travs del enfoque de Cuarto-limpio para desarrollar software

Ing. Mauricio Ortiz
PROCESOS DE SOFTWARE 21
Desarrollo Formal de Sistemas
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 22
Requirements
definition
Formal
specification
Formal
transformation
Integration and
system testing
Transformaciones Formales
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 23
R2
Formal
specification
R3
Executable
program
P2 P3
P4
T1
T2 T3 T4
Proofs of transformation correctness
Formal transformations
R1
P1
Desarrollo Formal de Sistemas

Problemas
Requiere habilidades y entrenamiento especializados para aplicar la tcnica
Dificultad para formalmente especificar algunos aspectos del sistema tales como la interfaz del usuario
Aplicabilidad
Sistemas crticos especialmente aquellos donde una seguridad o un caso de seguridad debe ser
realizado antes de que el sistema sea puesto en operacin
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 24
Desarrollo Orientado a la Reutilizacin
Basado en el reuso sistemtico donde los sistemas son integrados a partir de componentes
existentes
Etapas del proceso
Anlisis de componentes
Modificacin de requerimientos
Diseo del sistema con reutilizacin
Desarrollo e Integracin
Este enfoque se est haciendo ms importante pero an con experiencia limitada con l ???
Jerarquas de herencia
Frameworks
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 25
Desarrollo Orientado a la Reutilizacin
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 26
Requirements
specification
Component
analysis
Development
and integration
System design
with reuse
Requirements
modification
System
validation
Ejercicio 03.01
Objetivos del ejercicio
Profundizar los conceptos de modelos de
proceso de software
Tipo de ejercicio
Ejercicio en clase
Ejercicio grupal
Entregable de ejercicio
Comunicar resultado
Discusin en clase
Documento
Modelos de proceso de software
Codificar y Corregir
Modelo de cascada
Desarrollo evolutivo
Desarrollo formal de sistemas
Desarrollo basado en la reutilizacin
Ejemplificar con un caso prctico cada modelo

Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 27
Iteracin de procesos
PROCESO DEL SOFTWARE
MODELOS DEL PROCESO DE SOFTWARE
I TERACI N DE PROCESOS
ACTI VI DADES DEL PROCESO
METODOLOG AS PARA DESARROLLO DE SOFTWARE

Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 28
Iteracin de Procesos
Los requerimientos de sistemas SIEMPRE evolucionan en el transcurso de un proyecto, de modo
que la iteracin de procesos donde las etapas tempranas son re-hechas es siempre parte del
proceso para sistemas grandes
Iteracin puede ser aplicada a cualquiera de los modelos de procesos genricos
Dos enfoques (relacionados)
Desarrollo incremental
Desarrollo en espiral
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 29
Desarrollo Incremental
Ms que entregar el sistema como una entrega simple, el desarrollo y
entrega se divide en incrementos con cada incremento entregando parte
de la funcionalidad requerida
Requerimientos de usuarios son priorizados y la prioridad ms alta es
incluida en primeros incrementos
Una vez comenzado el desarrollo de un incremento, los requerimientos
son congelados de modo que requerimientos para incrementos
posteriores puedan continuar evolucionando
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 30
Desarrollo Incremental
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 31
Validate
increment
Develop system
increment
Design system
architecture
Integrate
increment
Validate
system
Define outline
requirements
Assign requirements
to increments
System incomplete
Final
system
Ventajas del Desarrollo Incremental
Valor al cliente puede ser entregado con cada incremento, redundando en una temprana
funcionalidad del sistema
Incrementos del comienzo actan como un prototipo para ayudar a determinar requerimientos
de futuros incrementos
Menor riesgo de falla general del proyecto
Servicios de ms alta prioridad del sistema tienden a ser ms probados
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 32
Desarrollo en Espiral
Proceso es representado como una espiral en lugar de una secuencia de actividades con
retrocesos
Cada giro en la espiral representa una fase en el proceso
No hay fases fijas tales como especificacin o diseo (se gira en la espiral dependiendo de qu
se requiere)
Riesgos son explcitamente identificados y resueltos durante el proceso
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 33
Modelo Espiral del Proceso de Software
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 34
Risk
analysis
Risk
analysis
Risk
analysis
Risk
analysis
Proto-
type 1
Prototype 2
Prototype 3
Opera-
tional
protoype
Concept of
Operation
Simulations, models, benchmarks
S/W
requirements
Requirement
validation
Design
V&V
Product
design
Detailed
design
Code
Unit test
Integr ation
test
Acceptance
test
Service
Develop, verify
next-level product
Evaluate alternatives
identify, resolve risks
Determine objectives
alternatives and
constraints
Plan next phase
Integration
and test plan
Development
plan
Requirements plan
Life-cycle plan
REVIEW
Sectores del Modelo de Espiral
Fijacin de Objetivo
Se identifican objetivos especficos para la fase
Identificacin de riesgo y reduccin
Riesgos son identificados y se realizan actividades para reducir los riesgos clave
Desarrollo y validacin
Se escoge un modelo de desarrollo para el sistema que puede ser cualquiera de los modelos genricos
Planificacin
Se revisa el proyecto y se planifica la siguiente fase de la espiral
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 35
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 36
Modelo de proceso
Funciona con
requisitos y
arquitectura no
predefinidos
Produce software
altamente fiable
Gestin de riesgos
Permite correcciones
sobre la marcha

Visin del
progreso por el
Cliente y el Jefe
del proyecto

Codificar y corregir
Bajo Bajo Bajo Alto Medio

Cascada
Bajo Alto Bajo Bajo Bajo

Evolutivo
exploratorio
Medio o Alto Medio o Alto Medio Medio o Alto Medio o Alto

Evolutivo
prototipado
Alto Medio Medio Alto Alto

Desarrollo formal de
sistemas
Bajo Alto Bajo a Medio Bajo Bajo

Desarrollo orientado
a reutilizacin
Medio Bajo a Alto Bajo a Medio Alto Alto

Incremental
Bajo Alto Medio Bajo Bajo

Espiral
Alto Alto Alto Medio Medio
Actividades del
proceso
PROCESO DEL SOFTWARE
MODELOS DEL PROCESO DE SOFTWARE
I TERACI N DE PROCESOS
ACTI VI DADES DEL PROCESO
METODOLOG AS PARA DESARROLLO DE SOFTWARE

Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 37
Actividades del proceso
Especificacin de software
Diseo de software e implementacin
Validacin de software
Evolucin de software

Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 38
Especificacin de Software
El proceso de establecer qu servicios se requieren y las limitaciones en la operacin de los
sistemas y desarrollo
Proceso de Ingeniera de Requerimientos
Estudio de Factibilidad
Extraccin de requerimientos y anlisis
Especificacin de requerimientos
Validacin de requerimientos
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 39
Proceso de Ingeniera de Requerimientos
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 40
Feasibility
study
Requirements
elicitation and
analysis
Requir ements
specification
Requirements
validation
Feasibility
report
System
models
User and system
requirements
Requirements
document
Diseo de Software e Implementacin
Proceso para convertir las especificaciones del sistema en un sistema ejecutable
Diseo de software
Disear una estructura de software que realice la especificacin
Implementacin
Traducir esta estructura en un programa ejecutable
Las actividades de diseo e implementacin estn estrechamente relacionadas y pueden estar
entrelazadas
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 41
Actividades del Proceso de Diseo
Diseo de arquitectura
Especificacin abstracta
Diseo de interfaz
Diseo de componentes
Diseo de estructuras de datos
Diseo de algoritmos
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 42
El proceso de Diseo de Software
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 43
Architectural
design
Abstract
specification
Interface
design
Component
design
Data
structure
design
Algorithm
design
System
architecture
Software
specification
Interface
specification
Component
specification
Data
structure
specification
Algorithm
specification
Requirements
specification
Design activities
Design pr oducts
Mtodos de Diseo
Enfoques sistemticos para desarrollar un diseo de software
El diseo es usualmente documentado como un set de modelos grficos
Modelos posibles
Modelo de Flujo de Datos
Modelo de Entidad-Relacin-Atributo
Modelo Estructural
Modelos de Objetos
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 44
Programacin y Depuracin
Traducir un diseo en un programa y remover los errores de ese programa
Programar es una actividad personal (no hay un proceso de programacin genrico)??? Patrones
Los programadores llevan a cabo algunas pruebas de programa para descubrir fallos en el cdigo
y removerlos en el proceso de depuracin
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 45
El proceso de Depuracin
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 46
Locate
error
Design
error repair
Repair
error
Re-test
program
Validacin de Software
Verificacin y validacin se usa para mostrar que un sistema adhiere a las especificaciones y
alcanza los requerimientos del cliente del sistema
Involucra los procesos de chequeo y revisin, y las pruebas del sistema
Las pruebas del sistema consideran la ejecucin del mismo con casos de prueba que se derivan
desde la especificacin de datos reales para ser procesados por el sistema
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 47
El proceso de Pruebas
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 48
Sub-system
testing
Module
testing
Unit
testing
System
testing
Acceptance
testing
Component
testing
Integration testing User
testing
Etapas de Pruebas
Pruebas de Unidades
Se prueban componentes individuales
Pruebas de Mdulos
Colecciones de componentes relacionadas se prueban
Pruebas de Sub-sistemas
Los mdulos se integran en sub-sistemas y son probados. El foco aqu es la
prueba de las interfaces
Pruebas del Sistema
Se prueba el sistema como un todo.
Aceptacin de las pruebas
Pruebas con datos del cliente para verificar que es aceptable
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 49
Fases de Pruebas
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 50
Requir ements
specification
System
specification
System
design
Detailed
design
Module and
unit code
and tess
Sub-system
integration
test plan
System
integration
test plan
Acceptance
test plan
Service
Acceptance
test
System
integration test
Sub-system
integration test
Evolucin de Software
Software es inherentemente flexible y puede cambiar
A medida que los requerimientos cambian debido al cambio en las circunstancias del negocio, el
software que apoya el negocio debe tambin evolucionar y cambiar
Aunque ha habido una demarcacin entre desarrollo y evolucin (mantencin) ste es
crecientemente irrelevante a medida que menos y menos sistemas son completamente nuevos
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 51
Evolucin del Sistema
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 52
Assess existing
systems
Define system
requirements
Propose system
changes
Modify
systems
New
system
Existing
systems
Soporte al Proceso Automatizado (CASE)
Ingeniera de Software Asistido por Computador (CASE) es software para apoyar el desarrollo de
software y procesos de evolucin
Automatizacin de actividades
Editores grficos para desarrollo de modelos de sistemas
Diccionario de datos para administrar entidades de diseo
Constructor de interfaz grfica para construccin de interfaces de usuarios
Depuradores para apoyar la pesquisa de fallas del programa
Traductores automatizados para generar nuevas versiones de un programa
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 53
Tecnologa CASE
La tecnologa CASE ha producido mejoras significativas en los procesos de software aunque no
en el orden de magnitud que se predeca
Ingeniera de software requiere pensamiento creativo (este no es susceptible de automatizacin)
Ingeniera de software es una actividad de equipo y, para grandes proyectos, se invierte mucho tiempo
en interacciones entre el equipo. La tecnologa CASE realmente no apoya esto
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 54
Metodologas para
desarrollo de
software
PROCESO DEL SOFTWARE
MODELOS DEL PROCESO DE SOFTWARE
I TERACI N DE PROCESOS
ACTI VI DADES DEL PROCESO
METODOLOG AS PARA DESARROLLO DE SOFTWARE

Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 55
Metodologas para desarrollo de
software
Las metodologas se basan en una combinacin de los modelos de proceso genricos (cascada,
evolutivo, incremental, etc.).
Una metodologa debera definir con precisin los artefactos, roles y actividades involucrados,
junto con prcticas y tcnicas recomendadas, guas de adaptacin de la metodologa al proyecto,
guas para uso de herramientas de apoyo, etc.

Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 56
Metodologas para desarrollo de
software
Metodologas estructuradas
Metodologas orientadas a objetos
Metodologas tradicionales (no giles)
Metodologas giles

Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 57
Metodologas estructuradas
Fines de los 70s con la Programacin Estructurada
Tcnicas para el Diseo
Diagrama de Estructura
Diagramas de Flujo de Datos
Estas metodologas son particularmente apropiadas en proyectos que utilizan para la implementacin
lenguajes de 3ra y 4ta generacin.
Ejemplos de metodologas:
MERISE (Francia)
MTRICA (Espaa)
SSADM (Reino Unido)
Gane & Sarson
Ward & Mellor
Yourdon & DeMarco
Information Engineering.

Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 58
Metodologas orientadas a objetos
Unidas a la evolucin de los lenguajes de programacin orientada a objeto,
SIMULA (60s)
Smalltalk-80L (70s)
C++ por Bjarne Stroustrup (1981)
Java , Visual Basic, C# (Actualidad).
Mtodos OO :
OOAD (Booch)
OOSE (Jacobson, Coad & Yourdon, Shaler & Mellor)
OMT (Rumbaugh)
UML (Booch y Rumbaugh)
Algunas metodologas orientadas a objetos que utilizan la notacin UML son:
Rational Unified Process (RUP)
OPEN
MTRICA (que tambin soporta la notacin estructurada).

Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 59
Metodologas tradicionales
Estn guiadas por una fuerte planificacin durante todo el proceso de desarrollo;
Se realiza una intensa etapa de anlisis y diseo antes de la construccin del sistema.
Todas las propuestas metodolgicas antes indicadas pueden considerarse como metodologas
tradicionales.

Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 60
Metodologas giles
El desarrollo de software es
incremental
cooperativo
sencillo
adaptable
Metodologas giles identificadas :
Extreme Programming .
Scrum.
Familia de Metodologas Crystal.
Feature Driven Development .
Proceso Unificado Rational, una configuracin gil .
Dynamic Systems Development Method .
Adaptive Software Development .
Open Source Software Development .

Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 61
Programacin Extrema
Nuevo enfoque para desarrollo basado en el desarrollo y entrega de incrementos de
funcionalidad muy pequeos
Depende de mejoramiento de cdigo constante, involucramiento del usuario en el equipo
desarrollador y programacin interactiva
Ing. Mauricio Ortiz PROCESOS DE SOFTWARE 62