• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Конструирование программного обеспечения

2019/2020
Учебный год
RUS
Обучение ведется на русском языке
8
Кредиты

Автор программы


Зыков Сергей Викторович

Преподаватели

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

Аннотация

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

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

  • развитие у студентов компетенций проектирования и конструирования программного обеспечения с использованием современных языков, технологий и инструментальных средств разработки программного обеспечения
Результаты освоения дисциплины

Результаты освоения дисциплины

  • Знает основные принципы конструирования программного обеспечения. Способен строить структуры данных и реализовывать их в программном коде. Способен проектировать, конструировать и тестировать программные продукты
  • Знает понятие делегата и события, области их применения. Способен проектировать, конструировать и тестировать программные продукты. Способен создавать программные интерфейсы
  • Знает основные принципы структурного подхода. Способен строить диаграммы в нотациях IDEF0, DFD, ERD. Способен моделировать, анализировать и использовать формальные методы конструирования программного обеспечения. Способен понимать стандарты и модели жизненного цикла
  • Способен строить диаграммы в нотации UML. Способен моделировать, анализировать и использовать формальные методы конструирования программного обеспечения. Способен понимать стандарты и модели жизненного цикла
  • Знает основные классы для работы с файлами и сериализацией. Способен разрабатывать приложения, выполняющие сериализацию данных и манипулирование файлами
  • Знает основные классы технологии ORM, LINQ. Способен использовать технологии ORM, LINQ при разработке программного обеспечения
  • Знает основные классы для разработки многопоточных приложений. Способен проектировать, конструировать и тестировать многопоточные приложения
  • Знает принципы подхода SOLID. Способен применять принципы SOLID при разработке программного обеспечения, выполнении рефакторинга кода
  • Понимает назначение CASE технологий. Имеет представление о современных CASE средствах.
  • Знает основные принципы моделирования, классификацию моделей
  • Знает основные принципы объектно-ориентированного подхода
  • Понимает принципы предметно-ориентированного подхода. Способен строить метамодели предметно-ориентированных языков
  • Знает основные классы технологии ADO.Net. Способен использовать технологию ADO.Net при разработке программного обеспечения
  • Знает основные классы технологии ASP.Net. Способен использовать технологию ASP.Net при разработке программного обеспечения
  • Знает назначение паттернов проектирования, принципы паттерна MVC
  • Знает основные принципы применения атрибутов и небезопасного кода при разработке программного обеспечения
Содержание учебной дисциплины

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

  • Тема 4. Объектно-ориентированный подход к моделированию
    Объектно-ориентированных подход к моделированию процессов и систем. Базовые принципы объектно-ориентированного подхода к моделированию, его преимущества и недостатки. Сравнение объектно-ориентированного и структурного подходов к моделированию.
  • Тема 3. Структурный подход к моделированию
    Структурный подход к моделированию. Базовые принципы структурного подхода к моделированию, его преимущества и недостатки. Основные типы используемых диаграмм: IDEF0 (SADT), ERD, DFD: краткая характеристика, базовые конструкции, примеры построения диаграмм.
  • Тема 2. Модели. Моделирование. Языки моделирования. Метамоделирование
    Понятие модели и моделирования. Свойства моделей. Принципы моделирования. Классификация моделей (по точке зрения на систему, по степени абстракции, классификация Буча). Примеры. Метамоделирование. Понятие метамодели, метамоделирования. Классификация метамоделей. Примеры метамоделей. Многоуровневое моделирование. Классификация информационных систем по количеству уровней моделей и их расположению. Понятие языка моделирования. Примеры. Понятие метаязыка. Примеры метаязыков.
  • Тема 1. Понятие конструирования программного обеспечения
    Понятие конструирования программного обеспечения его связь с другими областями программной инженерии. Основы конструирования: минимизация сложности, ожидание изменений, конструирование с возможностью проверки, стандарты в конструировании. Управление конструированием: модели конструирования, планирование конструирования, изменения в конструировании. Практические соображения: проектирование в конструировании, языки конструирования, кодирование, тестирование, повторное использование, качество, интеграция.
  • Тема 5. Язык UML
    Язык UML: история, поддерживаемые типы диаграмм. Диаграмма прецедентов, активностей, понятий, последовательностей, сотрудничества, компонентов, развертывания: основное назначение, характеристика диаграммы, базовые конструкции (элементы и связи между ними).
  • Тема 6. Предметно-ориентированное моделирование
    Понятие предметно-ориентированных языков (DSL), их классификация, примеры. Преимущества и недостатки предметно-ориентированного моделирования. Использование DSL при разработке ИС. Подходы к разработке DSL. Понятие DSM-платформы (языкового инструментария). Требования к инструментальным средствам разработки DSL. Архитектура DSM-платформ.
  • Тема 7. Делегаты и события
    Понятие делегата, области использования. Внутреннее представление делегата. Описание делегатов. Основные члены (свойства и методы) классов Delegate и MulticastDelegate. Многоадресатная передача. Особенности использования многоадресатной передачи. Обобщенные делегаты. Делегаты Action и Func. Понятие события, области использования. Многоадресатная передача события. Использование событийных средств доступа. Программа, управляемая событиями.
  • Тема 8. Атрибуты и небезопасный код
    Атрибуты в C#. Классы атрибутов. Позиционные и именованные параметры атрибутов. Типы параметров атрибута. Спецификация атрибутов. Имена классов атрибутов. Значение аргументов атрибута. Зарезервированные атрибуты: AttributeUsage, Conditional, Obsolete. Небезопасный код: понятие, назначение. Небезопасные контексты. Понятие и назначение указателей. Тип указателя. Передача указателя в качестве параметра. Результат метода, как указатель. Операции над указателями. Фиксированные и перемещаемые переменные. Разыменование указателей. Операция получения адреса. Преобразование указателей. Доступ к элементу объекта и массива через указатель. Арифметические операции над указателями. Сравнение указателей. Операция sizeof и fixed. Буферы фиксированного размера. Доступ к элементам буфера. Выделение памяти в стеке.
  • Тема 9. Технология ADO.Net
    Технология ADO.NET: краткая характеристика, назначение, уровни. Поставщики данных ADO.NET. Основные типы пространства имен System.Data. Абстрагирование поставщиков данных. Подключенный уровень ADO.NET: особенности, преимущества, недостатки. Строка подключения, ее формат. Основные члены (свойства и методы) класса DbConnection. Класс ConnectionStringBuilder. Класс SqlCommand. Основные члены (свойства и методы) класса SqlCommand. Объекты чтения данных. Получение результата нескольких выборок данных. Методы ExecuteReader, ExecuteScalar, ExecuteNonQuery. Класс DataTable. Параметризированные запросы. Основные члены (свойства и методы) класса DbParameter. Хранимые процедуры. Вызов хранимой процедуры. Транзакции. Основные члены (свойства и методы) класса DBTransaction. Автономный уровень ADO.NET: особенности, преимущества, недостатки. Адаптер данных. Схема работы адаптера данных. Класс DataSet. Основные члены (свойства и методы) класса DataSet. Коллекции DataTableCollectionи DataRelationCollection, PropertyCollection. Класс DataColumn. Основные члены (свойства и методы) класса DataColumn. Автоинкрементное поле. Класс DataRow. Основные члены (свойства и методы) класса DataRow. Класс DataTable. Основные члены (свойства и методы) класса DataTable. Добавление объектов DataTable в DataSet. Получение данных из DataSet. Класс DataTableReader. Сериализация объектов: бинарная и XML. Классы DataGridView и DataView. Класс DataAdapter. Свойство TableMappings. Конфигурирование адаптера данных. Работа с адаптером данных. Создание отношений между таблицами. Запросы LINQ to DataSet.
  • Тема 10. Технология Object-Relational Mapping. Язык LINQ
    ADO.NET Entity Framework: особенности, преимущества, недостатки. Назначение Entity Framework. Модель EDM. Элементы EDM. Создание сущностей в EDM. Entity Framework: служба объектов, клиент сущности. Отображение данных. Стратегии проектирования EDM. Класс ObjectContext. Основные члены (свойства и методы) класса ObjectContext. Коллекция ObjectSet<T>. Пример работы с EDM: обновление, удаление записи. Запросы LINQ to Entities. Запросы Entity SQL. Работа с EntityDataReader. Навигационные свойства. Вызов хранимой процедуры. Технология LINQ. Области использования. Разновидности LINQ. Типизация LINQ-выражений. Средства C# для работы с LINQ. Обработка массивов с использованием LINQ. LINQ и неявно типизированные переменные. Отложенное и немедленное выполнение LINQ-выражений. Возврат результата LINQ-запроса. Применение LINQ-запросов к объектам коллекций и необобщенным коллекциям. Фильтрация данных с использованием конструкции OfType<T>. Элементы (конструкции) LINQ-запросов. Базовый синтаксис выборки. Выборка объектов. Получение подмножества объектов. Проецирование новых типов. Обращение и сортировка результата выборки. Разность, пересечение, объединение, конкатенация множеств результатов выборки. Удаление дубликатов элементов. Агрегатные операции. Внутреннее представление LINQ-запросов.
  • Тема 11. Работа с файлами и сериализация
    Файловый ввод/вывод. Пространство имен System.IO. Элементы пространства имен System.IO. Классы для работы с файлами и каталогами. Классы Directory (DirectoryInfo) и File (FileInfo). Абстрактный базовый класс FileSystemInfo, свойства класса. Класс DirectoryInfo. Работа с DirectoryInfo. Метод GetFiles. Создание подкаталогов. Работа с типом Directory. Работа с типом Drivelnfo. Класс FileInfo, методы Create, Open, OpenRead, OpenWrite, OpenText, CreateText, AppendText. Работа с классом File, методы класса. Абстрактный класс Stream, элементы класса. Класс FileStream. Работа с классами StreamWriter и StreamReader. Основные элементы класса TextWriter. Чтение и запись в текстовый файл. Прямое создание экземпляров классов StreamWriter/StreamReader. Работа с классами StringWriter, StringReader, BinaryWriter и BinaryReader. Программное отслеживание файлов. Понятие сериализации объектов. Граф объектов: понятие, правила построения. Конфигурирование объектов при сериализации. Форматеры сериализации: BinaryFormatter, SoapFormatter, XmlSerializer. Сохранение точности типов при сериализации. Примеры сериализации объектов с использованием BinaryFormatter, SoapFormatter, XmlSerializer. Управление генерацией данных XML. Сериализация коллекций объектов. Настройка процесса SOAP и двоичной сериализации.
  • Тема 12. Многопоточные приложения
    Понятие процесса и потока. Применение потоков при разработке приложений. Получение ссылки на текущий поток, домен и контекст, в котором выполняется поток. Асинхронный вызов метода потока. Синхронизация вызывающего потока. Делегат AsyncCallback. Возвращение результата работы потока с помощью класса AsyncResult. Передача и получение специальных данных состояния. Основные элементы пространства имен System.Threading. Основные члены (свойства и методы) класса Thread. Приоритеты потоков. Создание вторичных потоков. Делегаты ThreadStart и ParametrizedThreadStart. Класс AutoResetEvent. Потоки переднего плана и фоновые потоки. Проблема параллелизма и синхронизации потоков. Синхронизация с использованием ключевого слова lock, типов Monitor и Interlocked, атрибута [Synchronization]. Программирование с использованием обратных вызовов Timer. Пул потоков CLR: понятие, назначение, преимущества и недостатки использования. Параллельное программирование с использованием Task Parallel Library. Пространство имен System.Threading.Tasks. Обеспечение параллелизма данных с помощью класса Parallel. Доступ к пользовательскому интерфейсу во вторичных потоках. Вызов метода с использованием класса Task. Ключевые слова async и await.
  • Тема 13. Технология ASP.Net
    ASP.NET Web Forms. Протокол HTTP. Цикл запрос/ответ в HTTP. HTTP-протокол без хранения состояния. Веб-приложение и веб-серверы. Виртуальные каталоги IIS. Веб-сервер разработки ASP.NET. Язык HTML. Структура HTML-документа. Инструменты визуального конструктора HTML. Построение HTML-формы. Сценарии клиентской стороны. Обратная отправка веб-серверу. Обратные отправки в ASP.NET. API-интерфейс ASP.NET. Основные функциональные возможности ASP.NET 2.0, ASP.NET 3.5, ASP.NET 4.0 и 4.5. Построение однофайловой веб-страницы ASP.NET. Описание логики доступа к данным. Роль директив ASP.NET. Блок script. Объявление элементов управления ASP.NET. Построение страницы ASP.NET с использованием файлов кода. Описание методов в файле кода. Отладка и трассировка страниц ASP.NET. Структура каталогов веб-сайта. Свойства класса Page. Элементы управления ASP.NET. Веб-элементы управления. Обработка событий серверной стороны. Свойство AutoPostBack. Основные члены (свойства и методы) классов Control и WebControl. Обход по элементам управления. Динамическое изменение элементов управления. Взаимодействие с динамически созданными элементами управления. Пространство имен System.Web.UI.HtmlControls. Мастер-страницы. Навигация по сайту с помощью TreeView. Проверка достоверности. Элементы управления проверкой достоверности: RequiredFieldValidator, RegularExpressionValidator, RangeValidator, CompareValidator. Свойства элементов управления проверкой достоверности. Группы проверки достоверности. Работа с темами в ASP.NET. Файлы *.skin. Каскадные таблицы стилей (CSS). Управление состоянием в ASP.NET. Проблема поддержки состояния. Приемы управления состоянием ASP.NET. Состояние представления ASP.NET. Добавление специальных данных в состояние представления. Файл Global.asax. Обработчики событий пространства имен System.Web. Глобальный обработчик исключений «последнего шанса». Состояние приложения и состояние сеанса. Основные члены (свойства и методы) класса HttpApplicationState. Данные состояния уровня приложения. Поддержка данных сеанса. Основные члены (свойства и методы) класса HttpSessionState. Работа с кешем приложения. Сооkiе-наборы. Элемент <SessionState>. Хранение данных сеанса на сервере. API-интерфейс ASP.NET Profile. Пользовательский профиль в web.config.
  • Тема 14. Паттерны. Паттерн MVC
    Шаблоны (паттерны) проектирования. История появления, назначение, классификация паттернов. Структура паттерна. Классификация паттернов по цели и уровню. Примеры. Решение задач проектирования ИС с помощью паттернов. Паттерн MVC: назначение, история появления. Недостатки ASP.Net Web Forms. Архитектура шаблона MVC. Модель, представление и контроллер в MVC. Особенности технологии ASP.NET MVC: расширяемость, жесткий контроль над HTML и HTTP, тестируемость, мощная система маршрутизации, открытый код ASP.NET MVC. Возможности платформы ASP.NET MVC. Преимущества веб-приложения на основе MVC.
  • Тема 15. SOLID
    SOLID. История появления, назначение. Принципы SOLID: принцип единственной обязанности, принцип открытости/закрытости, принцип подстановки Лисков, принцип разделения интерфейсов, принцип инверсии зависимостей. Суть каждого принципа, примеры.
  • Тема 16. CASE-технологии
    CASE-средства: определение, назначение. Компоненты CASE-средств. Классификация CASE-средств по поддерживаемым этапам разработки, по компонентному составу. Факторы выбора CASE-средства. Процесс внедрения CASE-средства. Сравнение CASE-средств (Rational Rose, Silverrun, Oracle Designer/2000, Sybase PowerDesigner). Возможности CASE-системы Flexberry. Проектирование и разработка информационных систем с помощью Flexberry.
Элементы контроля

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

  • неблокирующий Лабораторная работа № 1
  • неблокирующий Лабораторная работа 2
  • неблокирующий Лабораторная работа № 3 (самостоятельная работа)
  • неблокирующий Лабораторная работа № 4
  • неблокирующий Лабораторная работа № 5
  • неблокирующий Лабораторная работа № 6
  • неблокирующий Лабораторная работа № 7
  • неблокирующий Лабораторная работа № 8
  • неблокирующий Лабораторная работа № 9
  • неблокирующий Экзамен
Промежуточная аттестация

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

  • Промежуточная аттестация (4 модуль)
    0.13 * Лабораторная работа 2 + 0.07 * Лабораторная работа № 1 + 0.12 * Лабораторная работа № 3 (самостоятельная работа) + 0.05 * Лабораторная работа № 4 + 0.05 * Лабораторная работа № 5 + 0.06 * Лабораторная работа № 6 + 0.12 * Лабораторная работа № 7 + 0.05 * Лабораторная работа № 8 + 0.05 * Лабораторная работа № 9 + 0.3 * Экзамен
Список литературы

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

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

  • Черткова Е. А.-ПРОГРАММНАЯ ИНЖЕНЕРИЯ. ВИЗУАЛЬНОЕ МОДЕЛИРОВАНИЕ ПРОГРАММНЫХ СИСТЕМ 2-е изд., испр. и доп. Учебник для академического бакалавриата-М.:Издательство Юрайт,2019-147-Бакалавр. Академический курс-978-5-534-09172-4: -Текст электронный // ЭБС Юрайт - https://biblio-online.ru/book/programmnaya-inzheneriya-vizualnoe-modelirovanie-programmnyh-sistem-437536

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

  • Антамошкин, О. А. Программная инженерия. Теория и практика [Электронный ресурс] : учебник / О. А. Антамошкин. - Красноярск: Сиб. Федер. ун-т, 2012. - 247 с. - ISBN 978-5-7638-2511-4.