Las Metodologías De Desarrollo De Software
PeterUlrich11 de Mayo de 2014
7.377 Palabras (30 Páginas)299 Visitas
Las Metodologías de Desarrollo de Software surgen ante la necesidad de utilizar una serie de procedimientos, técnicas, herramientas y soporte documental a la hora de desarrollar un producto software.
Dichas metodologías pretenden guiar a los desarrolladores al crear un nuevo software, pero los requisitos de un software a otro son tan variados y cambiantes, que ha dado lugar a que exista una gran variedad de metodologías para la creación del software. Se podrían clasificar en dos grandes grupos:
• Las metodologías orientadas al control de los procesos, estableciendo rigurosamente las actividades a desarrollar, herramientas a utilizar y notaciones que se usarán. Estas metodologías son llamadas Metodologías Pesadas
• Las metodologías orientadas a la interactuación con el cliente y el desarrollo incremental del software, mostrando versiones parcialmente funcionales del software al cliente en intervalos cortos de tiempo, para que pueda evaluar y sugerir cambios en el producto según se va desarrollando. Estas son llamadas Metodologías ligeras/ágiles
Metodologías denominadas pesadas:
Son las más tradicionales, se centran en la definición detallada de los procesos y tareas a realizar, herramientas a utilizar, y requiere una extensa documentación, ya que pretende prever todo de antemano. Este tipo de metodologías son mas eficaces y necesarias cuanto mayor es el proyecto que se pretende realizar respecto a tiempo y recursos que son necesarios emplear, donde una gran organización es requerida.
Una de las metodologías pesadas más conocidas y utilizadas es la Metodología RUP (Rational Unified Process) que divide el desarrollo en 4 fases que definen su ciclo de vida:
−Inicio: El objetivo es determinar la visión del proyecto y definir lo que se desea realizar.
−Elaboración: Etapa en la que se determina la arquitectura óptima del proyecto.
−Construcción: Se obtiene la capacidad operacional inicial.
−Transmisión: Obtener el producto acabado y definido.
La filosofía de la metodología RUP tiene 6 principios clave:
− Adaptación del proceso: El proceso debe adaptarse a las características de la organización para la que se esta desarrollando el software.
− Balancear prioridades: Debe encontrarse un balance que satisfaga a todos los inversores del proyecto.
− Colaboración entre equipos: Debe haber una comunicación fluida para coordinar requerimientos, desarrollo, evaluaciones, planes, resultados, etc.,...
− Demostrar valor iterativamente: Los proyectos se entregan, aunque sea de una forma interna, en etapas iteradas. En cada iteración se evaluará la calidad y estabilidad del producto y analizará la opinión y sugerencias de los inversores.
− Elevar el nivel de abstracción: Motivar el uso de de conceptos reutilizables.
− Enfocarse en la calidad: La calidad del producto debe verificarse en cada aspecto de la producción.
Disciplina de desarrollo de RUP.
Disciplina de desarrollo de RUP determina las etapas a realizar durante el proyecto de creación del software.
− Ingeniería o modelado del negocio: Analizar y entender las necesidades del negocio para el cual se está desarrollando el software.
− Requisitos: Proveer una base para estimar los costos y tiempo de desarrollo del sistema.
− Análisis y diseño: Trasladar los requisitos analizados anteriormente a un sistema automatizado y desarrollar una arquitectura para el sistema.
− Implementación: Crear software que se ajuste a la arquitectura diseñada y que tenga el comportamiento deseado.
− Pruebas: Asegurarse de que el comportamiento requerido es correcto y que todo lo solicitado está presente.
− Despliegue: Producir distribuciones del producto y distribuirlo a los usuarios.
Diagrama de esfuerzos de RUP
Disciplina de soporte RUP.
Determina la documentación que es necesaria realizar durante el proyecto.
− Configuración y administración del cambio: Guardar todas las versiones del proyecto.
−Administración del proyecto: Administrar los horarios y recursos que se deben de emplear.
− Ambiente: Administrar el ambiente de desarrollo del software.
− Distribución: Hacer todo lo necesario para la salida del proyecto.
Elementos del RUP.
− Actividades: Procesos que se han de realizar en cada etapa/iteración.
− Trabajadores: Personas involucradas en cada actividad del proyecto.
− Artefactos: Herramientas empleadas para el desarrollo del proyecto. Puede ser un documento, un modelo, un elemento del modelo, etc.,...
Metodología de Desarrollo en Tiempo Real
Para los Sistemas de Tiempo Real son muy importantes las primeras fases del ciclo de vida, pues, un error en estas fases preliminares pueda hacer inabordable el proyecto. No hay que olvidar que las restricciones temporales son muy severas, fáciles de comprobar pero difíciles de asegurar su cumplimiento, sobre todo si el sistema contiene cierta complejidad. Por ello, es conveniente poder comprobar el comportamiento temporal en la fase más temprana posible.
El desarrollo de los distintos pasos en el ciclo de vida, una tras otro, tiende a reducir el tiempo dedicado a la fase de especificación, con sus consecuencias negativas.
Aunque la fase de especificaciones es suficientemente importante para que sea larga, sin embargo, la experiencia aconseja no retrasar demasiado el comienzo de la fase de codificación, comenzándola incluso antes de que la fase de especificación haya concluido o madurado [Levi90].
Un buen método es comenzar la parte de la codificación construyendo unos prototipos que puedan mostrar, cuanto antes, un funcionamiento parcial del sistema. Este prototipo servirá para validar los criterios asumidos en la parte de la especificación y, a su vez, mientras se desarrolla, puede ayudar a validar o a rechazar líneas tomadas en la especificación.
Especificaciones:
El desarrollo de unas especificaciones de requerimientos completas y consistentes se extiende a lo largo del ciclo de vida del sistema.
En la elaboración de las especificaciones de un sistema es importante la notación empleada. Se pueden distinguir tres niveles de notación:
−Informal: Usualmente hace uso del lenguaje natural y varias formas de diagramas, generalmente imprecisos. Tiene la ventaja que lo puede entender cualquiera que conozca el idioma empleado.
−Estructurada: A menudo usa una representación gráfica pero, al contrario que en los diagramas de la notación informal, estos están bien definidos. Se construyen a partir de un pequeño número de componentes predefinidos que se interconectan de una manera controlada. Aunque es una notación rigurosa, no puede ser analizado y manipulado de forma automática.
−Formal: Está basada en un lenguaje matemático y, por tanto, puede manipularse utilizando propiedades y métodos matemáticos. Tiene la ventaja que se pueden hacer una descripción muy precisa y, además, se puede hacer un estudio de las propiedades que poseerá nuestro sistema, como por ejemplo, que el diseño satisface la especificación de requerimientos. La desventaja del método formal es que no se entiende fácilmente si no se tiene un dominio del lenguaje matemático utilizado en la notación.
Sistemas Informáticos de Tiempo Real Desarrollo de sistemas
La alta seguridad que requieren los sistemas de tiempo real está provocando que, cada vez más, se estén utilizando métodos formales. Con estos se utilizan también técnicas rigurosas de verificación, pero pocos ingenieros de software poseen los conocimientos matemáticos necesarios para explotar totalmente las posibilidades de verificación.
En la practica la notación formal es útil cuando se dispone de la herramienta que la maneje y realice el trabajo tedioso.
Diseño
− El diseño de un sistema de tiempo real complicado no se puede resolver como si se tratara de un ejercicio. A menudo ni siquiera es resuelto por una solo persona. La solución se debe estructurar de alguna manera.
−El diseño se debe descomponer en dos aspectos, el diseño estructural y el diseño detallado. Si un sistema es medianamente complicado resulta prácticamente inabordable si no se descompone es subsistemas más sencillos relacionados entre sí.
− El diseño estructural consiste en la forma en que se descompone el sistema y como se relacionan los distintos subsistemas.
−El diseño detallado consiste en el desarrollo de cada uno de los subsistemas obtenidos en la fase anterior. Pude realizarse en varios niveles, es decir, un subsistema se puede descomponer en varios subsistemas más sencillos.
Cuanto más detallado sea el diseño y más independientes resulten los subsistemas, más sencillas resultaran las fases siguientes del ciclo de vida del sistema.
Cada. subsistema lo denominaremos módulo, y cada módulo estará formado por un conjunto de componentes:
Descomposición de un sistema
Para manejar el desarrollo de sistemas de tiempo real complejos, a menudo se utilizan dos técnicas complementarias: La descomposición y la abstracción.
−La descomposición consiste en dividir un sistema complejo en módulos cada vez más pequeños y aislados, de forma que puedan ser abordados por un único ingeniero o un grupo reducido.
−La
...