T E M A R I O .
PROGRAMACIÓN
E INGENIERÍA DE SOFTWARE
A.
Algorítmica
I. Representación
y manipulación de datos
1. Taxonomía de las
estructuras de datos
- Apuntadores (R, E, RP)
- Vectores, matrices,
cubos, hipercubos (R, E, RP)
- Listas: simples,
ligadas, doblemente ligadas, colas, pilas (stacks),
colas de prioridades (R, E, RP)
- Árboles: binarios, n-arios
(R, E, RP)
- Montículos (heaps),
balanceados, árboles-AVL (R)
- Gráficas: no
dirigidas, dirigidas, multigráficas, pesadas (R)
Sugerencias bibliográficas:
[CORL90], [KNUD73], [KNUD73a], [MAGM90], [SEDR95], [WEIM95],
[WIRN87]
II. Archivos
1. Archivos de
almacenamiento
- Dispositivos de
almacenamiento (R)
- Parámetros de
almacenamiento: número de cilindros, pistas,
tiempo de acceso, posicionamiento, densidad de
grabación (R, E)
- Formas de almacenaje:
modo texto y modo binario (R, E)
Sugerencias bibliográficas:
[CORL90], [MAGM90], [SEDR95]
2. Accesos
- Acceso secuencial (R,
E, RP)
- Acceso directo y cálculo
de posición (R, E, RP)
- Acceso por índices:
índice secuencial ordenado (R, E)
- Acceso por índices:
tablas de dispersión (R, E)
- Acceso por índices:
árboles B y B+ (R, E)
Sugerencias bibliográficas:
[CORL90], [MAGM90], [SEDR95]
III. Fundamentos
de algorítmica
1. Interpretación de
algoritmos
- Resultado de
algoritmos que involucren ejecución secuencial (asignación,
condición e iteración) (R, E)
- Resultado de
algoritmos que involucren ejecución recursiva (R,
E)
Sugerencias bibliográficas:
[CORL90], [KNUD73], [MAGM90], [SEDR95], [WEIM95]
2. Aplicación y
reconocimiento de algoritmos de búsqueda y ordenamiento
interno
- Burbuja, de inserción
y selección: rangos de n para los cuales son
recomendados, estructuras que requieren del
lenguaje de implementación, con qué tipos de
llaves son convenientes (R, E, RP)
- Rápido (quicksort),
mezcla (mergesort), ordenamiento de Shell (shellsort),
montículo (heapsort): rangos de n para los
cuales son recomendados, estructuras que
requieren del lenguaje de implementación, con qué
tipos de llaves son convenientes (R, E)
- Búsqueda: secuencial
y binaria (R, E, RP)
Sugerencias bibliográficas:
[CORL90], [KNUD73a], [MAGM90], [SEDR95], [WEIM95], [WIRN87]
3. Aplicación y
reconocimiento de algoritmos de ordenamiento externo
- Polifase (R)
- Intercalación de
archivos (R, E, RP)
- Cascada (R)
- Mergesort (R)
Sugerencias bibliográficas:
[CORL90], [KNUD73a], [MAGM90], [SEDR95], [WEIM95], [WIRN87]
4. Análisis de algoritmos
- "Ordenar"
las distintas complejidades en algoritmos y las
relaciones que existen entre distintas clases de
complejidad (R)
- Dadas las funciones
de complejidad, calcular el tiempo y espacio
requeridos para problemas concretos que utilicen
estructuras de datos con representaciones
distintas (R, E, RP)
- Problemas tratables e
intratables: P, NP y NP-completos (R)
Sugerencias bibliográficas:
[CORL90], [HARD92], [MAGM90], [SEDR95], [WEIM95]
B.
Paradigmas de programación y lenguajes
I. Fundamentos de
los lenguajes de programación
1. Elementos de
modularización
- Subprogramas:
diferencia entre procedimientos (subprogramas),
funciones y macros (R, E, RP)
- Unidades, clases,
bibliotecas, paquetes, módulos (R, E, RP)
Sugerencias bibliográficas:
[GHEJ98], [PRAZ97], [SETR92]
2. Mecanismos de
modularización y su rango de aplicación
- Vinculación estática
y dinámica (R, E)
- Paso de parámetros:
momentos de evaluación de los parámetros, tipos
de parámetros, de entrada (input, por valor), de
salida (output, por referencia) (R, E, RP)
- Valores que regresan
las funciones: simples o estructurados, ubicación
en el ambiente de ejecución (R, E, RP)
- Acceso y ocultamiento
de la información: datos locales, globales,
privados, públicos, distintos niveles de
localidad, estructura de bloques, anidamiento
lexicográfico, anidamiento dinámico (de ejecución),
áreas comunes y registros con campos variantes (R,
E, RP)
- Programación por
eventos o interrupciones: diferencias entre
interrupciones y excepciones, facilidades para
atrapar interrupciones o excepciones (R)
- Coordinación de
procesos concurrentes y paralelos: secciones de
exclusión mutua, semáforos, mensajes (R)
Sugerencias bibliográficas:
[GHEJ98], [PRAZ97], [SETR92]
3. Paradigmas de
programación
- Programación
estructurada (C) (R, E, RP)
- Programación
orientada a objetos (C++ y Java) (R, E, RP)
- Programación
funcional (Lisp) (R)
- Programación lógica
(Prolog) (R)
- Conceptos de
programación visual (R)
Sugerencias bibliográficas:
[ARNK97], [BRAI90], [BURH90], [KERR91], [PRAZ97], [SETR92],
[STRB93], [TOUD90], [WINB89]
C.
Sistemas e industria del software
I. Ciclo de vida
de sistemas
1. Fases del desarrollo de
software
- Análisis preliminar
(enunciado general del problema, propósito del
sistema, requerimientos, principales entradas y
salidas, diagrama de bloques del sistema,
estimación de costos y beneficios y plan
preliminar de desarrollo) (R, E)
- Análisis detallado (técnicas
de recolección de información, determinación
de los requerimientos detallados, formalización
de los requerimientos, especificación de
alcances y limitaciones del sistema) (R, E)
- Diseño preliminar (definición
de restricciones, diseño de la arquitectura del
sistema, definición de interfaces entre módulos)
(R, E)
- Diseño detallado (descomposición
de los módulos en componentes elementales,
especificación de los componentes elementales,
diseño detallado de entradas y salidas, diseño
detallado de la base de datos) (R, E)
- Construcción (programación
estructurada u orientada a objetos, pruebas de
componentes) (R, E)
- Pruebas (elaboración
del plan de pruebas, preparación de casos,
establecimiento de criterios de revisión,
elaboración de las pruebas, evaluación de
resultados) (R, E)
- Instalación (manual
de usuario, ayudas interactivas, capacitación,
corridas de prueba) (R, E)
- Mantenimiento (correctivo,
adaptativo, perfectivo, pruebas de regresión, técnicas
de mantenimiento) (R, E)
Sugerencias bibliográficas:
[PRER92], [PRER92a], [SOMI96]
2. Ciclos de vida de
desarrollo de sistemas
- En cascada (R, E)
- Espiral (R, E)
Sugerencias bibliográficas:
[PRER92], [PRER92a], [SOMI96]
II. Metodologías
para el desarrollo de sistemas
1. Enfoque funcional (Yourdon)
- Análisis
estructurado (diagrama de flujo de datos,
diccionario de datos, miniespecificaciones,
diagramas de transición de estado) (R, E)
- Diseño estructurado
(diagramas de estructura, acoplamiento, cohesión,
análisis de transformaciones, análisis de
transacciones) (R, E)
Sugerencias bibliográficas:
[PRER92], [PRER92a], [SOMI96], [YOUE93]
2. Enfoque de datos
- Modelo entidad-relación
(R, E)
- Jackson System
Development (R, E)
- Metodología Warnier-Orr
(R, E)
Sugerencias bibliográficas:
[PRER92], [PRER92a], [SOMI96]
3. Enfoque orientado a
objetos
- Conceptos generales (características
y conceptos del modelo de objetos, clases y
objetos, relaciones entre objetos, relaciones
entre clases) (R, E)
- Análisis orientado a
objetos (el modelo de objetos, el modelo dinámico,
el modelo funcional) (R, E)
- Diseño orientado a
objetos (definición de la arquitectura del
sistema, diseño del componente del dominio: de
la interfase humana, del problema, de la
administración de tareas y de la administración
de datos, refinamiento de clases y objetos) (R, E)
Sugerencias bibliográficas:
[BOOG96], [CODY90], [CODY90a], [FORJ91], [JACC96], [MARO94],
[MARO97], [MARO97a], [MARR95], [RUMB96]
4. Herramientas CASE
- Tipos (uppercase,
lowercase) (R)
- Componentes (R)
Sugerencias bibliográficas:
[GANC90], [MCCC89]
III. Administración
del desarrollo y la calidad del sistema
1. Administración de
proyectos
- Estimación de tiempo
y costo de cada actividad (R, E)
- Planificación
temporal de proyectos (gráficas de GANTT y ruta
crítica) (R, E)
Sugerencias bibliográficas:
[COHD96], [MCCC89]
2. Aseguramiento de la
calidad
- Concepto de calidad (R)
- Estándares (R, E)
- Especificaciones (R,
E)
- Factores de calidad (corrección,
confiabilidad, eficiencia, facilidad de uso, de
prueba y de mantenimiento, adaptabilidad y
flexibilidad, portabilidad, reuso, completud,
facilidad de auditoría) (R, E)
- Métricas de calidad
(diferencias entre el sistema y las
especificaciones y estándares) (R, E)
- Revisiones técnicas
(R, E)
Sugerencias bibliográficas:
[SANC94], [YOUE92]
IV. Industria del
software
1. Proceso de desarrollo
- Pruebas betas (R, E)
- Control de versiones
(R, E)
- Soporte técnico (R,
E)
Sugerencias bibliográficas:
[COHD96], [CONS95], [ELLE98]
|