Está en la página 1de 42

Ingeniera del Software

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Introduccin


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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Introduccin


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
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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Definiciones


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

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]

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Definiciones


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]

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Definiciones


Se puede definir metodologa de Ingeniera del Software como:

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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de 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]

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de 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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Caractersticas deseables en una metodologa


Una metodologa debe cubrir [Henderson-Sellers y


Firesmith, 1999]






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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Clasificacin de las 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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas Estructuras


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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas Estructuras


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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas Estructuras


Metodologas orientadas a procesos




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]

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas Estructuras


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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas Estructuras


Metodologas orientadas a Datos




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]

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de 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)

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de 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]

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Orientadas a Objetos


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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Orientadas a Objetos


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
Gran cantidad de representantes


Metodologas dirigidas por los datos




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


1991]
Fusion [Coleman et al., 1994]

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Orientadas a Objetos


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




Objectory [Jacobson et al., 1992]

Proceso Unificado [Jacobson et al., 1999]

Metodologas dirigidas por estados




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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Orientadas a Objetos


Evolucin de las metodologas orientadas a objetos

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Orientadas a Objetos


Metodologas Estructuradas vs Metodologas OO

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Orientadas a Objetos


Metodologas Estructuradas vs Metodologas OO

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Orientadas al desarrollo de sistemas hipermediales


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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Orientadas al desarrollo de sistemas hipermediales


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]

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Orientadas al desarrollo de sistemas hipermediales


Se han definido diversas propuestas metodolgicas


para la construccin de aplicaciones Web


Proponen diferentes pasos y actividades

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

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Orientadas al desarrollo de sistemas hipermediales


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]

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de 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]

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Otra Clasificacin de las metodologas


Metodologas Pesadas o Tradicionales o No giles




Tiene una fuerte planificacin durante todo el


proceso de desarrollo

Metodologas giles


Un proceso es gil cuando el desarrollo de software


tiene las siguientes caractersticas:


Es incremental

E cooperativo

Es sencillo

Es adaptable.

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles


En 2001, Kent Beck y otros 16 notables desarrolladores,


escritores y consultores (conocidos como la Alianza gil)
firmaron el Manifiesto para el desarrollo gil del software,
el cual estableca:


Hemos descubierto mejores formas de desarrollar software al


construirlo por nuestra cuenta y ayudar a otros a hacerlo. Por
medio de este trabajo hemos llegado a valorar:






A los individuos y sus interacciones sobre los procesos y las


herramientas
Al software en funcionamiento sobre la documentacin extensa
A la colaboracin del cliente sobre la negociacin del contrato
A la respuesta al cambio sobre el seguimiento de un plan

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles








La ingeniera de software gil combina una filosofa y un


conjunto de directrices de desarrollo.
La filosofa busca la satisfaccin del cliente y la entrega
temprana de software incremental.
Equipos de proyectos pequeos y con alta motivacin.
Mtodos informales, un mnimo de productos de trabajo de
la ingeniera del software
Simplicidad general del desarrollo
Las directrices de desarrollo (programacin) tienen mayor
prioridad que el anlisis y diseo
La comunicacin activa y continua entre los desarrolladores
y los clientes.

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles


Importancia


El ambiente moderno de los negocios ocasiona que los


sistemas basados en computadores y los productos de
software estn en cambios continuos y deben realizarse
en forma acelerada.
La ingeniera del software gil representa una opcin
razonable a la ingeniera convencional para ciertas
clases de software y ciertos tipo de proyectos de
software.
Ha demostrado su utilidad al entregar sistemas exitosos
con rapidez.

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles


La Alianza gil Define 12 Principios para quienes alcanzar


la agilidad:


Nuestra mayor prioridad es satisfacer al cliente mediante la


entrega temprana y continua de software valioso
Bienvenidos lo requisitos cambiantes, incluso en fases tardas
del desarrollo.
Entrega con frecuencia software en funcionamiento, desde
un par de semanas hasta un par de meses, con una
preferencia por la escala de tiempo mas corta
Los dueos de los procesos de negocios y los desarrolladores
deben trabajar juntos a diario a lo largo del proyecto.

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles


Construir proyectos alrededor de individuos motivados.


Darles el ambiente y el soporte que necesitan, y confiar en
ellos para obtener el trabajo realizado
El mtodo mas eficiente y efectivo de transmitir informacin
hacia y dentro de un equipo de desarrollo es la conversacin
cara a cara.
El software en funcionamiento es la medida primaria de
progreso.
Los procesos giles promueven el desarrollo sustentable. Los
patrocinadores, desarrolladores y usuarios deben ser capaces
de mantener un paso constante de manera indefinida.

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles


La atencin continua a la excelencia tcnica y al buen diseo


mejora la agilidad.
La simplicidad (el arte de maximizar la cantidad de trabajo no
realizado) es esencial
Las mejores arquitecturas, los mejores requisitos y los
mejores diseos emergen de equipos autoorganizados
A intervalos regulares el equipo refleja la forma en que se
puede volver mas efectivo; entonces su comportamiento se
ajusta y adecua en concordancia

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles


El Proceso gil


Cualquier proceso gil de software se caracteriza de una


manera que refiere tres suposiciones claves acerca de la
mayora de los proyectos de software:


Resulta difcil predecir cuales requisitos del software persistirn


y cuales cambiaran. De igual forma, es difcil presagiar como
cambiaran las prioridades del cliente mientras se ejecuta un
proyecto
Para muchos tipos de software, el diseo y la construccin
estn intercalados. Esto es, ambas actividades se deben realizar
de manera conjunta, de modo que los modelos de diseo sean
probados conforme se crean. Resulta difcil predecir cuantos
diseos se necesitan antes de la construccin se utilice para
probar el diseo.
El anlisis, el diseo y la construccin no son predecibles (desde
un punto de vista de la plantacin), lo que seria deseable.

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles


El Proceso gil


Caractersticas del Proceso gil




El proceso gil debe ser adaptable (a un proyecto y a


condiciones tcnicas que cambian con rapidez) motivado a que
el procesos es susceptible a cambios en forma impredecibles
Una adaptacin continua sin progreso logra muy poco. En
consecuencia, un proceso gil de software debe adaptarse en
forma incremental, para lo cual un equipo gil requiere de la
retroalimentacin con el cliente (para que sea factible realizar
adaptaciones apropiadas), un catalizador efectivo para la
retroalimentacin del cliente es un prototipo operacional. Por lo
tanto, en un proceso gil debe instituirse una estrategia
incremental de desarrollo mediante prototipos.

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles


El Proceso gil


Caractersticas del Proceso gil




Los defensores del desarrollo gil resaltan la importancia del


factor humano. El desarrollo gil se centra en los talentos y las
habilidades de los individuos, puesto que el proceso se ajusta a
personas y equipos especficos. El punto clave es que el proceso
se ajusta a las necesidades de las personas y del equipo, y no al
revs. Por tal motivo, el trabajo debe ser cooperativo dentro del
equipo de trabajo

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles


Metodologas giles






Programacin Extrema (Extreme Programming)


Scrum
Mel
Metodologias Crystal
Desarrollo Conducido por Caractersticas (Feature Driven
Development)
Mtodo de Desarrollo de Sistemas Dinmico (Dynamic
Systems Development Method)
Desarrollo Adaptativo del Software (Adaptive Software
Development)
Open Source Software Development (OPEN)

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles


Programacin extrema












Pone ms nfasis en la adaptabilidad que en la


previsibilidad.
Cambio de requisitos es evidente
Modelo de proceso iterativo e incremental
Pruebas unitarias continuas
Programacin en parejas
Integracin del equipo de programacin con el cliente
Correccin de todos los errores
Refactorizacin del cdigo
Propiedad del cdigo compartida
Simplicidad en el cdigo

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles


SCRUM


Scrum es un proceso marco que incluye un conjunto de


prcticas y roles predefinidos
El equipo crea un incremento de software
potencialmente entregable (utilizable)
Se acuerda la cantidad de trabajo de compromiso.

Introduccin a la Ingeniera del Software


Metodologas de Desarrollo de Software
Metodologas giles vs Metodologas no giles


SCRUM

También podría gustarte