Sei sulla pagina 1di 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

Potrebbero piacerti anche