35
Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software Miguel Toro Huelva, 2014

Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Embed Size (px)

DESCRIPTION

Rompedora presentación del profesor Miguel Toro de la Universidad de Sevilla en el Segundo Congreso Internacional de Ingeniería de Software.

Citation preview

Page 1: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Miguel Toro

Huelva, 2014

Page 2: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

El enfoque del Grado en Ingeniería del Software

Prioridades en Investigación

Page 3: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

El enfoque del Grado en Ingeniería del Software

Prioridades en Investigación

Page 4: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

El punto de partida

La primera reflexión debe centrarse en aclarar los objetivos de la Universidad y consecuentemente las habilidades que queremos proporcionar a los egresados

Page 5: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Especialidades más demandadasEn Sevilla se diseñaron los títulos de Ingeniería del

Software, Ingeniería de Computadores y Tecnologías Informáticas.

La primera observación es que la demanda de Ingeniería del Software es muy superior a los otros dos grados.

De los 226 matriculados en IS en 2013, 192 fue su primera opción (85%) y 12 su segunda opción (5% más).

Por contra, en IC y en TI solo un tercio fue primera opción.

Este año hemos superado y por mucho el número de plazas de IS ofertadas (225) con el de solicitantes en primera opción (297)

Page 6: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Una primeras razones

Creemos que la mayor aceptación del título de Ingeniería del Software es debido al punto de vista adoptado sobre el objetivo de las enseñanzas de Informática.

Un punto de vista que ve la informática como una Ingeniería y que hemos defendido en muchas ocasiones.

Page 7: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Objetivos del Grado en IS

Creemos que el punto de partida para el diseño del título en ISW, como hemos defendido en muchas ocasiones, son las necesidades de las empresas en las que trabajarán nuestros egresados. El perfil profesional que demandan.

Creemos que tomar como complemento la guía del SWEBoK es una buena idea… pero sólo como complemento, no como base o como punto de partida.

Page 8: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Empresas en las que trabajarán nuestros egresados

Las que generan la mayor parte de los puesto de trabajo, son empresas de desarrollo de software con énfasis en el desarrollo sistemas de información web.

Page 9: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Perfil Profesional

El perfil profesional para nuestros egresados debe ser el de Ingeniero de Sistemas de Información Web.

Unos Ingenieros que tengan una visión muy amplia de la tecnología necesaria para construir una aplicación Web que funcione. Pero que también tienen que conocer las leyes aplicables en nuestro campo (ley de protección de datos, etc.), cómo montar un CPD (con posible soporte en la nube), cómo es un proyecto, cómo se gestiona un proyecto, etc.

Page 10: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Orden de las enseñanzasSi hablamos de los profesionales que

pretendemos formar, hablamos de proyectos.

Nuestros estudiantes salen a día de hoy con algunas nociones generales que se les imparten en el último curso.

No deberíamos empezar por las asignaturas de programación.

Deberíamos empezar a llevar adelante proyectos: los roles habituales dentro de un equipo de trabajo, las herramientas de gestión y seguimiento de proyectos, planificación, presupuestos, etc.

Page 11: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Orden de las enseñanzas

Ya en los años 90 Meyer proponía la inversión del currículo. Había que llevar a los estudiantes desde el rol del consumidor de software, y reutilizador de componentes, al de productor de software a través de un proceso de apertura progresiva de las cajas negras.

Ahora queremos proponer una inversión del curriculum. Un enfoque que va más allá: un enfoque orientado a proyectos.

Page 12: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Programa de estudios

Cuatro Bloques (podrían se cuatro curso o agruparse en tres).◦Fundamentos◦Construcción de pequeñas aplicaciones◦Programación en el mundo real◦Prácticas en empresas y optativas

Page 13: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Primer Bloque: Fundamentos

Proyectos de desarrollo de SoftwareModelado de RequisitosArquitectura de Software

Los fundamentos los vemos desde un punto de vista de inversión del currículo en una perspectiva de enseñanza orientada a Proyectos de Software

Page 14: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Proyectos de Desarrollo de Software

El objetivo sería transmitir a los estudiantes la idea de proyecto como artefacto fundamental en su vida profesional.

El objetivo no es entrar en profundidad, es simplemente acostumbrarlos a que todo debe ocurrir en el contexto de un proyecto y que deben acostumbrase desde el primer día a realizar el seguimiento del proyecto usando las herramientas adecuadas.

Se usarían herramientas concretas para la gestión de proyectos y se les explicarían las fases típicas: licitación, elicitación de requisitos, pruebas, diseño, programación, roles típicos y responsabilidades, control de calidad mediante pruebas, etc. ProjETSII (usada en la Escuela de Sevilla) puede ser una opción.

Page 15: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Modelado de Requisitos

Aquí empezamos a trabajar con proyectos de desarrollo de software, pero desde el punto de vista del cliente. El objetivo tiene que ser desarrollar las capacidades de comprensión de un dominio, de abstracción y de modelado del mismo

Usaríamos básicamente lenguaje natural, wireframes para maquetar interfaces de usuario y UML para representar algunos requisitos.

Page 16: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Arquitectura de Software

En esta unidad vamos a complementar la de modelado de requisitos. Vamos a estudiar el diseño de la arquitectura como un mapping entre los requisitos y la tecnología.

Explicaríamos una arquitectura de referencia para construir sistemas de información web.

Podríamos usar la que propone Spring, pues es muy general, está muy trabajada y el resto de tecnologías usan variantes muy similares.

El énfasis estaría en la calidad del diseño desde el punto de vista de cumplir con los requisitos y tener en cuenta los principios generales del diseño

Page 17: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Segundo Bloque: Construcción de pequeñas aplicaciones

Ha llegado el momento de entrar en los detalles y de empezar a tocar el código y las herramientas de desarrollo.

El Entorno de Trabajo Lenguajes de Programación Desarrollo de Sistemas de

Información Web

Page 18: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

El Entorno de Trabajo

Las herramientas necesarias para desarrollar software: el sistema operativo, el entorno de desarrollo, el gestor de bases de datos, los servidores de aplicaciones, el sistema de integración continua, …

La clave es la visión integrada de los temas anteriores. Ahora son asignaturas separadas y desconectadas

Page 19: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Lenguajes de ProgramaciónEn esta unidad usaríamos al menos los

siguientes lenguajes: Java y C# como paradigmas de lenguajes

de programación para el servidor. ECMA script, como paradigma de

lenguaje para el cliente, junto HTML. Intentaríamos siempre transmitir la idea

de que en el mundo hay muchos lenguajes y que tienen que tener capacidad para aprenderlos en un tiempo razonable.

Page 20: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Desarrollo de Sistemas de Información Web

En esta unidad estudiaríamos básicamente: las capas de dominio, de persistencia, de servicios, y de presentación.

El hilo conductor debe ser la calidad y para conseguirla lo fundamental son las pruebas, la valoración de los principios de diseño, etcétera.

Page 21: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Tercer Bloque: Programación en el mundo realPara eso proponemos las

siguientes unidades: Desarrollo de Aplicaciones Web II:

Aplicaciones distribuidas, Equilibrio de carga, Seguridad, Análisis de Rendimiento, Optimización, etc.).

Diseño de interfaces de Usuario: HTML, CSS, responsive design, accesibilidad, etc.

Page 22: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Tercer Bloque: Programación en el mundo real

Integración de Sistemas y de Información: Cómo integrar software que ya está funcionando.

Se podrían estudiar DSL específicos y otras tecnologías como Mule, Spring Integration o incluso servicios web SOAP, BPEL, buses de servicios en general, etc.

Reutilización de esquemas en Bases de Datos Relacionales

Interfaces de escritorio Metodologías pesadas del estilo Métrica.

Page 23: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Cuarto Bloque: Práctica profesional y optativas

Proyecto ProfesionalPráctica en empresa realOptativas

Page 24: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Sobre la Docencia

Todas las asignaturas deberían estar basadas en proyectos: unas clases de teoría para presentar conceptos, técnicas, herramientas y métodos, unas clases de problemas para practicar un poquito y varias clases para aplicar lo aprendido a un proyecto lo más realista que resulte posible.

La evaluación tiene que estar basada exclusivamente en los resultados de los proyectos

Page 25: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Prioridades en Investigación en Ingeniería del Software

Page 26: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Algunas líneas de investigación

Algoritmos de AproximaciónBig Data y Linked DataAnálisis de redes socialesProcesos de negocioContratos de nivel de servicio

(SLA)Generación automática de

pruebas

Page 27: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Algoritmos de Aproximación

Pero la cuestión es que muchos de los problemas no computables o intratables tienen gran importancia práctica.

Esto nos lleva a tener que considerar soluciones imperfectas y abandonar, en muchos casos, la búsqueda del objetivo de la solución perfecta.

Page 28: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Algoritmos de AproximaciónActualmente una muy fructífera de

investigación busca obtener soluciones parciales o aproximadas para problemas no computables o intratables, que pueden ser extraordinariamente útiles en la práctica.

Además esta línea de investigación pretende estimar la calidad de la solución obtenida, la cercanía a la solución óptima, en función del tamaño de los datos de entrada y del tiempo de cálculo empleado

Page 29: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Algoritmos de Aproximación

Page 30: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Big Data y Linked DataHoy en día el término Big Bata designa

todo tipo de conceptos entre los que se incluyen análisis de grandes cantidades de datos, analítica de redes sociales, herramientas de última generación para gestionar los datos, datos en tiempo real y mucho más.

Independientemente de la etiqueta se empieza explorar cómo procesar y analizar de nuevas formas toda la información disponible en la Web.

Page 31: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Big Data y Linked Data Combinación de técnicas de Ingeniería del Software con

algoritmos de Minería de Datos. La biblioteca de software Apache Hadoop es un marco que

permite procesar de manera distribuida grandes conjuntos de datos entre agrupaciones de ordenadores con modelos de programación sencillos.

MapReduce es un modelo de programación utilizado en combinación con Haddop.

Está diseñada para aumentar la escala de servidores individuales a miles de máquinas, cada una de ellas con capacidades informáticas y de almacenamiento locales

Linked Data: Crear enlaces entre datos/entidades que están relacionadas, es decir, encontrar los enlaces y asegurar la calidad de las fuentes de información.

Técnicas para visualizar linked data por humanos  Distributed Query. Técnicas para distribuir una consulta entre

las distintas fuentes enlazadas y después reunir los datos obtenidos 

Page 32: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Análisis de Redes Sociales

Detección automática de conductas fraudulentas en redes sociales.

Análisis de confianza y desconfianza en redes sociales

Minería de opiniones y de sentimientos

Análisis de influencia

Page 33: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Procesos de negocio

Análisis procesos de negocioNotaciones declarativas e

imperativas para procesos de negocio

Evaluación de procesos de negocio

Procesos de negocio y bases de datos

Page 34: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Contratos de nivel de servicio (SLA)El propósito primario de los SLA es

especificar y clarificar las expectativas del funcionamiento, establecer la responsabilidad, y detallar las alternativas y consecuencias si el funcionamiento o la calidad del servicio no son los acordados por ambas partes.

Los SLA deben poder ser comprobados automáticamente y en el futuro negociados automáticamente.

Page 35: Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software

Generación automática de pruebas

Los casos de pruebas necesarios para probar un software son infinitos.

Escoger los casos de prueba idóneos y generarlos tan automáticamente como sea posible es una tarea clave