Что такое структурные карты Константайна?
Структурные карты Константайна используют при проектировании ПО. Они показывают, как продукт будет выполнять системные требования и описывает отношения между модулями.
Зачем нужны структурные карты Константайна?
Карты позволяют продемонстрировать структуру системы, модулей, и их связи друг с другом. На основе структурных карт можно оценивать и улучшать качество проекта.
С помощью какой программы можно построить структурную карту Константайна?
В векторном графическом редакторе Microsoft Visio
Структурные карты Константайна
Структурные карты Константайна используют при проектировании программного обеспечения. Они показывают, как продукт будет выполнять системные требования и описывает отношения между модулями.
Зачем нужны структурные карты Константайна
Сама по себе структурная карта Константайна ничего не скажет о качестве реализации проекта. Но этот инструмент позволяет продемонстрировать структуру системы, модулей, входящих в нее и то, как оно связаны друг с другом. На основе структурных карт можно оценивать и улучшать качество проекта.
Структурное проектирование основано на принципе, что большую систему можно расчленить на модули. Причем так, чтобы модули были как можно более независимы друг от друга. А еще так, чтобы каждый модуль выполнял только одну функцию.
Построить структурную карту Константайна можно, например, в векторном графическом редакторе Microsoft Visio.
Из чего состоит структурная карта Константайна
Структурная карта состоит из разных элементов:
Модули
Вызов модуля
Связь по данным
Связь по управлению.
Модули — ключевой элемент структурной карты Константайна. Они бывают разных типов: детализированный модуль, совокупность подпрограмм в модуле (библиотека), модули с областями глобальных или распределенных данных.
Объекты структурной карты Константайна
Структурный блок. Это блок кодов с одним входом и выходом.
Процедурный блок. Представляет собой вызов процедуры, определенной ранее.
Библиотечный блок. Представляет собой вызов библиотечного модуля.
Чтобы увязывать блоки между собой используют связи:
последовательная связь — последовательное выполнение слева направо;
параллельная связь — блоки выполняются одновременно;
условная связь — можно выбрать одну из альтернатив;
итерационная связь — блоки выполняются в цикле.
Модули в структурной карте Константайна
Структуру любой программной системы составляют модули. У них есть определенные общие свойства:
у модуля есть имя, по нему к нему можно обращаться как к единому фрагменту;
состоит модуль из разных операторов языка программирования, которые последовательно записаны;
модуль может передавать и принимать данные.
Структурные карты Джексона
Структурные карты Джексона нужны для описания внутренней структуры модулей и во–многом схожи со структурными картами Константайна.
Метод Джексона включает шесть шагов. Три первых шага выполняются на этапе анализа продукта. Остальные три шага выполняются на этапе проектирования продукта.
Шаг объект–действие. Здесь определяют объекты — источники или приемники информации и действия — это внешние события из реального мира, которые воздействуют на объекты.
Шаг объект–структура. Описывает последовательность действий над объектами. Здесь для отображения действий над объектами используют диаграммы Джексона.
Шаг начальное моделирование. Здесь определяют связи между моделью продукта и реальными миром/пользователями.
Шаг доопределение функций. На этом этапе определяют и описывают сервисные функции продукта.
Шаг учета системного времен. Здесь планируют время будущих процессов.
Шаг реализации. Здесь про согласование с системной средой и разработку аппаратной платформы.
Шаг первый — объект действие — начинают с определения проблемы. На втором шаге — объект–структура — создают структуру объектов, которая будет описывать последовательность действий над ними.
Сцепление модулей в структурных картах Константайна Джексона
Оценить качество проекта помогает анализ сцепления модулей. Сцепление отражает зависимость модулей друг от друга. И в удачном проекте сцепления должно быть минимальным. Точнее говоря, модули должны слабо зависеть друг от друга, быть независимыми насколько возможно.
Почему слабое сцепление модулей — это признак хорошо спроектированной системы? На то есть несколько причин:
Чем меньше соединений между двумя модулями, тем меньше «волнового эффекта», когда одна ошибка тянет за собой другие в связанных модулях.
Уменьшается риск «эффекта ряби», когда внесли изменения в одном модуле и нужно делать то же самое с другими, иначе исправление ошибок в одном месте может привести к появлению таковых в другом модуле.
Не придется волноваться о внутренних деталях других моделей при сопровождении одного модуля.
Проще понять и разобраться с системой.
Чтобы добиться такого минимального сцепления модулей, нужно:
удалить необязательные связи между модулями;
уменьшить число обязательных связей между модулями, насколько это возможно;
упростить обязательные связи.
Как на практике ослабить сцепление модулей в структурной карте Константайна
На практике проектировщики системы применяют три основных типа сцепления модулей:
нормальное сцепление — оно же приемлемое с позиции структурного проектирования. Можно назвать два модуля (А и Б) нормально сцепленными, если А вызывает Б, затем Б возвращает управление модулю А. Вся информация между ними представлена параметрами при вызове.
сцепление по общей области — неприемлемое с позиции структурного проектирования;
сцепление по содержимому — запрещенное с позиции структурного проектирования.
Чтобы на практике ослабить сцепление модулей в структурной карте Константайна нужно:
Создавать минимальные по числу параметров связи между модулями.
Создавать прямые, а не косвенные, связи между модулями. Ведь интерфейс между двумя модулями достаточно понятен, несложен. А это значит, что пользователь сможет понять его сразу. Без ссылок на другие информационные объекты.
Создавать очевидные связи между модулями.
Использовать гибкие связи, чтобы облегчать модификацию.
Типы нормального сцепления в структурных картах Константайна
Различают три типа нормального сцепления модулей в структурных картах:
Сцепление по данным
Сцепление по образцу
Сцепление по управлению.
На практике чаще всего используют сцепление по данным — data coupling. Оно отлично подходит, когда нужно передавать небольшое количество параметров. Модули взаимодействуют через передачу параметров. Каждый параметр — это информационный объект.
При сцеплении по образцу — stamp coupling — один модуль посылает другому объект с внутренней структурой. Например, это может быть информация о клиенте с названием организации, почтовым адресом, номером счета.
При сцеплении по управлению — control coupling — один модуль отправляет другому информационный объект. Это как флаг для управления внутренней логикой. Флаги бывают двух видов: описательные и управляющие.
Описательный флаг помогает описать ситуацию, которая произошла, например, конец файла или введенная кредитная карта.
Управляющий флаг указывает на определенные действия в модуле. Например, установить в начало или читать предыдущую запись.
Флаги усиливают сцепление. А как мы помним, это не очень хорошо может сказаться на качестве проекта.
Связность в структурных картах Константайна
Еще один способ оценить качество проектируемой системы — это связность. Она контролирует как действия в одном модуле связаны друг с другом. Это как измеритель прочности соединения функциональных и информационных объектов внутри модуля. Если размещать сильно связанные объекты в одном модуле, то межмодульные связи и влияние уменьшатся.
Различают несколько уровней связности:
Функциональная. Такой модуль содержит объекты, которые предназначены для выполнения одной задачи. К примеру, расчет зарплаты, считывание кредитки. То есть у каждого такого модуля есть одна четко определенная цель. При его вызове будет выполняться лишь одна задача.
Последовательная связность. Здесь выходные данные одной задачи служат входными для следующей. На примере все просто: открыть файл — прочитать текст — закрыть файл.
Информационная. Связный модуль содержит объекты, которые используют одни и те же входные или выходные данные. Представим, что вам нужно узнать информацию о книге: название, автор, цена в онлайн–магазине. Знаете вы только ее уникальный номер ISBN. Входной информационный объект тут будет ISBN. А ваши вопросы — тремя связанными подзадачами.
Процедурная связность. В таком модуле объекты включены в разные подзадачи. Они не всегда могут быть связными. И управление переходит от одной подзадачи к другой. Разберемся на простом допандемичном примере: сделать утром зарядку, сходить в душ, сварить себе кофе, одеться, пойти на работу.
Временная связность. Здесь схема схожая с процедурной, но объекты включены в подзадачи, которые связаны временем выполнения. Опять же смотрим на примере: поужинать, почистить зубы, поставить будильник, лечь спать. Все эти действия не связаны друг с другом ничем, кроме времени, когда их выполняют. Вечером, в конце дня.
Логическая. В модуле с такой связностью объекты содействуют решению общей подзадачи, для которой они и были отобраны изначально. Объекты при этом не связаны потоками данных или потоками управления. А подзадачи относятся к одной категории. Например, способы перемещения в путешествии: полететь на самолете, поехать на автомобиле, поплыть на корабле, сесть на поезд. Но тут важно, что с большой долей вероятности будет выбрано только одно действие — один способ передвижения, а не все разом.
Случайная связность. Объекты в таком модуле соответствуют подзадачам, которые почти не связаны друг с другом. Этот модуль похож на логически связный, но подзадачи будут из разных категорий. Например, гулять с собакой, заниматься спортом, смотреть сериал.