Чтение онлайн

на главную - закладки

Жанры

Технологии программирования

Костерин В В

Шрифт:

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

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

Еще одно преимущество состоит в получении самодокументированных текстов программ. Самодокументированные программы получаются путем применения

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

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

5.2. ИСТОРИЯ ВОЗНИКНОВЕНИЯ ПРОЕКТНОЙ ПРОЦЕДУРЫ

С появлением ЭВМ актуальным стал поиск способов описания вычислительных алгоритмов. В 60-х годах уже применялись два способа описания алгоритмов: словесный пошаговый и графический в виде схем алгоритмов программ (жаргонно: блок-схем алгоритмов).

Рис. 5.1. Изображение алгоритма в форме графической схемы алгоритма

При словесно-пошаговом способе алгоритмы описывались по изложенному ниже принципу.

Шаг 1. Выполняется такое-то действие для того-то. Если получается, что А < В, то переходим к шагу 4.

Шаг 2. Выполняется такое-то действие для того-то.

Шаг 3. Если А > В, то переходим к выполнению шага 1.

Шаг 4. Выполняется такое-то действие для того-то.

Шаг 5. Если А > В, то переходим к выполнению шага 2.

Изображение того же алгоритма в форме схемы алгоритма приведено на рис. 5.1.

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

Таблица 5.1

Недостатки словесно-пошагового и графического способов в виде схем описания алгоритмов программ

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

До конца 70-х годов проектная процедура получения алгоритмов базировалась на операционном (маршрутном) мышлении, которое закладывается еще в школе математическими и физическими учебными дисциплинами. Операционный подход не требует свободного владения дедуктивным мышлением и основан на более простом и уже освоенном индуктивном мышлении "от частного к общему". При операционном мышлении сначала записываются последовательные действия по главному основному маршруту. Затем эти действия дополняются операциями ветвления (if), операциями безусловного перехода (go to) и дополнительными действиями других маршрутов.

В результате

использования операционного подхода получались программы (подпрограммы) со структурными элементами в виде операторов языка программирования и единственной сверхсложной структурой "вся программа" типа "спагетти" — множеством неупорядоченных передач управлений вперед и назад (см. рис. 5.1). Все это можно отнести и к большинству текстовых инструкций.

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

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

Составлению описания проектной процедуры предшествовали труды Дейкстры (с концепцией программирования без go to), одна из первых работ по структурному кодированию программ [9] и длительный опыт программирования и преподавания авторов.

5.3. ОБЩЕЕ ОПИСАНИЕ ПРОЕКТНОЙ ПРОЦЕДУРЫ

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

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

Поделиться:
Популярные книги

Потомок бога 3

Решетов Евгений Валерьевич
3. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Потомок бога 3

Идеальный мир для Лекаря 6

Сапфир Олег
6. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 6

Леди Малиновой пустоши

Шах Ольга
Любовные романы:
любовно-фантастические романы
6.20
рейтинг книги
Леди Малиновой пустоши

Боярышня Евдокия

Меллер Юлия Викторовна
3. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Евдокия

"Сломанная подкова" Таверна у трёх дорог

Скор Элен
1. Попаданка в деле
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Сломанная подкова Таверна у трёх дорог

Измена. Избранная для дракона

Солт Елена
Любовные романы:
любовно-фантастические романы
3.40
рейтинг книги
Измена. Избранная для дракона

Сумеречный стрелок

Карелин Сергей Витальевич
1. Сумеречный стрелок
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок

Адвокат империи

Карелин Сергей Витальевич
1. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
фэнтези
5.75
рейтинг книги
Адвокат империи

Неверный

Тоцка Тала
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Неверный

На границе империй. Том 7. Часть 3

INDIGO
9. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.40
рейтинг книги
На границе империй. Том 7. Часть 3

Хорошая девочка

Кистяева Марина
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Хорошая девочка

АллатРа

Новых Анастасия
Научно-образовательная:
психология
история
философия
обществознание
физика
6.25
рейтинг книги
АллатРа

Низший 2

Михайлов Дем Алексеевич
2. Низший!
Фантастика:
боевая фантастика
7.07
рейтинг книги
Низший 2

Единственная для невольника

Новикова Татьяна О.
Любовные романы:
любовно-фантастические романы
5.67
рейтинг книги
Единственная для невольника