Este documento presenta los fundamentos básicos para el diseño de software. Explica que el diseño de software consiste en crear una especificación de un artefacto de software para cumplir unos objetivos utilizando componentes primitivos y sujeto a restricciones. Luego describe los fundamentos como la abstracción, refinamiento, modularidad, arquitectura, jerarquía de control, estructura de datos, procedimientos y ocultamiento de información. Finalmente, cubre temas como el diseño orientado a objetos, garantías de calidad y técnicas de