sábado, 24 de septiembre de 2016

METODOLOGÍAS DEL DESARROLLO DE SOFTWARE




METODOLOGÍAS DEL DESARROLLO DE SOFTWARE


 
¿Qué es metodología para el Desarrollo de Software?
  • Son procedimientos, técnicas y ayudas a la documentación para el desarrollo de productos software.

Es como un libro de recetas de cocina, en el que se van indicando paso a paso todas las actividades a realizar para lograr el producto informático deseado, indicando además qué personas deben participar en el desarrollo de las actividades y qué papel deben de tener. Además detallan la información que se debe producir como resultado de una actividad y la información necesaria para comenzarla.


Actualmente es imprescindible considerar los riesgos, aunque habitualmente las empresas, no han sido concienciadas de los riesgos inherentes al procesamiento de la información mediante ordenadores, a lo que han contribuido, a veces, los propios responsables de informática, que no han sabido explicar con la suficiente claridad las consecuencias de una política de seguridad insuficiente o incluso inexistente. Por otro lado, debido a una cierta deformación profesional en la aplicación de los criterios de coste/beneficio, el directivo desconocedor de la informática no acostumbra a autorizar inversiones que no lleven implícito un beneficio demostrable, tangible y mensurable.


Las técnicas indican cómo debe ser realizada una actividad técnica determinada identificada en la metodología. Combina el empleo de unos modelos o representaciones gráficas junto con el empleo de unos procedimientos detallados. Se debe tener en consideración que una técnica determinada puede ser utilizada en una o más actividades de la metodología de desarrollo de software. Además se debe tener mucho cuidado cuando se quiere cambiar una técnica por otra.

 

 

 

Finalidad de una metodología


Es ayudarnos a dar corrección y control en cada etapa del desarrollo de un programa que se está por realizar. Lo que nos permitirá una forma sistemática para poder obtener un producto correcto y libre de errores.


CLASIFICACIÓN  DE  LAS  METODOLOGÍAS.


Metodologías estructuradas.

Proponen la creación de modelos del sistema que representan los procesos, los flujos y la estructura de los datos de una manera descendente (top-down), tanto en las funciones del sistema, en la estructura de los datos o a ambos aspectos dando lugar a metodologías orientadas a procesos, orientadas a datos y mixtas.
Mecanismos para el análisis:
  • Flujo de datos.
  • Estructura de datos.
Mecanismos de subdivisión: cada metodología aplica un criterio diferente de descomposición, y se apoya en elementos gráficos distintos.
  • Proceso.
  • Estructura de datos.
Tendencias principales:
  • Metodologías orientadas a PROCESOS (FLUJO DE DATOS.)
  • Metodologías orientadas a ESTRUCTURAS DE DATOS.

Metodologías orientadas a objetos.

Cobra mucha más importancia el aspecto de modelado del sistema, examinando el dominio del problema como un conjunto de objetos que interactúan entre sí. Tenemos dos enfoques en las metodologías orientadas al objeto:

Revolucionarios o puros: que entienden la orientación al objeto como un cambio profundo que convierten a las metodologías estructuradas en obsoletas.

Sintetistas o evolutivos: que piensan que el análisis y diseño estructurado constituyen la base para el desarrollo orientado al objeto, pudiéndose combinar elementos del análisis y diseño estructurado con los de orientación a l objeto.

Sistemas en tiempo real.

Son sistemas muy dependientes del tiempo que procesan información orientada al control. Controlan y son controlados por eventos externos. Se caracterizan porque:
  • Se lleva a cabo el proceso de muchas actividades de forma simultanea.
  • Se asignan prioridades a determinados procesos.
  • Se interrumpe una tarea antes de que concluya, para comenzar otra de mayor prioridad.
  • Existe comunicación entre tareas.
  • Existe acceso simultáneo a datos comunes.
Para especificar los requisitos de estos sistemas hay que incluir nuevos conceptos para:
  • El manejo de interrupciones.
  • La comunicación y sincronización entre tareas.
  • Gestionar procesos concurrentes.
  • Dar respuesta oportuna y a tiempo ante eventos externos.
  • Datos continuos o discretos.

Comparación entre Metodologías Estructuradas y Orientadas a Objetos.


 Estructuradas
 Orientadas a Objetos
  • Para representar un modelo del mundo real, se requiere una transformación del espacio del problema
  • Correspondencia directa con los objetos del mundo real.
  • El Diseño se encuentra muy influenciado por el criterio de descomposición.
  • Se tratan datos y procesos con el mismo nivel de abstracción.
  • Cada módulo modela una función o un paquete de datos
  • Cada módulo representa un objeto o clase de objetos.
  • No son útiles en problemas de naturaleza concurrente o de tiempo real.
  • Son aplicables a todo tipo de problemas

METODOLOGÍAS AGILES Y TRADICIONALES

Metodologías Tradicionales
Metodologías Ágiles
- Rigidez ante los cambios, de manera lentos o moderada
- Los clientes interactúan con el equipo de desarrollo mediante reuniones
- Grupos de gran tamaño y varias veces distribuidos en diferentes sitios
- Dependencia de la arquitectura de software mediante modelos
- Poco Feedback lo que extiende el tiempo de entrega
- Mínimos roles
- Basadas en normas de estándares de desarrollo
- Procesos muy controlados por políticas y normas
- Seguimiento estricto del plan inicial de desarrollo
- Flexibilidad ante los cambios del proyecto de forma moderada a rápida
- Los clientes hacen parte del equipo de desarrollo
- Grupos pequeños (promedio 10 participantes in situ) en el mismo lugar.
- Menor dependencia de la arquitectura de software
- Continuo Feedback acortando el tiempo de entrega
- Diversidad de roles
- Basadas en heurísticas a partir de prácticas de producción de código
- Procesos menos controlados, pocas  políticas y normas
- Capacidad de respuesta ante los cambios



Las metodologías ágiles proporcionan una serie de pautas y principios junto a técnicas pragmáticas* que puede que no curen todos los males pero harán la entrega del proyecto menos complicada y más satisfactoria tanto para los clientes como para los equipos de entrega. 


Entre las metodologías ágiles más destacadas hasta el momento se pueden nombrar:
• XP (Extreme Programming)
• Scrum
• Crystal Clear
• DSDM (Dynamic Systems Developmemt Method)
• FDD (Feature Driven Development)
• ASD (Adaptive Software Development)
• XBreed
• Extreme Modeling



Aquellas con mayor importancia en la planificación y control del proyecto, en donde se especifican todos los requisitos y modelado, reciben el apelativo de Metodologías Tradicionales o Pesadas

Entre las metodologías tradicionales o pesadas podemos citar:
• RUP (Rational Unified Procces)
• MSF (Microsoft Solution Framework)
• Win-Win Spiral Model
• Iconix

  • En este video se muestra una  descripcion de la metodologia RUP me interesa presentarles esta ya que fue la que elegimos para el proyecto que realizaremos.


     
  1. Referencias



http://www.eumed.net/librosgratis/2009c/584/Metodologias%20tradicionales%20y%20metodologias%20agiles.htm