Un diseño de software provee una solución a un conjunto de requerimientos que guían a los desarrolladores de software en la construcción del producto. Un buen diseño de software debiera optimizar muchas variables incluyendo la confiabilidad, el rendimiento, el mantenimiento del mismo y su costo. El diseño debiera estar basado en componentes, utilizando una estrategia de re-utilización que disminuyera el costo de construcción. Existen numerosas metodologías para guiar a los arquitectos de software en el diseño de software, en esta asignatura se profundizará en el paradigma orientado a objetos tomando como base el Lenguaje de Modelado Unificado.

Se buscará establecer el proceso de diseño de software, enfatizando principalmente los conceptos fundamentales que cualquier diseño de software debiera tener, no importando la metodología utilizada. Como en muchas otras áreas de la Ingeniería, la ingeniería de software se aprende haciendo, por ello, se invertirá mucho tiempo en diversos ejercicios y descripción de ejemplos para obtener la destreza necesaria para utilizar las técnicas que se estudiarán.

Este curso provee las bases para la asignatura Arquitecturas de Software del quinto semestre de la Licenciatura en Ingeniería de Software, además de formar en los estudiantes la capacidad para aprender otras metodologías de diseño.