Cambios en Ingeniería de Software Material tomado del artículo de Casallas Rubby, Villalobos, Jorge. El actual ingeniero de Software. Revista ACIS. Edición Nº 93 Julio - Septiembre de 2005. Preparado por Gilberto Pedraza García
Agenda Los cuatro ejes de la ingeniería de software Tecnologías Procesos Arquitecturas Metodologías
Los cuatro ejes de la ingeniería de software actual
Desarrollo de software hoy en día
Ejes de la Ing. de Software procesos Arquitectura Herramientas Tecnología Metodología Jorge Villalobos. Rubby Casallas Uniandes
TECNOLOGIAS
Tecnologías (1) Conjunto de lenguajes, modelos, protocolos que permiten materializar un producto de software Ingeniería de la construcción
Perspectiva tecnológica
ERA BATCH (1) 60 s a 70 s Recolección manual de datos Necesidad de aumentar la productividad Explotar el poder de cálculo reduciendo el tiempo de procesamiento Pocas personas relacionadas con los negocios Automatización de procesos manuales de negocio Contabilidad Inventarios Nómina Compras
ERA BATCH (2) Aplicaciones asociadas con simples departamentos Múltiples islas de datos Datos duplicados en diversas aplicaciones Mantenimiento se hace difícil en la medida que el negocio crece. Más ordenamientos y actualizaciones
Era Terminal Host (1) Años 70 s Terminales Bases de datos Terminales Discos de almacenamiento
Era Terminal Host (2) Integración de datos Evitar duplicación de datos Problemas de dependencia Independencia de datos Problemas de fragilidad de aplicaciones Tecnologías de procesamiento de transacciones y comunicaciones Visión de acceso en línea a datos corporativos Nuevos programas pueden ser usados vía terminal en línea
Era Terminal Host (3) Acceso en línea a la información Aplicaciones batch se vuelven a escribir Grandes presupuestos de datos Los departamentos de IT se vuelven una ventaja competitiva Nuevas habilidades en desarrolladores
Era Terminal Host (4) Integración elemental de bases de datos La organización no es el centro de atención para modelar los datos Aplicaciones con diferentes modelos de datos y arquitecturas Mantenimiento de aplicaciones batch es costosa No hay facilidades de integración Crecientes expectativas de los usuarios
Era de los computadores personales (1) Cambio de visión acerca de los negocios Nueva perspectiva de las tecnologías de información Aplicaciones o paquetes de software de oficina Interacción: nueva expectativa del usuario Nueva distribución de las tecnologías de información en las organizaciones
Era de los computadores personales (2) Integración de información Conectividad Conectividad Crecimiento de la demanda de software
Computación distribuida Cambio de paradigma en uso del computador: de la máquina de computo a la máquina para comunicar Tecnologías cliente servidor Paquetes de software Outsourcing Integración de aplicaciones
Computación distribuida
Computación distribuida
Requerimientos Distribución Interoperabilidad Transaccionalidad Tolerancia a fallas Integración de procesos de negocio
Tecnologías web
Antes de Internet
Tecnologías Web
Tecnologías Web
Requerimientos Escalabilidad Disponibilidad Seguridad Alto desempeño Grande volúmenes de datos y transacciones Crecimiento y complejidad de aplicaciones Integración de procesos de negocio
Tecnología (2) Java J2EE JDBC JNDI Servlets JSP JMS EJB UML XML HTTP SOAP Perl XMI Bases de datos PHP BPEL Ajax Portlets Pushlets
Tecnología (3) RMI CORBA Web Services Aspect J Fortran COBOL BASIC C++ C#.NET ASP
PROCESOS
Procesos Conjunto de actividades tanto técnicas como administrativas, que son necesarias para la creación de un sistema de software Manejo de requerimientos Administración de configuración Planeación y seguimiento de proyectos Subcontratación Métricas Verificación y validación Administración de riesgos Testing Integración de áreas de negocio Jorge Villalobos. Uniandes
Evolución desde perspectiva de los procesos
Modelos de calidad Están las funciones requeridas disponibles en el software? Funcionalidad Qué tan confiable es el software? Confiabilidad Es el software fácil de usar? Usabilidad Qué tan eficiente es el software? Eficiencia Qué tan fácil es modificar el software? Mantenibilidad Qué tan fácil es llevar el software a otro ambiente? Portabilidad
Los procesos de software Manejo de requerimientos Manejo de configuraciones Planeación y seguimiento de proyectos Gestión de métricas Verificación y validación Administración de riesgos Pruebas Integración con áreas de negocio
Arquitectura
Cómo llegamos a la arquitectura?
Perspectiva de la arquitectura Definir la estructura o la forma Actividades de transformación de elementos Toda aplicación tiene su arquitectura No es solo tecnología Técnicas de composición Características propias de los elementos que estructuran la solución
Nuevas propiedades Localización Aislamiento Flexibilidad Reutilización Evolución Enseñabilidad
Elementos estructuradores Funciones Objetos Componentes Contenedores Servicios Aspectos Modelos
Arquitecturas (1) Conjunto de elementos que van a definir las características estructurales del producto de software que se quiere construir Ingeniería estructural
Arquitecturas (2) Componentes Contenedores Servicios Aspectos Modelos ADLs Middleware de mensajería Middleware de objetos Arquitecturas basadas en servicios Bases de eventos Bases de servicios Orquestación Arquitecturas multicapa Adaptadores Plugins
Arquitecturas (3) Objetos Funciones Módulos Composición Coordinación Herencia Sincronización
METODOLOGIAS
Metodología (1) Conjunto de técnicas, guías, métricas, estrategias, consejos, buenas práctica, que facilitan la realización de las distintas tareas definidas en el proceso El proceso establece la estructura básica de las tareas
Metodologías Guían de manera flexible y adaptable cada proyecto Patrones de diseño Experiencia y habilidad del ingeniero No son algoritmos No garantizan resultados Cada ingeniero puede usar técnicas que considere adecuadas Las técnicas dependen del problema
Evolución histórica Desarrollo estructurado Desarrollo orientado por objetos Desarrollo orientado por componentes Desarrollo orientado por aspectos Desarrollo orientado por servicios
Metodología (2) Análisis estructurado Diseño estructurado Diseño de interfaces Diseño de sitios WEB Patrones de diseño Patrones de asignación de responsabilidades Estilos de arquitecturas Análisis orientado por objetos Diseño de algoritmos Diseño orientado por objetos Diseño de bases de datos Técnicas para entrevistar clientes Complejidad de algoritmos Técnicas para validar requerimientos
Dependencias Un buen diseñador debe conocer acerca de las tecnologías El diseñador debe involucrar la Arquitectura Las metodologías apoyan el proceso El líder del proyecto domina los ejes El arquitecto conoce las tecnologías No es suficiente conocer de tecnologías para ser un buen arquitecto.
Referencias Casallas Rubby, Villalobos, Jorge. El actual ingeniero de Software. Revista ACIS. Edición Nº 93 Julio - Septiembre de 2005