sábado, 17 de noviembre de 2007

Cuarta parte

Para terminar el trabajo, se puede mencionar que fue intresante descubrir lo que buscan los ingenieros al momento de contratar a personal para el proceso de captura de requisitos, además de decubrir cuales son las habilidades que consideran necesarias para el proceso.

Apesar que para esta investigación se intentó recopilar la mayor cantidad de información posible, se considera que fue muy poco representativa para el universo de ingenieros dedicados al proceso, lo cual puede verse como una limitación, sin embargo, se puede ver como una posible extención para el trabajo.

Antes de términar con este trabajo, se quiere agradecer a las personas que ayudaron para la realización de este trabajo, principalmente en las entrevistas ( a continuación se puede ver algunas imagenes capturadas durante la entrevistas, y más abajo una foto del realizador de este trabajo).








Tercera parte

Ahora es el momento de comprobar las hipótesis planteadas al comenzar esta investigación. Se puede ver la primera hipótesis planteada a continuación e inmediatamente las conclusiones obtenidas para esta.

  1. "Para el proceso de toma de requerimientos es fundamental tener una buena disposición para escuchar al cliente y buen dominio de las comunicaciones. Además, es necesario tener una buen dominio sobre alguna técnica de captura de requisitos y es deseable la realización de este proceso en grupos multidisciplinarios"

Si bien, durante la investigación y la recolección de datos se pudo determinar que una de las habilidades necesarias es el domino de las habilidades del habla, esta no fue considerada como la más importante por los entrevistados. La habilidad más importante, según los datos recopilados, es el dominio a cabalidad de las técnicas de desarrollo de software.

En cuanto a la utilización de grupos multidisciplinarios, se encontró que ayudaba considerablemente al proceso, siempre y cuando el encargado de este tenga la experiencia y/o habilidad de mantener al grupo cohesionado, lograr juntar los distintos puntos de vista de los miembros del grupo y reunirlos en documento. Por lo anteriormente expuesto, se puede decir que la primera hipótesis es aceptada. Sin embargo se podría replantear de la siguiente manera:

“Para realizar la toma de requerimientos es fundamental poseer un dominio de técnicas de desarrollo, se debe ser ordenado al aplicarlas, y tener un buen manejo de las habilidades lingüísticas (expresarse correctamente y saber entender). También se debe poseer una buena redacción y ortografía y una capacidad de procesar y aprender rápidamente. Por otro lado la realización del proceso por grupos multidisciplinarios ayuda a obtener mejores requerimientos”.


  1. "Los estudiantes de ingeniería informática no salen bien preparados para realizar el proceso de captura de requisito"

Para la segunda hipótesis, se llega a la conclusión que los alumnos de ingeniería informática no están teniendo una buena preparación para la toma de requisitos, esto debido a que no se impulsa ni se premia a los alumnos ha utilizar proyectos con clientes reales en los cursos que tiene relación con la ingeniería de software, especialmente en el curso de proyecto, lo cual limita mucho el desarrollo de las habilidades consideradas por los entrevistados como mínimas para una buena captura de requisitos.



Segunda parte

Una vez planteadas las hipótesis a utilizar, es necesario realizar las experiencias que ayudarán a obtener la información necesaria para analizar la veracidad de las hipótesis. Para obtener esta información, se escogió aplicar entrevistas, en las cuales se aplica una breve encuesta con el fin de tratar de determinar las habilidades y competencias necesarias que debe poseer un ingeniero informático para realizar una buena captura de requisitos. Estas entrevistas y la aplicación de las encuestas se realizaron por diversos medios, como por ejemplo: entrevista personal, contacto telefónico y mediante correo electrónico. Con estos métodos se recolectó prácticamente toda la información que se utilizará en esta investigación.

Para poder conseguir estas entrevistas se encontraron muchos problemas, debido a la poca cooperación encontrada en los profesionales relacionados con el área de investigación, además que no se encontró mucha gente que trabajara en la captura de requisitos, y los que lo hacían argumentaron no tener tiempo para recibir a personas ajenas a la empresa o al proyecto en el que se esta trabajando. Es por esto que muchas de las encuestas que se presentan en esta investigación se realizaron a través de correo electrónico, esto en la primera parte del proyecto. Para la segunda parte y final, se logro obtener entrevistas con personas que trabajaban en la captura de requisitos, pero por problemas burocráticos de las respectivas empresas, estas entrevistas no pudieron ser almacenar en medios multimedia y sólo se consiguió realizar una fotografía de algunos de los entrevistados.

Para las entrevistas realizadas a los profesores y alumnos del departamento, no se encontró mayores problemas, salvo que no se consiguió la entrevista a algunos de los profesores que dictan las asignaturas relacionadas con ingeniería de software, ya que no frecuentan el departamento por problemas personales.

En la entrevista realizada a los ingenieros con experiencia se pudo determinar lo siguiente:

Lo más difícil del proceso de captura de requisitos es lograr que los futuros usuarios sistema expresen con exactitud sus necesidades, por lo cual, es muy difícil entender estas peticiones. Además, una vez determinado los requerimientos, es complejo llevarlos a un lenguaje no ambiguo. Otra de las complicaciones al realizar este proceso, es determinar la magnitud del proyecto, los tiempos que se utilizarán para el desarrollo y los costos de este.

Ante la pregunta ¿Es la experiencia determinante? Las respuestas fueron muy variadas, algunos creen que es indispensable tener experiencia en el proceso para conseguir buenos resultados. Otros opinan que sólo el encargado necesita experiencia para poder guiar al equipo en el proceso. Otro grupo cree que no es necesaria, si bien ayuda al momento de realizar las entrevistas a los clientes, un bueno dominio de las metodologías utilizadas y un correcto seguimiento de estas, ayudan a realizar un buen proceso, en otras palabras, si un novato realiza la captura y sigue correctamente la metodología puede obtener buenos requerimientos.

Cuando se les consulto sobre el trabajo en grupos multidisciplinarios, para sorpresa del realizador de esta investigación, la respuesta más frecuente fue que se realiza la captura de requisitos, normalmente, en grupos multidisciplinarios, y que los resultados obtenidos de estos grupos son buenos, aunque depende del encargado del equipo, el cual tiene como labor reunir todos los puntos de vista y expresarlos de manera de generar la sinergia. En contraparte, algunas personas nunca habían trabajado en grupos multidisciplinarios, pero creen que hacerlo favorece el proceso de captura.

Al consultarles sobre si existe alguna técnica o herramienta que ayude al proceso, la mayor parte de los encuestados respondió que la mejor técnica es la utilización de metodologías, apoyadas por herramientas de software para diagramar o expresar en forma gráficas los requerimientos, así también se mantiene un orden en el proceso.

Cuando se les pregunto sobre el rol que cumple un ingeniero informático en el proceso de toma de requerimiento algunos respondieron que depende de él la elección de la metodología apropiada para la captura y desarrollo del sistema que se está solicitando. También se propuso que era el encargado de determinar la viabilidad del sistema basándose en los requerimientos obtenidos. Otras personas opinaron que de él dependen la clasificación, el ordenamiento y priorizar los requisitos.

Respecto a las habilidades o capacidades que debe tener un ingeniero informático para realizar la toma de requisitos los entrevistados respondieron que las principales capacidades, en orden de importancia, son:

  • Utilización de metodologías para el desarrollo y un orden en la aplicación de la metodología utilizada y en la documentación.
  • Poseer una habilidad comunicativa, para poder expresarse correctamente en las entrevistas con los clientes y poder comprender a estos.
  • Capacidad de aprendizaje, para poder aprender las reglas del negocio rápidamente para así poder comprender de mejor manera los requisitos expresados por los clientes.
  • Buena redacción y ortografía para lograr expresar de buena forma los requisitos.
  • Capacidad de reconocer los errores cometidos y poder reiniciar el proceso si se cometió un error en el desarrollo

Cuando se les preguntó sobre si se cree que se puede preparar a los estudiantes en las habilidades para la toma de requerimiento, la respuesta fue unánime, es posible y necesario realizar un desarrollo en las habilidades de los estudiantes, especialmente las capacidades del lenguaje y desarrollo personal.

Al momento de preguntar cuáles serían las habilidades mínimas que exigirían al momento de contratar a un ingeniero para el proceso de toma de requisitos, las respuestas se ajustaron a las habilidades que deberían poseer los ingenieros para la realización del proceso, mencionadas anteriormente, sin embargo apareció una nueva competencia, la cual es referida a la calidad de software y sobre un buen dominio de las técnicas de ingeniería software.

Finalmente cuando se les pregunto sobre que consejo les darían a los nuevos ingenieros, los consejos que más se repitieron fueron que aprendieran la utilización de metodologías de desarrollo, que sean más humildes y soliciten accesoria cuando la metodología no está dando los frutos esperados o cuando no se sabe que metodología utilizar para el desarrollo.

En la entrevista a los alumnos de la carrera de ingeniería informática se obtuvieron los siguientes antecedentes:

La mayoría de los alumnos creen que para la captura de requisitos se necesita habilidades comunicativas, carismas y empatía. Conocer las metodologías de desarrollo y poseer una buena relación interpersonal. Ellos creen que se debe entregar más conocimientos de arquitectura de software y se debería enfocar los ramos de ingeniería software más a analizar proyectos reales e incentivar que salgan los alumnos a buscar requisitos reales.

Finalmente, la mayoría de los encuestados creen que los tópicos vistos en los ramos de ingeniería software no contribuyen a la preparación para la captura de requisitos, si a la elaboración posterior de estos, pero no al proceso de captura de requisitos.

Por último se analizarán las respuestas de las personas encargadas de los ramos de ingeniería de software.

Ellos concuerdan en que los alumnos llegan con una base débil en la captura de requisitos, ya que hace falta más practica. Falta un mayor énfasis en las cualidades administrativas y de gestión de proyectos informáticos.

Finalmente, todos los encuestados, entre profesores, ayudantes y alumnos, creen que al terminar los ramos de ingeniería de software, los alumnos no quedan bien preparados para enfrentar una toma de requerimiento real, a excepción de algunos alumnos que investigan o buscan proyectos reales para realizarlos durante el desarrollo de los mencionados cursos.

martes, 6 de noviembre de 2007

Primera parte

En esta sección se revisarán algunos conceptos de la toma de requerimientos y la metodología a utilizar para alcanzar los objetivos planteados anteriormente.

Existen diversas maneras de realizar el proceso de toma de requerimientos, y muchas maneras de representar los requerimientos recogidos. Primero se mencionaran algunos de los métodos utilizados para descubrir los requisitos de un sistema:
  • Encuesta cerrada: El o los clientes deben responder una encuesta escrita y rígida, sin realizar una interacción entre cliente y desarrollador
  • Encuesta abierta: Los stakeholders son interrogados por el equipo desarrollador para así lograr una mejor comprensión de las necesidades de estos
  • Casos de uso: Técnica basada en escenarios, la cual muestra el tipo de interacción y los actores involucrados en esta
Luego de descubrir o determinar los requisitos del sistemas, es necesario redactarlos o exponerlos en términos comprensibles para el cliente, lo cual lleva a otro problema, la forma de exponerlos y el lenguaje utilizado, ya que el lenguaje natural es demasiado ambiguo. Esto es muy importante, ya que una mala redacción o representación de estos, puede resultar en un mal entendimiento de los requisitos por parte de los clientes y de los propios desarrolladores, lo que conlleva problemas durante el desarrollo. Para la representación de los requisitos, UML es muy utilizado, principalmente con la técnica de los casos de usos, para esta se pueden representar los casos de usos de dos maneras.
  • Diagramas UML: Consiste en realizar diagramas donde se muestra el usuario y la relación que tiene con las distintas funcionalidades. Esto se puede ver gráficamente en la siguiente figura.
  • Plantilla: En este caso se utiliza una plantilla para expresar el requerimiento, la plantilla se puede ver más abajo. En esta imagen se puede ver que tiene el nombre del requerimiento, los participantes, las precondiciones, una descripción y las excepciones

Finalmente en esta sección, se explicará la forma en la que se procedió durante el desarrollo de la investigación. Primero, y como ya se explico en un post anterior, se determino un problema, el cual consistían en determinar las capacidades necesarias que debe poseer una persona, o más específicamente un ingeniero informático, que desarrolló esta actividad. Esta problemática surge debido a que un gran porcentaje de los fracasos en el desarrollo de software son debido a una mala captura de requisitos, ya sea por una captura incompleta o por una mala comprensión de estos por ambas partes. Por esta razón es que se decidió realizar esta investigación.

Durante el desarrollo, se decidió también realizar una investigación sobre que tan preparados creen que salen los alumnos de la carrera de ingeniería informática.

Se utilizará el método científico en esta investigación, por lo cual es necesario proponer una hipótesis. En este caso la hipótesis será:

"Para el proceso de toma de requerimientos es fundamental tener una buena disposición para escuchar al cliente y buen dominio de las comunicaciones. Además, es necesario tener una buen dominio sobre alguna técnica de captura de requisitos y es deseable la realización de este proceso en grupos multidisciplinarios"

También consideraremos la siguiente hipótesis para el segundo problema propuesto:

"Los estudiantes de ingeniería informática no salen bien preparados para realizar el proceso de captura de requisito"

Luego de plantear estas hipótesis es necesario experimentar o recolectar datos para posteriormente realizar un estudio acabados de estos y poder determinar la veracidad de las hipótesis propuestas.

Para terminar, se generarán los alcances, limitaciones y las conclusiones obtenidas de la investigación.

Toma de requisitos - Un proceso dificil

En el presente artículo se expondrán los resultados obtenidos en una investigación realizada sobre la toma de requerimiento, la cual consistió en determinar las cualidades, competencia y habilidades que debería poseer una persona que trabaje en este proceso, más específicamente, que debería poseer un ingeniero informático que realice este proceso para la construcción de un sistema informático.

Para lograr determinar estas capacidades y competencias se realizaron una serie de entrevistas y encuestas a diferentes profesionales, en su mayoría ingenieros informáticos, con experiencia en el proceso. Se expondrán algunas de las entrevistas realizadas.

La investigación se realizó en el marco del desarrollo de la asignatura "Comportamiento humano en el trabajo" dictada el segundo semestre de 2007, para la carrera de Ingeniería Civil Informática en la Universidad de Santiago de Chile dictada por la doctora Eliana Covarrubias.

En el transcurso de la investigación se estudió también la preparación que reciben los estudiantes de las carreras de ingeniería informática para la captura de requisitos, para lo cual se realizó un estudio sobre las habilidades y competencias que se entregan durante los cursos relacionados con la ingeniería de software y se compararon con las obtenidas anteriormente.