Wenn die Anforderungen eines Kunden bekannt (und wohlverstanden) sind, gibt es unterschiedliche Wege, diese in Softwarelösungen umzusetzen. Bevor die eigentliche Programmierung beginnt, muss beim Softwaredesign zunächst einmal gründlich überdacht werden, wie die Software generell aufgebaut sein soll, damit sie nicht nur die funktionalen Anforderungen, sondern auch sogenannte nichtfunktionale Anforderungen erfüllt. Auch die Frage, welche Hardware am besten geeignet ist, muss geklärt werden. Nichtfunktionalen Anforderungen können beispielsweise darin bestehen, dass die Lösungen bei künftigen Anforderungen leicht erweiterbar oder anpassbar sein muss. Häufig muss beim Entwurf einer Softwarelösung auch beachtet werden, dass der Kunde bereits Softwaresysteme besitzt, die weiterhin genutzt werden sollen.
Bei der Entwicklung neuer Software- oder Hardware können auch wieder viele Probleme auftreten - daher besteht eine wichtige Aufgabe darin, Vorgehensweisen und Entwurfsmethodiken zu erarbeiten, mit denen InformatikerInnen bei ihren Aufgaben unterstützt werden können.