Diferencia entre revisiones de «Ingeniería de Software II»

De Cuba-Wiki
Sin resumen de edición
 
(No se muestran 41 ediciones intermedias de 20 usuarios)
Línea 1: Línea 1:
{{Completar guías}}
{{Plan 1993}}
 
'''Ingenería de Software II''' es una materia dedicada al estudio de la Ingeniería de Software. Según el [[Plan de la Carrera]], es una materia a ser cursada en [[Plan de la Carrera#Cuarto año|Cuarto año]]. Se necesita [[Ingeniería de Software I]], [[Paradigmas de Lenguajes de Programación]] y [[Sistemas Operativos]] para cursarla.
'''Ingenería de Software II''' es una materia dedicada al estudio de la Ingeniería de Software. Según el [[Plan de la Carrera]], es una materia a ser cursada en [[Plan de la Carrera#Cuarto año|Cuarto año]]. Se necesita [[Ingeniería de Software I]], [[Paradigmas de Lenguajes de Programación]] y [[Sistemas Operativos]] para cursarla.
== Objetivo ==
En esta materia se estudiarán algoritmos, estructuras de datos, técnicas y herramientas que apuntan a analizar software automáticamente. Prácticamente todos los análisis interesantes (que serían de utilidad para un ingeniero de software que desea garantías sobre el comportamiento de lo que está construyendo) son indecidibles o computacionalmente intratables. Por lo tanto lo que se estudiará en clase es el estado del arte en materia de análisis y verificación automática, un área que a pesar de estar dando pasos agigantados, aún tiene mas preguntas abiertas que respuestas.
== Programa ==
<big>Unidad 1: Análisis Estático de Programas</big>
* Análisis de dataflow.
* Grafo de flujo de control.
* Ecuaciones de flujo de datos.
* Análisis Intraprocedural vs. Interprocedural
* May versus Must Analysis
<big>Unidad 2: Testing Automatizado de Software</big>
* Criterios clásicos de calidad de un test suite.
* Análisis de mutación.
* Técnicas de generación de tests basadas en aleatoriedad.
* Generación utilizando Ejecución Simbólica Pura y Ejecución Simbólica Dinámica.
* Heurísticas de generación basadas en búsqueda.
* Algoritmos Genéticos y Algoritmos Evolutivos.
* Testing de Seguridad.
* Fuzzing de caja negra, caja gris y caja blanca.
* Fuzzing de Gramáticas.
<big>Unidad 3: Verificación de Software Concurrente</big>
*
* Modelos de Concurrencia
* Algebras de Proceso y Bisimulación
* Lógicas temporales. LTL
* Model Checking de LTL


== Apuntes ==
== Apuntes ==
== Parciales ==
 
* [[Medio:Ing2_apunte_2019.pdf| Apuntes para parciales 2019]]. <big style="color: red">Usar a discreción</big>. Esto fue un intento que hicimos con mi grupo de juntar y explicar los temas importantes de la materia para los primeros dos parciales. Puede contener errores y faltar cosas. [https://github.com/Gian150/resumenes-uba/tree/master/Ing2 Codigo fuente]
* [[Medio:IngSoft2_resumen.pdf| Apunte para final 2021]]
* Apunte/Resumen para el Final (2022) preparado por un alumno para rendir el final, y escrito en base a las clases teóricas del segundo cuatrimestre de 2022 (Ojo: los temas de la materia parecen cambiar frecuentemente). Separado en dos partes para que entre en el límite de tamaño para archivos:
** [[Medio:ISW2_Resumen_Final_2022_P1.pdf| Parte 1: Testing automatizado de software]]
** [[Medio:ISW2_Resumen_Final_2022_P2.pdf| Parte 2: Verificación de software concurrente]]
 
== Prácticas ==
* [https://brick-witness-6cf.notion.site/Guias-2C2023-cbc91388485849a3b2ee3c042e9ab758?pvs=4 Guías de ejercicios del 2do Cuatrimestre del 2023]
 
== Exámenes ==
=== Primer Parcial ===
=== Primer Parcial ===
* Parcial único 01/11/2018 [[Medio:Ing2_1parcial_01-11-18.pdf| (Enunciado)]] [[Medio:Ing2_1parcial_01-11-18_resuelto_parte1.pdf| (Resuelto)]] [[Medio:Ing2_1parcial_01-11-18_resuelto_parte2.pdf| (Resuelto)]]
* Primer Recuperatorio del 2do Cuatrimestre de 2024 [[Medio:IngSoft2_1recu_2c2024.pdf|(Resuelto)]]
* Simulacro del único parcial 2do cuatrimestre 2018 [[Medio:Ing2_simulacro_2018c2.pdf| (Enunciado)]]
* Primer Parcial del 1er Cuatrimestre de 2024 [[Medio:1erParcial-Inge2_1C2024.pdf|(Resuelto)]]
* Primer Parcial del 2do Cuatrimestre de 2023 [[Medio:Inge2 2do parcial 2do 2023.pdf|(Resuelto)]]
* Primer Parcial del 1er Cuatrimestre de 2023 [[Medio:Ing2_1parcial_08-05-2023.pdf|(Enunciado)]]
* Primer Recuperatorio del 2do Cuatrimestre de 2022 [[IngSoft2_1recu_28-11-22|(Resuelto)]]
* Primer Parcial del 2do Cuatrimestre de 2022 [[IngSoft2 primer parcial 06/10/2022|(Resuelto)]]
* Primer Parcial del 2do Cuatrimestre de 2019 [[Medio:Ing2 1parcial 19-09-19.pdf|(Resuelto)]]
* Parcial Único del 2do Cuatrimestre de 2018 [[Medio:Ing2_1parcial_01-11-18.pdf|(Enunciado)]] [[Medio:Ing2_1parcial_01-11-18_resuelto_parte1.pdf|(Resuelto)]] [[Medio:Ing2_1parcial_01-11-18_resuelto_parte2.pdf|(Resuelto)]]
* Simulacro del Parcial Único del 2do Cuatrimestre de 2018 [[Medio:Ing2_simulacro_2018c2.pdf|(Enunciado)]]


=== Segundo Parcial ===
=== Segundo Parcial ===
* Segundo Recuperatorio del 1er Cuatrimestre de 2024 [[Medio:Recu2inge2.pdf|(Resuelto)]]
* Segundo Parcial del 1er Cuatrimestre de 2024 [[Medio:2doP-Inge2-1C2024.pdf|(Resuelto)]]
* Segundo Recuperatorio del 2do Cuatrimestre de 2023 [[Medio:recu.pdf|(Enunciado)]]
* Segundo Parcial del 2do Cuatrimestre de 2023 [[Medio:inge2_seg_parcial_2do_2023.pdf|(Resuelto)]]
* Segundo Parcial del 1er Cuatrimestre de 2023 [[Medio:Ing2_2parcial_26-06-2023.pdf|(Enunciado)]]
* Segundo Recuperatorio del 2do Cuatrimestre de 2022 [[IngSoft2_2recu_05-12-22|(Enunciado)]]
* Segundo parcial 24/11/2022 [[Segundo parcial 24/11/2022 (IngSoft2)|(Resuelto)]]
* Segundo Parcial 21/10/2019 [[Medio:ing2_2do_parcial_21-10-19.pdf|(Resuelto)]]
=== Coloquio ===
* Coloquio 21/11/2019 [[Medio:Ing2-coloquio-21-11-19.pdf| (Enunciado)]]


== Finales ==
== Finales ==

Revisión actual - 05:58 3 dic 2024

Esta página es sobre la materia del plan de estudios 1993.

Ingenería de Software II es una materia dedicada al estudio de la Ingeniería de Software. Según el Plan de la Carrera, es una materia a ser cursada en Cuarto año. Se necesita Ingeniería de Software I, Paradigmas de Lenguajes de Programación y Sistemas Operativos para cursarla.

Objetivo

En esta materia se estudiarán algoritmos, estructuras de datos, técnicas y herramientas que apuntan a analizar software automáticamente. Prácticamente todos los análisis interesantes (que serían de utilidad para un ingeniero de software que desea garantías sobre el comportamiento de lo que está construyendo) son indecidibles o computacionalmente intratables. Por lo tanto lo que se estudiará en clase es el estado del arte en materia de análisis y verificación automática, un área que a pesar de estar dando pasos agigantados, aún tiene mas preguntas abiertas que respuestas.

Programa

Unidad 1: Análisis Estático de Programas

  • Análisis de dataflow.
  • Grafo de flujo de control.
  • Ecuaciones de flujo de datos.
  • Análisis Intraprocedural vs. Interprocedural
  • May versus Must Analysis

Unidad 2: Testing Automatizado de Software

  • Criterios clásicos de calidad de un test suite.
  • Análisis de mutación.
  • Técnicas de generación de tests basadas en aleatoriedad.
  • Generación utilizando Ejecución Simbólica Pura y Ejecución Simbólica Dinámica.
  • Heurísticas de generación basadas en búsqueda.
  • Algoritmos Genéticos y Algoritmos Evolutivos.
  • Testing de Seguridad.
  • Fuzzing de caja negra, caja gris y caja blanca.
  • Fuzzing de Gramáticas.

Unidad 3: Verificación de Software Concurrente

  • Modelos de Concurrencia
  • Algebras de Proceso y Bisimulación
  • Lógicas temporales. LTL
  • Model Checking de LTL

Apuntes

Prácticas

Exámenes

Primer Parcial

Segundo Parcial

  • Segundo Recuperatorio del 1er Cuatrimestre de 2024 (Resuelto)
  • Segundo Parcial del 1er Cuatrimestre de 2024 (Resuelto)
  • Segundo Recuperatorio del 2do Cuatrimestre de 2023 (Enunciado)
  • Segundo Parcial del 2do Cuatrimestre de 2023 (Resuelto)
  • Segundo Parcial del 1er Cuatrimestre de 2023 (Enunciado)
  • Segundo Recuperatorio del 2do Cuatrimestre de 2022 (Enunciado)
  • Segundo parcial 24/11/2022 (Resuelto)
  • Segundo Parcial 21/10/2019 (Resuelto)

Coloquio

Finales

Enlaces Externos