|
|
 |
|
 |
|
|
|
|
La Bitácora de Dúnadan Raptor
|
|
|
|
|
Author: |
Dunadan Raptor |
Created: |
Wednesday, March 01, 2006 |
 |
|
Experiencias con el área de desarrollo de software en ASP.NET |
By Dunadan Raptor on
Tuesday, September 18, 2007
Visual Studio team System es la solución de Microsoft para el manejo del ciclo de vida de aplicaciones. Para manejar un proyecto de creación de un directorio en asp.net para RockAndBol.com decidí usar este sistema y luego documentar mis experiencias en el Blog a modo de referencia para otros.
Read More »
|
By Dunadan Raptor on
Tuesday, September 18, 2007
Tal como los miembros de la Alianza Agil (Agile Alliance) previnieron, mucha gente piensa que las metodologías de desarrollo ágil equivalen a métodos livianos (en el sentido de light), provocando una falsa visión respecto a su seriedad o utilidad.
Jim Highsmith, uno de los fundadores resume en su sitio la esencia de la Agilidad, comprendida como aproximación al desarrollo:
"El futuro de la ecomomía de nuestra Era de la Información le pertenece a los Ágiles, aquellas organizaciones que tienen la capacidad de crear cambio, e incluso un poco de caos, para sus competidores. Si puedes innovar mejor y más rápido--puedes crear cambio para los competidores. Si puedes responder rápidamente a iniciativas competiticas, nueva tecnología, y requerimientos de clientes-- creas cambio para los competidores. Si eres más lento, menos innovador, tu respuesta es menor - entonces estás condenado a estrategias de sobrevivencia en un mar de caos impuesto por otros. Va a ser tu compañía la que imponga el ritmo de cambio, o serán los competidores quienes lo hagan? En un mundo de constante cambio, los rigorosos y tradicionales métodos de administración de proyectos y desarrollo de software son insuficientes para el éxito." (Jim Highsmith).
Dos de los preceptos del Manifiesto para el Desarrollo Ágil de Software afirman que son a) las herramientas y los procesos los que deben adecuarse a la gente y sus interacciones y b)que el principal énfasis está en la producción de software funcional antes que enfocarse en documentación exhaustiva.
Dentro de las tareas del día a día es fácil olvidar esta perspectiva, pero he encontrado que enfocarme en los dos primeros a toda costa me ha ayudado a cumplir con tiempos de entrega; enfrentando menos errores y logrando mayor satisfacción del cliente.
De manera obvia el resultado de alinear los objetivos del proveedor con los del cliente es una colaboración permanente que minimiza, como consecuencia, la discusión de términos contraactuales. El uso de metodologías Ágiles contribuye a que esto suceda de manera natural.
Finalmente la familiarización con un cambio constante, implica adaptarse al cambio y ser muy rápido para reaccionar. La programación que se basa en métodos ágiles implica ser capaces de abandonar planes para poder reaccionar a tiempo.
En siguientes entradas publicaré anotaciones de mi experiencia con aplicación de la Agilidad en proyectos del mundo real.
Son bienvenidas preguntas, comentarios y sugerencias, pero via el foro de discusión.
|
By Dunadan Raptor on
Thursday, September 13, 2007
Al usar un Panel Extender el posicionamiento es correcto en Firefox pero en las versiones de Internet Explorer solamente se puede asegurar un lugar fijo incluyendo los items dentro de un panel al que se le asigna un estilo. Por ejemplo al panel:
<code><asp:Panel ID="pnlMyPanel" Height="100px" width="80px" CssClass="pnlPanelExtender" runat="Server"></code>
Y en la hoja de estilos o una etiqueta style:
.pnlPanelExtender{position:relative;}
|
By Dunadan Raptor on
Friday, August 03, 2007
Este artículo en la revista Dr Dobb's Journal describe cuatro señales que indican cuando una persona está microadministrando:
- Ignorar momentos de reportes acordados y pedir reportes de estado más frecuentemente.
- Enojarse porque las personas fallan en las entregas.
- Cambiar constantemente asignaciones/tareas de trabajo.
- Dictar implementaciones en vez de requerimientos.
Uno de los resultados es que la administración de un proyecto falla en proporcionar "Empoderamiento" al equipo. El empoderamiento es uno de los tres elementos básicos de la administración de software según Mark I. Himelstein. Los otros dos son Ejecución y Comunicación.
Para Himelstein el administrador de software "tiene que dar una oportunidad a la gente para que pueda hacer su trabajo en un ambiente positivo. Los problemas deben ser enfocados como cosas a resolver. Es necesario engendrar confianza para obtener la verdad cuando se pide un [reporte de] estado. Empoderamiento también significa dejar que los empleados ayuden a desarrollar sus propios horarios. Mientras el administardor pone una meta para el lanzamiento, se deben rectificar diferencias entre las metas para el contenido del lanzamiento, las metas para los tiempos del lanzamiento y los recursos a mano"
Precisamente en uno de los podcasts de The McCarthy Show, Jim McCarthy que trabajó para Microsoft por años, habla de tres elementos que son comunes a todos los proyectos de software: Funcionalidad, Tiempo y Presupuesto y que cuando uno de ellos debe ser cambiado, necesariamente debe alterarse los otros dos. Himelstein, en su artículo, aunque no habla de presupuesto, se refiere a Recursos -es decir desarrolladores-, y Calidad.
Ajustar el equilibrio de estos elementos, es uno de los trabajos del administrador del proyecto. En la industria del software es regla general el "se necesita para ayer", que resulta en cronogramas irreales. Una de las comunes es que el administrador termina metiéndose en todos los detalles posibles sin poder hacer su propio trabajo bien.
¿Qué piensas? ¿Cuál es tu experiencia? Házmelo saber en el foro que acabo de abrir para discutir experiencias.
|
By Dunadan Raptor on
Thursday, May 31, 2007
Una de las funcionalidades que ayuda a recuperar tiempo con Visual Studio es la de poder ver de inmediato cuando se abre un proyecto, los archivos más recientes con los que se estab trabajando. Pero si algún archivo se corrompe, es posible que Visual Studio no pueda iniciarse porque el archivo no se puede abrir. En este caso, es posible removerlo desde el registro. La clave FileMRUList tiene la lista de los archivos que estaban abiertos la última vez que se trabajó con el proyecto:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\FileMRUList
Removiendo el archivo de la lista VS vuelve a abrirse. No he experimentado si el orden de los archivos altera en algo el comportamiento así que si aplicas este truco, mejor pruebas reordenando los números de archivo.
|
By Dunadan Raptor on
Saturday, April 14, 2007
En la versión 4.5 de Dotnetnuke es increíblemente fácil actualizar un módulo de Dotnetnuke para que funcione con AJAX. En esta entrada se describe las dos maneras de aplicar AJAX en módulos Dotnetnuke.
Usando Control Definitions
Suponiendo que el servidor web en el que corre Dotnetnuke tiene AJAX instalado, al habilitar un control específico de un módulo para usarlo, el módulo completo es envuelto en un UpdatePanel. Esto se logra de dos maneras:
1) Al instalar el módulo agregar en el nodo Control este valor:
<code><supportspartialrendering>true</supportspartialrendering></code>
2) Con el módulo instalado ingresar a Host>Module Definitions>, seleccionar el módulo deseado y seleccionar el control para el que se habilitará AJAX y marcar el campo Supports Partial Rendering.

Cuando Partial Rendering está habilitado, se puede aprovechar la librería de AJAX de Microsoft y el Control Toolkit de Microsoft.
Para probar con un ejemplo simple, en una página con un par de controles de etiqueta (Label) y un Botón. La segunda etiqueta y el botón dentro de un UpdatePanel, la primera etiqueta fuera.

Luego, agregar un evento click vacío Click al Button, un timer y una actualización a los datos de las etiquetas.
<code>
System.Threading.Thread.Sleep(3000)
Label1.Text = DateTime.Now()
Label2.Text = DateTime.Now()
</code>
Al hacer click, la hora solo se actualizará la etiqueta que está dentro del panel y la otra permancerá sin cambios.

El desarrollador al control
Hay que recordar que solo puede existir un objeto ScriptManager en cada página, como Dotnetnuke es en realidad una página, lógicamente la responsabilidad de agregarlo dinámicamente debe recaer en el framework y no en los módulos. De eso precisamente se encarga la clase Dotnetnuke.Framework.Ajax. La clase presenta ocho métodos:

- AddScriptManager: usada internamente por el framework para agregar un control ScriptManager a la página.
- ContentTemplateContainerControl: Devuelve una referencia al control ContentTemplateContainer dentro de un UpdatePanel
- CreateUpdatePanelControl: crea una instancia de un control UpdatePanel de manera dinámica en la página
- IsInstalled: Retorna un valor de tipo boolean para determina si AJAX se ha instalado en el servidor.
- RegisterScriptManager: se usa para instruir al framework que AJAX es requerido para la página.
- RemoveScriptManager: Remueve el control ScriptManager durante el evento de Page Render si el método RegisterScriptManager no fue llamado.
- ScriptManagerControl: devuelve una referencia al control ScriptManager de la página.
- SetScriptManagerProperty: asigna valores a las propiedades del control ScriptManager usando reflection.
Usando IsInstalled() es posible determinar si AJAX se encuentra instalado en el servidor, al combinarlo con RegisterScriptManager se podrá instruir a Dotnetnuke que agregué el control ScriptManager para que el control del módulo puede acceder a Ajax. De esta manera el resultado del ejemplo anterior es exactamente el mismo sin necesidad de habilitar partial rendering en el control.
<code>If DotNetNuke.Framework.AJAX.IsInstalled() Then
DotNetNuke.Framework.AJAX.RegisterScriptManager()
'Do some stuff
End If
</code>
|
By Dunadan Raptor on
Monday, February 26, 2007
No tomar en cuenta los valores nulos en una aplicación puede causar estragos. En un datagrid, al obtener información que proviene directamente de una base de datos, hay que manejarlos vía código antes de que sean enlazados al control. Obviamente ayuda tener un par de clases utilitarias que manejen estos casos, pero igualmente es pesado hacerlo cada vez.
Con la introducción del control Gridview, es posible configurar declarativamente el comportamiento del control en caso de que reciba un dato cuyo valor es DBNullEsto se logra gracias a la propiedad NullDisplayText que los campos BoundField e ImageField pueden usar. Adicionalmente ImageField puede usar NullImageURL.
NullDisplayText, hace que el campo muestre un texto específico y NullImageURL una imagen.
|
By Dunadan Raptor on
Monday, February 19, 2007
En Scrum, el Propietario del Producto (PdP), es responsable de controlar que el proyecto retorne más valor que los recursos que se invierten en el. En otras palabras, el retorno sobre la inversión (ROI) del proyecto es su responsabilidad. En la práctica, el PdP resulta ser la persona que encarga el proyecto, ya sa comercial o internamente y luego recibe los entregables.
El PdP deberá tener un entendimiento a alto nivel y priorizar los requerimientos funcionales, no-funcionales y creativos del proyecto. Si controla adecuadamente que la funcionalidad sea priorizada, desarrollada e implementada para cumplir con los requerimientos de la organización, el proyecto debe obtener un beneficio directo en términos de ROI. Para lograrlo, el PdP tiene las siguientes responsabilidades relacionadas con el proyecto:
- Define las características del producto, la fecha de lanzamiento y contenidos,
- Reune información de los usuarios, involucrados y otros interesados para obtener una lista de requerimientos priorizados para el desarrollo del producto
- Retorno sobre la Inversión (ROI),
- Priorizar las característica de acuerdo al valor de merc
| | |