Prioridades en IS: Proyectos, Big Data, Aproximación
1. Algunas Prioridades en la
Enseñanza e Investigación en
Ingeniería del Software
Miguel Toro
Huelva, 2014
2. El enfoque del Grado en
Ingeniería del Software
Prioridades en Investigación
3. El enfoque del Grado en Ingeniería
del Software
Prioridades en Investigación
4. 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
5. Especialidades más
demandadas
En 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)
6. 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.
7. 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.
8. 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.
9. 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.
10. Orden de las enseñanzas
Si 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.
11. 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.
12. 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
13. Primer Bloque: Fundamentos
Proyectos de desarrollo de Software
Modelado de Requisitos
Arquitectura 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
14. 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.
15. 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.
16. 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
17. 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
18. 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
19. Lenguajes de Programación
En 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.
20. 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.
21. Tercer Bloque: Programación en
el mundo real
Para 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.
22. 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.
24. 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
26. Algunas líneas de
investigación
Algoritmos de Aproximación
Big Data y Linked Data
Análisis de redes sociales
Procesos de negocio
Contratos de nivel de servicio (SLA)
Generación automática de pruebas
27. 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.
28. Algoritmos de Aproximación
Actualmente 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
30. Big Data y Linked Data
Hoy 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.
31. 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
32. 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
33. Procesos de negocio
Análisis procesos de negocio
Notaciones declarativas e imperativas
para procesos de negocio
Evaluación de procesos de negocio
Procesos de negocio y bases de
datos
34. 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.
35. 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