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

168 Глава 8

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

Спецификации имеют два основных назначения. Во-первых, процесс написания спецификации проливает свет на специфици­руемую абстракцию — за счет фокусирования внимания на свой­ствах этой абстракции. Их роль может быть увеличена путем тщательного анализа свойств, которые могли остаться незамечен­ными, включая то, что должно быть указано в предложении requires относительно обработки исключительных ситуаций и по­ведения на границах. Иногда эта роль является главной ролью) выполняемой спецификацией, поскольку она выявляет проблемы в спецификациях, требующих дальнейшего анализа.

Спецификация используется также для документирования программ, на каждой стадии разработки и создания программного обеспечения. Разумеется, спецификация не покрывает всю необ­ходимую документацию. Она описывает выполняемые модулем функции, однако для сложных модулей необходимо также описа­ние принципов их работы. Если эти два вида документации четко разграничены, то модификация и сопровождение программного обеспечения значительно облегчаются.

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

Дополнительная литература

Parnas, David L,, 1977, The use of precise specifications in the development of software. In Proceedings of IFIP Congress 77, pp. 861—868.

Упражнения

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

8.2. Воспользовавшись спецификацией, рассмотренной в предыдущей главе, проанализируйте ее ограниченность, обобщенность и простоту. 8.3. Разумно ли ставить вопрос о корректности спецификации? Объясните. 8.4. Обсудите, как спецификации могут быть использованы в процессе компоновки системы. 8.5. Рассмотрите взаимосвязь абстракции, ее спецификации и реализации.

^.Тестирование и отладка

До сих пор речь шла о спецификации и реализации программы 'в совсем мало говорилось непосредственно о ее создании. Сей­час мы перейдем к связанным с этим вопросам, касающимся про-1-верки работоспособности программы.

1 Говоря о том, что созданная программа выполняется согласно (; нашим ожиданиям, мы воспользуемся понятием «проверка досто-- верности». Проверка достоверности обычно производится путем выполнения различных тестов и анализом ряда соображений, касающихся того, что мы считаем правильной работой программы. Назовем процессом отладки такой процесс, при котором произво­дится выяснение причин, вследствие которых программа работает неправильно. Введем также понятие защитного программирова­ния, обозначая этим создание программ, специально предназначен­ных для облегчения процессов проверки достоверности и отладки.

Перед подробным рассмотрением процесса проверки на до­стоверность необходимо обсудить, что мы должны от него ожи­дать. Наилучшим результатом окажется ситуация, при которой все пользователи программы будут удовлетворены ее работой. Эта цель недостижима. Такая гарантия предполагает знание того, что понимать под удовлетворенностью пользователей работой программы. Лучший результат, на который мы можем рассчиты-'вать, это гарантия того, что программа удовлетворяет своей спе­цификации. Большая часть работы тратится на выполнение именно этого условия.

Проверка достоверности может быть реализована двумя спо­собами. Мы можем говорить о том, что программа будет работать со всеми возможными входными данными. Это предполагает тща­тельный анализ текста программы, что обычно называют верифи-цировац^ем. В гл. II мы рассмотрим ряд четких приембв' про­верки программ. Как увидим далее, формальная проверка про­грамму^ без^ привлечейия ЭВМ зачастую~чересчур__утомительна. К сожалению, на сегодняшний день существуют относительно примитивные средства проверки, и проверка программ в подав­ляющем большинстве представляет собой неформализованный процесс. Однако даже неформальная проверка может оказаться Довольно затруднительной.

Соседние файлы в папке POSIBNIK