Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Современный подход к проектированию программ основан на декомпозиции задачи. Целью декомпозиции является создание модулей, которые представляют собой небольшие, относительно самостоятельные программы, взаимодействующие друг с другом по хорошо определенным и простым правилам.
Разработка любой программы или прикладной системы начинается с определения требований к ней для конкретного набора пользователей и заканчивается эксплуатацией системы этими пользователями.
По современным взглядам проектирование и разработку программ целесообразно разбить на ряд последовательных этапов:
постановка задачи;
проектирование программы;
построение модели;
разработка алгоритма;
реализация алгоритма;
анализ алгоритма и его сложности;
тестирование программы;
документирование.
При постановке задачи для крупных компьютерных программ необходимо провести следующие работы:
выработать требования (свойства, качества и возможности), необходимые для решения проблемы или достижения цели (как правило, эта деятельность носит экспертный характер);
разработать спецификации, включающие:
цель программы;
граничные условия;
описание функций системы;
спецификации входных и выходных данных;
верификационные требования (установление тестовых случаев);
тип и количество документов.
Проектирование программы осуществляется следующим образом. Сначала производится проектирование архитектуры программной системы. Это предполагает первичную (общую) стадию проектирования и заканчивается декомпозицией спецификаций в структуру системы. Обычно на модульном уровне разрабатывается спецификация каждого модуля:
имя/цель — дается имя модулю и предложение о его функции с формальными параметрами;
неформальное описание — обзор действий модуля;
ссылки — какие модули ссылаются на него и на какие модули ссылается данный модуль;
вход/выход — формальные и фактические параметры, глобальные, локальные и связанные (общие для ряда модулей) переменные;
примечания — полезные комментарии общего характера по модулю.
Следующим шагом является детальное проектирование. На этом этапе происходит процедурное описание программы, выбор и оценка алгоритма для реализации каждого модуля. Входной информацией для проектирования являются требования и спецификации системы.
Построение модели в большинстве случаев является непростой задачей. При построении моделей, как правило, используют два принципа: дедуктивный (от общего к частному) и индуктивный (от частного к общему). При дедуктивном подходе рассматривается частный случай общеизвестной фундаментальной модели. При заданных предположениях известная модель приспосабливается к условиям моделируемого объекта.
Индуктивный способ предполагает выдвижение гипотез, декомпозицию сложного объекта, анализ, затем синтез. Здесь широко используется подобие, аналогичное моделирование, умозаключение с целью формирования каких-либо закономерностей в виде предположений о поведении системы.
Технология построения модели при индуктивном способе:
эмпирический этап (умозаключение, интуиция, предположение, гипотеза);
постановка задачи для моделирования;
оценка, количественное и качественное описание;
построение модели.
Разработка алгоритма — самый сложный и трудоемкий процесс, но и самый интересный в творческом отношении. Выбор метода разработки зависит от постановки задачи, ее модели. На этом этапе необходимо провести анализ правильности алгоритма, что очень непросто и трудоемко.
Наиболее распространенная процедура доказательства правильности алгоритма — это прогон его на множестве различных тестов. Однако это не гарантирует того, что не может существовать случая, в котором программа «не сработает».
На этапе реализации алгоритма происходят конструирование и реализация алгоритма, включающие кодирование, интеграцию, тестирование (сертификацию).
По сути, проводится перевод проекта в форму программы для конкретного компьютера, сборка системы и ее прогон при тестовых и нормальных условиях для подтверждения ее работы в соответствии со спецификациями системы.
Анализ алгоритма и его сложности необходим для оценки ресурсов компьютеров, на которых он будет работать, времени обработки конкретных данных, приспособления в работе в локальных сетях и телекоммуникациях. Хотелось бы также иметь для данной задачи количественный критерий для сравнения нескольких алгоритмов с целью выбора более простого и эффективного среди них.
Перед началом эксплуатации программы необходим этап ее отладки и тестирования.
Тестирование — это процесс исполнения программ с целью выявления (обнаружения) ошибок. Тестирование — процесс деструктивный, поэтому считается, что тест удачный, если обнаружена ошибка.
Существуют различные способы тестирования программ:
тестирование программы как «черного ящика» — стратегия «черного ящика» определяет тестирование с анализом входных данных и результатов работы программы.
тестирование программы как «белого ящика» заключается в стратегии управления логикой программы, позволяет использовать ее внутреннюю структуру.
Различают альфа- и бета-тестирование, производимое соответственно специалистами разработчика и заказчика программного изделия.
Основные типы ошибок, встречающихся при программировании:
обращения к переменным, значения которым не присвоены или не инициализированы;
выход индексов за границы массивов;
несоответствие типов или атрибутов переменных величин;
явные или неявные проблемы адресации памяти;
ошибочные передачи управления;
логические ошибки.
Есть золотое правило программистов — оформляй свои программы в том виде, в каком бы ты хотел видеть программы, написанные другими. К каждому конечному программному продукту необходимо документированное сопровождение в виде помощи (help), файлового текста (readme.txt).
Дата публикования: 2014-11-18; Прочитано: 841 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!