Date post: | 15-Jun-2015 |
Category: |
Data & Analytics |
Upload: | steelmood |
View: | 246 times |
Download: | 0 times |
Algunas Prioridades en la Enseñanza e Investigación en Ingeniería del Software
Miguel Toro
Huelva, 2014
El enfoque del Grado en Ingeniería del Software
Prioridades en Investigación
El enfoque del Grado en Ingeniería del Software
Prioridades en Investigación
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
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)
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.
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.
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.
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.
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.
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.
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
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
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.
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.
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
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
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
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.
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.
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.
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.
Cuarto Bloque: Práctica profesional y optativas
Proyecto ProfesionalPráctica en empresa realOptativas
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
Prioridades en 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
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.
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
Algoritmos de Aproximación
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.
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
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
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
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.
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