
- •Объектно–ориентированное проектирование.
- •Компонентный подход к проектированию
- •Аспектно–ориентированное программирование (аоп).
- •Генерирующее (порождающее) программирование
- •Агентное программирование.
- •Семейство систем Borland alm, дополняющее .Net Framework
- •Ответы на 14/15/16/17
- •Преимущества использования компонентной архитектуры:
- •Основные понятия com-технологии
- •Структура компонентов com
- •Традиционные методы доступа к сервисам приложений
- •Доступ к сервисам приложений с использованием com.
- •Серверы com.
- •Клиенты com
- •Использование технологии com.
- •Библиотека com
- •Расширения com
- •Общие сведения о семействе методологий ideFx
Генерирующее (порождающее) программирование
Порождающее программирование (generatе programming) основано на генерации и моделировании групп или отдельных элементов ПС из разных продуктов программирования: объектов, компонентов, аспектов, сервисов, ПИК, систем, характеристик, каркасов и т.п. Базисом этого программирования является ООП, дополненное механизмами применения ПИК, а также свойствами изменчивости, взаимодействия, синхронизации и
В нем используются другие методы программирования, например, для поддержки инженерии ПрО как дисциплины проектирования семейств ПС из разных ранее указанных продуктов программирования.
В рамках данного программирования построена объединенная технология генерации как отдельных ПС, так и их семейств. В результате в нем сформирован базис будущего программирования, включающий современные методы программирования, новые формализмы и объединяющие модели, посредством которых можно будет создавать более долговременные качественные программные изделия семейств ПС по принципу конвейера.
Главным элементом проектирования ПС является не уникальный программный продукт, созданный из ПИК для конкретных применений, а семейство ПС или конкретные его экземпляры. Элементы семейства не создаются с нуля, а генерируются на основе общей генерирующей модели домена (generative domain model), т.е. модели семейства, включающей средства определения членов семейства, компоненты реализации и ПИК для сборки любого члена семейства и базы конфигурации, специфицирующей членов семейства.
Целью порождающего программирования является разработка правильных компонентов для целого семейства и автоматическое их предоставление другим членам семейства.
Ответы на 4* 5* 6* 7
8////////////////////////////////////////8//////////////////////////////////////8/////////////////////////////////////8///////////////////////////////////8//////////////////////////////////8///////////////////////////////////8
Агентное программирование.
Понятие интеллектуального и программного агента появилось более 20 лет назад, и их роль в программной инженерии все время возрастает. В частности, Джекобсон отметил перспективу для использования агентов в качестве разработчиков архитектуры системы из вариантов использования, менеджеров проекта и др. Использование агентов в этих ролях в ближайшем будущем будет способствовать повышению производительности, качества и ускорению разработки ПС.
Основным теоретическим базисом данного программирования являются темпоральная, модальная и мультимодельная логики, дедуктивные методы доказательства правильности свойств агентов и др.
С точки зрения программной инженерии, агент - это самодостаточная программа, способная управлять своими действиями в информационной среде функционирования для получения результатов выполнения поставленной задачи и изменения текущего состояния среды.
Агент может обладать такими свойствами:
– автономность – это. способность действовать без внешнего управляющего воздействия;
– реактивность – это способность реагировать на изменения данных и среды, и воспринимать их;
– активность – это способность ставить цели и выполнять заданные действия для достижения этой цели;
– социальность – это способность к взаимодействию с другими агентами (или людьми).
В задачи программного агента входят:
– самостоятельная работа и контроль своих действий;
– взаимодействие с другими агентами;
– изменение поведения в зависимости от состояния внешней среды;
– выдача достоверной информации
С интеллектуальным агентом связываются знания типа: убеждение, намерение, обязательства и т.п. Эти понятия входят в концептуальную модель и связываются между собой операционными планами реализации целей каждого агента. Для достижения целей интеллектуальные агенты взаимодействуют друг с другом, устанавливают связь между собой через сообщения или запросы и выполняют заданные действия или операции в соответствии с имеющимися знаниями.
Агенты могут быть локальными и распределенными. Процессы локальных агентов протекают в клиентских серверах сети, выполняют заданные функции и не влияют на общее состояние среды функционирования. Распределенные агенты, расположенные в разных узлах сети, выполняют автономно (параллельно, синхронно, асинхронно) предназначенные им функции и могут влиять на общее состояние среды. В обоих случаях характер взаимодействия между агентами зависит от таких факторов: совместимость целей, компетентность, нестандартные ситуации т.п.
Примером активного использования агентов является Интернет. В нем агенты обеспечивают доступ к информации, расположенной в информационных ресурсах Интернет, анализ, фильтрацию и передачу клиенту результат запроса. В результате выполнения этих функций агенты создают некоторое поведение среды, которое в любой момент времени находится в некотором состоянии, а агент, выполняя заданные действия, изменяет его в целевое состояние и учитывает возможность возникновения нерегулярных состояний (тупиков, отсутствия ресурса и др.).
9////////////////////////////9/////////////////////////////9////////////////////////9//////////////////////////////////9//////////////////////////////////9//////////////////////////////9///////////////////////////////9//////////////////
Анализируя развитие рынка средств разработки за последние 10-15 лет, можно отметить общую тенденцию смещения акцентов от технологий собственно написания программ (которые с начала 90-х годов ознаменовались появлением RAD-инструментов - "быстрая разработка приложений") к необходимости комплексного управления всем жизненным циклом приложений - ALM (Application Lifecycle Management).
По мере повышения сложности программных проектов резко возрастают требования к эффективности их реализации. Это тем более важно сегодня, когда разработчики ПО вовлечены практически во все аспекты работы предприятий и число таких специалистов растет. В то же время данные исследований в этой области говорят о том, что результаты как минимум половины "внутренних" проектов разработки программных средств не оправдывают возложенных на них надежд. В этих условиях становится особенно актуальной задача оптимизации всего процесса создания программных средств с охватом всех его участников - проектировщиков, разработчиков, тестеров, служб сопровождения и менеджеров. Управление жизненным циклом приложений (ALM) рассматривает процесс выпуска программных средств как постоянно повторяющийся цикл взаимосвязанных этапов:
определение требований (Requirements);
проектирование и анализ (Design & Analysis);
разработка (Development);
тестирование (Testing);
развертывание и сопровождение (Deployment & Operations).
Каждый из этих этапов должен тщательно отслеживаться и контролироваться. Правильно организованная ALM-система позволяет:
- сократить сроки вывода продуктов на рынок (разработчикам приходится заботиться лишь о соответствии их программ сформулированным требованиям);
- повысить качество, гарантируя при этом, что приложение будет соответствовать потребностям и ожиданиям пользователей;
- повысить производительность труда (разработчики получают возможность делиться передовым опытом разработки и внедрения);
- ускорить разработку благодаря интеграции инструментов;
- уменьшить затраты на сопровождение, постоянно поддерживая соответствие между приложением и его проектной документацией;
- получить максимальную отдачу от инвестиций в навыки, процессы и технологии.
10/////////////////////////10////////////////////////////////////10////////////////////////////10//////////////////////10///////////////////////////////////10////////////////////////////////////////////////////10
Строго говоря, само понятие ALM, конечно, не является чем-то принципиально новым, - такое понимание проблем создания ПО возникло лет сорок назад, на заре формирования промышленных методов разработки. Однако до относительно недавнего времени основные усилия по автоматизации задач разработки ПО были направлены на создание инструментария непосредственно для программирования как наиболее трудоемкого этапа. И лишь в 80-х годах в связи с усложнением программных проектов ситуация стала существенно меняться. При этом резко возросла актуальность расширения функциональности средств разработки (в широком понимании этого термина) в двух основных областях: 1) автоматизация всех остальных этапов жизненного цикла ПО и 2) интеграция инструментов между собой.
Этими задачами занимались многие компании, однако бесспорным лидером здесь была компания Rational,
Еще одним серьезным игроком на поле средств разработки является корпорация Microsoft. Пока она не замахивается на создание собственной ALM-платформы; продвижение в данном направлении идет только в рамках сотрудничества с другими поставщиками, теми же Rational и Borland (обе они стали первыми участниками программы Visual Studio Industry Partner). В то же время созданное Microsoft ключевое средство разработки Visual Studio .NET постоянно расширяет функциональность за счет использования высокоуровневых средств моделирования и управления проектами, в том числе путем интеграции с Microsoft Visio и Microsoft Project.
Следует отметить, что на сегодняшний день практически все ведущие компании–разработчики технологий и программных продуктов (кроме перечисленных выше, можно назвать Oracle, Computer Associates и др.) располагают развитыми технологиями создания ПО, которые создавались как собственными силами, так и за счет приобретения продуктов и технологий, созданных небольшими специализированными компаниями. И хотя, подобно корпорации Microsoft, создание собственной ALM-платформы ими пока не планируется, выпускаемые этими компаниями CASE-средства находят широкое применение на отдельных этапах ЖЦ ПО.
Ответы на 8*9*10
11////////////////////////////11////////////////////////11//////////////////////////11/////////////////////////////////////11////////////////////////////////////////1//1/////////////////////////////////////////11//////11
Этими задачами занимались многие компании, однако бесспорным лидером здесь была компания Rational, которая более двадцати лет, с момента своего создания, специализировалась на автоматизации процессов разработки программных продуктов. В свое время, именно она стала одним из пионеров широкого использования визуальных методов проектирования программ (и практически автором языка UML, принятого де-факто в качестве стандарта в этой сфере), создала общую ALM-методологию и соответствующий набор средств. Можно сказать, что к началу нынешнего века Rational была единственной компанией, имевшей в своем арсенале полный спектр продуктов для поддержки ALM (от бизнес-проектирования до сопровождения), за исключением, правда, одного класса инструментов - обычных средств написания кода. Однако, в феврале 2003-го, она перестала существовать как независимая организация и стала подразделением корпорации IBM, получившим название IBM Rational.
Еще совсем недавно Rational являлась практически единственным производителем комплексных средств разработки класса ALM, хотя конкурирующие инструменты от других поставщиков для отдельных этапов создания ПО были и есть. Однако пару лет назад о намерении составить ей реальную конкуренцию публично заявила корпорация Borland, которая всегда имела сильные позиции как раз в области традиционных средств разработки приложений (Delphi, JBuilder и пр.), фактически являющихся основой ALM-комплекса корпорации, расширение которого шло путем приобретения других компаний, выпускающих аналогичные продукты. В этом состоит принципиальное различие бизнес-моделей двух компаний, открывающее потенциальные возможности для реальной конкуренции. После вхождения Rational в состав IBM компания Borland позиционирует себя как единственного на сегодняшний день независимого поставщика комплексной ALM-платформы (т. е. продвижением собственных ОС, языков и пр. она не занимается). В свою очередь конкуренты отмечают, что Borland пока не сформулировала четкую методологию ALM, дающую базу для объединения имеющихся у нее инструментов.
12//////////////////////////////////////12///////////////////////////////////////////////////////////////12//////////////////////////////////////////12///////////////////////////////////////12/////////////////////////12
Компания Rational Software (ныне – IBM Rational) на протяжении последнего десятилетия является несомненным лидером в области создания инструментальных средств и методологий в области создания программного обеспечения. Она выпускает обширный класс программных продуктов, предназначенных для всех этапов разработки ALM.
В целом продукты IBM Rational можно представить в виде структуры (см. рис. 1.1), включающей четыре основные группы инструментов (деление является довольно условным):
объединяющая платформа (для всех этапов разработки ALM);
анализ и проектирование;
проектирование и разработка ПО;
тестирование.
Центральным звеном объединяющей платформы служит RUP - рациональный унифицированный процесс (Rational Unified Process) - одна из спиральных методологий разработки программного обеспечения. Методология поддерживается компанией Rational Software, обновление продукта происходит примерно дважды в год. В качестве языка моделирования в общей базе знаний используется язык Unified Modelling Language (UML).
Итерационная разработка программного обеспечения в RUP предполагает разделение проекта на несколько мелких проектов, которые выполняются последовательно, и каждая итерация разработки четко определена набором целей, которые должны быть достигнуты в конце итерации. Конечная итерация предполагает, что набор целей итерации должен в точности совпадать с набором целей, указанных заказчиком продукта, то есть все требования должны быть выполнены.
RUP достаточно хорошо формализован, и наибольшее внимание уделяется начальным стадиям разработки проекта - анализу и моделированию. Таким образом, эта методология направлена на снижение коммерческих рисков (risk mitigating) посредством обнаружения ошибок на ранних стадиях разработки. Технические риски (assesses) оцениваются и “расставляются” согласно приоритетам на ранних стадиях цикла разработки, а затем пересматриваются с течением времени и с развитием проекта в течение последующих итераций. Новые цели появляются в зависимости от приоритетов данных рисков. Релизы версий распределяются таким образом, что наиболее приоритетные риски устраняются первыми.
Процесс предполагает эволюционирование моделей; итерация цикла разработки однозначно соответствует определенной версии модели программного обеспечения. Каждая из итераций (workflow) содержит элементы управления жизненным циклом программного обеспечения: анализ и дизайн (моделирование), реализация, интегрирование, тестирование, внедрение. В этом смысле RUP является реализацией спиральной модели, хотя довольно часто изображается в виде графика-таблицы.
Рассмотрим основные компоненты RUP.
RUP предоставляет структурированный подход к итерационной разработке программного обеспечения, подразделяя процесс на четыре основные фазы во времени (milestones): Inception (исследование, начало), Elaboration (уточнение плана), Construction (конструирование, построение) и Transition (переход, развертывание). На рис. 1.2 представлено широко
распространенное изображение фаз RUP. Целями каждой из данных фаз являются:
• Inception - понимание, что мы создаем. Фаза сбора информации и анализа требований, определение образа проекта в целом;
• Elaboration - понимание, как мы это создаем. Фаза анализа требований и проектирования системы, планирование необходимых действий и ресурсов, спецификация функций и особенностей дизайна;
• Construction - создание бета-версии продукта. Основная фаза разработки и кодирования, построение продукта как восходящей последовательности итераций (версий кода);
• Transition - создание конечной версии продукта. Фаза внедрения продукта, поставка продукта конкретному пользователю.
13///////////////////////////////////////////////////////13/////////////////////////////////////////////////////13///////////////////////////////////////////////////13///////////////////////////////////////////////////13
Наиболее известные продукты, компании Rational Software поддерживающие Rational Unified Process приведены в таблице 1.1. Эти продукты (а также некоторые другие) входят в состав Rational Suite - интегрированного набора продуктов, предназначенный для поддержки командной работы над проектом на каждой фазе жизненного цикла разработки информационной системы. Rational Suite является уникальным семейством продуктов, позволяющим поднять на новый уровень разработку программного обеспечения. Пользователи и разработчики Rational Suite получают следующие преимущества:
- Объединение. Suite объединяет усилия аналитиков, разработчиков и тестировщиков, снимая барьеры, которые обычно существуют между группами сотрудников, работающих над одним проектом.
- Оптимизацию. Rational Suite оптимизирует работу сотрудников, предоставляя необходимый набор инструментальных средств для выполнения специфических задач каждого члена команды.
- Упрощение. Suite упрощает установку, поддержку и совместное использование продуктов, входящих в состав пакета. И, что немаловажно, за счет такой интеграции стоимость полного пакета гораздо меньше стоимости отдельных компонентов.
Rational Suite имеет несколько вариантов поставок, отличающихся наборами входящих в них продуктов и, соответственно, ценой:
- Rational Suite AnalystStudio. Предназначен для определения и управления полным и четким набором требований на разработку проекта. Данная редакция продукта рекомендуется для аналитиков проектов.
- Rational Suite DevelopmentStudio. Обеспечивает все функции визуального моделирования информационных систем на основе известных и проверенных на практике продуктов. DevelopmentStudio предоставляет все необходимое для создания высококачественного программного продукта в установленные сроки и в рамках бюджета. Rational Suite DevelopmentStudio предназначен для проектировщиков и разработчиков информационных систем.
- Rational Suite TestStudio. Представляет собой набор инструментов, предназначенных для детального тестирования приложений. Позволяет избежать большого количества рутинной работы, гарантирует тестирование всех составляющих приложения, что невыполнимо при тестировании вручную. Редакция предназначена для тестировщиков приложений.
- Rational Suite Enterprise. Полнофункциональная редакция пакета, обеспечивает поддержку полного жизненного цикла разработки информационной системы. Продукт предназначен как для менеджеров проекта, так и для отдельных программистов, выполняющих несколько функциональных ролей в команде разработчиков.
- Rational Suite PerformanceStudio. Полнофункциональный набор средств для отладки и тестирования программного обеспечения. Предназначен для компаний, занимающихся разработкой и тестированием программного обеспечения
Ответы на 11/12/13
14/////////////////////////////////////////14///////////////////////////////////////////14/////////////////////////////////////////////14///////////////////////////////////////////14
Уже два десятилетия корпорация Borland занимается созданием систем разработки и развертывания программных продуктов. Ее инструменты пользуются неизменным спросом у профессиональных разработчиков ПО, несмотря на сильную конкуренцию, в первую очередь со стороны таких поставщиков платформ, как Microsoft, IBM, Oracle и Sun.
Кроме того, в арсенале Borland есть множество инструментов, которые охватывают весь процесс разработки ПО - от выработки требований до сопровождения.
Реализация ALM-стратегии в исполнении Borland заключается в предоставлении комплекса взаимосвязанных инструментов для всех этапов жизненного цикла приложений, таких, как определение требований, анализ и проектирование, разработка, тестирование, развертывание и управление (рис. 1.3). Этот продукт фирмы получил название Borland Suite.
15/////////////////////////////////////////////////////15////////////////////////////////////////////////////////15//////////////////////////////////////////////////15//////////////////////////////////////////////15
Borland Suite. Он представляет собой набор лучших в своем классе технологий для управления всеми основными элементами процесса разработки приложений и является высоко интегрированным решением, разработанным для ускорения процесса управления жизненным циклом приложений и обеспечения конкурентного преимущества. В таблице 1.2 приведен перечень систем Borland ALM, дополняющих .NET Framework.
Это решение предназначено не только для разработчиков. Подход компании Borland был разработан для координации целой группы сотрудников, использующих бизнес-системы, включая проектировщиков, аналитиков, тестеров, группу развертывания, коллективы программистов и их менеджеров.