¡Bienvenides!
Ésta página corresponde a la primera clase, y habrá una por cada encuentro. Acá encontrarás apuntes y ejercicios que desarrollamos en clase, además de contenido recomendado para que profundices (o amplíes) lo visto después.
Si bien está pensado para que puedas seguir lo visto estés donde estés, es importante aclarar que éstos contenidos no reemplazan a la cursada, aunque son una buena guía, en especial en el caso de las clases dadas en modalidad virtual.
¡Buen comienzo! 😃
Quiénes Somos
- Franco Bulgarelli (Viernes noche - K3053)
- Gastón Prieto (Viernes noche - K3153)
- Sofía Cortés
- Rodolfo Caputo
- Germán Gallici
- Fernando Petryszyn
Resumen
- Presentamos la materia: vamos a enfocarnos en aprender a diseñar un sistema, haciendo hincapié en el software pero sin olvidar el contexto no automatizado. Estudiaremos y debatiremos diferentes problemas y soluciones comunes a ellos y nos adentraremos en el manejo de diferentes tecnologías fundamentales para la construcción de aplicaciones en la industria de hoy. Finalmente haremos una breve incursión en nociones arquitecturales de software y sus aplicaciones.
- Introducimos la noción de diseño: Diseñar es tomar decisiones entre distintas alternativas de solución, ponderando sus cualidades. Se trata de identificar componentes, sus responsabilidades y relaciones.
- Hablamos de la centralidad y omnipresencia del software al diseñar sistemas informáticos, sin dejar de lado que siempre habrá aspectos no automatizables.
- Introdujimos la noción de arquitectura como el diseño de alto nivel y de los aspectos que son difíciles de modificar de un sistema. Presentamos dos visiones de la misma:
- Arquitectura lógica: el conjunto de componentes lógicos de alto nivel de un sistema, como ser paquetes, módulos, y capas.
- Arquitectura física: el conjunto de los los componentes físicos de un sistema, como ser redes, actores y nodos (agentes de cómputo a través de los cuales se distribuyen los componentes lógicos).
- Mencionamos la existencia de diagramas UML, como ser los de clases y diagramas de despliegue, que utilizaremos a lo largo de la materia.
- Mencionamos que en la materia utilizaremos las siguientes tecnologías.
- Java (versión 17). Podés ir leyendo el apunte de Java y la guía de colecciones de Java
- Maven
- Git
- IntelliJ (aunque también podés utilizar otros IDEs, como por ejemplo Eclipse)
Material
- Presentación
- Introducción a Diseño de Sistemas
- Introducción al Desarrollo de Software
- Introducción a Arquitectura
Tarea
- Obligatorio: Hacer el ejercicio Macowins
- Si lo necesitás, ¡repasá Objetos!. En partircular, repasá los mensajes de colecciones de Wollok
- Como material de lectura complementario, sugerimos el libro Object Design: Roles, Responsibilities and Collaborations, de Rebecca Wirfs-Brock and Alan McKean.
- Leé el apunte que explica como Comunicar un diseño
- Leé el apunte que explica las Cualidades de diseño