cambios en ingeniería de software · pdf file•mantenimiento de aplicaciones batch...
TRANSCRIPT
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
Tecnología Metodología
Herramientas
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
Bases de datos
PHP
BPEL
Ajax
Portlets
Pushlets
UML
XML
HTTP
SOAP
Perl
XMI
Tecnología (3)
• RMI
• CORBA
• Web Services
• Aspect J
C++
C#
.NET
ASP
Fortran
COBOL
BASIC
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
• Arquitecturas basadas en servicios
• Bases de eventos
• Bases de servicios
• Orquestación
• Arquitecturas multicapa
• Adaptadores
• Plugins
ADLs
Middleware de mensajería
Middleware de objetos
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
Análisis orientado por objetos
Diseño orientado por objetos
Técnicas para entrevistar clientes
Técnicas para validar requerimientos
Patrones de diseño
Patrones de asignación de responsabilidades
Estilos de arquitecturas
Diseño de algoritmos
Diseño de bases de datos
Complejidad de algoritmos
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