CHAPTER 1 : INTRODUCTION
2.4 SPECIAL OUTPUT METHODS
El objetivo principal del SE2004 (IEEE 2004) es proporcionar directrices a las instituciones académicas y agencias de acreditación sobre qué debería enseñarse en los cursos que conforman una titulación de grado en ingeniería del software. Este cuerpo de conocimiento incluye todas las disciplinas que deberían de constituir los cursos, independientemente de su tipo. Así, se incluyen algunas como son fundamentos de matemáticas o ingeniería.
Este cuerpo de conocimiento está compuesto por 10 áreas de conocimiento diferentes y cada una de ellas a su vez por varias unidades de conocimiento, que se estructuran en diferentes tópics. La Figura 2-7 muestra la organización del SE2004 en áreas y unidades de conocimiento.
EL SE2004 propone que si los estudios se definen en base a él, entonces los estudiantes: • Adquirirán el conocimiento, las habilidades y aspectos profesionales para comenzar a
trabajar como ingeniero de software.
• Serán capaces de trabajar de forma individual y como parte de un equipo estregando artefactos software de calidad.
• Serán capaces de conciliar los objetivos conflictivos del proyecto y buscar compromisos aceptables dentro de las limitaciones.
• Serán capaces de diseñar soluciones adecuadas en uno o varios dominios de aplicación, utilizando métodos de ingeniería de software que integren aspectos éticos, sociales, legales y económicos.
• Demostrarán capacidad de entendimiento y aplicación de teorías actuales, modelos y técnicas que proporcionen la base para la identificación y análisis de problemas, diseño de software, desarrollo, implementación, verificación y documentación.
• Demostrarán capacidad de entendimiento y apreciación de la importancia de la negociación, hábitos de trabajo eficientes, liderazgo, y buena comunicación con los interesados en el proyecto.
• Aprenderán nuevos modelos, técnicas y tecnologías cuando aparezcan y apreciar la necesidad de continuar con su desarrollo profesional.
Figura 2-7. Estructura del SE2004.
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.
El área de conocimiento Computing Essentials propone que un ingeniero de software debe ser formado en el diseño y construcción de productos software, incluyendo el conocimiento necesario para la transformación de un diseño en una implementación, las
herramientas utilizadas durante ese proceso, así como métodos formales de construcción de software. Las habilidades y capacidades adquiridas por el ingeniero de software en esta área de conocimiento son igualmente requeridas en un contexto global, pero además será necesario formarle para desarrollar otras competencias que le permitieran realizar estas actividades en un equipo de desarrollo software global. La Tabla 2-5 y la Tabla 2-6 resumen las competencias generales y técnicas identificadas a partir de las recomendaciones propuestas por el SE2004.
El área de conocimiento Mathematical and Engineering Fundamentals tiene por objetivo proporcionar al ingeniero de software el sustento científico y teórico necesario para la construcción de productos software con los atributos necesarios, proveyendo así de la base matemática necesaria para modelar y facilitar el razonamiento sobre los productos de ingeniería de software y sus interrelaciones, así como constituir la base para un proceso de diseño de software predecible. Las habilidades y capacidades adquiridas por el ingeniero de software en esta área de conocimiento son igualmente requeridas en un contexto global. La Tabla 2-5 y la Tabla 2-6 resumen las competencias generales y técnicas identificadas a partir de las recomendaciones propuestas por el SE2004.
El área de conocimiento de Professional Practice, está relacionado con la adquisición del conocimiento, habilidades y actitudes que los ingenieros de software deben poseer para realizar la práctica de la ingeniería del software de un modo profesional responsable y ético. Las habilidades y capacidades adquiridas por el ingeniero de software en esta área de conocimiento son igualmente requeridas en un contexto global. La Tabla 2-5 y la Tabla 2-6 resumen las competencias generales y técnicas identificadas a partir de las recomendaciones propuestas por el SE2004.
En el área de conocimiento Software Modeling and Analysis, el ingeniero de software adquiere las habilidades y capacidades necesarias para poder realizar el modelado y análisis de un producto. Este conocimiento es esencial para poder documentar y evaluar decisiones de diseño y alternativas. Las habilidades y capacidades adquiridas por el ingeniero de software en este área de conocimiento son igualmente requeridas en un contexto global, pero además será necesario formarle para desarrollar otras competencias que le permitieran realizar estas actividades en un equipo de desarrollo software global. La Tabla 2-5 y la Tabla 2-6 resumen las competencias generales y técnicas identificadas a partir de las recomendaciones propuestas por el SE2004.
El área de conocimiento Software Design está dirigida a que el ingeniero de software adquiera las capacidades necesarias para el uso y entendimiento de técnicas, estrategias, representaciones y patrones que son empleados para determinar cómo implementar un componente o sistema. Las habilidades y capacidades adquiridas por el ingeniero de software en esta área de conocimiento son igualmente requeridas en un contexto global, pero además será necesario formarle para desarrollar otras competencias que le permitieran realizar estas actividades en un equipo de desarrollo software global. La Tabla 2-5 y la Tabla 2-6 resumen las competencias generales y técnicas identificadas a partir de las recomendaciones propuestas por el SE2004.
El área de conocimiento Software Verification and Validation tiene por objetivo dotar al ingeniero de las habilidades y capacidades necesarias para llevar a cabo actividades de
verificación y validación sobre un sistema o componente, siendo éste capaz de utilizar tanto técnicas estáticas como dinámicas para conseguir este objetivo. Las habilidades y capacidades adquiridas por el ingeniero de software en esta área de conocimiento son igualmente requeridas en un contexto global, pero además será necesario formarle para desarrollar otras competencias que le permitan realizar estas actividades en un equipo de desarrollo software global. La Tabla 2-5 y la Tabla 2-6 resumen las competencias generales y técnicas identificadas a partir de las recomendaciones propuestas por el SE2004.
El área de conocimiento Software Evolution queda fuera del alcance de esta tesis doctoral, puesto que el objetivo se centra en la evolución y mantenimiento de un producto software una vez que éste ya ha sido desarrollado. En el contexto de este trabajo, el equipo de trabajo se disuelve en el momento que el producto es finalizado por lo que esta situación debería de tratarse como un nuevo proyecto y, por tanto, se tendrían que realizar todas las actividades propuestas en la solución presentada en esta tesis doctoral.
El objetivo del área de conocimiento de Software Process es que el ingeniero de software aprenda a describir los modelos de proceso de ciclo de vida del software que se utilizan comúnmente, los contenidos de estándares de proceso institucionales y, además, las habilidades necesarias para poder definir, implementar, medir, gestionar, modificar y mejorar procesos; así como utilizar un proceso definido para realizar las actividades de trabajo técnico y de gestión necesarias para el desarrollo del software. En el contexto de esta tesis, únicamente nos interesan las competencias necesarias para la utilización de un proceso definido, que además no varían si el contexto es distribuido. La Tabla 2-5 y la Tabla 2-6 resumen las competencias generales y técnicas identificadas a partir de las recomendaciones propuestas por el SE2004.
El área de conocimiento Software Quality está dirigido a que el ingeniero de software adquiera las habilidades y capacidades necesarias para crear productos de trabajo de calidad, tanto intermedios como finales, así como para definir y utilizar procesos de trabajo de calidad que se utilicen en el desarrollo o modificación de productos de trabajo. Las habilidades y capacidades adquiridas por el ingeniero de software en esta área de conocimiento son igualmente requeridas en un contexto global, pero además será necesario formarle para desarrollar otras competencias que le permitan realizar estas actividades en un equipo de desarrollo software global. La Tabla 2-5 y la Tabla 2-6 resumen las competencias generales y técnicas identificadas a partir de las recomendaciones propuestas por el SE2004.
Finalmente, el área de conocimiento de Software Management tiene por objetivo que el ingeniero de software adquiera las capacidades necesarias para realizar tareas de planificación, control y seguimiento de todas las fases del ciclo de vida del software. Las habilidades y capacidades adquiridas por el ingeniero de software en esta área de conocimiento son igualmente requeridas en un contexto global, pero además será necesario formarle para desarrollar otras competencias que le permitan realizar estas actividades en un entorno global. La Tabla 2-5 y la Tabla 2-6 resumen las competencias generales y técnicas identificadas a partir de las recomendaciones propuestas por el SE2004.
Competencia General
Computing Essentials Mathematical and Engineering Fundamenta
ls
Professional Practice Software Modeling and Analysis Software Design Software Verification and Validation Software Process Software Quality Software Management
Capacidad de análisis y síntesis Gestión de reuniones
Comunicación en grupo Resolución de conflictos Gestión de equipos Gestión de personas
Leer, escribir, entender, resumir Habilidades para la realización de presentaciones
Capacidad de organización y planificación
Conocimiento de una lengua extranjera Capacidad de gestión de la información Resolución de problemas Toma de decisiones Razonamiento crítico Creatividad
Tabla 2-5. Competencias Generales identificadas en el SWEBOK.
Competencia Técnica
Computing Essentials Mathematical and Engineering Fundamenta
ls
Professional Practice Software Modelling and Analysis Software Design Software Verification and Validation Software Process Software Quality Software Management
Modelado y Gestión de Bases de datos
Técnicas y métodos empíricos y experimentales
Análisis estadístico
Capacidad para entender y evaluar especificaciones internas y
Competencia Técnica
Computing Essentials Mathematical and Engineering Fundamenta
ls
Professional Practice Software Modelling and Analysis Software Design Software Verification and Validation Software Process Software Quality Software Management
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
Diseño gráfico de Interfaces Prueba
Tabla 2-6. Competencias Técnicas identificadas en el SE2004.
Para concluir con este subapartado, hemos visto que el cuerpo de conocimiento SE2004 proporciona las habilidades y capacidades necesarias para la el desempeño de la profesión de ingeniero de software en un contexto tradicional presencial. Aunque destaca la importancia aprender a utilizar herramientas de gestión de la configuración de software, no proporciona ningún soporte adicional a cerca del manejo y uso de herramientas de trabajo colaborativo que facilitan la comunicación y coordinación en entornos de trabajo distribuidos.
El SE2004 ayuda a los ingenieros de software a desarrollar capacidades para la selección del personal y construcción y motivación del equipo. También les permite adquirir habilidades que favorecen la comunicación fluida y la realización de reuniones de trabajo de forma eficiente.
A través de diferentes unidades de este cuerpo de conocimiento los ingenieros de software adquieren competencias relativas al liderazgo de equipos, facilitación de la comunicación entre integrantes del equipo de trabajo y a la selección de medios o tecnologías de comunicación. Además, los ingenieros de software adquieren las capacidades y habilidades que se requieren para el desarrollo de un producto software, así como para ejecutar el proyecto en sus diferentes fases. Pero, a pesar de ello, los estudiantes no son formados para
la realización de estas actividades en un contexto de desarrollo software global. Esta deficiencia trata de paliarse en el contexto de esta tesis doctoral incluyendo en la solución propuesta en la misma el conjunto de competencias que es necesario adquirir para trabajar de forma eficiente en un equipo de desarrollo software global.