Referencias Bibliográficas: [Eric Freeman and Sierra, 2014,Hans-Erik Eriksson and Fado, 2003]
Temas
- Principios de diseño del sistema: niveles de abstracción (diseño arquitectónico y el diseño detallado), separación de intereses, ocultamiento de información, de acoplamiento y de cohesión, de reutilización de estructuras estándar.
- Diseño de paradigmas tales como diseño estructurado (descomposición funcional de arriba hacia abajo), el análisis orientado a objetos y diseño, orientado a eventos de diseño, diseño de nivel de componente, centrado datos estructurada, orientada a aspectos, orientado a la función, orientado al servicio.
- Modelos estructurales y de comportamiento de los diseños de software.
- Diseño de patrones.
- Relaciones entre los requisitos y diseños: La transformación de modelos, el diseño de los contratos, invariantes.
- Conceptos de arquitectura de software y arquitecturas estándar (por ejemplo, cliente-servidor, n-capas, transforman centrados, tubos y filtros).
- El uso de componentes de diseño: seleccion de componentes,diseño,adaptacion y componentes de ensamblaje, componentes y patrones, componentes y objetos(por ejemplo,construir una GUI usando un standar widget set)
- Diseños de refactorización utilizando patrones de diseño
- Calidad del diseño interno, y modelos para: eficiencia y desempeño, redundancia y tolerancia a fallos, trazavilidad de los requerimientos.
- Medición y análisis de la calidad de un diseño.
- Compensasiones entre diferentes aspectos de la calidad.
- Aaplicaciones en frameworks.
- Middleware: El paradigma de la orientacion a objetos con middleware, requerimientos para correr y clasificar objetos, monitores de procesamiento de transacciones y el sistema de flujo de trabajo.
- Principales diseños de seguridad y codificación(cross-reference IAS/Principles of securre design).
- Principio de privilegios mínimos
- Principio de falla segura por defecto
- Principio de aceptabilidad psicológica
Objetivos de Aprendizaje
- Formular los principios de diseño, incluyendo la separación de problemas, ocultación de información, acoplamiento y cohesión, y la encapsulación [Familiarizarse]
- Usar un paradigma de diseño para diseñar un sistema de software básico y explicar cómo los principios de diseño del sistema se han aplicado en este diseño [Usar]
- Construir modelos del diseño de un sistema de software simple los cuales son apropiado para el paradigma utilizado para diseñarlo [Usar]
- En el contexto de un paradigma de diseño simple, describir uno o más patrones de diseño que podrían ser aplicables al diseño de un sistema de software simple [Familiarizarse]
- Para un sistema simple adecuado para una situación dada, discutir y seleccionar un paradigma de diseño apropiado [Usar]
- Crear modelos apropiados para la estructura y el comportamiento de los productos de software desde la especificaciones de requisitos [Usar]
- Explicar las relaciones entre los requisitos para un producto de software y su diseño, utilizando los modelos apropiados [Evaluar]
- Para el diseño de un sistema de software simple dentro del contexto de un único paradigma de diseño, describir la arquitectura de software de ese sistema [Familiarizarse]
- Dado un diseño de alto nivel, identificar la arquitectura de software mediante la diferenciación entre las arquitecturas comunes de software, tales como 3 capas (3-tier), pipe-and-filter, y cliente-servidor [Familiarizarse]
- Investigar el impacto de la selección arquitecturas de software en el diseño de un sistema simple [Evaluar]
- Aplicar ejemplos simples de patrones en un diseño de software [Usar]
- Describir una manera de refactorar y discutir cuando esto debe ser aplicado [Familiarizarse]
- Seleccionar componentes adecuados para el uso en un diseño de un producto de software [Usar]
- Explicar cómo los componentes deben ser adaptados para ser usados en el diseño de un producto de software [Familiarizarse]
- Diseñar un contrato para un típico componente de software pequeño para el uso de un dado sistema [Usar]
- Discutir y seleccionar la arquitectura de software adecuada para un sistema de software simple para un dado escenario [Usar]
- Aplicar modelos de cualidades internas y externas en el diseño de componentes de software para lograr un equilibrio aceptable entre los aspectos de calidad en conflictos [Usar]
- Analizar un diseño de software desde la perspectiva de un atributo significativo de la calidad interna [Evaluar]
- Analizar un diseño de software desde la perspectiva de un atributo significativo de calidad externa [Evaluar]
- Explicar el papel de los objetos en los sistemas de middleware y la relación con los componentes [Familiarizarse]
- Aplicar métodos orientado a componentes para el diseño de una amplia gama de software, tales como el uso de componentes para la concurrencia y transacciones, para los servicios de comunicación confiables, para la interacción con la base de datos que incluye los servicios de consulta remota y gestión de bases de datos, o para la comunicación segura y el acceso [Usar]
- Refactorizar una implementación de software existente para mejorar algún aspecto de su diseño [Usar]
- Determinar y aplicar los principios de mínimo privilegio y defectos-a prueba de errores [Familiarizarse]
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM