- •Глава 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.4 Проектирование алгоритмов программы
На этапе разработки алгоритмов программы вырабатывается абстрактное решение поставленной задачи в виде конечной последовательности определённых действий. Алгоритмы оформляются в виде компактных, наглядных и формализованных блок-схем.
Сначала происходит определение задачи в общих чертах, а затем постепенное уточнение структуры, путем внесения более мелких деталей. На каждом шаге такого уточнения необходимо выявить основные функции, которые нужно выполнить. Таким образом, данная задача разбивается на ряд подзадач, пока эти подзадачи не станут настолько простыми, что каждой из них будет соответствовать один модуль. Действия каждого модуля должно быть описано одной фразой.
3.2.5 Выбор языка программирования, операционной системы и сопутствующего инструментария
На основе постановки задачи и разработанных алгоритмов определяется общая трудоёмкость, выбирается операционная система и проводиться анализ сред разработки. Определяется наиболее подходящий инструментарий.
3.2.5.1 Обоснование выбора языка программирования
Задача, поставленная в рамках данной диссертации, предполагает усовершенствование методологий процессов, связанных с тетстированием локальных приложений в UNIX, а также реализацию фаззера, которых отвечал бы всем современным тенденциям и обладал бы расширенным функционалом, в сравнении с уже имеющимися системами тестирования приложений.
Для написания фаззера локальных приложений UNIX-подобных систем потребуется выбрать определенный инструмент, то есть язык программирования.
Можно было бы написать фаззер на языке C, но общая трудоёмкость процесса немного отпугивает. В нашем случае наиболее подходящими будут такие скриптовые языки как Perl, Python и Ruby.
Эти языки достаточно популярны в мире UNIX — их интерпретаторы можно найти почти в любой UNIX-подобной операционной системе. Но самое главное их преимущество в том, что они обеспечивают высокую скорость разработки.
На данный момент наименее актуальным из этих языков является Perl. Сейчас Perl в основном используется для написания однострочных скриптов системными администраторами UNIX. Код, написанный на Perl, сложно поддерживать в процессе модификации.
Язык программирования Python является наиболее популярным из этих трёх языков. Свою популярность он приобрёл во многом благодаря Django — фреймворка для веб-приложений на базе Python. Python может использоваться для разработки веб-приложений, прикладных программ, а также для написания небольших скриптов. Недостатком языка Python является несовместимость между второй и третьей версиями языка, а также низкое быстродействие, во многом, из-за представления всех элементов языка в качестве объектов. Следует заметить, что низкое быстродействие является характерной особенностью всех интерпретируемых языков программирования.
Так же как и Python, в Ruby все элементы языка являются объектами. В общем можно сказать, что это языки-близнецы, аналог Django в Ruby — Ruby on Rails. На данный момент хоть Ruby и набирает популярность, можно отметить малое количество русскоязычной литературы по этому языку, что можно характеризовать как недостаток.
Принимая во внимание всё вышеперечисленное, для написания фаззера предполагается использовать язык Python.
