Использование subversion и trac в учебном процессе студентов ИТ специальностей

В последнее время про низкое качество подготовки студентов в вузах не говорит только ленивый. В том числе и на хабре за последнее время появилось множество статей, которые клеймят позором существующую систему высшего образования, сложившуюся в настоящий момент. Основная претензия, которую предъявляют вузам – это оторванность высшего образования от реальной жизни, от тех технологий, которые используются в бизнесе. Увы, зачастую эти претензии не безосновательны. Но я хочу показать свой личный, позитивный (надеюсь) опыт, как можно преломить эту ситуацию.

В данной статье представлен опыт использования системы версионного контроля subversion и системы отслеживания изменений Trac в рамках учебного процесса по дисциплине «Лингвистическое и программное обеспечение САПР» на каф. КСУП ТУСУР. Показаны преимущества, которые получили студенты и я, как преподаватель, от использования этих систем в учебном процессе.

Цели


Цель любого обучения в вузе – подготовка студентов к реальной работе в коммерческой компании. Следовательно, требования к компетенциям выпускника вуза выдвигает рынок. Рынок в сфере ИТ, и особенно в сфере разработки программного обеспечения (ПО) с одной стороны весьма разнообразен, то есть, существует множество технологий и инструментов для разработки ПО, а с другой стороны, все быстро меняется – меняются используемые технологии, подходы к разработке ПО, инструменты, которые используются программистами и т.д. Это касается и технологий сопровождения разработки ПО. Однако, ряд технологий и инструментов используются, если не всеми, то, во всяком случае, значительной частью компаний – разработчиков ПО. В данном случае я имею в виду две нижеследующих технологии.

Систему версионного контроля. На сегодняшний день существует большое количество систем версионного контроля. Даже если взять краткий список наиболее популярных свободных к распространению, систем версионного контроля, то здесь можно будет вспомнить, cvs, git, mercurial, subversion, bazaar. Кроме того, существует немало проприетарных систем версионного контроля, которые обеспечивают лучший или худший функционал, чем указанные выше свободные. В данной статье говорят, что популярность git и subversion практически равны, но у меня лично, полной уверенности в этом нет. Как правило, мне приходится использовать на работе subversion (в последнее время чаще mercurial), а в некоторых, сторонних, в первую очередь свободных проектах — git. В пользу subversion говорили так же некоторые другие причины – в конце концов, он нужен был не только мне, и для студентов был выбран subversion.

Система отслеживания изменений это общее название целого ряда систем, таких системы отслеживания ошибок (bugtracker), системы отслеживания запросов на изменения и т.д. В отличие от систем версионного контроля в данном классе систем нет явных лидеров. Более того, не редки случаи, когда каждая компания – разработчик программного обеспечения разрабатывает свою собственную систему отслеживания ошибок. По этой причине сделать какого-то явного предположения о том, какой именно системой придется пользоваться выпускнику вуза, когда он придет на работу в компанию невозможно. Оставалось только бросить монетку, и в качестве инструмента была выбрана система trac.

Лабораторные работы


Большую часть лабораторных работ дисциплины «Лингвистическое и программное обеспечение САПР» студентам было проще делать на unix, для чего они имеют доступ к кафедральному серверу на FreeBSD. Однако, желающие могли делать это на Windows с использованием Cygwin или даже при помощи VisualStudio или других средств разработки ПО. Фактически, нужен lex, yacc, компилятор C и какая нибудь система автоматизации сборки проекта. Поэтому доступ к svn репозиторию был обеспечен как с кафедрального unix сервера так и с любого, в том числе личного/домашнего компьютера при наличии доступа к Интернет.

Надобно сказать, что у нас на кафедре давно сложилась практика выполнения студентами лабораторных работ дома. В компьютерный класс студенты приходили только для того, чтобы получить задание и затем сдать его на следующем занятии (как правило, через две недели) и попутно получить следующее задание. Выполняли задание они дома, или в том же компьютерном классе, в более удобное время, чем это позволяют рамки аудиторных часов лабораторной работы. Это позволяет оставлять свободное время на работу… ну или на развлечения. (Здесь надо заметить в скобках, что значительная доля сотрудников кафедры включая и меня, днем работают, и только в нерабочее время – вечером после 18:00 и по субботам могут преподавать на кафедре). Многие студенты этим пользовались, и только небольшая кучка регулярно приходила и сидела в компьютерном классе… иногда они даже делали там лабу, но чаще просто сидели в Интернете на халяву.

Централизованное хранилище исходных текстов позволило студентам работать еще более самостоятельно. Фактически, теперь студенты могут приходить в компьютерный класс только для того, чтобы сдавать лабы – задание лежит в trac, а делать они могу дома – только надо залить в svn результат. При этом, отговорки студентов типа «я забыл дома флешку/дискету» пропали — все исходные тексты хранятся в одном месте и доступны отовсюду.

Естественно, что сроки сдачи лабораторных работ были не резиновые. Например, если лабораторная работа по расписанию проводится в субботу, то я назначал контрольный срок выполнения данной работы – 23:59 следующего дня (воскресенье), если работа выполнена не в срок, то снижается максимальный балл, который за нее можно получить. А защита работы проводилась в аудиторные часы следующего занятия — через две недели. Пропали и отговорки студента типа «А я все сделал в тот же день вечером, не снижайте мне баллы», так как по логам svn я точно вижу, что именно и когда студенты коммитили в репозиторий. И если я вижу, что на самом деле работа была сделана в ночь перед сдачей, а не две недели назад, то баллы снижаются. Случаи, когда все основные commit’ы были сделаны где-то между полуночью и шестью часами утра в ночь перед сдачей были нередки, правда и качество работы, а отсюда и баллы за нее были соответствующими.

Collaboration


Более того, использование SVN позволило проводить групповые лабораторные работы. Считаю, что оптимальный размер группы для большинства работ 2-3 человека, если, конечно групповая разработка не является самоцелью лабораторной работы (такие работы у меня также есть в рамках второй половины того же курса). Групповая работа позволяет, с одной стороны подготовиться к реальной работе, которая, разумеется, будет проходить в коллективах, а с другой стороны, позволяет немного усложнить задачи, за счет того, что задача будет распараллеливаться между участниками группы.

Типичное распределение ролей в такой группе следующее: один студент реализует основную задачу, второй – тесты для нее (формирует тестовые входные данные и эталонные выходные, к которым в конце-концов должна прийти программа). Третий студент, если он есть, может, например, формировать сборочные скрипты, и согласует работу первых двух. SVN позволяет видеть, что именно делал каждый из них, и, соответственно, оценить степень участия каждого студента. Посмотрев, кто какие коммитв делал я могу спросить каждого по его части. Это, разумеется, не является панацеей, но все же небольшой зашитой от «прицепов», то есть студентов, которые не участвовали в реализации задания, но при этом надеются получить оценку «на шару» вместе со своими товарищами по группе.

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

Это очень хорошо вписывается в идеологию «milestone» на «roadmap». Каждый студент создает себе тикеты по своему проекту. Когда студент счел работу по этапу завершенной, он переводит этот тикет из состояния, например, «формирование ТЗ» в состояние «проверка ТЗ» и прикрепляет созданный документ (если это касается текстовых документов или ссылку на SVN репозиторий где эта задача реализована. Или ссылку на wiki, где этот документ создан.

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

Если студенты выбрали выполнение курсового проекта группой, то их работа с использованием trac и svn становится очень похожа на реальную работу в компании.

Заключение


Необходимость включения указанных в данной статье инструментов в учебный процесс, следуя требованиям рынка, было очевидным. Тематика дисциплины предусматривает, в том числе, и технологии разработки программного обеспечения, поэтому данные инструменты смотрелись в этом курсе вполне органично.

Однако использование данных технологий привело к модификации учебного процесса и позволило, с одной стороны сделать работу студентов более прозрачной, а соответственно, и сделало их более дисциплинированными, а с другой стороны позволило сделать более прозрачным формирование оценки студента за сделанную работу.
Поделиться публикацией

Комментарии 20

    +3
    В отличие от систем версионного контроля в данном классе систем нет явных лидеров. Более того, не редки случаи, когда каждая компания – разработчик программного обеспечения разрабатывает свою собственную систему отслеживания ошибок. По этой причине сделать какого-то явного предположения о том, какой именно системой придется пользоваться выпускнику вуза, когда он придет на работу в компанию невозможно.


    Jira у них там будет.

    Оставалось только бросить монетку, и в качестве инструмента была выбрана система trac.


    Субъективно — не очень удачно бросили. У trac сейчас стагнация, развитие остановилось, большинство авторов, судя по мейлинг листу, потеряло к нему интерес.
      –1
      Вы видели цену на Jira, чтобы быть так уверенным в том что ей пользуются в подавляющем числе компаний?
        0
        Вы видели цену на Jira, чтобы быть так уверенным в том что ей пользуются в подавляющем числе компаний?


        Григорий, зачем обижаете старика неуместными подозрениями? Я что, похож на человека который разбирается в том, о чем говорит? У меня что, глаза есть?

        10$ он стоит для 10 пользователей — а это большинство мелких и средних команд. На большее количество пользователей он стоит примерно столько же, сколько и решения конкурентов. яндекс, альфабанк и прочие «крупные компании» вполне могут себе позволить. И, что зарактерно — позволяют.
          –1
          ок. я согласен, что Jira _весьма_ распространена. Правда, все же говорить, что именно ее они и встретят имхо несколько слишком.

          Но тем не менее, рассматривать Jira в качестве инструмента обучения в российских вузах невозможно. 10 пользователей меня не устраивает. Даже, что бы обеспечить один поток студентов это уже 40+ человек и это уже не $10, а $1100. А мне нужно для разных дисцплин на разных курсах обеспечить работу трех потоков по 40+ человек. И это уже $4000 за академическую лицензию. Это слишком дорого.

          Но у кафедр, на самом деле, могут найти такие деньги (если это действительно нужно). Однако, здесь, как раз таки, проявляется проблема. Реальная проблема современной системы высшего образования, с которой вот уже несколько лет ничего сделать невозможно. Купить столь дорогую игрушку вуз может только через российского реселлера и только через торги. А российские реселлеры академическую лицензию не предлагают (только что посмотрел на софтлайн). И вот это уже превращается в $8000. или без копеек 300тр (Софтлайн). За эти деньги можно два компьютерных класса обновить. Или нормальный сервак поставить. Конечно никто не будет покупать Jira. Вот здесь, например описывал это для реальной ситуации.
            0
            А вы с ними свяжитесь и поинтересуйтесь как они смотрят на предоставление бесплатной лицензии для обучения студентов использованию их системы. Учитывая, что они дают бесплатные лицензии на open source — подозреваю, что российскому вузу без проблем дадут сколько надо лицензий для обучения студентов пользоваться их софтом.
              0
              Ну именно для этого они и предлагают академическую лицензию. Или Вы думаете, что для _российского_ вуза они сделают исключение?
                0
                Академическая — это для *личного* пользования студентов и преподавателей. *Может* быть использована в целях обучения. См. определение «Микрософт ©®(t) Офис для Студентов и Преподавателей». Вполне могут. Сталкивался в обе стороны — и сам такие лицензи давал в целях популяризации решений, и для вузов выбивал.
      0
      Вам стоит ознакомится с сильно допиленной версией Trac и части его модулей. Усё оформлено в виде отдельных репов на github.
      Встречайте. Все «Спасибо» Lex'у.
        0
        Спасибо за ссылку — весьма любопыно! Особенно, радуют иерахические группы — прямо то, что надо. Буду смотреть, до начала семестра еще есть немного времени :) Возможно, перейду на него.
          +2
          > отдельных репов на github.
          А ещё лучше ознакомиться с самим гитхабом, завести там репозитории и выкинуть svn, освоив git. Вики и багтрек в проектах гитхаба прилагаются.
            0
            Про git и конкретно github задумка есть, но она пока в процессе реализации. Наверное, по окончанию этого семестра расскажу что получилось, если получится.
          0
          Используем на работе Trac + Agilo (меняет Trac до неузнаваемости). Но для целей отслеживания __ошибок__ есть та же Bugzilla.
          И ещё один жирный минус за SVN (не холивора ради). SVN рано или поздно умрёт, ему на замену идут DVSC. И студентам вникнувшим в git будет куда легче освоиться с github и всей его инфраструктурой и особенно — процессом разработки (имею ввиду форки кода и pull-request'ы).
            +1
            А я использую mercurial и bitbucket.
            Проще студентам, которые используют windows
            svn'у уже, имхо, лучше не изучать.
              0
              Что-то я не понял. Что Вы имеет в виду? А чем же именно, Windows-пользователям будет удобнее mercurial и bitbucket по сравнению с svn?
                0
                Прошу прощения, «по сравнению с git».
              +1
              По поводу систем контроля версий…
              Я вообще считаю что каждый вуз должен не меньше чем публичный репозитарий сделать дипломных проектов своих студентов чтобы было понятно реально и вузу и внешним людям кто что делает. опять же по комитам можно смотреть состояние проектаа а по содержимому качество… Но пока я о таком не слышал ни где. Мне кажется если так сделают то всплывет столько халтуры у всех что не отмоются вузы долго.

              По поповду комитов и прицев- проблему это упростит но не решит. перелогин под другим юзером отменить нельзя ведь. А спрашивать по тому что человек комитил упрощает жизнь прицепу тк понять надо только часть.

              По поводу формирования тз- сейчас прикинусь агайлистом и скажу что тз отстой и надо юзать use cases вместо тз тк в реальной разработке нужно выполнять фичи и давать их заказчику тк условия меняются и тп а в вузе тепличная среда и требования фиксированные в течении семестра
                +1
                > Я вообще считаю что каждый вуз должен не меньше чем публичный репозитарий сделать дипломных проектов своих студентов чтобы было понятно реально и вузу и внешним людям кто что делает.

                У нас примерно 1/3 дипломных проектов — это реальные задачи реальных компаний. В пояснительной записке приводится только та информация которая, может быть разглашена публично. Что, в таком случае, должно быть в репозитории? Точно не исходный текст. Текст пояснительной записки? Ну может быть нужно, так же как размещаются в открытых источниках авторефераты и тексты диссертаций.

                Еще 1/3 проектов — это реальные проекты, которые ведутся на или около кафедры. Многие из них так же коммерческие. Поэтому, все то же самое, что в предыдущем варианте.

                Оставшаяся треть — это проекты, темы которых дипломникам высосали (из пальца) на кафедре. Ну такие, думаю, есть почти везде. Такие дипломные проекты можно, да, наверное и нужно, размещать в открытых репозиториях, но тут, действительно, будет стыдно показывать. Может быть это заставит студентов постыдиться, что будущий работодатель сможет увидеть результаты их труда (сейчас он может это сделать только если лично придет на кафедру). И они (эти студенты), в конце-концов постыдяться защищать в качестве диплома всякую хрень и уйдут раньше :) К тому же можно будет начать проводить анализ на плагиат. Я, конечно, знаю результат — я знаю какие главы пояснительной записки все студенты копипастят.

                > в вузе тепличная среда и требования фиксированные в течении семестра

                Смею, Вас, заверить — далеко не всегда! :) У меня есть замечательные примеры, когда задача у студентов менялась за два дня до защиты проекта. И я в этом не виноват. Они сами этого добились.
                +4
                ТУСУР в своем репертуаре, trac и subversion — вчерашний день.
                  0
                  У меня дипломная работы была как раз на эту тему. Там прописал множество процессов, и свое видение данной системы. В частности, рекомендую использовать распределенные системы контроля версий, так как некоторым студентом захочется работать из дома или общаги. А в качестве системы управления проектами выбрал Redmine, заодно подробно описав как его настроить для университета. В следующем году постараюсь внедрить это все.
                    0
                    Ого! Я думал, что вы уже ушли из ТУСУР-а.
                    А svn зря взяли, сейчас обычно используется git.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое