1 Estrategia del software para el 2015 en los EEUU y aprendizaje para el software Colombiano Manuel Dávila Sguerra Bogotá
2 Origen del estudio SOFTWARE 2015: A NATIONAL SOFTWARE STRATEGY TO ENSURE U.S. SECURITY AND COMPETITIVENESS Report of the 2nd National Software Summit Center for National Software Studies
3 Contenido Introducción Riesgos por software defectuoso OportunidadesLa estrategia nacional de software Mejorar el mecanismo de producir software “digno de confianza” Trustworthy Educación y enfoque de la fuerza de trabajo del software Re energización de la investigación y el desarrollo de software Enfrentar la Innovación dentro de la Industria del Software
4 Importancia IntroducciónLas naciones son altamente dependientes de las tecnologías de la información El punto central es el software Se encuentra en todos los elementos de la vida cotidiana EEUU es una nación bajo riesgo de consecuencias inaceptables por las fallas del software
5 Riesgos Fallas en la Infraestructura Pérdidas económicas inesperadas Pérdida de vidas Pérdida de la confianza pública Pérdida de identidad y de liderazgo
6 Oportunidades (1) Direccionar esfuerzos para lograr un software seguro y de calidad que sea digno de confianza “trustworthiness.” “Trustworthiness” significa: Digno de confianza para cumplir con los requerimientos necesarios en cualquiera de los componentes de software, aplicación, sistema o red Tiene atributos de seguridad, garantía, confianza, fiabilidad, rendimiento, supervivencia en un amplio espectro de adversidades y compromisos. Se requiere en el hardware, el software, las comunicaciones, componentes de potencia asi como en los desarrolladores y los que hacen el mantenimiento
7 Oportunidades (2) Las características del software como una industria intensiva en trabajo requiere que su fuerza de trabajo sea educada y que exista una estructura salarial competitiva Una investigación y desarrollo bien orientada ofrece la oportunidad de mejorar el desarrollo del estado del arte en software entre la industria y la academia La industria orientada hacia la aplicación y la academia hacia objetivos de largo plazo Contribución del gobierno a través de laboratorios y soporte como el de National Science Foundation. Hay un reto para sostenerse en un liderazgo relacionado con la innovación
8 La estrategia nacional de softwarePara convertir las oportunidades en soluciones reales es hora de elevar el software a un asunto de política nacional en compañía del estado, la industria y la academia. La visión se orienta a dos logros: adquirir la habilidad de desarrollar y liberar productos y sistemas de software Digno de confianza (trustworthy) de manera rutinaria y asegurar la continuidad de la competitividad de los EEUU en la industria del software Los 4 programas de la estrategia son: A. Mejorar el mecanismo de producir software Digno de confianza (trustworthy) B. Educar y caracterizar la fuerza de trabajo en el software C. Re energizar la investigación y el desarrollo D. Enfrentar la innovación dentro de la industria del software
9 A. Mejorar el mecanismo para producir software Digno de confianza (1)Como sociedad basada en la información los EEUU es ireversiblemente dependiente de los sistemas de software El software controla: La infraestructura energética Las comunicaciones La manufactura, Las finanzas El gobierno y la Defensa nacional entre otras El Software es un elemento dominante Sus fallas trae enormes riesgos que provienen de hacer software no Digno de confianza (trustworthiness)
10 A. Mejorar el mecanismo de producir software trustworthy (2)Seguridad: Muchos productos están expuestos a problemas de seguridad no intencionada por mala Ingeniería de software y malas prácticas en la programación O codigo malicioso y malintencionado como virus, Troyanos, puertas traseras Hay demasiada pérdida de tiempo en el control de virus, spam que podría utilizarse en tareas productivas Confianza: El software no debe hacer daño a las personas ni a la propiedad: aviación, medicina, exploración espacial, banca, transporte Fiabilidad: No debe afectar a los actores por fallas a gran escala en defensa, telecomunicaciones, energía, espacio y sistemas financieros Supervivencia: Debe mantener un continuo funcionamiento aun en situaciones Adversas y no solo en ambientes benignos.
11 A. Mejorar el mecanismo de producir software trustworthy (3)Logros El software Digno de confianza en las sociedade basadas en la información no es una opción sino una necesidad La Ingeniería de software ha alcanzado sus límites de los primeros 50 años No son las buenas intenciones ni el cuidado lo que permitirá desarrollar los complejos sistemas del futuro Para que las nuevas tecnologías sean Dignas de confianza requieren: Identificar y analizar las propiedades Desarrollar software bajo el contexto Expandir la consciencia y la educación en estos aspectos Incentivar a los desarrolladores de software para producir software bajo estas características Incrementar la investigación y el desarrollo en software Digno de confianza
12 A. Mejorar el mecanismo de producir software trustworthy (3)Iniciativas: Análisis de software Digno de Confianza Desarrollar métodos de medidas para una métrica de calidad para un indice de calidad nacional de software Investigar la factibilidad de crear organizaciones independientes para evaluar software Digno de Confianza Desarrolar métodos para alcanzar los objetivos en productos de software, familias de productos, sistemas y sistemas de sistemas
13 A. Mejorar el mecanismo de producir software trustworthy (4)Tareas Desarrollo de software Digno de confianza Crear evidencias empíricas para determnar cómo los procesos de la ingeniería de software están relacionados con Software Digno de Confianza Desarrollar nuevas tecnologías y procesos para la siguiente Ingeniería de software Educación y conscientización de Software Digno de confianza Mejorar y extender el tratamiento de los conceptos de Software Digno de confianza y de los métodos en Ingeniería de software y programas de Computer Science Mejorar la habilidad para comunicar los conceptos a los involucrados Investigación y desarrollo en Software Digno de confianza Incrementar las inversiones en investigación y desarrollo Promover transferencia de tecnologías de Software Digno de confianza
14 Proceso tradicional en el desarrollo de softwareComplejidad del software = N*I*(O elevado a la potencia p) N = Tipo de programa I = Nro de entradas O = Nro de salidas p = una potencia
15 Modelo Construir y mejorar1950 – 1960 Utilizado por la Volskwagen en la producción y venta de sus vehículos Úselo, informe fallas que nosotros lo mejoramos ! El más usado en el desarrollo de software aunque de pena admitirlo !
16 Método en cascada 1970 La época en que Edsger Dijkstra prohibió el “go to” al margen de la creación de la programación estructurada Funciona si cada fase está perfectamente desarrollada lo cual nunca es verdad !
17 Modelo Prototipo RápidoBasado en el modelo de las plantas piloto de los Ingenieros Químicos. Produce un programa que realiza funciones esenciales que se mejora en el transcurso del desarrollo en la medida en que el usuario lo acepta
18 Modelo Incremental Mezcla del modelo en cascada y del prototipo Rápido Reconoce que los pasos en el desarrollo no son discretos y va creando construcciones paulatinas Tiene el peligro que el proceso de aprendizaje exceda al de la productividad y se de el “síndrome de la investigación
19 Modelo Extreme Programming1996 Basado en el desarrollo del sistema de nómina de Chrysler El cliente se coloca en el asiento del chofer.... Basado en su discurso él es parte del desarrollo el cual se hace de manera incremental
20 Modelo Round Tripping Se soporta en generadores de código basado en diseño de patrones Muy orientado a Programación orientada a objetos
21 Modelo Iterativo RUP El más realista de los modelo tradicionales Hace seguimiento entre cada estado y el anterior
22 Modelo de software seguro
23 7 Puntos de análisis (1) 1. Revisión de código con herramientas Artefacto: código Ejemplo de riesgo encontrado: Buffer overflow en la linea 10 Comentario: Es el análisis estático del código que ayuda en parte, no en todo, a descubrir instruccones no seguras 2. Análisis de riesgo de la arquitectura Artefacto: Diseño y especificación Ejemplo de riesgo encontrado: pobre protección de datos críticos, fallas en “web services” al auntenticar código Comentario: los diseñadores, asquitectos y analistas deben documentar las asunciones e identificar los posibles ataques 3. Pruebas de penetración Artefacto: Sistema y ambiente Ejemplo de riesgo encontrado: manejo pobre del interfaz de web Comentario: las pruebas de penetración en la red no son suficientes mecanismos de seguridad. El software debe pasar pruebas de “cajas negras” fabricadas por otras aplicaciones
24 7 Puntos de análisis (2) 4. Test de seguridad basado en riesgos Artefacto: Unidades y sistema Ejemplo de riesgo encontrado: Comentario: asegurarse que no pasen cosas malas. Pensar como un atacante 5. Casos de abuso Artefacto: Requerimientos y casos de uso Ejemplo de riesgo encontrado: Suceptibilidad a intentos de ataques bien conocidos Comentario: descripción del comportamiento del sistema bajo ataque 6. Requerimientos de seguridad Artefacto: Requerimientos Ejemplo de riesgo encontrado: No hay descripción explícita de protección de datos Comentario: los requerimientos de seguridad deben cubrir seguridad funcional por ejemplo ciframiento de los datos, y características emergentes 7. Operaciones seguras Artefacto: sistema en funcionamiento Ejemplo de riesgo encontrado: Insuficiente datos de bitácora para perseguir un ataque conocido Comentario: La seguridad de la red ayuda en este caso. Los ataques se darán inevitablemente. La experiencia de ataques anteriores ayuda a la seguridad.
25 Aspectos a tener en cuenta (1)Los problemas de la seguridad: defectos como buffer overflow, mal manejo de detección de errores Conectividad, ubicuidad, web services y Soa saben que se han publicadp muchas aplicaciones no diseñadas para trabajar en red como servicios web (Citrix) Plataformas antiguas que no soportan ssl Integración middleware en que la autenticación y los protocolos del nivel de aplicación no están alineados. Sistemas que tienen código móvil a través de APIS como los plugins de los navegadores, los Web services y SOA Complejidad en software de grandes extensiones en donde no es posible abolir los bugs
26 Aspectos a tener en cuenta (2)La seguridad hoy en día se trabaja más al nivel de la red con firewalls, ssl, ids's etc Está en manos de expertos operativos en la red más no en los desarrolladores de software La noción de defender el perímetro no es suficiente ya que si bien los firewalls intentan proteger el “sistema” del “exterior” no sirve cuando hay tunneling y el software del exterior entra inpunemente 3 Pilares: administración del riesgo, touchpoints o mejores prácticas que deben ir en todo el ciclo de desarrollo y Conocimiento Memo de Bill Gates Enero 15 del 2002: “En los años anteriores hemos aclarado que asegurar que la plataforma .NET sea Digna de confianza es más importante que cualquier parte de nuestro trabajo” “La computación Digna de confianza es aquella que está disponible, es fiable y segura como los servicios de agua, energía eléctrica teléfono” “Digno de confianza va más allá que seguridad” “Entre añadir funcionalidades al software y hacerlo seguro, preferimos hacerlo seguro”
27 La metodología de Taguchi (1)Dr Genichi Taguchi, 1924, Japón: Departamento de astronomía e Instituto de Navegación del Imperio Japonés Ministerio de Salud Pública y bienestar social Instituto de estadísticas matemáticas Ministerio de educación Pérdida de calidad: Quality loss “Pérdida llevada por el producto a la sociedad desde el momento en que es empaquetado” Incluye pérdidas por costo de reproceso, mantenimiento, fallas, reclamos, rendimiento, fiabilidad Función cuadrática de pérdida con desviación de su finalidad Un acercamiento al objetivo tiende a decrecer la pérdida e incrementar reducción en variabilidad la calidad
28 La metodología de Taguchi (2)Control de calidad fuera de linea: Diseño del sistema: lluvia de ideas, investigación y metodologías Diseño de parámetros: permiten hacer control sobre variables sensibles de aspectos que producen ruido Diseño tolerante: se aplica cuando los parámetros no son suficientes para fijarlos Bajar la variación sobre el objetivo Métodos de Taguchi: La pérdida de calidad se debe más a fallas después de ventas. La robustez de un producto depende más de la etapa de diseño que del control en linea. No libere nada que no cumpla los estándares No use medidas de calidad basadas en el usuario Los productos robustos producen una “señal” fuerte sin importar el “ruido” externo y con un mínimo de “ruido” interno
29 Deming el Padre del movimiento de la calidad modernaVoz del usuario o consumidor, reducción de la variación, medidas estadísticas, ganancia de confianza, respeto por los co trabajadores, continua mejora en el proceso. La esencia de los puntos de Deming: Constancia en el propósito Evitar dependencia de las inspecciones construyendo calidad desde el principio Entrenamiento permanente Liderazgo más que supervisión Eliminar incentivos por cuotas y cambiarlas por liderazgo Eliminar administración por objetivos cuantificados y cambiarlos por liderazgo Eliminar los premios por méritos anuales cambiarlo por administración por objetivos Educación y auto mejoramiento
30 Otra vez Taguchi: Robustez: “un estado en donde el rendimiento de la tecnología, producto o proceso es mínimamente sensitivo a factores que causen variabilidad al menor costo unitario de manufactura” Señal: es lo que un producto debe mostrar por las características de sus funcionalidades Ruido: factores que causan variaciones externo, interno y entre productos Ruido en software: uso errático por parte del usuario, ataques, virus y gusanos, huecos de seguridad, poca documentación, entrenamiento inadecuado, malos procedimientos o malos usos, acceso no autorizado, sometimiento del sistema a usuarios para los cuales no fue diseñado
31 La razón (SN) señal a ruido de Taguchi:Debe evaluar la robustez de la funcionalidad de un producto Representa la razón de sensibilidad a la variabilidad Se refiere a la transformación en energía, potencia, información,Imagen, datos etc Para un dispositivo eléctrico: S/N = Conversión de energía eléctrica para obtener una función mecánica deseada/ Conversión de energía resultante en funcionalidades costosas = Conversión de energía en torque útil / Conversión de energía resultante en calor, vibraciones, roces etc = Conversión de energía para obtener funcionalidades deseadas/ Transformación de energía en funcionalidades indeseadas En software se trata de transformar información, datos, imágenes etc QLF: Quality loss function L = D*D*C En donde D= Desviación del objetivo C= Costo de contra medidas para que el rendimiento del producto esté dentro de os objetivos
32 B. Educando y enfocando la fuerza de trabajo del softwareNueve de las diez firmas multinacionales de software en utilidades son de EEUU Son el 90% de las ventas a nivel mundial El software y su innovación son de una importancia imcremental en las industrias automotriz, manufactura, telecomunicaciones entre otras Desde la perspectiva de la defensa nacional sistemas militares como jets de combate, tanques, inteligencia militar y tácticas de guerra La seguridad de la infraestructura como represas, puentes, potencia electrica, sistema de transporte, suministro de agua son dependientes del software El énfasis de paises como India, China, Malasia, Filipinas y Rusia para covertirse en economías del conocimiento que atrae fuerzas de trabajo externo es un tema abierto de debate Educación continua para mantener a los trabajadores en tecnología al dia de los avances El outsourcing con el exterior ofrece ventajas de corto plzo pero decrece el número de profesionales propios, lo cual debe ser balanceado que al menos sean buenos compradores de desarrollos externos.
33 Colombia - Estadística de nuevos estudiantes en Ingeniería de sistemas
34 El dominio de la Ingeniería de sistemas (1)
35 El dominio de la Ingeniería de sistemas (2)
36 B. Educando y enfocando la fuerza de trabajo del softwareIniciativa educativa en Ingeniería de software Ensanchar la habilidad de universidades y otros proveedores de educación y entrenamiento para cumplir con las necesidades de los estudiantes incitando a estudiar carreras de software así como para actualizar a los profesionales para que se mantengan al día en las nuevas tecnologías Certificaciones Entender el impacto real del outsorcing Entender lo que significa a largo plazo la demanda de la fuerza de trabajo de los EEUU por el incremento de los niveles de tecnología de la India y China
37 Colombia - Actividad de ACIS en formación en Tecnologías de punta
38 C. Re energizar la investigación y el desarrollo de software (1)El Software es una construcción de Ingeniería con materiales simbólicos y conceptuales cuyas manifestaciones físicas son relativamente intrascendentes La habilidad de moldearlo está limitada por la capacidad intelectual de los humanos Cada vez tiene más influencia en el trabajo de los demás Ya es usual hablar de software con 50 millones de líneas de código Es difícil producir software industrialmente y a veces es difícil entender el software hecho por nosotros mismos. La Ingeniería de software sigue siendo una disciplina inmadura acompañada de un incremento en la complejidad de los sistemas que bajo las nuevas tecnologías aparecen en el mercado
39 C. Re energizar la investigación y el desarrollo de software (2)Por eso: La investigación y la innovación el desarrollo de software tiene una especial significancia El estado debe tener un rol más fuerte para apoyar la investigación y el desarrollo La investigación más importante debe permear a la sociedad y no solo a los ámbitos de las empresas particulares La tecnología influencia a las comunidades y a la sociedad en general, casos como TCP/IP, HTTP, HTML fueron diseñados bajo el patrocinio del estado a través de la IETF Muchos estados del arte para mejorar la calidad en el desarrollo de software fueron patrocinados por la National Science Foundation (NSF), Defense Advanced Research Projects Agency (DARPA) en conjunto con Universidades y empresas del sector La investigación universitaria patrocinada por el estado da dividendos adicionales por el apoyo a la labor académica de las Universidades
40 Colombia. El Banco de Innovación Tecnológica - BITDiseñar, desarrollar y dar mantenimiento a un sistema de información, que permita administrar, impulsar y dar seguimiento a todos los proyectos de investigación que puedan ser conjuntamente ejecutados entre el sector empresarial de base tecnológica y el sector académico, a través de procesos de investigación aplicada, prácticas profesionales, pasantías u otras modalidades por parte de las universidades y los requerimientos y necesidades del sector productivo del software nacional.
41 C. Re energizar la investigación y el desarrollo de software (3)El 90 % de cyber incidentes significativos se deben a software defectuoso según CERT - Computer Emergency Response Team (CERT) por lo cual no se debe admitir la tolerancia en la calidad del software No se debe confiar de las mejores prácticas adoptadas tan solo por estadísticas de resultados porque se debe producir software seguro y digno de confianza No solo es un proceso de capacitación sino de crear tecnologías anexas para ese propósito.
42 D. Enfrentar la Innovación dentro de la Industria del Software delos EEUUInnovación tiene que ver con nuevas ideas para mejorar el nivel de vida de las personas La medida de la productividad debe ser tenida en cuenta: ?Lineas de código por persona/mes? ¿Funcionalidades en lugar de número de instrucciones? Creación de patentes: IBM: 3415 en el 2003, 3248 en el 2004, en los últimos 12 años triplicando al siguiente competidor La United States Patent and Trademark Office (USPTO) recibe 1000 aplicaciones de patentes por día para 18 meses de revisión por patente 5% del Producto interno Bruto de los EEUU sale de licencias de propiedad intelectual liderando a otros Paises como Japón y Alemania Acelerar la innovación Estudio de descripción de trabajos calificados por el potencial de innovación
43 Desarrollo proyecto de Ley para el SoftwareFortalecer la industria del software Fortalecer la asociación de empresarios Apoyar la exportación de soluciones y servicios Identificar / desarrollar soluciones y empresas de talla mundial Dónde pode-mos Jugar Cerrar brechas en talento humano, administrativas y técnicas Programa Proexport Fondo capital riesgo Aumentar la demanda en tecnologías de información Fomentar desarrollo de soluciones para sectores económicos estratégicos Gerencia en proyectos, estándares de calidad y gerenciales Fomentar la inversión de empresas de base en TI Líneas Crédito Número egresados con competencias requeridas por la industria Fomento I&D Crear entorno que favorezca el desarrollo de la industria en TI, incluyendo desarrollo de parques tecnológicos Fomentar la asociatividad y consolidación Sector Público Sector Privado Fomento capacitación no formal y certificaciones Mipyme Digital Líneas Crédito Incentivo tributario Colciencias Fortalecer relación industria, universidad, centros de Investigación y asociaciones Gobierno en línea SECOP Comercio Electrónico Levantar línea base (empresas, soluciones, herramientas desarrollo) Fortalecer relación industria, universidad y centros de Investigación (CDTs) Fomento Comercio Electrónico Tercerización funciones de TI Territorios Digitales Líneas créditos ICETEX Expertos en calidad, arquitectura etc. Formación formadores Desarrollo sistema de información: Identificar actores y roles (definir claramente quien hace que), sistema de inteligencia competitiva y de vigilancia tecnológica (oficina de aviso temprano de nuevas tecnologías - Gartner,Forrester), sistema de talento humano (demanda y oferta) y capacitación Formación formadores Desarrollo proyecto de Ley para el Software
44 Bibliografia Center for National software studies. (2005, Abril). Final report: 2015 A National Software Strategy to Ensure U.S.. Security and Competitiveness”. Consultado el 31 de Mayo de 2009 en [1] Jayaswal K, Patton. Design for trustworthy software. Prentice Hall Pearson Education, pp. [2] McGraw G. Software security. Addison-Wesley Softwar security series pp.