arquitectura de software -...
Post on 28-Jul-2020
6 Views
Preview:
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