El SWEBOK (Abran et al.2004) incluye únicamente las áreas de conocimiento que se deberían de conocer para desarrollar de forma eficaz la profesión de ingeniero de software. No incluyendo información de disciplinas relacionadas como pueda ser la gestión de proyectos, la gestión de la calidad, las matemáticas, y otras; que también se deberían conocer para desempeñar esta profesión de forma eficaz. A estas últimas disciplinas en el SWEBOK se las conoce como disciplinas relacionadas y no se encuentran desarrolladas. La Figura 2-6 muestra la organización de este cuerpo de conocimiento en áreas de conocimiento y tópics.
Este cuerpo de conocimiento tiene cinco objetivos principales, que son: • Promover una visión consistente de la ingeniería del software.
• Clarificar el lugar y establecer los límites que ocupa la ingeniería del software respecto a otras disciplinas como son: computer science, o project management, entre otras.
• Caracterizar los contenidos de la disciplina de la ingeniería del software.
• Proporcionar un acceso actualizado al cuerpo de conocimiento de la ingeniería del software.
• Proporcionar los fundamentos para el desarrollo del currículum y para la certificación individual.
A continuación, se van a describir las competencias generales y técnicas identificadas en este cuerpo de conocimiento, para cada una de las áreas que incluye, y que son aplicables y útiles en el contexto del desarrollo de software global.
Figura 2-6. Estructura del SWEBOK
El área de conocimiento Software Requirements, propone que un ingeniero de software debe ser capaz de realizar de forma correcta la extracción, análisis, especificación y validación de requisitos. Habilidades que son igualmente requeridas en un contexto global y de la misma
forma, puesto que no se ven afectadas por la distribución geográfica. Para poder realizar estas actividades de forma correcta, se han identificado un conjunto de competencias generales y técnicas que debería poseer el ingeniero de software, Véase Tabla 2-3 y Tabla 2-4.
El área de Software Design tiene por objetivo desarrollar diferentes modelos relativos al diseño de la arquitectura y al diseño detallado del sistema, que permitan implementar la solución. Las habilidades y capacidades requeridas para realizar este trabajo son también necesarias en un equipo de desarrollo software global, si bien, como éste es un trabajo que se realiza normalmente en equipo, los ingenieros de software deberían adquirir capacidades adicionales que les permitiera desarrollar esta actividad en un contexto disperso geográficamente. Para poder realizar esta actividad de forma correcta, se han identificado un conjunto de competencias generales y técnicas que debería poseer el ingeniero de software, Tabla 2-3 y Tabla 2-4.
El área de Software Construction incorpora un conjunto de tópics que tienen por objetivo formar al ingeniero de software en la codificación y prueba de productos software. Al igual que el área anterior, las competencias desarrolladas en este son requeridas para un contexto global, pero se necesitan de otras nuevas que faciliten el desarrollo de la actividad en un contexto distribuido. Para poder realizar las actividades asociadas a este área de forma correcta, se han identificado un conjunto de competencias generales y técnicas que debería poseer el ingeniero de software, Véase Tabla 2-3 y Tabla 2-4.
Respecto al área de Software Testing, su objetivo es evaluar la calidad del producto software, identificar sus defectos y problemas y mejorarlo. Las competencias requeridas para el desempeño de esta actividad serán también necesarias en un contexto global, pero además deberán ser extendidas con otras que faciliten la realización de esta tarea en un entorno distribuido y disperso geográficamente. Para poder realizar las actividades asociadas a este área de forma correcta, se han identificado un conjunto de competencias generales y técnicas que debería poseer el ingeniero de software, Véase Tabla 2-3 y Tabla 2-4.
El área de Software Maintenance queda fuera del alcance de esta tesis, puesto que el objetivo se centra en la gestión de equipos de desarrollo software global, los cuales se disuelven una vez que el producto es finalizado. Por lo que las competencias requeridas para el desempeño de estas actividades no son necesarias en el caso de equipos de desarrollo software global.
El objetivo del área de Software Configuration Management es implementar un proceso de gestión de configuración que permita la gestión eficiente de la información y asegure que esta no está duplicada ni repetida. Las competencias identificadas para la realización de las actividades asociadas a éste área serán también necesarias en el caso de equipos de desarrollo software global, pero también tendrían que ser completadas para facilitar la realización de las mismas en un contexto global. Para poder realizar las actividades asociadas a este área de forma correcta, se han identificado un conjunto de competencias generales y técnicas que debería poseer el ingeniero de software, Véase Tabla 2-3 y Tabla 2-4.
El área de Software Engineering Management, al igual que la anterior, requiere del desarrollo de un conjunto de competencias que aseguren la correcta realización de actividades de planificación, coordinación, medición, monitorización, control y reporte. Estas habilidades y capacidades también serán necesarias en un contexto global, aunque como en este contexto se realizan de forma distribuida entre diferentes localizaciones, su ejecución requerirá de la adquisición de competencias adicionales. Para poder realizar las actividades asociadas a este área de forma correcta, se han identificado un conjunto de competencias generales y técnicas que debería poseer el ingeniero de software, Véase Tabla 2-3 y Tabla 2-4.
El área de Software Engineering Process tiene por objetivo implementar nuevos o mejores procesos que hagan más eficientes las prácticas actuales, ya sean prácticas individuales, de proyecto u organizacionales. Las competencias requeridas para esta área, al igual que las del de Software Maintenance, quedan fuera del alcance de la presente tesis doctoral.
El área de Software Engineering Tools and Methods tiene por objetivo seleccionar las mejores herramientas y métodos que soporten los diferentes procesos del ciclo de vida del software. Las competencias adquiridas en este área por los ingenieros de software, al igual que las vistas para el área de Software Requirements, son igualmente requeridas en los contextos globales, con el único condicionante que éstas tecnologías tienen que poder ser utilizadas de forma colaborativa y distribuida. Para poder realizar estas actividades de forma correcta, se han identificado un conjunto de competencias generales y técnicas que debería poseer el ingeniero de software, Véase Tabla 2-3 y Tabla 2-4.
Finalmente, el área de Software Quality tiene por objetivo definir diferentes recomendaciones dirigidas a conseguir un software de calidad. Estas recomendaciones se extienden a lo largo de todo el ciclo de vida del software e incluyen tanto técnicas estáticas como dinámicas. Las habilidades y capacidades necesarias para el desempeño de esta actividad también serán necesarias en un contexto global, aunque en tal contexto se realizan de forma distribuida entre diferentes localizaciones, su ejecución requerirá de la adquisición de competencias adicionales. Para poder realizar las actividades asociadas a este área de forma correcta, se han identificado un conjunto de competencias generales y técnicas que debería poseer el ingeniero de software, Véase Tabla 2-3 y Tabla 2-4.
Competencia General
Software Requirements Software Design Software Construction Software Testing Software Configuration Management Software Engineering Management Software Engineering Tools and M
ethod
s
Software Quality
Capacidad de análisis y síntesis Capacidad de organización y planificación
Conocimiento de una lengua extranjera
Competencia General
Software Requirements Software Design Software Construction Software Testing Software Configuration Management Software Engineering Management Software Engineering Tools and M
ethod s Software Quality Capacidad de gestión de la información Resolución de problemas Toma de decisiones Razonamiento crítico Creatividad
Tabla 2-3. Competencias Generales identificadas en el SWEBOK.
Competencia Técnica
Software Requirements Software Design Software Construction Software Testing Software Configuration Management Software Engineering Management Software Engineering Tools and M
ethod
s
Software Quality
Modelado y Gestión de Bases de datos
Capacidad para entender y evaluar especificaciones internas y externas Identificación de requerimientos Conocimiento de productos tecnológicos y tendencias de la tecnología
Dirección, planificación y gestión de proyectos
Diseño y arquitectura de sistemas de información
Documentación técnica Gestión del conocimiento Métodos y Herramientas para el diseño y desarrollo de sistemas Programación
Tabla 2-4. Competencias Técnicas identificadas en el SWEBOK.
Para finalizar este subapartado y, a modo de conclusión, se puede decir que el SWEBOK incluye una serie de áreas de conocimiento que permite a los ingenieros de software
desarrollar las habilidades y capacidades necesarias para la definición de la arquitectura software y el diseño conceptual. También incluye otras áreas que soporta la definición de roles y responsabilidades y la asignación de los mismos a tareas, lo cual permite a los ingenieros de software desarrollar las competencias asociadas a la realización de dichas actividades. Por otro lado, las habilidades requeridas para la realización de la estrategia de monitorización y seguimiento son soportadas sólo de forma parcial, puesto que únicamente apoya la adquisición de capacidades relativas a la medición, a través de la formación adquirida en las áreas de conocimiento de Software Engineering Management y Software Engineering Process.
Este cuerpo de conocimiento permite que los ingenieros de software adquieran habilidades y capacidades en el desarrollo del producto software, pero no les forma en la realización de esta actividad en un contexto de desarrollo software global. De igual modo las habilidades necesarias para realizar la gestión del conocimiento en un entorno distribuido son sólo desarrolladas en parte, a partir de las adquiridas en el área de Software Configuration Management. En la solución presentada en esta tesis doctoral se definen las competencias necesarias para abordar proyectos de desarrollo software en un contexto global, solventando los problemas y deficiencias encontradas.