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