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

Elementos del Proceso de Diseño de Soft. (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. (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 . 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.Elementos del Proceso de Diseño de Soft. alternativas. restricciones.

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. el cliente especifica sus necesidades • Esas necesidades al querer ser satisfechas.Elementos del Proceso de Diseño de Soft.

convenciones o principios que definen el contexto del proceso de diseño. requisitos. relaciones. (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. experiencia y creatividad .

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

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

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

Principios y Técnicas de Diseño de Soft. • Modelos Estructurales • Modelos de Marco de Trabajo • Modelos Dinámicos • Modelos del Proceso • Modelos Funcionales . (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. (III) • Patrones: Es una semilla de conocimiento. 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 .

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

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

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

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

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

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

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

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

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

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.

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

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 .

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

Sign up to vote on this title
UsefulNot useful