Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование программ.doc
Скачиваний:
3
Добавлен:
01.08.2019
Размер:
55.3 Кб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Анализ алгоритма и его сложности

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

Отладка и тестирование программы

Тестирование – это процесс исполнения программ с целью выявления ошибок. В зависимости от решаемых задач и варианта реализации различают различные способы тестирования:

• стратегия «черного ящика» определяет тестирование с анализом входных данных и результатов работы программы, т.е. разработчик теста не представляет, какие алгоритмы заложены в системе и как она функционирует внутри, а знает только входные и выходные параметры. Критерием исчерпывающего входного тестирования является использование всех возможных наборов входных данных;

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

• регрессионное тестирование выявляет, что сделанные изменения не повлияли на работоспособность предыдущей версии;

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

Наиболее разумной и реальной стратегией тестирования является сочетание моделей «черного» и «белого ящика».

Принципы тестирования:

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

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

• необходимо проверять не только, делает ли программа то, для чего она предназначена, но и не делает ли она то, что не должна делать;

• нельзя планировать тестирование в предположении, что ошибки не будут обнаружены;

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

• тестирование – процесс творческий.

Очень полезен метод «ручного тестирования» (тестирование «всухую») без компьютера на основе инспекции и сквозного просмотра – набора процедур и приемов обнаружения ошибок при чтении текста.

Основные типы ошибок при программировании:

• обращения к переменным, которые не инициализированы (не объявлены) или которым не присвоены значения;

• выход индексов за границы массивов;

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

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

• ошибочные передачи управления;

• логические ошибки.

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

Отладкой программы называется процесс устранения ошибок в ней. В процессе отладки программы используют метод «грубой силы» - вывод промежуточных данных по всей программе (трассировка) или использование автоматических средств типа режима Debug в Turbo Pascal.