MIT OpenCourseWare


6.170 Curso práctico en Ingeniería de Software

Página principal
¿Qué es OCW?
Ayuda
Feedback
Preguntas frecuentes
Glosario
 
 
Página principal del curso
Programa
Calendario
Material de clase
Trabajos
Exámenes
  Lecturas obligatorias
  Otras fuentes
  Prácticas
  Clases de repaso
  Herramientas
  Proyectos

   MIT

   
 

Programa

Objetivos

El curso trata una gran variedad de habilidades para el desarrollo del software, abarcando desde el análisis de un problema hasta la implementación de su solución. Al final del curso, se espera que los estudiantes sean capaces de:

  1. Analizar un problema de desarrollo de software y deducir su naturaleza de manera concreta y con precisión.
  2. Diseñar una estructura de módulos para solucionar un problema y evaluar otras alternativas.
  3. Implementar un módulo que se ejecute correctamente y de manera eficiente.
  4. Trabajar en un pequeño equipo, colaborando en estos aspectos del desarrollo de software intercambiando ideas de manera constructiva y organizada.
  5. Valorar temas de ingeniería en el desarrollo del software, tales como la importancia de centrarse en los intereses del usuario, trabajar con recursos limitados, ocuparse del mantenimiento, demostrar seguridad y la división de tareas.

Requisitos esenciales

Se asume que al inicio del curso los estudiantes son capaces de:

  1. Crear un pequeño programa (de 100 líneas de código, por ejemplo) que satisfaga una especificación;
  2. Entender las nociones básicas de la programación imperativa (tales como bucles, procedimientos, excepciones, y aliasing) y de la programación orientada a objetos (objetos, referencias, self, interfaces y subclases);
  3. Utilizar y comprender los programas que usan estructuras de datos básicas, tales como arrays, tablas hash, árboles, y listas.

Resultados

Al finalizar el curso, los estudiantes deberían ser capaces de

  1. Identificar las entidades e interrelaciones claves del dominio del problema; redactar descripciones textuales concretas de los problemas, adoptando el estilo de un manual para el usuario.
  2. Diseñar programas: elaborar un diseño compuesto por un conjunto de módulos, utilizando diagramas de dependencia modular para expresar y evaluar los acoplamientos entre módulos, y modelos de objeto para relacionar estados concretos con estados abstractos; explotar patrones de diseño que sean bastante conocidos (tales como Iterator, Observer, Factory y Visitor); idear las especificaciones modulares adecuadas y expresarlas de manera informal como pre - y post-condiciones; comprender los roles adecuados de los conceptos subtipo y herencia, y utilizarlos de manera eficaz.
  3. Implementar programas: escribir código orientado a objetos para satisfacer la especificación de un módulo; expresar invariantes de representación, entender cómo afectan a la eficiencia del programa y a su facilidad de implementación e implementarlas como sentencias en tiempo de ejecución; comprender las nociones fundamentales de abstracción de datos, y leer y escribir funciones de abstracción para tipos de datos simples; evaluar si un módulo es correcto mediante una cuidadosa revisión manual, usando la especificación, el invariante de representación y la función abstracta; desarrollar suites de pruebas a nivel de unidad y sistema, y evaluar su correcto funcionamiento utilizando nociones simples de cobertura de código y especificación.
  4. Realizar una pequeña creación en equipo, incluyendo el análisis de un problema, el diseño, la implementación y el testeo.

Cada resultado constituye la base del objetivo del número siguiente. El objetivo (5) se basa en el resultado del (4).

Información Jurídica | Privacidad
Todo uso del sitio de MIT OpenCourseWare y sus materiales de curso queda sujeto a las condiciones y términos de uso detallados
en la sección sobre Información Jurídica
Contacta con nosotros: Usuarios | Empresas-Instituciones-Medios comunicación
Código Ético | Aviso Legal | Política de confidencialidad | Quiénes somos: Sala de Prensa