domingo, 29 de abril de 2012

Desarrollo ágil de software


¿Qué es el desarrollo ágil de software?
Por: Diógenes Amaury MS

El desarrollo ágil de software, es una metodología de gestión adaptativa, que te permite llevar a cabo, proyectos de desarrollo de software, adaptándote a los cambios y evolucionando en forma conjunta con el software. Es muy importante dejar claro que no se trata de una herramienta o aplicación, sino más bien de un conjunto de métodos utilizado en el desarrollo de software, que consiste en la convención de prácticas, métodos, principios, y técnicas cuya principal utilidad es la de proveer un mejor rendimiento del equipo de trabajo y  sobre todo, permitir la producción de mejores resultados en lo que se produce durante el proyecto. Esta metodología no es únicamente utilizada en el desarrollo de software, ya que diferentes empresas de otra naturaleza también los manejan, como es el caso de la Toyota.

Existen muchos tipos de metodología agiles de desarrollo de software como son:
eXtreme Programming (XP), Kanban, Scrum, entre otros. Nuestro contenido del dia de hoy, será enfocado en la metodología Scram.

¿Qué es Scrum?
Scrum es una metodología ágil de gestión de proyectos de desarrollo de software, basada en un proceso de trabajo constante, iterativo e incremental, que toma su nombre y principios de los estudios realizados sobre nuevas prácticas de producción por Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80.
Jeff Sutherland aplicó el modelo Scrum al desarrollo de software en 1993 en Easel Corporation (Empresa que en los macro-juegosde compras y fusiones se integraría en VMARK,luego en Informix y finalmente en Ascential Software Corporation)

 Scrum, propone una serie de características que deben guardarse a fin de lograr resultados óptimos en el desarrollo de sistemas de alta complejidad. La propuesta de Scrum, consiste en realizar entregas potencialmente utilizables de forma iterativa e incremental, en períodos de 2 a 4 semanas denominados "Sprints". Para lograrlo, establece ciertas pautas organizativas, a simple modo de guía y no de reglamento invasivo.

Scrum es una metodología de desarrollo muy simple, que requiere trabajo duro porque no se basa en el seguimiento de un plan, sino en la adaptación continua a las circunstancias de la evolución del proyecto.

Se comienza con la visión general del producto,especificando y dando detalle a las funcionalidades o partes que tienen mayor prioridad de desarrollo y que pueden llevarse a cabo en un periodo de tiempo breve (normalmente de 30 días).
Cada uno de estos periodos de desarrollo es una iteración que finaliza con la producción de un  incremento operativo del producto.
Estas iteraciones son la base del desarrollo ágil, y Scrum gestiona su evolución a través de reuniones breves diarias en las que todo el equipo revisa el trabajo realizado el día anterior y el previsto para el día siguiente.

 Los roles en Scrum:
Scrum organiza  el trabajo utilizando estos roles : Dueño de Producto (o Product Owner), Scrum Master y Scrum Team.

Dueño de Producto (o Product Owner):
El Dueño de Producto es la única persona autorizada para decidir sobre cuáles funcionalidades y características funcionales tendrá el producto. Es quien representa al cliente, usuarios del software y todas aquellas partes interesadas en el producto.
Funciones:
Canalizar las necesidades del del negocio, sabiendo "escuchar" a las partes interesadas en el producto y transmitirlas en "objetivos de valor para el producto", al scrum team.
Maximizar el valor para el negocio con respecto al Retorno de Inversión (ROI), abogando por los intereses del negocio.
Revisar el producto e ir adaptándole sus funcionalidades, analizando las mejoras que éstas puedan otorgar un mayor valor para el negocio.

Aptitudes que debe tener un Dueño de Producto:
Excelente facilicidad de comunicación en las relaciones interpersonales Excelente conocimiento del negocio Facilidad para análisis de relaciones costo/beneficioVisión de negocios

Scrum Master:
El Scrum Master es el alma mater de Scrum. Un error frecuente es llamarlo "líder", puesto que el Scrum Master no es un líder típico, sino que es un un auténtico Servidor neutral, que será el encargado de fomentar e instruir sobre los principios ágiles de Scrum.
Funciones:
  • Garantizar la correcta aplicación de Scrum. Esto incluye, desde la correcta trasmición de sus principios a las altas gerencias, hasta la prevención de la inversión roles (es decir, guardar especial cuidado en que el dueño de producto no actúe en nombre del Scrum Team y viceversa, o que la audencia se inmiscuya en tareas que no le son propicias)
  • Resolver los conflictos que entorpezcan el progreso del proyecto.
  • Incentivar y motivar al Scrum Team, creando un clima de trabajo colaborativo, fomentar la auto-gestión del equipo e impedir la intervensión de terceros en la gestión del equipo.


Aptitudes que debe tener un Scrum Master:
  • Excelentes conocimientos de Scrum
  • Amplia vocación de servicio
  • Tendencia altruista
  • Amplia capacidad para la resolución de problemas
  • Analítico y observador
  • Saber incentivar y motivar
  • Capacidad docente e instructiva
  • Buen carisma para las negociaciones
El Scrum Team:
El Scrum Team (o simplemente "equipo"), es el equipo de desarrolladores multidisciplinario, integrado por programadores, diseñadores, arquitectos, testers y demás, que en forma auto-organizada, será los encargados de desarrollar el producto.
Funciones y responsabilidades
  • Llevar el Backlog de producto, a desarrollos potencialmente funcionales y operativos.
  • Aptitudes que deben tener los integrantes de un Scrum Team:
  • Ser profesionales expertos o avanzados en su disciplina
  • Tener "vocación" (la buena predisposición no alcanza) para trabajar en equipo
  • Capacidad de auto-gestión

Backlog de Producto
El Backlog de Producto es un listado dinámico y públicamente visible para todos los involucrados en el proyecto.
En él, el Dueño de Producto, mantiene una lista actualizada de requerimientos funcionales para el software. Esta lista, representa "qué es lo que se pretende" pero sin mencionar "cómo hacerlo", ya que esta última, como vimos en el capítulo anterior, será tarea del Scrum Team.
El Backlog de Producto, es creado y modificado únicamente por el Dueño de Producto. Durante la ceremonia de planificación, el Scrum Team obtendrá los items del producto, que deberá desarrollar durante el Sprint. Formato del Backlog de Producto
El Backlog de producto, es una lista de items que representan los requerimientos funcionales esperados para el software.
Para cada uno de estos ítem, será necesario especificar:
  • El grado de prioridad
  • Esfuerzo que demanda
  • Granulidad
  • Criterios de aceptación
Ejemplo
Prioridad                    Item                            Estimación     Estado            Criterios de aceptación
1                                  Descripcion de ítem    tiempo en        criterio de lo propuesto.
                                                                        Semana o días
2                                  “ ”                                “”                     “”
3                                  “”                                 “”                     “”

Tableros de Scrum :
Con la lista de tareas ya armada, estamos en condiciones de crear el tablero. Un Scrum Taskboard, básicamente se divide en 3 columnas: pendientes, en curso y terminadas y se complementa la información con un Diagrama de Burndown que mostrará el esfuerzo restante para concluir el Sprint.



           

                       

domingo, 22 de abril de 2012

Formato a datos numéricos en .Net


Resulta frustrante para programadores que venimos de otros lenguajes de programación trabajar con algunos detalles, que nuestro lenguaje de origen resultaba bastante sencillo.
Hoy mostraremos la forma de aplicar formato  a datos numéricos, con el objetivo de separarlo con coma (,) y punto decimal, o incluir signo de moneda a la cantidad.
Para ellos utilizaremos dos texbox, uno para que el  usuario digite el valor que desea aplicarle el formato,  a este lo llamaremos TXTVALORI, y otro que será el encargado de mostrar el valor con formato y un Button, el cual contiene el código para aplicar formato.
Si queremos solo separadores de mil, y punto decimales la sentencia es esta:
variable.ToString("N")
En el caso de desear incluir el signo de moneda de su computador, la sentencia es esta:
variable.ToString("C")

Ejemplo en VB.net:
Este código debes pegarlo en el evento clic del botton.

        Dim valor As Double
        valor = Convert.ToDouble(TXTVALORI.Text)
        TXTVALNUE.Text = Convert.ToString(valor.ToString("N"))

Ejemplo en C#:
        double valor;
        valor = Convert.ToDouble(TXTVALORI.Text);
        TXTVALNUE.Text =Convert.ToString(valor.ToString("N"));


Recuerda si desea incluir el signo de Moneda, sustituye “N” por “C”

La Figura 1.1 Muestra el resultado del código anterior



Adelante, aprender es un camino sin fin, copiar y pegar es solo una técnica que puede sacarte de un apuro, pero no te da la confianza de sentirte  un profesional, copia y pega, pero también analiza, aprende y busca una mejor solución a lo que copiaste.

Diógenes Amaury MS

martes, 3 de abril de 2012

Llamar Aplicaciones desde .Net

Saludos Amig@s
Hoy les presento la forma de llamar una aplicación desde .Net, el ejemplo que voy a mostrar en con la calculadora de windows pero ustedes pueden seleccionar cualquier otro programa.

Escriba el siguiente código en un Botton desde donde se llamará la aplicación.

En Visual basic.net:

        Dim Proceso As New Process()
        Proceso.StartInfo.FileName = "calc.exe"
        Proceso.StartInfo.Arguments = ""
        Proceso.Start()

En C#:

            System.Diagnostics.Process proceso = new System.Diagnostics.Process();
            proceso.StartInfo.FileName = "calc.exe";
            proceso.StartInfo.Arguments = "";
            proceso.Start();