Это, конечно, всё хорошо, но как именно мы можем снизить риски? Действительно ли мы не можем использовать некоторый наработанный до этого опыт для того, чтобы сделать успешность наших проектов выше?
Чаще всего по завершению проекта или наступлению какого-то неприятного события в разработке ПО, оказывается, что об этом можно было подумать заранее, но просто-напросто никто не догадался пойти и спросить или догадаться.
Базовые жизненные циклы разработки программного обеспечения связаны с несколькими этапами, связанными с тем, в каких контекстах или средах это программное обеспечение разрабатывается.
- Вначале существует так называемая среда разработки. То есть разработчики сами создают определенный код, его тестируют и работают с той программой, которая у них получилась, чтобы попытаться понять, а действительно ли это то, что нужно заказчику.
- Следующий кусочек — это когда мы начинаем осуществлять внедрение этого программного обеспечения для бизнеса и, соответственно, кто-то называет это implementation, кто-то называет его еще как-то, слава Богу, что на русском языке есть замечательное слово — внедрение.
- К примеру, в гибких методологиях часто используется понятие Agile scrum цикла для того, чтобы осуществлять разработку, а для того, чтобы осуществлять последний шаг и обеспечивать доступность этого решения для бизнеса, внедрение называют DevOps, или работа, необходимая для того, чтобы приложение начало работать.
Соответственно, мы можем не задумываться о том, какие шаги потребуются для того, чтобы потом было удобно осуществить передачу решений или чтобы бизнес смог использовать решение, то есть какие данные нужно импортировать, что нужно заполнить, что нужно будет нужно.
Очень простая техника, которая подразумевает развитие жизненного цикла изделия на этапы, и анализ того, кто и как будет взаимодействовать с нашей системой на соответствующем этапе, и помогает нам проанализировать заранее что будет сделано. Естественно, следующий этап жизненного цикла после того, как мы внедрим наше программное обеспечение — его нужно будет обновлять, то есть в ситуации с гибким жизненным циклом, по сути дела, это обозначает, что мы двигаемся между двумя циклами —разработкой и внедрением.
Однако, если система большая и сложная, избежать этапа осмысленного перехода от внедрения, когда меняются бизнес-процессы, когда меняется бизнес-система, к этапу обновления, который действительно можно делать в рамках гибкого процесса, не удается.
Ну, и последний этап, естественно, как все, наверное, догадываются, очень неплохо было бы подумать про любое изделие и, соответственно, программное обеспечение, о том, чтобы будем делать, если вдруг нам нужно будет его заменить полностью, то есть есть ли у нас возможность отказаться от использования того или иного программного обеспечения. Соответственно, реализация знаний о том, как будет развиваться дальше жизненный цикл информационной системы, и превратилась в создание такой дисциплины, как работа с жизненными циклами изделия.