Bienvenido a la
página de objetivos de aprendizaje del curso
Esta página busca presentar los objetivos de aprendizaje del
curso con el fin de facilitar a los estudiantes el saber qué
deben estudiar para sus examenes y qué se espera de ellos al
final del curso. Esto está inspirado de las ideas de Richard
Felder y se sugiere la lectura del artículo siguiente para
comprender mejor este tema:
Al final del curso, el alumno será capaz de:
Análisis y diseño de sistemas
Introducción
- Describir las características de un proceso de desarrollo secuencial (cascada) mediante:
- La explicación del propósito de cada una de
las fases principales (Requerimientos, Diseño,
Implementación, Validación, Mantenimiento)
- La identificación de al menos 3 problemáticas asociadas con esta metodología de desarrollo
- Describir las características del desarrollo iterativo
- Describir, de manera general, las características del proceso unificado
- Diferenciar entre fases y disciplinas
- Explicar qué son los roles y los artefactos
- Con respecto al modelado en el desarrollo de software
- Explicar su importancia
- Citar el nombre de los 9 diagramas de UML
Requerimientos
- Diferenciar entre las cuatro actividades principales
asociadas con la disciplina de requerimientos: captura,
análisis, especificación y validación
- Dentro de la captura de requerimientos
- Describir al menos 3 fuentes de requerimientos
- Describir 3 ejemplos de participantes
- Con respecto al documento de visión
- Explicar la utilidad de este documento
- Identificar las partes principales del documento
- Ser capaz de crear este documento
- Explicar la relación entre frase del problema, necesidad y caraterística
- Con respecto al modelado de procesos
- Explicar la utilidad de modelar procesos de la organización en donde se implanta el sistema
- Modelar un proceso de la organización mediante diagramas de actividades de UML
- Con respecto a los tipos de requerimientos
- Explicar la diferencia entre requerimientos funcionales y no-funcionales
- Poder dar al menos 2 ejemplos de cada tipo de requerimiento
- Con respecto al diagrama de casos de uso de alto nivel
- Explicar los elementos del diagrama de casos de uso (actores, casos de uso, sistema y relaciones entre actores y casos de uso)
- Crear un diagrama de casos de uso de “alto nivel”
- Con respecto a los documentos de casos de uso
- Explicar la utilidad de este documento
- Identificar las partes principales de este documento
- Ser capaz de crear un documento de casos de uso
Análisis de requerimientos
- Diagrama de casos de uso
- Refinar el diagrama de casos de uso de alto nivel e introducir relaciones entre casos de uso y actores
- Modelo de dominio del problema
- Determinar abstracciones clave a partir de los requerimientos
- Usar la técnica de tarjetas CRC para encontrar responsabilidades y colaboraciones (relaciones) entre abstracciones
- Obtener una versión inicial del modelo de dominio del problema a partir de las tarjetas CRC
- Diagrama de navegación
- Crear un diagrama de navegación usando un diagrama de estados de UML.
- Modelo de robustez
- Explicar la diferencia entre objetos de Frontera, Control y Entidad
- Crear un diagrama de robustez a partir de un documento de caso de uso
Diseño de alto nivel (arquitectura)
- Explicar el principio de alta cohesión y bajo acoplamiento
- Describir como la separación de interfaces e implementaciones apoya en la realización de este concepto
- Explicar la diferencia entre diseño de alto nivel y diseño de bajo nivel
- Para la arquitectura del sistema
- Explicar, de manera general, qué es la arquitectura de un sistema
- Describir al menos 3 modelos arquitectónicos distintos incluyendo una ventaja y desventaja para cada uno
- Explicar la arquitectura propuesta para el proyecto
- Realizar un diagrama de secuencia de UML para modelar detalles de diseño
- Patrones de diseño
- Describir qué es un patrón de diseño
- Describir la utilidad del patrón de diseño
visto en clase que permite separar lógica de negocio y mecanismo
de persistencia
- Mapeo relacional hacia orientado a objetos
- Identificar y saber realizar pasos del proceso para transformar modelo de dominio de diseño en modelo relacional
Conceptos de orientación a objetos
- Describir la diferencia conceptual entre la programación orientada a objetos y la programación estructurada
- Describir las características principales de un objeto incluyendo:
- Concepto de abstracción
- Estado, comportamiento, identidad
- Momento en el ciclo de vida de un programa en que existen los objetos y cómo se ven en memoria
- Describir el concepto del encapsulamiento así como la razón de su importancia
- Describir el concepto de Clase
- Describir aspectos fundamentales de una clase incluyendo:
- Elementos principales (nombre, atributos y métodos)
- Visiblidad publica o privada de elementos así como la relación de ésto con el concepto de encapsulamiento
- Método de incialización (constructor)
- Diferencia entre métodos de consulta vs. métodos de modificación de estado
- Diferencia entre atributos y métodos de clase vs. Atributos y métodos de objetos
- Representación de una clase en UML
- Traducción de una representación de una clase en UML hacia Java
- Describir la relación entre una clase y un objeto incluyendo:
- Manera en que se crean objetos a partir de clases
- Invocación de métodos de un objeto
- Identificar los 4 tipos de relaciones entre clases
(relación de dependencia, relación de asociación,
relaciones de agregación y composición (todo / parte),
relación de herencia)
- Con respecto a la relación de dependencia, será capaz de:
- Explicar la semántica de esta relación y su cuando es apropiado usarla
- Representar la relación en UML
- Traducir la relación a código en Java
- Con respecto a la relación de asociación, será capaz de:
- Explicar la semántica de esta relación y su cuando es apropiado usarla
- Representar la relación en UML (incluyendo roles, cardinalidades, navegabilidad)
- Traducir la relación a código en Java
- Con respecto a las relaciones de agregación y composición, será capaz de:
- Diferenciar la semántica de los dos tipos de relaciones
- Explicar la semántica de estas relaciones y su cuando es apropiado usarlas
- Representar las relaciones en UML
- Traducir las relaciones a código en Java
- Con respecto a la relación de herencia, será capaz de:
- Explicar la semántica de esta relación y su cuando es apropiado usarla
- Comprender la relación entre los tipos que ocurren a partir de esta relación
- Comprender la semántica de la visibilidad “protected”
- Representar la relación en UML
- Traducir la relación a código en Java
- Describir las características del concepto de polimorfismo
- Explicar cuando y por qué una referencia es polimórfica
- Explicar qué código se ejecuta ante una invocación polimórfica
- Explicar cuándo es necesario realizar conversiones de tipos explicitas
|