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

    Дисциплина «Метрология программного обеспечения» входит в учебный план подготовки дипломированных специалистов по направлению 654600 — «Информатика и вычислительная техника» по специальности 220400 — «Программное обеспечение вычислительной техники и автоматизированных систем». Дисциплина изучает проблемы оценки метрических характеристик качества ПО на этапах от разработки спецификаций до завершения отладки и тестирования программного продукта. В курсе рассматриваются критерии, характеристики и метрики качества ПО; особый упор делается на характеристики корректности, надежности и сложности программ. Изучаются формальные модели и методы оценки как статических, так и динамических характеристик качества ПО, позволяющие на различных стадиях разработки выявлять просчеты и дефекты программного изделия. Рассматриваются инструментальные средства поддержки и автоматизации измерения характеристик ПО.
    Далее по тексту будет находится краткий обзор инструментов с помощью которых можно анализировать различные характиристики в приложениях созданных на PHP. Данный материал появился на свет в результате некоторых экспериментов в области непрерывной интеграции, и должен был являться частью статьи про непрерывную интеграцию (спойлерить пока не буду, боюсь сглазить) все в том же РНР, но я решил все-таки выделить его в самостоятельный обзор, так как возможно, в последующих статьях я буду ссылаться на него, а так же надеюсь узнать об аналогичных инструментах еще не попавших мне на глаза. Некоторые инструменты уже были рассмотрены достаточно подробно, но тем не менее полного списка всех доступных еще не было.

    PHP_CodeCoverage

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

    PhpDocumentor

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

    PHP Copy/Paste Detector [phpcpd]

    Название говорит само за себя: находит дублированный код и сообщает о нем.

    PHP_Depend

    Собирает и отображает статистическую информацию о проекте.

    PHP_PMD

    Ответвление от PHP_Depend: отображает информацию о размерах кода, используемых именах, неиспользуемом коде. Обзор от DevMan

    PHP_CodeSniffer

    Позволяет наблюдать за состоянием PHP, JavaScript и CSS файлов и определять отклонения от принятых стандартов кодирования. Обзор от DevMan

    PHPUnit

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

    PHP_CodeBrowser

    Обеспечивает просмотр кода с синтаксической подсветкой, имеет богатые возможности по визуализации, может использовать отчеты от: phpunit, phpcpd, padawan, phpcs. Из этого обзора можно понять насколько инструмент перспективный.

    phploc

    Еще один инструмент собирающий статистическую информацию о проекте.

    phpdcd

    Детектор неиспользуемого кода (Dead Code Detector) для PHP. Он сканирует PHP проект на предмет всех определенных функций и методов и сообщает о них как о неиспользуемых если из вызов не встречается хотя бы однажды

    Padawan

    Инструмент для обнаружения антипаттернов, обходных путей и прочих неприятностей.

    PHP_CachegrindParser

    Обработчик для cachegrind файлов создающий xml отчеты для последующего использования в CI.

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

    Подробнее
    Реклама
    Комментарии 43
    • +3
      Все это хорошо и даже замечательно, вот только у меня на кафедре по дисциплине «Метрология и сертификация» были не «проблемы оценки метрических характеристик качества ПО», а метрология и сертификация… измерительных приборов! А что поделать, когда завкаф — старая дура?
      • +2
        Вполне возможно, что «проблемы оценки метрических характеристик качества ПО» не входят в учебный план, предусмотренный по дисциплине «Метрология и сертификация». Особенно касается тех специальностей, которые направленные, например, «Метрология и сертификация (в машиностроении)/(в металлургии)/и т.п.»
        • +3
          Как раз моя специальность — это и есть 220400 — «Программное обеспечение вычислительной техники и автоматизированных систем» по направлению 654600 «Информатика и вычислительная техника». Вот только, как я уже сказал, завкаф — старая дура и думает, что программист.

          К счастью, я уже выпустился, и этот бардак, который называется «образование» меня больше не касается.
          • 0
            Это различные дисциплины, Метрология и сертификация уже мной пройдена и забыта, а Метрология программного обеспечения еще только предстоит.
        • +1
          Ставлю топику плюс, думая о том, что возможно, когда-нибудь в далеком будущем, я воспользуюсь каким-нибудь из этих инструментов)
          • 0
            А в избранное добавили? :-)
            • 0
              Спасибо, забыл сделать это сразу))
          • +1
            Тема актуальная, ждём продолжения
            • 0
              Спасибо за обзор, было бы неплохо в продолжении рассказать об интеграции этих инструментов в phpUnderControl.
              • 0
                Что именно интересует? Многие из этих инструментов входят в состав PUC.
                • 0
                  Это не меня конкретно интересует, просто, возможно, кому-то было бы интересно посмотреть, как эти инструменты работают в puc.
                  • 0
                    PUC подходит только для знакомства с CI, на мой взгляд он не достаточно удобен.
              • +1
                О некоторых вещах даже не знал, очень жду продолжения этой темы.
                • 0
                  На данный момент я настраиваю эти инструменты для использования в TeamCity, как только результат меня устроит постараюсь его задокументировать.
                • 0
                  Раньше мерялись линейкой у кого больше, а сейчас у кого на чем и сколько строчек=)
                  • 0
                    А Sebastian Bergmann молодец…
                    Спасибо за обзор инструментов, давно я не смотрел в эту сторону. Будет интересно посмотреть на результаты проекта.
                    • 0
                      Нового пожалуй ничего не узнал, но вот то что такой сборник в одном месте…
                      Спасибо за подборку, очень удобно.
                      • +1
                        Хорошая подборка. Жаль только, что большинство людей прочитает, в лучшем случае посмотрит, и забудет.
                        • 0
                          ну кто-то возможно добавит в избранное :)
                          инструменты полезные.
                          • 0
                            Добавить в избранное — это одно, а реально использовать — совершенно другое.
                          • 0
                            На костер неверных.
                          • 0
                            Спасибо за подборку, некоторые знал и использовал. Некоторые надо будет попробовать использовать.
                            • 0
                              о тэгов что-то в глазах рябит :)
                              • 0
                                плюсую. инструменты полезные. не всеми пока довелось попользоваться, но когда пишешь крупный проект, за всем уследить становится труднее и нужны дополнительные средства. Особенно когда работаешь один и проект тянется больше года.

                                Подробные обзоры было бы интересно почитать.
                                • 0
                                  Открою секрет сами по себе инструменты эти не особо полезны, так как в основном предоставляют отчеты в xml форме, но после интеграции с другими продуктами могут сделать разработку более комфортной.
                                  • 0
                                    ну это понятно. в какой-то мере это я и имел ввиду.
                                    • 0
                                      В моем случае я планирую применить их в группе проектов разрабатываемых в течении нескольких лет большим количеством людей.
                                • 0
                                  Мы все это здорово запустили вместе с AtlassianBamboo для автоматических билдов, но парочка инструментов все-таки не знакома — спасибо!
                                  • 0
                                    Я пробовал и Bamboo и меня он впечатлил не так сильно как TeamCity, но возможно при интеграции c другими их продуктами он все-таки выигрывает.
                                    • 0
                                      Нужно будет попробовать обязательно. Что мне в нем особенно кажется примечательным — это возможность не принимать коммит в репозиторий если провалились какие-то тесты или инспекции. Так чтобы никто не мог передать в репозиторий сбойный код. В bamboo этого нет.
                                      • 0
                                        Мне бы процесснинг xml сначала там сделать в презентабельном виде и как нить умудриться phpDoc и прочий html в iframe подгружать в доп. табах…
                                        • 0
                                          И к тому же для приложений которые поставляются как есть, такое будет наверное больше вредить нежели помогать, а вот если это контроллер к искусственной почке тогда да.
                                          • 0
                                            Да, наверное так и есть — но у нас после удачного билда идет автоматический деплоймент на рабочие серверы, поэтому без тестов никак. А если тесты провалились, то нафиг такой код в репозиторий принимать. Можно послать автору коммита сообщение и пускай поправит свой код. Так что почти как контроллер от почки получается ))

                                            Кстати все эти желанные функции становятся все менее актуальны с переходом на репозитории Git вместо Subversion. Некоторое время назад поддержки Git в TeamCity не было, не знаю как сейчас. Возможно уже сделали?
                                            • 0
                                              Сейчас уже есть, всего поддерживается 10 различных VCS.

                                              Со временем планируется использовать аналогичную схему для деплоя, только рабочие это продакшин или стейджинг?
                                              • 0
                                                Ну это по желанию, у нас продакшен, но деплоймент-билды все равно запускаются вручную из бамбу.
                                                • 0
                                                  А есть уже какие-то ощущения что непрерывная интеграция дает что-то полезное, если сравнивать период разработки до интеграции с Bamboo и после?
                                                  • 0
                                                    Да, конечно — прежде всего это непрерывная обратная связь, автоматическое развертывание и апдейты проекта. Также очень полезен автоматический сбор всех метрик и инспекции, генерация документации. Причем в сценарии построения можно встроить не только генерацию api-документации но и пользовательской документации, если например писать ее в докбуке и компилировать во вемя билда через phd.

                                                    Вобщем преимуществ масса и многие из них зависят индивидуально от вашего проекта и как вы адаптируете автоматизацию к своему процессу разработки. Главное тут поменьше ручного труда ))
                                                    • 0
                                                      Единственное что огорчает это длительный процесс настройки, я видимо избалован инсталляторами с GUI.
                                                • 0
                                                  То есть для проекта есть три вида билдов: 1. быстрый билд (при каждом коммите в репозиторий) 2. полный билд (каждое утро — все проверки, инспекции и генерация документации) 3. деплоймент-билд (вручную — все проверки + обновление рабочих серверов)
                                                  • 0
                                                    Я тоже сейчас думаю что такая структура для каждого проекта оптимальна, так как полный билд занимает на текущий момент около 2 часов и это только сбор статистической информации без запуска единого теста.
                                      • 0
                                        Благодарю. Полезно.
                                        +
                                        • 0
                                          Полезные инструменты. Спасибо! Буду улучшать качество своего кода.
                                          • 0
                                            однозначно в мемориз!

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