Este documento describe diferentes herramientas y estrategias para el diseño de sistemas de programación, incluyendo el diseño estructurado, el cual se basa en dividir el sistema en módulos pequeños con características de caja negra y aislar los detalles, y la modelización conceptual. También discute los atributos de cohesión y acoplamiento de los módulos y las estrategias de diseño estructurado de Warnier, Jackson y otros para obtener una estructura modular del sistema.