Arquitectura de Software

1,944 views

Published on

Published in: Education
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
1,944
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
61
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Arquitectura de Software

  1. 1. Diseño de softwareClase 13Arquitectura y estilosProfesor: Juan José González Faúndez
  2. 2. Arquitectura de Software• IEEE 1471El nivel conceptual más altode un sistema en suambiente.• Arquitectura es laorganización fundamental deun sistema descrita en:– Sus componentes.– Relación entre ellos y con elambiente.– Principios que guían su diseñoy evolución.+ Software Architecture in Practice- Kazman“La estructura de estructuras de unsistema, la cual abarcacomponentes de software,propiedades externas visibles deestos componentes y susrelaciones”.
  3. 3. Discusión+ Definir la arquitectura en los proyectos actuales es crítico...+ Es el “puente” entre los requerimientos del sistema y laimplementación.+ Las actividades que culminan en la definición de la arquitecturapueden ubicarse en las fases tempranas del ciclo de desarrollo delsistema: luego del análisis de los requerimientos y el análisis deriesgos, y justo antes del diseño detallado.+ Sirve de MEDIO DE COMUNICACIÓN entre los miembros del equipode desarrollo, los clientes y usuarios finales, dado que contempla losaspectos que interesan a cada uno.
  4. 4. Discusión+ Existe alguna diferencia entre arquitectura y diseño de software?
  5. 5. Arquitectura Vs. DiseñoArquitectura DiseñoNivel deAbstracciónAlto nivel Bajo nivel. Enfoqueespecífico en detallesEntregables Planear subsistemas, interfacescon sistemas externos,servicios horizontales,frameworks, componentesreutilizables, prototipoarquitectónicoDiseño detalladocomponentes.Especificaciones decodificaciónÁreas deEnfoqueSelección de tecnologías,Requerimientos no funcionales(QoS),Manejo de riesgosRequerimientosfuncionales+ La arquitectura y el diseño difieren en tres áreas:
  6. 6. Arquitectura Vs. Diseño• La arquitectura envuelve un conjunto dedecisiones estratégicas de diseño,lineamientos, reglas y patrones querestringen el diseño y la implementaciónde un software.Las decisionesde arquitecturacausan un altoimpacto en losproyectos de ITArquitecturaDiseñoImplementaciónCódigo
  7. 7. Discusión+ Cuales son los principios fundamentales en los métodos de desarrollode software modernos?
  8. 8. Arquitectura y Procesos de DesarrolloPrincipios Fundamentales de Procesos Modernos+ Desarrollo iterativo e incremental.+ Conducido por las calidades sistémicas.+ Centrado en la arquitectura.+ Dirigido por los casos de uso.+ Basada en Modelos.+ Mejores prácticas de diseño.
  9. 9. Arquitectura y Procesos deDesarrollo• Que es un Proceso de Arquitectura?• Rational Unified Process:• Secuencia de actividadesque conllevan a laproducción de artefactosarquitectónicos:– Descripción de arquitectura– Prototipo arquitectónico
  10. 10. Arquitectura y Procesos deDesarrolloRational Unified Process:En el proceso de definición dearquitectura se producen:+ Arquitectura Inicial.+ Arquitectura de Referencia.+ Documento de Descripción dearquitectura (SAD):– Subsistemas– Componentes– Arquitectura Runtime.+ Guías para el proyecto yestándares de Diseño.SunTone AM:Adicionalmente se producen:+ Matriz Tecnológica de Layersy Tiers+ Template de Arquitectura
  11. 11. Arquitectura de Software -Introducción11Distribución del Costo del SoftwareMantenimientoDiseñoProgramaciónTest
  12. 12. Costos de Mantenimiento delSoftwareArquitectura de Software -IntroducciónTest ydepuraciónImplementarcambiosRastrearlógicaDefinircambiosAnalizardocumentosActualizardocumentosMás del 50% deltiempo delprogramadorencargado demantenimiento estádedicado acomprender el códigoy la documentacióndel sistema.
  13. 13. Arquitectura en el proceso dedesarrolloArquitectura de Software -IntroducciónRequisitosArquitecturaDiseñoDetalladoProgramaciónTestMantenimiento– Aclarar intenciones.– Hacer explícitas las decisiones.– Permitir análisis a nivel de sistemas.Reducir los costos demantenimiento directa eindirectamente.Diseño
  14. 14. ¿Para qué la Arquitectura deSoftware? Las personas necesitan pensar, diseñar, codificar,y comunicarse en términos de grandes bloquesconceptuales.– Abstracción Es necesario escapar de los desarrollosexcesivamente personalizados y estandarizar eldiseño.– Reutilización de patrones de arquitectura Es necesario diseñar sistemas de larga vida.– Reutilización de componentes particularesArquitectura de Software -Introducción
  15. 15. ¿Para qué más? Productividad en el desarrollo:actualmente solamente se reutiliza el código y lasestructuras de datos. Atacar otros problemas del ciclo de vida delsoftware:Modificabilidad, portabilidad, escalabilidad,seguridad.A medida que el tamaño del sistema crece, lassoluciones a estos problemas radican más en laarquitectura. Tener un lenguaje común para diseñadores,desarrolladores y usuarios.Arquitectura de Software -Introducción
  16. 16. Ciclo de Vida de la Arquitectura• Los objetivos de la organización influencian losrequisitos.• Los requisitos nos llevan a un diseño dearquitectura.• La arquitectura da como resultado un sistema.• Los sistemas construidos sugieren nuevasoportunidades para la organización y nuevosrequisitos.Arquitectura de Software -Introducción
  17. 17. Influencias sobre el Arquitecto deSoftwareArquitectura de Software -IntroducciónArquitectoAdministradorde laorganizacióndesarrolladoraBajos costos,mantener a lagente ocupadaEncargadodeMarketingElementosatractivos, cortotiempo para poneren el mercado,bajos costos,comparable conproductos de lacompetenciaUsuario FinalComportamientoapropiado,performance,seguridad,confiabilidadOrganizaciónencargada delmantenimientoMantenibilidadClienteBajos costos,entrega a tiempo,sin cambiosfrecuentes
  18. 18. Influencias sobre la ArquitecturaArquitectura de Software - IntroducciónArquitectoArquitecturaSistema•Cliente yusuario final•Organizacióndesarrolladora•Ambientetécnico•Experienciadel arquitectoRequisitos(cualidades)Influencias del Arquitecto
  19. 19. Etapas de Desarrollo Basado enArquitectura1. Hacer un caso de negocio para el sistema2. Comprender los requisitos3. Crear o seleccionar una arquitectura4. Representar y comunicar la arquitectura5. Analizar o evaluar la arquitectura6. Implementar el sistema basado en laarquitectura7. Asegurar que la implementación se ajusta a laarquitectura Arquitectura de Software -Introducción
  20. 20. ¿Cómo se hace una buenaarquitectura?• La arquitectura debe ser producida por un solo arquitecto o ungrupo pequeño.• El arquitecto debe disponer de los requisitos técnicos del sistemay una lista priorizada de propiedades cualitativas que se esperaque el software satisfaga.• La arquitectura debe estar bien documentada usando unanotación acordada que todos los interesados puedan comprendercon poco esfuerzo.• Se debe facilitar la arquitectura a los interesados, los cualesdeben estar involucrados activamente en su revisión.Arquitectura de Software -Introducción
  21. 21. ¿Cómo se hace una buenaarquitectura? La arquitectura debe analizarse para comprobar susmedidas cuantitativas y propiedades cualitativas antesde que sea muy tarde para cambiarla. La arquitectura debe permitir crear un esqueleto desistema donde se reflejen todas las vías decomunicación pero con mínima funcionalidad. El diseño de la arquitectura debe dar como resultadoun conjunto específico de áreas críticas de consumo derecursos, cuya resolución estará claramentedocumentada y mantenida.Arquitectura de Software -Introducción
  22. 22. ¿Cómo es una buena arquitectura?• Los módulos deben diseñarse con el principio de separación deintereses– distintos grupos de trabajo pueden desarrollarlosindependientemente• La información oculta incluirá todo aquello dependiente de lainfraestructura tecnológica.• Cada módulo tendrá una interfaz definida que oculta a los otrosmódulos los aspectos cambiables.• La arquitectura no debe depender de una versión particular deun producto comercial. De ser así, éste debe estar estructuradode modo que sea fácil y barato cambiarlo.Arquitectura de Software -Introducción
  23. 23. ¿Cómo es una buenaarquitectura?• Los módulos que producen y los que consumendatos deben estar separados:– esto tiende a aumentar la mantenibilidad porque engeneral sólo una parte cambia.• Cada tarea o proceso debe describirse de modo quesu asignación a un procesador específico pueda serfácilmente cambiada, aún durante su ejecución.• La arquitectura debe seguir uno o unos pocospatrones de interacción:– mayor comprensión, menor tiempo de desarrollo, mayorconfiabilidad, mayor modificabilidad.Arquitectura de Software -Introducción
  24. 24. Importancia de la Arquitectura• comunicación entre laspersonas involucradas,• documentación temprana delas decisiones de diseño,• restricción de laimplementación,• la arquitectura dicta laestructura organizacional,• facilita o inhibe propiedadesdel sistema,• permite predecir cualidades delsistema,• facilita la administración de laevolución,• una abstracción transferible delsistema,• las líneas de productos compartenarquitectura,• puede usarse COTS (componentessoftware ya desarrollados y de índolecomercial),• base para el entrenamiento de nuevopersonal.Arquitectura de Software -Introducción
  25. 25. Ejemplo - Grabadora IP Una empresa desea desarrollar un software de grabaciónde conversaciones sobre telefonía IP para un centro dellamados. Existen soluciones comerciales para esta funcionalidad,pero tienen altos costos de licencias. La empresa quiere hacer este desarrollo para– usarlo en sus instalaciones– venderlo a otras empresas Se desea que la aplicación tenga un módulo adicionalpara oír las conversaciones en tiempo real, eligiendo laoperadora a través de una interfaz web.Arquitectura de Software -Introducción
  26. 26. Grabadora IP: Stakeholders y Cualidades• Usuarios: operadoras– Desean que la grabadora noentorpezca su labor– Debe consumir pocos recursospara no constituir un cuello debotella• Cliente: dueño del centro dellamadas– Bajo costo y rápido desarrollo– Flexible para adaptarse a distintoscentros de llamados– Escalable, portable• Marketing: encargado devenderlo– Fácil de instalar• Desarrolladores– Desarrollo en plataforma ytecnología conocida• Mantenedores– Desarrollo en plataforma ytecnología estándarArquitectura de Software -Introducción
  27. 27. Grabadora IPArquitectura de Software -IntroducciónOperadorasCentral IPRed telefónicaexteriorCentro deLlamadasguardarsniffer
  28. 28. Arquitectura:components, layers, client/server,dependencies, invocations, exchanged data.
  29. 29. Arquitectura:components, layers, client/server,dependencies, invocations, exchanged data.
  30. 30. Arquitectura: .NET Remoting
  31. 31. Arquitectura: sistema empresarialen 3 capas. ¿Diagrama útil?
  32. 32. AUTOSAR Architecture. ¿Estánlas capas realmente aquí?
  33. 33. Otra arquitectura. ¿Es útil el diagrama?.(ciertamente, es muy bonito ☺)
  34. 34. Uno más. ¿Útil?(ciertamente, es muy feo)
  35. 35. Y usted no necesita una herramienta de lujo, se puedeutilizar un rotafolio(asumiendo que su escritura es legible!)
  36. 36. XWA architectural framework
  37. 37. Informatyka portal architecturehttp://www.e-informatyka.pl/http://cocoon.apache.org/DAO PatternTransfer ObjectRepository
  38. 38. cmp ComponentsReservaDAOIReservaDAORequiredInterfaceReservaBLLRequiredInterfacecom.mysql.jdbcConnectionLibrería de Java paraconectarse a MysqlConnection conn =DriverManager.getConnection("jdbc:mysql://localhost/database","myLogin","myPassword" );Statement stmt =conn.createStatement();SELECTINSERTUPDATEDELETELógica de negociopara una reservaapp.ejemplo.ViewReservaViewapp.ejemplo.controllerReservaControllerCapa de presentacióngetReservas() List<Reserva>
  39. 39. ¿Preguntas?

×