Справочная таблица: Проектирование класса |
|
|
Данная справочная таблица позволяет проверить правильность моделирования класса проекта. |
|
Взаимосвязи
Основное описание
Элементы справочной таблицы
Общие
-
Имя класса дает четкое представление о его предназначении.
-
Описание класса дает четкое представление о его предназначении.
-
Класс представляет собой единую хорошо определенную абстракцию.
-
Все атрибуты и операции класса существенны для выполнения его функций.
-
Каждый класс соответствует компактному и целостному набору функций.
-
Функции класса четко определены и сформулированы, и при этом напрямую относятся к предназначению класса.
-
Все классы относительно полны в себе и практически не зависят от других классов.
-
Все функции класса описаны на одном уровне абстракции, например, на высоком (уровень приложения) или на низком
(уровень реализации), но не на обоих сразу.
-
У всех классов в рамках одной и той же иерархической структуры наследования есть уникальные атрибуты, операции
и взаимосвязи (т.е., они наследуют все общие атрибуты, операции и взаимосвязи).
-
Спланирован полный жизненный цикл экземпляра класса. Все объекты создаются, используются и удаляются в рамках
реализаций одного или нескольких прецедентов.
-
Класс отвечает требованиям к поведению, указанным в реализациях прецедентов.
-
Выполнены все требования к классу, изложенные в спецификациях требований.
-
Требования, предъявляемые к классу (в соответствии с описанием класса и набором объектов на диаграммах
последовательностей), совместимы с конечным автоматом класса.
-
Все функции класса связаны между собой таким образом, что класс не может существовать в системах, в которых
используется только подмножество его функций.
-
Не существует двух классов с одним и тем же предназначением.
|
Обобщение/специализация
-
Иерархическая структура обобщения сбалансирована таким образом, что ни для одного из классов она не слишком
мелка и не слишком глубока.
-
В иерархической структуре наследования отражено явное сходство между классами.
-
Ни один базовый класс не представляет собой совокупность атрибутов производных классов.
-
В иерархии наследования нет промежуточных абстрактных классов с ортогональными свойствами. Примером такой
ситуации может служить наличие двух копий подкласса на обеих сторонах дерева наследования.
-
Для передачи общих абстракций проекта используется механизм наследования, т.е. структура классов используется
многократно.
|
Соглашения о присвоении имен
-
Имена классов соответствуют их задачам.
-
Имена классов соответствуют соглашениям о присвоении имен, указанным в рекомендациях по проектированию.
|
Операции
-
Имена всех операций понятны и соответствуют сути операций.
-
Конечный автомат и набор операций соответствуют друг другу.
-
Конечный автомат и операции полностью описывают поведение класса.
-
Параметры всех операций правильны с точки зрения их имен, количества и типов.
-
Правильно заданы спецификации реализации всех операций, для которых нужны такие спецификации.
-
Сигнатуры операций соответствуют стандартам используемого языка программирования.
-
Каждая операция используется в реализации по крайней мере одного прецедента.
|
Атрибуты
-
Все взаимосвязи класса необходимы для выполнения каких-либо операций.
-
Каждый атрибут соответствует одной и только одной концепции.
-
Всем атрибутам присвоены понятные имена, четко передающие их назначение.
|
Взаимосвязи
-
Имена ролей аггрегирований и ассоциаций правильно передают характер взаимосвязи между соответствующими
классами.
-
Правильно определена множественность взаимосвязей.
|
Конечные автоматы
-
Конечный автомат максимально прост, но при этом реализует все необходимое поведение.
-
В конечном автомате нет избыточных состояний и переходов.
-
Для конечного автомата задан простой и понятный контекст.
-
Все зависимые объекты видны ссылающемуся на них объекту.
-
Конечный автомат эффективен и выполняет свою работу с оптимальным балансом времени и ресурсов.
-
Конечный автомат доступен для понимания.
-
-
Имена состояний и переходов понятны в контексте предметной области системы.
-
Имена состояний указывают на то, что происходит или произойдет, а не на то, что уже произошло.
-
Имена всех состояний и переходов уникальны в пределах конечного автомата (это не обязательно, но
значительно упрощает отладку).
-
Логические группы состояний объединены в составные состояния.
-
Для упрощения автомата применяются составные состояния.
-
Метки переходов указывают на причины выполнения переходов.
-
В переходах состояний нет кода длиннее 25 строк; для упрощения структуры вместо длинного кода
используются функции.
-
Максимальный уровень вложенности в конечном автомате не слишком глубок и не затрудняет понимания;
обычно даже для самых сложных поведений достаточно одного-двух уровней.
-
Вместо параллельных вложенных состояний используются активные классы. Активные классы в подавляющем большинстве
случаев проще и понятнее параллельных вложенных состояний.
-
В системах реального времен для реализации логических нитей управления применяются капсулы.
-
Предусмотрены действия в состояниях ошибок и обслуживания.
-
Вместо расширенных переменных состояния применяются вложенные состояния. В переходах не применяются сторожевые
условия, в которых целевое состояние перехода определяется по нескольким переменным.
-
Конечный автомат не является имитацией блок-схемы.
-
Конечный автомат не перегружен вложенными автоматами, в которых предусмотрено только одно вложенное состояние.
Применение таких автоматов допустимо только в ограниченных количествах и только в качестве временных заготовок
для реализации компонентов в будущем.
|
|
© Copyright IBM Corp. 1987, 2006. Все права защищены..
|
|