Методы и средства инженерии программного обеспечения

Объектно-ориентированная инженерия требований


Cтруктурирование проблемы на отдельные компоненты  и   обеспечение   способов  их взаимодействия  определяют понятность и "прозрачность" описания  требований, полученных в результате процесса анализа.

Типы составляющих компонентов и правила их композиции определяются в программной инженерии как архитектура системы. Процесс декомпозиции проблемы, определяющей  архитектуру системы, называют парадигмой    программирования,

базирующейся на двух широко  распространенных моделях:   функции-данные и объектная модель.

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

Объектно-ориентированный подход к разработке программных систем такого  недостатка не имеет. В нем общее видение решения проблемы формирования требований осуществляется исходя из  следующих  постулатов:

– мир составляют объекты, которые взаимодействуют между собой;

– каждому объекту присущ определенный состав свойств или атрибутов, который определяется  своим  именем  и  значениями;

– объекты могут вступать в отношения друг с другом;

–  значения атрибутов и отношения могут с течением времени изменяться;

–  совокупность значений атрибутов конкретного объекта в определенный момент времени определяет его состояние;

–  совокупность состояний объектов определяет состояние мира объектов;

–  мир и его объекты могут находиться в разных состояниях и порождать некоторые события;

–  события  могут  быть  причиною  других  событий  или изменений состояний.




Каждый объект может принимать участие в определенных процессах, разновидностями  которых   есть:

–        переходы из одного  состояния в другое под влиянием соответствующих событий;   

–        возбуждение определенных событий или посылка сообщений  другим объектам;

–  операции, которые  могут выполнять объекты;

–  возможные совокупности действий, которые задают его поведение;

–        обмен сообщениями.

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

– пользователь избавлен от необходимости знать лишнее;

–  то, что ему не сообщили, он не испортит (защита от намеренных или случайных неправомерных действий;

– все, о чем не знает пользователь, можно изменять.

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

Другим важным свойством определения  объектов  является  наследование.  Один класс объектов наследует другой, если  он  полностью  вмещает  все  атрибуты и поведение наследуемого класса, но имеет еще и свои атрибуты и (или) поведение. Класс, который  наследуют  свойства другого, называют суперклассом, а класс, которого наследует, называют   подклассом.   Наследственность  фиксирует общие и отличающиеся  черты  объектов  и  позволяет  явно выделять   компоненты  проблемы,  которые  можно использовать в ряде  случаев при  построении нескольких классов–наследников.



Классы могут образовывать иерархии наследников произвольной  глубины, где каждый отвечает определенному уровню абстракции, являясь обобщением класса-наследника и конкретизацией класса, который  наследует его самого. Например, класс "число" в качестве  наследников имеет подклассы: "целые числа", "комплексные числа" и "действительные числа". Все эти подклассы наследуют операции суперкласса (сложения и вычитания), но каждый из них имеет свои особенности выполнения этих операций.

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

В настоящее время предложен ряд современных методов объектно-ориентированного анализа требований, объектно-ориентированного проектирования программ, объектно-ориентированного программирования (С++, JAVA). Наибольшую ценность среди них имеет проблема  согласованности между ними.

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

Концептуальное моделирование проблемы системы происходит в терминах взаимодействия объектов:

– онтология домена определяет состав объектов домена, их атрибуты и   взаимоотношения,   а   также  оказываемые  услуги;

– модель  поведения  определяет  возможные   состояния объектов, инциденты, события, инициирующие   переходы  из одного состояния в другое, а также сообщения, которые объекты посылают друг другу;

– модель процессов определяет действия, которые выполняют объекты.

Все объектные  методы имеют в своем составе приведенные модели,  отличающиеся своими нотациями и некоторыми другими деталями.


Содержание раздела