Close

Разработка программного обеспечения

Изучите основы разработки программного обеспечения


Программное обеспечение поглотило мир. Это произошло вскоре после знаменитого заявления Марка Андреессена в 2011 году о том, что «софт пожирает мир». В современной цифровой экономике каждая компания крепко связана с программным обеспечением. Хотя Amazon считается крупнейшим мировым ритейлером, на самом деле это разработчик программного обеспечения, как провозгласил бывший генеральный директор Amazon Джефф Безос. «Суть нашего бизнеса не в содержимом картонных коробок, — сказал он, — а в программном обеспечении, которое направляет картонные коробки к месту назначения».

Бесконечный цикл DevOps

Что такое разработка программного обеспечения?

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

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


Этапы жизненного цикла разработки ПО


Лампочка с орбитами

Концепция

Разрабатывается концепция проекта, выполняется проектирование и расстановка приоритетов. Управление рабочим процессом ведется по методология типа agile. Разработка и эксплуатация руководится практиками типа DevOps. На этом этапе можно использовать Confluence — отличный инструмент для обмена проектными файлами и разработки документации по исследованию продукта.

Простой рабочий процесс

План + дорожная карта

Определяются заинтересованные стороны, выделяется бюджет, запрашивается необходимая инфраструктура. Проектная документация с этапа разработки концепции разбивается на выполнимые задания. Для управления списками заданий, их отслеживания и упорядочения используются Jira Software и Trello.

Сохранение кода

Написание кода, проверка и тестирование

Команды разработчиков занимаются созданием пригодного к эксплуатации ПО с учетом требований и обратной связи. Эффективность процесса разработки обеспечивается благодаря конвейерам CI/CD. Bitbucket предлагает инструменты для совместной проверки кода и конвейеры CI/CD, которые встраиваются в процесс проверки.

Релиз кода

Развертывание, релиз и размещение

После подтверждения и слияния кода выполняется его поставка. Развертывание можно выполнить одним нажатием благодаря конвейерам CI/CD в Bitbucket. Код, готовый к запуску в рабочей среде, потребуется где-то разместить. Рассмотрите варианты облачного хостинга на платформе Amazon AWS, Google Cloud или Microsoft Azure.

Шестеренки

Поддержка, эксплуатация и обслуживание

Активным проектам разработки ПО требуется поддержка и техническое обслуживание. В Jira Service Management имеются мощные инструменты для регистрации, приоритизации и решения запросов, поступающих в службу поддержки клиентов.

error

Управление инцидентами

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

Практики на протяжении жизненного цикла разработки ПО

CI/CD

Непрерывная обратная связь

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

Безопасность

Безопасность

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

Ключевые особенности эффективной разработки программного обеспечения


Гибкая методология Agile

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

DevOps

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

Непрерывная интеграция и поставка (CI/CD)

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

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

Микросервисы

Микросервисная архитектура (или просто «микросервисы») — это подход к созданию приложения в виде набора независимо развертываемых сервисов, которые децентрализованы и разрабатываются отдельно друг от друга. Эти сервисы слабо связаны, независимо развертываются и легко обслуживаются.

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

Гибкая методология Agile

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

DevOps

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

Непрерывная интеграция и поставка (CI/CD)

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

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

Микросервисы

Микросервисная архитектура (или просто «микросервисы») — это подход к созданию приложения в виде набора независимо развертываемых сервисов, которые децентрализованы и разрабатываются отдельно друг от друга. Эти сервисы слабо связаны, независимо развертываются и легко обслуживаются.

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

Инструменты разработки ПО


Инструменты разработки ПО полезны на каждом этапе жизненного цикла разработки, включая управление практиками agile и DevOps, управление кодом, автоматизацию через CI/CD, реакцию на инциденты, тестирование и многое другое.

Логотип Jira Software

Jira Software

Jira — лучший инструмент разработки для команд, следующих принципам agile. Решение Jira Software предназначено для управления проектами и помогает командам, следующим принципам agile, уверенно планировать, отслеживать и поставлять программное обеспечение мирового класса.

Логотип Bitbucket

Bitbucket

Bitbucket — это не только инструмент управления кодом в Git. Bitbucket предоставляет командам единый центр для планирования проектов, совместной работы над кодом, тестирования и развертывания.

Логотип Компаса

Компас

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

Atlassian Open DevOps

В Open DevOps команды сразу получают все необходимое для разработки и эксплуатации программного обеспечения. Изначально Open DevOps поддерживает Jira Software, Confluence, Bitbucket и Opsgenie. Команды могут легко добавить нужные инструменты, например GitHub или GitLab, одним щелчком мыши.

Atlassian Open DevOps

В Open DevOps команды сразу получают все необходимое для разработки и эксплуатации программного обеспечения. Изначально Open DevOps поддерживает Jira Software, Confluence, Bitbucket и Opsgenie. Команды могут легко добавить нужные инструменты, например GitHub или GitLab, одним щелчком мыши.