Файл: Методы организации работы в команде разработчиков. Системы контроля версий.pptx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 218
Скачиваний: 6
СОДЕРЖАНИЕ
Методы организации работы в команде разработчиков.
Системы контроля версий решают следующие проблемы:
Децентрализованные системы контроля версий
Современные системы контроля версий
Исследования программного кода
Методы анализа программного кода
Выделяют несколько методов анализа кода для его проверки:
Статический анализ (статистические анализаторы)
Динамический анализ кода решает ряд важных задач, в частности позволяет:
Механизмы и контроль внесения изменений в код
Механизм ветвления проекта в СКВ
Официальный сайт: https://empear.com/
https://www.visual-expert.com/EN/lp-ve-download-source_adv914ve.html?single
Официальный сайт: http://codebrag.com/
Официальный сайт: https://www.gerritcodereview.com/
Официальный сайт: http://codestriker.sourceforge.net/
Официальный сайт: https://rhodecode.com/
Официальный сайт: https://www.phacility.com/phabricator/
Официальный сайт: https://www.atlassian.com/software/crucible
Официальный сайт: https://www.veracode.com/
Официальный сайт: 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/foo.js
К ревью можно будет вернуться в будущем сохранив замечания и контекст, в котором они были выдвинуты.
Как правильно делать код-ревью
Методы организации работы в команде разработчиков.
Системы контроля версий.
Системы контроля версий
Системы контроля версий
Система управления (контроля) версиями (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.