Está en la página 1de 48

Ingeniería de Software

Clase 2:
Proceso del Software

Hugo R. Cordero S.
Clase 1
Objetivos
2

 Comprender las actividades fundamentales del


proceso de software
 Conocer los modelos del proceso del software
entendiéndolos como procesos genéricos
 Comprender en qué casos es recomendable aplicar
ciertos modelos de procesos
Temas
3

 Proceso del software


 Modelos del proceso de software
 Comparativo y ventajas de los modelos
Ejemplos de proceso
4

Para preparar una cena Para el proyecto el curso


 Personas: Empleados de una  Personas: Estudiantes del curso
empresa de catering  Producto: Aplicación que elijan
 Producto: La cena que se sirve  Proyecto: El proyecto del curso
 Proyecto: La secuencia de para implementar la aplicación
acciones de servir una cena  Proceso: El conjunto de
concreta actividades que llevarán a la
 Proceso: Las instrucciones creación de la aplicación
sobre cómo se sirve una cena
Proceso del software
5

 El proceso de desarrollo del software tiene como propósito la


producción eficaz y eficiente de un producto de software que
reúna los requisitos del cliente.

 Es un proceso intensamente intelectual, afectado por la


creatividad y juicio de las personas involucradas.
 El proceso de desarrollo de software no es único. No existe un
proceso de software universal que sea efectivo para todos los
contextos de proyectos de desarrollo
Proceso del software y ciclo de
6
vida
 Proceso: conjunto de actividades que conducen a la creación
de un producto software
 Ciclo de vida: conjunto de estados por los cuales pasa el
software
Grupos de procesos específicos del
7
software
 Procesos de acuerdo
 Adquisición, suministro
 Procesos de organización del proyecto
 Gestión del modelo de ciclo de vida, gestión de la infraestructura,
gestión de recursos humanos
 Procesos del proyecto
 Planificación del proyecto, control y evaluación del proyecto, gestión
de las decisiones, gestión de riesgos, gestión de la configuración,
gestión de la información, medición
 Procesos técnicos
 Definición de requisitos de los stakeholders, análisis de requisitos del
sistema, diseño arquitectónico del sistema
Grupos de procesos específicos del
8
software
 Procesos de implementación del software
 Análisis de requisitos, diseño arquitectónico, diseño detallado,
construcción, integración, pruebas
 Procesos de soporte del software
 Gestión de la documentación, gestión de la configuración,
aseguramiento de la calidad, verificación, validación, revisión
conjunta, auditoría, resolución de problemas
 Procesos de reutilización del software
 Ingeniería del dominio, gestión de assets (activos), gestión del
programa de reutilización
Actividades fundamentales
9

 Especificación de software: Se debe definir la funcionalidad


y restricciones operacionales que debe cumplir el software.
 Diseño e Implementación: Se diseña y construye el software
de acuerdo a la especificación.
 Validación: El software debe validarse, para asegurar que
cumpla con lo que quiere el cliente.
 Evolución: El software debe evolucionar, para adaptarse a
las necesidades del cliente.
Actividades de protección o
10
soporte
 Gestión de proyecto de software
 Aseguramiento de la calidad del software
 Gestión de configuración del software
 Preparación y producción de documentos
 Modelado del negocio
 Gestión de reutilización
 Revisiones técnicas formales
 Mediciones
 Gestión de riesgos
Elementos del proceso de software
11

Relaciones entre los elementos


 Un Artefacto es producido por un Rol en una de sus
Actividades. Los artefactos se especifican utilizando
Notaciones específicas. Las Herramientas apoyan la
elaboración de artefactos soportando ciertas notaciones.
Modelos del proceso de software
12

 Un modelo de proceso, o paradigma de Ingeniería de


Software, o modelo del ciclo de vida de desarrollo de
software, es una plantilla o marco que define el proceso a
través del cual se crea software
 Dicho de otra forma, los procesos son instancias de un
modelo de proceso
 A veces los términos proceso y modelo de proceso se utilizan
indistintamente
Modelos del proceso de software
13

Modelos Tradicionales
 Modelo en Cascada
 Basado en Prototipos
 Modelo Estructurado
 Desarrollo rápido de aplicaciones
 Modelo Incremental
Modelos Evolutivos
 Modelo evolutivo
 Modelo en Espiral
 Modelo Iterativo
 Desarrollo concurrente
Modelos del proceso de software
14

Modelos Especializados
 Desarrollo basado en componentes
 Proceso unificado de Rational (RUP)
 De métodos formales
 Desarrollo orientado a aspectos
Modelos Ágiles
 Programación extrema (XP)
 Scrum
 Desarrollo de software adaptativo (ASD)
 Otros como: DSDM, FDD y LD
Modelo en Cascada
15

 Este fue el primer modelo de desarrollo de software que se


publicó. Se derivó de otros procesos de Ingeniería.
 Toma las actividades fundamentales del proceso como son
especificación, desarrollo, validación y evolución
 También conocido como modelo lineal
 Modelo satisfactorio sólo en desarrollos conocidos y
estables

http://www.serena.com/docs/agile/papers/
Managing-The-Development-of-Large-Software-Systems.pdf
Modelo en Cascada
16

Clásico Clásico con retroalimentación


Modelo en Cascada
17

 Versión actual
Modelo en Cascada
18

 Variante, modelo en V
Modelo basado en prototipos
19

 Un prototipo es un modelo experimental de un sistema o de


un componente de un sistema que tiene los suficientes
elementos que permiten su uso
 Objetivos:
 Son un medio eficaz para aclarar los requisitos de los usuarios e
identificar las características de un sistema que deben cambiarse
o añadirse
 Mediante el prototipo se puede verificar la viabilidad del diseño
de un sistema
Modelo basado en prototipos
20

 Características
 Es una aplicación que funciona
 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
 Tienen un costo bajo de desarrollo
 Tipos
 Desechables, es una versión rudimentaria que posteriormente
será desechada
 Evolutivos, se convertirá en la versión final del sistema
Modelo basado en prototipos
21

 Combinación de prototipos desechables y evolutivos para


los requisitos poco conocidos
 Conocido como prototipado operativo
Modelo Incremental
22

 Modelo incremental según la ISO/IEC TR 15271:1998


 Se tiene requisitos claros
Modelo Evolutivo
23

 La idea detrás de este modelo es el desarrollo de una


implantación del sistema inicial, exponerla a los comentarios
del usuario, refinarla en N versiones hasta que se desarrolle
el sistema adecuado.
 Gestiona la naturaleza evolutiva del software
Modelo en Espiral
24

 Propuesto inicialmente por Boehm, 1988


 El ciclo de desarrollo se representa como una espiral, en
lugar de una serie de actividades sucesivas con
retrospectiva de una actividad a otra
 Principalmente, reúne características del modelo clásico y de
prototipos
 Reconoce explícitamente los riesgos a diferencia de otros
modelos
 El ciclo más interno puede relacionarse
con la factibilidad del sistema
Modelo en Espiral
25
Modelo en Espiral
26

Cada ciclo se divide cuatro sectores


 Establecimiento de objetivos

 Se definen objetivos, restricciones y se traza un plan detallado


 Se identifican los riesgos del proyecto
 Valoración y reducción del riesgo
 Se realiza el análisis minucioso de cada uno de los riesgos
 Se dan acciones para reducir el riesgo
Modelo en Espiral
27

 Desarrollo y validación
 Se elige un modelo de desarrollo: prototipos, basado en métodos
formales o en cascada
 Planeación
 El proyecto se revisa y se toma una decisión si hay que continuar
con otro ciclo
 Si se opta continuar se trazan los planes para la siguiente fase
Modelo en Espiral
28

Modelo en espiral de Boston


 Variante del modelo inicial con 6 regiones de tareas

 Se define un eje con diferentes puntos de entrada para


diferentes tipos de proyectos

Puntos de Entrada
 Mantenimiento de producto
 Mejora de producto
 Desarrollo de producto
 Desarrollo de conceptos
Modelo Iterativo
29

 Es una forma de reducir la repetición del trabajo en el


proceso de desarrollo y dar oportunidad de retrasar la
toma de decisiones en los requisitos hasta adquirir
experiencia con el sistema.
 Es una combinación del Modelo de Cascada y Modelo
Evolutivo
 Cada iteración, secuencia lineal secuencial produce un
incremento del software
 Un incremento es un producto operacional de una parte del sistema
Modelo Iterativo
30

 Específicamente fusiona el modelo lineal secuencial con el


de construcción de prototipos

 La primera iteración suele ser un producto esencial o núcleo


 Requisitos básicos
 Muchas funciones suplementarias se dejan para después
Modelo de desarrollo concurrente
31

 El modelo de desarrollo
concurrente es un modelo de tipo
de red donde todas las personas
actúan simultáneamente o al
mismo tiempo
 Se puede representar en forma
de esquema como una serie de
actividades técnicas importantes,
tareas y estados asociados a
ellas
Modelo basado en Componentes
32

 Las unidades de software reutilizables puede ser de


diferentes tamaños:
 Sistemas de aplicaciones
 Componentes
 Funciones
 Modelo orientado a la reutilización
 Configura aplicaciones a partir de componentes de
software preparados
 Se enmarca en un contexto más amplio: ingeniería del
software basada en componentes
Modelo basado en Componentes
33

 Un componente es una unidad ejecutable e independiente


 Los componentes publican su interfaz y todas las
interacciones son a través de ella
 Una interfaz que se suministra define los servicios que ofrece el
componente
 Una interfaz que se solicita especifica qué servicios deben estar
disponibles
Modelo basado en Componentes
34

 Tiene un enfoque iterativo y evolutivo


Modelo basado en Componentes
35

 Para el desarrollo con reutilización:


 Debe ser posible encontrar los componentes reutilizables
apropiados
 Se debe confiar en que los componentes que se utilizan se
comportan conforme a lo especificado
 Los componentes deben tener documentación asociada para
ayudar a comprenderlos y adaptarlos a una nueva aplicación
Proceso unificado
36

 Más conocido por su especificación más detallada dada


por Rational, como: Proceso Unificado de Rational (RUP)
 Definido por Rational Software Corporation:
 Evolución del proceso Objectory (Orientado a Objetos)
 Utilización de UML como lenguaje de modelado
 Creado en 1996, posteriormente comprado por IBM en el 2003
 Mantiene un conjunto de métodos adaptables al contexto
y necesidades de cada organización
 Es una implementación del modelo en espiral
Proceso unificado
37

Características
 Conducido por casos de uso

 Los casos de uso se implementan para asegurar que toda la


funcionalidad se realice en el sistema y verificar y probar el mismo
 Centrado en la arquitectura
 La arquitectura se describe mediante diferentes vistas del sistema.
Es importante establecer una arquitectura básica pronto, realizar
prototipos, evaluarla y finalmente refinarla durante el curso del
proyecto
 Iterativo e incremental
 Resulta práctico dividir los grandes proyectos en mini proyectos,
cada uno de los cuales es una iteración que resulta en un incremento
Proceso unificado
38

Fases
 Inicio: se define el alcance del proyecto y se desarrollan los

casos de negocio
 Elaboración: se planifica el proyecto, se especifican en

detalle la mayoría de los casos de uso y se diseña la


arquitectura del sistema
 Construcción: se construye el producto

 Transición: el producto se convierte en versión beta. Se


corrigen problemas y se incorporan mejoras sugeridas en la
revisión
Proceso unificado
39

 Dentro de cada fase se puede, a su vez, descomponer el


trabajo en iteraciones con sus incrementos resultantes
 Cada fase termina con un hito, cada uno de los cuales se
caracteriza por la disponibilidad de un conjunto de
componentes de software
 Objetivos de los hitos:
 Toma de decisiones para continuar con la siguiente fase
 Controlar el progreso del proyecto
 Proporcionar información para la estimación de tiempo y
recursos de proyectos sucesivos
Proceso unificado
40

 Cada ciclo concluye con una versión del producto para los
clientes
Proceso unificado
41

 Las iteraciones discurren a largo de los flujos de trabajo


Cuadro comparativo
42

MODELO VENTAJAS /DESVENTAJAS APLICABILIDAD

Los proyectos raras veces siguen


una evolución secuencial
No todos los requisitos son
expuestos, al principio, de forma
Utilizado cuando existen
explícita como requiere este
MODELO EN CASCADA modelo.
especificaciones amplias de los
requerimientos del cliente.
El cliente debe tener paciencia, ya
que la aplicación sólo estará
disponible en un estado muy
avanzado del proyecto.

Se utiliza si en el mercado no se
El cliente puede pensar que el encuentra el producto pero el
prototipo es una versión acabada. cliente desea resultados
inmediatos.

Pueden llegar a pasarse por alto la


MODELO BASADO EN calidad del software global o el
Conveniente en caso de ser
PROTOTIPOS necesario desarrollar módulos
mantenimiento a largo plazo.

Las herramientas elegidas pueden Para sistemas interactivos


ser inadecuadas. pequeños o de tamaño pequeño
Alto grado de participación del
Para sistemas con vida corta.
usuario
Cuadro comparativo
43

MODELO VENTAJAS /DESVENTAJAS APLICABILIDAD

Los clientes no tienen que esperar Reemplazar el antiguo desarrollo


hasta tener el sistema completo. El con uno nuevo que satisfaga las
primer incremento satisface los nuevas necesidades según las
requisitos más críticos. redefiniciones del problema

Los primeros incrementos sirven


como prototipo y ayudan en la tarea
MODELO INCREMENTAL de detectar los posteriores requisitos Manejo de Versiones

Existe un riesgo bajo de fallar en el


proyecto total.

Puede ser difícil ajustar los


requisitos a los incrementos.

Requiere comunicación permanente Utilizado para el desarrollo de


con el cliente por lo tanto si se aplicaciones complejas y/o
cambia el contacto con le cual se específicas. (Ej. Investigación
realiza desarrollo es necesario que Genética)
MODELO ESPIRAL esté al tanto de lo realizado y lo
pendiente, cliente debe ser gran
conocedor del sistema.
Cuadro comparativo
44

MODELO VENTAJAS /DESVENTAJAS APLICABILIDAD

Su uso es libre (como decir “barra Prácticamente cualquier tipo de


libre”, sin condiciones). sistema, se puede adaptar a la
Hay excelentes textos, que explican necesidad de la organización.
la aplicación de sus proceso paso a
paso.
Cuenta con muchas herramientas
que ayudan a implementar y
mantener los artefactos del modelo

Proporciona una guía detallada


MODELO DE PROCESO sobre la mayoría de actividades
UNIFICADO relacionadas a la construcción del
software, lo que contribuye a la
mitigación de los riesgos.

Es necesario “aterrizar” los


conceptos, lo cual puede resultar un
poco difícil para quien no tenga
experiencia en el uso de procesos de
ingeniería de software.
Generalmente conlleva una excesiva
documentación.
Ventajas de definir un proceso
45

 Es muy importante saber seleccionar un proceso para el


desarrollo del sistema ya que dependiendo del que elija se
pueden obtener beneficios como:
 Aumentar la velocidad de desarrollo
 Predecir tiempos y costos
 Mejorar la calidad, el control y el seguimiento del sistema
 Minimizar gastos y riesgo
 Mejorar las relaciones con los usuarios
 Definir roles y perfiles
Resumen
46

 El proceso de software es el conjunto de actividades y


resultados asociados que conducen a la creación de un
producto software
 Cuatro actividades fundamentales: Especificación de
software, Diseño e implementación, validación y evolución
 Para sistemas bien conocidos se puede utilizar el Modelo de
Cascada. La fase de análisis de riesgos es relativamente
fácil
 Con especificaciones incompletas, el modelo de prototipado
ayuda a identificarlos y va produciendo un sistema funcional
 Pueden utilizarse modelos híbridos en distintas partes del
desarrollo
¿Preguntas?
47

 ¿Qué proceso de software utilizaría? ¿Por qué?


Referencias
48

 Ingeniería de Software. Un enfoque desde la guía SWEBOK (1ra. edic.)


 Capítulo 2: Modelos y procesos
 Ingeniería del Software (9na edición) Ian Sommerville
 Capítulo 2: Procesos de Software
 Ingeniería de Software: Un enfoque práctico (7ma edición) Roger S.
Pressman
 Capítulo 2: Modelos del proceso
 Links:
 http://www.monografias.com/trabajos96/procesos-de-software/procesos-
de-software.shtml
 http://lopezjesusb.blogspot.com/
 http://www.cs.odu.edu/~price/cs451/Lectures/01overview/process2/proce
ss2_htsu2.html
 http://www.ambysoft.com/onlineWritings.html

También podría gustarte