- •Методы технологии проектирования
- •4) Детальное внешнее проектирование
- •2) Цели
- •Жизненный цикл по.
- •1) Требования
- •9) Проектирование логики модуля
- •8) Внешнее проектирование модулей
- •6) Структура продукта
- •7) Проектирование бд
- •5) Архитектура системы
- •3) Предварительное внешнее проектирование
- •Создание архитектуры системы
- •Концепции метода портов.
- •Проектирование структуры программы
- •Классическая схема информационной системы
- •Внешнее проектирование модуля
- •Динамическое и статическое тестирование
- •Тестовый план
Создание архитектуры системы
Если нет необходимости разбивать систему на несколько подсистем, то этот этап может опускаться.
В классическом структурном проектировании было 2 основных метода создания архитектуры систем.
1-й метод основан на выделении уровней абстракции (внимание уделяется правильному распределению функций между уровнями иерархии)
2-й метод - метод портов: подсистемы есть потоки, они функционируют одновременно. Если подсистеме что-то нужно, она выкладывает это во внешний порт, потом это приходит на входной порт другой системы и обрабатывается ею.
Идея уровней призвана уменьшить сложность подсистем за счет высокой степени независимости уровней друг от друга. Возможны 2 варианта:
Связаны между собой только соседние уровни
Уровни могут быть связаны через голову
Основные характеристики уровней абстракций:
Фундаментальное свойство: на любом уровне абсолютно ничего не известно о свойствах и существовании более высоких уровней. Иерархия должна быть строго вниз
На любом уровне ничего неизвестно о внутреннем строении других уровней. Связь между ними осуществляется через жесткие, заранее определенные сопряжения
Любой уровень представляет собой группу модулей. Некоторые модули являются внутренними и недоступны для других уровней и подсистем, другие представляют собой интерфейс для взаимодействия с другими уровнями
Любой уровень может обеспечить сокрытие, скрывая от других уровней структуру этих данных
Связи между уровнями ограничены явными аргументами, передаваемыми с одного уровня на другой. Недопустимо использование глобальных данных несколькими уровнями
Дейкстра в этой концепции использовал основные концепции борьбы со сложностью – абстракцию, декомпозицию, иерархию.
Абстракция (абстрагирование) – выделение сущностных характеристик объекта или подсистемы, которое позволяет выделить только основные и отбросить несущественные параметры. Например, на прикладном уровне мы не рассматриваем взаимодействие ОС или работу с аппаратурой.
Декомпозиция – процесс разбиения системы на части по определенным критериям. Разбивать надо правильно, а то получится еще сложнее проектировать. В подсистему должны входить наиболее связанные объекты, а связи между кусками должны быть минимальны. Можно свести декомпозицию к задаче разбиения графа на куски, связей между которыми должно быть как можно меньше. Но задача разбиения графа возникла еще раньше – когда надо было проектировать огромные сложные компьютеры.
Эти концепции оказали огромное влияние на развитие ООП-языков.
Концепции метода портов.
Можно выделить 3 группы механизмов связей между частями системы:
Передача управления без передачи данных (goto)
Передача управления с передачей данных (вызов методов)
Передача данных без передачи управления (метод портов)
При использовании механизма портов система делится на несколько подсистем, каждая из которых имеет один либо несколько входных портов (входных очередей). Порт фактически представляет собой список сообщений для подсистемы, причем это взаимодействие подсистем рассматривается как асинхронный процесс – любая подсистема работает в своем потоке. Если одна подсистема хочет передать данные другой, она посылает эти данные в один из входных портов другой подсистемы. Если система готова обрабатывать данные, она читает их из своих входных портов.
Кроме входных портов, существуют так называемые вторичные входные порты. Как правило, каждый входной порт связан с определенной функциональностью подсистемы.
Прямая конфигурация – посылка сообщений прямо во входной порт другого процесса. В случае непрямой конфигурации в систему добавляются еще и выходные порты. Устанавливается взаимосвязь между этими выходными портами и входными портами других подсистем. Т. е. обеспечение гибкости при разработке: выкладываем данные в выходной порт, а какая подсистема заберет, уже не важно.
