Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Критерии выбора средств разработки веб-приложений

Содержание:

ВВЕДЕНИЕ

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

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

За последние два десятилетия разработка веб-приложений (веб-разработка) прошла сложный путь. Менялись языки программирования, стандарты, концепции, появлялись новые классы устройств. Начав с простого синтаксиса html, эта отрасль сталкивалась в своем развитии с конкуренцией между методиками создания сайтов, кризисами, и даже пережила так называемую «войну браузеров». Всё это наложило отпечаток на сегодняшнее состояние программирования веб-приложений и должно учитываться при выборе инструментов для создания веб-приложений. О развитии Всемирной паутины и трудностях, с которыми столкнулись программисты в его ходе речь пойдет в первой главе настоящей работы.

Преодолев к началу 2010-х годов основные кризисные явления, веб-разработка превратилась в массовую отрасль IT-экономики. Появилось множество языков программирования и готовых решений, ориентированных на использование в веб-приложениях. Стремительное развитие отрасли приводило многие из них к уходу с рынка. Другие, напротив, за считанные месяцы набирали миллионы сторонников. В это движение включились крупные корпорации (Apple, Google, Microsoft), оказавшие сильное влияние на процесс развития. В результате современный рынок изобилует конкурирующими подходами к веб-разработке. Задача второй главы — рассмотреть и сравнить эти концепции, чтобы научиться выбирать наиболее подходящие для создания веб-приложения с заданными характеристиками.

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

1. История и проблематика развития веб-технологий

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

В начале 1990-х гг. специалист института ядерных исследований CERN Тим Бернерс Ли разработал набор компьютерных программ и методик, нацеленных на эффективный обмен электронной документацией:

  • веб-сервер для хранения и раздачи таких документов;
  • браузер (веб-клиент) для их просмотра;
  • протокол (свод правил) для обмена такими документами http (Hyper Text Transfer Protocol);
  • язык html (Hyper Text Markup Language) для их составления[1].

Электронные документы, предложенные Тимом Бернерсом Ли, отличались от уже существовавших к тому времени наличием гиперссылок. С их помощью можно легко переходить от одного документа к другому, даже если они размещены на разных серверах. Кроме того, правила составления таких документов (язык html) отличаются простотой. Их можно создавать без привлечения сложных средств разработки, просто расставляя т.н. тэги для выделения текста жирным, формирования заголовков, гиперссылок и т. п.

Тим Бернерс Ли выдвинул также концепцию Всемирной паутины[2] (www - World Wide Web), состоящей из связанных гиперссылками и протоколом http серверов, разместить которые в Интернете мог любой желающий. Она оказалась очень плодотворной. Количество веб-серверов в глобальной сети начиная с начала 1990-х гг. начало стремительно расти.


Рисунок 1: Простой html-документ для передачи по протоколу http в рамках взаимодействия веб-клиента и веб-сервера.

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

Во-первых, на смену первым простейшим браузерам, таким как Mosaic[3] пришли два более совершенных конкурирующих программных продукта: браузеры Netscape Navigator[4] (независимая разработка) и Internet Explorer (от компании Microsoft). Вскоре выяснилось, что веб-страницы, созданные для одного из них, неправильно отображаются в конкурирующем. Разработчики браузеров стали дополнять язык html собственными тэгами и возможностями, что всё более усложняло разработку веб-страниц.

Противоречия в отображении веб-страниц и связанная с ними борьба корполраций в истории развития информационных технологий получили название “Войны браузеров”[5]. Позднее в нее включились разработчики таких популярных продуктов, как Opera, Google Chrome. В ходе этого противостояния Netscape Navigator был на время вытеснен с рынка и вернулся под новой маркой - Mozilla Firefox. “Войну браузеров” удалось более-менее урегулировать в начале 2010-х годов усилиями консорциума W3C.

Деятельность консорциума W3C — общественной международной организации, в состав которой входят как ведущие специалисты по веб-разработке, так и представители заинтересованных IT-корпораций - сосредоточена на развитии Всемирной паутины, основу которой составляют язык html, языки для сценариев интерактивных веб-страниц (JavaScript, DOM, DHTML, AJAX), протоколы передачи гипертекста (HTTP, HTTPS, XmlHttpRequest), идентификаторы интернет-ресурсов (URI, URL, IRI). Кроме того, к компетенции W3C относится веб-графика, мультимедийные средства с открытым кодом (svg, png и т.п.). Консорциум разрабатывает стандарты и рекомендации для веб-программистов, изготовителей соответствующего оборудования и ПО[6].


Рисунок 2: Структура парадигмы консорциума W3C.

Большим шагом вперед в упорядочивании веб-разработки как отрасли современной экономики и в преодолении анархии и конкуренции на рынке стало принятие 28 октября 2014 г. стандарта html5, в котором интересы всех заинтересованных сторон (в первую очередь разработчиков наиболее популярных браузеров) были приведены к компромиссным вариантам. Была проведена большая обобщающая работа, позволившая взять лучшее из наработок конкурирующих корпораций, а также положить начало устранению устаревших и потенциально опасных практик анимации и интерактивности, таких, как вставки Adobe Flash и Java Applets. Вместо них были предложены более современные, безопасные и эффективные технологии (Canvas, SVG, тэги audio и video и т. д.)[7].

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

Источником проблем для развития Всемирной паутины стала и непростая эволюция веб-серверов. Если первые программы такого рода были нацелены лишь на раздачу хранящихся на них документов, то очень скоро владельцы сайтов захотели возлагать на веб-серверы более сложные задачи: поиск по всей совокупности хранящихся на сайте документов, подстраивание ответов сервера под индивидуальные интересы пользователя, сохранение некоторых сведений о клиентах, посещающих сайт, ограничение доступа к части информации и т.п. Это привело к появлению на стороне серверов произвольных скриптов (CGI - Common Gateway Interface[8]), что позволило отправлять в ответ на запросы клиентов не статические файлы, а динамически формируемые документы, учитывающие передаваемые в запросах параметры.

Скрипты CGI стали быстро набирать популярность, и к концу 1990-х гг. для их написания приспособили несколько языков программирования: Perl, Bash, Си, C++ и т.д. Вскоре разработчики некоторых языков программирования обзавелись собственными реализациями веб-серверов. Например, для языка Java таким продуктом стал веб-сервер Tomcat[9]; компания Microsoft продвигает на рынке собственный комплект - Internet Infomation Services[10]; для бэкенд-разработок на языке Python существует сервер Jango[11]; для JavaScript — Express и другие решения на основе Node.js[12]. Отдельно следует упомянуть популярную технологию PHP[13], совмещающую в себе фрагменты кода на языке html и вставки, исполняемые на стороне сервера. На ее основе построено большое количество сайтов малого и среднего размера.

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


Рисунок 3: Уязвимость различных веб-серверов.

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

Возможности html расширены за счет двух сопутствующих технологий: стилевых таблиц css[14] (Cascade Style Sheets) и JavaScript[15] - специальный язык программирования, поддерживаемый современными браузерами и позволяющий предать веб-страницам дополнительные интерактивные возможности. Таким образом, css и JavaScript (js) - дополнительные области знания, которые вынужден осваивать современный веб-разработчик, причем сложность их синтаксисов достаточно высока и тоже требует затрат времени на изучение[16].

Современные фреймворки - Angular, React, Vue и другие ставят своей целью облегчить создание веб-компонентов, построенных на совокупности упомянутых трех технологий (html, css, JavaScript), а также упростить написание процедур для обмена информацией с сервером. Однако сами фреймворки также являются достаточно сложными концепциями и требуют затрат времени на освоение. При этом написанные на них компоненты плохо совместимы друг с другом. Однако создание веб-приложения посредством фреймворка предпочтительнее, чем программирование на «чистых» html, css, JavaScript, поскольку фреймворки предлагают много готовых решений, экономящих трудозатраты.

Таким образом, выбор технологий для разработки веб-приложения предполагает:

  1. выбор языка, на котором будет производиться разработка серверной части;
  2. выбор фреймворка, на котором будет оформляться клиентская часть (веб-страница, отображаемая в браузере);
  3. организация взаимодействия между клиентской и серверной частями.

Рассмотрению этих особенностей будет посвящена следующая глава настоящей работы.

2. Выбор языка программирования, фреймворка, CMS для написания веб-приложения

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

Объективными критериями выбора средств веб-разработки можно считать следующие:

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

2.1. Классификация веб-проектов

Начать разработку веб-приложения следует с определения типа проекта. В зависимости от сложности, их можно разделить на:

  • простые, как, например, сайт-визитка, интернет-магазин начального уровня, приложения для несложных задач (выбор цвета изделия, расчет геометрических параметров и т.п; при реализации таких проектов используются готовые (коробочные) решения, шаблоны;
  • средние: интернет-магазины со сложной структурой, маркетплейсы, порталы городского, регионального уровня, сервисы (например, для заказа такси), приложения для решения сложных задач (обучение иностранному языку, сложные расчеты и т.п.);
  • сложные (масштабные порталы, социальные сети, инновационные и не типовые решения); такие проекты разрабатываются на языке программирования “с нуля”: проектируется уникальное ядро, клиентские и серверные модули, собственные стили и т.п.[18]

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

На этапе проектирования продумываются основные блоки будущего сайта. Для масштабных проектов проектированию отводится особая роль и уделяется много времени (до нескольких недель). При этом круг применяемых технологий может быть очень широк. Например, в приложениях социальной сети Instagram, по данным блога Insight IT, задействованы следующие технологии:

  • Ubuntu Server 14.04 LTS — основная серверная операционная система;
  • Python — основной язык программирования серверной части;
  • Django — фреймворк для Python;
  • nginx — второй уровень балансировки входящих HTTP-запросов;
  • gunicorn — WSGI-сервер;
  • HAProxy — балансировка нагрузки внутри системы;
  • PostgreSQL — основное хранилище данных;
  • postgis — поддержка гео-запросов;
  • pgfouine — отчеты на основе логов;
  • pgbouncer — создание пула соединений;
  • Redis — дополнительное хранилище данных;
  • Memcached — кэширование;
  • Gearman — очередь задач;
  • Solr — гео-поиск;
  • munin, statsd, pingdom — мониторинг;
  • Fabric — управление кластером;
  • xfs — файловая система[19].

Для выбора платформы веб-приложения (ОС, языка, фреймворка), следует учитывать, что в веб-технологиях можно выделить 3 уровня абстракции:

  • продукт, написанный на “чистом языке”, т.е. без привлечения сторонних «прослоек»; как уже было сказано, крупные it-компании, такие как Instagram, YouTube, Pinterest, Tumblr, Dropbox, Twitter, Facebook, Amazon, Digg, LinkedIn и др., разрабатывают собственные уникальные решения для своих специфических задач; это обусловлено тем, что они обслуживают миллионы и миллиарды пользователей, и типичные решения, рассчитанные на гораздо меньшие нагрузки, им не подходят; крупнейшие проекты создают новые технологии для себя, так как уже существующие их не устраивают, при этом зачастую они выкладывают свои наработки для всеобщего использования; можно выделить и другую крайность в создании проектов, написанных на “чистом языке”: высококвалифицированному программисту легче решить простую задачу (например, написать специфический веб-калькулятор) без привлечения посторонних средств;
  • продукт, написанный на фреимворке; фреймворк - среда разработки с готовыми инструментами, с одной стороны ускоряющая достижение результата, с другой - ограничивающий возможности программиста; фреймворки обеспечивают достаточную производительность для обслуживания проектов средней сложности (до нескольких миллионов посещений в месяц);
  • продукт, построенный на базе CMS (Content Management System[20]) - готовые решения, конструктор, из которого помодульно можно собрать требуемый проект. Работа сводится в данном случае не к программированию, а настройке. Ввиду большого количества ограничений, этот метод не всегда подходит для создания веб-приложений с высокой степенью специализации. На CMS делаются простые сайты с посещаемостью до миллиона пользователей в месяц. Примером CMS может служить ПО “Бистрикс” для организации интернет-магазинов[21].

Уровни абстракции взаимно связаны: на “чистом языке” может быть написан фреймворк, а на фреймворке - CMS. Для каждого популярного языка программирования может существовать по несколько фреймворков и CMS.

2.2. Обзор языков программирования для веб-разработки

Сегодня для веб-разработки используется большое количество языков программирования (ЯП). Выбирая ЯП для проекта, следует руководствоваться объективными критериями и задачами проекта. В крупных порталах может использоваться сразу несколько языков программирования. Не следует боятся смеси технологий в большом проекте, хотя и допускать такое целесообразно только когда это действительно необходимо, а также учитывать, что не все разработки совместимы. Примером совместного использования гетерогенных (разнородных) технологий является компания Google. Разные части его серверного хозяйства написаны на C/C++, Java, Python, JS и др. Google создает новые технологии, например популярный фреймворк Angular.

Рассмотрим краткие характеристики популярных языков программирования для веб-разработки:

  • PHP (PHP: Hypertext Preprocessor): используется для простых и средних проектов. На нем написано много “коробочных” решений. Программистов, которые пишут на этом языке, довольно много, хотя в последние годы его популярность заметно падает. Задействован в проектах: Facebook, Вконтакте, КиноПоиск. PHP не следует относить к полноценным языкам программирования. Это, скорее, комбинация из синтаксиса html и вставок на языке Си, исполняемых в момент отдачи документа сервером клиенту. Возникнув как персональный проект Расмуса Лердорфа, PHP быстро оброс модулями, библиотеками, средствами разработки и в 2000-х годах стал доминирующей технологией на рынке серверной веб-разработки. На основе PHP создано множество готовых решений, завоевавших большую популярность: Drupal, Joomla, Wordpress и др. Следует также отметить, что концепция PHP повлияла на другие языки программирования. Динамические страницы, содержащие «серверные вставки», появились для Java (jsp), Node.js (exp), .NET (asp)[22].
  • Python - современный скриптовый (интерпретируемый) язык для быстрой и при этом качественной разработки. Используется для средних и больших проектов. Задействован в проектах: Instagram, Pinterest, Reddit. Для Pyton характерна высокая производительность, большое количество библиотек для решения всевозможных задач, в том числе связанных с веб-разработкой, многочисленное сообщество программистов, готовых оказать помощь начинающим, высокая скорость разработки, поскольку Python-скрипты не требуют компиляции и сборки[23].
  • Ruby: используется для разработки простых и средних проектов (стартапы). Задействован в проектах: 500px, Groupon, Airbnb. Веб-расширения языка Ruby называется Ruby on Rails (RoR). Это фреймворк, реализующий архитектурный шаблон Model-View-Controller для веб-приложений. Он обеспечивает интеграцию с сервером и базой данных. Ruby нацелен на максимальное повторное использование модулей, минимизирующее повторение кода в приложениях[24];
  • Java: разработка на этом языке требует больших затрат времени. Его используют для больших проектов со специфическими требованиями, например в банковской сфере. Хорошо подходит для проектов, в которые вовлечено много программистов, т.к. в нем хорошо реализована модульность. Задействован в проектах: Ebay, Amazon, Alibaba. Java — один из старейших языков программирования, присутствующих на рынке. Он разработан в начале 1990-х гг. в корпорации Sun Microsystems (затем передан компании Oracle), причем одной из целей его создания было внедрение так называемых апплетов — дополнительных элементов интерактивности — на веб-страницы, т. е. Java изначально была ориентирована, среди прочего, и на примерение для разработки веб-приложений.. Поэтому проблемы, характерные для веба, решаются на Java достаточно эффективно[25].
  • C# - аналог Java для разработок в среде Microsoft Windows. Используют в больших проектах в сфере финансов и т.п. Задействован в проектах: Guru, Stack Overflow, Bank of America. Microsoft с середины 1990-х гг. большое внимание уделяла повышению доли своего влияния в вебе. Ее концепция .NET разрабатывалась как альтернатива Java и содержала эффективные модули для построения веб-приложений[26]
  • JavaScript - простой и быстро развивающийся скриптовый язык. Задумывался в начале 1990-х как средство украшения веб-страниц, но к настоящему времени вырос в полноценную среду программирования с большим количеством библиотек, фреймворков, инструментов сборки, утилит, пакетных менеджеров и прочих элементов инфраструктуры. Используется для средних и больших проектов. Его большим достоинством, помимо прочих, является то, что один и тот же синтаксис используется для разработки как клиентской, так и серверной частей проекта. Задействован в проектах: LinkedIn, Walmart, PayPal.[27]


Рисунок 4: Популярность языков программирования на 2018 г.

2.3. Фреймворки и платформы

На каждом языке программирования разработано по несколько фреймворков, представляющих собой наборы готовых настраиваемых компонентов для создания веб-приложений. Среди фреймворков есть универсальные, т.е. подходящие для любых проектов (например, Angular, React, Vue, о которых пойдет речь ниже), так и узкоспециализированные, например Sylius - E-commerce фреймворк на базе Symfony.

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

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

  • для PHP: Symfony, Laravel;
  • для Python: Django;
  • для Ruby: Ruby On Rails;
  • для Java: Spring;
  • для C#: .NET;
  • для JS: AngularJS.

Фреймворки активно развиваются, ежегодно выходят новые версии, одни фреймворки вытесняют с рынка другие. Например, в последние несколько лет стремительно развивается фреймворк для JavaScript Vue. Начатый как проект, реализованный силами единственного разработчика, сейчас он теснит даже Angular и React, за которыми стоят, соответственно, корпорации Google и Facebook.

При выборе фреймворка следует руководствоваться следующими вопросами:

  • насколько зрелы рассматриваемые фреймворки/библиотеки?
  • будут ли эти они поддерживаться в будущем?
  • насколько развиты программистские сообщества вокруг них?
  • насколько легко найти разработчиков для этих фреймворков?
  • каковы основные идеи, заложенные в эти фреймворки?
  • насколько просто задействовать фреймворки в небольших и крупных веб-приложениях?
  • какова производительность фреймворков?
  • как они устроены на уровне исходного кода?
  • сложно ли начать разрабатывать с выбранным фреймворком?

В настоящее время для разработки практически любого веб-приложения используется один из трех наиболее популярных фреймворков, созданных на языке JavaScript: Angular, React и Vue. Рассмотрим историю их появления и особенности.

Фреймворк Angular — это JavaScript-фреймворк, разработанный и поддерживаемый корпорацией Google. В нем синтаксис JavaScript не используется непосредственно. Вместо этого привлечен язык TyprScript с возможностью строгой типизации, а также ряд дополнительных синтаксисов. Это делает порог вхождения в данный фреймворк достаточно высоким (программисту придется осваивать новые языковые конструкции), однако написание веб-приложений на Angular происходит достаточно быстро, на нем легко можно сформировать удобные многократно используемые модули, которые хорошо взаимодействуют друг с другом. Angular используется сайтами Google, Wix, weather.com, healthcare.gov, Forbes и т.д..

Фреймворк React - JavaScript-библиотека, ориентированная на создание пользовательских интерфейсов. Время появления на рынке средств разработки - март 2013-го г. React разработан компанией Facebook, где используются написанные на нем компоненты. Другие сайты, где задействован этот фреймворк - Airbnb, Uber, Netflix, Twitter, Pinterest, Reddit, Udemy, Wix, Paypal, Imgur, Feedly, Stripe, Tumblr, Walmart и др. Facebook планирует выпустить React Fiber — новую реализацию данного фреймворка, которая ускорит компоненты, созданные с помощью React.

Фреймворк Vue позиционируется как интуитивный, быстрый и интегрируемый набор инструментов для создания интерактивных интерфейсов. Он появился на рынке в феврале 2014-го г., разработан бывшим сотрудником Google Эваном Ю. На данный момент проект развивает коллектив из десятков разработчиков и активных участников, поддерживающих сопутствующую инфраструктуру (форумы, документацию, репозитории и т.п.). Vue применяют Alibaba, Baidu, Expedia, Nintendo, GitLab.

В целом рекомендации экспертов по выботу одного из вышеописанных фреймворков таковы:

  • если нужна среда с низким порогом вхождения, следует выбирать между Vue и React;
  • на Vue легко могут перейти специалисты, знающие как Angular, так и React, поскольку в нем используется html-код, знакомый всем разработчикам;
  • для крупных проектов лучше подходит Angular; он характеризуется высокой гибкостью и скоростью рендеринга; React в таких случаях оказывается более объемным, а Vue еще не достаточно долго существует на рынке, поэтому при решении некоторых проблем могут возникнуть задержки, связанные с недостатком документации;
  • если планируется привлекать к разработке дополнительных программистов, то Vue окажется лучшим выбором; этот фреймворк прост для изучения, позволяет менять приложение без разрушения его базовой структуры;
  • если для разрабатываемого веб-приложения предполагается многоступенчатое обновление, а также расширение функциональности, то лучше задействовать Vue или React: они обладают добротной обратной совместимостью[28].

2.4. Системы управления контентом (CMS)

CMS (Content Management Systems) представляют собой программное обеспечение «из коробки» (т. е. Готовое к употреблению без написания кода), которое следует развернуть в собственном доменном пространстве, настроить и иногда доработать какую-то из частей. Таких решений достаточно много для любого языка программирования, хотя лидерство в этой сфере принадлежит PHP. Причиной этого можно считать то, что скриптов, написанных на этом языке, очень много, и со временем на рынке появились компании, которые аккумулировали их, создавали коллекции, упорядочивая и приводя к единым стандартам.

Следует упомянуть и такие системы, как CMF (Content Management Framework), сочетающие в себе черты CMS и фреймворков. Такой подход позволяет избавиться от лишних частей CMS, которые не нужны конкретному проекту[29].

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

Сайты для малого бизнеса лучше всего разворачивать на основе CMS. Это позволяет экономить время на разработку: для настройки таких решений не нужны дорогостоящие программисты. С другой стороны, одним из недостатков CMS является то, что в “коробочной” версии наличествует набор модулей с ограниченным функционалом: такие решения не гибки, кроме того, их бывает легко взломать, поскольку уровень программистов, писавших модули может быть недостаточно высок. CMS не рассчитаны для работы на крупных, сложных сайтах. Они могут не выдержать повышенных нагрузок.

Рассмотрим популярные CMS:

  • WordPress: начал развиваться как серверное ПО для ведения блогов; в настоящее время на нем можно организовать разнообразные веб-приложения, в т.ч. интернет-магазины; это одна из самых популярных CMS в мире. Широко применяется для сайтов СМИ;
  • Joomla! - еще одна CMS общего назначения; подходит для небольших сайтов;
  • Drupal - CMF общего назначения; поставляется со встроенным фреймворком Symfony; сложная и производительная CMS, на которой работает, например, официальный сайт Белого Дома в США;
  • Magento - популярная система управления интернет-магазинами;
  • PrestaShop - также CMS для интернет-магазинов; как и предыдущая, используется, в основном, за пределами России;
  • OpenCart — также система для интернет-магазинов; пользуется популярностью в России; используется для маленьких и несложных магазинов;
  • 1С-Битрикс - CMS общего назначения; может интегрироваться с бухгалтерским ПО 1С, что делает ее удобной для организации масштабных онлайн-продаж[30].


Рисунок 5: Доля сайтов, построенных на популятрых CMS.

2.5. Шаблоны

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

Шаблоны можно найти в таких каталогах, как TemplateMonster, ThemeForest и др. Часто встречаются онлайн-конструкторы, в том числе тематические: Wix, PageCloud и др[31].

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

В разработке мобильных веб-приложений используется два подхода:

  1. нативная разработка
  2. кроссплатформенные технологии.

В первом случае код пишется на оригинальных языках программирования: Swift для iOS, Java для Android. Кроссплатформенные технологии создаются на базе таких платформ, как Apache Cordova, React Native и т.д. Сложные приложения предпочтительнее писать на нативных технологиях. При использовании кроссплатформенного программирования возникают проблемы, например, некоторые функции могут быть не реализованы, наблюдается перерасход оперативной памяти устройства, быстро заканчивается заряд батареи и т.п. С другой стороны, кроссплатформенный подход позволяет писать программу всего один раз, сразу и для iOS и для Android. Тем не менее, кроссплатформенный вариант следует выбирать только для простых приложений[32].

2.7. Тренды развития веб-технологий

Выбирая технологию, следует учитывать ближайшие перспективы развития IT, собенно в случаях больших проектов. Средства разработки быстро развиваются, имеют неуклонную тенденцию устаревать. Языки программирования радикально изменяются за период 5-7 лет, фреймворки - за 2-3 года, CMS - за 1-2 года. Важно предусмотреть тренды развития так, чтобы они оставались актуальными и через несколько лет. Иначе придется постоянно дорабатывать проект или даже реализовывать его заново.

По результатам исследований перспектив развития IT-рынка, таких, как TIOBE Index, можно выделить явных лидеров по росту. Это, в первую очередь, JavaScript и мультипарадигмальные языки, такие, как Scala. Неплохие перспективы демонстрирует Python.

Падающий тренд - ряд старых языков (Perl, Pascal) и PHP, хотя 7я версия PHP с исправленными недостатками может вывести эту технологию на новый уровень развития. Наблюдается также некоторое падение популярности языка Ruby[33].


Рисунок 6: Востребованность веб-разработчиков.

О трендах среди языков программирования свидетельствует график востребованности специалистов в США[34]:

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

3. Выбор инструментов для разработки веб-приложений

Поскольку за каждым ЯП стоит сложная и общирная инфраструктура и культура разработки, выбор платформы (ОС, ЯП, фреймворк) для создания веб-приложения предполагает еще и выбор инструментов разработки: редакторов кода, утилит, средств отладки и учета ошибок и т. п.

3.1. Интегрированные среды разработки

Комплексное решение перечисленных задач предоставляют IDE[35] — интегрированные среды разработки. Любая IDE (Integrated Development Environment) базируется на текстовом редакторе, оптимизированном для написания компьютерных программ: фрагменты кода подсвечиваются, система указывает на синтаксические ошибки, дает рекомендации по использованию переменных, автоматически дополняет стандартные синтаксические конструкции.

IDE для веб-программирования, как правило, специализированы для работы с такими языками, как html, css, JavaScript, PHP и т.д. Они содержат также средства для компиляции или интерпретации, сборки, оптимизации, сжатия, отладки кода.

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

3.1.1. Сравнение IDE и редакторов кода

При выборе IDE для небольших проектов следует рассмотреть вопрос об использовании вместо них обычного текстового редактора. Современные редакторы кода, такие как Sublime, Vim, Emacs содержат функции для отладки, сборки, что делает их похожими на IDE. Тем не менее, редакторы кода обладают рядом недостатков по сравнению с IDE.

  • цена: наиболее эффективные из редакторов кода распространяются на коммерческой основе; так, например, подписка на редактор Sublime Text стоит 70 долларов в месяц, при том, что большинство популярных IDE распространяются под свободными лицензиями;
  • поддержка и обновляемость: большинство редакторов были созданы до периода интенсивной веб-разработки, когда стандарты в отрасли менялись не так часто; в IDE новые возможности учитываются более полно и благодаря обновлениям регулярнее расширяют возможности программистов по использованию более эффективных приемов работы;
  • плагины: расширение возможностей редакторов за счет установки плагинов (функциональных дополнений) зачастую небезопасно, поскольку такие модули часто изготавливаются сторонними разработчиками и могут быть источниками опасностей, допущенных как вследствие низкой квалификации, так и злого умысла;
  • сложность: IDE сложны для освоения, но некоторые редакторы также требуют больших затрат времени на освоение; например, Vim позволяет вести разработку не прибегая к IDE, но особенности управления им отпугивают начинающих программистов;
  • сложности при работе с большим количеством файлов. IDE ориентированы на адекватное отражение файловой структуры проекта, тогда как при пользовании обычными редакторвми распределение файлов по папкам может оказаться непродуманным и хаотичным[36].

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


Рисунок 7: Популярность IDE и текстовых редакторов.

3.1.2. Отбор популярных IDE

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

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

Рассмотрим некоторые IDE в соответствии с этими критериями.

NetBeans

Данная IDE распространяется бесплатно, поддерживает инструменты веб-разработки, а также написание кода на языке PHP с возможностью анализа этого языка. Учтены свежие спецификации HTML, CSS, JavaScript. Поддерживается фреймворк Angular и серверное ПО Node.js. Регулярно выходят обновления.

В NetBeans организована эффектная подсветка кода, позволяющая также оценивать его корректность. Автоматизирован процесс набора отступов и интервалов. Приложение является полностью кроссплатформенным, поскольку написано на языке Java[37].

Eclipse

Eclipse - одна из самых популярных IDE для веб-разработки благодаря интуитивно понятному интерфейсу и высокой скорости работы. Обновления выпускаются примерно раз в квартал. Продукт хорошо русифицирован.

Эта IDE поддерживает веб-приложений для мобильных устройств, что существенно расширяет возможности программиста. Может быть развернута на большинстве настольных операционных систем, а также на Android, причем тестирование приложений можно производить не выходя из IDE. Имеется расширение Zend Studio, оптимизированное для разработки на языке PHP[38].

Visual Studio

IDE от Microsoft, поставляемое на коммерческой основе, хотя может предоставляться бесплатно на длительный период, а также в образовательных целях. Среда регулярно обновляется, располагает набором инструментов для эффективной веб-разработки. Поддерживает большое количество языков программирования, которые могут быть востребованы в процессе создания веб-приложения. Используется в крупных компаниях[39].

Недостатком этой IDE можно считать ограничессый круг операционных систем, на которых она может работать: он ограничивается лишь Windows и MacOS.

На бесплатной основе Microsoft распространяет продукт Visual Studio 2013 Express Edition с временным свободным доступом к облачному хранилищу Azure.

3.1.3. Средства online-разработки

С широким распространением скоростного доступа к Интернет многие организации предоставляют возможность вести веб-разработку не устанавливая на свой компьютер специальное ПО. Такое программирование называется “облачным”. Рассмотрим некоторые из таких решений.

Cloud9

Эта IDE написана на JavaScript, благодаря чему, является быстрой и стабильной. Среди преимуществ - поддержка популярных языков программирования. Цена за месяц работы с “облаком” 19 долларов, но предоставляется и бесплатная версия с урезанным функционалом[40].

Koding

Эта среда разработки обладает широкими возможностями, но пока плохо оптимизирована: требовательна к объему оперативной памяти, не до конца продуман пользовательский интерфейс. Хорошо реализованы возможности совместной разработки (для программирования в паре). Доступ предоставляется на коммерческой основе, но существует бесплатная версия с урезанными возможностями. Несмотря на недостатки, Koding является перспективной IDE, недостатки которой обусловлены малым временем нахождения на рынке. Они могут быть устранены в ближайшее время по мере обновления этой программы[41].

3.2. Системы контроля версий

По мере развития отраслей экономики, связанных с разработкой программного обеспечения, всё в большей степени возникал спрос на системы управления версиями (VCS, Version Control System[42]). С их помощью можно отслеживать эволюцию кода, создавать различные варианты программного продукта, разбивать объёмы работ на независимые участки и т. п. Системы контроля версий изначально создавались, чтобы команды разработчиков могли совместно работать над проектами, избегая путаницы. В VCS ветви кода и примечания к ним созранябтся в центральный репозиторий, где удобно хранить и обновлять файлы, вносить правки и комментарии, проводить слияние ветвей, созданных разными разработчиками.

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

Тем не менее, при разработке веб-приложений (за исключением самых простейших) необходимо использовать системы контроля версий, чтобы была возможность вернуться к более стабильному решению после неудачного, организовать обмен кода между программистами, доставку кода на удаленные серверы и т. д. В настоящее время наиболее популярными VCS являются Subversion, Mercurial и Git. Последняя является практически доминирующей, поэтому на ней и производных от нее продуктах здесь следует остановиться подробнее.

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

Система Git разработана автором ядра Linux Лайнусом Торвальдсом. Git обладает широким спектром возможностей по управлению версиями, но, с другой стороны, - довольно высоким порогом вхождения. Он поставляется в виде консольной утилиты с интуитивно понятным интерфейсом. Команды git представляют собой слова английского языка: git clone, git add, git commit, git push и т. п. Однако возможностей у утилиты git так много, что довольно быстро появились инструменты для визуализации работы с ней, чаще всего через веб-интерфейс. Некоторые из таких программ являются глобальными веб-сервисами, как, например, GitHub или Bitbucket. Другие же позволяют организовать доступ к возможностям git из локальной сети, делая более удобной разработку частных проектов (GitLab).


Рисунок 8: Популярность сетевых сервисов для управления версиями ПО.

Одно из основных отличий между системами контроля версий состоит в том, какие они: клиент-серверные или децентрализованные (p2p). Есть ли у них центральный репозиторий, откуда код ПО берется и затем, после внесения изменений, возвращается. Некоторые VCS представляют собой обновляемые копии в локальном хранилище.

При выборе VCS следует учитывать быстродействие, функциональность, порог вхождения системы контроля версий[43].

3.3. Системы управления проектами

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

В целом жизненный цикл приложения может включать в себя такие этапы, как:

  • проектирование;
  • написание кода;
  • тестирование;
  • альфа-релиз;
  • написание обновлений;
  • исправление ошибок;
  • рефакторинг;
  • утилизация[44].

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

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

Одной из наиболее популярных систем такого рода является JIRA, разрабатываемая компанией Atlassian (последней принадлежит сайт bitbucket.com)[45].

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

JIRA используется в более чем 51 000 компаниях, включая такие, как eBay, Spotify, Cisco, LinkedIn. Эту систему можно использовать для планирования, отслеживания, выпуска программного продукта, есть возможность создавать истории проблем, назначать задания персоналу. Есть механизмы расстановки приоритетов и обсуждения задач, инструменты анализа, отчеты в реальном времени, визуализация данных[46].

* * *

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

ЗАКЛЮЧЕНИЕ

Рассмотрение вариантов выбора средств разработки современных веб-приложений приводит к следующим выводам:

  1. Выбор средств разработки существенно зависит от масштаба и сложности проекта, его бюджета, а также времени, отведенного на разработку. Очевидно, что для небольших проектов следует выбирать программные платформы с возможностью легкой установки и быстрой разработки. К таким на сегодняшний день можно отнести JavaScript и Python. Языки Java, С# предназначены для масштабных проектов со сложной структурой, в которые вовлечено множество программистов. Что касается PHP и Ruby, то их перспективы, несмотря на былую популярность, остаются не такими очевидными. Несомненно, что они будут продолжать использоваться в давно существующих стабильных проектах, но количество новых проектов, начатых на этих языках, будет, по-видимому, снижаться. Это связано как со сравнительно большим количеством уязвимостей (PHP), так и с тем, что фреймворки, написанные на JavaScript и Python развиваются гораздо динамичнее.
  2. Несомненными лидерами среди нынешних фреймворков для написания клиентской части веб-приложений являются Angular, React и Vue. Такое положение, видимо, сохранится в ближайшие годы, причем Vue, по-видимому, будет отвоевывать всё большую долю рынка, поскольку он появился на рынке последним и в нем учтены недостатки конкурирующих продуктов. То обстоятельство, что эти фреймворки написаны на JavaScript усиливает позиции этого языка и его серверной реализации Node.js. Плюсом здесь является то, что для написания как клиентской, так и серверной частей используется один и тот же синтаксис. Что касается фреймворков для других языков программирования, то они вынуждены учитывать особенности Angular, React и Vue и подстраиваться под них, как минимум, в своей клиентской части.
  3. При разработке веб-приложений не следует игнорировать возможности, предоставляемые современными IDE, системами контроля версий, системами управления проектами и другими организационными инструментами. Их отсутствие в проекте неизбежно приводит к плохой управляемости кода, задержкам в исправлении ошибок и выпуске обновлений.
  4. Необходимо учитывать высокую динамику развития всего диапазона средств разработки. Этот процесс далек от стабильности, поэтому программисты должны быть готовы постоянно повышать свою квалификацию, осваивать новые инструменты, переучиваться. Это возможно только при наличии взаимодействия, обмена мнениями в коллективе разработчиков, участия специалистов в жизни профессиональных сообществ, доступности информации, благоприятности условий, создаваемых для работы IT-специалистов.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Монографии, учебники

  1. Васильев А.В. Программирование на Java для начинающих. М., «Эксмо», 2017.
  2. Дронов В.А. - HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. СПб, «Бином», 2011.
  3. Кузнецов М.В., Симдянов И.А. Самоучитель PHP 7. СПб, «Бином», 2018.
  4. Любанович Билл. Простой Python. Современный стиль программирования. СПб, «Питер», 2018.
  5. Резиг Джон, Фергюсон Расс, Пакстон Джон. JavaScript для профессионалов. М., «Эксмо», 2017.
  6. Ханссон Дэвид Хейнмейер. Гибкая разработка веб-приложений в среде Rails. СПб, «Бином», 2012.
  7. Шилдт Герберт. C# 4.0. Полное руководство. М., , «Эксмо», 2015.

Обзоры и статьи из Интернета

  1. 10 языков программирования для изучения в 2018 году // https://icanchoose.ru/blog/10-yazykov-programmirovaniya-dlya-izucheniya-v-2018-godu/
  2. Блинков И. Архитектура Instagramm // https://www.insight-it.ru/highload/2012/arkhitektura-instagram/
  3. Консорциум W3C. Общие сведения // http://janto.ru/repository/003/06.html
  4. Новости, тенденции и тренды веб разработки в 2018 году // https://www.motocms.com/blog/ru/trendy-web-razrabotki/
  5. Обзор площадки TemplateMonster для продажи шаблонов сайтов // https://weblayner.com/obzor-ploshhadki-templatemonster-dlya-prodazhi-shablonov-sajtov-i-ne-tolko.html
  6. Обзор популярных CMS // https://tproger.ru/digest/cms-review/.
  7. Почему стоит выбрать JIRA // https://itfb.com.ua/zhira-podrobnyj-obzor-pochemu-stoit-vybrat-jira/.
  8. Разница между CMS и CMF // https://lionmm.livejournal.com/6942.html
  9. Редактор или IDE? Очередная попытка анализа. // https://habr.com/post/265197/
  10. Руденко А. Как мы делаем проекты: разработка мобильных приложений // https://livetyping.com/ru/blog/kak-my-delaem-proekty-razrabotka-mobilnyh-prilozhenij.
  11. Семенов Н. Как выбрать технологию для большого и не очень большого веб-проекта // https://tproger.ru/articles/which-technology-to-choose/.
  12. Система контроля версий (cvs) — Сравниваем: Git, SVN, Mercurial // https://biz30.timedoctor.com/ru/c%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8F-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B9/
  13. Улитовский А. Сравнение фреймворков Vue, React и Angular (2018) // https://mkdev.me/posts/sravnenie-freymvorkov-vue-react-i-angular-2018

Статьи из Википедии

  1. Apache Tomcat // https://ru.wikipedia.org/wiki/Apache_Tomcat.
  2. CGI // https://ru.wikipedia.org/wiki/CGI.
  3. Cloud9 // https://ru.wikipedia.org/wiki/Cloud9.
  4. CSS // https://ru.wikipedia.org/wiki/CSS.
  5. Django // https://ru.wikipedia.org/wiki/Django.
  6. Eclipse (среда разработки) // https://ru.wikipedia.org/wiki/Eclipse_(%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8)
  7. HTML5 // https://ru.wikipedia.org/wiki/HTML5.
  8. Internet_Information_Services // https://ru.wikipedia.org/wiki/Internet_Information_Services.
  9. JavaScript // https://ru.wikipedia.org/wiki/
  10. Jira // https://ru.wikipedia.org/wiki/Jira
  11. Koding // https://en.wikipedia.org/wiki/.
  12. Microsoft Visual Studio // https://ru.wikipedia.org/wiki/Microsoft_Visual_Studio
  13. NCSA Mosaic // https://ru.wikipedia.org/wiki/NCSA_Mosaic.
  14. NetBeans // https://ru.wikipedia.org/wiki/NetBeans
  15. Netscape Navigator // https://ru.wikipedia.org/wiki/Netscape_Navigator.
  16. Node.js // https://ru.wikipedia.org/wiki/Node.js.
  17. PHP // https://ru.wikipedia.org/wiki/PHP.
  18. Война браузеров // https://ru.wikipedia.org/wiki/%D0%92%D0%BE%D0%B9%D0%BD%D0%B0_%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%BE%D0%B2
  19. Всемирная паутина // https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B0%D1%83%D1%82%D0%B8%D0%BD%D0%B0.
  20. Интегрированная среда разработки // https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8.
  21. Система контроля версий // https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%D0%BC%D0%B8
  22. Система управления содержимым // https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%BC%D1%8B%D0%BC
  23. Тим Бернерс Ли // https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D1%80%D0%BD%D0%B5%D1%80%D1%81-%D0%9B%D0%B8,_%D0%A2%D0%B8%D0%BC
  1. Тим Бернерс Ли // https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D1%80%D0%BD%D0%B5%D1%80%D1%81-%D0%9B%D0%B8,_%D0%A2%D0%B8%D0%BC

  2. Всемирная паутина // https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B0%D1%83%D1%82%D0%B8%D0%BD%D0%B0.

  3. NCSA Mosaic // https://ru.wikipedia.org/wiki/NCSA_Mosaic.

  4. Netscape Navigator // https://ru.wikipedia.org/wiki/Netscape_Navigator.

  5. Война браузеров // https://ru.wikipedia.org/wiki/%D0%92%D0%BE%D0%B9%D0%BD%D0%B0_%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80%D0%BE%D0%B2

  6. Консорциум W3C. Общие сведения // http://janto.ru/repository/003/06.html

  7. HTML5 // https://ru.wikipedia.org/wiki/HTML5.

  8. CGI // https://ru.wikipedia.org/wiki/CGI.

  9. Apache Tomcat // https://ru.wikipedia.org/wiki/Apache_Tomcat.

  10. Internet_Information_Services // https://ru.wikipedia.org/wiki/Internet_Information_Services.

  11. Django // https://ru.wikipedia.org/wiki/Django.

  12. Node.js // https://ru.wikipedia.org/wiki/Node.js.

  13. PHP // https://ru.wikipedia.org/wiki/PHP.

  14. CSS // https://ru.wikipedia.org/wiki/CSS.

  15. JavaScript // https://ru.wikipedia.org/wiki/

  16. См., напр.: Дронов В. А. - HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. Спб, 2011.

  17. Никита Семенов. Как выбрать технологию для большого и не очень большого веб-проекта // https://tproger.ru/articles/which-technology-to-choose/.

  18. Никита Семенов. Указ соч.

  19. Иван Блинков. Архитектура Instagramm // https://www.insight-it.ru/highload/2012/arkhitektura-instagram/

  20. Система управления содержимым // https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%BC%D1%8B%D0%BC

  21. Никита Семенов. Указ соч.

  22. Максим Кузнецов, Игорь Симдянов. Самоучитель PHP 7. СПб, 2018 г.

  23. Билл Любанович. Простой Python. Современный стиль программирования. СПб, 2018.

  24. См. Дэвид Хейнмейер Ханссон. Гибкая разработка веб-приложений в среде Rails. СПб, 2012.

  25. См. напр.: Алексей Васильев. Программирование на Java для начинающих. М., 2017.

  26. Герберт Шилдт. C# 4.0. Полное руководство. М., 2015 г.

  27. Джон Резиг, Расс Фергюсон, Джон Пакстон. JavaScript для профессионалов. М., 2017.

  28. Анатолий Улитовский. Сравнение фреймворков Vue, React и Angular (2018) // https://mkdev.me/posts/sravnenie-freymvorkov-vue-react-i-angular-2018

  29. Разница между CMS и CMF // https://lionmm.livejournal.com/6942.html

  30. См. Обзор популярных CMS // https://tproger.ru/digest/cms-review/.

  31. См., напр: Обзор площадки TemplateMonster для продажи шаблонов сайтов // https://weblayner.com/obzor-ploshhadki-templatemonster-dlya-prodazhi-shablonov-sajtov-i-ne-tolko.html

  32. Андрей Руденко. Как мы делаем проекты: разработка мобильных приложений // https://livetyping.com/ru/blog/kak-my-delaem-proekty-razrabotka-mobilnyh-prilozhenij.

  33. Новости, тенденции и тренды веб разработки в 2018 году // https://www.motocms.com/blog/ru/trendy-web-razrabotki/

  34. 10 языков программирования для изучения в 2018 году //https://icanchoose.ru/blog/10-yazykov-programmirovaniya-dlya-izucheniya-v-2018-godu/

  35. Интегрированная среда разработки // https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8.

  36. Редактор или IDE? Очередная попытка анализа. // https://habr.com/post/265197/

  37. NetBeans // https://ru.wikipedia.org/wiki/NetBeans

  38. Eclipse (среда разработки) // https://ru.wikipedia.org/wiki/Eclipse_(%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8)

  39. Microsoft Visual Studio // https://ru.wikipedia.org/wiki/Microsoft_Visual_Studio

  40. Cloud9 // https://ru.wikipedia.org/wiki/Cloud9.

  41. Koding // https://en.wikipedia.org/wiki/.

  42. Система контроля версий // https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%D0%BC%D0%B8

  43. Система контроля версий (cvs) — Сравниваем: Git, SVN, Mercurial // https://biz30.timedoctor.com/ru/c%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8F-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B9/

  44. Полностью жизненный цикл ПО описан, например, в Стандарте ГОСТ 34.601-90. См. Жизненный цикл программного обеспечения. // https://ru.wikipedia.org/wiki/%D0%96%D0%B8%D0%B7%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%86%D0%B8%D0%BA%D0%BB_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F#%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82_%D0%93%D0%9E%D0%A1%D0%A2_34.601-90

  45. Jira // https://ru.wikipedia.org/wiki/Jira

  46. Жира подробный обзор, почему стоит выбрать JIRA // https://itfb.com.ua/zhira-podrobnyj-obzor-pochemu-stoit-vybrat-jira/.