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

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

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

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

Добавлен: 10.01.2024

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

Скачиваний: 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. Позитивные моменты

Итоги

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

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

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

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

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

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

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

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

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

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


    - хранение версий файлов;
    - возможность получить любые предыдущие версии хранимых файлов;
    - просмотр изменений внесенных между заданными в запросе версиями;
    - сохранение и просмотр комментариев и авторов к внесенным изменениям.

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


Локальные системы контроля версий
    Пример: rcs.

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

    Пример: CVS, Subversion и Perforce.

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

    Пример: Git, Mercurial, Bazaar, Darcs.

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


Достоинства

Недостатки

Возможность восстановления данных  из определенной версии;

Возможность потери данных вследствие возникновения физических поломок оборудования;

Высокая скорость выполнения восстановления.

Отсутствие возможности совместной разработки.

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


Достоинства

Недостатки

Возможность восстановления данных  из определенной версии;

Отсутствие доступа к данным при сбое работы сервера;

Возможность ведения командной разработки проекта.

довольно низкая скорость работы.

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

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


Достоинства

Возможность восстановления данных  из определенной версии

Возможность ведения командной разработки проекта

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

При физической поломке сервера данные можно легко перенести в новый удалённый репозиторий с любого локального репозитория

Высокая скорость работы

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


Существует много систем контроля версий (Git, Darcs, Mercurial, Bazaar, Monotone и т.д), сходных по принципу работы и конечным задачам.
Самая популярная на сегодняшний день система контроля версий – Git

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


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


Шаг 1. Комиссия экспертов формирует таблицу критериев оценки, являющихся самыми важными для потребителя.
Шаг 2. Та же комиссия для каждого критерия определяет методику оценки выполнения критерия таким образом, чтобы "обезразмерить" исходные показатели (шкалирование

)

Шаг 3. Для каждого критерия эксперты выставляют коэффициенты значимости критерия для оценки продукта. Коэффициенты распределяются на отрезке от 0 до 1.
Шаг 4. Производится расчет аддитивной суммы интегральной оценки для каждого сравниваемого продукта по следующей формуле
Шаг 5. Значения интегральных оценок для каждого сравниваемого продукта ранжируются по убыванию

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

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

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

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


      статический динамический гибридный

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

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


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


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

    Недостатки методов статического анализа кода:

    недостаточно хорошая диагностика утечек памяти и параллельных ошибок корректный код при анализе тоже может попасть в список недостатков (ложнопозитивные события)

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

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


имитировать поведение пользователя и рассматривать работу программы в различных ситуациях и с различными наборами данных

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


    обычно не присутствует появление ложных срабатываний;
    обнаруженная ошибка является фактической, а не возможной;
    позволяет протестировать программы с закрытым кодом.

    Недостатки динамического анализа кода:

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

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


Отладка
Трассировка
Ревьюирование
Тестирование
Профилирование
Обратное проектирование
Дизассемблирование
Использование анализаторов трафика (снифферов)
Использование утилит для динамического анализа кода
Экспертиза ПО

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


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

    Существуют разные типы СКВ со своими алгоритмами и возможностями работы:

    локальная;
    централизованная;
    децентрализованная (распределенная).


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



    контроль за исходным кодом управление версиями управление конфигурациями контроль доступа ветвление

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

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


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

DeepCode - программа применяется для обнаружения и исправления ошибок в коде
Node.js - предназначена для поиска уязвимостей в модулях
PVS-Studio - инструмент для выявления ошибок и потенциальных уязвимостей в исходном коде программ, написанных на языках С, С++ и С#
BlameNotifier - инструмент позволяет рассылать письма разработчикам об ошибках, которые PVS-Studio нашел во время ночного прогона


!!!!Самостоятельно учебник, глава 2, п.2.1, стр.82-87

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


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

Установите правила проверки и автоматические уведомления, чтобы гарантировать, что проверки будут завершены вовремя.
Пользовательские шаблоны проверки уникальны для Collaborator. Установите настраиваемые поля, контрольные списки и группы участников, чтобы адаптировать экспертные оценки к идеальному рабочему процессу вашей команды.
Легко интегрируется с 11 различными SCMs, а также IDE, такими как Eclipse & Visual Studio
Создавайте пользовательские отчеты о проверке, чтобы повысить эффективность процесса и упростить аудит.
Проводите экспертные обзоры документов в одном и том же инструменте, чтобы команды могли легко согласовываться с требованиями, изменениями дизайна и нагрузками соответствия.

Официальный сайт: https://smartbear.com/product/collaborator/free-trial/

2) CodeScene

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


Автоматический Просмотр кода комментарии на запросы вытягивания.
Качественные ворота для CI / CD.
A целенаправленный рабочий процесс для улучшения планирования.
Контролируйте технический долг и код здоровья.
Работает с любым git хостингом.
Интегрируется с Jira для отслеживания тенденций в производительности доставки.
CodeScene доступен как в локальной, так и в размещенной версии.

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


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

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


Находите неиспользуемые объекты, индексы или таблицы
Определите отсутствующие индексы, ухудшающие время выполнения запроса.

Проверьте соглашения об именовании.
Генерируйте метрики кода: строки кода, количество объектов, переменные и т.д.
Находите негабаритные объекты.
Найдите пустые функции, не имеющие активного кода.
Visual Expert toolbox также включает в себя CRUD matrix generation, автоматическую документацию по коду, электронные диаграммы, синхронизированные с кодом, анализ производительности кода и многое другое.

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

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


4) Codebrag

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


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

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


5) Геррит

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


Gerrit-это бесплатный веб-инструмент для проверки кода, используемый разработчиками программного обеспечения для проверки своего кода в веб-браузере и отклонения или утверждения изменений.
Gerrit может быть интегрирован с Git, который является распределенной системой управления версиями.
Gerrit обеспечивает управление репозиторием для Git.
Используя Gerrit, участники проекта могут использовать рационализированный процесс просмотра кода, а также чрезвычайно настраиваемую иерархию.
Gerrit также используется при обсуждении нескольких подробных сегментов кода и повышении правильности вносимых изменений.

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


6) Codestriker

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


Codestriker-это открытое и бесплатное онлайн-приложение для просмотра кода, которое помогает в совместном просмотре кода.
С помощью Codestriker можно записывать вопросы, комментарии и решения в базу данных, которая в дальнейшем может быть использована для проверок кода.
Codestriker поддерживает традиционный просмотр документов. Его можно интегрировать с ClearCase, Bugzilla, CVS, etc.