Roles en El Desarrollo de Software
Roles en El Desarrollo de Software
Roles en El Desarrollo de Software
El desarrollo de software es una actividad que, dada su complejidad, debe desarrollarse en grupo.
Adems, esta actividad requiere de distintas capacidades, las que no se encuentran todas en una
sola persona. Por ello, se hace necesario formar el grupo de desarrollo con las personas que cubran
todas las capacidades requeridas. Cada una de esas personas aportar al grupo parte del total de
las capacidades necesarias para llevar a cabo con xito el desarrollo. Por ello, es que cada persona
debe tener un rol dentro del grupo, que viene dado por su experiencia y capacidades personales. A
continuacin se describen los roles que tradicionalmente se consideran en el desarrollo de software.
Estos roles son:
Administrador de proyecto,
Analista,
Diseador,
Programador,
Tster,
Asegurador de calidad,
Documentador,
Ingeniero de manutencin,
Ingeniero de validacin y verificacin,
Administrador de la configuracin
El cliente.
Para cada uno de estos roles, se definen sus objetivos, actividades, interaccin con otros roles,
herramientas a utilizar, perfil de las personas en ese rol y un plan de trabajo. Hay que sealar que es
posible que no se requieran todos los roles en un desarrollo. Eso depender del tamao y del tipo
del desarrollo.
El hecho de que en un grupo de desarrollo no se tengan claro los roles y sus responsabilidades y
actividades asociadas, hace que se produzcan problemas. Por un lado, es posible que una o ms
actividades no estn asociadas a ningn rol, con lo que el proyecto sufrir. Por otro lado, es posible
que una o ms actividades estn asociadas a ms de un rol. Esto producir problemas entre los
miembros afectados, lo que tambin redunda en problemas en el desarrollo del sistema. Por lo
anterior, se hace necesario que cada miembro conozca muy bien su rol dentro del proyecto, as
como las responsabilidades y actividades asignadas.
LA FBULA DE LA GRANJA
Un da cualquiera, los animales de una granja decidieron hacer una fiesta, con el propsito de pasar
un momento agradable. Para organizar la fiesta, se reunieron el mismo da en la maana. Cada
animal deba llevar algo a la fiesta. Como es lgico, a la vaca le pidieron la leche. A la gallina, le toc
llevar los huevos. Y al cerdo, el tocino.
En este caso, la vaca y la gallina participan de la fiesta. Sin embargo, el cerdo se encuentra
involucrado. Su participacin le obliga a entregar parte de si mismo como aporte para la fiesta. Al
cerdo le toca aportar una cuota de sacrificio mayor. Lo anterior muestra la diferencia entre participar
en un evento y estar involucrado.
Tomemos esta fbula para caracterizar a los miembros del grupo de un desarrollo de software.
calidad (rendimiento versus confiabilidad). La base de datos tambin debe ser confiable y proteger
privacidad e informacin comercial de usuarios no autorizados.
Los estilos de codificacin incluyen los nombres de variables, la forma de hacer comentarios en el
cdigo fuente, el diseo y escritura de rutinas y mdulos, la creacin de tipos de datos, la seleccin y
control de estructuras y la organizacin de bloques de instrucciones. A veces, algunos de estos
factores son determinados por la sintaxis y el paradigma de programacin utilizados, existiendo
estndares para lo anterior. Tpicamente, un grupo de programadores, o una empresa, utiliza el
mismo estndar con el propsito de que todos los programadores puedan acceder fcilmente a todo
el cdigo.
Las modificaciones hechas al cdigo deben ser solicitadas por el administrador de configuracin.
Otras veces, las modificaciones son solicitadas por el ingeniero de testeo directamente al
programador. En algunos casos, algunas modificaciones no requieren que se completen los
formularios de cambio debido a que los cambios solicitados no son relevantes o no requieren
aprobacin del comit de cambios (por ejemplo, no modifican los requisitos de usuarios). Es
importante destacar que los programadores no deben realizar cambios al software solicitados
directamente por el cliente.
Las reuniones realizadas entre programadores son muy importantes. En ellas se mantiene al da al
equipo sobre el estatus de la codificacin, los problemas que tienen las otras personas, la forma en
que otras personas abordaron una tarea especfica, nuevas necesidades internas y cambios al
cdigo, y hacer revisiones al cdigo de otros programadores.
Tster
El desarrollo de un sistema de software requiere la realizacin de una serie de actividades de
produccin.
En dichas actividades existe la posibilidad de que aparezcan errores humanos. Dichos errores
pueden empezar a aparecer desde el primer momento del proceso. Por ejemplo, los requisitos del
sistema pueden ser especificados en forma errnea o imperfecta. Por ello, el desarrollo de software
considera una actividad que apoye el proceso de deteccin y eliminacin de los errores y defectos
del sistema en construccin.
El objetivo del rol de tster es precisamente realizar dichas tareas.
El tster es el encargado de asegurar la calidad de cada uno de los productos (documentos,
prototipos, entre otros). Entre sus tareas estn:
- Construir y aplicar los planes de prueba unitarios, de mdulo, de sistema, y aceptacin parcial,
mantenindolos actualizados durante el proyecto.
- Velar por la completitud, y exactitud (no ambigedades) de todos los documentos del proyecto.
- Coordinar las inspecciones, y/o caminatas.
- Velar por la adhesin al estndar adoptado para el desarrollo.
- Velar por la calidad del producto final (cumplimiento de los requisitos).
Aseguradores de Calidad
En la actualidad, los factores dominantes en la administracin de proyectos de software son los
tiempos y costos de desarrollo. Existen buenas razones para ello. Los tiempos y costos de desarrollo
son con frecuencia, muy grandes. Por ello, la administracin se ha concentrado en tratar de resolver
dichos problemas. Sin embargo, existe un gran peligro en esto. En la medida que crece la presin
por cumplir con las fechas estipuladas, y reducir los costos, es la calidad del producto la que sufre.
Cuando se acelera el desarrollo de un sistema que est atrasado, generalmente se corta todo lo que
no se considere esencial, usualmente cortando las actividades de verificacin y testeo, resultando
en un producto de calidad reducida.
Se hace necesario encontrar una nueva ecuacin para el desarrollo de software. No debe ser
simplemente producto de software = a tiempo + dentro de los costos. Debiese ser producto de
software = calidad + a tiempo + dentro de los costos. Para ello, debe existir el convencimiento
individual y de la gerencia de considerar la calidad como una meta final, junto con el cumplimiento de
plazos y costos. Como se mencion antes, la calidad corresponde a un conjunto de atributos a
cumplir por el desarrollador.
Tpicamente, dichos atributos se encuentran definidos en la forma de un estndar, el que debe
cumplirse.
Administracin de Configuracin
La administracin de la configuracin es una disciplina que tradicionalmente se aplica al desarrollo
de sistemas de hardware, al desarrollo de elementos de hardware o sistemas de hardware/software.
La administracin de la configuracin de software corresponde a la administracin de la
configuracin aplicada a un sistema, o a partes de un sistema, predominantemente correspondiente
a software. Su aplicacin, en conjunto con otras disciplinas, lleva al desarrollo de sistemas en forma
ordenada y estructurada.
La administracin de la configuracin es una disciplina que aplica direccin y vigilancia tcnica y
administrativa a:
- Identificar y documentar las caractersticas funcionales y fsicas de tems de configuracin.
- Auditar los tems de configuracin para verificar cumplimiento de especificaciones, control de
interfaces y documentos, as como otros requisitos adicionales que pueda definir el contrato.
- Controlar cambios a los tems de configuracin y su documentacin relacionada.
- Registrar y reportar informacin necesaria para administrar tems de configuracin en forma
efectiva, incluyendo el estatus de cambios propuestos y el estatus de implementacin de cambios
aprobados.
- Mantener el repositorio del proyecto actualizado con las ltimas versiones de todos los entregables
del proyecto.
- Administrar el software utilizado para el control de versiones.
- Definir y controlar perfiles de acceso a los archivos del proyecto.
- Velar por la completitud y exactitud del repositorio del proyecto.
Los problemas de software ms frustrantes son frecuentemente ocasionados por una pobre
administracin de la configuracin. Los problemas son frustrantes debido a que requieren tiempo
para arreglarlos, y usualmente ocurren en el peor momento, y son totalmente innecesarios.
La administracin de la configuracin ayuda a reducir estos problemas coordinando los productos de
muchas personas que trabajan en un proyecto comn. Sin ese control, su trabajo va a producir
conflictos con frecuencia, resultando en problemas como los descritos a continuacin:
- Modificaciones simultneas _ Cuando dos o ms personas trabajan separadamente en el mismo
programa o documento, el ltimo en realizar los cambios puede fcilmente destruir el trabajo del
otro.
- Cdigo comn _ En grandes sistemas, cuando se modifican funciones comunes de un programa,
es necesario notificarlo a todos los miembros del grupo. Sin una administracin de cdigo efectiva,
no hay forma de estar seguro de encontrar y alertar a cada uno de los miembros del equipo.
- Versiones _ Muchos de los grandes programas son desarrollados en releases evolucionarios. Con
uno siendo utilizado por el usuario, otro en testeo, y un tercer en desarrollo, los arreglos de errores
deben ser propagados entre ellos. En sistemas de gran tamao con varios releases activos en forma