sábado, 11 de abril de 2015

Sesión 3


¿Qué son las metodologías ágiles de desarrollo de software?

Metodologías que permiten desarrollar software rápidamente, respondiendo a los cambios que puedan surgir a lo largo del proyecto y siendo las alternativas a los procesos de desarrollo de software tradicionales

¿Cuáles son las características en las que se basan las metodologías ágiles?
  1. Valorar al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas. (La gente es el principal factor de éxito de un proyecto de software. Es más importante construir un buen equipo que construir el entorno.)
  2. Desarrollar software que funciona más que conseguir una buena documentación.
  3. La colaboración con el cliente más que la negociación de un contrato.
  4. Responder a los cambios más que seguir estrictamente un plan. (La planificación no debe ser estricta sino flexible y abierta.)


¿Cuáles son las ventajas y desventajas del empleo de las metodologías ágiles respecto a las tradicionales?

Ventajas:
  • Son especialmente preparadas para cambios durante el proyecto.
  • Procesos menos rigurosos.
  • Contrato bastante flexible.
  • El cliente es parte del equipo de desarrollo.
  • Grupos pequeños de menos de 10 integrantes y trabajan en el mismo sitio.
Desventajas:
  • Proceso menos controlado.
  • No hay un contrato prefijado.
  • En algunos casos posible falta de personas en los grupos de desarrollo de software.

¿Cuándo es recomendable utilizar metodologías ágiles en el desarrollo de software?

Cuando existan proyectos donde el entorno del sistema es muy cambiante, y en donde se exige reducir drásticamente los tiempos de desarrollo pero manteniendo una alta calidad.

¿Cuáles son algunos tipos de metodologías ágiles?
  • Programación Extrema (Extreme Programming, XP)
  • SCRUM
  • Crystal Methodologies
  • Dynamic Systems Development Method (DSDM)
  • Adaptive Software Development (ASD)
  • Feature-Driven Development (FDD)
  • Lean Development (LD)

https://docs.google.com/presentation/d/1zLovV1E4S09r_knExB8xGMHwk5KJsxwrUQl4Kya_0mE/edit?usp=sharing

Métodos Ágiles de Programación

Introducción

Ya hemos visto anteriormente algunos metodos de  desarrrollo tradicionales, tal como el modelo de cascada, en espiral, el modelo evolutivo, entre otros, éstos mencionado son tradicionales y tienen todo gestionado con calidad, pero habrá veces en que no requeriremos de mucha documentación simplemente porque requerimos desarrollar un proyecto de software no tan robusto o complejo, es aquí donde entran en juego las metodologías ágiles de desarrollo de software, a continuación estudiaremos un poco sobre estos métodos que nos ofrece muchas ventajas sobre los métodos tradicionales de desarrollo de software. .

Desarrollo

Metodologías Ágiles de Desarollo de Software

Las metodologías ágiles de desarrollo de software son imprescindibles en un mundo en el que las cosas cambian a velocidad de vértigo. El mundo del desarrollo, para bien o para mal, ha evolucionado desde un modelo en el que se planificaban y estructuraban minuciosamente todas las fases a un modelo en el que el desarrollo debe ser lo más rápido y eficiente posible

Conclusión

Como pudimos ver, llegarán ocasiones en que requiramos de métodos para desarrollar un proyecto de software que se adapte a nuestras necesidades y, si esas necedades implican poco tiempo y un proyecto no tan complejo, y tengamos equipo limitado de personal, podremos requerir a algunas de las metodologías que agilicen la forma de desarrollar en proyecto de software, y aunque estos métodos no son los únicos podemos adaptarnos a una metodología que se adapte a nuestras necesidades, pero eso es decisión del equipo.

Bibliografía

  • Valverde, D. (06 de septiembre de 2007). Introducción a la Programación Extrema. Recuperado el 2012 de marzo de 26, de davidvalverde.com: http://www.davidvalverde.com/blog/introduccion-a-la-programacion-extremaxp

sábado, 4 de abril de 2015

Métodos del proceso de software

Introducción

Con el pasar del tiempo los proyectos que buscan desarrollar software implementan diferentes procesos que les permiten tener un orden lógico en el proceso a seguir para la elaboración del producto de software, por lo que con el pasar del tiempo se requieren diferentes procesos para cada proyecto que surja, ya sea para software complejos o sencillos requieren un diferente ritmo de trabajo y organización de las actividades para el equipo de trabajo.

Desarrollo

Un proceso de desarrollo de software tiene como propósito la producción eficaz y eficiente de un producto de software que pueda reunir los requisitos del cliente. Algo que debemos tener claro es que los procesos de software son complejos además de que dependen totalmente de las decisiones y el juicio del equipo de trabajo que busca satisfacer las necesidades del cliente. 

A pesar de la variedad de propuestas de proceso de software, existe un conjunto de actividades fundamentales que se encuentran presentes en todos ellos:
  1. Especificación de software. Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software.
  2. Diseño e implantación. Se diseña y construye el software de acuerdo a la especificación.
  3. Validación. El software debe validarse, para asegurar que cumpla con lo que quiere el cliente.
  4. Evolución. El software debe evolucionar, para adaptarse a las necesidades del cliente.


Modelo de proceso de software

Un modelo de proceso de software se define como una representación simplificada de un proceso de software, representada desde una perspectiva específica. Por su naturaleza los modelos son simplificados, por lo tanto un modelo de procesos del software es una abstracción de un proceso real.

Algunos de los modelos de proceso de software existentes son:
  • Modelo en cascada
  • Desarrollo evolutivo
  • Basado en componentes

Modelo de cascada

Considera las actividades fundamentales del proceso de especificación, desarrollo, validación y evolución. Los representa como fases separadas del proceso, tales como especificación de requerimientos, el diseño de software, la implantación, las pruebas, etc.
Las principales etapas de este modelo se transforman en actividades de desarrollo:
  1. Análisis y definición de requerimientos. Os servicios, restricciones y metas del sistema se definen a partir de las consultas con los usuarios. Se definen en detalle y sirven como una especificación del sistema.
  2. Diseño del sistema de software. El proceso de diseño de sistema divide los requerimientos en sistemas en hardware y software. Establece la arquitectura completa del sistema. El diseño del software identifica y describe las abstracciones fundamentales del sistema de software y sus relaciones.
  3. Implantación y prueba de unidades. En esta etapa el diseño del software se lleva a cabo como un conjunto o unidades de programa. La prueba de unidades implica verificar que cada una cumpla su especificación.
  4. Integración y prueba del sistema. Los programas o las unidades individuales de programas se integran y prueban como sistema completo para asegurar que se cumplan los requerimientos del software. Después de las pruebas, el sistema del software se entrega al cliente
  5. Funcionamiento y mantenimiento. Por lo general, ésta es la fase más larga del ciclo de vida. El sistema se instala y se pone en funcionamiento. El mantenimiento implica corregir errores no cubiertos en las etapas anteriores del ciclo de vida, mejorar la implantación de las unidades del sistema y resaltar los servicios del sistema una vez que se descubren nuevos requerimientos.

Resultado de imagen para modelo de cascada

Desarrollo evolutivo

La idea detrás de este modelo es el desarrollo de una implantación del sistema inicial, exponerla a los comentarios del usuario, refinarla en versiones hasta que se desarrolle el sistema final adecuado. Una ventaja de este modelo es que se obtiene una rápida realimentación del usuario, ya que las actividades de especificación, desarrollo y pruebas se ejecutan en cada iteración.

Existen dos tipos de desarrollo evolutivo:

  • Desarrollo exploratorio, donde el objetivo del proceso es trabajar con el cliente para explorar sus requerimientos y entregar un sistema final. El desarrollo empieza con las partes del sistema que se comprenden mejor. El sistema evoluciona agregando nuevos atributos propuestos por el cliente.
  • Prototipos desechables., donde su objetivo del proceso de desarrollo evolutivo es comprender los requerimientos del cliente y entonces desarrollar una definición mejorada de los requerimientos del sistema. El prototipo se centra en experimentar con los requerimientos del cliente que no se comprenden del todo.

Basado en componentes


En la mayoría de proyectos de software se reutiliza software. Esto sucede cuando las personas que trabajan en el proyecto conocen diseños o códigos similares al requerido. En los últimos años ha surgido un enfoque de desarrollo de software denominado ingeniería de software basado en componentes que se basa en la reutilización. Algunas veces estos componentes son sistemas por si mismos que pueden proporcionar funcionalidad específica. Las etapas son las siguientes:
  1. Especificación de requerimientos. Similar al modelo de cascada.
  2. Análisis de componentes. A partir de la especificación de buscan los componentes para implementar esta especificación. Por lo general no existe una concordancia exacta y los componentes que se utilizan sólo proporcionan parte de la funcionalidad.
  3. Modificación de requerimientos. Los requerimientos se analizan utilizando información acerca de los componentes que se han descubierto.. Entonces estos componentes se modifican para reflejar los componentes disponibles. Si las modificaciones no son posibles, la actividad de análisis de componentes se puede llevar a cabo nuevamente para buscar soluciones alternativas.
  4. Diseño del sistema con reutilización. En esta fase se diseña o se reutiliza un marco de trabajo para el sistema. Los diseñadores tienen en cuenta los componentes que se reutilizan y organizan el marco de trabajo para que los satisfaga. Si los componentes reutilizables no están disponibles, se puede tener que diseñar nuevo software.
  5. Desarrollo e integración. Para crear el sistema, el software que no se puede adquirir externamente se desarrolla, y los componentes y los sistemas adquiridos se integran.
  6. Validación del sistema. Similar al modelo de cascada



Conclusion

Como hemos visto, los diferentes clientes que podemos encontrar tendrán diferentes necesidades que cubrir, por lo que el utilizar un único modelo de desarrollo de software para todos los proyectos resulta ser insuficiente para cubrir las necesidades del cliente, por lo que siempre debemos elegir el que se acople mejor a las necesidades tanto del cliente como del equipo de trabajo para la realización del software.

Bibliografía

  • Pressman, R, Ingeniería del Software: Un enfoque práctico, McGraw Hill 1997.
  • http://ele-mariamoliner.dyndns.org/~fperal/proy/ingenieriaSW.pdf
  • http://yaqui.mxl.uabc.mx/~molguin/as/IngSoft%201-4.pdf