arquitectura de software -...

Post on 28-Jul-2020

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Maestría en IngenieríaArquitectura de Software

Sesión 1

Fernando Barraza A., Ms.Cfbarraza@javerianacali.edu.co

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?

• Def1: “Es la aplicación de un enfoquesistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingenieríaal 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

• 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

Complejidad del Software

Aspectos claves en el desarrollo de SW

Herramientas(Tecnología)

Proceso

Modelos(Notación)

Porque Modelamos?

Y si es un rascacielos?

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

Sistema Computacional

Proceso de Negocios

Orden

Item

envío

“El modelado captura laspartes esenciales del sistema”

Modelado Visual - Abstracción

Beneficios al modelar (1)

Manejar la complejidad

Beneficios al modelar (2)

Interface de Usuario(Visual Basic,

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)

Múltiples Sistemas

Componentes Reutilizados

Promover la Reutilización

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

construcción de los modelos a través del proceso

El reto …

=

La realidad …

¿Qué es un Proceso de Desarrollo de SW?

Requisitos nuevos

o modificados

Sistema nuevo

o modificadoProceso de Desarrollo

de Software

• Es el conjunto de actividades organizadas y sincronizadas para alcanzar los objetivos propuestosen el desarrollo de un producto 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

Actividades fundamentales

Actividades protectoras

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 procesosque el desarrollador del software siguecuando desarrolla un nuevo software

• 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

Ciclos de desarrollo

Modelos de procesos de SW

Code and Fix

Modelo en cascada

Ciclo de vida en Cascada

Fases del modelo en cascada

Desarrollo evolutivo

Ciclo de vida en el Desarrollo evolutivo

Tipos de desarrollo evolutivo

Desarrollo Iterativo

Ciclo de vida Iterativo

Ciclo de vida incremental

Caracteristicas desarrolloincremental

Ciclo de vida en espiral

Caracteristicas

Desarrollo formal de Software

Ciclo de vida en elDesarrollo formal de SW

CaracterísticasDesarrollo formal

Desarrollo apoyado en reuso

Fases en el reuso de SW

Comparación de modelos

• 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

“Best Practices” de los Ciclos de Vida

El proceso y otros elementos

Metodologías

Elementos de una metodología

Metodologías Estructuradas

Metodologías OO

• Proceso Dirigido por los Casos de Uso

• Proceso Iterativo e Incremental

• Proceso Centrado en la Arquitectura

Caso de revisión: Unified Process

Modelo UP

Fases e Hitos (Milestones)

tiempo

Objetivos(Vision)

Arquitectura CapacidadOperacional

Inicial

Releasedel Producto

Inception Elaboration Construction Transition

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)

RequisitosCapturar, definir y

validar los casos de uso

Realizar los casos de uso

Verificar que se satisfacen los casos

de uso

Proceso dirigido por los Casos de Uso

Análisis & Diseño

Implementación

Pruebas

Casos de Usointegran el

trabajo

� 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

� 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 eIntegración

n veces

... 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)

... Proceso Iterativo e Incremental

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� 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

� 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� 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

Evolución

Disciplinas en la IngeSoft

• Responden al estudio particular de unaactividad del proceso o a un rasgopredominante de las tecnologíasinvolucradas en el desarrollo del software

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

Algunas disciplinas con actividadreciente:

• 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 comodisciplina 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 procesopropios 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

• 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.

top related