Cambios en Ingeniería de Software · PDF file•Mantenimiento de aplicaciones batch...

Preview:

Citation preview

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

Recommended