Roles en el Desarrollo del Software

En cualquier equipo de desarrollo existe una serie de roles(funciones), que son desempeñados por diferentes personas, teniendo en cuenta que si es un equipo pequeño, puede que una persona cubra múltiples roles, mientras que en equipos más grandes, es más común tener funciones dedicadas.

Independientemente del caso, la identificación de los roles en el equipo ayudará a estructurar el mismo, y a crear conciencia de las responsabilidades.



Rol del Administrador de Proyecto

Es aquel que controla y administra los recursos del proyecto con el fin de cumplir el plan y el objetivo definido, debe tener clara la misión y la visión del proyecto y debe ser capaz de cumplir con las expectativas del cliente. 

Dentro de las tareas que debe realizar están: 
  • Tener el producto a tiempo.
  • Mantenerse dentro del presupuesto, manteniendo requisitos de calidad definidos
  • Terminar el proyecto con los recursos asignados.
  • Coordinar los esfuerzos generales del proyecto, ayudando a cada uno de sus integrantes a cumplir sus objetivos particulares.
  • Cumplir con éxito las diferentes fases de un proyecto, utilizando herramientas de administración.
Es responsable de la planificación del proyecto, de mantener el proyecto dentro del presupuesto, y de la solución de problemas. En resumen, él resuelve cualquier problema que ponga en peligro el progreso del proyecto.



El administrador de proyectos es un elemento clave para el éxito de un proyecto. Además de proporcionar liderazgo en la planeación, organización y control del proyecto debe poseer un conjunto de habilidades que inspiren al equipo a tener éxito y ganen la confianza del cliente. Los administradores de proyecto efectivos tienen una capacidad de liderazgo firme, la habilidad para desarrollar personas, excelentes habilidades de comunicación, buenas habilidades interpersonales, la capacidad para manejar el estrés, habilidades para resolver problemas. 


Rol del Analista



El analista es alguien que es responsable de entender las necesidades del cliente, y asegurarse de que la solución que está siendo desarrollada se ajusta a esas necesidades, debe trabajar con el cliente para realizar las especificaciones del sistema correctamente.


Los analistas deben identificar las necesidades del cliente, a través de reuniones con el cliente o su representante.Estas necesidades deben pasar de un lenguaje que domina el cliente a un lenguaje que domina el equipo. En estas reuniones, los analistas deben ayudar al cliente a definir los objetivos del sistema, determinando la información que desea obtener, la información que será suministrada al sistema, las funcionalidad del sistema y el rendimiento requerido. El rol de analista es muy importante, debido a que el éxito del proyecto dependerá de una buena especificación de requisitos.

Dentro de las tareas que debe realizar están: 
  • Entrevistar al cliente, para ayudarle a identificar sus necesidades.
  • Definir una estructura básica del sistema que incluya fuentes de información.
  • Analizar la estructura básica del sistema.
  • Generar los diagramas de la arquitectura.
El analista debe estructurar y especificar el problema del cliente, por lo que se espera que mantengan un contacto estrecho. Durante el período de análisis, el analista se reunirá en forma sistemática con el cliente con el propósito de entender y especificar el problema a desarrollar. Debe llevar al equipo el conocimiento necesario para el entendimiento y ejecución del software, usar metodologías de análisis que permitan especificar el problema.


Un analista es una persona con capacidades de comunicación, debido a que tendrá un contacto estrecho con el cliente. Por lo mismo anterior, debe ser una persona sociable, expresando sus ideas en forma clara en un lenguaje común con el cliente. También debe tener la capacidad de escuchar y entender al cliente.

ROL DEL DISEÑADOR

Es el encargado de generar el diseño del sistema,  generar el diseño arquitectónico y diseño detallado del sistema, basándose en los requisitos, así, como también, prototipos rápidos del sistema (con analistas y programadores) para chequear los requisitosLos diseñadores son las mentes creativas detrás de los programas.


Los diseñadores se ocupan de lo siguiente:
  • Analizar las necesidades de los usuarios y luego diseñar, probar y desarrollar programas para cubrirlas.
  • Diseñar cada una de las partes de la aplicación o del sistema y planificar cómo funcionarán conjuntamente.
  • Velar porque el producto final se ajuste al diseño realizado.
El diseñador debe tener conocimientos de:
  • Requisitos del sistema.
  • La arquitectura del sistema.
  • Técnicas de diseño de software, incluyendo técnicas de análisis  y el Lenguaje unificado de modelado.
  • Tecnologías con las que se implementará el sistema.
Este rol dirige el diseño de una parte del sistema, dentro de las restricciones de los requisitos, arquitectura y proceso de desarrollo para el proyecto. El propósito del diseño es la construcción de un sistema que cumpla con una especificación funcional dada, con requisitos implícitos y explícitos de rendimiento y uso de recursos. El diseñador tiene el deber de crear una estructura interna limpia y relativamente simple, también llamada a veces una arquitectura, para llegar a un producto final.



ROL DEL PROGRAMADOR

El programador debe convertir las especificaciones del sistema en código fuente ejecutable utilizando uno o más lenguajes de programación, así como herramientas de software de apoyo a la programación. Uno de los principales objetivos de los programadores durante su trabajo debe ser la de reducir la complejidad del software.

 Algunos de los beneficios que implican la reducción de la complejidad del programa son:
  • Menor cantidad de problemas de testeo. 
  • Aumento de la productividad de los programadores. 
  • Aumento de la eficiencia en la manutención del programa. 
  • Reducir el tiempo de codificación, aumentando la productividad del Programador. 
  • Disminuir el número de errores que ocurren durante el proceso de desarrollo. 
Él es a menudo responsable de hacer el seguimiento de su propio progreso, e informar al jefe de proyecto de los problemas a los que se enfrenta. Las reuniones realizadas entre programadores son muy importantes. En ellas se mantiene al día al equipo sobre el estatus de la codificación, los problemas que tienen las otras personas, la forma en que otras personas abordaron una tarea específica, nuevas necesidades internas y cambios al código, y hacer revisiones al código de otros programadores.



Es preferible que el programador tenga conocimientos en diferentes paradigmas de programación y estilos. Debe además, conocer perfectamente las técnicas de diseño utilizadas por el diseñador. También es deseable que el programador tenga conocimiento en varias metodologías de diseño. 

ROL DEL TESTER

Un tester investiga un producto de software con el objetivo de obtener información acerca de su calidad y del valor que representa para quienes lo utilizan.


Asume el desafío de detectar la mayor cantidad de fallas severas (incidentes de alto impacto) con el mínimo esfuerzo, antes de que el software salga a producción.

El tester participa de todas las etapas del proceso de desarrollo de software, colaborando para asegurar la máxima calidad del producto. Su perfil conjuga un conjunto de habilidades con el conocimiento del negocio, de la aplicación bajo prueba y de cómo planificar, diseñar, ejecutar y administrar las pruebas.


Entre estas habilidades que debe tener están:
  • Capacidad de abstracción y modelado para entender y simular el comportamiento del sistema bajo prueba.
  • Facilidad de comunicación oral y escrita para interactuar con desarrolladores y usuarios.
  • Creatividad para generar ideas e imaginar los problemas que podrían existir.
  • Pensamiento crítico para evaluar las ideas, hacer deducciones y vincular lo observado con los criterios de calidad de la empresa.
  • Pragmatismo para poner en práctica las ideas y adecuar las técnicas y el esfuerzo al alcance del proyecto.
  • Aptitudes para el trabajo en equipo, de manera de poder interactuar con los desarrolladores y otros testers, y lograr el máximo beneficio en esta interacción.
Los tester planifican y llevan a cabo pruebas de software para comprobar si funcionan correctamente. Identifican el riesgo de sufrir errores de un software, detectan errores y los comunican. Evalúan el funcionamiento general del software y sugieren formas de mejorarlo.


Pueden evaluar el correcto funcionamiento:
  • Si el software coincide con la especificación original (o qué hay que hacer para que coincida).
  • Si cuando un usuario hace clic en un botón o enlace para que suceda algo, por ejemplo, para ir a una nueva pantalla, se abre la pantalla correcta.
  • Si el usuario tiene que introducir algunos datos, el software actúa de forma correcta y los datos se almacenan de forma segura.
  • Si está diseñado para que varios usuarios puedan abrirlo al mismo tiempo sin que el programa reduzca su velocidad de procesamiento.
Ellos no suelen tener tiempo para probar todas las combinaciones posibles de las acciones que pueden aplicarse con un software, por lo que tienen que ponerse de acuerdo de antemano con el cliente sobre el tiempo disponible que tendrán. Mantienen un registro detallado las pruebas que realizan. Una vez completadas las pruebas, enumeran los errores y redactan un informe para que los programadores y administradores de proyectos puedan implementar posteriormente.

ROL DEL ASEGURADOR DE CALIDAD

El asegurador de calidad es la persona creada para solucionar el problema, este individuo será el encargado de estar en cada paso del proceso de creación de software para asegurar que éste sea terminado dentro de los tiempos establecidos de la manera mas adecuada y con la certeza de que ha sido creado con la menor cantidad de fallas.

Este rol desempeña las siguientes actividades:


Revisar:

  • Documentos de requisitos de Usuario y Software
  • Plan de administración del proyecto
  • Plan de testeo
  • Fase de diseño arquitectónico
  • Fase de diseño detallado
  • Políticas de control de cambios, control de errores y control de la configuración
  • Documentación
El Asegurador de Calidad debe ser una persona muy familiarizada con el proceso de desarrollo de proyectos, con esto se tiene la certeza de que la persona será capaz de resolver los problemas que surjan.Su plan de trabajo es de los mas extensos debido a que debe estar involucrado en todas las fases del proyecto.

ROL DEL ADMINISTRADOR DE CONFIGURACIÓN


En el desarrollo de sistemas o aplicaciones con el tiempo a evolucionado para ofrecer infinidad de herramientas de trabajo, lenguajes de programación y hardware, de esta manera el desarrollar un sistema uniforme se ha convertido en un problema, por este motivo se necesitan los Administradores de Configuración.

El Administrador de Configuración es la persona creada para llevar a cabo el desarrollo de sistemas en forma ordenada y estructurada.

Aplica dirección y vigilancia técnica y administrativa a:
  • Identificar y documentar las características funcionales y físicas de items de configuración.
  • Auditar los items de configuración para verificar cumplimiento de especificaciones, control de interfaces y documentos, así como otros requisitos adicionales que pueda definir el contrato.
  • Controlar cambios a los items de configuración y su documentación relacionada.
  • Registrar y reportar información necesaria para administrar items de configuración en forma efectiva, incluyendo el estatus de cambios propuestos y el estatus de implementación 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.

Dentro de las tareas que desarrolla están: 

  • Planificar las actividades principales de la administración de configuración.
  • Escribir un Plan de Administración de Configuración de Software.
  • Elaborar las plantillas necesarias para solicitar un cambio
  • Diseñar y elaborar el repositorio central para mantener los items de configuración de software identificados.
  • Estudiar las herramientas que serán usadas para acceder al repositorio.
Las características mas importantes que debe tener un administrador de configuración son:

1. Debe de estar capacitado en herramientas de planeación para ejecutar sus actividades de forma eficiente y eficaz. 

2. Debe de tener un control y conocimiento sobre los productos que se irán desarrollando a lo largo de cada proyecto. 
3. Debe ser flexible, para poder ajustarse a las necesidades y requerimientos de los desarrolladores, clientes, programas y a la organización.

ROL DEL INGENIERO DE VALIDACIÓN Y VERIFICACIÓN

En este rol, el ingeniero debe valorar y mejorar la calidad de los productos del trabajo generados durante el desarrollo y modificación del software. Los atributos que debe tomar en cuenta son la corrección, la perfección, la consistencia, la confiabilidad, la utilidad, la eficacia, el apego a los estándares y la eficacia de los costos totales.

Existen dos tipos de verificación: formal y del ciclo de vida. Esta última consiste en el proceso de determinar el grado en que los productos de trabajo de una fase dada del ciclo de desarrollo cumplen con las especificaciones establecidas durante fases previas. La verificación formal se hace mediante una rigurosa demostración matemática de la concordancia del código fuente con sus especificaciones.

La validación del software se da al final del proceso de desarrollo y es donde el ingeniero determina su conformidad con los requisitos.

Durante la verificación y validación, el ingeniero debe tomar en cuenta las especificaciones tales como la de requisitos, la documentación del diseño, diversos principios generales de estilo, estándares del lenguaje de instrumentación, estándares de proyecto, estándares organizacionales y expectativas del usuario.

Además debe examinar los requisitos para asegurarse que concuerden con las necesidades del usuario, así como con las restricciones del ambiente y los estándares de notación.

La documentación debe verificarse con respecto a los requisitos también; del código fuente debe revisarse su conformación, su documentación y los estándares.

ROL DEL DOCUMENTADOR

Es el que realiza toda la documentación que es necesaria para informar a todos los miembros del equipo de desarrollo acerca del estado y evolución del proyecto.

Si la documentación no es adecuada, o lo suficientemente clara,puede generar conflictos durante el ciclo de vida de desarrollo del software e incluso en etapas posteriores.


El objetivo principal del rol de documentador es el de mantener la información generada durante el proceso de desarrollo; además de permitir el almacenamiento y recuperación de la documentación de los procesos y productos más recientes durante el desarrollo, manteniendo al día la informacion de manera consistente y construir el manual de usuarios del sistema.


Entre sus actividades están: 

1) El documentador debe diseñar y construir un repositorio de información compartido, donde se almacenará la documentación.

2) Especificar el formato que será usado para elaborar la documentación. El formato especificado debe contemplar al menos lo siguiente:
  • Estructura del documento.
  • Tipos de letra y colores a usar en cada documento.
  • Distribución de los elementos en el documento (texto, imágenes, dibujos, logos).
  • Características de las figuras, imágenes y dibujos consideradas en el documento.
3) Durante las reuniones de revisiones, el documentador elaborará las actas de la reunión.Estos documentos serán usados luego por el ingeniero de validación y verificación.

El documentador debe: 


Ser una persona ordenada, con capacidades de mantener una gran cantidad de información en forma ordenada y accesible.

Tener creatividad para presentar la información y aptitud de expresión para escribir. Hay que señalar que debe conocer y utilizar el procesador de texto definido para el proyecto en toda su potencialidad, utilizando funcionalidades como estilos, corrector sintáctico y gramatical, y control de versión.

ROL DEL INGENIERO EN MANUTENCIÓN

La manutención toma una parte importante del presupuesto destinado al desarrollo. En general, dichos costos son subestimados o simplemente ignorados. Por otro lado, a medida que se desarrollan más programas, la cantidad de esfuerzo y recursos dedicados a la manutención crecerá. Al final, algunas empresas pueden llegar a encontrarse con la barrera de la manutención, no pudiendo abordar nuevos proyectos debido a que todos sus recursos están dedicados a mantener programas antiguos.

El Ingeniero de manutención se encarga de actualizar los sistemas, corregir los errores producido en el uso de éste y darle mantenimiento al programa. Los objetivos a cumplir por un ingeniero de manutención es el de modificar el software para adaptar nuevas funciones o modificar algunas funciones ya existentes, modernizar el software por medio de cambios al sistema y asegurarse de que el equipo de desarrollo esté informado de los errores encontrados en el sistema.
 
Entre sus actividades están:

1) Manutención correctiva: Diagnóstico y corrección de errores encontrados durante el uso del programa.

2)Manutención adaptiva: Adaptar el sistema a los cambios que pueden producirse en el hardware, sistema operativo, periféricos y herramientas de trabajo.

3)Manutención perfectiva: Satisfacer la demanda de recomendaciones por parte de los usuarios del sistema. Realizar cambios al sistema para mejorar el proceso de manutención o confiabilidad de sistema.

ROL DEL CLIENTE COMPROMETIDO 


Un cliente comprometido se relaciona principalmente con el administrador de proyecto y con los analistas en forma frecuente. No obstante, también necesitará relacionarse con otros roles con el propósito de controlar, monitorear y aceptar el sistema.


Un cliente es aquella persona responsable de llevar a cabo el buen desempeño del proyecto, por parte de la empresa que contrata el desarrollo, también llamada mandante. El cliente debe representar los derechos y asumir los deberes de dicha empresa ante el equipo de desarrollo. Por lo tanto, el cliente debe estar presente en todas las fases del desarrollo del producto, y realizar todas las actividades que se esperan de él, tales como la aceptación provisional y final del producto.

Por otro lado, los usuarios corresponden a las personas que están operando día a día un sistema de software. Es la persona que conoce el problema, y utiliza la  herramienta computacional para apoyar su trabajo. Un cliente y un usuario no siempre son lo mismo, ya que es posible que el cliente no opere el sistema de información.

Un usuario final generalmente se refiere a aquella persona que utiliza el sistema, pero que es desconocida o no identificable. Generalmente pasa esto en sistemas de información de uso masivo, tales como los sistemas de atención bancaria por Internet, sistemas de apoyo al comercio electrónico, etc.

En el desarrollo de software nos interesa tener clientes comprometidos. Es vital para el
éxito del proyecto. Un cliente comprometido es aquel que participa en todas las etapas del proyecto, compartiendo deberes y responsabilidades.


ROL DEL ADMINISTRADOR DE BASE DE DATOS


La información es uno los activos más valiosos de la empresa, es indispensable contar con una persona el administrador de datos que conozca la información, y las necesidades de la empresa en este aspecto, en un nivel gerencial superior. Así la labor del administrador de datos es almacenarse en la base de datos, y establecer políticas para mantener y manejar los datos una vez almacenados.

Funciones del Administrador de Bases de Datos.

  • Definir el esquema conceptual: es tarea del administrador de datos decidir con exactitud cual es la información que debe mantenerse en la base de datos, es decir, identificar las entidades que interesan a la empresa y la información que debe registrarse acerca de esas entidades. 
  • Definir el esquema interno:  debe decidir también como se representará la información en la base de datos almacenada. A este proceso suele llamarse diseño físico de la base de datos. Una vez hecho esto él deberá crear la definición de estructura de almacenamiento correspondiente. Además deberá definir la correspondencia pertinente entre los esquemas interno y conceptual.
  • Vincularse con los usuarios: debe encargarse de la comunicación con los usuarios, garantizar la disponibilidad de los datos que requieren y escribir o ayudar a los usuarios a escribir los esquemas externos necesarios. 
  • Definir las verificaciones de seguridad e integridad: las verificaciones de seguridad y de integridad pueden considerarse parte del esquema conceptual. 
  • Definir procedimientos de respaldo y recuperación: cuando una empresa se decide a utilizar un sistema de base de datos, se vuelve dependiente en grado sumo del funcionamiento correcto de ese sistema. En caso de que sufra daño cualquier porción de la base de datos por causa de un error humano, digamos, o una falla en el equipo o en el sistema que lo apoya; resulta esencial poder reparar los datos implicados con un mínimo de retraso y afectando lo menos posible el resto del sistema. Debe definir y poner en práctica un plan de recuperación adecuado que incluya, por ejemplo una descarga o "vaciado" periódico de la base de datos en un medio de almacenamiento de respaldo, y procedimientos para cargar otra vez la base de datos a partir de vaciado más reciente cuando sea necesario.
  • Supervisar el desempeño y responder a cambios en los requerimientos: es responsabilidad del administrador de base de datos organizar el sistema de modo que se obtenga el desempeño que sea "mejor para la empresa", y realizar los ajustes apropiados cuando cambien los requerimientos. 










Comentarios

Entradas más populares de este blog

Modelado de Análisis para WebApps

Prueba de Aplicaciones Web

Formulación y Planeación para Ingeniería Web