Цели и задачи курса и практикума
Отрасль разработки программного обеспечения - одна из самых молодых и перспективных отраслей человеческой деятельности. В настоящее время сложность задач, стоящих перед отраслью, непрерывно возрастает, что требует применения специальных технологий организации и проведения процесса разработки программного обеспечения. Теоретическое изучение подобных технологий, совмещенное с их практическим применением, представляет собой исключительно важную часть подготовки специалиста в области разработки программного обеспечения.
Цель данного курса состоит в изучении основных путей организации и проведения успешных проектов в области разработки программного обеспечения на базе принципов Microsoft Solutions Framework ( MSF ). Важная роль отводится практической составляющей курса.
1.2. Задачи изучения курсаВ рамках изучения курса предполагается решение следующих задач:
- рассмотрение технологических основ процесса разработки программного обеспечения;
- изучение основ унифицированного языка UML для визуального моделирования элементов предметной области в рамках проектирования программной системы и ее основных компонент;
- получение практического опыта работы в команде из 5-7 человек с применением методологии MSF ;
- приобретение и развитие навыков анализа, проектирования, документирования и разработки программных комплексов средней сложности .
По окончании изучения курса студенты будут уметь использовать методологию Microsoft Solutions Framework for Agile Software Development , включая:
- разработку формальных требований к программной системе, основанных на потребностях заинтересованных лиц;
- разработку проекта программной системы с учетом возможностей ее дальнейшего развития, а также повторного использования некоторых ее компонент в других проектах;
- создание диаграммы классов и компонент UML для визуального представления архитектуры программной системы;
- документирование процесса разработки программной системы.
Курс опирается на материалы следующих курсов: CS101 "Введение в методы программирования", CS102 "Методы объектно-ориентированного программирования", CS105 "Дискретная математика" . Предполагается, что данный курс читается параллельно с курсом CS103 "Алгоритмы и структуры данных" с запаздыванием в 1 семестр ( рис. 1).
2. Характеристика курсаДанный курс читается в 4-ом семестре и опирается на прочитанные ранее общие курсы CS101 "Введение в методы программирования", CS102 "Методы объектно-ориентированного программирования", в рамках которых студенты знакомятся с фундаментальными понятиями, принципами и методами программирования, изучают основные алгоритмы, простейшие структуры данных, языки программирования Object Pascal и C/C++. В 3-ем семестре студенты изучают первую часть курса CS103 "Алгоритмы и структуры данных", выполняют лабораторные работы согласно учебному плану. Таким образом, полученных к 4-му семестру знаний и навыков достаточно для того, чтобы приступить к ознакомлению с технологиями коллективной разработки программ.
Конечно, уровень студента 2 курса все еще не позволяет овладеть этой темой полностью, поэтому учебный план предполагает изучение нескольких последовательно расположенных курсов, первым из которых, вводным, является данный курс - "Технологии программирования. Курс на базе Microsoft Solutions Framework ( MSF )".
В качестве базовой методологии разработки программного продукта выбрана перспективная, хорошо себя зарекомендовавшая методология MSF . В лекциях рассматривается суть методологии, ее основные этапы и принципы.
На протяжении изучения курса на лекциях рассматривается специально разработанный пример, на основе которого иллюстрируются все этапы разработки программного продукта.
Наряду с изучением теоретической составляющей - проблематики и базовых принципов коллективной разработки программ, сути и принципов MSF - большое внимание уделяется практической составляющей. В рамках лабораторного практикума студенты делятся на команды в соответствии с моделью команды MSF и, получив задачу, выполняют весь цикл работ по проектированию, разработке, тестированию и внедрению программного продукта.
В качестве некоторых управленческих ролей возможно привлечение магистрантов, имеющих некоторый опыт создания ПО в командах разработчиков.
Рассмотрим кратко основные разделы курса и их содержание.
Во введении (лекция 1) дается понятие программного обеспечения ( ПО ), описывается проблема роста сложности разработки качественного продукта в заданные сроки в соответствии с имеющимся бюджетом, рассматриваются основные технологии программирования как средства борьбы со сложностью. Дается краткая характеристика курса, формулируются его цели, задачи и структура учебного плана.
Основная часть курса состоит из трех разделов.
Данный учебный курс рассчитан на студентов 2 курса, как правило, не имеющих существенного опыта практического программирования, программирования в команде, и, тем более, управления процессом разработки ПО . Убеждение авторов состоит в том, что для подготовки грамотного исполнителя необходимо не только привить ему навыки разработки ПО , изучить принципы командной работы, но и отчетливо выявить основные проблемы отрасли. Именно этому и посвящен первый раздел курса.
В первом разделе курса (лекция 2) дается обзор некоторых понятий и принципов программной инженерии. В частности разбирается понятие программной инженерии, процесса, модели процесса разработки ПО . Рассматриваются конкретные модели процесса .
Во втором разделе курса (лекции 3, практики 1, 2, 3) идет речь о принципах объектно-ориентированного анализа и проектирования программного обеспечения при помощи визуальных средств языка UML . Дается обзор принципов объектного подхода, рассматриваются важные аспекты повторного использования, рассматриваются элементы языка UML . Демонстрируется применение UML для визуализации проектирования лекционных примеров из читаемого параллельно курса CS103 "Алгоритмы и структуры данных".
В третьем разделе курса (лекции 4, 5, 6, 7, практики 4, 5, 6, 7, 8) изучается методология разработки программного обеспечения Microsoft Solutions Framework 4.0. Рассматривается история MSF , основные принципы MSF , модель проектной группы , роли и фазы MSF . Через все фазы проводится лекционный пример - разработка системы бронирования билетов для аэропорта.
3. Содержание курсаПрограмма и программное обеспечение , основные отличия. О рынке программного обеспечения.
Сложность управления процессом разработки программного обеспечения.
Технологии программирования как способ борьбы со сложностью.
Обзор технологий программирования (структурное, модульное, объектно-ориентированное, компонентное программирование ).
Цели и задачи курса. Структура учебного плана. Основная и дополнительная литература, Интернет-источники.
1. Элементы программной инженерии.
1.1. Программная инженерия , основные понятия.
Инженерия и инженеры.
Программная инженерия как инженерная дисциплина.
Область действия программной инженерии и отличия от других инженерий.
Программные инженеры и их деятельность .
Программные инженеры и научная среда - ключевые различия и принципы успешного взаимодействия.
Показатели качества программного продукта .
1.2. Процесс создания программного обеспечения
Понятие процесса создания ПО . Основные стадии процесса.
Модели процесса создания ПО . Каскадная и эволюционная модели.
Итерационные модели процесса создания ПО . Модель пошаговой разработки, спиральная модель .
2. Визуальное моделирование при анализе и проектировании. Основы Unified Modeling Language (UML).