Diseño de software normalmente implica problema solucionando y planeando una solución de ￼￼software.￼￼ Esto incluye ambos un componente de nivel bajo y ￼￼diseño de algoritmo￼￼ y un alto-nivel, diseño de ￼￼arquitectura￼￼.