Анализ и выделение классов Лекция № 1 Общие сведения о дисциплине В весенний семестр 2015-2016 учебного года: 8 лекций; 8 практических занятий; 1 занятие – тест по теории. Формы контроля: зачет, курсовой проект Балльно-рейтинговая система: <60 баллов: не зачтено >=60 баллов: зачтено Программное обеспечение IBM Rational Software Architect (установлен в ПВК): http://www.ibm.com/developerworks/downlo ads/r/architect/ Visual Paradigm: ссылки на странице http://edu.susu.ru/main/course/view.php?id=1 351#section-0 Полезные ссылки Раздел «Объектно-ориентированные CASE-технологии»: http://ivanovaon.susu.ru/index.files/case.htm Курс «Объектно-ориентированные CASE-технологии (2 семестр)»: http://edu.susu.ru/main/course/view.php?id=1351 Курс «Программная инженерия» (Г.И. Радченко): http://glebradchenko.ru/courses/bachelor/enginee ring/2014/ Литература 1. 2. 3. 4. 5. 6. 7. 8. Буч Г., Рамбо Дж., Якобсон И. Язык UML. Руководство пользователя. М.: ДМК Пресс. 2007. 496 с. Буч Г., Якобсон И., Рамбо Дж. UML. СПб: Питер. 2006. 736 с. Кватрани Т., Палистрант Дж. Визуальное моделирование с помощью IBM Rational Software Architect и UML. М.: КУДИЦПресс, 2007. 176 с. Фаулер М. UML. Основы. -СПБ: Символ-Плюс, 2006. -192 с. Арлоу Дж., Нейштадт А. UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование. -СПБ: Символ-Плюс, 2007. - 624 с. Якобсон А., Буч Г., Рамбо Дж. Унифицированный процесс разработки программного обеспечения. – СПб.:Питер, 2002. – 496 с. Ларман К. Применение UML 2.0 и шаблонов проектирования. М.: Вильямс, 2009. 736 с. Константайн Л., Локвуд Л. Разработка программного обеспечения. – СПб.:Питер, 2004. – 592 с. Буч Г., Рамбо Дж., Якобсон И. Язык UML. Руководство пользователя. М.: ДМК Пресс. 2007. 496 с. Книга содержит справочный материал, дающий представление о том, как можно использовать UML для решения разнообразных проблем моделирования. В книге подробно, шаг за шагом, описывается процесс разработки программных систем на базе данного языка. Буч Г., Якобсон И., Рамбо Дж. UML. СПб: Питер. 2006. 736 с. Эта книга представляет собой полный справочник по языку UML. Она адресована в первую очередь разработчикам, системным архитекторам, руководителям проектов, инженерам-системщикам, программистам, аналитикам, заказчикам и вообще всем, кому по роду деятельности приходится описывать, проектировать и строить сложные программные системы, а также разбираться в их функционировании. В книге дается всестороннее описание понятий и конструкций UML, включая их семантику, нотацию и назначение. Материал организован таким образом, чтобы книгой было удобно пользоваться, несмотря на ее объем и полноту содержания. Кроме того, авторы попытались дополнительно осветить ряд моментов, четкое толкование которых отсутствует в стандартах, а также разъяснить основания для принятия тех или иных решений в ходе разработки языка UML. Кватрани Т., Палистрант Дж. Визуальное моделирование с помощью IBM Rational Software Architect и UML. М.: КУДИЦ-Пресс, 2007. 176 с. Книга посвящена инструменту Rational Software Architect и версии UML 2.0. На примере конкретной системы авторы проходят весь путь от постановки задачи до реализации системы, знакомя читателя и с возможностями инструмента, и с возможностями новой версии UML. Попутно авторы предлагают много полезных сведений о процессе разработки программного обеспечения, полезных приемах моделирования и документирования проектных решений. Фаулер М. UML. Основы. -СПБ: Символ-Плюс, 2006. -192 с. Третье издание "UML. Основы" охватывает UML 2 - версию, которая существенно отличается от всех предыдущих. Главное достоинство книги заключается в кратком и сжатом изложении сути UML и особенностей применения этого языка в современном процессе разработки ПО. В книге описаны все главные типы диаграмм UML, рассказано, для чего они предназначены и какие нотации применяются при их создании и чтении. Это диаграммы классов, последовательности, объектов, пакетов, развертывания, прецедентов, состояний, деятельности, составных структур, компонентов, обзора взаимодействия, коммуникационные и временные. Арлоу Дж., Нейштадт А. UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование. -СПБ: Символ-Плюс, 2007. - 624 с. Книга представляет собой практическое руководство по сложному процессу объектно-ориентированного анализа и проектирования с помощью UML 2. В нем показано место ОО анализа и проектирования в цикле разработки программного обеспечения, как его определяет Унифицированный процесс (UP). Книга содержит массу практических, мощных и удобных методик ОО анализа и проектирования, готовых к непосредственному использованию. Вы изучите синтаксис и семантику UML 2 и соответствующие аспекты UP. Книга дает точный и лаконичный обзор UML и UP с точки зрения ОО аналитика и проектировщика. Каждая глава начинается с плана в виде диаграммы и заканчивается кратким обзором, идеальным для контроля усвоения материала. Наиболее важная информация оформлена в виде примечаний в рамке. Обновленное издание содержит больше реальных примеров и новый раздел, посвященный объектному языку ограничений (OCL). Якобсон А., Буч Г., Рамбо Дж. Унифицированный процесс разработки программного обеспечения. СПб.: Питер. 2002. 496 с. Книга описывает унифицированный процесс создания сложных программных систем, включающий в себя как использование средств унифицированного языка моделирования UML - стандартного способа визуализации, конструирования, документирования и пересылки артефактов программных систем, - так и все фазы подготовки и управления этим процессом. Ларман К. Применение UML 2.0 и шаблонов проектирования. М.: Вильямс, 2009. 736 с. Книга помогает разобраться с подходами эволюционного определения требований и прецедентов, моделированием предметной области, проектированием на основе обязанностей, а также наиболее важными принципами объектно-ориентированного проектирования и многоуровневой архитектурой. С помощью этой книги вы сможете познакомиться также с шаблонами проектирования GoF и GRASP, итеративными методами, гибким подходом к использованию унифицированного процесса и многими другими темами. Этапы развития UML 1975-1988: языки объектноориентированного программирования при постоянно возрастающей сложности приложений 1989-1994: увеличение числа методов ООП (от менее 10 до более 50), «войны методов». Буч (метод Буча), Якобсон (OOSE), Рамбо (OMT), языки Fusion, Шлаера-Меллора и Коада-Уордана. История появления UML 1995-2003: Г. Буч (Rational Software Corporation), И. Якобсон (Objectory) и Д. Рабмо (General Electric) объединили усилия и начала адаптировать свои идеи в общую концепцию. Появился UML 0.8…1 2004-…: UML 2.0. Принципы объектно-ориентированного моделирования программных систем Цели моделирования: Модели помогают нам визуализировать систему такой, как она есть, или такой, какой мы хотим, чтобы она была Модели позволяют нам уточнить структуру или поведение системы Модели дают нам шаблон, которым мы руководствуемся при построении системы Модели документируют решения, которые мы принимаем Принципы объектно-ориентированного моделирования программных систем Базовые принципы моделирования: Выбор того, какие модели разрабатывать, оказывает глубокое влияние на то, как проблема будет решена, и на форму решения Каждая модель может быть выражена на различных уровнях детализации. Лучшие модели связаны с реальностью. Ни одна модель не является достаточной. В решению любой нетривиальной системы лучше всего подходить через небольшой набор почти не зависящих друг от друга моделей. Что такое UML? Unified Modeling Language (UML) – это стандартный язык схематичного описания программных систем. UML может быть использован для визуализации, детализации, создания и документирования артефактов программной системы. UML – это только язык, поэтому это только одна из частей метода разработки ПО. Три главных элемента модели: Базовые строительные блоки UML Правила, диктующие то, как данные строительные блоки могут быть собраны вместе Некоторые общие механизмы, которые применимы для всех типов моделей Строительные блоки UML Сущности Отношения Диаграммы Сущности Сущности – это элементы всех моделей. Все UML-сущности делятся на три типа: Структурные сущности – существительные UML-моделей, такие как: «класс», «интерфейс», «кооперация», «прецедент», «компонент», «модуль» и т.д. Поведенческие сущности – действия UML-моделей, такие как: «взаимодействие», «активность», «группировка семантически сходных элементов в пакет» и т.д. Общие сущности – примечания, которые могут быть добавлены к модели для того, чтобы записать конкретную информацию (очень похожи на стикеры) Структурные сущности Структурные сущности – это «существительные» UML-моделей. Они преимущественно представляют собой статические части модели, отражающие ее концептуальные или физические элементы. Класс Интерфейс Кооперация Вариант использования (прецедент) Виды отношений между сущностями в UML Основные, наиболее часто используемые: Зависимость Ассоциация Обобщение (уточнение) Реализация Агрегация Композиция Включение Виды отношений между сущностями в UML Вид отношения UML синтаксис Исходный элемент – Целевой элемент Семантика Зависимость Исходный элемент зависит от целевого элемента. Изменения в целевом элементе могут повлиять на исходный элемент Ассоциация Описание набора связей между элементами Агрегация Целевой элемент – это часть исходного элемента (компонент, логическая часть) Композиция Строгая форма агрегации: целевой элемент – физическая часть исходного элемента Виды отношений между сущностями в UML Вид отношения UML синтаксис Исходный элемент – Целевой элемент Семантика Включение Исходный элемент содержит целевой элемент Обобщение (уточнение) Исходный элемент – это специализация более широкого целевого элемента и может заменять его в некоторых случаях Реализация Исходный элемент гарантированно исполняет функцию целевого элемента Diagrams in the UML Диаграмма – это графическое представление набора элементов, наиболее часто выражающееся в форме связанного графа, состоящего из вершин (сущностей) и дуг (отношений). Диаграмма – это не модель! Сущности или отношения могут удалены из одной или более диаграмма, но они продолжают существовать в модели. Диаграммы в UML Диаграмма классов Диаграмма объектов Диаграмма прецедентов (вариантов использования) Диаграмма последовательности Диаграмма взаимодействия Диаграмма состояний Диаграмма деятельности Диаграмма компонентов Диаграмма размещения Диаграмма классов Диаграмма классов показывает набор классов, интерфейсов, взаимодействий и отношений между ними. Эти диаграммы – наиболее общие диаграммы, использующиеся при объектноориентированном моделировании систем. Диаграмма объектов Диаграмма объектов показывает набор объектов и их отношений. Диаграмма объектов представляет статические экземпляры сущностей, отраженных в диаграмме классов. These diagrams address the static process view of a system, but from the perspective of real or prototypical cases. Диаграмма прецедентов (вариантов использования) Диаграмма прецедентов показывает набор вариантов использования системы и актеров (специальный вид классов), а также отношения между ними. Эти диаграммы особенно важны для организации и моделирования поведения системы. Диаграммы последовательности и взаимодействия Как диаграмма последовательности, так и диаграмма взаимодействия – виды диаграмм, показывающие взаимосвязь компонентов системы. Они показывают взаимодействие между набором объектов и из отношениями, включая сообщения, которые могут передаваться между ними. Диаграммы взаимосвязей адресуются к динамическому представлению системы. Диаграмма последовательности – это диаграмма взаимосвязей, которая подчеркивает временной порядок появления сообщений. Диаграмма взаимодействия – это диаграмма взаимосвязей, которая подчеркивает структурную организацию объектов, которые отправляют и получают сообщения. Диаграммы последовательности и взаимодействия изоморфны, т.е. можно преобразовать одну в другую. Диаграммы состояния Диаграмма состояния показывает автомат состояний, включающий в себя состояния, переходы, события и действия. Диаграмма состояния адресуется к динамическому представлению системы. Они особенно важны при моделировании поведения интерфейсов, классов или взаимодействий и делают упор на событийноупорядоченное поведение объекта, что особенно полезно при моделировании систем реагирования. Диаграмма деятельности Диаграмма деятельности – это специальный вид диаграммы состояний, который показывает поток от действия к действию внутри системы. Диаграмма деятельности адресуется к динамическому представлению системы. Они особенно важны при моделировании функций системы и подчеркивают поток исполнения и контроля объектов. Диаграмма компонентов Диаграмма компонентов показывает структурную организацию и зависимости между компонентами. Диаграмма компонентов адресуется к статической реализации системы. Они связаны с диаграммой классов в том, что компонент обычно отражает один или несколько классов, интерфейсов или взаимодействий. Диаграмма размещения Диаграмма размещения показывает конфигурацию узлов по время исполнения и компоненты, размещенные на них. Диаграмма размещения адресуется к архитектурному представлению размещения. Они соотносятся с диаграммой компонентов в том, что узел обычно включает в себя один или несколько компонентов. Основные понятия Абстрактный тип данных Обязанности Метод Аббота Метод именных групп Метод карточек класс-контрактколлеги (CRC) Метод шаблонных классов Контрольные списки