• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2019/2020

Научно-исследовательский семинар "Компонентно-ориентированное программирование"

Статус: Курс по выбору (Программная инженерия)
Направление: 09.03.04. Программная инженерия
Когда читается: 2-й курс, 1-3 модуль
Формат изучения: без онлайн-курса
Язык: русский
Кредиты: 3
Контактные часы: 50

Программа дисциплины

Аннотация

Целями освоения дисциплины являются изучение основ и получение практических навыков использования парадигмы программирования, исторически связанной со становлением программной инженерии как раздела компьютерных наук, – с компонентно-ориентированным программированием. Сам термин «программная инженерия» возник в связи с переносом идеи использования компонент из области разработки аппаратных средств на область разработки программного обеспечения. Основными задачами дисцилины являются: изучение взаимосвязи парадигмы компонентно-ориентированного рограммирования с другими парадигмами и технологиями программирования и знакомство с принципами использования программных компонент при разработке программного обеспечения для различных областей применения. Рассматриваются различные компонентные модели, применяемые в современных программных платформах (.Net, Java), и различные области их применения – от моделирования собственно аппаратных средств комьютеров до современных инструментов компьютерной графики (2D, 3D) и интернет-приложений. Дисцилина сочетает ознакомление с различными компонентными моделями с самостоятельным их изучением и обсуждением в форме докладов на семинарах.
Цель освоения дисциплины

Цель освоения дисциплины

  • Целями научно-исследовательского семинара «Компонентно-ориентированное программирование» являются формирование у студентов профессиональных знаний и навыков, связанных с общей методологией научного исследования, и их применение к анализу, изучению и использованию компонентных моделей и собственно программных компонент, применяемых при разработках современного программного обеспечения.
Планируемые результаты обучения

Планируемые результаты обучения

  • Знать основные принципы компонентно-ориентированного программирования и их место в программной инженерии в целом.
  • Владеть навыками выступлений с научными докладами
  • Знать методы определения и использования программных компонент
  • Знать распространенные технологии компонентно-ориентированного программирования и соответствующие инструментальные средства
  • Уметь применять методы компонентно-ориентированного программирования при проектировании программного обеспечения
  • Уметь использовать существующие компонентные модели и имеющиеся для них наборы программных компонент при решении задач программной инженерии
  • Уметь реализовывать программные компоненты в соответствии с общими компонентынми моделями;
  • Уметь использовать существующие компонентные модели и имеющиеся для них наборы программных компонент при решении задач программной инженерии;
  • Уметь реализовывать программные компоненты в соответствии с общими компонентынми моделями
  • Владеть навыками использования и композиции различных программных компонент при прпоектировании современных программных систем для современных платформ (.Net и Java)
  • Владеть навыками использования инструментальных средств, применяемых при компонентно-ориентированном программировании
  • Владеть навыками практической реализации результатов научного исследования
  • Уметь применять методы компонентно-ориентированного программирования при проектировании программного обеспечения;
  • Знать основные принципы компонентно-ориентированного программирования и их место в программной инженерии в целом
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Роль компонентно-ориентированного программирования в решении задач программной инженерии
    Парадигма компонентно-ориентированного программирования. Исторические аспекты. Компонентные модели и определения компонент. Использование компонентных моделей и соответствующих программных компонент при программировании на популярных языках программирования: преимущества и недостатки. Классы задач, при решении которых целесообразно использование компонентно-ориентированного подхода. Обсуждение системы команд компьютера и машинного представления программы с позиций компонентно-ориентировванного программирования. Сравнение технологий создания и использования аппаратных и программных компонент в системной и программной инженерии, соответственно. Примеры и демонстрации.
  • Программные компоненты в платформе .Net, их создание и использование
    Возможности компонентного программирования, предусмотренные и определенные в namespace System.ComponentModel. Использование программных компонент в библиотеке WPF для решения задач разработки GUI. Средства 3D-графики с использованием компонент WPF. Демонстрации практических примеров и обзор технологии создания и использования программных компонент (инструментальные средства).
  • Моделирование аппаратных и программных средств компьютера с помощью программных компонент
    Построение виртуального компьютера и его программного обеспечения с использованием программных компонент на примере проекта Nand2Tetris Проект (open source) позволяет рассматривать различные аспекты моделированния компьютера с позиций использования программных компонент: - Hardware Definition Language (HDL), его использование и реализация средствами про-граммных комонент; - базовые и составные компоненты, их скомпилированные и скомпонованные (средствами HDL) реализации, инструментальная поддержка (архитектура и реализация) разработки и отладки компонент, оисанных средствами HDL; - моделирование основных составных частей компьютера (оперативная и постоянная па-мять, арифметико-логическое устройство, устройство управления, подсистема ввода-вывода) средствами программных компонент; - компонентный подход к созданию программного обеспечения виртуального компьютера.
  • Использование программных компонент при создании современных сетевых и web-приложений
    Разновидности программных компонент, применяемых в сетевых и web-приложениях. Моделирование сетевых приложений с помощью компонентно-ориентированного инструмента OmNet++ и его архитектурные особенности. Обсуждение материалов проекта Ptolemy II. Подготовка действующих примеров и демонстрационных материалов.
  • Использование аппаратно-программных компонент в беспроводных сенсорных сетях
    Принципы функционирования беспроводных сетей стандарта IEEE 802.15.4/ZigBee. Принципы и средства реализации програмного обеспечения узлов беспроводных сетей, стек протоколов стандарта ZigBee. Язык nesC - network embedded systems C – диалект языка Си для компонентно-ориентированного программирования встроенных систем. Моделирование беспроводных сенсорных сетей как сетей взаимодействующих программно-аппаратных компонент. Инструментальные средства компонентного моделирования и реализации беспроводных сенсорных сетей.
  • Компонентная модель JavaBeans и ее использование в Java-платформе
    Определение JavaBeans-компонент. Соглашения о разработке JavaBean-комонент (JavaBeans Design Patterns). Обзор средств пакета java.beans и связь с механизмами reflection в Java Development Kit (BDK). Обсуждение возможностей, архитектуры и реализации приложения BeanBox из BDK для манипулирования JavaBeans-компонентами. Демонстрация технологии программирования JavaBeans-компонент и их тестирования с примменением BDK.Недостатки BDK и возможности их устранения средствами современных JDK.
  • Использование JavaBeans-компонент при разработке 2D GUI средствами AWT, Swing, JavaFX
    Связь программных компонент из библиотек AWT, Swing и JavaFX с компонентной моделью JavaBeans и особенности их архитектуры, способов использования и реализации. Сравнение с компонентами WPF платформы .Net (тема 1). Инструметальные средства, предоставляемые популярными Java IDE для разработки 2D GUI, и их сопоставление со средствами BDK (тема 6).
  • Использование программных компонент в трехмерной компьютерной графике на примере языков VRML/X3D
    Идеология стандартов ISO для компьютерной графики: языки Virtual Reality Modeling Language (VRML) и Extensible 3D Graphics (X3D). Описание трехмерных сцен как ацикли-ческих графов из инстансов стандартных комонент. Типы встроенных и определяемых пользователем программных компонент. Обзор существущих реализаций стандартов VRML и X3D. Примеры использования и демонстрации.
  • Принципы реализации языков VRML/X3D средствами JavaBeans-компонент
    Общая архитектура библиотеки JavaBeans-компонент для реализации 3D-графики. Основы реализации программного платформо-независимого 3D-рендерера на Java-платформе. Роль контекстов использования инстансов программных компонент при реализации 3D-сцены и ее отображения. Компонентная реализация параллельного отображения 3D-сцены разными камерами. Использование стандартного приложения BDK для создания, управления поведением и отображения 3D-сцен, реализованных средствами JavaBeans-компонент.
  • Недостатки компонентной модели JavaBeans для реализации определяемых пользователем типов в языках VRML/X3D
    Ограничения и недостатки стандартных JavaBeans-компонент: их причины и следствия. Способы реализации определяемых типов (PROTO-типов) в существующих реализациях VRML/X3D. Сопоставление понятий макро-определения и макро-вызова, объекта-прототипа и инстанциируемого типа (компонента) с позиций реализации определяемых пользователем PROTO-типов в VRML/X3D. Возможности динамического определения типов объектов (их загрузки) в платформах Java и .Net. Способы создания, сохранения и распространения составных объектов из инстансов программных компонент: кодогенерация, клонирование и сериализация.
  • Перспективные направления развития компонентной модели JavaBeans. Принципы реализации
    Принципы реализации определяемых пользователем составных компонент путем динами-ческого преобразования работающего составного прототипа в инстанциируемый тип (со-ставной компонент). Мета-компоненты для реализации преобразования прототипа в тип (составной компонент). Перспективы использования расширенной компонентной модели JavaBeans в различных прикладных областях компонентно-ориентированного программи-рования.
Элементы контроля

Элементы контроля

  • неблокирующий учет посещаемости семинаров (П)
  • неблокирующий выступление с докладом (В)
  • неблокирующий активность участия в обсуждении докладов (О)
  • неблокирующий демонстрация программ (Д)
  • неблокирующий устный экзамен (Э)
    Экзамен не проводится. Оценка выставляется по накопленной.
Промежуточная аттестация

Промежуточная аттестация

  • Промежуточная аттестация (3 модуль)
    Оценки элементов текущего контроля дают накопленную оценку, которая учитывается при вычислении итоговой оценки Онакопл. = max (10, П + О + В + Д). Итоговая оценка Орезульт по 10-балльной шкале определяется по формуле: Орезульт = Округление(0,5 ∙Онакопл + 0,5 ∙Э), где накопленная оценка текущего контроля (учет посещаемости и активности участников) по 10-бальной шкале, Э- оценка за экзамен по 10-бальной шкале.
Список литературы

Список литературы

Рекомендуемая основная литература

  • Wang, A. J. A., & Qian, K. (2005). Component-Oriented Programming. Hoboken, N.J.: Wiley-Interscience. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=131749

Рекомендуемая дополнительная литература

  • Grinkrug, E. (2014). Dynamic Component Composition. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsbas&AN=edsbas.1E3025C
  • Гринкруг, Е. (2010). Использование Javabeans-Компонент В 3D-Моделировании. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsbas&AN=edsbas.C1F1B80B