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

Основы алгоритмизации и программирования (рассмотрение критериев выбора средств разработки)

Содержание:

Введение

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

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

Цель работы: заключается в рассмотрении критериев выбора средств разработки для создания современных web-приложений.

Исходя из цели были поставлены следующие задачи:

1. Рассмотреть сущность понятия web-приложение и их классификацию;

2. Ознакомиться с существующими средствами разработки web-приложений: языки программирования, среды разработки, фреймворки и платформы;

3. Определить объективные критерии выбора средств разработки WEB-приложений;

4. Рассмотреть процесс выбора по критериям средств разработки для web-приложения «Планировщик маршрута по достопримечательностям».

Предмет: процесс выбора средств разработки веб-приложений по критериям.

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

Для написания курсовой работы были использованы учебные пособия и монографии отечественных авторов: Колисниченко [7, 8], Веллинг [1], Машнин[10, 11], Чедвик[17], Миковски[12].

Объем работы составляет 38 страниц печатного текста, содержит 5 рисунков.

1. Сущность понятия Web-приложение и их классификация

Современные web-приложения - это, в основном, порталы, предоставляющие услуги, которыми нельзя воспользоваться откуда-либо еще, Одно из неудобств подобных сервисов - сложность обмена информацией между компаниями. В частности, даже контактную и другую личную информацию приходится на каждом таком сайте вводить заново [12].

В настоящее время с точки зрения назначения различают три основных типа порталов:

  1. Публичные, или горизонтальные, порталы (называемые иногда мегапорталами), такие как Yahoo, Lycos, Excite, Rambler. Такие порталы нередко являются результатом развития поисковых систем. Предназначены они для самой широкой аудитории, что отражается на содержании предоставляемой ими информации и услуг. Как правило, эта информация носит общий характер, равно как и предоставляемые услуги (электронная почта, новостные рассылки и так далее).
  2. Вертикальные порталы. Этот вид порталов предназначен для специфических видов рынка и обслуживает аудиторию, пользующуюся услугами этого рынка или работающую на нем. Примерами таких порталов могут служить, например, туристические агентства, предоставляющие услуги по бронированию мест в гостиницах, заказу и доставке билетов, доступу к картам и сведениям об автомобильных маршрутах, либо порталы типа B2B (business-to-business), позволяющие своим клиентам реализовывать совместные бизнес-операции (например, выбирать поставщиков и осуществлять закупку товаров, проводить аукционы).
  3. Корпоративные порталы предназначены для сотрудников, клиентов и партнеров одного предприятия. Пользователи такого портала получают доступ к предназначенным им сервисам и приложениям в зависимости от их роли и персонального профиля [14].

Существуют и другие наиболее распространенные web-приложения:

  1. Региональные интернет-порталы, универсальные по своему направлению, но ограниченные географией заинтересованных посетителей (e1.ru);
  2. Поисковые системы - это интернет-порталы, которые предназначены для того, чтобы предоставить их посетителю возможность найти сайты, на которых встречаются заданные слова или целые фразы (metabot.ru);
  3. Каталог - это коллекция ссылок на сайты (mail.ru);
  4. Электронные доски объявлений - являются местом в Интернет, где практически любой желающий может оставить информацию ознакомительного, пригласительного или рекламного характера;
  5. Форумы - это специальные сайты или разделы на сайтах, предназначенные для того, чтобы посетители, оставляя свои сообщения, обменивались мнениями;
  6. Чаты - являются еще одним местом для общения в Интернет, только его назначение не обмен мнениями на какую-то тему, а просто времяпрепровождение;
  7. Файлы для скачивания;
  8. Фотогалереи;
  9. Элементы статистики;
  10. Хранение в интернете различной информации;
  11. Серверы почтовых рассылок, они предлагают услуги по доставке информации широкому кругу читателей (subscribe.ru);
  12. Интернет-магазины и аукционы (ozon.ru, molotok.ru) [14].

В данном разделе была рассмотрена сущность понятия web-приложение и классификация web-приложений.

2. Существующие средства разработки Web-приложений

2.1 Область применения языков программирования

Для разработки разработки Web-приложений применяются разные языки программирования:

  1. HTML - язык разметки гипертекста (Hypertext Markup Language) - это компьютерный язык, лежащий в основе World Wide Web. Благодаря языку HTML любой текст можно разметить, преобразовав его в гипертекст с последующей публикацией в Web.

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

Одной из отличительных особенностей HTML-документов является то, что сам документ содержит только текст, а все остальные объекты встраиваются в документ в момент его отображения браузером с помощью специальных тэгов и хранятся отдельно. При сохранении HTML-файла в месте размещения документа создается папка, в которую помещаются сопутствующие ему графические элементы оформления [12].

  1. PHP используют в основном для простых и средних проектов.

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

Вторая область - это создание скриптов, выполняющихся в командной строке. То есть с помощью PHP можно создавать такие скрипты, которые будут исполняться, вне зависимости от web-сервера и браузера, на конкретной машине.

И последняя область - это создание GUI-приложений (графических интерфейсов), выполняющихся на стороне клиента [1].

  1. Ajax - расшифровывается как Asynchronous Javascript And XML (Асинхронные Javascript и XML) и технологией в строгом смысле слова не является. Если в стандартном web-приложении обработкой всей информации занимается сервер, тогда как браузер отвечает только за взаимодействие с пользователем, передачу запросов и вывод поступившего HTML, то в Ajax-приложении между пользователем и сервером появляется еще один посредник - движок Ajax. Он определяет, какие запросы можно обработать «на месте», а за какими необходимо обращаться на сервер [3].

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

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

Где стоит использовать Ajax:

  1. Формы. Они очень медленны. Если асинхронно передавать данные, страница не перезагружается.
  2. Навигация в виде «дерева». Вообще, такая навигация - ужас. Простая топология намного удобнее, но если уж до этого дошло, лучше использовать Ajax.
  3. Голосования. Пользователю будет приятней оставить свой голос за несколько секунд, чем за 30-40.
  4. Фильтры. Часто на сайтах делают сортировку по дате, по имени. Ajax это будет значительно удобнее [4].
  5. JavaScript - язык программирования разработан фирмой Netscape для создания интерактивных HTML-документов. Это объектно-ориентированный язык разработки встраиваемых приложений, выполняющихся как на стороне клиента, так и на стороне сервера. Синтаксис языка очень похож на синтаксис Java - поэтому его называют - Java-подобным. Существует огромное количество наработок и на нем можно написать все, что угодно, даже игры. Его используют для средних и больших проектов, но действительно мощные возможности этот язык получит недавно.

Основные области применения JavaScript делятся на следующие категории:

  1. Динамическое создание документа с помощью сценария;
  2. Оперативная проверка достоверности заполняемых пользователем полей форм HTML до передачи их на сервер;
  3. Создание динамических HTML-страниц совместно с каскадными таблицами стилей и объектной моделью документа;
  4. Взаимодействие с пользователем при решении «локальных» задач, решаемых приложением JavaScript, встроенном в HTML-страницу [5].
  5. VBScript - язык создания сценариев разработан фирмой Microsoft, является подмножеством достаточно распространенного в среде программистов языка Visual Basic разработки прикладных программ Windows-приложений. Язык VBScript достаточно прост и легок в изучении.

Преимуществом его применения для создания сценариев является возможность использования, с небольшими корректировками, ранее написанных процедур на языках Visual Basic и Visual Basic for Application.

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

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

Для создания сценариев клиента используется набор объектов, аналогичный набору JavaScript. Объекты клиента и сервера отличаются друг от друга, но существует общая часть (ядро) объектов, используемых при разработке как сценариев клиент, так и сценариев сервера [14].

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

Вот некоторые примеры задач, которые можно решать с помощью Perl:

  • проверка пользователей Windows NT на несоответствие их статуса и возможностей;
  • управление NT-сервисами из командной строки и дистанционно с локальной машины получение статистических данных на отдельной машине;
  • может работать и с протоколом FTP;
  • системная поддержка UNIX и Windows [12].
  1. Python - современный язык, разработка на нем быстрая и качественная. Используют его для средних и больших проектов. Программистов найти проблематично и стоят они не дешево [2].
  2. Ruby - современный язык, разработка на нем так же быстрая. Его используют в основном для разработки простых и средних проектов, часто разрабатывают стартапы. Программистов также мало, и они дорогие [5].
  3. Java - разработка на нем очень долгая и дорогая. Его используют в основном для больших проектов со специфическими требованиями. Однако являлся самым популярным языком программирования в рейтинге TIOBE по состоянию на 2016 год [15]. В 2019 снизился в рейтинге.
  4. C# - аналог Java, также используют для больших проектов, часть в сфере FinTech.

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

2.2 Сравнительный анализ сред создания Web-приложений

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

  1. Macromedia Dreamweaver

Компания Macromedia сделала Dreamweaver интуитивно понятной и простой в использовании программой. Мощные средства с одной стороны и простота в использовании - с другой, делают продукты Macromedia идеальными программным пакетом, как для профессиональных web-дизайнеров, так и для новичков. Продукты, входящие в пакет Macromedia, такие как: Flash, Firework, Dreamweaver - сделают работу более продуктивной, и при этом могут заменять друг друга (так, например, в любой из них можно создать кнопки). Такие продукты как: Sitespring, FreeHand – добавит эффективности при работе с клиентом [12].

У Dreamweaver множество плюсов:

Программа Dreamweaver поддерживает «чистый» HTML код, а также последние расширения DHTML и CSS.

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

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

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

Поддерживает расширения, как сторонних разработчиков, так и самой Macromedia.

С Dreamweaver поставляется библиотека элементов, которые можно применять на WEB-страницах, например панель навигации, дескриптор авторского права.

Применяется для добавления мультимедийных средств на web-страницы и различных типов файлов от Flash и Java до RealAudio, интерактивных элементов, таких как поисковые системы, форумы, системы электронной коммерции.

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

Dreamweaver позволяет убрать лишний код из приложений Microsoft, после чего страницы станут быстрее грузиться и лучше отображаться в разных браузерах [12].

  1. Macromedia FreeHand

Один из трех профессиональных графических редакторов, ведущих с переменным успехом борьбу за первенство в работе с векторной графикой. FreeHand гораздо быстрее и проще своих конкурентов - CorelDraw и Adobe Illustrator. FreeHand прекрасно подходит для создания логотипов, рекламы, Web-графики и анимации.

Изготовители программы приложили немало усилий, чтобы максимально облегчить жизнь пользователям: интерфейс программы прост и нагляден, имеется множество дополнений, позволяющих быстро и легко выполнять сложные преобразования объектов или достичь самых разных художественных эффектов. FreeHand умеет экспортировать и импортировать файлы практически во всех широко распространенных форматах. В его состав также входят настройки «горячих клавиш», эмулирующие другие распространенные программы (Adobe Illustrator, CorelDraw) [5].

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

Документы FreeHand легко превращаются в web-страницы. FreeHand - поддерживает базовые элементы HTML. С помощью FreeHand WEB-страницы легко снабдить Flash-анимацией. В анимационный клип вставляются текстовые блоки, группы объектов, а также объекты с контурами. Небольшой клип из объектов FreeHand создается буквально одной командой - остается лишь проследить за некоторыми настройками. Каждый кадр клипа помещается на отдельный слой; анимационный эффект достигается последовательным воспроизведением содержимого отдельных слоев. Но средства FreeHand не заменят редактор Macromedia Flash.

  1. Macromedia FLASH

Создает привлекательные интерактивные мультимедийные презентации, для WEB-сайтов. Для Flash характерна векторная графика и анимация, хотя эта программа может быть также использована для манипулирования или отображения растровой графики, монтажа видеоматериала и даже для манипулирования звуковыми файлами [12].

Flаsh-содержимое публикуется в компактных файлах формата SWF для последующего показа на самых разных платформах с помощью Flаsh-проигрывателя. Во время воспроизведения файла формата SWF в оперативном режиме в него можно динамически загружать такое содержимое, как звуковые файлы формата МР3, Flash-видео и изображения формата JPEG. Flash-проигрыватель позволяет подключаться к источникам данных, чтобы объединить их с базой данных, XML или web-службами. Благодаря всем этим возможностям привлекательные фрагменты анимации и эффекты могут быть введены в приложения, управляемые данными. Flash имеет поддержку антиалайсинг (сглаживание контуров с помощью смешения соседних цветов). Так как этот формат файла основан на векторной графике, объект сохраняет качество изображения при любом разрешении и идеален для создания кадров анимации.

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

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

  1. Macromedia HomeSite

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

Гибкость интерфейса - это одна из сильнейших сторон продукта. Любой пользователь с легкостью сможет настроить интерфейс HomeSite в соответствии со своими предпочтениями и потребностями.

В процессе работы пользователь может видеть рабочую область с двумя вкладками - Browse и Edit. То есть программирование происходит во вкладке Edit, а результат можно увидеть, если выбрать вкладку Browse. При создании новой страницы на поле редактирования автоматически появляются некоторые теги вроде HTML и BODY. Это шаблон, загружаемый при создании новой страницы. Его содержание можно менять [12].

В HomeSite очень легко строить архитектуру сайта. Этому способствует панель Quick Bar с системой вкладок с готовыми тегами. Теги в этих вкладках самые разные - от простых вроде параграфа до java-скриптов. Можно вообще оставить одну вкладку, добавив в нее все необходимые теги через меню Customize. Также можно самому создавать теги или их комбинации. При нажатии на кнопку с определенным тегом появляется окно, где можно настроить опции тега и указать его атрибуты. Поддерживает режим WYSIWYG со всеми его плюсами и минусами.

Для скорости работы здесь имеется множество средств редактирования тегов. Это, например, такие функции, как Tag Completion, Tag Editors и Tag Insight. Они существенно облегчают редактирование тегов и их атрибутов. Так же есть заготовки кода (Code Snippets).

HomeSite легко интегрируется со средствами управления исходным кодом и системами управления проектами, а также предлагает широкие возможности работы с протоколом FTP, благодаря чему мы сможем быстро выполнить развертывание сайта и организовать его эффективное обслуживание [12].

  1. Microsoft FrontPage

Является наиболее популярным HTML-редактором на рынке, главным образом за счёт популярности пакета Microsoft Office. В программе предлагаются мощные функции и привлекательный пакет программ, включая Image Composer, который предназначен для создания изображений (Приложение В). Во FrontPage также содержатся WEB-компоненты, необходимые для добавления интерактивных свойств web-узлу. Microsoft FrontPage является классическим WYSIWYG-редактором, в котором, однако, присутствует возможность ручной правки кода [14].

В программе имеется три режима работы с документом: Normal, HTML и Preview.

В режиме Normal, web-страницы представляют собой обычный текстовый файл с возможностью редактирования всех элементов - от текста до картинок.

В режиме HTML осуществляется подсветка синтаксиса, однако довольно посредственную - дескрипторы выделены, синим цветом, все остальное - черного цвета.

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

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

Минусы: небольшой набор инструментов разработки, невозможность отдельного приобретения программы. Microsoft FrontPage неплохо подойдет в качестве HTML-редактора на первое время, однако с ростом потребностей его возможностей может не хватить. Есть и обратная сторона медали - сложность и громоздкость полученного кода, что естественно, сказывается на конечном размере документа. Также в дальнейшем будет весьма сложно вносить изменения в подобный документ. Но это скорее недостаток не конкретного продукта, а практически всех WYSIWYG-редакторов. Web-компоненты работают только в том случае, если на web-сервере, который используется, присутствуют соответствующие им программы.

  1. NetBeans – среда разработки, которая красиво и понятно подсвечивает код, позволяя оценить его корректность. Программа умеет определять, какая строчка делает код некорректным. Самостоятельно делает отступы и интервалы. Является полностью кроссплатформенным приложением с постоянным расширением поддерживаемых «осей» [15].
  2. Eclipse - одно из самых популярных решений в арсенале веб-разработчика. Как и NetBeans - полностью бесплатна. Считается одной из самых быстрых и интуитивно понятных сред разработки для веб-приложений. Последнее обновление на Eclipse было выпущено в июне 2018 года. Уже несколько версий подряд Эклипс выходит и в полностью русифицированной версии.

IDE поддерживает создание не только веб-приложений, но и мобильного программного обеспечения. Это значительно расширяет возможность программиста: большинство площадок теперь имеют нативное приложение. Среди осей, на которых может работать Eclipse значится Android - разработка и тестирование происходит на одной платформе. Zend Studio - одно из приложений Eclipse. Позволяет создавать веб-приложения на основе языка PHP [11].

  1. Visual Studio – программа имеет целый набор инструментов исключительно для веб-разработки. Позволяет создать все: от полномасштабной компьютерной игры до калькулятора на веб-странице в рамках одного приложения. Кроме цены, негативным моментом можно назвать узкий ряд операционных систем, с которыми может работать Visual Studio: пока это только Windows и Mac.
  2. Решение в «облаках»

Хоть перенесение в онлайн разработки веб-сайта считается жертвой безопасностью, но разработчики давно облюбовали эти средства.

  1. Cloud9 - это едва ли не единственная среда разработки, которая полностью написана на JavaScript, быстрая и стабильная в рамках своей функциональности [14].

Преимуществами является - поддержка остальных популярных языков, взаимодействием с Git - системой контроля версий.

  1. Koding – имеет широкий функционал и поддержку большинства традиционных веб-языков. Недостатком является медлительность среды разработки, ей не хватает оптимизации и толкового UX. Постоянно выскакивают окна, которые невозможно закрыть. Интуитивно понятный редактор кода - отсутствует. Добавление собственного ftp-сервера невозможно. Но есть функции для совместной разработки: есть инструмент для программирования в паре. Существует бесплатная версия, но этот пакет слишком мал для полноценной разработки. Несмотря на все недостатки Koding, он является прогрессивным продуктом [12].

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

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

Фреймворк - это некая среда разработки для программистов, где есть готовая инфраструктура и ряд готовых функций со стандартными решениями типичных задач. На каждом языке есть много разных фреймворков. Есть как общие, которые создавались для разработки любых решений, так и специализированных, под узкие задачи. Например, Sylius - специализированный E-commerce фреймворк на основе Symfony. Также есть те, на которых делаются большие и сложные решения, а другие для этого не предназначены.

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

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

  1. PHP: Symfony, Laravel
  2. Python: Django
  3. Ruby: Ruby On Rails
  4. Java: Spring
  5. C#: .NET
  6. JS: Node.js, AngularJS

Больше всего фреймворков на PHP и на этом языке есть, из чего выбирать, но действительно функциональных не так много. Меньше на других языках, а на некоторых действительно качественных фреймворков вообще всего один, как у языка Ruby. У Java вообще очень много разных фреймворков для разных целей, и не только для сайтов. Все эти фреймворки ежегодно развиваются, выходят все новые и новые версии, одни фреймворки обгоняют другие. Например, Laravel только в последние несколько лет вышел на первое место по популярности, хотя самые сложные сайты до сих пор делаются на Symfony. .NET и Node.js - это целые самостоятельные платформы, которые базируются на определенных языках, но имеют очень широкие возможности [9].

CMS и CMF - это готовое программное обеспечение, которое нужно только настроить, реже - дописать / переписать какую-то из частей. Таких решений очень много на любом языке, но исторически так сложилось, что в основном все популярные CMS сделаны на PHP. Причина в развитие языков, раньше простые сайты, для которых и создавались CMS, писались на PHP. Раньше, когда CMS почти не было, были скрипты - отдельные готовые части разных сайтов. Позже эти скрипты собирали в коробочный продукт, который был призван решить потребности 90% простых сайтов. Так и получилось, что основные CMS сделаны на PHP. Сегодня CMS на других языках развиваются слабо потому, что уже есть сильные конкуренты на PHP, а простому сайту язык не играет большой роли, поэтому все смотрят на возможности этих готовых продуктов.

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

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

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

Именно в работе с CMS возникает больше всего непонимание среди конечных заказчиков таких решений. Любая CMS - это тонны готового программного кода, на все случае жизни. В коробочной поставке идут десятки и сотни модулей. Все это очень сильно ограничивает специалистов. Такие решения сильно «тормозят», они абсолютно не гибкие, их очень легко взломать, особенно бесплатные CMS. Еще часто взламывают CMS через модули сторонних разработчиков, в которых есть критические уязвимости, потому что мы никогда не знаем, какого уровня программист писал тот или иной модуль. То есть любая CMS не рассчитана для большого и сложного сайта. Она не могут выдержать большие нагрузки. Это решение не безопасно[5].

  1. WordPress - некогда блоговый движок, сейчас на ней делаются почти любые сайты, включая магазины. Одна из самых популярных CMS в мире, есть примеры довольно посещаемых сайтов. На ней часто делают информационные сайты, в том числе разные СМИ. Данная система бесплатная.
  2. Joomla! - CMS общего назначения. Качеством особо не отличается, на ней делают очень маленькие сайты и обычно дешевле всех других вариантов, так как именно с этой CMS начинают учиться многие начинающие программисты. Данная система бесплатная.
  3. Drupal - это уже CMF для общего назначения, с недавнего времени поставляется со встроенных фреймворком Symfony. Довольно мощная, на ней есть известные сайты, например, официальный сайт Белого Дома. Данная система бесплатная.
  4. Magento – это самая популярная система управления для интернет-магазинов в мире. Довольно мощная и сложная система, используется в основном на западе.
  5. PrestaShop - одна из самых популярных CMS для магазинов в мире. Тоже довольно мощная система, используют в основном на западе. Данная система бесплатная.
  6. OpenCart - еще одна популярная система для интернет-магазинов, но ее больше используют в России, чем на Западе в основном для маленьких и несложных магазинов. Данная система бесплатная.
  7. 1С-Битрикс - очень распиаренная CMS общего назначения. Имеет очень широкие возможности. На ней часто пытаются делать большие и сложные сайты, а после определенного порога в посещаемости переписывают их на других технологиях. Многие считают, что только эта CMS может интегрироваться с 1С, что не является правдой. Данная система платная [9].

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

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

Есть специальные каталоги шаблонов: TemplateMonster, ThemeForest. Часто встречаются онлайн-конструкторы, в том числе тематические: Wix, PageCloud.

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

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

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

  1. Размер и тип проекта;
  2. Сложность проекта;
  3. Скорость разработки;
  4. Стоимость специалистов;
  5. Доступность специалистов;
  6. Доступные инструменты разработки;
  7. Наличие готовых решений;
  8. Гибкость решения;
  9. Наличие широкого сообщества;
  10. Отказоустойчивость решения;
  11. Тренд его развития;
  12. Наличие подробной документации;
  13. Стоимость поддержки;
  14. Требования к нагрузкам;
  15. Требования к безопасности;
  16. Кроссплатформенность;
  17. Возможности интеграции с другими решениями [14].

Выбирая технологию по таким критериям, можно добиться объективного выбора, также сэкономить время и деньги.

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

Проекты бывают разного уровня сложности:

  1. Простые (визитки, лендинги, простые интернет-магазины, простые приложения) - такие решения обычно делаются на тематических коробочных решениях, CMS или шаблонах.
  2. Средние (сложные интернет-магазины и маркетплейсы, порталы национального масштаба, разнообразные сервисы, продвинутые приложения) - такие решения обычно делаются на фреимворках.
  3. Сложные (огромные порталы, социальные сети, инновационные и нетиповые решения) - ядро таких проектов обычно разрабатываются на чистом (нативном) языке программирования.
  4. По тематике различают: интернет-магазины, доски объявлений, социальные сети. Для большинства популярных тематических решений уже давно есть коробочные продукты и правильнее будет выбрать именно их [5].

В технологиях можно выделить 3 уровня абстракции:

  1. Чистый язык - это материал, из которого можно сделать все, что угодно. Ограничивают нас только возможности языка. На чистом языке сделаны все крупнейшие сайты мира с посещаемостью в сотни миллионов и миллиарды пользователей, такие как: Instagram, YouTube, Pinterest, Tumblr, Dropbox, Twitter, Facebook, Amazon, Digg, LinkedIn и другие. Более того, крупнейшие проекты в мире даже создают новые технологии для себя, так как уже существующие их не устраивают.
  2. Фреимворк - это некая среда разработки для программиста с готовыми правилами и инструментами. Фреимворк с одной стороны помогает и ускоряет разработку, а с другой накладывает определенные ограничения. На фреимворках делаются проекты средней сложности с посещаемостью в миллионы.
  3. CMS - это уже готовое решения, конструктор, в котором мы по частям собираем нужный проект. Его скорее не программируют, а настраивают. Ограничений тут огромное количество, выйти за границы коробки сложно и неэффективно. На CMS делаются простые сайты с посещаемостью до миллиона пользователей в месяц.

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

Сегодня есть огромное количество разных языков программирования, на которых делают сайты. И, более того, на всех популярных языках есть примеры огромных сайтов. Если 10 лет назад, говоря о технологиях больших сайтов, все говорили преимущественно про Java, то сегодня это может быть почти любой язык и утверждать, что сайты делаются на каком-то конкретном языке - стереотип. Это связанно с развитием самих языков, за последнее десятилетие многие сильно продвинулись в развитии и получили широкие возможности. Конечно, каждый язык чем-то отличается и при выборе следует руководствоваться объективными критериями с оглядкой на задачи проекта.

На чистом языке, без использования фреимворков и коробочных решений, пишутся огромные проекты с повышенными требованиями по гибкости, нагрузкам и безопасности. Для таких огромных проектов часто бюджет не играет такого значения, как эффективность. Чем больше проект, тем больше будет требований по гибкости и нагрузкам, а значит, проще писать все с нуля, выделяя на это лучших специалистов, чем если брать какие-то готовые решения, которые непонятно кем писались и непонятно какие проблемы в них скрыты. К примеру, когда речь про небольшой проект с посещаемостью в 10 тыс. человек в день, то будет дешевле сделать его на CMS, которая будет потреблять в 3 раза больше ресурсов сервера, поставить дополнительный сервер за 50$ / мес. и оно будет работать. Когда рассматривают сайт с посещаемостью в 100 млн. пользователей в день, стоимость добавления серверов будет очень дорогой, поэтому проще и дешевле вложить деньги в разработку решения на чистом языке, которое будет оптимальным именно для конкретного проекта.

Чем больше проект, тем больше стек технологий, который в нем используется. В огромных порталах может использоваться сразу несколько языков программирования. Часто один язык может хорошо делать одну задачу, а другой - другую. Такие проекты могут быть на столько огромными, что его части могут работать на разных серверах, с разными доменами (поддоменами) и разными технологиями. Необходимо помнить, что далеко не все технологии совместимы. Самый яркий пример использования разных технологий - Google. Он на столько большой, что разные его части написаны на C/C++, Java, Python, JS и других языках. Более того, Google активно создает новые технологии, как, например, популярный сейчас AngularJS.

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

  1. PHP: Facebook, Вконтакте, КиноПоиск;
  2. Python: Instagram, Pinterest, Reddit;
  3. Ruby: 500px, Groupon, Airbnb;
  4. Java: Ebay, Amazon, Alibaba;
  5. C#: Guru, Stack Overflow, Bank of America;
  6. JS: LinkedIn, Walmart, PayPal.
  7. Эти примеры отлично показывают, что большие сайты могут быть написаны на разных языках. Почти все большие сайты используются в основе один язык и еще несколько дополнительных. Тоже самое с базами данных: для одних задач могут использоваться реляционные, а для других не реляционные базы, и все это органично сочетается в рамках одного проекта [5].

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

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

Самым дорогим разработчиком является Java-разработчики. PHP разработчики всегда были самыми дешевым, также на рынке большое предложение специалистов на рынке. Scala как один из новейших и трендовых языков, по этой причине зарплаты веб-разработчиков этого языке достаточно высокие. Еще дорогие JS-разработчики, это связанно с бурным ростом JS в последние годы и растущей популярностью Node.js, а также AngularJS.

Таким образом, если экономить - то PHP специалисты дешевые, а комьюнити большое. Если выбирать самое качественное - то Scala специалисты, которых называют будущем веб-разработки. Но, правда, найти специалистов почти невозможно и наработок просто нет.

Еще важным параметром будет скорость разработки. Ведь важна не только зарплата программистов, но и скорость разработки. Если не учитывать уже существующие наработки, то одним из самых быстрых в разработке будет Python и Ruby, а самый медленный - Java. По этой причине за последние 10 лет почти не вышло новых мегапроектов на Java, зато вышло много проектов на Python.

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

Есть всевозможные исследования, которые могут подсказать некоторые статистические выкладки. Например, исследование TIOBE Index показывает интересную статистику (рис. 1).

Рис. 1. Статистика разработки проектов на разных языках в России, исследование TIOBE Index в 2018 году [5]

По результатам разных исследований можно выделить явных лидеров по росту - это JS (версия ES6 и выше) и мультипарадигмальные языки, в частности Scala. Именно Scala считается преемником языка Java и во многом на него похож. Также не плохо себя показывает Python.

Антитренды держат ряд старых языков и PHP. В седьмой версии PHP, исправлены многие серьезные недостатки. Еще многие большие проекты переписываются с Ruby на другие языки, тоже некий антитренд.

Для иллюстрации посмотрим, каких специалистов не хватает в США (рис. 2).

Рис. 2. Статистика разработки проектов на разных языках в США в 2018 году [5]

Данные статистики в США можно считать реальной картиной трендов, которые есть в России.

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

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

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

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

Выбор по критериям средств разработки web-приложения «Планировщик маршрута по достопримечательностям»

Работа над веб-приложением включает несколько этапов, которые соответствует этапам жизненного цикла:

- определение требований к приложению;

- проектирование приложения;

- разработка;

- тестирование проекта;

- внедрение проекта;

- сопровождение проекта.

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

Для разработки данного приложения потребуется:

- интегрированная среда разработки или редактор-кода;

- язык гипертекстовой разметки HTML;

- каскадные таблицы стилей CSS;

- сценарный язык программирования JavaScript;

- набор библиотек и компонентов для упрощения разработки фреймворк.

При разработке выбираем «легкий» редактор-кода, а не интегрированную среду разработки. Так как подавляющая часть ИСР - платные, потребляют много ресурсов ПК, чрезмерный функционал, для использования требуют достаточно времени в обучение.

Сравниваю редакторы кода, которые можно использовать для разработки приложения по следующим критериям (табл. 1):

- стоимость;

- наличие русифицированной версии;

- наличие обновлений;

- используемая платформа;

- скорость работы;

- функциональность.

Таблица 1

Сравнительная характеристика редакторов кода, которые можно использоваться для разработки приложения

Критерий/Название

Sublime Text

Atom

Visual Studio Code

Стоимость

Платный

Бесплатный текстовый редактор с открытым исходным кодом

Бесплатный кроссплатформенный редактор исходного кода

Русифицированная версия

-

-

+

Обновление

Нечасто

Активное обновление

Активное обновление

Платформы

Microsoft Windows, macOS и Linux

OSX, Windows, Linux, FreeBSD

Linux x86_64, OS X 10.9 или новее, Windows 7 или новее

Скорость работы (быстродействие)

Быстрый

Медленный

Использует много памяти

Быстрый

Функциональность

Недостаточно, требуются дополнительные расширения

Недостаточно, требуются дополнительные расширения

Достаточно близко к IDE (интегрированная среда разработки)

Таким образом, для разработки нашего приложения был выбран редактор кода Visual Studio Code. Это кроссплатформенный редактор исходного кода, поддерживающий базовые возможности интегрированной среды разработки, созданный в Microsoft. Позиционируется как «легкий» редактор кода для кроссплатформенной разработки веб- и облачных приложений. Visual Studio Code распространяется бесплатно, разрабатывается как программное обеспечение с открытым исходным кодом, и доступен в версиях для платформ Windows, Linux и OS X. В редакторе присутствуют встроенный отладчик, инструменты для работы с Git и средства рефакторинга, навигации по коду, автодополнения типовых конструкций и контекстной подсказки. Выбор редактора-кода, во основном индивидуален и зачастую зависит от проекта и разработчика в целом.

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

В приложение реализованы с помощью библиотек и вспомогательных инструментов следующие функции:

- работа с картой – Google Maps API Стандартный;

- подсказки мест ­ Google Places API Web Service Стандартный;

- Drag-and-drop – jquery ui;

- маркер на карте – Google Places API Стандартный;

- построение маршрута – Google Directions API Стандартный.

Работу веб-приложения для планирования маршрута по достопримечательностям можно продемонстрировать на основе объектно-ориентированного подхода, языка UML. Моделирование с помощью UML предполагает построение диаграммы, которая позволяет продемонстрировать возможности приложения (рис. 3).

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

Пользователь выбирает город и количество дней из предложенного списка. Далее приложение отображает достопримечательности данного города в списке и на карте, а также дни (рис 4).

Рис. 4. Отображение достопримечательностей

Пользователь добавляет («перетаскивает») достопримечательности из списка для каждого дня своей поездки. Далее он выбирает день и видит примерный маршрут рис. 5).

Рис. 5. Построение маршрутных линий

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

Заключение

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

Исходя из цели были решены следующие задачи:

1. Рассмотрена сущность понятия web-приложение и их классификацию;

2. Ознакомились с существующими средствами разработки web-приложений: языки программирования, среды разработки, фреймворки и платформы;

3. Определены объективные критерии выбора средств разработки WEB-приложений;

4. Рассмотрен процесс выбора по критериям средств разработки для web-приложения «Планировщик маршрута по достопримечательностям».

Библиография

  1. Веллинг, Л. Разработка Web-приложений с помощью PHP и MySQL / Л. Веллинг, Л. Томсон. - М.: Вильямс, 2015. - 848 c.
  2. Гринберг, М. Разработка веб-приложений с использованием Flask на языке Python / М. Гринберг. - М.: ДМК, 2016. - 272 c.
  3. Дари, К. AJAX и PHP. Разработка динамических веб-приложений / К. Дари, Б. Бринзаре и др. - М.: Символ, 2015. - 336 c.
  4. Дари, К. AJAX и PHP. Разработка динамических веб-приложений / К. Дари, Б. Бринзаре, Ф. Черчез-Тоза, М. Бусика. - СПб.: Символ-плюс, 2015. - 336 с.
  5. Как выбрать технологию для большого и не очень большого веб-проекта [Электронный ресурс] – Режим доступа: https://tproger.ru/articles/which-technology-to-choose/
  6. Козловский, П. Разработка веб-приложений с использованием AngularJS / П. Козловский, П. Дарвин. - М.: ДМК, 2015. - 394 c.
  7. Колисниченко, Д.Н. PHP и MySQL. Разработка Web-приложений / Д.Н. Колисниченко. - СПб.: БХВ-Петербург, 2015. - 560 c.
  8. Колисниченко, Д.Н. PHP и MySQL. Разработка веб-приложений. Профессиональное программирование / Д.Н. Колисниченко. - СПб.: BHV, 2015. - 592 c.
  9. Инструменты для веб-разработки: как выбрать IDE? [Электронный ресурс] – Режим доступа: https://webformyself.com/instrumenty-dlya-veb-razrabotki-kak-vybrat-ide/
  10. Машнин, Т.С. Google App Engine Java и Google Web Toolkit: разработка Web-приложений / Т.С. Машнин. - СПб.: BHV, 2015. - 352 c.
  11. Машнин, Т.С. Eclipse: разработка RCP-, Web-, Ajax- и Android-приложений на Java / Т.С. Машнин. - СПб.: BHV, 2015. - 384 c.
  12. Миковски, М.С. Разработка одностраничных веб-приложений / М.С. Миковски, Д.К. Пауэлл. - М.: ДМК, 2015. - 512 c.
  13. Сергеенко, С.В. Разработка и проектирование Web-приложений Oracle Developer / С.В. Сергеенко. - М.: Интуит, 2015. - 456 c.
  14. Финкэнон, Д. Flash-реклама. Разработка микросайтов, рекламных игр и фирменных приложений с помощью Adobe Flash / Д. Финкэнон. - М.: Рид Групп, 2015. - 288 c.
  15. Хеффельфингер, Д. Разработка приложений Java EE 6 в NetBeans 7 / Д. Хеффельфингер. - М.: ДМК Пресс, 2015. - 330 c.
  16. Чан, У. Django. Разработка веб-приложений на Python / У. Чан, П. Биссекс, Д. Форсье. - СПб.: Символ-плюс, 2015. - 456 c.
  17. Чедвик, Д. ASP.NET 4: разработка реальных веб-приложений с помощью ASP.NET MVC / Д. Чедвик. - М.: Вильямс, 2015. - 432 c.