Отрасль разработки программного обеспечения - одна из самых молодых и перспективных отраслей человеческой деятельности. В настоящее время сложность задач, стоящих перед отраслью, непрерывно возрастает, что требует применения специальных технологий организации и проведения процесса разработки программного обеспечения. Теоретическое изучение подобных технологий, совмещенное с их практическим применением, представляет собой исключительно важную часть подготовки специалиста в области разработки программного обеспечения.
Цель данного курса состоит в изучении основных путей организации и проведения успешных проектов в области разработки программного обеспечения на базе принципов
В рамках изучения курса предполагается решение следующих задач:
По окончании изучения курса студенты будут уметь использовать методологию
Курс опирается на материалы следующих курсов: CS101 "Введение в методы программирования", CS102 "Методы объектно-ориентированного программирования", CS105 "Дискретная математика" . Предполагается, что данный курс читается параллельно с курсом CS103 "Алгоритмы и структуры данных" с
(рис 1) Предполагаемая последовательность изучения курсов. Закрашенные части читаются одновременно
Данный курс читается в 4-ом семестре и опирается на прочитанные ранее общие курсы CS101 "Введение в методы программирования", CS102 "Методы объектно-ориентированного программирования", в рамках которых студенты знакомятся с фундаментальными понятиями, принципами и методами программирования, изучают основные алгоритмы, простейшие структуры данных, языки программирования
Конечно, уровень студента 2 курса все еще не позволяет овладеть этой темой полностью, поэтому учебный план предполагает изучение нескольких последовательно расположенных курсов, первым из которых, вводным, является данный курс - "Технологии программирования. Курс на базе
В качестве базовой методологии разработки программного продукта выбрана перспективная, хорошо себя зарекомендовавшая методология
На протяжении изучения курса на лекциях рассматривается специально разработанный пример, на основе которого иллюстрируются все этапы разработки программного продукта.
Наряду с изучением теоретической составляющей - проблематики и базовых принципов коллективной разработки программ, сути и принципов
В качестве некоторых управленческих ролей возможно привлечение магистрантов, имеющих некоторый опыт создания ПО в командах разработчиков.
Рассмотрим кратко
Во введении (лекция 1) дается понятие программного обеспечения (ПО), описывается проблема роста сложности разработки качественного продукта в заданные сроки в соответствии с имеющимся бюджетом, рассматриваются основные технологии программирования как средства борьбы со сложностью. Дается краткая характеристика курса, формулируются его цели, задачи и структура учебного плана.
Основная часть курса состоит из трех разделов.
Данный учебный курс рассчитан на студентов 2 курса, как правило, не имеющих существенного опыта практического программирования, программирования в команде, и, тем более, управления процессом разработки ПО. Убеждение авторов состоит в том, что для подготовки грамотного исполнителя необходимо не только привить ему навыки разработки ПО, изучить принципы командной работы, но и отчетливо выявить основные проблемы отрасли. Именно этому и посвящен первый раздел курса.
В первом разделе курса (лекция 2) дается обзор некоторых понятий и принципов программной инженерии. В частности разбирается понятие программной инженерии, процесса,
Во втором разделе курса (лекции 3, практики 1, 2, 3) идет речь о принципах
В третьем разделе курса (лекции 4, 5, 6, 7, практики 4, 5, 6, 7, 8) изучается
Введение
Важность предмета.
Программа и программное обеспечение, основные отличия. О рынке программного обеспечения.
Сложность управления процессом разработки программного обеспечения.
Технологии программирования как способ борьбы со сложностью.
Обзор технологий программирования (структурное, модульное, объектно-ориентированное,
Цели и задачи курса. Структура учебного плана. Основная и дополнительная литература, Интернет-источники.
1. Элементы программной инженерии.
1.1. Программная инженерия, основные понятия.
Инженерия и инженеры.
Программная инженерия как инженерная дисциплина.
Область действия программной инженерии и отличия от других инженерий.
Программные инженеры и их деятельность.
Программные инженеры и научная среда - ключевые различия и принципы успешного взаимодействия.
Показатели
1.2. Процесс создания программного обеспечения
Понятие процесса создания ПО. Основные стадии процесса.
Итерационные
2. Визуальное моделирование при анализе и проектировании. Основы Unified Modeling Language (UML).
2.1. Анализ и проектирование. Некоторые частные вопросы
2.1.1. Обзор принципов объектного подхода.
Алгоритмическая и объектная декомпозиции. Классы и объекты.
Объектно-ориентированный анализ.
Объектно-ориентированное проектирование.
Объектно-ориентированное программирование.
Принципы объектного подхода: абстрагирование, инкапсуляция, иерархия,
Пример: ООП и структуры данных. Проектирование структуры данных стек.
2.1.2. Повторное использование.
Идея повторного использования. Важность повторного использования.
Достоинства повторного использования. Виды повторного использования.
2.2.
Идея
Необходимость универсального языка для
История возникновения и развития языка
2.3. Структура языка
Модели
Диаграммы и понятия
2.4. Учебный пример: Задача о разработке программного комплекса бронирования билетов для авиакомпании "SRS - Seat Reservation System". Постановка задачи.
2.5. Визуальное описание модели функционирования системы средствами
Понятия Актера и Варианта использования.
Ассоциация между Актером и Вариантом использования.
Диаграмма действия.
Пример: Использование средств UML для визуального моделирования поведения программной системы "SRS".
2.6. Классы, объекты, поля, методы, подсистемы, компоненты, пакеты и их отображение средствами
Пример: Использование средств UML для визуального проектирования программной системы "SRS".
2.7. Проектирование системы.
Пример: Использование средств UML для визуального проектирования программной системы "SRS".
3. Методология создания программных решений Microsoft Solutions Framework.
3.1. Введение в методологию
Что такое
3.2. Нововведения версии
Разделение методологии на два направления:
3.3. Формирование команды.
Основные принципы построения команды.
"
Каждая ролевая группа имеет зону ответственности и защищает интересы заинтересованных лиц из этой зоны.
"Масштабируемость" модели
Ролевые группы и роли, зоны ответственности ролевых групп, их задачи и взаимодействие с заинтересованными лицами.
Рекомендации по возможному объединению ролей.
Пример: Задача о разработке программного комплекса бронирования билетов для аэропорта.
3.4.
Основные сведения о рисках.
Планирование
Процесс
Пример: Задача о разработке программного комплекса бронирования билетов для аэропорта. Выделение рисков.
3.5.
Принципы модели процессов.
Взаимодействуйте с "заказчиками".
Поощряйте свободный обмен информацией в проекте.
Создавайте "единое видение проекта".
Следите за качеством продукта.
Проявляйте гибкость - будьте готовы к изменениям.
Ставьте "вехи".
Будьте готовы к внедрению сегодня.
Схема процесса разработки.
Основные структурные единицы схемы: циклы, фазы и вехи.
Цикличность всех уровней процесса разработки. Примеры циклов в различных задачах на различных уровнях:
Фазы и вехи процесса разработки: выработка концепции, планирование проекта, разработка решения, стабилизация решения, внедрение решения. Распределение задач по фазам. Выбор продолжительности фаз. Принцип "каждой фазе - свои вехи". Вопросы, определяющие выполнение очередной фазы и достижение соответствующей вехи.
3.6. Старт проекта. Фаза выработки концепции.
Основные задачи фазы: создание ядра
Задачи
Рекомендуемые
Результаты фазы: "Общее описание и рамки проекта", "Документ
Пример: Задача о разработке программного комплекса бронирования билетов для аэропорта. Выработка концепции.
3.7. Планирование проекта. Фаза планирования.
Основные задачи фазы: анализ и документирование проектных требований, подготовка функциональной спецификации, разработка дизайнов, подготовка рабочих планов, оценка проектных затрат и сроков разработки различных составляющих проекта.
Категории проектных требований. Уровни процесса проектирования.
Задачи
Рекомендуемые
Результаты фазы: "
3.8. Разработка решения. Фаза разработки.
Основная задача фазы - создание компонент решения, включая как документацию, так и программный код.
Задачи
Рекомендуемые
Результаты фазы: "Исходный и исполняемый код приложений", "Скрипты установки и конфигурирования", "Окончательная
3.9. Стабилизация решения. Фаза стабилизации.
Основные задачи
Задачи
Рекомендуемые
Результаты фазы: "Окончательный продукт", "Документация выпуска", "Материалы поддержки решения", "Результаты и инструментарий тестирования", "Исходный и исполнимый код приложений", "Проектная документация", "Анализ пройденной фазы".
3.10. Внедрение решения. Фаза внедрения.
Основные задачи фазы: внедрение технологий и компонент решения, стабилизация внедренного решения, передача работ персоналу поддержки и сопровождения, получение со стороны заказчика окончательного одобрения результатами проекта, анализ выполненной работы и удовлетворенности заказчика.
Задачи
Рекомендуемые
Результаты фазы: "Информационные системы эксплуатации и поддержки", "Процедуры и процессы", "Базы знаний, отчеты, журналы протоколов", "Версии проектных документов, массивы данных и программный код, разработанные во время проекта", "Отчет о завершении проекта", "Окончательные версии всех проектных документов", "Показатели удовлетворенности заказчика и потребителей", "Описание последующих шагов".
Данный курс является вводным курсом в рамках направления "Программная инженерия" и затрагивает следующие элементы курса SE201:
CMP.ct - Технологии разработки
MAA.md - Моделирование
MAA.tm -
MAA.rfd - Требования
MAA.rsd - Спецификация и документирование требований
MAA.rv - Проверка требований
DES - Проектирование
PRO.imp - Процесс разработки
MGT - Управление процессом разработки
Цель данного лабораторного практикума состоит в практическом знакомстве с процессом командной разработки программного обеспечения на примере
В процессе выполнения лабораторного практикума предполагается решение следующих задач:
Лабораторный практикум предполагает разбиение группы студентов на команды по 5-7 человек, распределение ролей в каждой команде в соответствии с положениями методологии
В первом разделе (практики 1, 2, 3) повторяются принципы объектного подхода и важные аспекты повторного использования, а также демонстрируется применение унифицированного
Во втором разделе (практики 4, 5, 6, 7, 8) каждая команда выбирает задачу из списка, предложенного преподавателем, и последовательно проходит через этапы: распределение ролей (в отличие от положений
В процессе разработки преподаватель выступает в роли заказчика. Постановки задач даются студентам в краткой форме. Задача студентов - извлечь из заказчика необходимые сведения.
Результатом работы команды должен быть работающий прототип системы и необходимые документы, являющиеся результатами прохождения фаз согласно методологии
Внедрение полученного каждой командой решения предполагается в одной из других команд. Таким образом, в процессе оценки решения участвует преподаватель, как лицо, принимающее решения со стороны заказчика, и другая команда, в качестве потенциальных пользователей.
Цель занятия: Повтор принципов
Содержание занятия:
Выполнение объектной декомпозиции на примере задач из курса CS103 "Алгоритмы и структуры данных". Разбор вариантов проектирования.
Цель занятия: Знакомство с построением
Содержание занятия:
Цель занятия: Знакомство с построением
Содержание занятия:
Цель занятия: Прохождение фазы выработки концепции в каждой команде.
Содержание занятия:
Каждая команда:
Цель занятия: Прохождение фазы планирования в каждой команде.
Содержание занятия:
Каждая команда:
Цель занятия: Прохождение фазы разработки в каждой команде.
Содержание занятия:
Каждая команда:
Цель занятия: Прохождение фазы стабилизации в каждой команде.
Содержание занятия:
Каждая команда:
Цель занятия: Прохождение фазы внедрения в каждой команде.
Содержание занятия:
Каждая команда:
В приложении приведены краткие и полные постановки задач для лабораторного практикума. Студентам во время занятий будут озвучены краткие постановки, все остальное, необходимое для проектирования и реализации, они должны выяснить у преподавателя.
На рынок вышла новая авиакомпания "GlobalAvia". Менеджеры компании решили заказать у вашей фирмы разработку системы бронирования билетов. При заказе фирма поставила ряд условий, которые обязательно должны быть выполнены. В первой версии системы они хотят видеть две части. Работа первой части системы связана с занесением информации. Вторая часть системы предназначена для общения с клиентами.
При формулировании требований менеджеры упомянули, что рейсы спланированы так, что до пункта назначения можно долететь с пересадками. Одно из требований заключалось в том, чтобы система помогала покупать билеты в зависимости от пожеланий пользователя.
Объекты системы: распределенное хранилище рейсов, покупатель билетов, менеджер рейсов.
Среди причин:
В ответ, пользователь должен иметь возможность поменять параметры с учетом предыстории.
Фирма "NewMeteo" желает заказать у вас систему обработки метеоинформации, состоящую из двух частей. Первая предназначена для создания и редактирования карт местности. Вторая для нанесения на карты движения воздушных масс и циклонов. Процесс движения должен задаваться формулами. В целом система должна давать возможность благодаря анимации получить наглядное представление об изменении метеоусловий на несколько дней вперед.
Функционирование системы предполагается на локальном компьютере. Работа в системе должна включать в себя три части:
Для редактирования карт и задания движения воздушных масс предполагается, разработка редактора
Желательно обеспечить возможность заливки внутренности замкнутых объектов выбранным цветом.
Объекты системы:
Карта, изображение воздушных масс: набор векторных примитивов.
Подсистема расчета движения воздушных масс: в простейшем случае статические формулы. Более сложный случай - имитационная система или
Режим просмотра изменения метеоусловий: подсистема, которая должна быть реализована в двух видах:
Система должна уметь сохранять результат работы в определенном формате (рекомендуется XML). Возобновлять состояние после загрузки сохраненных данных, при этом желательно реализовать контроль правильности формата читаемого файла.
Фирма "OurResearch" занимается написанием математических программ по заказу. При этом в фирме часто приходится писать отчеты заказчику. При написании отчетов заказчик хочет видеть в отчетах математические формулы в классическом виде.
У Вашей фирмы компания решила заказать удобное средство для перевода и написания математических выражений в разные форматы представления. Причем, если в редакторе присутствует ряд взаимосвязанных формул, то фирма хочет видеть адекватный код. При этом известно, что фирма часто использует C/C++, Pascal и Fortran.
Необходимо разработать систему для редактирования и написания математических формул.
Объекты системы: формула, формульный редактор.
Формула: математическое выражение в одном из видов, желательно, что бы редактор сам распознавал язык и вид выражения по сигнатуре.
Формульный редактор: визуальная часть. Должен позволять:
Дополнительно система должна обеспечивать сохранение формул в нескольких форматах (например, в XML).
Редактор должен включать в себя конвертор в различные форматы, к примеру, перевод формулы в стандартное выражение для C/C++, Pascal и Fortran.
Также обязательно нужна возможность перевода формулы в BMP-изображение.
Необходимо реализовать на стороне сервера хранилище, в которое можно помещать алгоритмы в некотором стандартном виде, а потом исполнять их. Для простоты алгоритмы могут представлять собой математические формулы. В алгоритмах должны быть заявлены следующие данные:
Доступ к алгоритмам должен быть ограничен на основе разделения прав по ролям.
Web-сервис должен быть рассчитан на небольшое число пользователей и работу в локальной сети. К web-сервису должен быть реализован разделенный доступ пользователей.
Объекты системы: пользователь, роль, алгоритм, web-сервис.
Пользователи: логин, пароль, роль.
Пользователь может на web-сервисе осуществлять следующие действия:
Роль: представляет собой список пользователей.
Алгоритм: название, код (математическое выражение), принадлежность пользователю, входные и
Web-сервис предоставляет следующие возможности:
Для хранения алгоритмов на сервере создается дерево каталогов и файлов. Для каждого пользователя создается корневой каталог. В этом каталоге могут храниться, как алгоритмы (файлы с кодом), так и другие каталоги. Разделения прав осуществляется на основе специального файла со списком пользователей, которым доступна эта папка. Права на папку наследуются. Также можно разрешить доступ сразу группе пользователей, принадлежащих определенной роли.
Редактировать алгоритм может только пользователь, выложивший алгоритм.
Исполнить алгоритм могут только те пользователи, которым доступна папка с алгоритмом. Исполнение производится через специальный интерфейс.
Руководство фирмы "Effectiveness" пришло к выводу, что производительность труда ее сотрудников не достаточно полно соответствует громкому имени компании. В результате проведенных исследований была выявлена основная причина - недостаточная эффективность обмена информацией между сотрудниками. В качестве решения руководство видит внедрение единого средства электронной коммуникации. Отделу разработчиков компании поручено создать систему, включающую в себя почтовый инструмент и инструмент для обмена мгновенными сообщениями.
Требуется реализовать комплексную систему обмена сообщениями для небольшого количества пользователей.
Система должна удовлетворять следующим требованиям:
Объекты системы: пользователь, сервер, письмо, список контактов, быстрое сообщение,
Пользователь: ФИО, логин, пароль.
Сервер: представляет собой хранилище почты и маршрутизатор сообщений. Сервер должен разграничивать доступ к информации различных пользователей. Каждый пользователь может получить только свою почту. Пользователь может присоединяться к чатам и участвовать в обсуждении, но только в том случае, если он входит в список тех, кому разрешен доступ.
Письмо: для написания писем предполагается разработка простейшего текстового редактора. Внутренний формат - некоторая
Быстрое сообщение: обычное текстовое сообщение, для генерации которого используется редактор письма. Отличие от почты в том, что сообщение видят все, находящиеся в чате, сразу после отправки.
Список контактов: список логинов пользователей системы.
Почтовый клиент: включает в себя редактор почты, средства просмотра и отправки почты лицам из списка контактов.
Клиент для чата: содержит список доступных чатов. Предоставляет возможность создания чатов и открытие чата для людей из списка контактов.
В компании "Justice" были проведены исследования, в результате которых компания поняла, что теряет достаточно много средств из-за не всегда равномерного распределения зарплаты. Кроме денежных потерь есть и недовольство персонала, которое вызвано тем, что те, кто много работают, и те, кто мало, получают одинаковые зарплаты.
Компания решила изменить данную ситуацию. Вашей компании предложили выработать решение описанной проблемы.
Нужно реализовать систему учета работы персонала.
Объекты системы: датчики, хранилища данных, менеджер, работник, система начисления зарплаты, система построения отчетов.
Датчики: считается, что фирма состоит из нескольких филиалов и в каждом филиале есть отдельные наборы датчиков. Каждый набор датчиков сохраняет информацию в свое хранилище данных. Основные данные, с которыми работает система:
Хранилище данных: является распределенным. Предназначение - вести журнал данных, поступающих с датчиков. Доступ к хранилищу могут получать только работники и менеджеры.
В системе должны существовать две роли: работник и менеджер. При этом менеджер также может быть и работником.
Работник: ФИО, логин, пароль, табельный номер, счет для начисления зарплаты. При каждом посещении филиала записывается время прибытия отбытия и, возможно, работа, которую он выполнял. Работники могут просмотреть, сколько и когда они работали, и какая зарплата их ожидает.
Менеджер: контролирующая должность. Содержит ФИО, логин, пароль, табельный номер, счет для начисления зарплаты.
Выполняет следующие функции:
Система начисления зарплаты: для автоматизации необходимо два раза в месяц делать начисление зарплаты работнику. При расчете зарплаты в системе часы, проведенные работником на месте, умножаются на индекс. К полученной сумме прибавляются премиальные и из получившейся суммы вычитаются налоги. Итоговая сумма переводится на счет.
На рынок вышла новая авиакомпания "GlobalAvia". Менеджеры компании решили заказать у вашей фирмы разработку системы бронирования билетов. При заказе фирма поставила ряд условий, которые обязательно должны быть выполнены. В первой версии системы они хотят видеть две части. В первой требуется заносить необходимую информацию. Со второй частью будут работать покупатели билетов.
При формулировании требований менеджеры упомянули, что рейсы у них спланированы так, что до пункта назначения можно долететь с пересадками за разное время и с разным комфортом. Одно из требований заключалось в том, что бы система помогала покупать билеты в зависимости от требований пользователя.
Задача является больше математической. Система должна уметь решать трехкритериальную задачу поиска кратчайших путей на графах. Критерии:
Система является распределенной, поскольку в каждом аэропорту своя база направлений полетов самолетов, соответственно, знают о рейсе только аэропорты-соседи. Одно и требований, которое выдвигает компания, - не делать базу централизованной ввиду дороговизны оборудования, которое в противном случае пришлось бы приобрести.
Объекты системы: распределенное хранилище рейсов, покупатель билетов.
Распределенное хранилище рейсов: название рейсов, номера и тип самолетов, класс самолета по комфорту и стоимость билетов.
Покупатель: ФИО, сумма. Покупатель на сайте задает параметры, связанные с суммой, которую он хочет потратить, комфорт и время. Система должна подобрать оптимальные маршруты. При отсутствии прямых маршрутов система должна попробовать найти маршруты с пересадками. Если таковых не находится, система должна дать в ответе причину, по которой не получается подобрать маршрут. Среди причин:
В ответ, пользователь должен иметь возможность поменять параметры с учетом предыстории.
В компании "SuperSoft" возникла потребность автоматизировать управление проектами. В силу того, что компания существует на рынке разработки ПО недавно и не обладает достаточным количеством свободных финансовых средств, было принято решение не покупать системы управления проектами типа Microsoft Project (стоимость коробочной версии от $600), а разработать собственное простое решение.
Система управления проектами должна иметь единую базу проектов, подключаться к которой могут менеджеры и исполнители. Содержимое базы составляет информация о ведущихся в компании проектах.
Система управления проектами должна быть рассчитана на небольшие команды. В каждом проекте выделяются только две роли: менеджер и исполнитель.
Менеджер может управлять несколькими проектами, исполнитель участвует только в одном проекте.
Менеджер управляет проектом, то есть с точки зрения системы: формирует список
Исполнитель получает от менеджера задачи, на основании которых для него формируется "ToDo-List". Список может пополняться по ходу проекта, как менеджером, так и самим исполнителем.
Объекты системы: менеджер, исполнитель, задача, проект, "ToDo-List".
Менеджер: ФИО, проект(ы).
Исполнитель: ФИО, проект, "ToDo-List".
Задача: имя, формулировка, срок начала, срок окончания (выставленный менеджером), срок фактического окончания (когда исполнитель "сдал" задачу менеджеру, а тот ее "принял"), состояние (не начата, выполняется, завершена, отложена), причина изменения срока окончания/откладывания.
Проект: имя, менеджер, исполнители, задачи.
"ToDo-List": список задач для исполнителя. Часть списка формируется автоматически, доступна только для чтения. Часть формируется исполнителем "для себя", доступна для редактирования.
Сроки для задач могут задаваться с точностью до часов (начало: 21 июля 14.00, окончание: 21 июля 16.00, фактического окончание: 21 июля 17 часов, причина изменения сроков: учения по пожарной безопасности).
Хранение всех данных централизовано. Система имеет серверную часть (хранение информации и интерфейс для администрирования) и клиентскую часть, с которой работают менеджеры и исполнители.
По данным каждого проекта в системе должна быть возможность поиска.
Организация "Presentation for you" профессионально занимается подготовкой и проведением презентаций для фирм. В фирме за последние несколько кварталов сильно увеличился объем заказов. В результате постоянно стали наблюдаться ситуации, когда презентации задерживались из-за нехватки каких-либо ресурсов (аудиторий, проекторов, досок).
В фирме были проведены исследования и было установлено, что ситуация сильно улучшится, если у фирмы появится электронная система распределения ресурсов, а не бумажная как это было раньше.
Предполагается, что система будет функционировать на сервере, к ней будут подключаться клиенты для резервирования ресурсов на определенное время.
Объекты системы: сервер, ресурс, расписание использования ресурса, пользователь, администратор, менеджер ресурсов, клиент.
Сервер: Обладает следующей функциональностью:
Ресурс: название, серийный номер (номер аудитории, номер доски), расписание использования ресурса.
Расписание использования ресурсов: порождается для каждого ресурса. Включается записи о времени занятости и цели использования.
Пользователь: ФИО, логин, пароль, информация о дополнительных ролях.
Дополнительных ролей две:
У пользователя должны быть следующие функции:
Администратор: Выполняет функции менеджера пользователей. Не может управлять ресурсами.
Менеджер ресурсов: Основные функции:
Клиент: Должен быть реализован в виде web-сайта и Windows приложения.
Отрасль разработки программного обеспечения - одна из самых молодых и перспективных отраслей человеческой деятельности. В настоящее время сложность задач, стоящих перед отраслью, непрерывно возрастает, что требует применения специальных технологий организации и проведения процесса разработки программного обеспечения. Теоретическое изучение подобных технологий, совмещенное с их практическим применением, представляет собой исключительно важную часть подготовки специалиста в области разработки программного обеспечения.
Цель данного курса состоит в изучении основных путей организации и проведения успешных проектов в области разработки программного обеспечения на базе принципов
В рамках изучения курса предполагается решение следующих задач:
По окончании изучения курса студенты будут уметь использовать методологию
Курс опирается на материалы следующих курсов: CS101 "Введение в методы программирования", CS102 "Методы объектно-ориентированного программирования", CS105 "Дискретная математика" . Предполагается, что данный курс читается параллельно с курсом CS103 "Алгоритмы и структуры данных" с
(рис 1) Предполагаемая последовательность изучения курсов. Закрашенные части читаются одновременно
Данный курс читается в 4-ом семестре и опирается на прочитанные ранее общие курсы CS101 "Введение в методы программирования", CS102 "Методы объектно-ориентированного программирования", в рамках которых студенты знакомятся с фундаментальными понятиями, принципами и методами программирования, изучают основные алгоритмы, простейшие структуры данных, языки программирования
Конечно, уровень студента 2 курса все еще не позволяет овладеть этой темой полностью, поэтому учебный план предполагает изучение нескольких последовательно расположенных курсов, первым из которых, вводным, является данный курс - "Технологии программирования. Курс на базе
В качестве базовой методологии разработки программного продукта выбрана перспективная, хорошо себя зарекомендовавшая методология
На протяжении изучения курса на лекциях рассматривается специально разработанный пример, на основе которого иллюстрируются все этапы разработки программного продукта.
Наряду с изучением теоретической составляющей - проблематики и базовых принципов коллективной разработки программ, сути и принципов
В качестве некоторых управленческих ролей возможно привлечение магистрантов, имеющих некоторый опыт создания ПО в командах разработчиков.
Рассмотрим кратко
Во введении (лекция 1) дается понятие программного обеспечения (ПО), описывается проблема роста сложности разработки качественного продукта в заданные сроки в соответствии с имеющимся бюджетом, рассматриваются основные технологии программирования как средства борьбы со сложностью. Дается краткая характеристика курса, формулируются его цели, задачи и структура учебного плана.
Основная часть курса состоит из трех разделов.
Данный учебный курс рассчитан на студентов 2 курса, как правило, не имеющих существенного опыта практического программирования, программирования в команде, и, тем более, управления процессом разработки ПО. Убеждение авторов состоит в том, что для подготовки грамотного исполнителя необходимо не только привить ему навыки разработки ПО, изучить принципы командной работы, но и отчетливо выявить основные проблемы отрасли. Именно этому и посвящен первый раздел курса.
В первом разделе курса (лекция 2) дается обзор некоторых понятий и принципов программной инженерии. В частности разбирается понятие программной инженерии, процесса,
Во втором разделе курса (лекции 3, практики 1, 2, 3) идет речь о принципах
В третьем разделе курса (лекции 4, 5, 6, 7, практики 4, 5, 6, 7, 8) изучается
Введение
Важность предмета.
Программа и программное обеспечение, основные отличия. О рынке программного обеспечения.
Сложность управления процессом разработки программного обеспечения.
Технологии программирования как способ борьбы со сложностью.
Обзор технологий программирования (структурное, модульное, объектно-ориентированное,
Цели и задачи курса. Структура учебного плана. Основная и дополнительная литература, Интернет-источники.
1. Элементы программной инженерии.
1.1. Программная инженерия, основные понятия.
Инженерия и инженеры.
Программная инженерия как инженерная дисциплина.
Область действия программной инженерии и отличия от других инженерий.
Программные инженеры и их деятельность.
Программные инженеры и научная среда - ключевые различия и принципы успешного взаимодействия.
Показатели
1.2. Процесс создания программного обеспечения
Понятие процесса создания ПО. Основные стадии процесса.
Итерационные
2. Визуальное моделирование при анализе и проектировании. Основы Unified Modeling Language (UML).
2.1. Анализ и проектирование. Некоторые частные вопросы
2.1.1. Обзор принципов объектного подхода.
Алгоритмическая и объектная декомпозиции. Классы и объекты.
Объектно-ориентированный анализ.
Объектно-ориентированное проектирование.
Объектно-ориентированное программирование.
Принципы объектного подхода: абстрагирование, инкапсуляция, иерархия,
Пример: ООП и структуры данных. Проектирование структуры данных стек.
2.1.2. Повторное использование.
Идея повторного использования. Важность повторного использования.
Достоинства повторного использования. Виды повторного использования.
2.2.
Идея
Необходимость универсального языка для
История возникновения и развития языка
2.3. Структура языка
Модели
Диаграммы и понятия
2.4. Учебный пример: Задача о разработке программного комплекса бронирования билетов для авиакомпании "SRS - Seat Reservation System". Постановка задачи.
2.5. Визуальное описание модели функционирования системы средствами
Понятия Актера и Варианта использования.
Ассоциация между Актером и Вариантом использования.
Диаграмма действия.
Пример: Использование средств UML для визуального моделирования поведения программной системы "SRS".
2.6. Классы, объекты, поля, методы, подсистемы, компоненты, пакеты и их отображение средствами
Пример: Использование средств UML для визуального проектирования программной системы "SRS".
2.7. Проектирование системы.
Пример: Использование средств UML для визуального проектирования программной системы "SRS".
3. Методология создания программных решений Microsoft Solutions Framework.
3.1. Введение в методологию
Что такое
3.2. Нововведения версии
Разделение методологии на два направления:
3.3. Формирование команды.
Основные принципы построения команды.
"
Каждая ролевая группа имеет зону ответственности и защищает интересы заинтересованных лиц из этой зоны.
"Масштабируемость" модели
Ролевые группы и роли, зоны ответственности ролевых групп, их задачи и взаимодействие с заинтересованными лицами.
Рекомендации по возможному объединению ролей.
Пример: Задача о разработке программного комплекса бронирования билетов для аэропорта.
3.4.
Основные сведения о рисках.
Планирование
Процесс
Пример: Задача о разработке программного комплекса бронирования билетов для аэропорта. Выделение рисков.
3.5.
Принципы модели процессов.
Взаимодействуйте с "заказчиками".
Поощряйте свободный обмен информацией в проекте.
Создавайте "единое видение проекта".
Следите за качеством продукта.
Проявляйте гибкость - будьте готовы к изменениям.
Ставьте "вехи".
Будьте готовы к внедрению сегодня.
Схема процесса разработки.
Основные структурные единицы схемы: циклы, фазы и вехи.
Цикличность всех уровней процесса разработки. Примеры циклов в различных задачах на различных уровнях:
Фазы и вехи процесса разработки: выработка концепции, планирование проекта, разработка решения, стабилизация решения, внедрение решения. Распределение задач по фазам. Выбор продолжительности фаз. Принцип "каждой фазе - свои вехи". Вопросы, определяющие выполнение очередной фазы и достижение соответствующей вехи.
3.6. Старт проекта. Фаза выработки концепции.
Основные задачи фазы: создание ядра
Задачи
Рекомендуемые
Результаты фазы: "Общее описание и рамки проекта", "Документ
Пример: Задача о разработке программного комплекса бронирования билетов для аэропорта. Выработка концепции.
3.7. Планирование проекта. Фаза планирования.
Основные задачи фазы: анализ и документирование проектных требований, подготовка функциональной спецификации, разработка дизайнов, подготовка рабочих планов, оценка проектных затрат и сроков разработки различных составляющих проекта.
Категории проектных требований. Уровни процесса проектирования.
Задачи
Рекомендуемые
Результаты фазы: "
3.8. Разработка решения. Фаза разработки.
Основная задача фазы - создание компонент решения, включая как документацию, так и программный код.
Задачи
Рекомендуемые
Результаты фазы: "Исходный и исполняемый код приложений", "Скрипты установки и конфигурирования", "Окончательная
3.9. Стабилизация решения. Фаза стабилизации.
Основные задачи
Задачи
Рекомендуемые
Результаты фазы: "Окончательный продукт", "Документация выпуска", "Материалы поддержки решения", "Результаты и инструментарий тестирования", "Исходный и исполнимый код приложений", "Проектная документация", "Анализ пройденной фазы".
3.10. Внедрение решения. Фаза внедрения.
Основные задачи фазы: внедрение технологий и компонент решения, стабилизация внедренного решения, передача работ персоналу поддержки и сопровождения, получение со стороны заказчика окончательного одобрения результатами проекта, анализ выполненной работы и удовлетворенности заказчика.
Задачи
Рекомендуемые
Результаты фазы: "Информационные системы эксплуатации и поддержки", "Процедуры и процессы", "Базы знаний, отчеты, журналы протоколов", "Версии проектных документов, массивы данных и программный код, разработанные во время проекта", "Отчет о завершении проекта", "Окончательные версии всех проектных документов", "Показатели удовлетворенности заказчика и потребителей", "Описание последующих шагов".
Данный курс является вводным курсом в рамках направления "Программная инженерия" и затрагивает следующие элементы курса SE201:
CMP.ct - Технологии разработки
MAA.md - Моделирование
MAA.tm -
MAA.rfd - Требования
MAA.rsd - Спецификация и документирование требований
MAA.rv - Проверка требований
DES - Проектирование
PRO.imp - Процесс разработки
MGT - Управление процессом разработки
Цель данного лабораторного практикума состоит в практическом знакомстве с процессом командной разработки программного обеспечения на примере
В процессе выполнения лабораторного практикума предполагается решение следующих задач:
Лабораторный практикум предполагает разбиение группы студентов на команды по 5-7 человек, распределение ролей в каждой команде в соответствии с положениями методологии
В первом разделе (практики 1, 2, 3) повторяются принципы объектного подхода и важные аспекты повторного использования, а также демонстрируется применение унифицированного
Во втором разделе (практики 4, 5, 6, 7, 8) каждая команда выбирает задачу из списка, предложенного преподавателем, и последовательно проходит через этапы: распределение ролей (в отличие от положений
В процессе разработки преподаватель выступает в роли заказчика. Постановки задач даются студентам в краткой форме. Задача студентов - извлечь из заказчика необходимые сведения.
Результатом работы команды должен быть работающий прототип системы и необходимые документы, являющиеся результатами прохождения фаз согласно методологии
Внедрение полученного каждой командой решения предполагается в одной из других команд. Таким образом, в процессе оценки решения участвует преподаватель, как лицо, принимающее решения со стороны заказчика, и другая команда, в качестве потенциальных пользователей.
Цель занятия: Повтор принципов
Содержание занятия:
Выполнение объектной декомпозиции на примере задач из курса CS103 "Алгоритмы и структуры данных". Разбор вариантов проектирования.
Цель занятия: Знакомство с построением
Содержание занятия:
Цель занятия: Знакомство с построением
Содержание занятия:
Цель занятия: Прохождение фазы выработки концепции в каждой команде.
Содержание занятия:
Каждая команда:
Цель занятия: Прохождение фазы планирования в каждой команде.
Содержание занятия:
Каждая команда:
Цель занятия: Прохождение фазы разработки в каждой команде.
Содержание занятия:
Каждая команда:
Цель занятия: Прохождение фазы стабилизации в каждой команде.
Содержание занятия:
Каждая команда:
Цель занятия: Прохождение фазы внедрения в каждой команде.
Содержание занятия:
Каждая команда:
В приложении приведены краткие и полные постановки задач для лабораторного практикума. Студентам во время занятий будут озвучены краткие постановки, все остальное, необходимое для проектирования и реализации, они должны выяснить у преподавателя.
На рынок вышла новая авиакомпания "GlobalAvia". Менеджеры компании решили заказать у вашей фирмы разработку системы бронирования билетов. При заказе фирма поставила ряд условий, которые обязательно должны быть выполнены. В первой версии системы они хотят видеть две части. Работа первой части системы связана с занесением информации. Вторая часть системы предназначена для общения с клиентами.
При формулировании требований менеджеры упомянули, что рейсы спланированы так, что до пункта назначения можно долететь с пересадками. Одно из требований заключалось в том, чтобы система помогала покупать билеты в зависимости от пожеланий пользователя.
Объекты системы: распределенное хранилище рейсов, покупатель билетов, менеджер рейсов.
Среди причин:
В ответ, пользователь должен иметь возможность поменять параметры с учетом предыстории.
Фирма "NewMeteo" желает заказать у вас систему обработки метеоинформации, состоящую из двух частей. Первая предназначена для создания и редактирования карт местности. Вторая для нанесения на карты движения воздушных масс и циклонов. Процесс движения должен задаваться формулами. В целом система должна давать возможность благодаря анимации получить наглядное представление об изменении метеоусловий на несколько дней вперед.
Функционирование системы предполагается на локальном компьютере. Работа в системе должна включать в себя три части:
Для редактирования карт и задания движения воздушных масс предполагается, разработка редактора
Желательно обеспечить возможность заливки внутренности замкнутых объектов выбранным цветом.
Объекты системы:
Карта, изображение воздушных масс: набор векторных примитивов.
Подсистема расчета движения воздушных масс: в простейшем случае статические формулы. Более сложный случай - имитационная система или
Режим просмотра изменения метеоусловий: подсистема, которая должна быть реализована в двух видах:
Система должна уметь сохранять результат работы в определенном формате (рекомендуется XML). Возобновлять состояние после загрузки сохраненных данных, при этом желательно реализовать контроль правильности формата читаемого файла.
Фирма "OurResearch" занимается написанием математических программ по заказу. При этом в фирме часто приходится писать отчеты заказчику. При написании отчетов заказчик хочет видеть в отчетах математические формулы в классическом виде.
У Вашей фирмы компания решила заказать удобное средство для перевода и написания математических выражений в разные форматы представления. Причем, если в редакторе присутствует ряд взаимосвязанных формул, то фирма хочет видеть адекватный код. При этом известно, что фирма часто использует C/C++, Pascal и Fortran.
Необходимо разработать систему для редактирования и написания математических формул.
Объекты системы: формула, формульный редактор.
Формула: математическое выражение в одном из видов, желательно, что бы редактор сам распознавал язык и вид выражения по сигнатуре.
Формульный редактор: визуальная часть. Должен позволять:
Дополнительно система должна обеспечивать сохранение формул в нескольких форматах (например, в XML).
Редактор должен включать в себя конвертор в различные форматы, к примеру, перевод формулы в стандартное выражение для C/C++, Pascal и Fortran.
Также обязательно нужна возможность перевода формулы в BMP-изображение.
Необходимо реализовать на стороне сервера хранилище, в которое можно помещать алгоритмы в некотором стандартном виде, а потом исполнять их. Для простоты алгоритмы могут представлять собой математические формулы. В алгоритмах должны быть заявлены следующие данные:
Доступ к алгоритмам должен быть ограничен на основе разделения прав по ролям.
Web-сервис должен быть рассчитан на небольшое число пользователей и работу в локальной сети. К web-сервису должен быть реализован разделенный доступ пользователей.
Объекты системы: пользователь, роль, алгоритм, web-сервис.
Пользователи: логин, пароль, роль.
Пользователь может на web-сервисе осуществлять следующие действия:
Роль: представляет собой список пользователей.
Алгоритм: название, код (математическое выражение), принадлежность пользователю, входные и
Web-сервис предоставляет следующие возможности:
Для хранения алгоритмов на сервере создается дерево каталогов и файлов. Для каждого пользователя создается корневой каталог. В этом каталоге могут храниться, как алгоритмы (файлы с кодом), так и другие каталоги. Разделения прав осуществляется на основе специального файла со списком пользователей, которым доступна эта папка. Права на папку наследуются. Также можно разрешить доступ сразу группе пользователей, принадлежащих определенной роли.
Редактировать алгоритм может только пользователь, выложивший алгоритм.
Исполнить алгоритм могут только те пользователи, которым доступна папка с алгоритмом. Исполнение производится через специальный интерфейс.
Руководство фирмы "Effectiveness" пришло к выводу, что производительность труда ее сотрудников не достаточно полно соответствует громкому имени компании. В результате проведенных исследований была выявлена основная причина - недостаточная эффективность обмена информацией между сотрудниками. В качестве решения руководство видит внедрение единого средства электронной коммуникации. Отделу разработчиков компании поручено создать систему, включающую в себя почтовый инструмент и инструмент для обмена мгновенными сообщениями.
Требуется реализовать комплексную систему обмена сообщениями для небольшого количества пользователей.
Система должна удовлетворять следующим требованиям:
Объекты системы: пользователь, сервер, письмо, список контактов, быстрое сообщение,
Пользователь: ФИО, логин, пароль.
Сервер: представляет собой хранилище почты и маршрутизатор сообщений. Сервер должен разграничивать доступ к информации различных пользователей. Каждый пользователь может получить только свою почту. Пользователь может присоединяться к чатам и участвовать в обсуждении, но только в том случае, если он входит в список тех, кому разрешен доступ.
Письмо: для написания писем предполагается разработка простейшего текстового редактора. Внутренний формат - некоторая
Быстрое сообщение: обычное текстовое сообщение, для генерации которого используется редактор письма. Отличие от почты в том, что сообщение видят все, находящиеся в чате, сразу после отправки.
Список контактов: список логинов пользователей системы.
Почтовый клиент: включает в себя редактор почты, средства просмотра и отправки почты лицам из списка контактов.
Клиент для чата: содержит список доступных чатов. Предоставляет возможность создания чатов и открытие чата для людей из списка контактов.
В компании "Justice" были проведены исследования, в результате которых компания поняла, что теряет достаточно много средств из-за не всегда равномерного распределения зарплаты. Кроме денежных потерь есть и недовольство персонала, которое вызвано тем, что те, кто много работают, и те, кто мало, получают одинаковые зарплаты.
Компания решила изменить данную ситуацию. Вашей компании предложили выработать решение описанной проблемы.
Нужно реализовать систему учета работы персонала.
Объекты системы: датчики, хранилища данных, менеджер, работник, система начисления зарплаты, система построения отчетов.
Датчики: считается, что фирма состоит из нескольких филиалов и в каждом филиале есть отдельные наборы датчиков. Каждый набор датчиков сохраняет информацию в свое хранилище данных. Основные данные, с которыми работает система:
Хранилище данных: является распределенным. Предназначение - вести журнал данных, поступающих с датчиков. Доступ к хранилищу могут получать только работники и менеджеры.
В системе должны существовать две роли: работник и менеджер. При этом менеджер также может быть и работником.
Работник: ФИО, логин, пароль, табельный номер, счет для начисления зарплаты. При каждом посещении филиала записывается время прибытия отбытия и, возможно, работа, которую он выполнял. Работники могут просмотреть, сколько и когда они работали, и какая зарплата их ожидает.
Менеджер: контролирующая должность. Содержит ФИО, логин, пароль, табельный номер, счет для начисления зарплаты.
Выполняет следующие функции:
Система начисления зарплаты: для автоматизации необходимо два раза в месяц делать начисление зарплаты работнику. При расчете зарплаты в системе часы, проведенные работником на месте, умножаются на индекс. К полученной сумме прибавляются премиальные и из получившейся суммы вычитаются налоги. Итоговая сумма переводится на счет.
На рынок вышла новая авиакомпания "GlobalAvia". Менеджеры компании решили заказать у вашей фирмы разработку системы бронирования билетов. При заказе фирма поставила ряд условий, которые обязательно должны быть выполнены. В первой версии системы они хотят видеть две части. В первой требуется заносить необходимую информацию. Со второй частью будут работать покупатели билетов.
При формулировании требований менеджеры упомянули, что рейсы у них спланированы так, что до пункта назначения можно долететь с пересадками за разное время и с разным комфортом. Одно из требований заключалось в том, что бы система помогала покупать билеты в зависимости от требований пользователя.
Задача является больше математической. Система должна уметь решать трехкритериальную задачу поиска кратчайших путей на графах. Критерии:
Система является распределенной, поскольку в каждом аэропорту своя база направлений полетов самолетов, соответственно, знают о рейсе только аэропорты-соседи. Одно и требований, которое выдвигает компания, - не делать базу централизованной ввиду дороговизны оборудования, которое в противном случае пришлось бы приобрести.
Объекты системы: распределенное хранилище рейсов, покупатель билетов.
Распределенное хранилище рейсов: название рейсов, номера и тип самолетов, класс самолета по комфорту и стоимость билетов.
Покупатель: ФИО, сумма. Покупатель на сайте задает параметры, связанные с суммой, которую он хочет потратить, комфорт и время. Система должна подобрать оптимальные маршруты. При отсутствии прямых маршрутов система должна попробовать найти маршруты с пересадками. Если таковых не находится, система должна дать в ответе причину, по которой не получается подобрать маршрут. Среди причин:
В ответ, пользователь должен иметь возможность поменять параметры с учетом предыстории.
В компании "SuperSoft" возникла потребность автоматизировать управление проектами. В силу того, что компания существует на рынке разработки ПО недавно и не обладает достаточным количеством свободных финансовых средств, было принято решение не покупать системы управления проектами типа Microsoft Project (стоимость коробочной версии от $600), а разработать собственное простое решение.
Система управления проектами должна иметь единую базу проектов, подключаться к которой могут менеджеры и исполнители. Содержимое базы составляет информация о ведущихся в компании проектах.
Система управления проектами должна быть рассчитана на небольшие команды. В каждом проекте выделяются только две роли: менеджер и исполнитель.
Менеджер может управлять несколькими проектами, исполнитель участвует только в одном проекте.
Менеджер управляет проектом, то есть с точки зрения системы: формирует список
Исполнитель получает от менеджера задачи, на основании которых для него формируется "ToDo-List". Список может пополняться по ходу проекта, как менеджером, так и самим исполнителем.
Объекты системы: менеджер, исполнитель, задача, проект, "ToDo-List".
Менеджер: ФИО, проект(ы).
Исполнитель: ФИО, проект, "ToDo-List".
Задача: имя, формулировка, срок начала, срок окончания (выставленный менеджером), срок фактического окончания (когда исполнитель "сдал" задачу менеджеру, а тот ее "принял"), состояние (не начата, выполняется, завершена, отложена), причина изменения срока окончания/откладывания.
Проект: имя, менеджер, исполнители, задачи.
"ToDo-List": список задач для исполнителя. Часть списка формируется автоматически, доступна только для чтения. Часть формируется исполнителем "для себя", доступна для редактирования.
Сроки для задач могут задаваться с точностью до часов (начало: 21 июля 14.00, окончание: 21 июля 16.00, фактического окончание: 21 июля 17 часов, причина изменения сроков: учения по пожарной безопасности).
Хранение всех данных централизовано. Система имеет серверную часть (хранение информации и интерфейс для администрирования) и клиентскую часть, с которой работают менеджеры и исполнители.
По данным каждого проекта в системе должна быть возможность поиска.
Организация "Presentation for you" профессионально занимается подготовкой и проведением презентаций для фирм. В фирме за последние несколько кварталов сильно увеличился объем заказов. В результате постоянно стали наблюдаться ситуации, когда презентации задерживались из-за нехватки каких-либо ресурсов (аудиторий, проекторов, досок).
В фирме были проведены исследования и было установлено, что ситуация сильно улучшится, если у фирмы появится электронная система распределения ресурсов, а не бумажная как это было раньше.
Предполагается, что система будет функционировать на сервере, к ней будут подключаться клиенты для резервирования ресурсов на определенное время.
Объекты системы: сервер, ресурс, расписание использования ресурса, пользователь, администратор, менеджер ресурсов, клиент.
Сервер: Обладает следующей функциональностью:
Ресурс: название, серийный номер (номер аудитории, номер доски), расписание использования ресурса.
Расписание использования ресурсов: порождается для каждого ресурса. Включается записи о времени занятости и цели использования.
Пользователь: ФИО, логин, пароль, информация о дополнительных ролях.
Дополнительных ролей две:
У пользователя должны быть следующие функции:
Администратор: Выполняет функции менеджера пользователей. Не может управлять ресурсами.
Менеджер ресурсов: Основные функции:
Клиент: Должен быть реализован в виде web-сайта и Windows приложения.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.