Лекция № 12. Объектный подход. Проектирование программного обеспечения
Содержание лекции: объектно-ориентированное программирование; объекты, создание и их использование; язык описания разработки UML.
Цель лекции: ознакомиться с основными понятиями объектного программирования, особенностями создания программного продукта при объектном подходе.
Как показала практика, традиционные методы процедурного программирования не способны справиться ни с нарастающей сложностью программ и их разработки, ни с необходимостью повышения их надежности. В середине 80-х годов ХХ века для разработки ПО большого объема было предложено использовать объектный подход, а в качестве технологии выбрано объектно-ориентированное программирование (ООП) - методика разработки программ, в основе которой лежит понятие объекта.
Объект - это некоторая структура, соответствующая объекту реального мира, его поведению. Каждый объект имеет состояние, обладает четко определенным поведением и уникальной идентичностью. Совокупность атрибутов (свойств) и их значений характеризует объект. Объекты, описываемые одинаковыми наборами атрибутов, объединяются в классы. Данные класса называются полями, процедуры и функции — методами. Все экземпляры одного класса (объекты, порожденные от одного класса) имеют один и тот же набор свойств и общее поведение, то есть одинаково реагируют на одинаковые сообщения. Каждый объект имеет определенное время жизни. В процессе выполнения программы или функционирования реальной системы, могут создаваться новые объекты и уничтожаться уже существующие. Поскольку объект - это динамическая структура, переменная-объект содержит не данные, а ссылку на данные объекта. Поэтому программист должен позаботиться о выделении памяти для этих данных. Выделение памяти при создании объекта осуществляется при помощи специального метода класса – конструктора (constructor), а освобождение памяти при его уничтожении - при помощи деструктора (destructor).
Важнейшими понятиями ООП являются инкапсуляция, наследование, полиморфизм, которые позволяют конструировать сложные объекты из сравнительно простых. Программа, написанная с использованием ООП, состоит из множества объектов, взаимодействующих между собой путем передачи сообщений.
В основе объектного подхода к разработке ПО лежит объектная декомпозиция, т. е. представление разрабатываемого программного продукта в виде совокупности объектов, в процессе взаимодействия которых через передачу сообщений и происходит выполнение требуемых функций. Объектно-ориентированный подход имеет следующие преимущества:
а) уменьшение сложности программного обеспечения;
б) повышение надежности программного обеспечения;
в) обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов;
г) обеспечение возможности повторного использования отдельных компонентов программного обеспечения.
Систематическое применение объектного подхода позволяет разрабатывать хорошо структурированные, надежные в эксплуатации, достаточно просто модифицируемые программные системы, поэтому ООП является одним из наиболее интенсивно развивающихся направлений теоретического и прикладного программирования. Однако при объектном подходе сразу можно выполнить декомпозицию только очень простого ПО. На заре эпохи ООП были предложены методы анализа и проектирования в рамках объектного подхода, использующие различные модели и нотации.
Спорить о достоинствах и недостатках этих методов и моделей можно было бесконечно. Эта ситуация получила название «войны методов». Конец «войне методов» положило появление в 1995 г. первой версии языка UML (Unified Modeling Language - унифицированный язык моделирования), который был создан ведущими специалистами в этой области (Гради Бучем, Иваром Якобсоном и Джеймсом Рамбо) и в настоящее время фактически признан стандартным средством описания проектов, создаваемых с использованием объектно-ориентированного подхода [11].
Спецификация разрабатываемого программного обеспечения при использовании UML объединяет несколько моделей [12]: использования, логическую, реализации, процессов и развертывания (рисунок 12.1).
Рисунок 12.1 - Полная спецификация разрабатываемого программного обеспечения при объектном подходе (UML)
Логическая модель описывает ключевые абстракции ПО (классы, интерфейсы), т. е. средства, обеспечивающие требуемую функциональность. Модель реализации определяет реальную организацию программных модулей в среде разработки.Модель использования представляет собой описание функциональности программного продукта с точки зрения пользователя. Модель процессов отображает организацию вычислений и оперирует понятиями «процессы» и «нити». Она позволяет оценить производительность, масштабируемость и надежность программного обеспечения. И, наконец, модель развертывания показывает особенности размещения программных компонентов на конкретном оборудовании.
Каждая из указанных моделей характеризует определенный аспект проектируемой системы, а все вместе они составляют относительно полную модель разрабатываемого программного продукта. Всего UML предлагает девять дополняющих друг друга диаграмм, входящих в различные модели:
а) диаграммы вариантов использования (показывают основные функции системы для каждого типа пользователей);
б) диаграммы классов (контекстные, описания интерфейсов и реализации - демонстрируют отношения классов между собой);
в) диаграммы пакетов (демонстрируют связи наборов классов, объединенных в пакеты, между собой);
г) диаграммы последовательностей действий (отображают упорядоченное по времени взаимодействие объектов в процессе выполнения варианта использования);
д) диаграммы кооперации (предоставляют ту же информацию, что и диаграммы последовательности действий, но в форме, позволяющей лучше представить ответственности классов в целом);
е) диаграммы деятельностей (представляют собой схему потоков управления для решения некоторой задачи по отдельным действиям, допускают наличие параллельных и/или альтернативных действий);
ж) диаграммы состояний объектов (показывают состояния объекта и условия переходов из одного состояния в другое);
з) диаграммы компонентов (показывают из каких программных компонентов состоит программное обеспечение и как эти компоненты связаны между собой);
и) диаграммы размещения (позволяют связать программные и аппаратные компоненты системы).
Дополнениями к диаграммам служат формализованные и неформализованные текстовые описания, комментарии и словари. При построении этих и других диаграмм используют унифицированную систему обозначений. UML и предлагаемая теми же авторами методика Rational Unified Process поддерживаются пакетом Rational Rose фирмы Rational Software Corporation. Ряд диаграмм UML можно построить также средствами программы Microsoft Visual Modeler и других CASE-средств.
Дополнительную информацию по теме можно получить в [1, 11, 12, 13].