Способ оценки качества исходного кода или code review reminder
DESCRIPTION
Денис Иванов, uml2.ru, Ай Ти Консалтинг, Санкт-Петербург, РоссияTRANSCRIPT
![Page 1: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/1.jpg)
Иванов Денис, Ай Ти КонсалтингФедоров Андрей, LG Electronics
Способ оценки качества исходного кода илиCode Review Reminder
![Page 2: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/2.jpg)
Чего нельзя измерить, тем нельзя управлять.Изречение американских менеджеров
Гораздо легче провести измерение, чем понять, что именно вы измеряете.
Дж. У. Н. Салливен (1886-1937), американский физик
![Page 3: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/3.jpg)
Качество
• Качество ПО – это нефункциональное (желательное) требование.
• Качество ПО влияет на– отладку (debugging) – тестирование (testing)– поддержку (maintenance)– внесение изменений (modification)
• исправление ошибок (fixing)
– и т.д.
• Оценка качества ПО– относительная
![Page 4: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/4.jpg)
The Stable Dependencies Principle
Package A
Package B
Более устойчивый пакет
Менее устойчивый пакет
![Page 5: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/5.jpg)
Неустойчивость (by Robert C. Martin)
• Ca – количество классов вне пакета, которые зависят от классов, находящихся внутри пакета
• Ce – количество классов внутри пакета, которые зависят от классов, находящихся вне пакета
• I – неустойчивость пакета
• I = 1 – максимально неустойчивый пакет• I = 0 – максимально устойчивый пакет
ea
a
CC
CI
![Page 6: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/6.jpg)
Неустойчивость (by Robert C. Martin)
Package A
Package B
Максимально устойчивый пакет
Максимально неустойчивый пакет
![Page 7: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/7.jpg)
Неустойчивость (by Robert C. Martin)
• Относится к пакету, но не ко всей системе• Не учитывает косвенные зависимости• Хорошо или плохо?
![Page 8: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/8.jpg)
Один из признаков качества
Устойчивость к внесению изменений
Анализ отношений между модулями системы, т.е. анализ структуры
Модули:– Каталоги– Файлы– Пространства имен– Классы– Методы– Кооперации– …
![Page 9: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/9.jpg)
Неустойчивость
Неустойчивость модуля к внесению изменений в программную систему – приблизительная вероятность того, что изменение в некотором другом модуле повлекут за собой изменения в исходном
• Относится к модулю и может быть перенесено на всю систему (усреднено)
• Учитывает косвенные зависимости• Хорошо или плохо
![Page 10: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/10.jpg)
Пример
020 025
040
060 070
100
![Page 11: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/11.jpg)
0
0,05
0,1
0,15
0,2
0,25
0,3
20 25 30 35 40 55 60 65 70 85 100 120 130 170
Revision
Isy
sПример
![Page 12: Способ оценки качества исходного кода или Code Review Reminder](https://reader035.vdocuments.pub/reader035/viewer/2022062319/557f6b61d8b42aab368b4ab7/html5/thumbnails/12.jpg)
References
• http://www.objectmentor.com • http://ru.wikipedai.org• http://blog.it-konsulting.spb.ru• Object-Oriented Metrics in Practice,
ISBN: 978-3-540-24429-5