Главная / О компании / Новости / Будущее разработки программного обеспечения

Будущее разработки программного обеспечения

« Назад

Будущее разработки программного обеспечения  08.04.2021 18:25

Будущее разработки программного обеспечения обсуждается многими.

Существует бесчисленное множество статей о тенденциях разработки программного обеспечения 2021 года, большинство из которых повторяют одни и те же тенденции: ИИ, работа с big data, разработка low code, IOT, CI/CD, кросс-платформенная разработка, смешанная реальность (MR) и, конечно же, облачные вычисления.

Не будем обсуждать все эти тенденции… (кроме облачных вычислений) - обсудим то, что связано с Agile.

Agile больше не является трендом! Это стандарт

Agile - это прошлое, настоящее и будущее разработки программного обеспечения. В 90-е годы произошел кризис разработки, когда время между появлением потребности и запуском ПО в производство составляло 3 года. Встреча Snowbird 2001 года в Юте, знаменитая встреча сообщества Agile, положила начало многим вопросам быстрого запуска, хотя Agile еще не упоминался.

В 2021 году Agile больше не является трендом, это реальность. Будущее разработки программного обеспечения связано с Agile. Однако для предприятий это был медленный процесс. Слова руководителей корпоративных разработчиков показывают, что нет ни одного предприятия, которое еще не внедрило или не внедряет методы Agile.

Дело в том, что тенденции обычно начинают свой путь в стартапах, и как только они достаточно созрели и доказали свою ценность, они постепенно принимаются предприятиями. И хотя 95% стартапов сегодня сообщают (State of agile report) об использовании Agile, внедрение их предприятиями идет медленно, но стабильно. Если задуматься, это имеет смысл, потому что чтобы добиться гибкости, хорошо зарекомендовавшие себя крупные компании-разработчики программного обеспечения должны пройти через процесс, который для них в десять раз сложнее, чем для стартапов.

agile-is-not-a-trend

CI/CD - это часть Agile. По словам технического директора Incredibuild, среди  ведущих корпоративных клиентов, обращавшихся к нему за консультацией, нет ни одной компании, в которой непрерывная интеграция и continuous delivery не являются основной частью их стратегии R&D. Во многих статьях о трендах CI/CD упоминается как тренд 2021 года. Однако CI/CD уже является трендом некоторое время, и, конечно же, в 2020 году непрерывной интеграции/непрерывной поставке уделялось много внимания …

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

Сейчас наступила эпоха "догони или умри". И, очевидно, все предпочли бы наверстать упущенное, чем умереть.

Из 12 принципов Agile-разработки программного обеспечения первые 3 принципа заключаются в следующем:

  1. Сделать клиента счастливым помогает continuous delivery – это реальное конкурентное преимущество, а это означает, что если вы не будете практиковать continuous delivery, то ваш конкурент будет…
  2. Постройте свои циклы разработки таким образом, чтобы они были достаточно гибкими для поддержки поздних изменений в требованиях к разработке.
  3. Частый выпуск продуктов - залог конкурентоспособности и постоянного совершенствования. Только подумайте, функция, которая не попала в релиз, считай, это функция, которая не была разработана вовсе.

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

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

Необходимые условия Agile:

  • CI / CD автоматизация
  • Автоматизированное тестовое покрытие
  • Быстрые циклы разработки
  • Частые итерации

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

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

Преимущества Agile для предприятий:

  • Более высокая скорость выхода на рынок
  • Более быстрый выпуск обновлений (улучшенное качество)
  • Более частые итерации
  • Лучшее сотрудничество на уровне всей компании

Можно сказать, что несколько лет назад начались два мегатренда -  «Shift left» и облачная трансформация.

Подход Shift-left заключается в том, чтобы запустить ваши процессы разработки (например, обеспечения безопасности ПО) как можно раньше. Сюда также входит отказ от компромиссов в отношении качества разработки.

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

Облачная трансформация

Облачная трансформация - это процесс переноса вашей работы в облако. COVID-19, по сути, оказывает положительное влияние на внедрение облака, трансформация еще не достигла своего пика, но совершенно точно является трендом.

Теперь облачная трансформация является основной тенденцией на 2021 год (Gartner прогнозирует, что доход от облачных вычислений вырастет до 308,5 млрд долларов в 2021 году). Возможно, он начал проявляться несколько лет назад (отсюда «десятилетие облачных вычислений»), но в этом году он наконец достиг своего пика. И облачные провайдеры (AWS, Microsoft и Google) достигнут пика с ним (предлагая бесплатное бюджетирование компаниям для тестирования своего облака). Организации (в том числе правительственные учреждения) не только будут говорить об облаке, они также будут действовать в соответствии с этим и понимать, что влечет за собой облачная трансформация. Сделка министерства обороны США с Microsoft Azure на 10 млрд долларов является хорошим примером этого предложения. Достаточно скоро, когда они позвонят нам, чтобы спросить об Incredibuild Cloud, у большинства из них будет четкая облачная стратегия и понимание пути перехода в облако, особенно для автоматизации релиза и задач по работе из дома.

Прогнозируемые тенденции

Есть четыре важных прогноза по поводу будущих тенденций, которые должны быть на радаре корпоративных подразделений разработки при планировании будущего.

Они связаны с тремя проблемами, которые становятся препятствием на пути к agile-трансформации. Вы не сможете по-настоящему продвинуться по пути Agile, не решая их вместе:

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

1. Проблема: инфляция кода приводит к техническому долгу в тестировании

Инфляция кода в последние годы была вызвана как широким внедрением проектов с открытым исходным кодом (еще одна тенденция), так и коммерческими библиотеками и большим объемом пользовательского кода.

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

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

Тенденция №1. Создание тестов на основе ИИ сделает тестирование быстрее и лучше

Чтобы восполнить этот пробел, компании начали использовать всевозможные решения по автоматизации тестирования.

Искусственный интеллект - еще один тренд 2021 года. Не будем говорить о простом ИИ, хотя это интересная тенденция, требующая больших денег (см. прогноз Gartner относительно инвестиций в ИИ на 2021 год). Обсудим вместо этого тестирование на основе ИИ.

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

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

Интересная компания, на которую стоит обратить внимание, - Diffblue, пионер в предоставлении инфраструктуры искусственного интеллекта, которая автономно пишет тест-кейсы в массовом порядке. Появляется еще несколько компаний и решений (дополнительные игроки - Testim.io, InteliTest и PoniCode), и похоже, что их станет еще больше, поскольку потребность очень высока.

Из-за природы языка C++ интерпретация его кода (в отличие от среднеуровневого C#) весьма сложна, и потребуется больше времени на появление зрелых технологий для C++.

2. Проблема - выполнение полного теста может занять несколько часов

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

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

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

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

Следующие две тенденции нацелены именно на эту проблему и нацелены на то, чтобы позволить ускорить эти трудоемкие процессы с минимальными компромиссами.

Тенденция №2. Технология избегания тестов нанесет удар по ненужному тестированию

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

  • Модульные тесты
  • API
  • Интеграционные тесты
  • Регрессионные тесты
  • Сквозные тесты
  • Санити-тестирование
  • Фаззинг-тестирование

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

Вернуться к большому количеству тестов?

Это замкнутый круг.

Одно из решений - избежать этого.

Разработчики все время спрашивают себя, нужно ли проводить тест при каждом изменении.

Ответ - нет, если они знают, какие тесты проводить ...

Избежать выполнения - это отказ от выполнения ненужных задач. Не запускайте ВСЕ тесты; запускайте только те, которые вам действительно нужны. Хотя я говорю о тестировании, избегание компиляции также является частью этой тенденции. К такому подходу нужно привыкать.

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

Цифры впечатляют. Вот диаграмма истории успеха от ведущего производителя автомобилей, показывающая, что выполнение правильных 20% тестов с помощью Launchable приводит к тому же уровню достоверности, что и выполнение случайно выбранных 75% тестов. Удивительно, не правда ли?

A-leading-car-manufacturer_2

Это привело к несомненной рентабельности инвестиций и более быстрому выходу на рынок:

A-leading-car-manufacturer_3

Крупным компаниям нужна скорость, позволяющая запускать ряд тестов без ущерба для скорости, качества и частоты выполнения – здесь можно помочь Incredibuild, значительно сократив время тестирования.

3. Проблема – низкая скорость сборки и нечастые выполнения

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

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

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

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

Тенденция №3. Высокопроизводительные вычисления

Новые процессоры AMD Threadripper подорвали рынок доступными многоядерными компьютерами (просто подумайте о 64-ядерном процессоре для настольных ПК, который обеспечивает невероятную производительность для многих ресурсоемких задач), а распределенные вычисления позволяют компаниям легко использовать сотни и тысячи ядер для компиляции, тестов и других вычислительных процессов.

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

Возьмем, к примеру, Minitab: у них большое тестовое покрытие, как и ожидается от производителя качественного ПО.  Но за это качество приходится платить 11-часовым циклом тестирования. Обновление их серверов сборки с 32-ядерных до 64-ядерных радикально ситуацию не поменяет. С помощью распределенных вычислений Minitab может масштабировать свой сервер сборки, используя сотни и тысячи ядер именно тогда, когда они им нужны для распределения своих тестов. Это могут быть простаивающие ядра хостов в их локальной сети или облачные ресурсы по запросу, даже дешевые спотовые инстансы, которые автоматически масштабируются в соответствии с вашими динамическими потребностями.

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

Хотя тестирование находится в центре внимания, это не единственный тип процесса в корпоративном CI/CD, который приводит к тому, что сборки становятся очень длинными. Существуют и другие процессы, связанные с вычислительной мощностью, такие как компиляция, анализ кода, создание ассетов, подписание кода, упаковка и многое другое.

Еще одна, заключительная и достаточно зрелая тенденция, которая должна быть упомянута, - облачные решения CI/CD.

Тенденция №4. Управляемый CI/CD в облаке автоматизирует конвейеры выпуска

Итак, облачная трансформация - это тренд, а CI/CD - уже реализовавшаяся тенденция, так почему бы не объединить усилия и не запустить CI/CD в облаке? В конце концов, в этом много преимуществ.

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

Теперь давайте остановимся и обсудим инструменты, необходимые для достижения полного CI/CD.

Основные поставщики облачных продуктов, такие как Amazon AWS, Microsoft Azure и Google Cloud Platform, а также другие поставщики, такие как Jfrog, CircleCI и другие, борются за доминирование, предлагая комплексное управляемое облачное решение для CI/CD и построения конвейеров.

Эти инструменты были отточены и доработаны для экосистемы стартапов. Управляемый CI/CD был впервые принят стартапами, в основном в тех областях, где частые выпуски являются обязательными, таких как веб-приложения, облачные сервисы и мобильные приложения.

В настоящее время, когда облачные сервисы достаточно созрели, мы видим, что все больше крупных предприятий в разных странах мира хоть медленно, но начинают их использовать. Некоторые из крупнейших корпоративных клиентов Incredibuild уже переводят свои локальные CI/CD в полностью управляемое облачное решение. Хотя по-прежнему существуют некоторые опасения по поводу размещения исходного кода организации в общедоступном облаке за пределами сети организации, всего несколько лет назад компании неохотно переносили свои бизнес-данные и сведения о клиентах в облако и делились своим исходным кодом со сторонними поставщиками, но сегодня большинство корпоративных компаний используют такие сервисы, как Salesforce и SAP, которые хранят все свои бизнес-данные в облаке.

Кроме того, в облаках развиваются не только сервисы CI/CD, но и вся экосистема разработки: репозитории в облаке, удаленные сборки для разработчиков, виртуальные рабочие столы и решения SaaS для тестирования - это лишь верхушка айсберга, они намечают путь, по которому идет индустрия программного обеспечения.

Дополнительные решения для облачной трансформации:

  • Облачные репозитории (GitHub, GitLab, Perforce cloud)
  • Облачные сборки для разработчиков (GitHub codespaces)
  • Облачные виртуальные рабочие столы
  • SaaS тестирования (Applitols)
  • Дистанционная оптимизация пропускной способности (Teradici)
  • И другие…

Прежде чем вы превысите ограничение скорости на своем предприятии…

Оцените свои ресурсы и приоритеты

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

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

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

Источник ►