|
|
Волгоградский
государственный технический университет |
Проектированию структуры программы предшествует разработка внешних функциональных описаний. Функциональные описания (алгоритмы выполнения программы) для достижения их восприятия должны быть декомпозированы от общего к частному. Также они должны включать описания форм представления и объема внутренних данных.
Итак, сначала имеется первый вариант схемы иерархии, полученный путем простого членения функций программы на подфункции с указанием переменных, необходимых для размещения данных на разных шагах обработки. Скорее этот вариант не является оптимальным, и требуются проектные итерации (обычно выполняются методом "проб и ошибок") для улучшения топологии схемы.
Каждый новый вариант сравнивается с предшествующим вариантом по описанным здесь критериям. Генерация вариантов прекращается при невозможности дальнейших улучшений.
Фонд критериев оптимальности схем иерархии является необходимым подспорьем при оптимизации схем иерархии.
Первым критерием является полнота выполнения специфицированных функций.
Вторым критерием является возможность быстрого и дешевого пополнения новыми, ранее не специфицированными функциями.
Третьим критерием, вытекающим из блочно-иерархического подхода, является обозримость (понятность) для проектировщика составных частей программы.
Четвертым критерием оценки качества структуры является максимальная независимость по данным отдельных частей программы.
Пятым критерием является возможность связывания программы с обширной многоуровневой схемой иерархии конкретным редактором связей (линковщиком). Если вы начинаете работать над новой программой, то очень полезно выполнить ее модель в виде пустых заглушек модулей, которые не содержат никаких действий.
Шестым критерием является достаточность оперативной памяти. Здесь рассматриваются варианты с описанием особенно структурированных статических и динамических переменных на разных уровнях схемы иерархии. Проверка удовлетворения данного критерия осуществляется расчетами с некоторыми машинными экспериментами.
Седьмым критерием является оценка влияния топологии схемы иерархии на скорость выполнения программы при использовании оверлеев (динамической загрузки программы) и механизма подкачки страниц при разработке программы, которая целиком не может быть размещена в оперативной памяти.
Восьмым критерием является отсутствие разных модулей, выполняющих похожие действия. В идеале - один и тот же модуль вызывается на разных уровнях схемы иерархии.
Девятым критерием является достижение при реализации программы такого сетевого графика работы коллектива программистов, который обеспечивает равномерную загрузку коллектива по ключевым датам проекта.
Десятым критерием является всемерное сокращение затрат на тестирование уже собранного ядра программы по ключевым датам сетевого графика реализации. Характеризуется простотой используемых заглушек и качеством тестирования по всем вычислительным маршрутам модулей. Достигается первичной реализацией сверху вниз модулей ввода и вывода программы с отсрочкой реализации остальных ветвей схемы иерархии. Обычно затраты на тестирование как по срокам, так и деньгам составляют около 60% стоимости всего проекта. Хорошая схема иерархии в 2-5 раз и более сокращает затраты на тестирование по сравнению с первоначальным вариантом.
Одиннадцатым критерием является использование в данном проекте как можно большего числа разработанных в предшествующих проектах модулей и библиотек при минимальном объеме изготавливаемых заново частей.
Двенадцатым критерием является удачное распределение модулей по компилируемым файлам программы и библиотекам.
Тринадцатым критерием является накопление уже готовых модулей и библиотек модулей для использования их во все новых разработках.
Что дает хорошая структура программы?
1) сокращение общего объема текстов в 2 или 3 раза, что соответственно удешевляет проект;
2) на несколько порядков удешевляет тестирование (на тестирование обычно приходится не менее 60% от общих затрат проекта).
3) облегчение и удешевление сопровождения программы.