ingeniando el software en tiempos de crisis
TRANSCRIPT
S
S
Ingeniando el software en tiempos de crisis
Francisco Sánchez CidJefe de Proyectos
Área de Desarrollos y Arquitectura Software
Ingeniando el SW en tiempos de crisis
1. El Instituto Tecnológico de Informática
2. Venturas y desventuras del sector IT
3. Ingeniería del Software en la práctica
4. Consejos
Contenido
El Instituto: www.iti.es
El ponente: Web: http://web.iti.upv.es/~fsanchez/ Correo: [email protected]
1. El Instituto Tecnológico de InformáticaQué somos
Centro Tecnológico especializado en Investigación, Desarrollo e Innovación en Tecnologías de la Información y Comunicación.
Somos una asociación sin ánimo de lucro y pertenecemos a la Red de Institutos Tecnológicos de la Comunidad Valenciana (junto al del Juguete, el Cerámico, el de la Madera..)
El ITI desarrolla una labor de I+D+I transfiriendo a las empresas la posibilidad de incorporar a sus productos las tecnologías y capacidades desarrolladas en proyectos de I+D+I
1. El Instituto Tecnológico de Informática
Recursos del ITI
Personal: 100 personas
Instalaciones: 1700 m2 (V)
Laboratorios de testeo y usabilidad
Laboratorios de prototipado
Aula de formación
Salas especialmente equipadas
Unidad técnica en Alcoy
94% titulados superiores y 34% doctores.
El 93% de las empresas TIC de la CV de más de 8 empleados son asociadas al ITI
Más de 110 proyectos de I+D+I cofinanciados en convocatoria pública o contratados directamente por empresas en 2009
Más de 100 artículos científicos publicados en 2009
Visión Artificial y Biometría
Reconocimiento de voz y
Tecnologías del Lenguaje
Sistemas Distribuidos
Optimización, Logística y Producción
Informática Industrial,
Comunicaciones y Automática
Departamentos I+D+I
1. El Instituto Tecnológico de Informática
Departamentos I+D+I
Área de Software Libre
Área de Sistemas
Área de Integración
de Tecnologías
Área de Desarrollos y Arquitecturas
SW
Área de Sistemas
Empotrados y Movilidad
Departamentos Tecnología y Servicios
Área de Desarrollos y Arquitecturas
Software
1. El Instituto Tecnológico de Informática
Tecnología y Servicios
Ingeniando el SW en tiempos de crisis
1. El Instituto Tecnológico de Informática
2. Venturas y desventuras del sector IT
3. Ingeniería del Software en la práctica
4. Consejos
Contenido
El Instituto: www.iti.es
El ponente: Web: http://web.iti.upv.es/~fsanchez/ Correo: [email protected]
2. Venturas y desventuras del sector IT en la CV
La situación
Fuente: Observatorio Valenciano para la Sociedad Tecnológica y del Conocimiento
2. Venturas y desventuras del sector IT en la CV
La situación
Fuente: Observatorio Valenciano para la Sociedad Tecnológica y del Conocimiento
2. Venturas y desventuras del sector IT en la CV
La situación
Fuente: Observatorio Valenciano para la Sociedad Tecnológica y del Conocimiento
2. Venturas y desventuras del sector IT en la CV
La situación
Fuente: Observatorio Valenciano para la Sociedad Tecnológica y del Conocimiento
2. Venturas y desventuras del sector IT en la CV
La problemática
Estamos en crisis
Mucho trabajo, poco producto
Mucha subvención, poca iniciativa
Poco nivel de madurez
Directivos con escasos conocimientos de la Ing. del Software
Aún investigando, no hay un plan de explotación claro
2. Venturas y desventuras del sector IT en la CV
Por qué vienen a nosotros
Pongamos por caso… Una empresa del sector de la alimentación Fabrica máquinas que clasifican aceitunas Procesando imágenes Y usando expulsores de aire comprimido
Es decir, algo así…
2. Venturas y desventuras del sector IT en la CV
Por qué vienen a nosotros
2. Venturas y desventuras del sector IT en la CV
Por qué vienen a nosotros
Todo iba bien.
Tenían su máquina funcionando y las aceitunas y los aceituneros eran felices.
Pero entonces llegaron los malvados comerciales ¿Y si en vez de aceitunas queremos cocos? ¿Y si en lugar de cámaras de vídeo queremos
espectrógrafos? ¿Y si en lugar de aire comprimido queremos compuertas
de derivación?
2. Venturas y desventuras del sector IT en la CV
Por qué vienen a nosotros
Qué pasó: Cada situación una nueva máquina, cada máquina, un
nuevo equipo y un nuevo mantenimiento. Cada máquina su servicio técnico, y una evolución
particular Los fallos de una, se repetían en el resto Se duplicaba información de configuración y control de
errores
2. Venturas y desventuras del sector IT en la CV
Por qué vienen a nosotros
Razones: Arquitectura NO modular Código repetido Sin control de versionado Sin control de errores Sin documentación de la arquitectura Con documentación anárquica del código …
En resumen, no aplicaban técnicas de Ingeniería del Software
2. Venturas y desventuras del sector IT en la CV
Por qué vienen a nosotros
Hasta que no estás muy mal, no vas al médico…
2. Venturas y desventuras del sector IT en la CV
Por qué vienen a nosotros
Y hasta que el software no es inmanejable… no vienen al ITI
2. Venturas y desventuras del sector IT en la CVProblemas del sector
En general, nos encontramos con empresas que: No tienen una metodología de desarrollo software clara No tienen una metodología de gestión de proyectos clara
Empresas que no usan herramientas estándar para: Diseño (ni un triste modelo UML) Control de Versiones (el SVN no es tan complicado) Gestión de la documentación (ni siquiera plantillas) Testeo (¿qué es eso del testeo unitario?) Control de bugs y Errores
2. Venturas y desventuras del sector IT en la CVProblemas del sector
Estamos en crisis: No puedo perder el tiempo en documentación ¿Testeo? ¿Para qué? Mis programadores son muy buenos
La realidad: Sólo las empresas maduras sobreviven a la crisis Sólo las que tienen procesos y procedimientos claros Sólo las que aplican patrones y reutilizan código y
conocimiento Sólo las que se mueven con la tecnología
Ingeniando el SW en tiempos de crisis
1. El Instituto Tecnológico de Informática
2. Venturas y desventuras del sector IT
3. Ingeniería del Software en la práctica
4. Consejos
Contenido
El Instituto: www.iti.es
El ponente: Web: http://web.iti.upv.es/~fsanchez/ Correo: [email protected]
3. Ingeniería del Software prácticaMetodologías de Desarrollo
3. Ingeniería del Software prácticaMetodologías de Desarrollo
Hay normas generales: En general, los extremos no son buenos: ni Cascada, ni
Extreme Programming. En general, los enfoques incrementales o iterativos son
buenos: RUP, SCRUM
Pero todo depende del proyecto: Un proyecto de envergadura requiere un buen análisis de
requisitos y un buen diseño Un pequeño proyecto (100 horas), se atasca con un
análisis y diseño excesivos
3. Ingeniería del Software prácticaMetodologías de Desarrollo
Caso SCRUM: Extremadamente útil y productivo (bien) Muy exigente para el grupo de trabajo (no tan bien)
3. Ingeniería del Software prácticaProblemas Generales
Cambian los requisitos: Caso XXX y su documentación inicial tras un año de
desarrollo
La tecnología no lo permite: Caso Google Calendar y su control de acceso por
calendario
El equipo no es competente: El famoso caso del departamento desmantelado
3. Ingeniería del Software prácticaSoluciones Generales
Cambian los requisitos: No especifiques todos los requisitos en detalle. La documentación crecerá junto al desarrollo
La tecnología no lo permite: Rol de Arquitecto Software Desarrolla elementos críticos antes de los no críticos
El equipo no es competente:
3. Ingeniería del Software prácticaSoluciones Generales
El equipo no es competente: Huyeeeeeee!!!!
Hasta aquí todo bien, ¿no?Ya sabemos gestionar un proyecto
Ahora vamos a remangarnos la camisa…
3. Ingeniería del Software prácticaArquitectura y Diseño de Sistemas
Aprende a modelar Muchos dibujan, pocos modelan Es la forma más rápida de documentar La forma más fácil de relacionarte con el cliente
No existe el diagrama perfecto, sí el correcto No intentes representar todo en un único diagrama Haz sólo los absolutamente necesarios
3. Ingeniería del Software prácticaArquitectura y Diseño de Sistemas
Lo más usado en las empresas: Diagramas de Estructura
Fuente: www.agilemodeling.com
Clases
Despliegue
3. Ingeniería del Software prácticaArquitectura y Diseño de Sistemas
Lo más usado en las empresas: Diagramas de Comportamiento
Fuente: www.agilemodeling.com
Actividades
Casos de
uso
3. Ingeniería del Software prácticaArquitectura y Diseño de Sistemas
Lo más usado en las empresas: Diagramas de Interacción
Fuente: www.agilemodeling.com
Secuenci
a
3. Ingeniería del Software prácticaArquitectura y Diseño de Sistemas
Y por supuesto, el mock-up:
Y es fundamental: Aplicación de Patrones
3. Ingeniería del Software prácticaLa importancia de los patrones
Es lo que llevará a nuestra carrera a ser una INGENIERÍA: Singleton, para crear una clase de una única instancia Factory, para crear clases sin especificar la clase exacta a crear Adapter, para permitir a dos clases con interfaces incompatibles
comunicarse encapsulándolas
Patrones específicos de seguridad como: Encrypted Storage Password Authentication Authentication Session
Repetidos una y otra vez, pero por fin con una implementación de referencia
3. Ingeniería del Software prácticaLa importancia de los patrones
A un nivel más arquitectónico, son fundamentales los EAI (Enterprise Integration Patterns): Estilos de integración: mensajería, BBDD compartida, … Sistemas de Mensajería: Router, Translator, … Canales de Mensajería: Publish-Subscribe, Message Bus, …
Y muchos más
3. Ingeniería del Software prácticaLa importancia de los patrones
Lo importante: Saber dónde encontrarlos y aplicarlos correctamente Respetar la nomenclatura
Publish-Subscribe
Router
Polling-Consumer
Fuente: http://www.eaipatterns.com/
Ingeniando el SW en tiempos de crisis
1. El Instituto Tecnológico de Informática
2. Venturas y desventuras del sector IT
3. Ingeniería del Software en la práctica
4. Consejos
Contenido
El Instituto: www.iti.es
El ponente: Web: http://web.iti.upv.es/~fsanchez/ Correo: [email protected]
4. Consejos para moldear tu camino tecnológico
Todos empezamos desde abajo, así que… Hazte un buen programador Pero no lo olvides:
Eres Ingeniero, aunque tu rol sea programador Hazte un buen tecnólogo
No es sólo programar, es conocer la tecnología
Internacionalízate
4. Consejos para moldear tu camino tecnológico
Maneja el MVC con soltura:
Y encapsula, siempre encapsula: ¿Cómo construirías tu BBDD remota?
4. Consejos para moldear tu camino tecnológico
Interfaz remota
Web Service
PersistenciaEJB JPA
Mi BBDDMySQL Postgre
4. Consejos para moldear tu camino tecnológico
Respecto a la programación: Ingenia, busca, no des nada por seguro: duda de todo. Sé maduro: aplica patrones Sé limpio: aplica formatos estándar Consulta (o participa) en proyectos de SW libre
Respecto a la tecnología: No sólo programes, conoce la tecnología Aprende a crear tu propio criterio: busca y compara No es Java, sino Struts, Hibernate, Spring… No es .NET, sino SQLServer, Sharepoint, Visual Studio…
4. Consejos para moldear tu camino tecnológico
Respecto a ti: Sé humilde, pero intrépido Saca todo el partido de los que saben Procura estar al día en tecnología
Y entre nosotros…Aquello que hagas, hazlo bien
Y eso es todo… ¿preguntas?
Francisco Sánchez Cid
Área de Desarrollos y Arquitectura Software