Министерство образования и науки Российской Федерации
Московский физико-технический институт
(государственный университет)
УТВЕРЖДАЮ
Проректор по учебной работе
__________ Ю. А Самарский
«___»____________ 2011 г.
ПРОГРАММА
по курсу: СОВРЕМЕННАЯ ПРАКТИКА КОЛЛЕКТИВНОЙ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (по выбору)
по направлению: 010900
факультеты: ФРТК, ФОПФ, ФАКИ, ФМБФ, ФФКЭ, ФУПМ, ФПФЭ
кафедра: ИНФОРМАТИКИ
курс: 4
семестры: 7,8
практические занятия: 66 часов зачёт дифф.
ВСЕГО ЧАСОВ: 66
Программу составили: ассистент ,
инженер-разработчик,
к. т.н.
Программа обсуждена
на заседании кафедры информатики
«21» мая 2011 г.
Заведующий кафедрой,
профессор
ВВЕДЕНИЕ
Основной целью предлагаемого курса является обучение студентов современным подходам к разработке ПО, принятым во многих компаниях и сообществах разработчиков.
Особое внимание уделяется таким аспектам, как совместная работа в команде и средства автоматического регулярного тестирования. Благодаря предлагаемым подходам многие сложные рутинные задачи, с которыми трудно справляться начинающим программистам, могут быть значительно упрощены.
Изучение тем курса будет сопровождаться практическими занятиями, на которых студенты смогут собственноручно попробовать предлагаемые подходы. Также, студенты будут совместно работать над проектами с открытым исходным кодом под руководством инженеров компании Google.
В рамках курса будет прочитано несколько лекций по языку программирования Python, на котором рекомендуется разрабатывать проекты в первой половине данного курса.
Также, периодически будут читаться лекции, посвящённые различным технологиям Google (в т. ч. с открытым исходным кодом) для расширения кругозора студентов.
Структура курса
l Введение. Отличия в процессах разработки учебных приложений и разработки приложений в большой команде разработчиков.
l Вводный курс языка Python.
l Системы контроля версий (version control systems). Обзор программ Subversion, git. Примеры работы с публичными репозиториями code. , .
l Понятия об оформлении кода на примере Google Code Style Guide.
l Совместная работа с общим репозиторием. Понятие code review. Использование сервиса rietveld (codereview. ). Утилиты diff, patch.
l Системы учёта ошибок (issue tracking) на примере code. /.
l Использование средств ведения журнала сообщений (logging) и средств assert для упрощения процесса поиска ошибок.
l Средства автоматического тестирования на примере Python unittest и googletest. Пример процесса разработки ПО, где написание тестов предшествует написанию кода (test driven development).
l Средства непрерывного тестирования на примере buildbot. Понятия presubmit queue и try job.
l Краткий обзор подходов к проектированию программной архитектуры: паттерны программирования, Model View Controller.
l Понятия "макет класса" и "заглушка" (mock и stub) и их использование на примере python pymox и Google Mock Library.
l Оптимизация. Понятия о сложности алгоритмов. Написание тестов производительности (benchmark). Профилирование.
l Разработка проектов с окрытым исходным кодом (open source). Разлиные типы лицензий. Подходы, применяемые в проектах с открытым исходным кодом для работы со сторонними разработчиками.
ПРИМЕРЫ ЗАДАЧ
l Пошаговая игра через интернет
l SQL-подобная база данных
l Моделирование сложных систем (компьютерные сети)
l Аудио чат
l Распределённые системы (торрент-клиент)
l Поиск по сайту
l Приложение для операционной системы Android
СПИСОК ЛИТЕРАТУРЫ
1. Учебник по языку Python http://docs. python. org/tutorial/.
2. Учебник git http://www-cs-students. stanford. edu/~blynn/gitmagic/.
3. Google Code Style Guide по языкам Python и C++ http://code. /p/soc/wiki/PythonStyleGuide, http://google-styleguide. /svn/trunk/cppguide. xml.
4. Библиотека Python unittest http://docs. python. org/library/unittest. html.
5. Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес, Приемы объектно-ориентированного проектирования. Паттерны программирования. Питер", 2007г.
6. Andy Hunt, Dave Thomas, Pragmatic Unit Testing in C# with NUnit. The Pragmatic Programmers, LLC, 2007y.


