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

Proceso

Herramientas Modelos
(Tecnología) (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
Modelado Visual - Abstracción
“El modelado captura las
partes esenciales del sistema”

Orden

Item

envío

Proceso de Negocios

Sistema Computacional
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?

• Es el conjunto de actividades organizadas y


sincronizadas para alcanzar los objetivos propuestos
en el desarrollo de un producto de software

Requisitos nuevos Sistema nuevo


o modificados o modificado
Proceso de Desarrollo
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 procesos
que el desarrollador del software sigue
cuando desarrolla un nuevo software
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
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 desarrollo
incremental
Ciclo de vida en espiral
Caracteristicas
Desarrollo formal de Software
Ciclo de vida en el
Desarrollo formal de SW
Características
Desarrollo formal
Desarrollo apoyado en reuso
Fases en el reuso de SW
Comparación de modelos
“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
Metodologías
Elementos de una metodología
Metodologías Estructuradas
Metodologías OO
Caso de revisión: Unified Process

• Proceso Dirigido por los Casos de Uso


• Proceso Iterativo e Incremental
• Proceso Centrado en la Arquitectura
Modelo UP
Fases e Hitos (Milestones)

Inception Elaboration Construction Transition

Objetivos Arquitectura Capacidad Release


(Vision) Operacional del Producto
Inicial

tiempo
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

Capturar, definir y
Requisitos
validar los casos de uso

Análisis & Diseño Casos de Uso


Realizar los
integran el
trabajo casos de uso
Implementación
Verificar que se
Pruebas satisfacen los casos
de uso
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
 Las actividades se encadenan en una
mini-cascada con un alcance limitado por
los objetivos de la iteración

Análisis

Diseño

Codific.
n veces Pruebas e
Integración
... 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
 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 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:
• 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 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
• 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.

También podría gustarte