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 .

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. cuánto costará cada módulo Costo total del desarrollo • Facilita la comunicación • Al contener conocimientos sobre el sistema. de desarrolladores necesarios por módulo Si es comprado. é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 .

(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. representaciones y soluciones. Juntos definen un esquema conceptual del Diseño del Software . restricciones.Elementos del Proceso de Diseño de Soft. alternativas.

el cliente especifica sus necesidades • Esas necesidades al querer ser satisfechas. 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 . (IV) Elemento: Objetivos • En Ingeniería de Software.Elementos del Proceso de Diseño de Soft.

convenciones o principios que definen el contexto del proceso de diseño. (V) Elemento: Restricciones • Las restricciones son: las reglas. requisitos. 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. experiencia y creatividad . relaciones.Elementos del Proceso de Diseño de Soft.

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 . (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. comunicables. evaluables y discutibles • Usan dimensiones: comportamiento. relaciones.Elementos del Proceso de Diseño de Soft. estructura.

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 . identificando los módulos y las relaciones entre sí y con el entorno.

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

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

(III) • Patrones: Es una semilla de conocimiento.Principios y Técnicas de Diseño de Soft. 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 .

(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. 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. .Principios y Técnicas de Diseño de Soft.

elementos inútiles. . 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. estructuras de datos inapropiados o mal construidas.Principios y Técnicas de Diseño de Soft. algoritmos innecesarios. (V) • Refinamiento: Estrategia de diseño descendente.

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. consistencia y documentación general.” • Testeo • Escalabilidad .Atributos de Calidad del Software (I) • Funcionalidad: “Se estima al evaluar el conjunto de características y capacidades del programa.” • Facilidad de uso “Se valora al considerar los factores humanos. la estética. la precisión de los resultados de salida.” • Confiabilidad “Se evalúa al medir la frecuencia y severidad de las fallas.

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

Evolutivas. de Software • Complejidad del Proceso del Software  Metodologías de Desarrollo: Incrementales.Fundamentos de la Arq. Á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 .

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. además de resolver el problema. el software debe cumplir con: • La funcionalidad • Atributos de calidad . resolverlo de la mejor forma • Técnicamente hablando.

Definición de Arq. de Software (I) • Un primer acercamiento a la definición: Arquitectura = { elementos. Estos elementos y su organización son definidos por decisiones tomadas para satisfacer objetivos y restricciones • Pero también existen relaciones entre elementos arquitecturales. decisiones } • AS: Conjunto de elementos arquitecturales que poseen alguna organización. organización. 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 .

Definición de Arq. sus relaciones. de Software (III) Definición ISO / IEEE 1471-2000 • AS: Es la organización fundamental de un sistema incorporado sus componentes. el entorno y los principios que conducen su diseño y evolución. • 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 .

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

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. 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 (I) • Decidir incorporar un Elemento Arquitectural significa tomar una Decisión Arquitectural • Al tomar todas las Decisiones Arquitecturales se debe documentar su resultado.

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

Decisiones Arquitecturales (III) Características: • Descripción: • Describir los elementos. por . servicios. módulos. porque presenta mejores resultados. la comunicación entre ellos. Sea por estándares. 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. principios que conducen a la evolución • Objetivos • Explicar el objeto de cada decisión. clases.

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 . pues debe existir un registro histórico (versiones). clases o servicios.Decisiones Arquitecturales (VI) • Rastreabilidad: • Facilita la comprensión de la evolución la decisión tomada. 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. Puede describir reglas a seguirse.

Sign up to vote on this title
UsefulNot useful