Методы, ориентированные на данные

Постановка задачи

При постановке задачи необходимо выполнить следующие действия:

• выработать требования (свойства, качества и возможности), необходимые для решения проблемы или достижения цели;

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

В ходе этой работы выявляются свойства, которыми должна обладать система в конечном виде, описываются ее функции, характеристики интерфейса.

Чтобы приступить к решению задачи, необходимо точно ее сформулировать, то есть ответить на серию вопросов такого рода:

• что дано и что нужно найти (определение исходных и выходных параметров);

• как определить решение;

• каких данных не хватает и все ли они нужны;

• какие сделаны допущения и т.п.

Проектирование программы

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

• имя/цель – дается имя модулю и предложение о его функции с формальными параметрами;

• неформальное описание – обзор действий модуля;

• ссылки – какие модули ссылаются на него и на какие модули ссылается он сам;

• вход/выход – формальные и фактические параметры, глобальные, локальные и связанные (общие для ряда модулей переменные);

• примечания – полезные комментарии общего характера по модулю.

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

Методы проектирования архитектуры делятся на две группы – ориентированные на обработку и ориентированные на данные.

Методы, ориентированные на обработку, включают следующие общие идеи.

Модульное программирование. Его основные концепции:

• каждый модуль реализует единственную независимую функцию;

• модуль имеет единственную точку входа/выхода;

• размер модуля минимизируется;

• каждый модуль разрабатывается независимо от других модулей;

• система в целом построена из модулей.

Каждый модуль тестируется отдельно, затем после кодирования и тестирования происходит их интеграция и тестируется вся система.

Функциональная декомпозиция. Является декомпозицией в форме пошаговой детализации и концепции скрытия информации. Каждый модуль характеризуется субъективным решением разработчика; связь осуществляется с помощью хорошо организованных интерфейсов.

Проектирование с использованием потока данных. Использует поток данных как генеральную линию проектирования программы. Содержит элементы структурного проектирования «сверху-вниз» с пошаговой детализацией:

• экспертиза потоков данных и отображение графа потока данных;

• анализ входных, центральных и выходных элементов, преобразующих поток данных;

• формирование иерархической структуры программы;

• детализация и оптимизация структуры программы.

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

Методы, ориентированные на данные

Методология Джексона. Ключевым элементом в построении проекта является структура данных. Структура программы определяется структурой данных, подлежащих обработке. Программа представляется как механизм преобразования входных данных в выходные.

В методе предусматриваются:

• разработка и изображение структуры входных и выходных данных;

• изображение структуры программы путем соединения изображений этих структурных элементов;

• определение дискретных операций над структурами данных;

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

Методология Уорнера. Подобна предыдущей, но процедура проектирования более детализирована. Используются следующие виды представления проекта:

• диаграммы организации данных (описывают входные и выходные данные);

• диаграммы логического следования (логический поток этих данных);

• список инструкций (команды, используемые в проекте);

• псевдокод (описание проекта);

• определение входных данных системы;

• организация входных данных в иерархическую структуру;

• детальное определение формата элементов входного файла;

• то же самое для выходных данных;

• спецификация программы: чтение, ветвление, вычисление, выходы, вызовы подпрограмм;

• составление диаграммы (по типу блок-схем), указывающей логическую последовательность инструкций.

Метод иерархических диаграмм. Определяется связь между входными, выходными данными и процессом обработки с помощью иерархической декомпозиции системы (без детализации). Фактически используются три элемента: вход, обработка, выход. Алгоритм проектирования по этому методу заключается в следующих шагах:

• начало с наивысшего уровня абстракции, определив вход, выход, обработку;

• соединение каждого элемента входа и выхода с соответствующей обработкой;

• документирование каждого элемента система, используя диаграммы;

• детализация диаграмм, используя предыдущие шаги.

Объектно-ориентированная методология. Основана на концепции абстрактных типов данных. В качестве объектов рассматриваются данные, модули и системы. Каждый объект содержит некоторую структуру данных с набором процедур, обеспечивающих работу с этими данными. По этой методологии по заданной предметной области создаются абстракции:

• определение проблемы;

• развитие неформальной стратегии, удовлетворяющей требованиям к системе;

• формализация стратегии;

• создание объектов и их атрибутов;

• определение операций над объектами;

• установка интерфейсов;

• реализация операций.

Построение модели

При построении моделей, как правило, используют два принципа – дедуктивный (от общего к частному) и индуктивный (от частного к общему).

При дедуктивном подходе рассматривается частный случай общеизвестной фундаментальной модели, которая при заданных предположениях адаптируется к условиям моделируемого объекта.

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

Технология построения модели при индуктивном подходе включает в себя:

• эмпирический этап (умозаключение, интуиция, предположение, гипотеза);

• постановка задачи для моделирования;

• оценки, количественное и качественное описание;

• построение модели.

Разработка алгоритма

Выбор метода разработки зависит от постановки задачи, ее модели. На этом этапе необходимо провести анализ правильности алгоритма, что очень сложно и трудоемко. В общей методике доказательства правильности алгоритма предполагается, что алгоритм описан в виде последовательности шагов, для каждого из которых предлагается некое обоснование его правильности для всех входных и выходных данных. Затем предлагается доказательство конечности алгоритма с окончательными исходными входными и выходными данными.

Реализация алгоритма

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