Información General de la Cursada

Programa de la Materia

0) Introducción a la materia
1) Qué es la ingeniería de software
    a) qué es software conceptualmente
    b) qué es el desarrollo de software
        i) Analogías existentes
        ii) Características esenciales
    c) Metodologías clásicas y ágiles
2) Diseño
    a) Paradigma de Objetos
    b) Heurísticas de diseño
    c) Cohesión y Acoplamiento
    d) Contratos
    e) Patrones de Diseño
    f) Mantenimiento de sistemas - Refactoring automatizados
3) Testing
    a) Para que testear, cuando testear
    b) Tipos de tests
    c) TDD
4) Arquitectura de Sistemas
    a) Arquitectura Logica y Fisica
    b) Tipos de arquitecturas
         i) Monolitica
         ii) Dos capas
         iii) Tres capas
         iv) N-Capas - Microservicios
    c) Ejemplos concretos:
        i) Arquitectura de VM
        ii) Arquitectura Web 1.0
        iii) Arquitectura Web 2.0
        iv) Arquitectura Mobile


Modalidad de Dictado

La modalidad incluye:

    • Clases: 
      • Teóricas (las menos posibles)
      • Prácticas en aula
      • Prácticas en labo 
      • Papers (muchos!)


    Lecturas

    Hay muchos papers para leer! No se dejen estar. Los papers serán conversados en clase y ENTRAN en los parciales.


    Evaluación
    • Nota Final = EjerPrac*0.4 + Parc1*0.3 + Parc2*0.3
    • EjerPrac = Promedio(Suma(Cada Ejercicio))
    • Cada ejerc: Aprobado = 10, Desaprobado = 0
    • Los papers entran en los parciales
    • Se promociona con 7 o más
    • Si un alumno no está conforme con la nota de promoción puede optar por aprobar los prácticos y luego presentarse a rendir el final. 

    Ejercicios Prácticos

    • En grupos de 2 (pares). 
      • Solo un grupo puede ser de 3
      • Los grupos son “inmutables” (a menos que haya que cambiarlos por hechos de fuerza mayor)
      • El objetivo es que trabajen de a pares
    • Ejercicios en máquina (propia o del labo)
    • Multiples lenguajes:
      • Java, C#, Python, Ruby, JavaScript, Smalltalk, PHP
      • Algunos ejercicios estan limitados en lenguajes
    • Repo: https://github.com/hernanwilkinson/UBA-FCEN-IngSoft1-2017-2c
    • Deben ser entregados antes del inicio de la siguiente clase
    • Cada grupo debe informar el Repo de github que usarán
    • El repo debe seguir la estructura del repo de la materia
    • Aprobado implica: Se entregó y corren los tests y cumple funcionalmente con lo pedido
    • El objetivo de estas entregas es que los alumnos tengan noción continua de su aprendizaje, sus dificultades y su avance durante la cursada.
      • Se aprueban (10) o desaprueban (0)
      • No tienen recuperatorio porque no son un examen parcial y porque no son eliminatorias.
    • ¿Por qué no es un examen parcial? 
      • porque no evalúa contenidos parciales impartidos en la materia, sino evalúa de manera continua la dedicación a la materia
    • ¿Por qué no es eliminatoria? 
      • porque la desaprobación no excluye a una persona de aprobar la materia. Sino que define su nota final en caso de promocionar y la promoción es optativa.