Chat with us, powered by LiveChat

Как выбрать технологию для проекта

Фреймворки, CMS и популярные языки программирования - разбираемся в технологиях

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

Часто к нам приходят клиенты, которые убеждены: их ПО должно быть написано именно на PHP или Python. Просто потому что.

И ладно, если бы это были наши коллеги-разработчики. Они бы сформировали задачу, учитывая совместимость требований с имеющимся набором «железа» и перспективами развития проекта…Но нет, в 90% случаев решение принимается на основе прочитанного, увиденного или услышанного от друзей.

В чем проблема?
Чтобы принять решение, надо понять, какие технологии работают для конкретных задач и сформировать объективные критерии.

Взаимосвязь размера проекта и технологий

Простые задачи:

Для простого проекта, например, корпоративного сайта с возможностью редактирования контента хватит готовой платформы или конструктора сайтов, как 1С-Битрикс, UMI CMS или WordPress.

Функции проще, но и инвестиции минимальные.

конструкторы сайтов

Сложные проекты среднего размера:

Оптимальное решение — кастомизируемый SaaS или разработка ПО под ваши нужны с использованием фреймворков. Ниже подробнее расшифруем.

А пока поясним на примерах. Знакомы с 1С? Это классический SaaS. Программу можно купить, оплатив лицензию. Установили и сразу начали работать.

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

Небольшие доработки — и все готово.

Но: если доработка влияет на ядро программы, придется постоянно пользоваться поддержкой команды программистов. Все сделанные изменения будут «утекать» с очередным обновлением программы. А происходят они регулярно.

Дилемма: выбрать готовое решение или сделанное специально под вас?

  • Уникальная программа с использованием готовых программных блоков — более экономически выгодна. Но будьте готовы: такое ПО во многом зависит от компании-собственника. Вдруг завтра она решит отказаться от поддержки вашей модели планшета или сократит колл-центр, переведя поддержку на роботов?
  • При индивидуальной разработке вы — собственник программы. Компания-разработчик обеспечивает индивидуальный подход и окружает вас заботой. Техподдержка — по индивидуальному плану и в согласованном объеме.

Сложные программные продукты и масштабируемые проекты

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

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

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

Немного теории: на чем строятся программные продукты

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

  • Языки программирования

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

Примеры языков программирования: Java, PHP, C++, JS, Go.

популярные языки программирования
  • Фреймворки

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

  • СMS (системы управления контентом)

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

CMS как системы с открытым кодом постоянно развиваются. Однако они не защищены от уязвимостей. Гарантировать надежность системы, в которую ежедневно вносятся изменения всеми желающими, нереально.  

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

популярные цмс

Популярные языки программирования

Первым языком программирования является Ассемблер ( ~ 1940-е). Работа на нем состояла в написании команд в виде машинного кода.

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

Все языки, которые переводят (компилируют) некоторый предписанный стандартами синтаксис в машинный код, называют компилируемыми. Это высокоуровневые языки программирования.

популярные зыки программирования

Ниже подборка из популярных языков.

  • JS —  простой язык для разработки динамических страниц сайтов. Программистов на JS много. Разработка стоит дешево.
  • PHP — для небольших и средних проектов. Разработчики относительно недорогие. С выходом новой версии наверстывает упущенную в последние годы популярность.
  • Python — молодой язык, позволяет эффективно решать сложные задачи. Программисты дорогие, и их мало.
  • Ruby  — молодой и простой в освоении язык, быстрая разработка. Отлично подходит для простых и небольших проектов. Программистов немного. Средний ценовой сегмент.
  • C#  — многоцелевой язык для решения нестандартных задач и больших проектов. Высокооплачиваемые программисты.
  • C++ — один из самых продвинутых, быстроразвивающихся языков, популярен во всем мире. Программисты — одни из самых высокооплачиваемых.
  • Kotlin — молодой язык для кросс-платформенной разработки. Активно поддерживается Гуглом для внедрения проектов на Андроид. Опытных программистов мало, они востребованы и высоко ценятся.

С появлением нового языка программирования IT-компании сразу анализируют его возможности для решения своих задач. IT aгентству это необходимо, чтобы быть на гребне новых технологий. Но, прежде чем заказывать продукт, лучше подождать, пока основные проблемы молодого языка будут решены. Для стабильности язык должен пройти несколько этапов взросления.

Основываясь на своем опыте мобильной разработки, из всех молодых языков программирования мы готовы рекомендовать Swift. Его возможности в разработке нативных для iOS и кросс-платформенных приложений достойны внимания.
По статистике, Swift сегодня — самый перспективный язык для разработки под “яблочные” гаджеты.

swift ios

Фреймворки и CMS

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

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

cms types

Важное отступление: Некоторые фреймворки позволяют управлять контентом (аналоги CMS). Это более защищенный вариант в сравнении с WordPress, самой популярной СМS. На ней регулярно находят уязвимости. Часто происходят утечки информации, либо сайт становится источником для распространения вредоносного ПО.   

Популярные фреймворки:

  • PHP: Symfony, Yii, Laravel
  • Python: Django
  • Ruby: Ruby On Rails
  • C #: .NET
  • C++: Qt
  • JS: AngularJS, ReactJS, Vue.js

CMS and CMF

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

CMF (Content Management Framework). Вид фреймворка для управления контентом. Но для применения он должен быть интегрирован в какую-то, пусть даже очень простую оболочку (кастомное ПО).

Популярные CMS и CMF:

вордпресс

WordPress изначально была спроектирована для ведения блогов. Бесплатна, но есть коммерческие версии оформления (темы) и плагинов (дополнительные встраиваемые блоки). Можно добавить ссылки на страницы сайта, как у Википедии, построить карту сайта или воспользоваться SEO-подсказками.

Другие менее популярные бесплатные CMS — это Joomla!,  Drupal, ModeХ. Сравнение можно посмотреть здесь: https://habr.com/en/post/151879/

Мобильные приложения

Есть 2 подхода к разработке приложений для мобильных устройств: нативный, под конкретную платформу, и кросс-платформенный. Такие приложения не требуют установки и запускаются в браузере.

Нативная разработка

Для “яблочных устройств” используют Swift и Objective-C. Для Android применяют Java и Kotlin.

Сложные приложения делают под конкретную платформу. При этом используются все возможности операционки, например, экономия памяти и заряда. Минусы:

  • большой бюджет на разработку;
  • время на 2 самостоятельных проекта (один под iOS, второй под Android, даже со сходным дизайном).
ios vs android

Гибридные приложения

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

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

При включении уникальных блоков под каждую из платформ на С++ или других высокоуровневых языках качество приложения возрастает в разы. Вместе с трудоемкостью и стоимостью разработки.

гибридные приложения

Перечень типичных проблем гибридной разработки включает:

  • Для разработчиков: выполнение требований двух платформ с совершенно разными условиями.
  • Программный код под iOS и модифицированный под Android очень длинный. Программа будет работать медленно на пользовательском устройстве.
  • Гибридные решения обычно получают более низкие оценки в апсторах. Сложно привлечь новых клиентов.

Использование фреймворков в кросс-платформенной мобильной разработке

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

Какую технологию выбрать?

Для построения комплексных программных систем используют сразу несколько языков программирования, фреймворков и библиотек. При этом оптимизируют объем необходимой памяти и учитывают особенности «железа» (пропускная способность и надежность). Также важно знать, нужно ли масштабировать решение в будущем.

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

Стоимость специалистов

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

Ссылка на официальный обзор ставок разработчиков с сайта vc.ru

Резюме:

  • Если проект действительно сложный, то в нем будут задействованы языки программирования Python, C++ или те, что уже были использованы в программах, с которыми должна быть выполнена интеграция.
  • Для мобильной разработки под iOS вам потребуются профессионалы SWIFT, для Андроид — эксперты по Java.
  • Типичное гибридное приложение может быть выполнено с помощью популярных фреймворков: Cordova, Xamarin, Corona.
    Хороший обзор трендов на Хабре.
  • Финальный стек технологий сильно меняется от конкретной идеи. А на стоимость проекта влияет не только сам процесс разработки, но и цена поддержки.
стек технологий

Подведем итоги

Факторы, влияющие на выбор технологии разработки:

  • Средняя стоимость часа;
  • Суммарное количество часов проекта;
  • Наличие программистов на рынке;
  • Тип и размер проекта, масштабируемость и повторяемость задач, уникальность и сложность отдельных функций;
  • Бюджет, максимальные сроки готовности ПО;
  • Наличие готовых решений и/или надежной и функциональной среды разработки для кастомного решения
  • Технические требования, спецификация;
  • Простота обслуживания и стоимость поддержки;
  • Возможность последующей модификации софта;
  • Стратегический подход к разработке.

Вывод:

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

Главное — донести до команды разработчиков все пожелания не только к текущему продукту, но и смутные идеи, каким бы вы хотели видеть проект через 5 или 10 лет.

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