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. éstos pueden ser . de desarrolladores necesarios por módulo Si es comprado.

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 .

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

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

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

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

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

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 menor sea su grado se hace referencia a elementos de mayor especificidad. (automóvil.(ej: encender automóvil) • Abstracción de datos: Describe las características de un objeto. 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.

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. • Modelos Estructurales • Modelos de Marco de Trabajo • Modelos Dinámicos • Modelos del Proceso • Modelos Funcionales .

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 . (III) • Patrones: Es una semilla de conocimiento.

. (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. 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. algoritmos innecesarios. (V) • Refinamiento: Estrategia de diseño descendente. . estructuras de datos inapropiados o mal construidas. 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.

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

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

Evolutivas.Fundamentos de la Arq. de Software • Complejidad del Proceso del Software  Metodologías de Desarrollo: Incrementales. Á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. el software debe cumplir con: • La funcionalidad • Atributos de calidad . resolverlo de la mejor forma • Técnicamente hablando. además de resolver el problema.

decisiones } • AS: Conjunto de elementos arquitecturales que poseen alguna organización. 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. 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 .

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

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.

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

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 .

Como resultado. Puede describir reglas a seguirse. pues debe existir un registro histórico (versiones). promueve la compresión y el mantenimiento del sistema representado por la arquitectura • Evolución: • Una decisión arquitectural no necesariamente describe módulos. clases o servicios. 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.

Sign up to vote on this title
UsefulNot useful