Жизненный цикл разработки программного обеспечения представляет собой применение структурированного набора действий для создания программного обеспечения, обычно разделенного на шесть-восемь шагов. Планирование, требования, проектирование, реализация, документация, тестирование, развертывание и обслуживание. В зависимости от масштаба проекта, это основные компоненты, рекомендуемые для всех проектов разработки программного обеспечения.

Жизненный цикл разработки программного обеспечения (SDLC) — это способ измерения и улучшения процесса разработки, который позволяет проводить точный анализ каждого этапа процесса, выявляя неэффективность и рост затрат и устраняя их для бесперебойной работы.

Фазы SDLC:

Планирование

Менеджеры проекта оценивают сроки проекта. Это включает в себя расчет трудовых и материальных затрат, создание графика с целями проекта, а также создание проектных команд и структуры руководства.

Планирование также может включать обратную связь от заинтересованных сторон.

Этот шаг должен четко определить объем и цель приложения, спроектировать путь и предоставить его команде разработчиков; он также устанавливает ограничения, чтобы предотвратить расширение проекта или отклонение от его первоначальной цели.

Требования

Определение требований — это когда проект решает конкретную проблему, анализирует и представляет возможные решения, чтобы определить, какое из них лучше всего соответствует конечным целям проекта.

Требования также включают определение ресурсов, необходимых для создания проекта. Например, команда может разработать программное обеспечение для управления нестандартной производственной машиной. «Машина» является обязательным требованием в процессе. Здесь также проводится системный анализ или анализируются потребности конечных пользователей, чтобы убедиться, что новая система соответствует их ожиданиям. Системный анализ жизненно важен для определения потребностей компании, а также того, как они будут удовлетворены, кто будет отвечать за отдельные части проекта и какой график ожидается.

Дизайн

Некоторые аспекты дизайна включают в себя:

Архитектура определяет язык программирования, отраслевые практики, общий дизайн и инфраструктуру.

Пользовательский опыт определяет, как клиенты взаимодействуют с программным обеспечением и как программное обеспечение реагирует на вводимые данные.

Платформы: указывает платформы, на которых будет работать программное обеспечение, например iOS, Android, Windows, Linux или даже игровые приставки.

Программирование: это не просто язык программирования, он включает в себя способы решения проблем и выполнения задач в приложении.

Подключения: определите, как приложение может взаимодействовать с другими активами, такими как центральный сервер, облако или другие приложения.

Безопасность: определяет меры, предпринятые для защиты приложения, и может включать шифрование трафика (SSL), защиту паролем и безопасное хранение учетных данных пользователя.

Прототипирование может быть частью этапа проектирования, где прототип подобен одной из ранних версий программного обеспечения в модели итеративной разработки программного обеспечения. Прототип дает общее представление о том, как приложение будет выглядеть и работать. Эту конструкцию можно продемонстрировать в действии заинтересованным сторонам, чтобы использовать их отзывы для улучшения приложения. Изменения на этапе прототипа обходятся дешевле, чем переписывание кода на более позднем этапе.

Выполнение

Это фактическое написание программы. Небольшой проект может быть написан разработчиком, а над большим проектом может работать несколько команд. На этом этапе используется приложение «Контроль доступа» или «Управление исходным кодом». Это помогает системным разработчикам отслеживать изменения в коде и обеспечивать совместимость между различными командными проектами.

Процесс написания кода включает в себя и другие задачи, и многим разработчикам необходимо оттачивать свои навыки или работать в команде. Устранение ошибок и сбоев имеет решающее значение. Задачи часто мешают процессу разработки, например, ожидание результатов тестирования или компиляция кода, чтобы этот код мог выполняться в приложении. Жизненный цикл разработки программного обеспечения может предвидеть эти задержки, чтобы разработчикам можно было поручить другие задачи.

Разработчики программного обеспечения ценят четкие инструкции и пояснения. Процесс документирования может быть формальным, включая передачу руководства пользователя для приложения. Это также может быть неформальным, например комментарии в исходном коде, которые объясняют, почему разработчик использует определенную процедуру или функцию.

Тестирование

Важно протестировать приложение, прежде чем оно станет доступным для пользователей. Многие тесты, например нагрузочное тестирование, можно автоматизировать, а другие тесты можно запускать только в определенной среде.

Тестирование должно гарантировать, что каждая функция работает правильно. Различные части приложения также должны быть проверены на бесперебойную совместную работу, чтобы сократить время простоя или задержки в обработке. Фаза тестирования помогает уменьшить количество ошибок и сбоев, с которыми сталкиваются пользователи, что повышает удовлетворенность пользователей.

Развертывание

На этапе развертывания приложение предоставляется пользователям. Многие компании предпочитают автоматизировать этап развертывания. Это может быть как простая ссылка для скачивания на веб-сайте компании, так и сложная, например обновление общекорпоративной базы данных до недавно разработанного приложения.

Поскольку многие другие системы используют эту базу данных, интеграция обновления может занять больше времени и усилий.

Обслуживание

На этом этапе цикл разработки подходит к концу. Приложение было настроено и используется в области, однако этап эксплуатации и обслуживания по-прежнему важен. На этом этапе пользователи обнаруживают ошибки, которые не были обнаружены при тестировании. Эти ошибки должны быть устранены, что может привести к новым циклам разработки. Помимо исправления ошибок, такие модели, как Итеративный план разработки, имеют дополнительные функции в будущих выпусках, так как для каждого нового выпуска может запускаться новый цикл разработки.