El proceso de diseño es una secuencia de pasos que habilita al diseñador para describir todos los aspectos del software a construir.
El conjunto de conceptos fundamentales del diseño ha evolucionado.
Son los siguientes: En su modelo de objeto, Grady Booch menciona abstracción, encapsulación, modularización y jerarquía como principios fundamentales del diseño de software.
[4] El acrónimo PHAME (del inglés: Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) se utiliza a veces para referirse a estos cuatro principios fundamentales.
Un lenguaje de modelado puede ser gráfico o textual.
[8] La dificultad de utilizar el término "diseño" en la relación a software es que en algunos sentidos, el código fuente de un programa es el diseño para el programa que produce.
La redefinición puede ocurrir después de revisar una simulación programada o prototipo.
Un diseño por separado con anterioridad a programar permite a los diseñadores multidisciplinares y expertos colaborar con programadores altamente especializados en software útil y técnicamente seguro.