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

13.2.1. Вводный раздел

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

Диаграмма модульной зависимости состоит из узлов и дуг. Узлы представляют абстракции, и каждый узел содержит имя абстракции. Имеется три типа узлов, по одному на каждый ис­пользуемый нами тип абстракций. Узлы, подобные Р иQна рис. 13.1,представляют процедуры; узлы, подобные Е иD— представляют типы данных, а подобные 1 —представляют итера­торы. Дуги показывают, какие абстракции используют при реали­зации другие абстракции. Мы говорим, что целевая абстракцияиспользуетвспомогательные илизависитот них. Целевая абстрак­ция использует процедуру или итератор, обращаясь к нему. Тип данных используется в том случае, если вызывается одна или несколько его операций. На диаграмме не указываются конкрет­ные операции. Указанная зависимость является результатом ис­пользования любой операции. Более подробная запись перегрузит? диаграмму и усложнит работу о ней. Если необходима дополни-

Рис. 13,1. Диаграмма модульной зависимости,

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

Иногда абстракция использует объект типа без обращения к операциям типа. Например, она может получать объект в ка­честве аргумента и просто передавать его другой абстракции. В таком случае мы говорим, что целевая абстракцияслабоис­пользует тип. Для обозначения этого используется специальная пунктирная дуга,

Зависимости определяют уровень узлов. Абстракция А нахо­дится на более высоком уровне, чем абстракция В, если А зави­сит от В,аВ не зависит от А (т. е. отсутствует прямая или кос­венная рекурсия). Если А и В зависят друг от друга, то они должны быть указаны на одном и том же уровне.

На рис. 13.1процедура Р должна быть реализована при по­мощи трех вспомогательных абстракций, Q, Dи 1. Qпредставляет собой еще одну процедуру. Ее реализация использует D.Е и D есть типы данных. Реализация В использует D,но Dне исполь­зует вспомогательных абстракций. 1есть итератор; он определен в терминах самого себя, т. е. является рекурсивным. Отметим,410вся структура представляет собой направленный граф. Это не дерево, поскольку одна абстракция может использоваться при реализации нескольких других. Отметим также, что граф может включать в себя циклы. Циклы появляются там, где имеет место рекурсия. Если в реализации абстракция используется непосред­ственно, то это отмечается дугой, исходящей из данного узла и заканчивающейся на нем же (как в случае 1на рис. 13.1).Циклы, содержащие более одной дуги, представляют собой связанную рекурсию. В общем случае рекурсия оправдана, если решаемая задача рекурсивна по своей природе. Мы видели примеры естест­венной рекурсии при анализе реализаций списковlistиsortedJistв гл. 4.Однако при использовании слишком длинных циклов о большим числом дуг нужно быть особенно осторожным.

Диаграмма модульной зависимости полезна при обнаружении ошибок. Ошибка в проектировании проявляется в виде ошибки в абстракции. Например, эффективная реализация становится невозможной или отсутствуют необходимые аргументы. Потен­циальные последствия ошибки могут быть определены анализом ди?.граммы. Реализации всех абстракций, использующих ошибоч­ную, должны быть пересмотрены. (При этом пересмотре могут обнаружиться другие неверно составленные абстракции и т. д.) Абстракция, слабо использующая ошибочный тип, реагирует на ошибку в том случае, если тип полностью исчезает, а не в случае, когда тип изменяется или подменяется другим. Например, для задачи на рис. 13.1при обнаружении проблемыg Dнеобходимо пересмотреть реализации только для Е и Р, поскольку Qи 1 затронуты не будут. Разумеется, если повторный анализ Е при-

274 Глава !3

ведет к необходимости внесения изменен: ий в ее спецификацию) мы вынуждены будем пересмотреть та^сже реализацию Q.

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

Соседние файлы в папке Б. Лисков