Файл: Методы организации работы в команде разработчиков. Системы контроля версий.pptx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.01.2024

Просмотров: 223

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Методы организации работы в команде разработчиков.

Системы контроля версий.

Системы контроля версий

Системы контроля версий

Система управления (контроля) версиями (Version Control System) — программное обеспечение для облегчения работы с изменяющейся информацией.

Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное

изменение, и многое другое.

Системы контроля версий

Системы контроля версий решают следующие проблемы:

Типы систем контроля версий

Достоинства и недостатки

Достоинства и недостатки

Децентрализованные системы контроля версий

Достоинства и недостатки

Современные системы контроля версий

Анализ программных продуктов

)

Пример критериев сравнения ПП

Исследования программного кода

Методы анализа программного кода

Выделяют несколько методов анализа кода для его проверки:

Статический анализ (статистические анализаторы)

решает ряд важных задач:

Динамический анализ

Динамический анализ кода решает ряд важных задач, в частности позволяет:

Методы исследования кода

Механизмы и контроль внесения изменений в код

Механизм ветвления проекта в СКВ

Обзор утилит для review

1) коллаборационист

2) CodeScene

ключевая характеристика:

Официальный сайт: https://empear.com/

3) Визуальный Эксперт

ключевая характеристика:

Официальный сайт:

https://www.visual-expert.com/EN/lp-ve-download-source_adv914ve.html?single

4) Codebrag

ключевая характеристика:

Официальный сайт: http://codebrag.com/

5) Геррит

ключевая характеристика:

Официальный сайт: https://www.gerritcodereview.com/

6) Codestriker

ключевая характеристика:

Официальный сайт: http://codestriker.sourceforge.net/

7) Родекод

ключевая характеристика:

Официальный сайт: https://rhodecode.com/

8) Phabricator

ключевая характеристика:

Официальный сайт: https://www.phacility.com/phabricator/

9) Тигель

ключевая характеристика:

Официальный сайт: https://www.atlassian.com/software/crucible

10) Veracode

ключевая характеристика:

Официальный сайт: https://www.veracode.com/

11) Наблюдательный Совет

ключевая характеристика:

Официальный сайт: https://www.reviewboard.org/

Ревью кода системы средствами Git

https://github.com/oktend/system-review-example/pull/1/files

Теперь наши ветки выглядят примерно так:

Результат

В созданном merge request можно увидеть все собранные в ходе ревью замечания, даже обсудить их.

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

Замечания можно делать как в отрыве от кода:

https://github.com/oktend/system-review-example/blob/c80b03710059b235347ec781bf08dca9c0e68f7d/review-1march2020-goodman.md

так и в контексте кода:

https://github.com/oktend/system-review-example/blob/c80b03710059b235347ec781bf08dca9c0e68f7d/foo.js

Замечания можно просматривать в веб-интерфейсе github (или аналогов), в IDE, или средствами самого git.

К ревью можно будет вернуться в будущем сохранив замечания и контекст, в котором они были выдвинуты.

Как правильно делать код-ревью

Аналоги:

1.1. Менторство

1.1. Менторство

1.2. Принципы

1.3. Разрешение конфиликтов

2. На что обращать внимание в ревью

2.1. Дизайн (структура

2.2. Функциональность)

2.3. Сложность

2.4. Тесты

2.5. Наименования

2.6. Комментарии

2.7. Стиль

2.8. Документация

2.9. Каждая строчка

2.10. Контекст

2.11. Позитивные моменты

Итоги

Самое важное при проведении ревью:


Codestriker имеет лицензию под GPL.

Официальный сайт: http://codestriker.sourceforge.net/


7) Родекод

ключевая характеристика:


Rhodecode-это инструмент управления открытым исходным кодом, защищенным и инкорпорированным корпоративным исходным кодом.
Rhodecode служит интегрированным инструментом для Git, Subversion и Mercurial.
Основными функциями Rhodecode являются совместная работа с командой, управление репозиторием и безопасность и аутентификация кода.
Rhodecode имеет 2 выпуска, Community Edition (CE) который является бесплатным и открытым исходным кодом и Enterprise Edition (EE) лицензируется на одного пользователя.
Rhodecode автоматизирует рабочие процессы для быстрого выполнения.

Официальный сайт: https://rhodecode.com/


8) Phabricator

ключевая характеристика:


Инструмент проверки кода от Phabricator suite называется “дифференциальный". Он используется для минимизации усилий, необходимых для создания кода наилучшего качества.
Phabricator имеет два типа рабочих процессов проверки кода, а именно “предварительный толчок”, также называемый “обзором”, и “пост-толчок”, называемый “аудит”.
Phabricator может быть интегрирован с Git, Subversion и Mercurial.

Официальный сайт: https://www.phacility.com/phabricator/


9) Тигель

ключевая характеристика:


Тигель гибкое применение которое приспосабливает обширный ряд подходов к работы и размеров команды.
Crucible-это легкий инструмент для проверки однорангового кода, который используется в обзорах до и после фиксации.
Обзор кода стал легким для SVN, Perforce и CVS и т. д. С помощью Crucible.

Официальный сайт: https://www.atlassian.com/software/crucible


10) Veracode

ключевая характеристика:


Veracode используется разработчиками при создании защищенного программного обеспечения путем сканирования двоичного кода или байтового кода вместо исходного кода.
С помощью Veracode можно идентифицировать неправильные зашифрованные функциональные возможности, вредоносный код и бэкдоры из исходного кода.
Veracode может просмотреть большое количество кода и сразу же возвращает результаты.
Для использования Veracode нет необходимости покупать какое-либо программное или аппаратное обеспечение, вам просто нужно оплатить необходимые службы analysis services.

Официальный сайт: https://www.veracode.com/


11) Наблюдательный Совет

ключевая характеристика:



Используя обзорную доску для обзора кода можно сэкономить деньги и время. Сэкономленное время можно использовать для концентрации на создании отличного программного обеспечения.
Обзорная доска может быть интегрирована с ClearCase, CVS, Perforce, пластиком и т. д.
В коде review by Review Board tool, код является синтаксис выделен, что делает его чтение быстрее.
Обзорная доска поддерживает обзоры до фиксации и обзоры после фиксации.

Официальный сайт: https://www.reviewboard.org/


Ревью кода системы средствами Git


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

Как это сделать средствами самого Git: зафиксировать состояние в ветке для ревью, затем в merge request к этой ветке оставить свои замечания.

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


Проблематика

Найдем состояние в репозитории для ревью (на момент ревью это был последний коммит в dev): https://github.com/oktend/system-review-example/commit/0514531a35edf19e7032eb49f45a98d019f83efe
Ветвим от выбранного состояния ветку для нашего системного ревью, например "system-review/1march2020-goodman": https://github.com/oktend/system-review-example/tree/system-review/1march2020-goodman


Метод ревью кода системы

Создаем от вновь созданной ветки еще одну ветку, в которой будем собирать замечания, например "1march2020-goodman-issues": https://github.com/oktend/system-review-example/tree/system-review/1march2020-goodman-issues
Вносим в эту ветку удобным нам способом наши замечания, как прямо в код, так и в отдельные документы.
Создаем merge request (может называться pull request) к ветке для ревью "system-review/1march2020-goodman-issues" -> "system-review/1march2020-goodman":

https://github.com/oktend/system-review-example/pull/1/files


Теперь наши ветки выглядят примерно так:


https://github.com/oktend/system-review-example/network

Результат

В созданном merge request можно увидеть все собранные в ходе ревью замечания, даже обсудить их.

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

Замечания можно делать как в отрыве от кода:

https://github.com/oktend/system-review-example/blob/c80b03710059b235347ec781bf08dca9c0e68f7d/review-1march2020-goodman.md

так и в контексте кода:


https://github.com/oktend/system-review-example/blob/c80b03710059b235347ec781bf08dca9c0e68f7d/foo.js

Замечания можно просматривать в веб-интерфейсе github (или аналогов), в IDE, или средствами самого git.

К ревью можно будет вернуться в будущем сохранив замечания и контекст, в котором они были выдвинуты.

Как правильно делать код-ревью


CL: «changelist» — список изменений кода, отправленный в систему контроля версий на ревью.

Аналоги:

PR: «Pull Request» в GitHub
MR: «Merge Request» в GitLab


Терминология:

1.1. Менторство

1.1. Менторство

1.2. Принципы

1.3. Разрешение конфиликтов


1. Стандарты код-ревью

2. На что обращать внимание в ревью

2.1. Дизайн (структура

2.2. Функциональность)

2.3. Сложность

2.4. Тесты

2.5. Наименования

2.6. Комментарии

2.7. Стиль

2.8. Документация

2.9. Каждая строчка

2.10. Контекст

2.11. Позитивные моменты

Итоги

Самое важное при проведении ревью:


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