Arquitectura de

Software
UNIVERSIDAD TÉCNICA DEL NORTE
Diego Javier Trejo España
Marzo - 2015

Diseño de Software
• “Es tanto el proceso de definición de la arquitectura,
módulos, interfaces y otras características de un
sistema, como el resultado de ese proceso”
• Al ser un proceso conlleva una ruta a seguirse
(planificación)
• La planificación mitiga los riesgos inherentes a la
construcción de un software complejo
• Se persigue proyectar el software antes de construirlo
• El resultado de esta proyección es el DISEÑO

Diseño de Software
• El Diseño facilita dos actividades esenciales en el Ciclo
de Vida
• Evaluar si el sistema cumple los objetivos antes de construir el
software
• Construir el sistema

• Se evalúan modelos y prototipos que constituyen una
solución
• La evaluación aumenta la calidad del producto final
• La evaluación no es 100% completa dado que se basa
sólo en modelos

Características del Diseño de Software (I) • Permite la evaluación PREVIA • Garantiza el cumplimiento de requisitos • El diseño del software es más barato que construir el software • Estimula el modelado • El diseñador se concentra en el Dominio del Problema • Se ignoran detalles poco significativos • Facilita la separación de la Complejidad Esencial de la Complejidad Accidental del problema .

de desarrolladores necesarios por módulo Si es comprado. cuánto costará cada módulo Costo total del desarrollo • Facilita la comunicación • Al contener conocimientos sobre el sistema.Características del Diseño de Software (II) • Involucra planificación • Sirve de guía en la fase de construcción • El diseñador anticipa lo que será necesario para la fase de construcción • La planificación ayuda en la estimación de costos de desarrollo • • • • Tiempo de duración del desarrollo Nro. éstos pueden ser .

Características del Diseño de Software (III) • El problema a ser resuelto puede no permanecer el mismo durante todo el proceso de diseño • Hay diferencias entre el Diseño y el Software construido a partir de él .

El Proceso de Diseño de Software CONOCIMIENTO ABSTRACTO Objetivos Objetiv os del Cliente Alternativa 1 Alternativa 2 Producto de diseño Alternativa 3 Solución Restricciones Cliente y Usuarios Construcción Proceso de Diseño Análisis Requisitos Representaci ón Analista Diversificación CONOCIMIENTO CONCRETO Convergencia Software .

(I) • El Proceso de Diseño involucra la elección de la representación de una solución a partir de varias alternativas • En la elección se toma en cuenta las restricciones que un conjunto de objetivos envuelve • El Proceso de Diseño se divide en dos fases: • Diversificación • Convergencia .Elementos del Proceso de Diseño de Soft.

Elementos del Proceso de Diseño de Soft. (II) • Fase de Diversificación • Se generan las alternativas • Una alternativa puede ser un documento conteniendo una posible solución • O también una idea de solución • Una alternativa constituye una solución en potencia por tanto satisface los objetivos esperados • Se generan/obtienen a partir del conocimiento y la experiencia del diseñador .

Juntos definen un esquema conceptual del Diseño del Software .Elementos del Proceso de Diseño de Soft. alternativas. restricciones. representaciones y soluciones. (III) • Convergencia • El diseñador escoge la alternativa o combinación de algunas • La alternativa elegida se somete a las restricciones impuestas por el Dominio del Problema • Se obtiene una solución que se describe por medio de alguna representación • Objetivos.

(IV) Elemento: Objetivos • En Ingeniería de Software. el cliente especifica sus necesidades • Esas necesidades al querer ser satisfechas.Elementos del Proceso de Diseño de Soft. se constituyen en objetivos a alcanzar • Aquello que se pretende alcanzar para resolver las necesidades del cliente • Necesidades del cliente = Requisitos del Sistema • Requisitos funcionales • Requisitos no funcionales .

experiencia y creatividad . convenciones o principios que definen el contexto del proceso de diseño. requisitos. (V) Elemento: Restricciones • Las restricciones son: las reglas. de forma que su producto sea viable Elemento: Alternativas • Alternativa de diseño es una posibilidad de solución representada en nivel de conocimiento • El diseñador no necesariamente documenta todas las alternativas • La generación de alternativas es un verdadero desafío • Las alternativas se basan en principios de diseño.Elementos del Proceso de Diseño de Soft. relaciones.

entidades lógicas y físicas Elemento: Soluciones • Solución de diseño es la descripción del diseño que permite la construcción del software que alcanza los objetivos . comunicables. (VI) Elemento: Representaciones • La representación de diseño es el lenguaje que expone el producto de diseño para su construcción • Facilita la comunicación porque hace las Alternativas manipulables. evaluables y discutibles • Usan dimensiones: comportamiento. estructura.Elementos del Proceso de Diseño de Soft. relaciones.

identificando los módulos y las relaciones entre sí y con el entorno.Niveles de Diseño de Software • El Proceso de Diseño da como resultado el Producto de Diseño • El Producto de Diseño es la descripción que permite la construcción del software • La Descripción tiene dos niveles de detalle • Alto Nivel (Diseño arquitectural): Describe la organización fundamental del sistema. En otras palabras describe como el software se descompone y organiza en módulos y sus relaciones • Diseño detallado: Describe el detalle y comportamiento específico de cada módulo que compone el Diseño .

entre menor sea su grado se hace referencia a elementos de mayor especificidad. no siendo necesario describir en detalle su especificación para reconocerlo) .Principios y Técnicas de Diseño de Soft. • Abstracción procedimental: Permiten describir procesos omitiendo detalles específicos. (I) • División y conquista • Abstracción: Existen diversos grados de abstracción . entre mayor sea el grado de la misma se considera una solución general.(ej: encender automóvil) • Abstracción de datos: Describe las características de un objeto. (automóvil.

(II) • Arquitectura: Representa la estructura general del software y la forma como interactúan sus componentes.Principios y Técnicas de Diseño de Soft. • Modelos Estructurales • Modelos de Marco de Trabajo • Modelos Dinámicos • Modelos del Proceso • Modelos Funcionales .

la cual tiene un nombre y transporta la esencia de una solución probada a un problema concurrente dentro de cierto contexto en medio de intereses en competencia • Encapsulamiento • Modularidad: El software se divide en componentes con nombres independientes y que es posible abordar en forma individual • Separación de preocupaciones . (III) • Patrones: Es una semilla de conocimiento.Principios y Técnicas de Diseño de Soft.

modificarlos y optimizarlos de manera mas rápida y efectiva • Cohesión : Medida de la fuerza funcional relativa de un modulo • Acoplamiento: Medida de interdependencia entre módulos. (IV) • Ocultación de información: Los módulos se caracterizan por ocultar las soluciones de diseño a otros • Independencia Funcional = Modularidad + abstracción + ocultamiento • Módulos independientes permiten probarlos.Principios y Técnicas de Diseño de Soft. .

complemento de la abstracción • Refabricación: Proceso de cambiar un sistema de software de tal forma que no altere el comportamiento externo de su código y aún así se mejore su estructura interna • Problemas de diseño: Redundancias. algoritmos innecesarios. estructuras de datos inapropiados o mal construidas. (V) • Refinamiento: Estrategia de diseño descendente.Principios y Técnicas de Diseño de Soft. . elementos inútiles.

la precisión de los resultados de salida. la habilidad para recuperarse de las fallas y la previsibilidad del programa. la media del momento de fallas. la generalidad de las funciones que se entregan y la seguridad del sistema en su totalidad. la estética.Atributos de Calidad del Software (I) • Funcionalidad: “Se estima al evaluar el conjunto de características y capacidades del programa.” • Testeo • Escalabilidad .” • Confiabilidad “Se evalúa al medir la frecuencia y severidad de las fallas. consistencia y documentación general.” • Facilidad de uso “Se valora al considerar los factores humanos.

” • Soportabilidad • Facilidad de mantenimiento • Extensibilidad • Disponibilidad • Configurabilidad. • Legibilidad • Reusabilidad . consumo de recursos. Facilidad de instalación • Facilidad localización de problemas.Atributos de Calidad del Software (II) • Desempeño “Se mide con la velocidad de procesamiento. tiempo de respuesta. rendimiento y eficacia.

Ágiles • El Proceso de Desarrollo no es tarea fácil  Muchos proyectos de software fracasan durante su desarrollo  o fracasan al obtener sus resultados • Entre los tipos de fracaso tenemos: • Proyectos que costaron mucho más de lo presupuestado • Proyectos incompletos . Evolutivas. de Software • Complejidad del Proceso del Software  Metodologías de Desarrollo: Incrementales.Fundamentos de la Arq.

resolverlo de la mejor forma • Técnicamente hablando. además de resolver el problema.No es fácil alcanzar un buen producto • Hay que lidiar con los siguientes aspectos: La complejidad inherente al problema a resolver La manera de resolver el problema • El software debe. el software debe cumplir con: • La funcionalidad • Atributos de calidad .

Estos elementos y su organización son definidos por decisiones tomadas para satisfacer objetivos y restricciones • Pero también existen relaciones entre elementos arquitecturales. Poseen propiedades Restringen los elementos arquitecturales para que satisfagan los objetivos del sistema Son ponderadas para indicar su importancia en la selección de alternativas . organización.Definición de Arq. de Software (I) • Un primer acercamiento a la definición: Arquitectura = { elementos. decisiones } • AS: Conjunto de elementos arquitecturales que poseen alguna organización.

Definición de Arq. sus relaciones. el entorno y los principios que conducen su diseño y evolución. de Software (III) Definición ISO / IEEE 1471-2000 • AS: Es la organización fundamental de un sistema incorporado sus componentes. • Constituye: • • • • • Estructura Componentes / Elementos Relaciones Diseño Evolución .

Elementos Arquitecturales • Tipos de elementos arquitecturales: • Los que usan o transforman información • Los que poseen información para ser usada o transformada • Los que conectan elementos entre si • También se clasifican en: • Estáticos • Dinámicos .

etc. servicios. entidades.Elementos Arquitecturales Estáticos • Partes de un sistema y su organización. tablas. paquetes. BDD. procedimientos. etc. infraestructura . clases. objetos. • De hardware: • CPU. comunicaciones. • De datos: • Estructuras. es decir las relaciones que existen entre ellos • Se definen durante el diseño y son: • De software: • Modelos.

Elementos Arquitecturales Dinámicos • Definen el comportamiento del sistema • Se definen durante la ejecución del sistema y son: • Procesos • Módulos • Protocolos .

a esto se denomina Documento Arquitectural o Documento de la Arquitectura de Software • Cada Decisión Arquitectural debe alcanzar al menos un Atributo de Calidad.Decisiones Arquitecturales (I) • Decidir incorporar un Elemento Arquitectural significa tomar una Decisión Arquitectural • Al tomar todas las Decisiones Arquitecturales se debe documentar su resultado. aplicado a uno o varios Objetivos o Requerimientos del Cliente • Por lo general una Decisión Arquitectural es el resultado de elegir uno de entre varios Elementos Arquitecturales propuestos en las Alternativas de Diseño .

Decisiones Arquitecturales (II) • Características • Descripción • Objetivos • Fundamentación • Rastreabilidad • Evolución. Aplicación de reglas para: • • • • Adición de funcionalidad Eliminación Modificación Atributos de calidad .

Decisiones Arquitecturales (III) Características: • Descripción: • Describir los elementos. conocimiento propio. normalmente se expresa como la acción de alcanzar o restringir un atributo de calidad • Fundamentación • Explicar porque fue tomada la decisión. porque presenta mejores resultados. la comunicación entre ellos. Sea por estándares. servicios. por . módulos. clases. principios que conducen a la evolución • Objetivos • Explicar el objeto de cada decisión.

Decisiones Arquitecturales (IV) Ejemplos • Descripción: • La descripción lógica de las capas de una aplicación que expone servicios web y la aplicación que los consume • Objetivos: • La división en capas disminuye el acoplamiento entre elementos internos facilitando el desarrollo y mantenimiento • Fundamentación: • Dividir en capas ayuda a la cohesión y acoplamiento .

tales como: • Reglas para adición de funcionalidad • Reglas para la modificación o mantenimiento • Reglas para eliminación o desactivación de funcionalidad .Decisiones Arquitecturales (VI) • Rastreabilidad: • Facilita la comprensión de la evolución la decisión tomada. clases o servicios. Puede describir reglas a seguirse. promueve la compresión y el mantenimiento del sistema representado por la arquitectura • Evolución: • Una decisión arquitectural no necesariamente describe módulos. Como resultado. pues debe existir un registro histórico (versiones).