tehnologia (1018792), страница 10

Файл №1018792 tehnologia (Г.С. Иванова - Учебник - Технология программирования) 10 страницаtehnologia (1018792) страница 102017-07-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 10)

Подобные настройки также снижают наглядность взаимодействия модулей ипотому обеспечивают еще худшие характеристики технологичности разрабатываемогопрограммного обеспечения по сравнению с предыдущими типами связей.Например, функция MinMax предполагает сцепление по управлению, так как значениепараметра flag влияет на логику программы: если функция MinMax получает значениепараметра flag, равное true, то возвращает максимальное значение из двух, а если false, томинимальное:Function MinMax(a, b:integer; flag:boolean):integer;beginif (a>b) and (flag) then MinMax: =aelse MinMax: =b;end;Сцепление по общей области данных предполагает, что модули работают с общейобластью данных. Этот тип сцепления считается недопустимым, поскольку:• программы, использующие данный тип сцепления, очень сложны для понимания присопровождении программного обеспечения;• ошибка одного модуля, приводящая к изменению общих данных, может проявитьсяпри выполнении другого модуля, что существенно усложняет локализацию ошибок;• при ссылке к данным в общей области модули используют конкретные имена, чтоуменьшает гибкость разрабатываемого программного обеспечения.49Например, функция МахА, использующая глобальный массив А, сцеплена с основнойпрограммой по общей области:Function MaxA:integer;Var i:word;beginМахА: =a[Low(a)];for i:= Low(a)+1 to High(a) doif a[i]>MaxA then MaxA:=a[i];end;Следует иметь в виду, что «подпрограммы с памятью», действия которых зависят отистории вызовов, используют сцепление по общей области, что делает их работу в общемслучае непредсказуемой.

Именно этот вариант используют статические переменные С иC++.В случае сцепления по содержимому один модуль содержит обращения к внутреннимкомпонентам другого (передает управление внутрь, читает и/или изменяет внутренниеданные или сами коды), что полностью противоречит блочно-иерархическому подходу.Отдельный модуль в этом случае уже не является блоком («черным ящиком»): егосодержимое должно учитываться в процессе разработки другого модуля. Современныеуниверсальные языки процедурного программирования, например Pascal, данного типасцепления в явном виде не поддерживают, но для языков низкого уровня, напримерАссемблера, такой вид сцепления остается возможным.В табл.

2.1 приведены характеристики различных типов сцепления по экспертнымоценкам [21, 30]. Допустимыми считают первые три типа сцепления, так как использованиеостальных приводит к резкому ухудшению технологичности программ.Таблица 2.1ТипсцепленияПо даннымПо образцуПо управлениюПо общей областиПо содержимомуСцепление,балл134610Устойчивостьк ошибкамдругихмодулейХорошая*СредняяСредняяПлохаяПлохаяНаглядность(понятность)ВозможностьизмененияВероятностьиспользованияХорошаяХорошая*ПлохаяПлохаяПлохаяХорошаяСредняяПлохаяСредняяПлохаяБольшаяСредняяМалаяМалаяМалая* Зависит от количества параметров интерфейса.50Как правило, модули сцепляются между собой несколькими способами.

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

Если сцепление характеризует качествоотделения модулей, то связность характеризует степень взаимосвязи элементов,реализуемых одним модулем. Размещение сильно связанных элементов в одном модулеуменьшает межмодульные связи и, соответственно, взаимовлияние модулей. В то же времяпомещение сильно связанных элементов в разные модули не только усиливаетмежмодульные связи, но и усложняет понимание их взаимодействия. Объединение слабосвязанных элементов также уменьшает технологичность модулей, так как такимиэлементами сложнее мысленно манипулировать.Различают следующие виды связности (в порядке убывания уровня):• функциональную;• последовательную;• информационную (коммуникативную);• процедурную;• временную;• логическую;• случайную.При функциональной связности все объекты модуля предназначены для выполненияодной функции (рис. 2.1, а): операции, объединяемые для выполнения одной функции, илиданные, связанные с одной функцией.

Модуль, элементы которого связаны функционально,имеет четко определенную цель, при его вызове выполняется одна задача, например,подпрограмма поиска минимального элемента массива. Такой модуль имеет максимальнуюсвязность, следствием которой являются его хорошие технологические качества: простотатестирования, модификации и сопровождения. Именно с этим связано одно из требованийструктурной декомпозиции «один модуль – одна функция».Из тех же соображений следует избегать неструктурированного распределения функциимежду модулями – библиотеками ресурсов.

Например, если при проектировании текстовогоредактора предполагается функция редак-51тирования, то лучше организовать модуль – библиотеку функций редактирования, чемпоместить часть функций в один модуль, а часть в другой.При последовательной связности функций выход одной функции служит исходнымиданными для другой функции (рис. 2.1, б). Как правило, такой модуль имеет одну точкувхода, т.е. реализует одну подпрограмму, выполняющую две функции. Считают, что данные,используемые последовательными функциями, также связаны последовательно. Модуль споследовательной связностью функций можно разбить на два или более модулей, как споследовательной, так и с функциональной связностью.

Такой модуль выполняет несколькофункций, и, следовательно, его технологичность хуже: сложнее организовать тестирование, апри выполнении модификации мысленно приходится разделять функции модуля.Информационно связанными считают функции, обрабатывающие одни и те же данные(рис. 2.1, в). При использовании структурных языков программирования раздельноевыполнение функций можно осуществить только, если каждая функция реализуется своейподпрограммой. Хотя раньше в подобных случаях обычно использовали разные точки входав модуль, оформленный как одна подпрограмма.Несмотря на объединение нескольких функций, информационно связанный модульимеет неплохие показатели технологичности. Это объясняется тем, что все функции,работающие с некоторыми данными, собраны в одно52место, что позволяет при изменении формата данных корректировать только один модуль.Информационно связанными также считают данные, которые обрабатываются однойфункцией.Процедурно связаны функции или данные, которые являются частями одного процесса(рис.

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

Временная связностьданных означает, что они используются в некотором временном интервале. Например,временную связность имеют функции, выполняемые при инициализации некоторогопроцесса. Отличительной особенностью временной связности является то, что действия,реализуемые такими функциями, обычно могут выполняться в любом порядке. Содержаниемодуля с временной связностью функций имеет тенденцию меняться: в него могутвключаться новые действия и/или исключаться старые. Большая вероятность модификациифункции еще больше уменьшает показатели технологичности модулей данного вида посравнению с предыдущим.Логическая связь базируется на объединении данных или функций в одну логическуюгруппу (рис. 2.1, е).

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

Модуль, элементы которого связаны случайно, имеет самыенизкие показатели технологичности, так как элементы, объединенные в нем, вообще несвязаны.Обратите внимание, что в трех предпоследних случаях связь между несколькимиподпрограммами в модуле обусловлена внешними причинами. А в последнем – вообщеотсутствует. Это соответствующим образом проецируется на технологическиехарактеристики модулей. В табл. 2.2 представлены характеристики различных видовсвязности по экспертным оценкам [21, 30].Анализ табл. 2.2 показывает, что на практике целесообразно использоватьфункциональную, последовательную и информационную связности.53Таблица 2.2ВидсвязностиФункциональнаяПоследовательнаяИнформационнаяПроцедурнаяВременнаяЛогическаяСлучайнаяСцепление, Наглядность Возможность Сопровождаемостьбалл(понятность) изменения10ХорошаяХорошаяХорошая9ХорошаяХорошаяХорошая8СредняяСредняяСредняя5СредняяСредняяПлохая3СредняяСредняяПлохая1ПлохаяПлохаяПлохая0ПлохаяПлохаяПлохаяКак правило, при хорошо продуманной декомпозиции модули верхних уровнейиерархии имеют функциональную или последовательную связность функций и данных.

Характеристики

Тип файла
PDF-файл
Размер
7,85 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Учебник - Технология программирования
Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее