Vous êtes sur la page 1sur 167

Ingeniera del Software

Tema 1: Introduccin a la
Ingeniera del Software
SI ESTAS LISTO?
ENTONCES
QUE COMIENCE EL JUEGO

Ing. Willian Zamalloa Paro DAI-UNSAAC

Ingeniera del Software


Introduccin a la Ingeniera del Software

Resumen

Resumen

Descriptores

Bibliografa

Se presentan los conceptos clsicos relacionados con el software y la


Ingeniera del Software. El objetivo de este tema es tomar conciencia
de la importancia de abordar la construccin del software desde una
perspectiva de ingeniera. Se exponen los elementos constituyentes de
un paradigma de desarrollo del software. Se ofrece una visin general
del concepto de proceso, as como de los diferentes modelos de
proceso software. Se introduce el concepto de metodologa de
desarrollo como contraposicin al desarrollo anrquico y artesanal de
aplicaciones, tan relacionado con la tan nombrada crisis del software.
Se presenta, como ejemplo de proceso, el Proceso Unificado. Y se
termina el tema hablando de herramientas CASE
Software; Aplicaciones del software; Crisis del software; Proceso
software; Modelos de proceso; Ciclo de vida; Metodologa; Mtodo;
Proceso Unificado; Herramienta CASE
[Pressman, 2006] Captulos 1, 2, 3 y 4
[Sommerville, 2005] Captulos 1, 2, 3, 4 y 17

Ing. Willian Zamalloa Paro DAI-UNSAAC

Ingeniera del Software


Introduccin a la Ingeniera del Software

Esquema

Software

Conceptos bsicos de la Ingeniera del Software

Proceso software

Modelos de proceso software

Metodologas

Proceso Unificado

CASE

Aportaciones principales del tema

Ejercicios

Ing. Willian Zamalloa Paro DAI-UNSAAC

Ingeniera del Software


Introduccin a la Ingeniera del Software

1. Software

Ing. Willian Zamalloa Paro DAI-UNSAAC

Ingeniera del Software


Introduccin a la Ingeniera del Software

Economa del software (i)

Evolucin de los Costes del Software

Ing. Willian Zamalloa Paro DAI-UNSAAC

Ingeniera del Software


Introduccin a la Ingeniera del Software

Economa del software (ii)

El software es un producto de consumo con un gran peso en la economa

El desarrollo del software de las empresas USA

Gasto en proyectos software en el ao 1995 en USA

2 trillones de dlares en desarrollo


30.000 millones de dlares anuales en mantenimiento
175.000 proyectos / 250.000 millones de dlares
59.000 millones de dlares de desviacin de los costes estimados
81.000 millones de dlares en proyectos software cancelados

Contribucin del software a la economa USA en 1996 [Minasi, 2000]

Gran supervit en las exportaciones


Se export software por un valor de 24.000 millones de dlares, se import software por valor de 4.000
millones de dlares, se obtuvo una balanza positiva de 20.000 millones de dlares
Comparativa

Industria del software en USA en el ao 2000

Agricultura: Exportaciones 26.000 millones; Importaciones 14.000 millones; Balance: 12.000 millones
Industria Aeroespacial: Exportaciones 11.000 millones; Importaciones 3.000 millones; Balance: 8.000 millones
Qumica: Exportaciones 26.000 millones; Importaciones 19.000 millones; Balance: 7.000 millones
Vehculos: Exportaciones 21.000 millones; Importaciones 43.000 millones; Balance: -22.000 millones
Bienes manufacturados: Exportaciones 200.000 millones; Importaciones 265.000 millones; Balance: -65.000 millones

Ventas: 180 billones de dlares


Trabajadores: 697.000 ingenieros de software 585.000 programadores

El gobierno USA estima que las empresas han gastado cerca de 3,3 trillones de dlares en
tecnologas de la informacin en la ltima dcada
Ing. Willian Zamalloa Paro DAI-UNSAAC

Ingeniera del Software


Introduccin a la Ingeniera del Software

Realidades del software (i)

El 55% de los sistemas cuestan ms de lo esperado, el 68% superan la


fecha de entrega y el 88% tuvieron que ser sustancialmente rediseados
Informe de IBM (1994)

La media era 100 dlares por lnea de cdigo, se esperaba pagar 500
dlares por lnea, y se termin pagando entre 700 y 900 dlares por lnea,
6.000 millones de dlares de trabajo fueron descartados
Advanced Automation System (FAAm 1982-1994)

Cada 6 nuevos sistemas puestos en funcionamiento, 2 son cancelados, la


probabilidad de cancelacin est alrededor del 50% para sistemas
grandes, la media de proyectos que sobrepasa el calendario es del 50%,
3 de cada 4 sistemas son considerados como fallos de operacin
Bureau of Labor Statistics (1997)

Ing. Willian Zamalloa Paro DAI-UNSAAC

Ingeniera del Software


Introduccin a la Ingeniera del Software

Realidades del software (ii)

El 74% de todos los proyectos de tecnologas de la informacin fallan


porque se pasan de presupuesto, porque no cumplen el plazo de
entrega y el 28% de los proyectos fallan completamente
The Standish Group (1998)

Cada ao se gastan 75 billones de dlares en proyectos de tecnologas de


la informacin fallidos en USA
The Standish Group (1998)

El 52,7% de los proyectos relacionados con las tecnologas de la


informacin cuestan el 189% de su coste inicial estimado
The Standish Group, as reported by Solutions Integrator (Junio de 1999)

En grandes compaas (donde la media de coste de un proyecto de


desarrollo es de 2.322.000 dlares), slo el 9% de los proyectos
estuvieron en la fecha prevista y dentro del presupuesto
The Standish Group, as reported by Solutions Integrator (Junio de 1999)

Ing. Willian Zamalloa Paro DAI-UNSAAC

Ingeniera del Software


Introduccin a la Ingeniera del Software

Realidades del software (iii)

El 31,1% de los proyectos se cancelan antes de completarse


The Standish Group, as reported by Solutions Integrator (Junio de 1999)

Cerca de la mitad de los proyectos de desarrollo cuestan un 70% ms de


lo que inicialmente fue presupuestado. Los gestores citan a la falta de
informacin de los usuarios como principal razn para el fallo de un
proyecto
The Standish Group, as reported by InternetWeek (Septiembre de 1999)

Ing. Willian Zamalloa Paro DAI-UNSAAC

Ingeniera del Software


Introduccin a la Ingeniera del Software

Historias preocupantes y catastrficas (i)


The most likely way for the world to be destroyed, most experts agree, is by accident.
Thats where we come in. Were computer professionals. We cause accidents
Nathaniel Borenstein, inventor of MIME, in: Programming as if People Mattered: Friendly
Programs, Software Engineering and Other Noble Delusions, Princeton University
Press, Princeton, NJ, 1991

Un caso divertido?

El computador de un hospital comete un error fatal: De acuerdo con


esto, yo estoy muerto

< El problema sucedi durante una actualizacin rutinaria de los


ficheros del ordenador del [hospital] Saint Marys en octubre, Jennifer
Cammenga, la portavoz del Saint Marys, declar al Grand Rapid Press>.
< Un dgito fue omitido en el cdigo, indicando que los pacientes
haban fallecido, en lugar de indicar que haban sido dados de alta>
(Noticia de prensa del 8 de enero de 2003)

Ing. Willian Zamalloa Paro DAI-UNSAAC

10

Ingeniera del Software


Introduccin a la Ingeniera del Software

Historias preocupantes y catastrficas (ii)

Otros casos no tan divertidos (i)

Varias muertes de pacientes de cncer acaecidas entre 1985-1987 se


debieron a una sobredosis de radiacin debida a un problema en las tareas
concurrentes en el software de la mquina de radioterapia Therac-25
(http://sunnyday.mit.edu/therac-25.html), [Leveson y Turner, 1993],
[Leveson, 1995]
En mayo de 2001 la Agencia Internacional para la Energa Atmica declar
una emergencia radiolgica en Panam. 28 pacientes sufrieron una sobre
exposicin, 8 murieron, y partes de los supervivientes pueden sufrir serias
complicaciones que en algunos casos pueden llegar a ser mortales. Se
concluy que uno de los factores que provocaron el accidente se debi a un
error en el software que controlaba ciertas entradas de datos
(http://www.fda.gov/cdrh/ocd/panamaradexp.html)
Servicio de Ambulancias de Londres (1992). Fallo en las pruebas de
instalacin del sistema y su compatibilidad con los ya existentes provocaron
prdida de llamadas y salidas mltiples debidas a llamadas duplicadas
(http://www.cs.ucl.ac.uk/staff/A.Finkelstein/las.html), [Finkelstein y Dowell,
1996]

Ing. Willian Zamalloa Paro DAI-UNSAAC

11

Ingeniera del Software


Introduccin a la Ingeniera del Software

Historias preocupantes y catastrficas (iii)

Otros casos no tan divertidos (ii)

El fallo en el lanzamiento del satlite Ariane 5 en 1996 fue causada


por una rutina de excepcin defectuosa en el cdigo Ada, que se
invocaba como resultado de una conversin errnea de un nmero en
coma flotante de 64 bits a un entero de 16 bits
(http://sunnyday.mit.edu/accidents/Ariane5accidentreport.html)
Dos oficiales de polica en una regin escocesa utilizaban una pistola
de radar para identificar a motociclistas que infringan los lmites de
velocidad. Repentinamente la pistola de radar qued bloqueada
apuntando al cielo e indicando una velocidad de 300 millas por hora.
Segundos ms tarde, un caza Harrier, volando a baja altura, pas por
all. El buscador de blancos del avin haba detectado el radar y lo
haba tomado por un enemigo. Por fortuna, el Harrier volaba
desarmado, ya que el comportamiento normal hubiera sido el disparo
de un misil de contraataque automtico
(http://catless.ncl.ac.uk/Risks/17.67.html#subj1.1), [Pfleeger, 2002]
Ing. Willian Zamalloa Paro DAI-UNSAAC

12

Ingeniera del Software


Introduccin a la Ingeniera del Software

Historias preocupantes y catastrficas (iv)

Otros casos no tan divertidos (iii)

El 15 de enero de 1990 la red de comunicaciones de larga distancia de AT&T


estuvo fuera de servicio durante nueve horas a consecuencia de un fallo de
software. Millones de llamadas quedaron bloqueadas. Algunos negocios que
dependan en gran medida de los servicios telefnicos, como agencias de
viajes, quedaron prcticamente colapsados, con la consiguiente prdida
econmica
En febrero de 2003 un fallo en la red de Vodafone deja sin servicio a sus 8,6
millones de usuarios. La avera se produjo en el transcurso de las tareas de
mantenimiento del software de la red llevadas a cabo por la operadora,
impidiendo las comunicaciones con sus lneas en toda Espaa desde las siete
de la maana
Un fallo humano, no negligente, motivado por la complejidad del sistema
ergonmico de la pantalla del ordenador del centro de control de operaciones
del Metro caus, el da 31 de octubre de 2004, el choque de dos trenes del
Metro de Barcelona resultando heridas 50 personas

Ing. Willian Zamalloa Paro DAI-UNSAAC

13

Ingeniera del Software


Introduccin a la Ingeniera del Software

Historias preocupantes y catastrficas (v)

Otros casos no tan divertidos (iv)

La Mars Polar Lander se estrell en su aterrizaje en Marte en


diciembre de 1999 por un fallo de software. Los motores de descenso
se apagaron prematuramente porque un fallo en los sensores
indicaban que haba tomado tierra cuando estaba a unos 40 metros
[Clark, 2000]
El robot Spirit en Marte tuvo que ser reseteado y actualizado desde la
tierra por fallos en su memoria flash (enero de 2004)
http://www.msnbc.msn.com/id/3855168/

Ing. Willian Zamalloa Paro DAI-UNSAAC

14

Ingeniera del Software


Introduccin a la Ingeniera del Software

Definicin

Programas, procedimientos, reglas y la posible


documentacin asociada y datos que pertenezcan a la
explotacin de un sistema de ordenador [AECC, 1986]
Una coleccin organizada de programas de ordenador,
procedimientos, documentacin asociada y datos referidos a
un ordenador que realiza una funcin especfica o un
conjunto de funciones [IEEE, 1999a]1, [NIST, 1994], [DOD,
1995]
Conjunto de programas, procedimientos y documentacin
asociada a la operacin de un sistema informtico [Piattini et
al., 2004]
1

IEEE Std 610.12-1990 Standard Glossary of Software Engineering Terminology

Ing. Willian Zamalloa Paro DAI-UNSAAC

15

Ingeniera del Software


Introduccin a la Ingeniera del Software

Caractersticas del producto software


El software se desarrolla, no se fabrica en el sentido clsico

Los costes del software se encuentran en la ingeniera

El software no se estropea, se deteriora

Cambios en las fases de mantenimiento


No hay piezas de repuesto para el software

Curva de fallos del hardware

Curva de fallos del software

Curva real de fallos del software

A pesar de las ltimas tendencias, el software se sigue


construyendo a medida
[Pressman, 2006]
Ing. Willian Zamalloa Paro DAI-UNSAAC

16

Ingeniera del Software


Introduccin a la Ingeniera del Software

La crisis del software (i)

La crisis del software !!!!

Problemas del software

Calidad cuestionable

Cmo desarrollar software

Mal funcionamiento
Insatisfaccin de los clientes
Imprecisin en la planificacin y la estimacin
Baja productividad

Cmo mantener el volumen creciente de software


existente
Cmo afrontar la incesante demanda de software
Barrera del mantenimiento

Ing. Willian Zamalloa Paro DAI-UNSAAC

17

Ingeniera del Software


Introduccin a la Ingeniera del Software

La crisis del software (ii)

Dificultad inherente
Gran complejidad

Nmero de estados posibles es muy elevado


Conexiones entre entidades
Complejidad arbitraria que surge de instituciones humanas

Sujeto a continuos cambios


Especificacin de requisitos
Comunicacin del equipo
La construccin de software siempre
ser una tarea difcil. No hay bala de plata
Frederick P. Brooks, Jr. (1987)

Ing. Willian Zamalloa Paro DAI-UNSAAC

18

Ingeniera del Software


Introduccin a la Ingeniera del Software

Algunas causas a los problemas del software

Responsables no cualificados
Falta de comunicacin entre las partes
Desconocimiento de las nuevas tendencias
Resistencia al cambio
Falta de reconocimiento de la figura del informtico
Una amplia mitologa y falta de cultura informtica de la sociedad

Mitos de gestin

Mitos del cliente

Resistencia al cambio en la gestin de proyectos


Concepto de la horda mongoliana

Ideas genricas al principio, detalles al final


Requisitos en continua evolucin

Mitos del desarrollador

El trabajo acaba cuando se ha escrito el programa y funciona


Slo se entrega un programa funcionando
Lo que uno crea slo debe entenderlo l

Ing. Willian Zamalloa Paro DAI-UNSAAC

19

Ingeniera del Software


Introduccin a la Ingeniera del Software

Calidad del software (i)

Los ingenieros del software deben encontrar los mtodos


para asegurar que sus productos sean de utilidad y tengan
una calidad aceptable

As, la Ingeniera del Software siempre debe incluir una estrategia


para producir software de calidad

La calidad se percibe desde diferentes puntos de vista


[Garvin, 1984]

Vista trascendental o ideal


Vista del usuario
Vista de la construccin o de proceso
Vista del producto
Vista basada en el valor

Ing. Willian Zamalloa Paro DAI-UNSAAC

Vista externa
Vista interna

20

Ingeniera del Software


Introduccin a la Ingeniera del Software

Calidad del software (ii)

Factores externos

Pueden ser detectados por los usuarios


Es de suma importancia

Factores internos

Slo los perciben los ingenieros del software


Es el medio de conseguir la calidad externa

OBJETIVO

Buenas propiedades
internas

Satisfacer factores
externos

Ing. Willian Zamalloa Paro DAI-UNSAAC

21

Ingeniera del Software


Introduccin a la Ingeniera del Software

Atributos de un buen producto software (i)

Factores externos

Facilidad de mantenimiento

Confiabilidad

Capacidad de que un software pueda utilizarse en un contexto diferente al de su


creacin

Portabilidad

Fcil de utilizar
Debe tener una interfaz de usuario apropiada y una documentacin adecuada

Reusabilidad

Hacer efectivo el propsito del software

Usabilidad

No debe causar daos fsicos o econmicos en el caso de fallo del sistema


Fiabilidad, seguridad y proteccin

Eficacia

Ha de poder evolucionar para adaptarse a las necesidades de cambio de los clientes

Facilidad de transferir productos software a diferentes plataformas

Ing. Willian Zamalloa Paro DAI-UNSAAC

22

Ingeniera del Software


Introduccin a la Ingeniera del Software

Atributos de un buen producto software (ii)

Factores internos

Facilidad de traza
Modularidad
Tolerancia a fallos
Eficiencia de ejecucin
Eficiencia de almacenamiento
Autodescripcin
Legibilidad
Facilidad de expansin
Independencia del sistema
Independencia del hardware
Estandarizacin de datos
Estandarizacin de comunicaciones

Ing. Willian Zamalloa Paro DAI-UNSAAC

23

Ingeniera del Software


Introduccin a la Ingeniera del Software

Tipos de productos software (i)

Un producto software es un sistema software que se


acompaa de la documentacin necesaria para su instalacin
y uso
Tipos de mercados

Productos genricos

Sistemas autnomos producidos por una organizacin para su venta en el


mercado abierto a cualquier cliente que pueda adquirirlo
El desarrollador controla la especificacin

Productos personalizados

Sistemas encargados por un cliente particular

Desarrollos a medida

Las especificaciones las determina el cliente


Ing. Willian Zamalloa Paro DAI-UNSAAC

24

Ingeniera del Software


Introduccin a la Ingeniera del Software

Tipos de productos software (ii)

reas de aplicacin [Pressman, 2006] (i)

Software de sistemas

Software para dar servicio a otros programas: compiladores, editores...

Fuerte interaccin con el hardware


Operacin concurrente
Recursos compartidos
Gestin de procesos complicada
Estructuras de datos complejas

Software de tiempo real

Coordina/analiza/controla sucesos en el mundo real en el momento en el


que suceden: control de vuelo, plantas qumicas, telefona...

Tiempo de respuesta crtico: magnitud de milisegundos


Interaccionan directamente con dispositivos fsicos y sensores
Requisitos de rendimiento crticos
Programacin de bajo nivel
Concurrencia
Ing. Willian Zamalloa Paro DAI-UNSAAC

25

Ingeniera del Software


Introduccin a la Ingeniera del Software

Tipos de productos software (iii)

reas de aplicacin [Pressman, 2006] (ii)

Software de ingeniera y cientfico

Software empotrado

Algoritmos de tratamiento numrico: simulacin, estadstica, CAD...


Diseo de algoritmos y estructuras de datos
Clculo intensivo
Paralelizacin
Reside en memoria de slo lectura y se utiliza para controlar productos y
sistemas de los mercados industriales y de consumo
Caractersticas similares al de tiempo real

Software de Inteligencia Artificial

Algoritmos no numricos para resolver problemas complejos: sistemas


expertos, reconocimiento de patrones, demostradores de teoremas...

Ing. Willian Zamalloa Paro DAI-UNSAAC

26

Ingeniera del Software


Introduccin a la Ingeniera del Software

Tipos de productos software (iv)

reas de aplicacin [Pressman, 2006] (iii)

Software de gestin

Proceso de informacin comercial: nminas, clientes, inventarios...

Sistemas transaccionales (TPS)

Gran volumen de datos


Complejidad de la informacin
Integracin
Soportan las operaciones diarias de un negocio: pedidos, compras...
Los requisitos, los datos y el procesamiento se conoce y est bien estructurado

Anlisis de datos

Aplicaciones de consulta (query)


El usuario especifica qu desea no cmo obtenerlo

Lenguajes declarativos

Datawarehouse

Almacenamiento de versiones histricas de entradas a la base de datos, registros de


transacciones y datos histricos

Soporte a la toma de decisiones (DSS Decision Support System)

Herramienta de usuario final


Resolucin de problemas no estructurados
Anlisis what-if, estadstico, tendencias...
Ing. Willian Zamalloa Paro DAI-UNSAAC

27

Ingeniera del Software


Introduccin a la Ingeniera del Software

Tipos de productos software (v)

reas de aplicacin [Pressman, 2006] (iv)

Software de computadoras personales

Herramientas de escritorio, software para ocio

Aplicaciones Web

Software accedido a travs de un navegador Web


Los sistemas Web tienen una naturaleza y unos requisitos que difieren del software
tradicional
Los sistemas Web

Estn orientados a documentos que contienen pginas Web estticas o dinmicas


Se centran en el look & feel y enfatizan la creatividad visual y la presentacin en la
interfaz
Son conducidos por el contenido, incluyendo el desarrollo del contenido
Necesitan ofrecer servicios a usuarios con diversidad de caractersticas y capacidades
Ejemplifican los vnculos entre el arte y la ciencia que generalmente aparecen en el
desarrollo del software
Requieren acortar el tiempo de desarrollo, dificultando aplicar el mismo nivel de
formalidad en la planificacin y prueba que se aplica en el software tradicional
Presentan un formato de distribucin y explotacin diferente al software tradicional
Los desarrolladores de los sistemas Web

Difieren en gran medida en su formacin, caractersticas, conocimiento y


comprensin del sistema

Diferencias en su percepcin de la Web y de la calidad del sistema Web


Ing. Willian Zamalloa Paro DAI-UNSAAC

28

Ingeniera del Software


Introduccin a la Ingeniera del Software

Tipos de productos software (vi)

Categoras de las aplicaciones Web


Categora
De informacin
Interactivas

Transaccionales
Workflow

Entornos de trabajo cooperativo


Comunidades en lnea, marketplaces

Portales Web

Ejemplos
Peridicos en lnea, catlogos de
productos, libros electrnicos en lnea
Formularios de registro, presentacin de
informacin personalizada, juegos en
lnea
Compra electrnica, banca electrnica
Sistemas de planificacin en lnea,
gestin de inventario, monitorizacin de
estado
Sistemas de autor distribuido,
herramientas de diseo colaborativas
Grupos de chat, sitios que recomiendan
productos o servicios, marketplaces en
lnea, subastas en lnea
Centros comerciales, intermediarios en
lnea
[Ginige y Murugesan, 2001]

Ing. Willian Zamalloa Paro DAI-UNSAAC

29

Ingeniera del Software


Introduccin a la Ingeniera del Software

Tipos de productos software (vii)

Sistemas de software intensivo [Moreno-Navarro, 2005]

Combinan tecnologas emergentes de sistemas empotrados


(automocin, avinica, ropas) pero a la vez estn inmersos en
sistemas globales de cmputo (Internet, grids, sistemas orientados a
servicios)
Estos sistemas son sistemas programables que

Son dinmicos y evolucionan


Su comportamiento es adaptativo y anticipatorio
Procesan conocimiento y no slo datos

Computing is becoming a utility and software service [] applications will no longer be

a big chunk of software that runs on a computer but a combination of web services; and
the platform for which developers write their programs will no longer be the operative
system, but application servers (The Economist, June 2003)

Ing. Willian Zamalloa Paro DAI-UNSAAC

30

Ingeniera del Software


Introduccin a la Ingeniera del Software

Producto software. Conclusiones

Los sistemas software son productos complejos

Gran funcionalidad
Objetivos diferentes y en ocasiones conflictivos
En su concepcin, desarrollo y mantenimiento interviene un gran
nmero de personas con diferentes perfiles
Elevado tamao

Windows 98 18 millones de lneas de cdigo


Windows 2000 (2001) 35 millones de lneas de cdigo
Windows XP (2002) 40 millones de lneas de cdigo
Linux (Debian) 55 millones de lneas de cdigo 14.000 personas/ao
1900 millones de dlares
Rotor (2002) 3,6 millones de lneas de cdigo

Sujeto a cambios continuos

Requisitos, tecnologa...

Conclusin final: La produccin de software ha de estar

regida por los principios de la INGENIERA


Ing. Willian Zamalloa Paro DAI-UNSAAC

31

Ingeniera del Software


Introduccin a la Ingeniera del Software

2. Conceptos bsicos
de la IS

Ing. Willian Zamalloa Paro DAI-UNSAAC

32

Ingeniera del Software


Introduccin a la Ingeniera del Software

Introduccin

Objetivos de la Ingeniera del Software

Desarrollo de software de Calidad


Aumento de la productividad
Disminucin del tiempo
Desarrollo de software econmico

Diferentes puntos de vista sobre el mismo tema

Diseo, construccin y mantenimiento de grandes sistemas software


Construccin multipersona de software multiversin
Conjunto de tcnicas que se enfrentan al software como un producto de
ingeniera que requiere: planificacin, anlisis, diseo, implementacin,
pruebas y mantenimiento
Aplicacin disciplinada de los principios y mtodos de la ingeniera, la ciencia y
las matemticas para la produccin econmica del software de calidad
Conjunto de teoras, mtodos y herramientas para el desarrollo profesional del
software
Ing. Willian Zamalloa Paro DAI-UNSAAC

33

Ingeniera del Software


Introduccin a la Ingeniera del Software

Definiciones (i)

Ingeniera del software es el establecimiento y uso de principios slidos


de ingeniera, orientados a obtener software econmico que sea fiable y
trabaje de manera eficiente en mquinas reales [Bauer, 1972]
Tratamiento sistemtico de todas las fases del ciclo de vida del software.
Se refiere a la aplicacin de metodologas para el desarrollo del sistema
software [AECC, 1986]
La construccin de software multiversin por un equipo de varias
personas [Parnas y Weiss, 1987]
La aplicacin disciplinada de principios, mtodos y herramientas de
ingeniera, ciencia y matemticas para la produccin econmica de
software de calidad [Humphrey, 1989]
Disciplina tecnolgica y de gestin concerniente a la invencin,
produccin sistemtica y mantenimiento de productos software de alta
calidad, desarrollados a tiempo y al mnimo coste [Frakes et al., 1991]

Ing. Willian Zamalloa Paro DAI-UNSAAC

34

Ingeniera del Software


Introduccin a la Ingeniera del Software

Definiciones (ii)

Aplicacin de herramientas, mtodos y disciplinas para producir y mantener


una solucin automatizada de un problema real [Blum, 1992]
La aplicacin de principios cientficos para la transformacin ordenada de un
problema en una solucin software funcional, as como en el consiguiente
mantenimiento del software hasta el final de su vida til [Davis, 1993]
Es la aplicacin de herramientas, mtodos y disciplinas de forma eficiente en
cuanto al coste, para producir y mantener una solucin a un problema de
procesamiento real automatizado parcial o totalmente por el software [Horan,
1995]
La aplicacin de mtodos y conocimiento cientfico para crear soluciones
prcticas y rentables para el diseo, construccin, operacin y mantenimiento
del software y los productos asociados, al servicio de las personas [Shaw y
Garlan, 1996]
(1) La aplicacin de un enfoque sistemtico, disciplinado y cuantificable para
el desarrollo, la operacin y el mantenimiento del software; es decir, la
aplicacin de la Ingeniera al Software. (2) El estudio de las aproximaciones
en (1) IEEE Std 610.12-1990 [IEEE, 1999a]
Ing. Willian Zamalloa Paro DAI-UNSAAC

35

Ingeniera del Software


Introduccin a la Ingeniera del Software

Mtodo de Ingeniera

Formulacin del problema


Anlisis del problema
Bsqueda de soluciones
Eleccin de la solucin ms adecuada
Especificacin de la solucin

Ing. Willian Zamalloa Paro DAI-UNSAAC

36

Ingeniera del Software


Introduccin a la Ingeniera del Software

Mtodo de ingeniera en Ingeniera del Software

Recoleccin y anlisis de requisitos

Diseo del sistema

Actividad: Formulacin del problema con el cliente


Resultado: Modelo del dominio del problema
Formulacin y anlisis del problema
Actividad: Anlisis del problema
Actividad: Descomposicin en partes
Actividad: Seleccin de estrategias para disear el sistema
Actividad: Seleccin del diseo detallado para cada una de las partes
Resultado: Modelo del dominio de la solucin
Bsqueda de soluciones; eleccin de la solucin ms adecuada

Implementacin

Actividad: Trasladar el modelo del dominio de la solucin en representaciones


ejecutables
Especificacin de la solucin

Ing. Willian Zamalloa Paro DAI-UNSAAC

37

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo del problema vs. modelo de la solucin (i)

Modelo del Dominio del Problema

Descripcin de aquellos aspectos del sistema del mundo


real que son relevantes para el problema en consideracin
Comprensin del entorno en el que ha de funcionar el
sistema

Modelo del Dominio de la Solucin

Comprensin de los sistemas que se han de construir


Evaluar diferentes soluciones alternativas
Participacin de un equipo de desarrollo en la construccin
del sistema

Ing. Willian Zamalloa Paro DAI-UNSAAC

38

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo del problema vs. modelo de la solucin (ii)

Realidad

Implementacin

Lenguaje de especificacin
Lenguaje de programacin

Dominio del problema

Dominio de la solucin

Ing. Willian Zamalloa Paro DAI-UNSAAC

39

Ingeniera del Software


Introduccin a la Ingeniera del Software

Marco conceptual de la Ingeniera del Software

Un sistema software es siempre una parte de un sistema


mayor que lo engloba como componente
La Ingeniera del Software ser solamente una parte del
diseo del sistema

Los requisitos del software han de ajustarse a los requisitos del resto
de los elementos que constituyen este sistema
El ingeniero del software ha de estar implicado en el desarrollo de los
requisitos del sistema completo, comprendiendo el dominio de
actividad en su totalidad

La Teora General de Sistemas es el antecedente


conceptual en el que se apoya la teora sobre los Sistemas de
Informacin a los que la Ingeniera del Software intenta
aportar soluciones
Ing. Willian Zamalloa Paro DAI-UNSAAC

40

Ingeniera del Software


Introduccin a la Ingeniera del Software

Conceptos (i)
Proyecto

Actividad
producido por
Producto

consume
Recursos

Tarea

Participante

Sistema
Modelo
Documento

Ing. Willian Zamalloa Paro DAI-UNSAAC

Tiempo
Equipamiento
41

Ingeniera del Software


Introduccin a la Ingeniera del Software

Conceptos (ii)

Proceso

Mtodo

Proporcionan el soporte automtico o semiautomtico para el proceso y para


los mtodos

Notacin

Indica cmo construir tcnicamente el software. Se incluyen tcnicas de


modelado y otras tcnicas descriptivas

Herramientas

Define el marco de trabajo y permite un desarrollo racional y oportuno de la


Ingeniera del Software

Conjunto de reglas grficas o textuales para la representacin de un modelo

Metodologa

Coleccin de mtodos para resolver un tipo de problemas


Descompone el proceso de desarrollo en actividades y proporciona los
mtodos adecuados para llevar a cabo dichas actividades
Ing. Willian Zamalloa Paro DAI-UNSAAC

42

Ingeniera del Software


Introduccin a la Ingeniera del Software

3. Proceso software

Ing. Willian Zamalloa Paro DAI-UNSAAC

43

Ingeniera del Software


Introduccin a la Ingeniera del Software

Introduccin (i)

Recapitulacin
del desarrollo
de software

Proceso

Conjunto de actividades
(Flujos de trabajo)

plantilla

Dominio
Aplicacin

requisitos
usuario

Proyecto

resultado

Producto
Artefactos

participante

Clientes
Usuarios
Ingenieros software Personas
..
.

Ing. Willian Zamalloa Paro DAI-UNSAAC

modelos
cdigo
manuales

..
.

44

Ingeniera del Software


Introduccin a la Ingeniera del Software

Introduccin (ii)

La Ingeniera del Software es una tecnologa multicapa


Herramientas
Mtodos
Proceso
Enfoque de calidad

El fundamento de la Ingeniera del Software es la capa proceso. El proceso de la

Ingeniera del Software es la unin que mantiene juntas las capas de tecnologa y
que permite un desarrollo racional y oportuno de la Ingeniera del Software
[Pressman, 2006]

Un proceso bien definido es necesario para desarrollar sistemas


software de manera repetible y predecible
Permite un negocio sostenible y que puede mejorar en cada nuevo

proyecto, incrementando la eficiencia y productividad de la


organizacin

G. Booch

Ing. Willian Zamalloa Paro DAI-UNSAAC

45

Ingeniera del Software


Introduccin a la Ingeniera del Software

Definicin de proceso software

Conjunto de actividades necesarias para transformar las ideas


iniciales del usuario, que desea automatizar un determinado
trabajo, en software
Conjunto de actividades y resultados asociados necesarios
para producir un producto software. Estas actividades son:
especificacin del software, desarrollo del software,
validacin del software y evolucin del software
[Sommerville, 2005]
Conjunto ordenado de actividades; una serie de pasos que
involucran tareas, restricciones y recursos que producen una
determinada salida esperada [Pfleeger, 2002]
Marco de trabajo de las tareas que se requieren para
construir software de alta calidad [Pressman, 2006]
Ing. Willian Zamalloa Paro DAI-UNSAAC

46

Ingeniera del Software


Introduccin a la Ingeniera del Software

Caractersticas de un proceso (i)

Cualquier proceso tiene las siguientes caractersticas [Pfleeger, 2002]

El proceso establece todas las actividades principales


El proceso utiliza recursos, est sujeto a una serie de restricciones y genera
productos intermedios y finales
El proceso puede estar compuesto de subprocesos que se encadenan de
alguna manera. Puede definirse como una jerarqua de procesos organizada
de modo que cada subproceso tenga su propio modelo de proceso
Cada actividad del proceso tiene criterios de entrada y de salida, de modo que
se conoce cundo comienza y cundo termina una actividad
Las actividades se organizan en secuencia de modo que resulta claro cuando
una actividad se realiza en orden relativo a otras actividades
Todo proceso tiene un conjunto de principios orientadores que explican las
metas de cada actividad
Las restricciones o controles pueden aplicarse a una actividad, recurso o
producto
Ing. Willian Zamalloa Paro DAI-UNSAAC

47

Ingeniera del Software


Introduccin a la Ingeniera del Software

Caractersticas de un proceso (ii)

Otras caractersticas que van a definir un proceso son

Comprensin

Visibilidad

Puede ajustarse a las necesidades de cambio de la organizacin

Rapidez

Se puede continuar a pesar de problemas inesperados

Capacidad de mantenimiento

Los errores del proceso se detectan antes de que se produzcan errores en el producto

Robustez

Es aceptable para todos los actores implicados

Confianza

Est soportado por herramientas CASE

Aceptacin

Se visualizan los progresos externamente

Soporte

Est definido y es comprensible

Con qu velocidad se producen los sistemas

Adaptacin

Capacidad que tiene un usuario del mismo de adaptarlo a sus necesidades


Ing. Willian Zamalloa Paro DAI-UNSAAC

48

Ingeniera del Software


Introduccin a la Ingeniera del Software

Importancia del proceso en el desarrollo del software (i)

Un proceso software debe especificar


La secuencia de actividades a realizar por el equipo de desarrollo

Los productos que deben crearse

Resultados del trabajo (modelos, documentos, datos informes...)


Qu y cundo

La asignacin de tareas a cada miembro del equipo y al equipo


como un todo
Los criterios para controlar el proceso

Flujo de actividades

Se establece el control de gestin de los proyectos software


Establecimiento de hitos

Las posibles heursticas

Ing. Willian Zamalloa Paro DAI-UNSAAC

49

Ingeniera del Software


Introduccin a la Ingeniera del Software

Importancia del proceso en el desarrollo del software (ii)

Facilita la gestin del proyecto


Establece una divisin del trabajo
Facilita la comunicacin de los miembros del equipo
Permite la reasignacin y la reutilizacin de personal
especializado

Mejora la productividad y el desarrollo

Transferencia entre proyectos


El desarrollo es reproducible

Establece el contexto en el que se aplican los mtodos


tcnicos
Gestiona el cambio adecuadamente
Asegura la calidad
Ing. Willian Zamalloa Paro DAI-UNSAAC

50

Ingeniera del Software


Introduccin a la Ingeniera del Software

4. Modelos de proceso software

Ing. Willian Zamalloa Paro DAI-UNSAAC

51

Ingeniera del Software


Introduccin a la Ingeniera del Software

Ciclo de vida del software (i)

Cuando un proceso implica la construccin de algn producto, suele


referirse al proceso como un ciclo de vida

El proceso de desarrollo de software suele denominarse ciclo de vida del


software

La evolucin del software representa el ciclo de actividades involucradas


en el desarrollo, uso y mantenimiento de sistemas software [Scacchi,
1987]
Los proyectos software se desarrollan en una serie de fases

Van desde la concepcin del software y su desarrollo inicial hasta su


puesta en funcionamiento y posterior retirada por otra nueva
generacin de software
Estas fases pueden ser

Temporales

Forman una secuencia en el tiempo

Lgicas

Cuando representan pasos o etapas que no constituyen una secuencia temporal


Ing. Willian Zamalloa Paro DAI-UNSAAC

52

Ingeniera del Software


Introduccin a la Ingeniera del Software

Ciclo de vida del software (ii)

Se puede definir ciclo de vida del software como (i)

Las distintas fases por las que pasa el software desde que nace una necesidad de
mecanizar un proceso hasta que deja de utilizarse el software que sirvi para ese
objetivo, pasando por las fases de desarrollo y explotacin [Frakes et al., 1991]
El perodo de tiempo que comienza cuando se concibe un producto software y
finaliza cuando el producto pierde su utilidad. El ciclo de vida del software incluye
las siguientes fases: fase de requisitos, fase de diseo, fase de realizacin, fase de
pruebas, fase de instalacin y aceptacin, fase de operacin y mantenimiento y,
algunas veces, fase de retirada [AECC, 1986]
Un marco de referencia que contiene los procesos, las actividades y las tareas
involucradas en el desarrollo, la explotacin y el mantenimiento de un producto de
software, abarcando la vida del sistema desde la definicin de requisitos hasta la
finalizacin de su uso [ISO/IEC, 1995]
Una aproximacin lgica a la adquisicin, el suministro, el desarrollo, la explotacin
y el mantenimiento del software IEEE Std 1074-1997 Standard for Developing
Software Life Cycle Processes [IEEE, 1999b]

Ing. Willian Zamalloa Paro DAI-UNSAAC

53

Ingeniera del Software


Introduccin a la Ingeniera del Software

Ciclo de vida del software (iii)

Se puede definir ciclo de vida del software como (ii)

El ciclo de vida del software consiste de las siguientes fases: anlisis de


requisitos, diseo, implementacin, prueba y mantenimiento. El proceso de
desarrollo tiende a una iteracin de estas fases ms que a un proceso lineal
[CERN, 1996]
El ciclo de vida del software usa el modelo de que un elemento software tiene
vida. Un elemento software tiene una fase de concepcin (una idea en una
mente de un usuario potencial), despus de una fase de gestacin (la fase de
desarrollo del software) hacia una fase de madurez (la revisin y correccin
de errores, o fase de mantenimiento), y finalmente la fase de retirada
[Leaney, 2004]

Se puede definir ciclo de desarrollo del software como

El perodo de tiempo que comienza con la decisin de desarrollar un producto


software y finaliza cuando se ha entregado ste. Este ciclo incluye, en
general, una fase de requisitos, una fase de diseo, una fase de implantacin,
una fase de pruebas, y a veces, una fase de instalacin y aceptacin [AECC,
1986]
Ing. Willian Zamalloa Paro DAI-UNSAAC

54

Ingeniera del Software


Introduccin a la Ingeniera del Software

Qu es un modelo de proceso software?

Un modelo de proceso software es una representacin abstracta de un


proceso software [Sommerville, 2005]
Hay varios modelos de procesos definidos en la bibliografa de Ingeniera
del Software
Cada modelo de proceso representa un proceso desde una perspectiva
particular, por lo que slo ofrece una informacin parcial sobre dicho
proceso
Los modelos de proceso genricos, tambin llamados paradigmas de
proceso

Presentan un proceso desde una perspectiva arquitectnica, es decir, ofrecen


un marco de definicin para el proceso, pero no detallan las actividades
especficas
No son descripciones definitivas de los procesos software, ms bien son
abstracciones tiles que se utilizan para explicar diferentes aproximaciones al
desarrollo del software
Ing. Willian Zamalloa Paro DAI-UNSAAC

55

Ingeniera del Software


Introduccin a la Ingeniera del Software

Razones para modelar un proceso

Cuando se pone por escrito una descripcin de un proceso, se da forma a


una comprensin comn de las actividades, recursos y restricciones
relacionados con el desarrollo del software
Ayuda al equipo de desarrollo a encontrar las inconsistencias, las
redundancias y las omisiones en el proceso y en las partes que lo
constituyen
El modelo debe reflejar las metas del desarrollo. A medida que se
construye el modelo el equipo de desarrollo evala las actividades
candidatas por su adecuacin para alcanzar dichas metas
Ayuda al equipo de desarrollo a comprender dnde debe adaptarse el
proceso
Los modelos de proceso de desarrollo de software incluyen los requisitos
del sistema como entrada y un producto entregado como salida
[Pfleeger, 2002]
Ing. Willian Zamalloa Paro DAI-UNSAAC

56

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo general de proceso en Ingeniera

Especificacin

Diseo

Comprobacin de que el sistema cumple las especificaciones requeridas

Instalacin

Construccin del sistema

Prueba

Elaboracin de un documento con el modelo del sistema

Fabricacin

Formulacin de los requisitos y restricciones del sistema

Entrega del sistema al cliente y garanta de que es operativo

Mantenimiento

Reparacin de los fallos que aparecen en el sistema

Ing. Willian Zamalloa Paro DAI-UNSAAC

57

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo general de proceso en Ingeniera de Software

En el proceso de construccin de sistemas


informticos se pueden distinguir tres fases
genricas

La definicin

El desarrollo

El mantenimiento

Ing. Willian Zamalloa Paro DAI-UNSAAC

58

Ingeniera del Software


Introduccin a la Ingeniera del Software

Fase de definicin

Se identifican los requisitos claves del sistema y del software


Se desarrolla

Un Anlisis de Sistemas

Se define el papel de cada elemento en el sistema automatizado de informacin,


incluyendo el que jugar el software

Un Anlisis de Requisitos

Se especifican todos los requisitos de usuario que el sistema tiene que satisfacer
Esta fase est orientada al QU

Qu informacin ha de ser procesada, qu funcin y rendimiento se desea, qu interfaces


han de establecerse, qu ligaduras de diseo existen y qu criterios de validacin se
necesitan para definir un sistema correcto

Existe un paso complementario: la planificacin del proyecto software

Se asignan los recursos


Se estiman los costes
Se planifican las tareas y el trabajo

Ing. Willian Zamalloa Paro DAI-UNSAAC

59

Ingeniera del Software


Introduccin a la Ingeniera del Software

Fase de desarrollo

Fase orientada al CMO


El primer paso de esta fase corresponde al Diseo del
Software

Se trasladan los requisitos del software a un conjunto de


representaciones que describen la estructura de datos,
arquitectura del software y procedimientos algortmicos que
permiten la construccin fsica de dicho software

Los otros dos pasos de la fase de desarrollo corresponden a


la Codificacin y a la Prueba del Software

Ing. Willian Zamalloa Paro DAI-UNSAAC

60

Ingeniera del Software


Introduccin a la Ingeniera del Software

Fase de mantenimiento

Mantenimiento correctivo

Mantenimiento adaptativo

Adaptaciones requeridas por la evolucin del entorno del software

Mantenimiento perfectivo

Correccin de errores

Las modificaciones debidas a los cambios de requisitos del usuario


para mejorar el sistema

Mantenimiento preventivo

Mejora de las caractersticas internas del producto para hacer ms


mantenible

Ing. Willian Zamalloa Paro DAI-UNSAAC

61

Ingeniera del Software


Introduccin a la Ingeniera del Software

Norma ISO 12207-1 (i)

En la norma ISO 12207-1 [ISO/IEC, 1995], las


actividades que se pueden realizar en el ciclo de vida del
software se agrupan en cinco procesos principales,
ocho procesos de soporte y cuatro procesos
generales, as como un proceso que permite adaptar el
ciclo de vida a cada caso concreto
Esta norma no fomenta o especifica ningn modelo
concreto de ciclo de vida, gestin del software o mtodo
de ingeniera, ni prescribe cmo realizar ninguna de las
actividades

Ing. Willian Zamalloa Paro DAI-UNSAAC

62

Ingeniera del Software


Introduccin a la Ingeniera del Software

Norma ISO 12207-1 (ii)


Procesos Principales
Adquisicin

Suministro

Procesos de Soporte
Documentacin
Gestin de la configuracin
Aseguramiento de la calidad
Verificacin

Desarrollo

Explotacin
Mantenimiento

Validacin
Revisin conjunta
Auditora

Resolucin de problemas

Procesos de la Organizacin
Gestin

Infraestructura

Mejora

Formacin

Ing. Willian Zamalloa Paro DAI-UNSAAC

63

Ingeniera del Software


Introduccin a la Ingeniera del Software

Norma ISO 12207-1 (iii)

Procesos principales: Son los que resultan tiles a las personas que
inician o realizan el desarrollo, la explotacin o el mantenimiento del
software durante su ciclo de vida

Proceso de adquisicin: Actividades y tareas que se realizan para


comprar un producto software
Proceso de suministro: Actividades y tareas que el suministrador
realiza
Proceso de desarrollo: Contiene las actividades de anlisis de
requisitos, diseo, codificacin, integracin, pruebas e instalacin y
aceptacin
Proceso de explotacin: Incluye la explotacin del software y el
soporte operativo a los usuarios
Proceso de mantenimiento: Aparece cuando el software necesita
modificaciones, ya sea en el cdigo o en la documentacin asociada,
debido a un error, una deficiencia, un problema o la necesidad de mejora
o adaptacin
Ing. Willian Zamalloa Paro DAI-UNSAAC

64

Ingeniera del Software


Introduccin a la Ingeniera del Software

Norma ISO 12207-1 (iv)

Procesos de soporte: Sirven de apoyo al resto y se aplican en cualquier


punto del ciclo de vida

Proceso de documentacin: Registra la informacin producida por un proceso o


actividad en el ciclo de vida
Proceso de gestin de la configuracin: Aplica ciertos procedimientos y
tcnicos durante todo el ciclo de vida del sistema
Proceso de aseguramiento de la calidad: Aporta la confianza de que los
procesos y los productos software del ciclo de vida cumplen los requisitos
especificados y se ajustan a los planes establecidos
Proceso de verificacin: Determina si los requisitos de un sistema o del
software estn completos y son correctos
Proceso de validacin: Sirve para determinar si el sistema o software final
cumple con los requisitos previstos para su uso
Proceso de revisin conjunta: Sirve para evaluar el estado del software y sus
productos en una actividad del ciclo de vida o una fase de un proyecto
Proceso de auditora: Permite determinar, en los hitos predeterminados, si se
han cumplido los requisitos, los planes y el contrato
Proceso de resolucin de problemas: Permite analizar y eliminar los problemas
descubiertos durante el desarrollo, explotacin, el mantenimiento u otro proceso
Ing. Willian Zamalloa Paro DAI-UNSAAC

65

Ingeniera del Software


Introduccin a la Ingeniera del Software

Norma ISO 12207-1 (v)

Procesos generales: Los emplea una organizacin para llevar a


cabo funciones tales como la gestin, la formacin del personal o la
mejora del proceso

Proceso de gestin: Actividades y tareas genricas que puede emplear


cualquier organizacin que tenga que gestionar sus procesos, incluyendo
planificacin, seguimiento y control, y revisin y evaluacin
Proceso de infraestructura: Establece la infraestructura necesaria para
cualquier otro proceso
Proceso de mejora: Sirve para establecer, valorar, medir, controlar y
mejorar los procesos del ciclo de vida del software
Proceso de formacin: Sirve para proporcionar y mantener al personal
formado

Ing. Willian Zamalloa Paro DAI-UNSAAC

66

Ingeniera del Software


Introduccin a la Ingeniera del Software

Norma ISO 12207-1 (vi)

Proceso de adaptacin: Sirve para realizar la adaptacin bsica de


la norma ISO-12207 con respecto a los proyectos software. Es
necesario comprender los procesos, las organizaciones y sus relaciones
bajo diferentes puntos de vista

Bajo el punto de vista del contrato, el comprador y el proveedor negocian y


firman un contrato, empleando los procesos de adquisicin y suministro
Bajo el punto de vista de gestin, el comprador, el proveedor, el
desarrollador, el operador y el personal de mantenimiento gestionan sus
respectivos procesos para el proyecto software
Bajo el punto de vista de explotacin, el operador proporciona el servicio
de explotacin del software a los usuarios
Bajo el punto de vista de ingeniera, el desarrollador o el personal de
mantenimiento llevan a cabo sus respectivas tareas de ingeniera para
producir o modificar los productos software
Bajo el punto de vista de soporte, los grupos (tales como el de la gestin
de la configuracin, el aseguramiento de la calidad...) proporcionan
servicios de apoyo a otros grupos en el cumplimiento de tareas nicas y
especficas
Ing. Willian Zamalloa Paro DAI-UNSAAC

67

Ingeniera del Software


Introduccin a la Ingeniera del Software

Tipos de modelos de procesos

Modelos lineales o secuenciales

Modelos basados en prototipos

Modelos basados en mtodos formales

Modelos evolutivos (iterativos e incrementales)

Modelos basados en reutilizacin

Ing. Willian Zamalloa Paro DAI-UNSAAC

68

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelos lineales o secuenciales

Han sido ampliamente utilizados

Ofrecen grandes facilidades a los gestores para controlar el progreso


de los proyectos
Proponen un enfoque sistemtico, secuencial, para el desarrollo del
software
Comienza en un nivel de sistemas y progresa con el anlisis, diseo,
codificacin, pruebas y mantenimiento
Fases separadas en la especificacin y el desarrollo

La filosofa de estos modelos de proceso no es realista

No se ajusta al proceso de desarrollo software


Raramente sigue un flujo secuencial sino que exige diversas
iteraciones
No ofrece un soporte adecuado a las tcnicas de desarrollo basadas
en objetos y componentes
Ing. Willian Zamalloa Paro DAI-UNSAAC

69

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo primitivo (i)

Se le conoce tambin con el nombre de Modelo Prueba y


Error o Modelo Codifica y Mejora
Proceso de desarrollo aplicado en las primeras experiencias
de programacin
Supone una iteracin de fases codificacin-depuracin sin
ninguna planificacin ni diseos previos

Codificacin
Prueba

Empezar a
codificar

Continuar
codificando

Comienza
el proyecto

Ing. Willian Zamalloa Paro DAI-UNSAAC

Final

Tiempo

70

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo primitivo (ii)

Inconvenientes

Cdigo pobremente estructurado tras varias iteraciones

Cdigo espagueti

Caro de desarrollar por las numerosas recodificaciones


Posible rechazo del usuario al no existir anlisis de requisitos
Caro de depurar por la falta de planificacin
Caro de mantener por la falta de estructura y documentacin

Ing. Willian Zamalloa Paro DAI-UNSAAC

71

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo clsico o en cascada (i)

Enunciado por W. Royce (1970)


Uno de los primeros modelos propuestos, derivado de otros
procesos de ingeniera
Recibe el nombre de en cascada porque las etapas se
representan cayendo en cascada desde una etapa a la
siguiente
Ha sido utilizado para prescribir las actividades de desarrollo
de software en varios contextos

Se encuentra definido en la norma Estndar 2167-A del DoD de EEUU

Ing. Willian Zamalloa Paro DAI-UNSAAC

72

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo clsico o en cascada (ii)

Fases secuenciales

Comienzo de una fase con el trmino de la anterior


Paso de fase al conseguir los objetivos
Obtencin de documentos como criterio de finalizacin de fase
El final de una fase puede suponer un punto de revisin

Apoyo a los gestores


Distintas configuraciones

Muchos modelos ms complejos son variaciones del modelo en


cascada que incorporan lazos de realimentacin y fases adicionales

Ing. Willian Zamalloa Paro DAI-UNSAAC

73

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo clsico o en cascada (iii)


Anlisis de
requisitos
Diseo del
sistema
Diseo del
programa
Codificacin
Pruebas
unitarias y de
integracin

Prueba
del sistema
Prueba
de aceptacin
Modelo en cascada [Pfleeger, 2002]

Operacin y
mantenimiento

Ing. Willian Zamalloa Paro DAI-UNSAAC

74

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo clsico o en cascada (iv)


Investigacin
preliminar
Anlisis

Especificacin de requisitos

Especificacin de diseo

Diseo

Codificacin

Mdulos implementados

Prueba

Mdulos
probados
Mantenimiento

Modelo en cascada con realimentacin


Ing. Willian Zamalloa Paro DAI-UNSAAC

Sistema funcionando
y actualizado
75

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo clsico o en cascada (v)

Inconvenientes

Su progresin secuencial o lineal no refleja la manera en que realmente se


desarrolla el software [Pfleeger, 2002; Pressman, 2006]
Es un modelo que adolece de rigidez [Pressman, 2006]

Se tarda mucho tiempo en pasar por todo el ciclo [Piattini et al., 2004]
Es un modelo monoltico [Pressman, 2006]

Exige al usuario que exponga explcitamente todos los requisitos al principio,


presentando problemas para gestionar la incertidumbre natural propia del comienzo
de la mayora de los proyectos

Hasta llegar a las etapas finales del desarrollo no habr una versin operativa del
programa, lo que influye negativamente en el descubrimiento a tiempo de errores o
incongruencias en los requisitos

Impone una estructura de gestin de proyecto al desarrollo del sistema


[McCracken y Jackson, 1981]
No trata al software como un proceso de resolucin de problemas [Curtis et
al., 1987]
Ing. Willian Zamalloa Paro DAI-UNSAAC

76

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo clsico o en cascada (vi)

Consideraciones finales

Tiene un lugar destacado en la Ingeniera del Software


Proporciona una plantilla para adecuar los mtodos
Es muy utilizado
Tiene problemas pero es mejor que desarrollar sin guas

Ing. Willian Zamalloa Paro DAI-UNSAAC

77

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo V

Es una variacin del modelo


en cascada que demuestra
cmo se relacionan las
actividades de prueba con
las de anlisis y desarrollo
[GMD, 1992]
Presenta una implantacin
ascendente
Demuestra que el
desarrollo de las pruebas se
efecta de manera sncrona
con el desarrollo del
programa
Mientras que el modelo
clsico centra su atencin
en los documentos y
artefactos producidos, el
modelo en V lo hace en la
actividad y la exactitud

Operacin y
mantenimiento

Validar requisitos

Anlisis

Diseo
Verificar diseo

Pruebas
de aceptacin

Pruebas de
integracin
y de sistema

Pruebas
unitarias

Codificacin

Aplicacin

Modelo V

Ing. Willian Zamalloa Paro DAI-UNSAAC

78

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelos basados en prototipos (i)

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

Es una solucin parcial que describe la interaccin entre el hombre y


la mquina, mostrando parte de su funcionalidad no optimizada

Los modelos de proceso basados en prototipos presentan un


componente iterativo que facilita involucrar a los
clientes/usuarios en el desarrollo del software para ayudar a
stos a comprender los requisitos

Ing. Willian Zamalloa Paro DAI-UNSAAC

79

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelos basados en prototipos (ii)

Estos modelos pueden presentar diferentes enfoques en la


utilizacin de los prototipos en el ciclo de vida

Enfoque desechable

Enfoque evolutivo

El propsito del prototipo es validar algn aspecto del sistema, sirviendo,


en este caso, como herramienta auxiliar a la especificacin de requisitos y
el diseo [Davis, 1982]
Este enfoque suele derivar en un modelo lineal una vez que el prototipo
ha cumplido su misin
El prototipo se utiliza como alternativa de ciclo de vida [Basili y Turner,
1975]
Es la base de los modelos de proceso evolutivos

Enfoque mixto

Conocido con el nombre de prototipado operativo [Davis, 1992]


Combina ambos tipos de prototipos
Ing. Willian Zamalloa Paro DAI-UNSAAC

80

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo de prototipos (i)

Basado en prototipos desechables

Idea del software en lneas generales desde


el punto de vista del usuario
Idealmente sirve para identificar los
requisitos del software

Construccin rpida y a bajo coste

Introduce cierta flexibilidad en la


introduccin de requisitos

Proceso iterativo

La iteracin ocurre cuando el prototipo se


pone a punto para satisfacer las necesidades
del cliente, permitiendo a la vez que el
desarrollador comprenda mejor lo que
necesita hacer

Obtencin de
requisitos

Diseo rpido

Construccin
del prototipo

Refinamiento
del prototipo

Evaluacin
del prototipo

Producto final
Modelo de prototipos

Ing. Willian Zamalloa Paro DAI-UNSAAC

81

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo de prototipos (ii)

Ventajas

Permite solventar objeciones del usuario

Sirve para formalizar la aceptacin


previa

Introduce flexibilidad en la captura de


requisitos

Por ejemplo puede combinarse con un


ciclo en cascada para intentar solventar
ciertas carencias de ste

Validar

Diseo del
sistema

Verificar

Diseo del
programa

Ayuda a combatir la rigidez de los


modelos lineales

Es til cuando el rea de aplicacin no


est definida, cuando el riesgo de
rechazo el alto, o como forma de
evaluar el impacto de una aplicacin
El prototipado es un subproceso que
puede incluirse como parte de otros
modelos de proceso

Anlisis de
requisitos

Prototipado

Codificacin
Pruebas
unitarias y de
integracin

Prueba
del sistema
Prueba
de aceptacin
Operacin y
mantenimiento

Modelo en cascada con prototipado [Pfleeger, 2002]

Ing. Willian Zamalloa Paro DAI-UNSAAC

82

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo de prototipos (iii)

Inconvenientes
El sistema se puede llegar a deteriorar tendiendo hacia el modelo
primitivo
Se suele refinar el prototipo hacia el sistema final en lugar de
desecharlo y empezar desde el principio
El cliente puede encontrar atractivo el prototipo y quedarse con el
prototipo como sistema final
Relajacin de los desarrolladores
No disminuye el tiempo entre la definicin de los requisitos y la
entrega del producto
Al usuario le desagrada que se deseche cdigo

Ing. Willian Zamalloa Paro DAI-UNSAAC

83

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelos basados en mtodos formales

Permiten especificar, desarrollar y verificar un sistema aplicando una


notacin matemtica
Algunas organizaciones de desarrollo de software aplican una variacin de
este enfoque, llamado ingeniera del software de sala limpia [Mills et
al., 1987; Dyer, 1992]
Ventajas

La ambigedad, lo incompleto y la inconsistencia se descubren y se corrigen


fcilmente
Los mtodos formales de diseo sirven como base para la verificacin de
programas
Sirven de base para la generacin automtica de cdigo

Barreras para su implantacin

El desarrollo es bastante caro y lleva mucho tiempo


El estudio de los mtodos es costoso
Es difcil establecer modelos formales como mecanismo de comunicacin con
los clientes
Ing. Willian Zamalloa Paro DAI-UNSAAC

84

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo de transformacin (i)

Usando un soporte automatizado se aplican una serie de


transformaciones para convertir una especificacin formal en
un sistema ejecutable [Balzer, 1981]
Intenta reducir la probabilidad de la existencia de errores
eliminndolos en las diferentes iteraciones de que consta el
proceso

En las iteraciones no se modifica el cdigo sino la especificacin


formal, obtenindose un cdigo que siempre se corresponde con la
especificacin

Inconvenientes

Poca aceptacin de los mtodos formales


No se dispone de transformaciones automticas ms que en pequeos
dominios y entornos
Ofrecen muy poca flexibilidad al usuario ante situaciones no
planificadas a priori
Ing. Willian Zamalloa Paro DAI-UNSAAC

85

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo de transformacin (ii)


Registro formal del desarrollo
Secuencia de transformaciones
con su justificacin

Transformacin
..

Especificacin
formal

Transformacin

Prueba

Transformacin

Requisitos
del sistema

Sistema
entregado
Comparar con los
requisitos. Actualizar
cuando se necesite

Modelo de transformacin, basado en [Pfleeger, 2002]


Ing. Willian Zamalloa Paro DAI-UNSAAC

86

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelos evolutivos (i)

El software, al igual que todos los sistemas complejos,


evolucionan con el tiempo [Gilb, 1988]
Se caracterizan porque permiten desarrollar versiones cada
vez ms completas del software, teniendo en cuenta la
naturaleza evolutiva del software
Presentan la filosofa de poner un producto en explotacin
cuanto antes

Estn muy ligados a la idea de prototipado evolutivo

Existen muchos modelos de proceso evolutivos


Los modelos evolutivos son iterativos [Pressman, 2006]

Se caracterizan por la forma en que permiten a los ingenieros de


software desarrollar versiones cada vez ms completas del producto
software, que puede ir entregndose al cliente en forma de
incrementos
Ing. Willian Zamalloa Paro DAI-UNSAAC

87

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelos evolutivos (ii)

Los desarrollos orientados a objetos se ajustan a un modelo de proceso


iterativo e incremental
Se puede argumentar lo mismo para los desarrollos basados en
componentes
Esto es as porque

Las tareas de cada fase se llevan a cabo de una forma iterativa


A la vez que existe un ciclo de desarrollo anlisis-diseo-implementacinanlisis que permite hacer evolucionar al sistema
En el desarrollo incremental el sistema se divide en un conjunto de particiones

Cada una se desarrolla de forma completa hasta que se finaliza el sistema

Esta idea de iteratividad mxima propia de la orientacin a objetos ha


sido equiparada por autores como James Rumbaugh (1992) o L. B. S.
Raccoon (1995) a las fractales o la teora del caos

Ing. Willian Zamalloa Paro DAI-UNSAAC

88

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo incremental (i)

En este modelo, el sistema, tal y como est especificado en la


especificacin de requisitos del software, se divide en
subsistemas de acuerdo a su funcionalidad
Las versiones se definen comenzando con un subsistema
funcional pequeo y agregando funcionalidad con cada nueva
versin

Cada nueva parte entregada se denomina incremento

Combina elementos del modelo en cascada con la filosofa


interactiva de construccin de prototipos
Aplica secuencias lineales de forma escalonada mientras
progresa el calendario del proyecto

Cada secuencia lineal supone un incremento [McDermid y Rook, 1993]


Ing. Willian Zamalloa Paro DAI-UNSAAC

89

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo incremental (ii)


Incremento 1

Anlisis

Diseo

Cdigo

Entrega del
primer incremento

Prueba

Incremento 2

Anlisis

Diseo

Cdigo

Prueba

Entrega del
segundo incremento

Incremento 3

Anlisis

Diseo
..

Cdigo

Prueba

Entrega del
tercer incremento

Tiempo de calendario

Modelo incremental [Pressman, 2006]


Ing. Willian Zamalloa Paro DAI-UNSAAC

90

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo iterativo (i)

Entrega un sistema completo desde el principio, para posteriormente


cambiar la funcionalidad de cada subsistema con cada versin
Caractersticas del ciclo iterativo [Muller, 1997]

Se basa en la evolucin de prototipos ejecutables, mensurables y evaluables


Se van incorporando cambios en cada iteracin
Exige ms atencin e implicacin de todos los actores del proyecto

Minicascada

Cada iteracin reproduce el ciclo de vida en cascada, pero a una escala menor
Los objetivos de cada iteracin se establecen en funcin de la evaluacin de
las iteraciones precedentes
Las fases tradicionales se cubre gradualmente en las diversas iteraciones
Las actividades internas se solapan porque dentro de una iteracin no
necesitan terminarse de golpe, siendo la transicin entre dos actividades
progresiva

Ing. Willian Zamalloa Paro DAI-UNSAAC

91

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo iterativo (ii)

Planificacin

Anlisis

Anlisis
Diseo

Diseo

N veces

Codificacin

Codificacin

Evaluacin

Integracin

Fases

Entrega

Transicin
progresiva

Ing. Willian Zamalloa Paro DAI-UNSAAC

92

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo iterativo (iii)

Evaluacin de las iteraciones

Deben definirse criterios de evaluacin de las iteraciones


Una iteracin se marca por etapas intermedias que permitan medir los
progresos. Debe haber al menos dos etapas

Revisin inicial: fija los objetivos y criterios de la iteracin


Revisin de evaluacin: valida los resultados

Mitos sobre el ciclo de vida iterativo [Muller, 1997]

El ciclo de vida iterativo favorece los apaos


El ciclo de vida iterativo engendra problemas
El ciclo de vida iterativo e incremental exige recomenzar n veces hasta que el
resultado sea el adecuado
El ciclo de vida iterativo es una excusa para no planificar y gestionar un
proyecto
El ciclo de vida iterativo slo concierne a los desarrolladores
El ciclo de vida iterativo favorece siempre aadir nuevas necesidades, sin fin
Ing. Willian Zamalloa Paro DAI-UNSAAC

93

Ingeniera del Software


Introduccin a la Ingeniera del Software

Incremental vs. iterativo


Desarrollo incremental: sistema parcial, funcionalidad completa

Desarrollo iterativo: sistema completo; funcionalidad parcial

Ing. Willian Zamalloa Paro DAI-UNSAAC

94

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo en espiral (i)

Los grandes sistemas se componen por regla general de subsistemas


No tiene porque ser aplicable el mismo modelo de proceso a todos los
subsistemas

Prototipado para las especificaciones de alto riesgo


Modelo lineal para los desarrollos claros

El modelo en espiral propuesto por Boehm (1986) es un modelo hbrido


que incluye estos aspectos

Combina la naturaleza iterativa de construccin de prototipos con los aspectos


controlados y sistemticos del modelo lineal
Se introduce el anlisis de riesgos

No se fijan fases

Riesgo es toda circunstancias potencialmente adversa que puede afectar a un


proceso de desarrollo o a la calidad de los productos [Ghezzi et al., 1991]
Las fases las decide el gestor del proyecto

El software se desarrolla en una serie de versiones incrementales


El modelo se divide en sectores de tareas

Pueden existir entre tres y seis regiones de tareas


Ing. Willian Zamalloa Paro DAI-UNSAAC

95

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo en espiral (ii)


En el modelo original de Boehm (1986) aparecen cuatro regiones de tareas

Planificacin, Anlisis de riesgos, Ingeniera, Evaluacin del cliente


Mo del o eN ESPIRAL
PLANIFICACIN

ANLISIS DE RIESGO

Determinar los
objetivos,
alternativas y
restricciones

REVISIN

Anlisis
de riesgo
Anlisis
de riesgo
Anlisis
de riesgo
Anlisis
ProtoPrototipo 3
Planifica- de riesgo
tipo 2
Prototipo
1
cin
Simulaciones,
modelos,
Plan de requisitos
Concepcin
de
Planificacin del
os
Ciclo de vida la operacin
isit re
qu ftwa
e
Diseo del
R l so
e
d
software
Plan de
Validacin de
desarrollo

Plan para las


nuevas fases

Evaluacin de
alternativas
Identificar y
resolver riesgos

Integracin y
plan de pruebas

Prototipo
operativo
pruebas

Diseo
detallado

requisitos

Codificacin
y
n

i
c
Pruebas
Desarrollo,
a
Valid acin de
unitarias
c
i
f
i
verificacin
r
e
v
sitos
Pruebas de
y produccin
requi
Pruebas de integracin
del siguiente
Imp
aceptacin
lant
nivel
aci
n

EVALUACIN DEL CLIENTE

Ing. Willian Zamalloa Paro DAI-UNSAAC

INGENIERA

96

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo en espiral (iii)

En [Pressman, 2006] se presenta una variante con seis regiones de tareas

Comunicacin con el cliente, Planificacin, Anlisis de riesgos, Ingeniera,


Construccin y adaptacin, Evaluacin del cliente

Ciclo de vida en espiral [Pressman, 2006]


Ing. Willian Zamalloa Paro DAI-UNSAAC

97

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo en espiral (iv)

Progresin de la espiral

Se progresa a partir del centro de la espiral en el sentido de las agujas


del reloj

Cada paso de la regin de planificacin produce ajustes en el plan del


proyecto

Desarrollo de una especificacin de productos


Desarrollo de un prototipo
Desarrollo de versiones ms sofisticadas del software

El coste y la planificacin se ajustan segn la reaccin ante la evaluacin


del cliente
El gestor del proyecto ajusta el nmero planificado de iteraciones
requeridas para completar el software

Presenta un enfoque realista del desarrollo de sistemas y de software


a gran escala

Segn progresa el proceso, el desarrollador y el cliente comprenden y


reaccionan mejor ante riesgos en cada uno de los niveles evolutivos
Ing. Willian Zamalloa Paro DAI-UNSAAC

98

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo en espiral (v)

Ventajas

Refleja de forma ms realista la idiosincrasia del desarrollo de software


Toma lo mejor y evita lo peor de los dems modelos, segn la situacin en
cada momento
Las opciones de reutilizacin se tienen en cuenta desde el primer momento
Proporciona una preparacin para la evolucin, crecimiento y cambio
Proporciona un mecanismo para incorporar objetivos de calidad en el
desarrollo
Se centra en la eliminacin de errores y opciones no atractivas desde el
principio
Determina el nivel de esfuerzo de cada fase en cada proyecto
Se sigue el mismo procedimiento para el desarrollo que para el
mantenimiento, con lo que se evitan los problemas de las mejoras rutinarias
de alto riesgo
Permite una gran flexibilidad
Se adapta bien al diseo y programacin orientado a objetos
Ing. Willian Zamalloa Paro DAI-UNSAAC

99

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo en espiral (vi)

Inconvenientes

No ha sido desarrollado en el mundo de la contratacin comercial sino


en el de desarrollo interno

Puede resultar difcil convencer a grandes clientes de que el enfoque


evolutivo es controlable

Necesita experiencia en la evaluacin de riesgos, expertos, que no


siempre estn disponibles
Necesita una elaboracin adicional de los pasos del modelo

Ing. Willian Zamalloa Paro DAI-UNSAAC

100

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelo en espiral (vii)

Diferencias con otros modelos [Wolff, 1989]

Existe un reconocimiento explcito de las diferentes alternativas para


alcanzar los objetivos del proyecto
El modelo se centra en identificar los riesgos de cada alternativa, as
como las formas de solventarlos
La divisin de los proyectos en ciclos, cada uno con un acuerdo al
final, implica que existe un acuerdo para los cambios a realizar o para
la finalizacin del mismo, en funcin de lo aprendido a lo largo del
proyecto
Es un mtodo que se adapta a cualquier tipo de actividad, alguna de
las cuales no existen en otros paradigmas, como puede ser la consulta
a asesores externos

Ing. Willian Zamalloa Paro DAI-UNSAAC

101

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelos basados en reutilizacin (i)

Esta aproximacin se basa en la existencia de un nmero significativo de


elementos reutilizables
El proceso de desarrollo del sistema se centra en la integracin de estos
elementos en un sistema, en lugar de desarrollarlo desde cero
Incorpora muchas caractersticas del modelo en espiral

Es evolutivo por naturaleza [Nierstrasz, 1992] y existe un enfoque iterativo


para la creacin de software

El proceso software tiende a estructurarse en dos subprocesos distintos y


separados [Karlsson, 1995]

El desarrollo para reutilizacin

Construccin de elementos reutilizables dentro de un dominio concreto

El desarrollo con reutilizacin

Construccin de aplicaciones utilizando elementos reutilizables

Ing. Willian Zamalloa Paro DAI-UNSAAC

102

Ingeniera del Software


Introduccin a la Ingeniera del Software

Modelos basados en reutilizacin (ii)


Buscar
elementos en
biblioteca

Planificacin
Anlisis de
riesgos

Comunicacin
con el cliente

Identificar
elementos
candidatos

Integrar en
el sistema

Evaluacin
del cliente
Construccin
y adaptacin
de la ingeniera

Extraer
elementos si
existen

Adaptar
elementos si
es necesario

Desarrollar
elementos si
no existen

Poner nuevos
elementos en
biblioteca
Desarrollo con reutilizacin
Desarrollo para reutilizacin
Ing. Willian Zamalloa Paro DAI-UNSAAC

103

Ingeniera del Software


Introduccin a la Ingeniera del Software

5. Metodologas

Ing. Willian Zamalloa Paro DAI-UNSAAC

104

Ingeniera del Software


Introduccin a la Ingeniera del Software

Introduccin (i)
Resulta necesario establecer un enfoque sistemtico y
disciplinado para llevar a cabo un desarrollo software
El uso de una metodologa permite el dominio del proceso
descrito
Una metodologa es el conjunto de mtodos que se siguen en

una investigacin cientfica o en una exposicin doctrinal

[RAE, 2001]
Una metodologa software es un enfoque, una manera de
interpretar la realidad o la disciplina en cuestin, que en este
caso particular correspondera a la Ingeniera del Software
Se elaboran a partir del marco definido por uno o varios
ciclos de vida
No existe un consenso entre los diversos autores sobre el
concepto de metodologa
Ing. Willian Zamalloa Paro DAI-UNSAAC

105

Ingeniera del Software


Introduccin a la Ingeniera del Software

Introduccin (ii)

Desde una perspectiva de Ingeniera de Software, una


metodologa

Describe cmo se organiza un proyecto


Establece el orden en el que la mayora de las actividades tienen que
realizarse y los enlaces entre ellas
Indica cmo tienen que realizarse algunas tareas proporcionando las
herramientas concretas e intelectuales

Con una metodologa se intentan cubrir las siguientes


necesidades [Piattini et al., 2004]

Mejores aplicaciones
Mejor proceso de desarrollo
Establecer un proceso estndar en una organizacin

Ing. Willian Zamalloa Paro DAI-UNSAAC

106

Ingeniera del Software


Introduccin a la Ingeniera del Software

Definiciones (i)

Conjunto de filosofas, fases, procedimientos, reglas, tcnicas,


herramientas, documentacin y aspectos de formacin para los
desarrolladores de sistemas de informacin. Segn esto, una metodologa
es un conjunto de componentes que especifican: Cmo dividir un proyecto
en etapas; Qu tareas se llevarn a cabo en cada etapa; Qu salidas se
producen y cundo deben producirse; Qu restricciones se aplican; Qu
herramientas van a ser utilizadas; Cmo se gestiona y se controla el proyecto
[Maddison, 1983]
Una metodologa es una aproximacin organizada y sistemtica para el
ciclo de vida del sistema o sus partes. Especifica las tareas individuales y
sus secuencias [Palvia y Nosek, 1993]
Conjunto de procedimientos, tcnicas, herramientas y un soporte
documental que ayuda a los desarrolladores a realizar nuevo software
[Piattini et al., 2004]

Ing. Willian Zamalloa Paro DAI-UNSAAC

107

Ingeniera del Software


Introduccin a la Ingeniera del Software

Definiciones (ii)

Se puede definir metodologa de Ingeniera del


Software como
Un proceso para producir software de forma organizada,
empleando una coleccin de tcnicas y convenciones de
notacin predefinidas [Rumbaugh et al., 1991]

Confusin entre los trminos metodologa, mtodo y ciclo de


vida por abuso del lenguaje tcnico

Una metodologa puede seguir uno o varios modelos de ciclo de vida,


esto es, el ciclo de vida indica qu es lo que hay que obtener a lo
largo del desarrollo del proyecto, pero no cmo. Esto s lo debe indicar
la metodologa
Una metodologa es un concepto ms amplio que el de mtodo. As,
se puede considerar a la metodologa como un conjunto de mtodos
Ing. Willian Zamalloa Paro DAI-UNSAAC

108

Ingeniera del Software


Introduccin a la Ingeniera del Software

Objetivos de las metodologas

Establecer los requisitos de un sistema software de una


forma acertada
Proporcionar un mtodo sistemtico de desarrollo de forma
que se pueda controlar su proceso
Construir un sistema software dentro de un tiempo apropiado
y unos costes aceptables
Construir un sistema que est bien documentado y que sea
fcil de mantener
Ayudar a identificar, lo antes posible, cualquier cambio que
sea necesario realizar dentro del proceso de desarrollo
Proporcionar un sistema que satisfaga a todas las personas
afectadas por el mismo
[Piattini et al., 2004]

Ing. Willian Zamalloa Paro DAI-UNSAAC

109

Ingeniera del Software


Introduccin a la Ingeniera del Software

Caractersticas deseables en una metodologa

Una metodologa debe cubrir [Henderson-Sellers y Firesmith, 1999]

Un proceso de ciclo de vida completo, que comprenda aspectos tanto del


negocio como tcnicos
Un conjunto completo de conceptos y modelos que sean internamente
consistentes
Una coleccin de reglas y guas
Una descripcin completa de artefactos a desarrollar
Una notacin con la que trabajar, idealmente soportada por diversas
herramientas CASE y diseada para una usabilidad ptima
Un conjunto de tcnicas probadas
Un conjunto de mtricas, junto con asesoramiento sobre calidad, estndares y
estrategias de prueba
Identificacin de los roles organizacionales
Guas para la gestin de proyectos y aseguramiento de la calidad
Asesoramiento para la gestin de bibliotecas y reutilizacin

Ing. Willian Zamalloa Paro DAI-UNSAAC

110

Ingeniera del Software


Introduccin a la Ingeniera del Software

Clasificacin de la metodologas

Estructuradas

Orientadas a procesos
Orientadas a datos

Orientadas a estados y transiciones


Orientadas al diseo del conocimiento
Orientadas a objetos
Orientadas al desarrollo de sistemas hipermediales
Basadas en mtodos formales

Ing. Willian Zamalloa Paro DAI-UNSAAC

111

Ingeniera del Software


Introduccin a la Ingeniera del Software

Metodologas estructuradas

Proponen la creacin de modelos del sistema que


representan los procesos, los flujos y la estructura de los
datos de una manera descendente
Se pasa de una visin general del problema, nivel de
abstraccin alto, a un nivel de abstraccin sencillo
Esta visin se puede enfocar

Hacia un punto de vista funcional del sistema

Metodologas orientadas a procesos

Hacia la estructura de datos

Metodologas orientadas a datos

Ing. Willian Zamalloa Paro DAI-UNSAAC

112

Ingeniera del Software


Introduccin a la Ingeniera del Software

Metodologas orientadas a procesos

La Ingeniera del Software se fundamenta en el modelo bsico


entrada/proceso/salida de un sistema
Estas metodologas se enfocan fundamentalmente en la parte de proceso
Utilizan un enfoque de descomposicin descendente para evaluar los procesos del
espacio del problema y los flujos de datos con los que estn conectados
Este tipo de metodologas se desarroll a lo largo de los aos 70
Representantes de este grupo son las metodologas de anlisis y diseo
estructurado como

Merise [Tardieu et al., 1986]


YSM (Yourdon Systems Method) [Yourdon Inc., 1993]
SSADM (Structured Systems Analysis and Design Method) [Ashworth y Goodland,
1990]
METRICA v.2.1 [MAP, 1995]
METRICA v3.0 (Parcialmente) [MAP, 2001]

Ing. Willian Zamalloa Paro DAI-UNSAAC

113

Ingeniera del Software


Introduccin a la Ingeniera del Software

Metodologas orientadas a datos

Estas metodologas se centran ms la parte de entrada/salida


Las actividades de anlisis comienzan evaluando en primer lugar los datos
y sus interrelaciones para determinar la arquitectura de datos subyacente
Cuando esta arquitectura est definida, se definen las salidas a producir y
los procesos y entradas necesarios para obtenerlas
Representantes

JSP (Jackson Structured Programming) [Jackson, 1975]


JSD (Jackson Structured Design) [Jackson, 1983]
LCP (Logical Construction Program) [Warnier, 1974]
DESD (Desarrollo de Sistemas Estructurados de Datos), tambin conocido
como metodologa Warnier-Orr [Orr, 1977]

Ing. Willian Zamalloa Paro DAI-UNSAAC

114

Ingeniera del Software


Introduccin a la Ingeniera del Software

Orientadas a estados y transiciones

Estn dirigidas a la especificacin de

Sistemas en tiempo real


Sistemas que tienen que reaccionar continuamente a estmulos
internos y externos (eventos o sucesos)

Representantes

Extensiones de las metodologas de anlisis y diseo estructurado de


Ward y Mellor (1985) y de Hatley y Pirbhai (1987)

Ing. Willian Zamalloa Paro DAI-UNSAAC

115

Ingeniera del Software


Introduccin a la Ingeniera del Software

Orientadas al diseo del conocimiento

Aproximacin que se encuentra an en una fase temprana de


desarrollo
Utiliza tcnicas y conceptos de Inteligencia Artificial para
especificar y generar sistemas de informacin
Representantes

KADS (Knowledge Acquisition and Development Systems) [Wielinga


et al., 1991]
IDEAL [Gmez et al., 1998]

Ing. Willian Zamalloa Paro DAI-UNSAAC

116

Ingeniera del Software


Introduccin a la Ingeniera del Software

Orientadas a objetos (i)

Se fundamentan en la integracin de los dos aspectos de los


sistemas de informacin: datos y procesos
En este paradigma un sistema se concibe como un conjunto
de objetos que se comunican entre s mediante mensajes
El objeto encapsula datos y operaciones

Este enfoque permite un modelado ms natural del mundo real y


facilita enormemente la reutilizacin del software

Las metodologas orientadas a objetos acortan la distancia


existente entre el espacio de conceptos (lo que los expertos o
usuarios conocen) y el espacio de diseo e implementacin

Ing. Willian Zamalloa Paro DAI-UNSAAC

117

Ingeniera del Software


Introduccin a la Ingeniera del Software

Orientadas a objetos (ii)

Gran cantidad de representantes

Metodologas dirigidas por los datos

Metodologas dirigidas por las responsabilidades

RDD (Responsibility Driven Design) [Wirfs-Brock et al., 1990]


OBA (Object Behavior Analysis) [Rubin y Goldberg, 1992]

Metodologas dirigidas por los casos de uso

OMT (Object Modeling Technique) [Rumbaugh et al., 1991]


Fusion [Coleman et al., 1994]

Objectory [Jacobson et al., 1992]


Proceso Unificado [Jacobson et al., 1999]

Metodologas dirigidas por estados

Metodologa de Shlaer y Mellor [Shlaer y Mellor, 1992]

Ing. Willian Zamalloa Paro DAI-UNSAAC

118

Ingeniera del Software


Introduccin a la Ingeniera del Software

Orientadas a objetos (iii)

Evolucin de las metodologas OO


Metodologas de primera generacin
RDD

Objectory

OMT

Booch (91)

Unificacin,
Estandarizacin
UML

Mtricas

Metodologas de
segunda generacin
OMT 2

Lenguajes
Formales

Fusion

Metodologas de
tercera generacin

Syntropy
Moses

MEDEA

OPEN

UP

Booch (94)
Ing. Willian Zamalloa Paro DAI-UNSAAC

119

Ingeniera del Software


Introduccin a la Ingeniera del Software

Orientadas a objetos (iv)

Metodologas estructuradas vs. Metodologas OO (i)

PROCESOS

Anlisis

DATOS

DFD

DER

Diseo
STD

RELACIONAL

Ing. Willian Zamalloa Paro DAI-UNSAAC

Implementacin
PROGRAMA

TABLAS

120

Ingeniera del Software


Introduccin a la Ingeniera del Software

Orientadas a objetos (v)


Metodologas estructuradas vs. Metodologas OO (ii)

Anlisis

Diseo

Implementacin

OBJETOS

Ing. Willian Zamalloa Paro DAI-UNSAAC

121

Ingeniera del Software


Introduccin a la Ingeniera del Software

Orientadas a objetos (vi)

Metodologas estructuradas vs. Metodologas OO (iii)


Por Elaboracin

DISEO

ANLISIS

Por Transformacin
Ing. Willian Zamalloa Paro DAI-UNSAAC

122

Ingeniera del Software


Introduccin a la Ingeniera del Software

Orientadas al desarrollo de sistemas hipermediales (i)

Pretenden sistematizar la creacin de aplicaciones Web


dentro de un proceso de creacin de software bien definido
Muchas de estas aproximaciones adolecen de tratar de forma
separada los aspectos hipermediales de los meramente
funcionales

Esto dificulta el afrontar el problema del desarrollo de aplicaciones


Web dentro de un contexto uniforme

No obstante, salvando estas soluciones parciales, se tiene


ampliamente asumido que los sitios Web tradicionales estn
evolucionando de meros almacenes de informacin
hipermedia a aplicaciones hipermedia distribuidas,
comnmente denominadas aplicaciones Web [Baresi et al.,
2000]
Ing. Willian Zamalloa Paro DAI-UNSAAC

123

Ingeniera del Software


Introduccin a la Ingeniera del Software

Orientadas al desarrollo de sistemas hipermediales (ii)

Se han definido diversas propuestas metodolgicas para la construccin


de aplicaciones Web

Proponen diferentes pasos y actividades


Algunas se centran slo en el diseo o en la representacin visual, mientras
que otras cubren todo el proceso de desarrollo de una aplicacin Web
Todas prescriben diferentes tcnicas y notaciones
Algunas estn soportados por herramientas

Representantes

HDM (Hypermedia Design Model) [Garzotto et al., 1993]


HFPM (Hypermedia Flexible Process Modeling) [Olsina, 1998]
OOHDM (Object-Oriented Hypermedia Design Method) [Rossi, 1996]
OOH-Method [Gmez et al., 2000]
OOWS (Object-Oriented Web-Solutions) [Pastor et al., 2001a]
WSDN (Web Site Design Method) [De Troyer y Leune, 1997]

Ing. Willian Zamalloa Paro DAI-UNSAAC

124

Ingeniera del Software


Introduccin a la Ingeniera del Software

Basadas en mtodos formales

Implican una revolucin en los procedimientos de desarrollo,


ya que a diferencia de todas las anteriores
Se basan en teoras matemticas que permiten una
verdadera aproximacin cientfica y rigurosa al desarrollo de
sistemas de informacin y software asociado
Representantes

OO-Method [Pastor et al., 2001b]

Ing. Willian Zamalloa Paro DAI-UNSAAC

125

Ingeniera del Software


Introduccin a la Ingeniera del Software

Metodologas giles (i)

Los sistemas web caracterizados, entre otras cosas, por su


presin temporal priorizan el cundo sobre el qu como sucede
en las aplicaciones tradicionales
Esta reduccin del ciclo de desarrollo del software, sin
perder calidad ni capacidad de evolucin y de mantenimiento,
es uno de los retos a los que se enfrenta la Ingeniera Web

A los procesos software que intentan dar solucin a estas


circunstancias se les conoce con el nombre de procesos
giles o procesos ligeros

Ing. Willian Zamalloa Paro DAI-UNSAAC

126

Ingeniera del Software


Introduccin a la Ingeniera del Software

Mtodos giles (ii)

Las aproximaciones giles emplean procesos tcnicos y de gestin que


continuamente se adaptan y se ajustan a [Turk et al., 2002]

La agilidad en el desarrollo del software no significa nicamente poner en


el mercado o en explotacin los productos software ms rpidamente

Cambios derivados de las experiencias ganadas durante el desarrollo


Cambios en los requisitos
Cambios en el entorno de desarrollo

Esto choca frontalmente con los modelos de procesos tradicionales que son
monolticos y lentos, centrados en una nica iteracin o ciclo de larga
duracin

Diversas aproximaciones

XP (eXtreme Programming) [Beck, 2000], que ha originado toda una corriente


de desarrollo extremo

Ing. Willian Zamalloa Paro DAI-UNSAAC

127

Ingeniera del Software


Introduccin a la Ingeniera del Software

eXtreme Programming (i)

Nuevo y controvertido enfoque de desarrollo de software basado en el


modelo incremental
Est indicado para

Equipos de tamao mediano o pequeo


Requisitos imprecisos y cambiantes

Caractersticas

El juego de la planificacin
Versiones pequeas
Metfora
Diseo sencillo
Hacer pruebas
Refactorizacin
Programacin en parejas
Propiedad colectiva
Integracin continua
Cliente in-situ
Estndares de codificacin
Ing. Willian Zamalloa Paro DAI-UNSAAC

128

Ingeniera del Software


Introduccin a la Ingeniera del Software

eXtreme Programming (ii)

Segn Beck (2000) la Programacin Extrema descansa sobre cuatro valores

Comunicacin
Sencillez
Realimentacin
Valenta

La Programacin Extrema se diferencia de otros mtodos en [Beck, 2000]

Su inmediata, concreta y continua realimentacin de los ciclos cortos


Su enfoque de planificacin incremental, que rpidamente plantea un plan global que se
espera que evolucione a lo largo de la vida del proyecto
Su capacidad para programar de forma flexible la implementacin de las
funcionalidades, respondiendo a las necesidades cambiantes de los negocios
Su confianza en las pruebas automatizadas, escritas por los programadores y los
clientes para controlar el progreso del desarrollo, para permitir la evolucin del sistema
y captar los defectos lo antes posible
Su confianza en la comunicacin oral, las pruebas y el cdigo fuente para comunicar la
estructura e intencin del sistema
Su confianza en el proceso de diseo evolutivo que perdura mientras perdura el sistema
Su confianza en la colaboracin estrecha entre programadores con habilidades normales
Su confianza en las prcticas que funcionan tanto con los instintos a corto plazo de los
programadores como con los intereses a largo plazo del proyecto
Ing. Willian Zamalloa Paro DAI-UNSAAC

129

Ingeniera del Software


Introduccin a la Ingeniera del Software

eXtreme Programming vs. Proceso Unificado (i)

Detractores del Proceso Unificado

Argumentan, en favor de las aproximaciones giles en general y de la


Programacin Extrema en particular, que el Proceso Unificado es un
proceso pesado que obliga a hacer gran cantidad de actividades
intiles y antinaturales

Seguidores del Proceso Unificado

El Proceso Unificado es un marco de trabajo abierto y flexible con un


modelo de proceso riguroso, que se puede adaptar al proceso de
desarrollo que se necesite, pero sin caer en el caos al que invita la
Programacin Extrema per se [Kruchten, 2001]

Ing. Willian Zamalloa Paro DAI-UNSAAC

130

Ingeniera del Software


Introduccin a la Ingeniera del Software

eXtreme Programming vs. Proceso Unificado (ii)

El Proceso Unificado puede adaptarse para incluir algunas de


las prcticas de la Programacin Extrema, pero no son
propuestas idnticas en ningn caso
El Proceso Unificado permite construir procesos para dar
soporte a proyectos que estn fuera del alcance la
Programacin Extrema, tanto por su escala como por su tipo
El Proceso Unificado es un proceso pesado por la completa
descripcin de una familia de procesos, que pueden ser tanto
ligeros como pesados, mientras que la Programacin Extrema
es totalmente ligera porque pone su nfasis en la
implementacin, implicando que las cosas hay que
descubrirlas, inventarlas o definirlas ad hoc
[Smith, 2001]
Ing. Willian Zamalloa Paro DAI-UNSAAC

131

Ingeniera del Software


Introduccin a la Ingeniera del Software

6. Proceso Unificado

Ing. Willian Zamalloa Paro DAI-UNSAAC

132

Ingeniera del Software


Introduccin a la Ingeniera del Software

Introduccin (i)
El Proceso Unificado es ms que un simple proceso [Jacobson
et al., 1999], es un marco de trabajo genrico que puede
especializarse para una gran variedad de sistemas software,
para diferentes reas de aplicacin, diferentes tipos de
organizaciones, diferentes niveles de aptitud y diferentes
tamaos de proyectos

Caractersticas generales

Est basado en componentes


Utiliza UML [Booch et al., 1999; OMG, 2003]

Caractersticas principales [Jacobson et al., 1999]

Es un proceso conducido por casos de uso


Est centrado en la arquitectura
Es iterativo e incremental
Ing. Willian Zamalloa Paro DAI-UNSAAC

133

Ingeniera del Software


Introduccin a la Ingeniera del Software

Introduccin (ii)
Un marco de trabajo genrico

No existe un proceso universal


Puede extenderse y especializarse para una gran variedad de sistemas
de software

Flexibilidad
Est basado en componentes

Permite gran variedad de estrategias de ciclo de vida

Se pueden definir diferentes conjuntos de productos


Se pueden definir actividades y encargados de las mismas

Ing. Willian Zamalloa Paro DAI-UNSAAC

134

Ingeniera del Software


Introduccin a la Ingeniera del Software

Introduccin (iii)

Selecciona qu artefactos producir


Define actividades y stakeholders
Modela conceptos

Analista

Responsable de

Caso de uso

Actividad

Describe un
caso de uso

Artefacto

Paquete de casos de uso

Ing. Willian Zamalloa Paro DAI-UNSAAC

135

Ingeniera del Software


Introduccin a la Ingeniera del Software

El producto (i)

El producto que se obtiene es un sistema de software


El sistema lo componen todos los artefactos necesarios
para representarlo de forma comprensible
Artefacto

Trmino general para cualquier tipo de informacin creada, producida,


cambiada o utilizada por los stakeholders en el desarrollo del sistema.
Puede ser

De ingeniera
De gestin

El artefacto ms importante del Proceso Unificado es el


modelo
Un sistema posee una coleccin de modelos y las relaciones
entre ellos
Ing. Willian Zamalloa Paro DAI-UNSAAC

136

Ingeniera del Software


Introduccin a la Ingeniera del Software

El producto (ii)
Un modelo es una abstraccin semnticamente
cerrada del sistema

Los modelos recogen diferentes perspectivas del sistema


(perspectivas de todos los stakeholders)

Usuarios
Arquitecto

Sistema

Jefe de
proyecto

Ingenieros
de pruebas

Diseadores
Analistas

Ing. Willian Zamalloa Paro DAI-UNSAAC

137

Ingeniera del Software


Introduccin a la Ingeniera del Software

El producto (iii)

Modelos

Modelo de casos de uso

Modelos de anlisis y diseo

Diagramas despliegue, secuencia y colaboracin

Modelo de implementacin

Diagramas de clases, objetos, secuencia, colaboracin y actividad

Modelo de despliegue

Diagramas de casos de uso, secuencia, colaboracin y actividad

Diagramas de componentes, secuencia y colaboracin

Modelo de pruebas

Todos los diagramas

Ing. Willian Zamalloa Paro DAI-UNSAAC

138

Ingeniera del Software


Introduccin a la Ingeniera del Software

El producto (iv)

Existen dependencias entre el modelo de casos de uso y los


dems modelos

Modelo de
casos de uso
Modelo de
Anlisis

Modelo de
diseo

Modelo de

despliegue

Ing. Willian Zamalloa Paro DAI-UNSAAC

Modelo de
implementacin

Modelo de
pruebas
139

Ingeniera del Software


Introduccin a la Ingeniera del Software

El proceso (i)
El proceso de desarrollo de software es una definicin de un
conjunto completo de actividades necesarias para convertir los requisitos
de usuario en un conjunto consistente de artefactos que conforman un
producto software, y para convertir los cambios sobre esos requisitos en
un nuevo conjunto consistente de artefactos

El proceso hace referencia a un contexto que sirve como plantilla que


pueda reutilizarse para crear instancias de ella (proyectos)
Las actividades relacionadas conforman disciplinas o flujos de trabajo

Su identificacin parte de la identificacin de los stakeholders y de los


artefactos para cada tipo de stakeholder
Describen como fluye el proceso a travs de los stakeholders

Ing. Willian Zamalloa Paro DAI-UNSAAC

140

Ingeniera del Software


Introduccin a la Ingeniera del Software

El proceso (ii)

Representacin de las disciplinas mediante flujos de trabajo


Actividades
Analista de
sistemas

Identificar actores y
casos de uso

Estructurar el modelo
de casos de uso

Calles
Arquitecto

Especificador de
casos de uso

Diseador de interfaz
de usuario

Priorizar casos de uso

Detallar casos de uso

Esbozar interfaz de usuario

Disciplina del modelado de casos de uso


Ing. Willian Zamalloa Paro DAI-UNSAAC

141

Ingeniera del Software


Introduccin a la Ingeniera del Software

Caractersticas principales del proceso

Conducido por casos de uso

Como los casos de uso contienen las descripciones de las funciones, afectan a todas las
fases y vistas

Centrado en la arquitectura

Los casos de usos guan el desarrollo del sistema

La arquitectura se representa mediante vistas del modelo

Se puede tomar como arquitectura de referencia el denominado modelo de arquitectura de


4+1 vistas propuesto por Philippe Kruchten (1995)

Iterativo e Incremental

En cada iteracin se identifican y especifican los casos de uso relevantes, se crea un diseo
basado en la arquitectura seleccionada, se implementa el diseo mediante componentes y se
verifica que los componentes satisfacen los casos de uso

Si una iteracin cumple con sus objetivos se pasa a la siguiente

En cada iteracin se va desarrollando el sistema de forma incremental

Ing. Willian Zamalloa Paro DAI-UNSAAC

142

Ingeniera del Software


Introduccin a la Ingeniera del Software

Proceso dirigido por casos de uso (i)

Dirigen las actividades de desarrollo

Creacin y validacin de la arquitectura del sistema


Definicin de casos de prueba y procedimientos
Planificacin de iteraciones
Creacin de documentacin de usuario
Despliegue del sistema

Sincronizan el contenido de los diferentes modelos


Requisitos

Anlisis

Diseo

Implementacin

Prueba

Los casos de uso enlazan las disciplinas

Ing. Willian Zamalloa Paro DAI-UNSAAC

143

Ingeniera del Software


Introduccin a la Ingeniera del Software

Proceso dirigido por casos de uso (ii)

Inicialmente los casos de uso se utilizan para la captura de requisitos


funcionales
Durante el anlisis y el diseo se transforma el modelo de casos de uso
mediante un modelo de anlisis en una estructura de clasificadores y
realizaciones de casos de uso
En cada iteracin, los casos de uso sirven de gua a travs del conjunto
completo de disciplinas
Modelo de casos
de uso

Modelo de anlisis
<<trace>>

Modelo de diseo
<<trace>>

Ing. Willian Zamalloa Paro DAI-UNSAAC

144

Ingeniera del Software


Introduccin a la Ingeniera del Software

Proceso centrado en la arquitectura (i)

Se puede tomar como arquitectura de referencia el


denominado modelo de arquitectura de 4+1 vistas, propuesto
por Philippe Kruchten (1995)

Cada vista es una parte de un modelo

Vista lgica
Clases, interfaces,
colaboraciones

Vista de implementacin

Componentes

Casos de uso

Vista de Casos
de uso
Vista de procesos

Vista de despliegue

Clases activas

Nodos
Ing. Willian Zamalloa Paro DAI-UNSAAC

145

Ingeniera del Software


Introduccin a la Ingeniera del Software

Proceso centrado en la arquitectura (ii)

Diseo de la arquitectura

Seleccionar escenarios: aspectos crticos y riesgos


Identificar las clases principales y sus responsabilidades
Distribuir el comportamiento en clases
Estructurar en subsistemas, capas y definir interfaces
Definir distribucin y concurrencia
Implementar prototipos de arquitectura
Derivar casos de prueba a partir de los casos de uso
Evaluar la arquitectura
Iterar

La arquitectura se desarrolla mediante iteraciones (en capas)

Comienza con una lnea base de arquitectura (primera versin de los


modelos)
La lnea base evoluciona hasta convertirse en un sistema estable
Ing. Willian Zamalloa Paro DAI-UNSAAC

146

Ingeniera del Software


Introduccin a la Ingeniera del Software

Proceso iterativo e incremental (i)

La caracterstica fundamental del Proceso Unificado es ser un proceso


iterativo

Se basa en la ampliacin y el refinamiento del sistema


Una serie de desarrollos cortos (mini proyectos de 2 a 6 semanas, cada
iteracin reproduce el ciclo de vida a menor escala)
No slo se mejora sino que el sistema tambin crece: proceso iterativo e
incremental

Funcionalidad
del sistema

Incremento2
Anlisis

Diseo

Implementacin

Prueba

Incremento1
Anlisis

Diseo

Implementacin

Prueba

Tiempo
Ing. Willian Zamalloa Paro DAI-UNSAAC

147

Ingeniera del Software


Introduccin a la Ingeniera del Software

Proceso iterativo e incremental (ii)


El resultado de cada iteracin es un sistema ejecutable
(aunque sea incompleto y no est listo para su instalacin)
Un sistema instalable requiere varias iteraciones
Evolucin de prototipos ejecutables
Los objetivos de una iteracin se establecen en funcin de
la evaluacin de las iteraciones precedentes
Concepto de time-boxing

Cada iteracin debe tener una duracin fija (el mximo, 6 meses)
En lugar de retrasar el final de una iteracin se recomienda eliminar
algunos de los requisitos (se dejan para la siguiente iteracin)

La realimentacin del usuario es fundamental en este


proceso
El progreso es visible
Ing. Willian Zamalloa Paro DAI-UNSAAC

148

Ingeniera del Software


Introduccin a la Ingeniera del Software

Elementos del Proceso Unificado

Fases

Puntos de control o hitos

Separan las etapas, las fases, las iteraciones

Disciplinas o Flujos de trabajo

Es preciso diferenciar temporalmente las fases del ciclo de vida


La divisin temporal necesita puntos de control

Organizan las actividades fundamentales de gestin y desarrollo


Se pueden solapar en el tiempo
El resultado de las actividades de los flujos de trabajo son los
artefactos

Artefactos

Cualquier tipo de informacin producida por los desarrolladores de un


sistema (diagramas UML, cdigo, ejecutables, casos de prueba...)
Se construyen de forma incremental
Ing. Willian Zamalloa Paro DAI-UNSAAC

149

Ingeniera del Software


Introduccin a la Ingeniera del Software

Planificacin temporal del proyecto


El Proceso Unificado propone una serie de ciclos de desarrollo
Hay que separar claramente la etapa de Ingeniera de la etapa de
Produccin
Cada una de las dos grandes etapas se dividen en fases
Las fases se dividen en iteraciones
Ciclo de desarrollo

iteracin

Etapa de Ingeniera

fase

Etapa de Produccin
Ing. Willian Zamalloa Paro DAI-UNSAAC

150

Ingeniera del Software


Introduccin a la Ingeniera del Software

La vida del Proceso Unificado (i)

El Proceso Unificado se repite a lo largo de una serie de ciclos


de desarrollo que constituyen la vida de un sistema
Cada ciclo de desarrollo concluye con una versin
entregable del producto
Cada ciclo consta de cuatro fases

Inicio

Elaboracin

Se planifica el proyecto, se especifican en detalle la mayora de los casos de


uso y se disea la arquitectura del sistema

Construccin

Se define el alcance del proyecto y se desarrollan los casos de negocio

Se construye el producto

Transicin

El producto se convierte en versin beta


Se corrigen problemas y se incorporan mejoras sugeridas en la revisin
Ing. Willian Zamalloa Paro DAI-UNSAAC

151

Ingeniera del Software


Introduccin a la Ingeniera del Software

La vida del Proceso Unificado (ii)

Etapa de Ingeniera
Equipos pequeos, actividades poco predecibles (anlisis, viabilidad,
planificacin)
Comprende las fases

Inicio
Elaboracin

Etapa de Produccin

Equipos grandes, actividades predecibles, menos riesgos


(programacin, pruebas)
Comprende las fases

Inicio
tiempo

Construccin
Transicin

Elaboracin

Construccin

Ing. Willian Zamalloa Paro DAI-UNSAAC

Transicin
152

Ingeniera del Software


Introduccin a la Ingeniera del Software

La vida del Proceso Unificado (iii)

Hitos

Los hitos son puntos de control en los cuales los


participantes en el proyecto revisan el progreso del
proyecto
Se pretende

Se necesitan

Sincronizar las expectativas y la realidad


Identificar los riesgos
Se evala la situacin global del proyecto
Resultados tangibles para comparar con las expectativas

Varios niveles

Hitos principales al final de cada fase


Hitos secundarios final de cada iteracin
Ing. Willian Zamalloa Paro DAI-UNSAAC

153

Ingeniera del Software


Introduccin a la Ingeniera del Software

La vida del Proceso Unificado (iv)

Una iteracin es una secuencia de actividades con un plan


establecido y unos criterios de evaluacin, cuyo resultado es una
versin ejecutable no orientada a la entrega (hito
secundario)
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 informacin para la estimacin de tiempo y recursos de
proyectos sucesivos

Las iteraciones discurren a lo largo de las disciplinas


Ing. Willian Zamalloa Paro DAI-UNSAAC

154

Ingeniera del Software


Introduccin a la Ingeniera del Software

La vida del Proceso Unificado (v)

Inicio

Elaboracin

Construccin

Transicin

tiempo
Vista

Inicio

Lnea base
de arquitectura

Elaboracin

Prelim ...
Arqu.
Iteracin
Iteracin

...

Versin Versin

Capacidad
inicial

Construccin
Des.
Des.
Iteracin Iteracin

Versin del
producto

Transicin
...

Trans.
Iteracin

...

Versin Versin Versin Versin

Ing. Willian Zamalloa Paro DAI-UNSAAC

Versin

155

Ingeniera del Software


Introduccin a la Ingeniera del Software

La vida del Proceso Unificado (vi)

Las disciplinas o flujos de trabajo organizan las actividades


fundamentales de gestin y desarrollo del proyecto

Disciplinas de desarrollo

Disciplinas de gestin o soporte

Requisitos, anlisis, diseo, implementacin, pruebas...

Gestin de proyecto, gestin de configuraciones, entorno, evaluacin...

Al contrario de lo que ocurre con las fases, las distintas


actividades del equipo de desarrollo se pueden solapar en el
tiempo

Ing. Willian Zamalloa Paro DAI-UNSAAC

156

Ingeniera del Software


Introduccin a la Ingeniera del Software

La vida del Proceso Unificado (vii)


Fases
Disciplinas

Inicio

Elaboracin

Construccin

Transicin

Requisitos

Anlisis

Diseo

Implementacin

Pruebas
Iteraciones
preliminares

iter.
#1

iter.
#2

iter.
#n

iter.
#n+1

Ing. Willian Zamalloa Paro DAI-UNSAAC

ite r.
#n+2

iter.
#m

iter.
#m+1

Iteraciones
157

Ingeniera del Software


Introduccin a la Ingeniera del Software

7. CASE

Ing. Willian Zamalloa Paro DAI-UNSAAC

158

Ingeniera del Software


Introduccin a la Ingeniera del Software

Introduccin

Tecnologa CASE (Computer Aided/Assisted Software/System


Engineering)

Algunas de las herramientas CASE son soluciones puntuales

Es el nombre que se le da al software que se utiliza para dar soporte a


las actividades del proceso software, tales como la ingeniera de
requisitos, diseo, desarrollo y prueba [Sommerville, 2005]
Ofrece soporte al proceso software automatizando alguna de sus
actividades, a la vez que da informacin sobre el software que est
siendo desarrollado

Se utilizan para prestar apoyo a en una actividad del proceso software


concreta, pero no se comunica directamente con otras

Otras herramientas forman un entorno integrado I-CASE


(Integrated CASE)
Ing. Willian Zamalloa Paro DAI-UNSAAC

159

Ingeniera del Software


Introduccin a la Ingeniera del Software

Componentes de una herramienta CASE


Interfaz de usuario

Repositorio
Generador de
Informes

Metamodelo
Herramientas de
carga/descarga
de datos

Comprobacin de errores

[Piattini et al., 2004]

Ing. Willian Zamalloa Paro DAI-UNSAAC

160

Ingeniera del Software


Introduccin a la Ingeniera del Software

Clasificacin de las herramientas CASE (i)

Sommerville (2005) establece que se pueden realizar


diferentes clasificaciones en funcin de diversas
perspectivas, distinguindose

Perspectiva funcional

Se clasifican de acuerdo a su funcin especfica

Perspectiva de proceso

Herramientas de planificacin, Herramientas de soporte de mtodos,


Herramientas de documentacin

Se clasifican de acuerdo a las actividades del proceso software que


soportan

Perspectiva de integracin

Se clasifican de acuerdo a cmo se organizan en unidades de


integracin que ofrecen soporte a una o ms actividades del
proceso software
Ing. Willian Zamalloa Paro DAI-UNSAAC

161

Ingeniera del Software


Introduccin a la Ingeniera del Software

Clasificacin de las herramientas CASE (ii)


Herramientas
de Gestin

Herramientas
Tcnicas

PLANIFICACIN

SEGUIMIENTO

Anlisis

Diseo

Implementacin

CASE
SUPERIORES

CASE
INFERIORES

GENERADORES
DE CDIGO

CASE INTEGRADO

Herramientas
de Soporte

DIMENSIONAMIENTO

Prueba

Mantenimiento

HERRAMIENTAS
HERRAMIENTAS
DE PRUEBA
DE MANTENIMIENTO

LENGUAJES DE 4 GENERACIN

SISTEMA DE REPOSITORIO/DICCIONARIO
CONTROL DE CONFIGURACIN

SERVICIOS DE SEGURIDAD

[Piattini et al., 2004]

Existen otras muchas clasificaciones de herramientas CASE, como por


ejemplo [McClure, 1992], [Fuggetta, 1993] o [Pressman, 2002]
Ing. Willian Zamalloa Paro DAI-UNSAAC

162

Ingeniera del Software


Introduccin a la Ingeniera del Software

8. Aportaciones principales del tema


Ing. Willian Zamalloa Paro DAI-UNSAAC

163

Ingeniera del Software


Introduccin a la Ingeniera del Software

Aportaciones principales (i)

El software es un producto con gran peso en la economa


El desarrollo de software es una actividad compleja
El software no se fabrica en el sentido clsico
Un enfoque no de ingeniera provoca una profunda crisis en
el sector del software
Los objetivos de la Ingeniera del Software son desarrollar
software de calidad, con mayor productividad, en menor
tiempo y de forma lo ms econmica posible
Resulta necesario establecer un enfoque sistemtico y
disciplinado para llevar a cabo un desarrollo software

Ing. Willian Zamalloa Paro DAI-UNSAAC

164

Ingeniera del Software


Introduccin a la Ingeniera del Software

Aportaciones principales (ii)

Los procesos software son las actividades que intervienen en


la produccin de un sistema software
Los modelos de proceso son representaciones abstractas de
los procesos software
Todos los modelos de proceso incluyen especificacin de
requisitos, diseo e implementacin, validacin y evolucin
La linealidad en el desarrollo del software no es realista.
Normalmente se necesitan diversas iteraciones

Ing. Willian Zamalloa Paro DAI-UNSAAC

165

Ingeniera del Software


Introduccin a la Ingeniera del Software

9. Cuestiones y ejercicios

Ing. Willian Zamalloa Paro DAI-UNSAAC

166

Ingeniera del Software


Introduccin a la Ingeniera del Software

Cuestiones y ejercicios

Buscar, documentar y comentar dos situaciones problemticas recientes cuyas


causas se puedan achacar al software
Seleccionar diferentes aplicaciones software e indicar la categora de aplicacin
software
Realizar una comparativa entre el ciclo de vida clsico, el ciclo de vida en espiral y
el ciclo de vida del Proceso Unificado
Muchas organizaciones compran software comercial, pensando que es ms barato
que desarrollar y mantener software propio. Discutir las ventajas y desventajas de
la utilizacin de paquetes comerciales
Documentarse sobre las denominadas metodologas giles y realizar una
comparacin razonada con las denominadas metodologas pesadas, tipo Proceso
Unificado
Considerar los modelos de procesos presentados, cules permiten una mayor
capacidad de reaccin ante requisitos cambiantes?
Evaluar diferentes herramientas CASE, especialmente aqullas que den un soporte
a las tcnicas usadas en las fases de anlisis y diseo
Ing. Willian Zamalloa Paro DAI-UNSAAC

167

Vous aimerez peut-être aussi