Objetivos del curso

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


Ultima actualización: 24 Septiembre 2011
contacto: hcm@xanum.uam.mx
Homepage