Выясняем у клиента, какой софт нужно создать, и оформляем это в чёткие технические требования, с которыми может работать разработчик.
Разрабатываем дизайн и пишем код: создаём функциональный продукт, который отвечает сформулированным требованиям
Проверяем, работает ли продукт как надо, и тестим его на уязвимости. Часто это работа делается параллельно с предыдущим шагом
Публикуем софт, то есть делаем его доступным для конечных пользователей. С этого момента он начинает приносить деньги.
Следим, что софт работает как должен. Если находим ошибки, исправляем их. Улучшаем софт по ходу его работы