jueves, 23 de abril de 2015

5) Historia de Usuario

Tarjeta (anverso) con ejemplo de una historia de usuario, el cliente es Félix Almendra Hernández.


domingo, 19 de abril de 2015

4) Programación Extrema

Escenario


La empresa el Pato Volador en la que usted labora ha sido contratada por una Agencia Espacial para desarrollar el software de un satélite que se desarrollará en 3 meses como máximo, ya que es el tiempo en que será el lanzamiento del satélite para ponerlo en órbita. El satélite auxiliará el retorno de una las naves espaciales que regresan a la tierra.

La Agencia espacial ha puesto a su disposición a los ingenieros encargados de proporcionar los requerimientos del software de tiempo completo, así como los recursos e instalaciones necesarios para lograr el desarrollo del software en el tiempo establecido.

El Pato Volador ha propuesto a los directivos de la Agencia Espacial la metodología de Programación Extrema (XP por sus siglas en inglés) para la realización del software, ya que es indispensable terminar en tiempo el proyecto.

Usted debe utilizar la metodología XP para organizar a su equipo de trabajo y a los ingenieros de la Agencia, explicándoles la metodología XP y las funciones que deben realizar en las diferentes fases del proceso de desarrollo del software.

Preguntas y Mapa Conceptual


¿Qué es la Programación Extrema?
Es una metodología de desarrollo de la ingeniería de software formulada por Kent Beck, autor del primer libro sobre la materia, Extreme Programming Explained: Embrace Change (1999). Es el más destacado de los procesos ágiles de desarrollo de software. Al igual que éstos, la programación extrema se diferencia de las metodologías tradicionales principalmente en que pone más énfasis en la adaptabilidad que en la previsibilidad.

¿Cuáles son los valores y principios de la Programación Extrema?
Los valores originales de la programación extrema son: simplicidad, comunicación, retroalimentación (feedback) y coraje. Un quinto valor, respeto, fue añadido en la segunda edición de Extreme Programming Explained.

¿Cuáles son las actividades, recursos y prácticas de la Programación Extrema?
Equipo completo, planificación, test del cliente, versiones pequeñas, diseño simple, pareja de programadores, desarrollo guiado por las pruebas automáticas, integración continua, el código es de todos, normas de codificación, metáforas y ritmo sostenible.

¿Cuál son las fases del proceso de desarrollo de XP?
Planificación del proyecto, diseño, codificación y pruebas.

¿Qué es una historia de usuario?
Es una representación de un requisito de software escrita por el cliente en 1 a 4 frases en su lenguaje común. Son usadas para la especificación de requerimientos y para estimar tiempos de desarrollo. El tiempo de desarrollo de cada una es entre 1 y 3 semanas.


domingo, 12 de abril de 2015

3) Los Métodos Ágiles del Desarrollo de Software

Escenario


La Agencia Espacial en días anteriores ha perdido un satélite de comunicación debido al fallo del software del mismo. La investigación indicó que la falla fue porque no se cubrieron los requisitos de programación del sistema especificados por la propia Agencia.

La Agencia Espacial tiene que remplazarlo lo más pronto posible, ya que las comunicaciones con las naves espaciales dependen del mismo. Afortunadamente para la Agencia, existe un nuevo satélite ya construido que estaba programado para ser lanzado en un año, el inconveniente es que si se carga el mismo software el satélite se volverá a perder.

La empresa el Pato Volador en la que usted labora ha sido contratada para desarrollar el software del satélite en un proyecto de 3 meses como máximo, ya que es el tiempo en que retornará la próxima nave espacial que necesita los servicios del satélite para poder retornar a la tierra.

La Agencia pone a su disposición a los ingenieros encargados de proporcionar los requerimientos del software de tiempo completo, así como los recursos e instalaciones necesarios para lograr el desarrollo del software en el tiempo establecido. No es indispensable entregar la documentación formal del análisis y diseño del software, sin embargo debe haber evidencia que permita el entendimiento del sistema y el funcionamiento del mismo.

Usted debe proponer una metodología de desarrollo de software que permita organizar a su equipo de trabajo y a los ingenieros de la Agencia, mencionando los beneficios y riesgos que puedan existir.

Preguntas y Mapa Conceptual


¿Qué son las metodologías ágiles de desarrollo de software?
Son métodos para desarrollo de software que le dan mayor peso a ciertas dimensiones tales como el factor humano o el producto software. Las metodologías ágiles dan mayor valor al individuo, a la colaboración y al desarrollo incremental del software con iteraciones muy cortas. Se usan generalmente para proyectos un tanto cortos pero sin descuidar la calidad.
¿Cuáles son las características en las que se basan las metodologías ágiles?
Rapidez, flexibilidad, trabajo en equipo y disponibilidad.
¿Cuáles son las ventajas y desventajas del empleo de las metodologías ágiles respecto a las tradicionales?
Una de las ventajas principales es que al utilizar las metodologías ágiles al presentarse algún error de cualquier tipo, el desarrollador no tiene que empezar desde el inicio sino que es fácilmente adaptable. Otra ventaja que se tiene es el hecho de tener al cliente como parte del equipo, pues de esta forma el cliente entiende mejor lo que se está haciendo y que es lo que le beneficiaría, lo cual de manera implícita implica que no es necesario hacer formalmente una documentación.
¿Cuándo es recomendable utilizar metodologías ágiles en el desarrollo de software?
Es recomendable usar metodologías ágiles generalmente cuando se cuenta con un lapso corto para el desarrollo del proyecto.
¿Cuáles son algunos tipos de metodologías ágiles?
Algunos tipos de metodologías ágiles son: programación extrema, SCRUM, Adaptive Software Development, Crystal methodologies y Feature Driven Development.
 
 

Presentación

2) Modelos del Proceso de Software

Introducción

Quién hace qué, cuándo y cómo lo hace para alcanzar cierto objetivo es lo que un proceso define. En general, el éxito de las empresas u organizaciones depende en gran medida de la definición y seguimiento adecuado de sus procesos. En el caso de una empresa que se dedica al desarrollo de software, se requieren procesos especializados que abarquen desde la creación hasta la administración de un sistema de software.
Un modelo de proceso de software define cómo resolver la problemática del desarrollo de sistemas de software. Para desarrollar software se requiere resolver ciertas fases de un proceso que se conocen en su conjunto como el ciclo de vida del desarrollo de software. Un modelo de proceso debe considerar una variedad de aspectos, como el conjunto de personas, estructuras organizacionales, reglas, políticas, actividades, componentes de software, metodologías y herramientas utilizadas.
 

Desarrollo

Modelo de Cascada
Es el enfoque metodológico que ordena rigurosamente las etapas del ciclo de vida del software, de forma tal que el inicio de cada etapa debe esperar a la finalización de la inmediatamente anterior. De esta forma, cualquier error de diseño detectado en la etapa de prueba conduce necesariamente al rediseño y nueva programación del código afectado, aumentando los costos del desarrollo.
Análisis del sistema: Debido a que el software es siempre parte de un sistema mayor el trabajo comienza estableciendo los requisitos de todos los elementos del sistema y luego asignando algún subconjunto de estos requisitos al software. 
 
Desarrollo Evolutivo
Este modelo es efectivo en proyectos pequeños o medianos con poco tiempo para su desarrollo y sin generar documentación para cada versión. Para proyectos largos es mejor combinar lo mejor del modelo de cascada y evolutivo: se puede hacer un prototipo global del sistema y posteriormente reimplementarlo con un acercamiento más estructurado. Los subsistemas con requisitos bien definidos y estables se pueden programar utilizando cascada y la interfaz de usuario se puede especificar utilizando un enfoque exploratorio.
 
Ingeniería de Software Basada en Componentes
En general, el desarrollo de software basado en componentes puede verse como una extensión natural de la programación orienta a objetos dentro del ámbito de los sistemas abiertos y distribuidos. Este paradigma se basa en el uso de los componentes software como entidades básicas del modelo, entendiendo por componente “una unidad de composición de aplicaciones software que posee un conjunto de requisitos, y que ha de poder ser desarrollado, adquirido, incorporado al sistema y compuesto con otros componentes, de forma independiente en tiempo y espacio”.
 
A continuación presento un mapa conceptual sobre el proceso de software así como un cuestionario contestado de evaluación.
 

Conclusión

Creo que la diversidad de los proyectos que se desarrollan ha sido el principal factor en la creación de distintos métodos de desarrollo de software. Por eso es importante conocer los métodos existentes para así saber cuál utilizar a la hora de desarrollar algún software, eligiendo o creando el que mejor se adapte a las características y necesidades únicas del proyecto; de esta manera garantizaremos nuestra mejor respuesta al problema de desarrollo planteado.

Referencias

  • Esteller Víctor, Procesos de desarrollo de software y materiales educativos compuratizados, Revista de Tecnología de Informática, Venezuela, 2012.
  • Metodologías y procesos de análisis de software, Capítulo 2, UNAM.
  • Bertoa Manuel F., Troya José M., Vallecillo Antonio; Aspectos de Calidad en el Desarrollo de Software Basado en Componentes; Departamento de Lenguajes y Ciencias de la Computación; Universidad de Málaga.
  • Weitzenfeld Ridel, Ingeniería de software: el proceso para el desarrollo de software, ITAM, 2007.