А.А. Можайский, А.Т.Тисецкий,
Научный руководитель: И. В. Евдокимов, канд. техн. наук, доцент
Сибирский федеральный университет (г. Красноярск, РФ)
К ВОПРОСУ О СВОБОДНОМ ИСПОЛЬЗОВАНИИ СРЕД РАЗРАБОТКИ
ПРОГРАМНОГО ОБЕСПЕЧЕНИЯ
Средства разработки в наше время
В наше время для работы разработчика программного обеспечения
доступно множество различных средств разработки программного обеспечения.
Подобные средства бывают свободными, то есть бесплатными, и платными. К
примеру, существуют интегрированные среды разработки, которые являются
комплексами программных средств, используемый программистами для
разработки программного обеспечения.
Наиболее популярные и бесплатные из них - Aptana Studio, Komodo Edit,
Code::Blocks, Aptana RadRails, Eclipse, CodeLite, Visual Studio Community,
JetBrain PyCharm Community, NetBeans.
Также некоторые компании, например, JetBrains, autodesk, microsoft, adobe
предоставляют учебную лицензию, которая имеет такой же функционал, как и
полная коммерческая версия, но при этом имеет ограничение, что её нельзя
использовать в коммерческих целях [3].
По подробнее будет рассказано о нескольких из них, которые были
использованы при разработке.
Что было использовано
Microsoft Visual Studio это линейка продуктов компании Microsoft,
включающих интегрированную среду разработки программного обеспечения и
ряд
других
инструментальных
средств.
Данные
продукты
позволяют
разрабатывать как консольные приложения, так и приложения с графическим
интерфейсом, в том числе с поддержкой технологии Windows Forms, а также вебсайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах
для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE,
.NET Framework, Xbox, Windows Phone .NET Compact Framework и Silverlight.
Visual Studio включает в себя редактор исходного кода с поддержкой
технологии IntelliSense и возможностью простейшего рефакторинга кода.
Встроенный отладчик может работать как отладчик уровня исходного кода, так
и отладчик машинного уровня. Остальные встраиваемые инструменты
включают в себя редактор форм для упрощения создания графического
интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы
данных. Visual Studio позволяет создавать и подключать сторонние дополнения
(плагины) для расширения функциональности практически на каждом уровне,
включая добавление поддержки систем контроля версий исходного кода (как,
например, Subversion и Visual SourceSafe), добавление новых наборов
инструментов (например, для редактирования и визуального проектирования
кода
на
предметно-ориентированных
языках
программирования)
или
инструментов для прочих аспектов процесса разработки программного
обеспечения (например, клиент Team Explorer для работы с Team Foundation
Server) [1].
JetBrain PyCharm Community Edition — интегрированная среда разработки
для языка программирования Python. Предоставляет средства для анализа кода,
графический отладчик, инструмент для запуска юнит-тестов. PyCharm
разработана компанией JetBrains на основе IntelliJ IDEA [2].
Помимо этого, был использован GitLab для хранения репозитория и
контроля версий. А также для возможности деплоя серверной части и
автоматической сборки проекта.
Проект
В образовательных целях было принято решение создать проект
мессенджера, чтобы разобраться в этой технологии. При разработке были
использованы средства Microsoft Visual Studio Community и JetBrains PyCharm
Education.
Проект представлял собой мессенджер, то есть средство передачи
сообщений между пользователями. Изначально весь проект планировался на
языке программирования C# поэтому изначальным средством разработки было
выбрано VS2015. Это интегрированное средство разработки (ИСР) было создано
компанией Microsoft, как и C#, так что должно было идеально подходить для
этого.
На начальном этапе разработки были созданы основные классы и методы
взаимодействия между ними отдельно для клиента и для сервера. Были
применены принципы создания общей структуры программного средства [4].
В клиентской части основная работа была в форме. Изначально были
выделены методы приема и отправки сообщений. Серверная часть была
представлена классами DBController для взаимодействия с базой данных,
ClientObject - класс для взаимодействия с клиентом и Program - основной класс
программы, в котором была определена точка входа. Хочется отметить удобство
создания классов и методов в VS. Класс создается в два клика, либо же можно
настроить комбинацию клавиш для еще большей скорости разработки. Каждый
класс создается в отдельном файле '.cs' и сразу попадает в общую область
видимости. Создание методов также упрощено благодаря IntelliSense. Эта
технология автодополнения названий. Т.Е. если ввести первые три буквы
названия переменной, функции, класса или ключевого слова, то Intellisense
предложит возможные варианты с небольшим описанием (взятым из
документации) для каждого варианта. Кроме этого, IntelliSense обращает
внимание на контекст, что помогает избегать ошибок в некоторых случаях [5].
После создание каркаса приложения начался этап создания его главного
функционала - клиент-серверного взаимодействия. Были описаны методы для
приема и отправки сообщений на клиенте, а также, на стороне сервера, ожидания
и подключения новых клиентов, обработка входящих сообщений и пересылка их
пользователям-адресатам. На этом этапе разработки часто возникали ошибки в
логике программы, но благодаря отладочному механизму VS они были легко
преодолены. Например, неожиданной ошибкой являлось то, что сервер не
реагировал на системные сообщения клиента (запрос авторизации). Для
устранения этой ошибки был запущен отладочный режим и установлен брейкпоинт (точка остановки) на строку получения сообщения. Когда программа
дошла до выполнения этой строки, работа программы была приостановлена.
Проверка входящего сообщения показала, что сообщение является верным.
Таким образом, стало понятно, что ошибка находится на стороне сервера. После
непродолжительного поиска ошибки, оказалось, что сервер неправильно
определял адресата сообщения, включая в него также и символ-разделитель ('%').
После исправления этого недочета, и программа стала работать корректно. Если
бы средство отладки не позволяло узнавать состояние программы в любой
момент времени, пришлось бы извлекать состояние сервера в каждый момент
времени иным образом, например, вести логи. Однако, в таком случае может
возникнуть засорение логов, поскольку не всегда ясно, какая именно часть
программы ведет себя непредсказуемо и придется вести слежение за большим
количеством переменных. Поэтому средство отладки VS является отличным
решением этой проблемы.
Также для клиента необходимо было создать оконный интерфейс,
поскольку консольный был бы весьма запутанным и неудобным, да и вообще
использование оконного интерфейса предпочтительно для клиентской части. В
качестве технологии было использовано Windows Forms. Visual Studio
предлагает удобный интерфейс создания формы - так называемый Form Designer.
Это позволяет создавать формы в Drag'n'Drop режиме, что очень ускоряет
разработку. В целом, на создание самой формы, было потрачено всего пару
минут. Если бы всё писалось вручную, было бы потрачено на порядок больше
времени.
Когда проект стал относительно большим, появилась необходимость
контроля версий, чтобы при выборе неправильных методов можно было быстро
и безболезненно откатить проект до работающей версии. В качестве системы
контроля версий был выбран Git. Это позволило создавать различные пути
решения одной проблемы и затем выбирать наилучший. Например, в
определенный момент встал вопрос о том, как сообщать пользователю о том, что
пользователь, которому он пишет находится вне сети. Стоял выбор между тем,
чтобы писать сообщение об этом от имени адресата или отправлять системное
сообщение. Протестировав был сделан вывод, что сообщения от сервера намного
более
гибкие,
так
что
выбор
был
сделан
в
их
пользу.
Также, появилась необходимость использования удаленного репозитория, так
как работа велась с нескольких устройств. Платформой для хранения
репозитория был выбран GitLab. Был выбран именно он, потому что он
предусматривал возможность использования беспрерывной интеграции, а
серверная часть проекта могла бы в будущем быть вынесена на настоящий
сервер. Тогда можно было бы настроить беспрерывный деплой серверной части
при каждом обновлении определенной (выбранной специально для этого) ветки.
Так что использование GitLab одновременно решило две проблемы: хранение
кода на удаленном репозитории и возможность развертывания проекта на
сервере.
Задумавшись о возможности развертывания проекта на сервере, стало
понятно, что нужно менять язык серверной части проекта, так как на серверах
как правило установлен Linux [6], который не всегда корректно работает с
языком C#. Поэтому стало очевидным, что язык серверной части надо менять. В
качестве нового серверного языка был выбран Python как язык быстрой
разработки. Начались работы по переводу серверной части на Python. Для
работы с ним нужно было выбрать другую ИСР, которая была бы заточена по
него. Был выбран бесплатный JetBrains PyCharm Community. Но Community
версия не предоставляет всех удобств, поэтому было принято решение
использовать студенческую версию этого продукта.
Для получения студенческой версии, было необходимо отправить заявку
на получение и прикрепить к ней скан студенческого билета. Edu версия
включает в себя все возможности полной версии, как, например, возможность
работы с базами данных, а также дополнительные обучающие модули, которые
более внимательно сканировали код и выявляли неточности/ошибки в коде [7].
Вывод
В итоге было разработано приложение мессенджер, при помощи
свободных сред программирования Visual Studio Community и JetBrain PyCharm
Community Edition. Код приложения размещен в открытый доступ в Git Lab [8].
На этом примере можно убедиться в том, что свободные среды разработки
программного обеспечения позволяют молодым специалистам обучиться
основам программирования и создавать маленькие проекты без затрат на
покупку лицензии. Это способствует появлению новых молодых специалистов в
IT сфере и развитию самой IT сферы. Хотя крупные коммерческие проекты
требуют использования в них платных средств разработки ПО, все же
использование свободных сред разработки является хорошей возможностью для
новых команд разработчиков, их выходу на рынок и созданию малобюджетных
проектов. Так же производители подобных средств всячески поддерживают
разработчиков и представляют такие предложения как Startup Discount Plan от
Jeat Brains [9].
Ссылки на источники
1.
Wikipedia Microsoft Visual Studio — [Электронный ресурс] —Режим доступа. —
URL: https://ru.wikipedia.org/wiki/Microsoft_Visual_Studio. (дата обращения: 12.05.2017).
2.
Wikipedia PyCharm— [Электронный ресурс] —Режим доступа. —URL:
https://ru.wikipedia.org/wiki/PyCharm (дата обращения: 12.05.2017).
3.
Участие в BizSpark — [Электронный ресурс] —Режим доступа. —URL:
https://www.microsoft.com/ru-ru/ms-start/bizspark.aspx (дата обращения: 12.05.2017).
4.
Евдокимов И.В. Адаптация стандартов програмных средств к проектам в
области информационных технологий///Труды Братского государственного университета.
Серия: Экономика и управление.
5.
Использование технологии IntelliSense — [Электронный ресурс] —Режим
доступа. —URL: https://msdn.microsoft.com/ru-ru/library/hcw1s69b.aspx (дата обращения:
12.05.2017).
6.
Free for students — [Электронный ресурс] —Режим доступа. —URL:
https://www.jetbrains.com/student/ (дата обращения: 12.05.2017).
7. Рейтинг серверных операционных систем — [Электронный ресурс] —Режим доступа.
—URL: http://tagline.ru/server-operating-systems-rating/ (дата обращения: 12.05.2017).
8.
Messenger
—
[Электронный
ресурс]
—Режим
доступа.
—URL:
https://gitlab.com/mogaiskii/messenger (дата обращения: 12.05.2017).
9.
Startup Discount Plan — [Электронный ресурс] —Режим доступа. —URL:
https://www.jetbrains.com/shop/eform/startup (дата обращения: 12.05.2017).
Отзывы:
Авторизуйтесь, чтобы оставить отзывБесплатное распространение ПО является признаком свободной лицензии, но не является достаточным условием свободного ПО. В частности перечисленные среды разработки в большинстве своем (если не все) не являются свободными, т.к. не дают доступа к исходному коду, их нельзя модифицировать и распространять как исходный вариант, так и измененные версии. Исходя из этого главный тезис статьи, что в ходе разработки использовались исключительно инструменты распространяемые по свободной лицензии является неверным.