- •Глава III. Технологический процесс разработки и отладки программы
- •3.1 Обоснование описания технологического процесса разработки и отладки программы
- •3.2 Описание технологического процесса разработки и отладки программы
- •3.2.1 Постановка задачи
- •3.2.2 Изучение предметной области
- •3.2.3 Определение трудоёмкости разработки
- •3.2.4 Проектирование алгоритмов программы
- •3.2.5 Выбор языка программирования, операционной системы и сопутствующего инструментария
- •3.2.5.1 Обоснование выбора языка программирования
- •3.2.5.2 Обоснование выбора операционной системы
- •3.2.5.3 Обоснование выбора среды разработки
- •3.2.5.4 Обоснование выбора системы контроля версий
- •3.2.6 Выбор вспомогательного программного обеспечения
- •3.2.7 Написание программы
- •3.2.8 Тестирование и отладка программы
- •3.2.9 Оптимизация программы
- •3.2.10 Написание программной документации
- •3.2.11 Сдача в эксплуатацию и сопровождение
- •3.3 Схемы технологического процесса разработки и отладки программы
- •3.4 Выводы
3.2.5.2 Обоснование выбора операционной системы
Данная диссертация предполагает разработку автоматизированного решения для тестирования локальных приложений в UNIX-подобных операционных системах, поэтому в качестве ОС, используемой для разработки такого решения целесообразно будет выбрать один из дистрибутивов GNU/Linux.
GNU/Linux — общее название UNIX-подобных операционных систем, основанных на одноимённом ядре. Ядро Linux разрабатывается и распространяется в соответствии с моделью разработки свободного и открытого программного обеспечения. Поэтому общее название не подразумевает какой-либо единой «официальной» комплектации Linux; они распространяются в основном бесплатно в виде различных готовых дистрибутивов, имеющих свой набор прикладных программ и уже настроенных под конкретные нужды пользователя.
Наиболее популярными дистрибутивами являются: deb-based (Debian, Mint, Ubuntu), RPM-based (RedHat, Fedora, Mageia, OpenSUSE), source-based (Slackware, Gentoo).
В качестве операционной системы для разработки фаззера локальных приложений может выступить дистрибутив Debian GNU/Linux 7.0 («Wheezy»), поскольку он обладает наиболее широкой пакетной базой (ОС содержит весь необходимый сопутствующий разработке инструментарий) и является одним из наиболее стабильных дистрибутивов GNU/Linux.
3.2.5.3 Обоснование выбора среды разработки
На сегодняшний день наиболее функциональной средой разработки для языка Python является PyCharm IDE. PyCharm имеет несколько вариантов лицензий, которые отличаются функциональностью, стоимостью и условиями использования.
Возможности Pycharm IDE:
Статический анализ кода, подсветка синтаксиса и ошибок.
Навигация по проекту и исходному коду: отображение файловой структуры проекта, быстрый переход между файлами, классами, методами и использованиями методов.
Рефакторинг: переименование, извлечение метода, введение переменной, введение константы, подъём и спуск метода и т. д.
Инструменты для веб-разработки с использованием фреймворка Django.
Встроенный отладчик для Python.
Встроенные инструменты для юнит-тестирования.
Разработка с использованием Google App Engine.
Поддержка систем контроля версий: общий пользовательский интерфейс для Mercurial, Git, Subversion, Perforce и CVS с поддержкой списков изменений и слияния.
В рамках диссертации предполагается использование версии PyCharm Community Edition. Данная версия отличается урезанным функционалом, однако распространяется свободно. Полный функционал версии PyCharm Professional Edition будет избыточным в контексте разработки фаззера, поскольку для данной задачи достаточно возможностей стандартной библиотеки языка Python.
3.2.5.4 Обоснование выбора системы контроля версий
Система управления версиями — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.
Такие системы наиболее широко используются при разработке программного обеспечения для хранения исходных кодов разрабатываемой программы. Однако они могут с успехом применяться и в других областях, в которых ведётся работа с большим количеством непрерывно изменяющихся электронных документов.
Для хранения исходных кодов фаззера предполагается использование бесплатного сетевого репозитория Bitbucket. Bitbucket — веб-сервис для хостинга проектов и их совместной разработки, основанный на системе контроля версий Mercurial и Git. По назначению и предлагаемым функциям аналогичен GitHub (однако GitHub не предоставляет бесплатные «закрытые» репозитории, в отличие от Bitbucket), который поддерживает Git и Subversion.
Так как Bitbucket поддерживает только системы контроля версий Git и Mercurial, соответственно, выбор стоит между этими двумя системами. Поскольку разница между двумя системами в рамках разработки небольшого проекта не столь существенна, и автор уже имеет опыт работы с системой Git, в качестве системы контроля версий была выбрана Git.
Система Git спроектирована как набор программ, специально разработанных с учётом их использования в скриптах. Это позволяет удобно создавать специализированные системы контроля версий на базе Git или пользовательские интерфейсы.
Git поддерживает быстрое разделение и слияние версий, включает инструменты для визуализации и навигации по нелинейной истории разработки. Как и Darcs, BitKeeper, Mercurial, Bazaar и Monotone, Git предоставляет каждому разработчику локальную копию всей истории разработки, изменения копируются из одного репозитория в другой.
Удалённый доступ к репозиториям Git обеспечивается git-daemon, SSH- или HTTP-сервером. TCP-сервис git-daemon входит в дистрибутив Git и является наряду с SSH наиболее распространённым и надёжным методом доступа. Метод доступа по HTTP, несмотря на ряд ограничений, очень популярен в контролируемых сетях, потому что позволяет использовать существующие конфигурации сетевых фильтров.
