Mejorar se hace
impostergable
Desarrollar software es y seguirá siendo
una tarea intrínsecamente compleja. Entregar software con un nivel de
calidad aceptable, en presupuesto y a tiempo requiere de una constante
coordinación entre las diferentes actividades que realizan los integrantes
de un equipo de desarrollo. La complejidad inherente a la administración de
los proyectos se incrementa aún más cuando las organizaciones deciden
basarse en modelos de desarrollo distribuidos o externos como el desarrollo
offshore o el outsourcing. Como resultado de todo esto, la cancelación de
proyectos, los atrasos, los presupuestos desbordados y la baja calidad de
los entregables se han transformado en el común denominador de todas las
organizaciones.
El camino hacia un Proceso de
Desarrollo de Software Predictivo y Efectivo
Si queremos cumplir con la vieja promesa de
satisfacer las necesidades del negocio, mejorar se hace impostergable.
Instaurar un proceso de desarrollo de software que sea predictivo y a la
vez efectivo debe transformarse en una de las máximas prioridades de
cualquier departamento de tecnología. Para alcanzar este objetivo,
deberíamos concentrarnos en ciertos aspectos que representan la base para
comenzar a mejorar nuestro proceso de desarrollo actual:
-
La multiplicidad de roles
-
Un marco metodológico adecuado
-
Plataforma de desarrollo colaborativa
La multiplicidad de roles
Tenemos que asumir que aquella época en la
que todo lo resolvía un programador en solitario ya es parte del pasado.
Hoy día, la multiplicidad de roles y los niveles de especialización dentro
de cada rol son fundamentales. Dentro de un equipo de desarrollo deben
existir múltiples roles como ser Arquitecto, Jefe de Proyecto, Designer,
Programador, Ensamblador, Tester, etc. Cada rol debe tener un conjunto de
responsabilidades asignadas, independientemente de que un individuo asuma
más de un rol. La interacción entre roles debe estar regulada por procesos
que aseguren el cumplimiento de las responsabilidades individuales y
comunes del equipo. El nivel de formalidad de cada proceso dependerá del
marco metodológico adoptado, por ejemplo, las metodologías ágiles se basan
principalmente en procesos informales basados en la comunicación oral entre
los diferentes integrantes del equipo. Finalmente, nuestro proceso de
desarrollo debe contemplar que cada uno de estos roles cuente con las
herramientas adecuadas para poder desempeñar de la mejor manera posible las
tareas asignadas a cada rol.
Un marco metodológico
adecuado
Las metodologías de desarrollo de software
definen las prácticas o disciplinas que aplicamos diariamente en nuestro
trabajo como ser Project Management, Análisis, Diseño, Especificaciones,
Testing, Aseguramiento de la calidad, etc. Actualmente, existen en la
industria 2 tendencias vinculadas a este tema, las metodologías formales y
las metodologías ágiles. Dentro de las metodologías formales encontramos
Waterfall, Microsoft
Solutions Framework for CCMI, Open Unified Process, etc. Bajo el marco de las
metodologías ágiles tenemos Extreme Programming, SCRUM, Agile Modeling, etc. Mal o bien, todos
trabajamos bajo algún tipo de marco metodológico. La clave en relación a
este punto radica en adoptar y personalizar la metodología que más se
adecue a las necesidades y características de mi empresa para posteriormente
integrar las prácticas y disciplinas definidas por dicha metodología dentro
de las actividades y herramientas que utilizamos día a día.
Plataforma de desarrollo
colaborativa
Como mencionaba anteriormente, nuestro proceso
de desarrollo debe contemplar que cada uno de los integrantes del equipo
cuente con las herramientas adecuadas para desempeñar el o los roles
asignados. Los desarrolladores necesitan utilizar un repositorio común de
fuentes, integrar capacidades de testing unitario y vincular los trabajos
realizados a las tareas asignadas. El Project Manager necesita administrar
los requerimientos del proyecto, publicar la documentación, acceder
fácilmente a dicha documentación y obtener automáticamente las métricas de
avance generales del proyecto. El arquitecto debe poder definir y
documentar visualmente la arquitectura de la aplicación. El Tester necesita
integrar y automatizar las pruebas funcionales y las pruebas de carga del
proyecto. La persona encargada de la integración y del ensamblaje del
proyecto necesita automatizar las tareas de building para que se ejecuten
en horarios donde el equipo no se encuentra trabajando. Los sponsors del
proyecto necesitan acceder a los reportes de avance y a la información estadística
que respalda el estado de salud actual del proyecto. Todos los integrantes
del grupo necesitan compartir una infraestructura común para la asignación
y el cumplimiento de tareas. Adicionalmente, todas las actividades
realizadas y los entregables generados deben estar vinculados al marco
metodológico definido. La metodología debe transformase en un elemento
activo que ayude a regular el desempeño y el cumplimiento de las
actividades realizadas durante todo el ciclo de vida del proyecto.
Microsoft Visual Studio Team System
Visual Studio Team
System (VSTS)
es la plataforma de desarrollo integral y colaborativa impulsada por
Microsoft. VSTS ofrece un conjunto completo de herramientas especializadas
para cada uno de los roles del equipo. Uno de los componentes principales
de dicha plataforma es el nuevo servidor de desarrollo denominado Team Foundation
Server (TFS).
TFS ofrece todos los servicios requeridos para la implementación de un
escenario de desarrollo colaborativo entre los que se destacan el
repositorio centralizado y seguro de fuentes, la asignación de tareas y
responsabilidades basadas en ítems de trabajo (Work Items), la generación y
actualización automática del portal del proyecto y la creación de un Data
Warehouse estadístico actualizado en forma automática en base a las
actividades realizadas por el grupo. TFS combina todos estos servicios con
el marco metodológico utilizado para cada proyecto. Ofrece templates para
metodologías ágiles y para metodologías formales y la capacidad de
personalizar dichos templates para adaptarlos a los requerimientos
específicos de cada organización.
Conclusiones
Instaurar un proceso de desarrollo de
software que sea predictivo y efectivo debe transformarse en una de las
máximas prioridades de cualquier departamento de tecnología. Desde
Microsoft seguiremos trabajando en la evolución de Visual Studio Team
System como una plataforma de Application
Lifecycle Management (ALM) integral y extensible.
Será hasta al próximo mes!
Martín Cabrera
Arquitecto de Software
Microsoft Cono Sur
Martin.Cabrera@microsoft.com
http://dmartincabrera.spaces.live.com
http://blogs.msdn.com/mcabrera
|