Анализ и постановка задач
На данном этапе осуществляется определение целей, которые достигаются при решении задачи и условий, необходимых для их достижения. При этом выполняется анализ обрабатываемой информации, определяются формы выдачи результатов, производится описание используемых данных - их типов, структуры, диапазонов изменения величин, и т. п. Результат этого этапа оформляется в виде технического задания на разработку.
Разработка спецификаций.
На данном этапе выполняется создание законченного описания поведения разрабатываемой программы. Оно включает пользовательский сценарий – все возможные варианты взаимодействия между пользователями и программным продуктом. Тем самым определяются функциональные требования к нему.
Кроме того спецификации содержит и нефункциональные требования. Например, ограничения связанные с дизайном, производительностью, выбранными проектными решениями и т.д. Разработка спецификаций должна производиться в соответствии с существующими стандартами, в которых содержатся рекомендации к структуре и методам описания требований к программным продуктам. Хорошо выполненная спецификация позволяет на этапе написания текстов программ одновременно и эффективно работать целой команде программистов независимо друг от друга, тем самым, обеспечивая сокращение сроков работ.
Разработка алгоритмов
Для того чтобы получить решение поставленной задачи, необходимо составить соответствующий алгоритм – полное, однозначное и исчерпывающее описание последовательности действий, предназначенных для достижения поставленной цели.Наэтом этапевыбираются методы проектирования алгоритма, формы его записи (смотри предыдущий параграф), требуемые тесты и правила проверки алгоритма. Методы проектирования алгоритмов могут различными: нисходящее или восходящее проектирование, использование принципа модульности и/или структурного программирования (см. выше).
Широко используются структурные принципы алгоритмизации, когда алгоритмы формируются из базовых алгоритмических конструкций, таких как следование, ветвление, повторение. Их последовательное применение и вложение друг в друга с соблюдением определённых правил, позволяет решить практически любую поставленную задачу. При структурированной разработкеалгоритмов правильность алгоритма можно проследить на каждом этапе его построения и выполнения.
На структурном подходе основан модульныйметод проектирования и разработки алгоритмов. Модуль – это некоторый алгоритм или его блок, имеющий конкретное наименование, выполняющий определенную функцию и имеющий стандартный вход и выход. Модуль должен обладать свойством структурной замкнутости и функциональной определенности. Структурная замкнутость означает независимость структуры программы от конструкции отдельного модуля. Функциональная определенность состоит в том, что модуль выполняет функции, свойственные ему одному.
При использовании модулей достигается:
- функциональная целостность и завершенность, так как каждый модуль реализует только одну функцию;
- автономность и независимость от других модулей;
- эволюционируемость, то есть отдельный модуль может быть модернизирован независимо от остального алгоритма;
- открытость перед другими пользователями и разработчиками для модернизации и использования;
- корректность и надежность, так как исполнение модуля возможно только единственным образом (у него есть только одна точка входа).
Преимущества модульного проектирования алгоритмов заключается в том, что:
- разработка алгоритма большого объема может производиться различными исполнителями;
- создается библиотека наиболее часто используемых алгоритмов;
- облегчается тестирование алгоритмов и обоснование их правильности;
- упрощается проектирование и модификация алгоритмов;
- уменьшается сложность разработки алгоритмов и программных комплексов;
- повышается наблюдаемость вычислительного процесса (то есть, по результатам проведенных отдельных вычислений становится легче понять общее состояние системы) при реализации алгоритмов.
Тестирование алгоритмов
Это проверка правильности работы алгоритма на специально заданных тестовых примерах – задачах с известными входными данными и соответствующими им результатами. Набор тестовых данных должен быть с одной стороны минимальным, а с другой стороны достаточно полным. Он должен обеспечивать максимально проверку для каждого типа наборов входных данных. Однако, тестирование сложных алгоритмов не всегда дает полную гарантию правильности.
Гарантию правильности дает лишь описание его работы и полученных результатов с помощью системы аксиом и правил вывода – то есть верификация алгоритма, что является достаточно сложной задачей.
Дата добавления: 2016-05-31; просмотров: 1937;