WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 7 | 8 || 10 | 11 |   ...   | 16 |

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

Архитектурно-строительная часть, генеральный план, железобетонные конструкции, электрика, коммуникации средств связи, отопление и вентиляция, водоснабжение и канализация, металлоконструкции и многое другое.

- 66 - УМП «Автоматизированные методы разработки архитектуры ПО» Материал, изложенный в данном Приложении, основывается на публикации Гради Буча, Джеймса Рамбо и Айвара Джекобсона - “Язык UML. Руководство пользователя” и содержит оригинальные определения данного стандарта для однозначного толкования затрагиваемых артефактов проектирования. Приложение выполнено в духе краткой “поваренной книги” по программированию, чем на самом деле Руководство пользователя и является [27].

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

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

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

Моделирование позволяет решить четыре различных задачи:

o визуализировать систему в ее текущем или желательном состоянии;

o определить структуру или поведение системы;

o получить шаблон, позволяющий затем сконструировать систему;

o документировать принимаемые решения, используя полученные модели.

- 67 - УМП «Автоматизированные методы разработки архитектуры ПО» Объектное моделирование Инженеры-строители в процессе проектирования объектов создают множество вариантов моделей объектов (многовариантное проектирование). Чаще всего это структурные модели, позволяющие визуализировать и специфицировать части системы, а также то, как они соотносятся друг с другом. Иногда, в особо критичных случаях, создаются также и динамические модели – например, если требуется изучить поведение конструкции при землетрясении. Эти два типа моделей различаются по организации и по тому, на что в первую очередь обращается внимание при проектировании.

При разработке программного обеспечения тоже существует несколько подходов к моделированию.

Известны два подхода моделирования разрабатываемого ПО – это алгоритмический и объектно-ориентированный.

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

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

Рассмотрим в качестве примера трехуровую архитектуру биллинговой системы, состоящей из интерфейса пользователя, программного обеспечения промежуточного слоя и базы данных.

Интерфейс содержит конкретные объекты (кнопки, меню и диалоговые окна). База данных также состоит из конкретных объектов - таблиц, представляющих сущности предметной области (клиентов, продукты и заказы). Программы промежуточного слоя включают такие объекты, как транзакции и бизнес-правила, а также более абстрактные представления сущностей предметной области (клиентов, продуктов и заказов).

Объектно-ориентированный подход к разработке программного обеспечения является сейчас преобладающим потому, что он продемонстрировал свою полезность при построении систем в самых разных областях любого размера и сложности. Кроме того, большинство современных языков программирования, инструментальных средств и операционных систем являются в той или иной мере объектноориентированными, а это дает веские основания судить о мире в - 68 - УМП «Автоматизированные методы разработки архитектуры ПО» терминах объектов. Объектно-ориентированные методы разработки легли в основу идеологии сборки систем из отдельных компонентов. В качестве примера можно назвать такие технологии, как JavaBeans и COM+.

Необходимо найти ответы на следующие вопросы:

o Какая структура должна быть у хорошей объектноориентированной архитектуры o Какие артефакты должны быть созданы в процессе работы над проектом o Кто должен создавать их o Как оценить результат Для визуализации, специфицикации, конструирования и документирования объектно-ориентированной системы следует применять язык UML.

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

Классы применяются с целью составления словаря разрабатываемой системы. К классам относят абстракции, являющиеся частью предметной области, или на которые опирается реализация. С помощью классов описываются программные, аппаратные или концептуальные сущности.

Классы характеризуются четкими границами и предназначены для формирования распределения обязанностей в системе.

Моделирование системы предполагает идентификацию важных, с той или иной точки зрения, сущностей. Словарь моделируемой системы состоит из идентифицированных сущностей. Например, при проектировании дома такие его компоненты, как стены, двери, окна, встроенные шкафы и освещение являются определенными сущностями, которыe отличается друг от друга и характеризуют каждого из них собственным набором свойств. Для стен – это высота, ширина и способность выдерживать заданные нагрузки. Стены твердые, многослойные или однослойные (сплошные). Двери также имеют высоту и ширину. Они тоже сплошные. Кроме того, двери снабжены механизмом, позволяющим им открываться в одну сторону, и имеют замок. Окна, так же как и двери, имеют аналогичные свойства, но и другие функциональные характеристики окон, отличающие эти сушности окон друг от друга. Обычно окна проектируют для - 69 - УМП «Автоматизированные методы разработки архитектуры ПО» естественной освещенности и для проветривания помещений здания, и не проектируют в качестве дверных проемов.

На элементарном примере моделирования жилища, мы видим, что стены, двери и окна редко существуют сами по себе, поэтому необходимо решить, как они будут стыковаться друг с другом в проекте. Какие сущности вы выберете и какие отношения между ними решите установить, определяется в зависимости от того, как вы собираетесь использовать комнаты в доме, как будете перемещаться между ними, а также от общего стиля и обстановки, которые входят в ваш замысел.

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

Стена это класс объектов с некоторыми общими свойствами, такими как высота, длина, толщина, несущая это стена или нет, и т.д.

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

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

Классом (Class) называется описание совокупности объектов с общими атрибутами, операциями, отношениями и семантикой.

Определите классы разрабатываемой системы Имена классов Каждый класс должен иметь имя, отличающее его от других классов. Имя класса это текстовая строка. Взятое само по себе, оно называется простым именем. К составному имени спереди добавляется - 70 - УМП «Автоматизированные методы разработки архитектуры ПО» имя пакета, в который входит класс. Имя класса в объемлющем пакете должно быть уникальным.

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

Обычно каждое слово в имени класса пишется с заглавной буквы, например:

Customer (Клиент), Wall (Стена), Rtr (Сопротивление теплопередаче) TemperatureSensor (ДатчикТемпературы).

Определите имена классов разрабатываемой системы Атрибуты Атрибут это именованное свойство класса, включающее описание множества значений, которые могут принимать экземпляры этого свойства. Класс может иметь любое число атрибутов или не иметь их вовсе. Атрибут представляет некоторое свойство моделируемой сущности, общее для всех объектов данного класса. Например, у любой стены есть высота, ширина и толщина. При моделировании клиентов можно задавать фамилию, место работы, ИНН, адрес, номер телефона и дату рождения. Таким образом, атрибут является абстракцией данных объекта или его состояния. В каждый момент времени любой атрибут объекта, принадлежащего данному классу, обладает вполне определенным значением. Имя атрибута, как и имя класса, может быть произвольной текстовой строкой. На практике для именования атрибута используют одно или несколько коротких существительных, соответствующих некоторому свойству объемлющего класса. Каждое слово в имени атрибута, кроме самого первого, обычно пишется с заглавной буквы, например name_ID или load_Bearing.

При описании атрибута можно явным образом указывать его класс, которому он принадлежит и начальное значение, принимаемое по умолчанию.

Определите атрибуты классов разрабатываемой системы - 71 - УМП «Автоматизированные методы разработки архитектуры ПО» Операции Операцией называется реализация услуги, которую можно запросить у любого объекта класса для воздействия на поведение.

Иными словами, операция это абстракция того, что позволено делать с объектом. У всех объектов класса имеется общий набор операций. Класс может содержать любое число операций или не содержать их вовсе.

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

Имя операции, как и имя класса, может быть произвольной текстовой строкой. На практике для именования операций используют короткий глагол или глагольный оборот, соответствующий определенному поведению объемлющего класса. Каждое слово в имени операции, кроме самого первого, обычно пишут с заглавной буквы, например move или is_Empty.

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

При изображении класса средствами UML необязательно сразу показывать все его атрибуты и операции. Для лучшей организации списков атрибутов и операций можно снабдить каждую группу дополнительным описанием, воспользовавшись стереотипами.

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

Выражаясь абстрактно, соответствующие атрибуты и операции как раз и являются теми свойствами, посредством которых выполняются обязанности класса. Например, класс Wall (Стена) отвечает за информацию о высоте, ширине и толщине. Класс TemperatureSensor (Датчик Температуры) отвечает за измерение температуры и подачу сигнала тревоги в случае превышения заданного уровня. Моделирование классов лучше всего начинать с определения обязанностей сущностей, которые входят в словарь системы. На этом этапе особенно полезны будут такие методики, как применение CRC - 72 - УМП «Автоматизированные методы разработки архитектуры ПО» карточек и анализ прецедентов. В принципе число обязанностей класса может быть произвольным, но на практике хорошо структурированный класс имеет по меньшей мере одну обязанность. При этом обычно отмечают, что число обязанностей не должно быть слишком большим.

Обязанности оформляются в виде произвольно составленного текста.

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

o активные классы (описывающие процессы и нити);

o компоненты (соответствующие физическим программным компонентам);

o узлы (представляющие аппаратные средства).

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

Определите дополнительные свойства классов разрабатываемой системы - 73 - УМП «Автоматизированные методы разработки архитектуры ПО» Словарь системы С помощью классов обычно моделируют абстракции, извлеченные из решаемой задачи или технологии, применяемой для ее решения.

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

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

Словарь разрабатываемой системы содержит:

Pages:     | 1 |   ...   | 7 | 8 || 10 | 11 |   ...   | 16 |






















© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.