Проектування - це етап життєвого циклу розроблення програмних систем, наступний після інженерії вимог. Завданням цього етапу є перетворення побажань замовників системи, які ми подали як моделі вимог, у проектні рішення, що забезпечать здійснення згаданих побажань у формі відповідної системи програмування. Таким чином, під час проектування виконується трансформація простору вимог у простір проектних рішень. При цьому можна виділити процеси, котрі можна вважати відносно незалежними одне від одного і виконувати як послідовно, так і паралельно, окремими командами виконавців. Це такі процеси:
- концептуальне проектуванняполягає в уточненні розуміння й узгодження деталей вимог;
- архітектурне проектуванняполягає у визначенні головних структурних особливостей системи, яку будують;
- технічне проектуванняполягає у відображенні вимог середовища функціонування і розроблення системи та у визначенні всіх конструкцій як композицій компонент;
- детальне проектуванняполягає у визначенні подробиць функціонування та зв’язків для всіх компонент системи.
В основі проектування будь-якого продукту лежить парадигма подолання складності загального завдання шляхом декомпозиції цільового продукту на окремі його складові або компоненти. Це твердження діє і для програмних систем як продуктів програмної інженерії. У попередніх главах було зазначено, що для сучасного стану розвитку програмної інженерії домінуючою є об’єктно-орієнтована парадигма, за якою будь-яка система розглядається як сукупність взаємодіючих об’єктів, тож усі наведені вище підпроцеси проектування ми будемо розглядати щодо тих об’єктів, які було визначено на попередньому етапі життєвого циклу розробки - етапі інженерії вимог.