Está en la página 1de 68
Maestría en Ingeniería Arquitectura de Software Sesión 1 Fernando Barraza A., Ms.C fbarraza@javerianacali.edu.co

Maestría en Ingeniería

Arquitectura de Software

Sesión 1

Fernando Barraza A., Ms.C fbarraza@javerianacali.edu.co

Sesión 1
Sesión 1

Objetivo: Brindar al estudiante una visión general de la Ingeniería de Software e introducirlo en el tema de la Arquitectura de Software como disciplina de dicha ingeniería

Temas:

– Que es la ingeniería de Software?

– Procesos y técnicas de desarrollo de software

– Desarrollo formal de software e Ingeniería de Software

– Disciplinas de la Ingeniería de Software

– La Arquitectura de Software como disciplina

Que es la Ingeniería de Software?
Que es la Ingeniería de Software?

• Def1: “Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software” [IEEE].

• Def2: “Ingeniería de software es la disciplina o área de la Informática que ofrece métodos y técnicas para desarrollar y mantener software de calidad” [wikipedia].

Organizaciones importantes
Organizaciones importantes

• Software Engineering Institute (SEI)

• Association for Computing Machinery (ACM)

• IEEE Computer Society

• Society of Software Engineers

• Object Management Group (OMG)

• Word Wide Web Consortium (W3C)

Influencias en el Software
Influencias en el Software
Influencias en el Software
Complejidad del Software
Complejidad del Software
Complejidad del Software
Aspectos claves en el desarrollo de SW
Aspectos claves en el
desarrollo de SW

Proceso

Aspectos claves en el desarrollo de SW Proceso Herramientas (Tecnología) Modelos (Notación)

Herramientas

(Tecnología)

Modelos

(Notación)

Porque Modelamos?
Porque Modelamos?
Porque Modelamos?
Y si es un rascacielos?
Y si es un rascacielos?
Y si es un rascacielos?
Y si es un rascacielos?
Que es un modelo?
Que es un modelo?

• Es una representación del sistema a construir o ya construido.

• Es un vehículo de comunicación con los distintos agentes implicados.

• Es una simplificación de la realidad:

separa lo esencial de los detalles permitiendo su análisis y simulación en situaciones complejas

Modelado Visual - Abstracción
Modelado Visual - Abstracción

“El modelado captura las partes esenciales del sistema

Orden Item envío
Orden
Item
envío
“El modelado captura las partes esenciales del sistema ” Orden Item envío Proceso de Negocios Sistema
“El modelado captura las partes esenciales del sistema ” Orden Item envío Proceso de Negocios Sistema
“El modelado captura las partes esenciales del sistema ” Orden Item envío Proceso de Negocios Sistema
“El modelado captura las partes esenciales del sistema ” Orden Item envío Proceso de Negocios Sistema
“El modelado captura las partes esenciales del sistema ” Orden Item envío Proceso de Negocios Sistema
“El modelado captura las partes esenciales del sistema ” Orden Item envío Proceso de Negocios Sistema
“El modelado captura las partes esenciales del sistema ” Orden Item envío Proceso de Negocios Sistema
“El modelado captura las partes esenciales del sistema ” Orden Item envío Proceso de Negocios Sistema
“El modelado captura las partes esenciales del sistema ” Orden Item envío Proceso de Negocios Sistema

Proceso de Negocios

“El modelado captura las partes esenciales del sistema ” Orden Item envío Proceso de Negocios Sistema

Sistema Computacional

Beneficios al modelar (1)
Beneficios al modelar (1)
Beneficios al modelar (1) Manejar la complejidad

Manejar la complejidad

Beneficios al modelar (2)
Beneficios al modelar (2)

Interface de Usuario (Visual Basic,

Java, ) Lógica del Negocio (C++, Java, ) Servidor de BDs (C++ & SQL, )
Java,
)
Lógica del Negocio
(C++, Java,
)
Servidor de BDs
(C++ & SQL,
)

Modelar el sistema independientemente del lenguaje de implementación

Beneficios al modelar (3)
Beneficios al modelar (3)

Múltiples Sistemas

Beneficios al modelar (3) Múltiples Sistemas Componentes Reutilizados Promover la Reutilización
Beneficios al modelar (3) Múltiples Sistemas Componentes Reutilizados Promover la Reutilización
Beneficios al modelar (3) Múltiples Sistemas Componentes Reutilizados Promover la Reutilización
Beneficios al modelar (3) Múltiples Sistemas Componentes Reutilizados Promover la Reutilización
Beneficios al modelar (3) Múltiples Sistemas Componentes Reutilizados Promover la Reutilización
Beneficios al modelar (3) Múltiples Sistemas Componentes Reutilizados Promover la Reutilización

Componentes

Reutilizados

Promover la Reutilización

Vistas de Modelos
Vistas de Modelos

• Un único modelo no es suficiente. Cualquier sistema no trivial se aborda mejor a través de un PEQUEÑO CONJUNTO de modelos CASI INDEPENDIENTES.

• Los modelos presentan diferentes niveles de abstracción:

– Detallado: Modelo de Diseño de Software

– General: Modelo de Arquitectura de Software

• Los modelos son generados durante el proceso y se consideran activos (artefactos) del mismo

Pero, es suficiente un modelo? R/ Se requiere también de un método que guíe la

Pero, es suficiente un modelo?

R/ Se requiere también de un método que guíe la construcción de los modelos a través del proceso

El reto …
El reto …
El reto … =

=

El reto … =
La realidad …
La realidad …
La realidad …
¿Qué es un Proceso de Desarrollo de SW?
¿Qué es un Proceso de Desarrollo de SW?

• Es el conjunto de actividades organizadas y sincronizadas para alcanzar los objetivos propuestos en el desarrollo de un producto de software

Requisitos nuevos o modificados

de un producto de software Requisitos nuevos o modificados Proceso de Desarrollo de Software Sistema nuevo

Proceso de Desarrollo de Software

Sistema nuevo o modificado

Proceso de Desarrollo de Software Sistema nuevo o modificado • No existe un proceso de software

• No existe un proceso de software universal. Las características de cada proyecto (equipo de desarrollo, recursos, etc.) exigen que el proceso sea configurable

Elementos de un modelo de proceso de SW
Elementos de un modelo de
proceso de SW
Elementos de un modelo de proceso de SW
Actividades fundamentales
Actividades fundamentales
Actividades fundamentales
Actividades protectoras
Actividades protectoras
Actividades protectoras
Ciclo de vida del software
Ciclo de vida del software

• La vida del software puede ser representada como una serie de ciclos

– Un ciclo finaliza con la liberación de una versión del software a los clientes

• Cada ciclo contempla las fases y procesos que el desarrollador del software sigue cuando desarrolla un nuevo software

Ciclos de desarrollo
Ciclos de desarrollo

• Representan la forma como es abordado el proceso de desarrollo

• La mayoría de los ciclos de desarrollo incorporan 5 fases principales:

– Planeación

– Análisis

– Diseño

– Construcción e implementación

• Incluye las pruebas del sistema

– Despliege

Modelos de procesos de SW
Modelos de procesos de SW
Modelos de procesos de SW
Code and Fix
Code and Fix
Code and Fix
Modelo en cascada
Modelo en cascada
Modelo en cascada
Ciclo de vida en Cascada
Ciclo de vida en Cascada
Ciclo de vida en Cascada
Fases del modelo en cascada
Fases del modelo en cascada
Fases del modelo en cascada
Desarrollo evolutivo
Desarrollo evolutivo
Desarrollo evolutivo
Ciclo de vida en el Desarrollo evolutivo
Ciclo de vida en el
Desarrollo evolutivo
Ciclo de vida en el Desarrollo evolutivo
Tipos de desarrollo evolutivo
Tipos de desarrollo evolutivo
Tipos de desarrollo evolutivo
Desarrollo Iterativo
Desarrollo Iterativo
Desarrollo Iterativo
Ciclo de vida Iterativo
Ciclo de vida Iterativo
Ciclo de vida Iterativo
Ciclo de vida incremental
Ciclo de vida incremental
Ciclo de vida incremental
Caracteristicas desarrollo incremental
Caracteristicas desarrollo
incremental
Caracteristicas desarrollo incremental
Ciclo de vida en espiral
Ciclo de vida en espiral
Ciclo de vida en espiral
Caracteristicas
Caracteristicas
Caracteristicas
Desarrollo formal de Software
Desarrollo formal de Software
Desarrollo formal de Software
Ciclo de vida en el Desarrollo formal de SW
Ciclo de vida en el
Desarrollo formal de SW
Ciclo de vida en el Desarrollo formal de SW
Características Desarrollo formal
Características
Desarrollo formal
Características Desarrollo formal
Desarrollo apoyado en reuso
Desarrollo apoyado en reuso
Desarrollo apoyado en reuso
Fases en el reuso de SW
Fases en el reuso de SW
Fases en el reuso de SW
Comparación de modelos
Comparación de modelos
Comparación de modelos
“Best Practices” de los Ciclos de Vida
“Best Practices” de los Ciclos de Vida

• Desarrollo de Software Iterativo

• Administración de Requerimientos

• Uso de Arquitecturas basadas en componentes

• Modelado visual del software

• Verificación continua de la calidad

• Control de cambios al Software

El proceso y otros elementos
El proceso y otros elementos
El proceso y otros elementos
Metodologías
Metodologías
Metodologías
Elementos de una metodología
Elementos de una metodología
Elementos de una metodología
Metodologías Estructuradas
Metodologías Estructuradas
Metodologías Estructuradas
Metodologías OO
Metodologías OO
Metodologías OO
Caso de revisión: Unified Process
Caso de revisión: Unified Process

Proceso Dirigido por los Casos de Uso

Proceso Iterativo e Incremental

Proceso Centrado en la Arquitectura

Modelo UP
Modelo UP
Modelo UP
Fases e Hitos (Milestones) Inception Elaboration Construction Transition
Fases e Hitos (Milestones)
Inception
Elaboration
Construction
Transition

Objetivos

(Vision)

Arquitectura

Capacidad

Operacional

Inicial

Release del Producto

Construction Transition Objetivos (Vision) Arquitectura Capacidad Operacional Inicial Release del Producto tiempo

tiempo

Elementos en UP
Elementos en UP

• Workflows (Disciplinas)

Workflows Primarios

Business Modeling (Modado del Negocio)

Requirements (Requisitos)

Analysis & Design (Análisis y Diseño)

Implementation (Implementación)

Test (Pruebas)

Deployment (Despliegue)

Workflows de Apoyo

Environment (Entorno)

Project Management (Gestión del Proyecto)

Configuration & Change Management (Gestión de Configuración y Cambios)

Proceso dirigido por los Casos de Uso
Proceso dirigido por los Casos de Uso
Casos de Uso integran el trabajo
Casos de Uso
integran el
trabajo

Requisitos

Análisis & Diseño

Implementación

Pruebas

Capturar, definir y validar los casos de uso

Realizar los casos de uso

Verificar que se satisfacen los casos de uso

Proceso Iterativo e Incremental
Proceso Iterativo e Incremental

El ciclo de vida iterativo se basa en la evolución de prototipos ejecutables que se muestran a los usuarios y clientes En el ciclo de vida iterativo a cada iteración se reproduce el ciclo de vida en cascada a menor escala Los objetivos de una iteración se establecen en función de la evaluación de las iteraciones precedentes

Proceso Iterativo e Incremental
Proceso Iterativo e Incremental

Las actividades se encadenan en una mini-cascada con un alcance limitado por los objetivos de la iteración

Análisis Diseño Codific. Pruebas e Integración
Análisis
Diseño
Codific.
Pruebas e
Integración

n veces

Proceso Iterativo e Incremental
Proceso Iterativo e Incremental

Cada iteración comprende:

– Planificar la iteración (estudio de riesgos)

– Análisis de los Casos de Uso y escenarios

– Diseño de opciones arquitectónicas

– Codificación y pruebas. La integración del nuevo código con el existente de iteraciones anteriores se hace gradualmente durante la construcción

– Evaluación de la entrega ejecutable (evaluación del prototipo en función de las pruebas y de los criterios definidos)

– Preparación de la entrega (documentación e instalación del prototipo)

Fases del Ciclo de Vida
Fases del Ciclo de Vida

El ciclo de vida consiste en una serie de ciclos, cada uno de los cuales produce una nueva versión del producto

Cada ciclo está compuesto por fases y cada una de estas fases está compuesta por un número de iteraciones

Las fases son:

– Inicio o Estudio de oportunidad

– Elaboración

– Construcción

– Transición

Fases del Ciclo de Vida
Fases
del Ciclo de Vida

Inicio o Estudio de oportunidad (inception)

– Define el ámbito y objetivos del proyecto

– Se define la funcionalidad y capacidades del producto

Elaboración

– Tanto la funcionalidad como el dominio del problema se estudian en profundidad

– Se define una arquitectura básica

– Se planifica el proyecto considerando recursos disponibles

Fases del Ciclo de Vida
Fases
del Ciclo de Vida

Construcción

– El producto se desarrolla a través de iteraciones donde cada iteración involucra tareas de análisis, diseño e implementación

– Las fases de estudio y análisis sólo dieron una arquitectura básica que es aquí refinada de manera incremental conforme se construye (se permiten cambios en la estructura)

– Gran parte del trabajo es programación y pruebas

– Se documenta tanto el sistema construido como el manejo del mismo

– Esta fase proporciona un producto construido junto con la documentación

Fases del Ciclo de Vida
Fases
del Ciclo de Vida

Transición

– Se libera el producto y se entrega al usuario para un uso real

– Se incluyen tareas de marketing, empaquetado atractivo, instalación, configuración, entrenamiento, soporte, mantenimiento, etc.

– Los manuales de usuario se completan y refinan con la información anterior

– Estas tareas se realizan también en iteraciones

Modelos de Valoración
Modelos de Valoración
Modelos de Valoración
Evolución
Evolución
Evolución
Disciplinas en la IngeSoft
Disciplinas en la IngeSoft

• Responden al estudio particular de una actividad del proceso o a un rasgo predominante de las tecnologías involucradas en el desarrollo del software

• Incluyen o hacen uso de conceptos de otras ingenierías o ciencias como Computación, Biología, Matemáticas, Sociología, etc.

Algunas disciplinas con actividad reciente:
Algunas disciplinas con actividad
reciente:

• Ingeniería de Requerimientos

• Usabilidad

• Calidad de Software

• Modelos de Valoración

• Gestión de Proyectos de Software

• Ingeniería Web

– Web Semántica

– Computación Social

• Arquitectura de Software

Arquitectura de Software como disciplina de la IngeSoft • La Arquitectura de Software (AS) se

Arquitectura de Software como disciplina de la IngeSoft

• La Arquitectura de Software (AS) se enfoca en la organización (un concepto cualitativo o estructural) del Software el cual puede ser cuantificado dentro de los modelos de proceso propios de la IngeSoft.

• La AS Sirve como marco de referencia para:

– Satisfacer requerimientos del software

– Estimación de costos y administración del proceso

– Análisis de las dependencias y la consistencia del sistema.

Créditos
Créditos

• Jill Aden (jill.aden@eds.com) Lead Technologist – Minnesota Solution Centre.

• M.W. Richardson (mrichardson@ilogix.com) Lead Applications Engineer. I-Logix UK

• Simon Pickin (spickin@it.uc3m.es) Departamento de Ingeniería Telemática, Universidad Carlos III de Madrid.

• Patricio Letelier - Introducción al Proceso de Desarrollo de Software.