🗊Качество код. Анализ кода с NDepend

Категория: Технологии
Нажмите для полного просмотра!
Качество код.  Анализ кода с NDepend, слайд №1Качество код.  Анализ кода с NDepend, слайд №2Качество код.  Анализ кода с NDepend, слайд №3Качество код.  Анализ кода с NDepend, слайд №4Качество код.  Анализ кода с NDepend, слайд №5Качество код.  Анализ кода с NDepend, слайд №6Качество код.  Анализ кода с NDepend, слайд №7Качество код.  Анализ кода с NDepend, слайд №8Качество код.  Анализ кода с NDepend, слайд №9Качество код.  Анализ кода с NDepend, слайд №10Качество код.  Анализ кода с NDepend, слайд №11Качество код.  Анализ кода с NDepend, слайд №12Качество код.  Анализ кода с NDepend, слайд №13Качество код.  Анализ кода с NDepend, слайд №14Качество код.  Анализ кода с NDepend, слайд №15Качество код.  Анализ кода с NDepend, слайд №16Качество код.  Анализ кода с NDepend, слайд №17Качество код.  Анализ кода с NDepend, слайд №18Качество код.  Анализ кода с NDepend, слайд №19Качество код.  Анализ кода с NDepend, слайд №20Качество код.  Анализ кода с NDepend, слайд №21Качество код.  Анализ кода с NDepend, слайд №22Качество код.  Анализ кода с NDepend, слайд №23Качество код.  Анализ кода с NDepend, слайд №24Качество код.  Анализ кода с NDepend, слайд №25Качество код.  Анализ кода с NDepend, слайд №26Качество код.  Анализ кода с NDepend, слайд №27Качество код.  Анализ кода с NDepend, слайд №28Качество код.  Анализ кода с NDepend, слайд №29Качество код.  Анализ кода с NDepend, слайд №30Качество код.  Анализ кода с NDepend, слайд №31Качество код.  Анализ кода с NDepend, слайд №32Качество код.  Анализ кода с NDepend, слайд №33Качество код.  Анализ кода с NDepend, слайд №34Качество код.  Анализ кода с NDepend, слайд №35Качество код.  Анализ кода с NDepend, слайд №36Качество код.  Анализ кода с NDepend, слайд №37Качество код.  Анализ кода с NDepend, слайд №38Качество код.  Анализ кода с NDepend, слайд №39

Содержание

Вы можете ознакомиться и скачать Качество код. Анализ кода с NDepend. Презентация содержит 39 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Качество код. 
Анализ кода с NDepend
Описание слайда:
Качество код. Анализ кода с NDepend

Слайд 2





План
Качество
Какие способы достичь качества
Качество кода в аспекте проектирования
Принципы ООП/ООД
Метрики кода
NDepend
Описание слайда:
План Качество Какие способы достичь качества Качество кода в аспекте проектирования Принципы ООП/ООД Метрики кода NDepend

Слайд 3





Зачем качество?
Описание слайда:
Зачем качество?

Слайд 4





Холиворная тема
Описание слайда:
Холиворная тема

Слайд 5





“Железный треугольник”
Описание слайда:
“Железный треугольник”

Слайд 6





“Железный треугольник”
Описание слайда:
“Железный треугольник”

Слайд 7





К чему эти треугольники?
Описание слайда:
К чему эти треугольники?

Слайд 8





Ценности качественного кода
Описание слайда:
Ценности качественного кода

Слайд 9





Какие есть способы?
Организационные 
XP (eXtreme Programming)
Code review
Project management, methodology, 
Utilities: StyleCop, FxCop, Code Analysis
Requirements…
Технические
Юнит-тесты
TDD, Defensive programming style
OOP/OOD, principles
Обучение
Описание слайда:
Какие есть способы? Организационные XP (eXtreme Programming) Code review Project management, methodology, Utilities: StyleCop, FxCop, Code Analysis Requirements… Технические Юнит-тесты TDD, Defensive programming style OOP/OOD, principles Обучение

Слайд 10





Какие есть способы?
Внешние – программистские практики
Парное программирование
Статический анализ кода
Code review ,
Unit-tests, TDD/BDD
Внутренние - правильное проектирование и рефакторинг кода как способ превращения плохого кода в более хороший
OOP/OOD, principles, 
Programming style
Описание слайда:
Какие есть способы? Внешние – программистские практики Парное программирование Статический анализ кода Code review , Unit-tests, TDD/BDD Внутренние - правильное проектирование и рефакторинг кода как способ превращения плохого кода в более хороший OOP/OOD, principles, Programming style

Слайд 11





Сode Review
Описание слайда:
Сode Review

Слайд 12





Статический анализ кода
StyleCop, FxCop, Code Analysis, Ndepend
Цель автоматизировать review кода и обратить внимание на распространненые ошибки и скользкие участки.
В идеале внедрить стат. 
анализ в CI (build process)
Описание слайда:
Статический анализ кода StyleCop, FxCop, Code Analysis, Ndepend Цель автоматизировать review кода и обратить внимание на распространненые ошибки и скользкие участки. В идеале внедрить стат. анализ в CI (build process)

Слайд 13





Методологии и управление
Управление проектом напрямую влияет на результаты и удовлетворенность от работы
Хаотическое управление = низкое качество 
(e.g. Cowboy coding)
Описание слайда:
Методологии и управление Управление проектом напрямую влияет на результаты и удовлетворенность от работы Хаотическое управление = низкое качество (e.g. Cowboy coding)

Слайд 14





Extreme programming
Парное программирование
Всесторонний code review
Юнит-тесты на весь код (TDD)
YAGNI, не пишем того, что не нужно
Изменчивые требования
Частая коммуникация с заказчиком и в команде
Описание слайда:
Extreme programming Парное программирование Всесторонний code review Юнит-тесты на весь код (TDD) YAGNI, не пишем того, что не нужно Изменчивые требования Частая коммуникация с заказчиком и в команде

Слайд 15





Обучение
Никакие утилиты стат. анализа не заменят людей
Позволяет писать качественные код 
Повышает коммуникации
Улучшает команду
Парное программирование 
способствует
Описание слайда:
Обучение Никакие утилиты стат. анализа не заменят людей Позволяет писать качественные код Повышает коммуникации Улучшает команду Парное программирование способствует

Слайд 16





Юнит-тесты, TDD
Юнит-тесты – позволяют контролировать соответствие кода задуманному поведению.

ТDD – подход к написанию кода начиная с тестов. 

«Тесты вперед»
Описание слайда:
Юнит-тесты, TDD Юнит-тесты – позволяют контролировать соответствие кода задуманному поведению. ТDD – подход к написанию кода начиная с тестов. «Тесты вперед»

Слайд 17





Рефакторинг
Описание слайда:
Рефакторинг

Слайд 18





Защитное программирование
Defensive programming 

Использование 
ассертов (asserts)
Использование 
контрактов кода
(code contracts)

Ассерты или контракты 
как мини юнит-тесты 
если что то идет не так
Описание слайда:
Защитное программирование Defensive programming Использование ассертов (asserts) Использование контрактов кода (code contracts) Ассерты или контракты как мини юнит-тесты если что то идет не так

Слайд 19





Технический долг
К его появлению приводит быстрая и бездумная разработка
Когда мы понимаем, что можем написать дизайн лучше, но в силу причин не делаем этого – мы откладываем долг.
Выплачивать придется рефакторингом
Описание слайда:
Технический долг К его появлению приводит быстрая и бездумная разработка Когда мы понимаем, что можем написать дизайн лучше, но в силу причин не делаем этого – мы откладываем долг. Выплачивать придется рефакторингом

Слайд 20





Ценности, принципы и паттерны
Описание слайда:
Ценности, принципы и паттерны

Слайд 21





Принципы ООП/ООД
Принципы SOLID
Принципы GRASP
KISS = Keep it simple
DRY = Don’t repeat 
		yourself
YAGNI = You ain’t 
		gonna need it
Описание слайда:
Принципы ООП/ООД Принципы SOLID Принципы GRASP KISS = Keep it simple DRY = Don’t repeat yourself YAGNI = You ain’t gonna need it

Слайд 22





Метрики кода
Это количественные показатели, которые можно измерить и которые могут дать представление о качестве кода
Что можно померять:
Lines of code
Number of classes
Inheritance depth 
Maintainability index
Cyclomatic index
Описание слайда:
Метрики кода Это количественные показатели, которые можно измерить и которые могут дать представление о качестве кода Что можно померять: Lines of code Number of classes Inheritance depth Maintainability index Cyclomatic index

Слайд 23





NDepend. Dependency graph
Описание слайда:
NDepend. Dependency graph

Слайд 24





NDepend. Dependency graph
Описание слайда:
NDepend. Dependency graph

Слайд 25





Ndepend. Dependency matrix
Описание слайда:
Ndepend. Dependency matrix

Слайд 26





Ndepend. Metrics view
Описание слайда:
Ndepend. Metrics view

Слайд 27





CQL Query Explorer
Описание слайда:
CQL Query Explorer

Слайд 28





NDepend. CQL
SQL подобный синтакс
Запросы к базе кода
(code base), чтобы полу-
чить метрики
SELECT TOP 10 METHODS 
ORDER BY NbLinesOfCode DESC

SELECT METHODS 
WHERE NbLinesOfCode > 10

SELECT FIELDS WHERE HasAttribute "System.ThreadStaticAttribute"
Описание слайда:
NDepend. CQL SQL подобный синтакс Запросы к базе кода (code base), чтобы полу- чить метрики SELECT TOP 10 METHODS ORDER BY NbLinesOfCode DESC SELECT METHODS WHERE NbLinesOfCode > 10 SELECT FIELDS WHERE HasAttribute "System.ThreadStaticAttribute"

Слайд 29





Метрики
Описание слайда:
Метрики

Слайд 30





Coupling
Efferent coupling (Ce): внутренняя связанность, число типов внутри  сборки, которые зависят от типов из вне сборки 
Afferent coupling (Ca): внешняя связанность, число типов вне сборки которые зависят от типов в внутри сборки
Описание слайда:
Coupling Efferent coupling (Ce): внутренняя связанность, число типов внутри сборки, которые зависят от типов из вне сборки Afferent coupling (Ca): внешняя связанность, число типов вне сборки которые зависят от типов в внутри сборки

Слайд 31





Instability (I)
Instability (I): отношение внутренней связанности(Ce) к общей связанности, индикатор устойчивости к изменениям. 
I = Ce / (Ce + Ca)
I=0 – полностью стабильная сборка, сложная для модификации.
I=1 – нестабильная сборка, внутри слабая связанность
Описание слайда:
Instability (I) Instability (I): отношение внутренней связанности(Ce) к общей связанности, индикатор устойчивости к изменениям. I = Ce / (Ce + Ca) I=0 – полностью стабильная сборка, сложная для модификации. I=1 – нестабильная сборка, внутри слабая связанность

Слайд 32





Abstractness (A)
Abstractness (A): абстрактность, отношение числа внутренних абстрактных типов к числу внутренних типов.
A=0 – полностью «конкретная» сборка 
A=1 – полностью абстрактная сборка
Описание слайда:
Abstractness (A) Abstractness (A): абстрактность, отношение числа внутренних абстрактных типов к числу внутренних типов. A=0 – полностью «конкретная» сборка A=1 – полностью абстрактная сборка

Слайд 33





Relational Cohesion (H)
Relational Cohesion (H): относительная сцепленность, среднее число внутренних отношений на тип:
H = (R + 1) / N, 
где R = число отношений внутри сборки, 
N = число типов сборки
Классы внутри сборки должны сильно соотносится друг с другом, и сцепленность должна быть высокой.
С другой стороны, слишком большие значение могут означать излишнюю связанность. Хорошие значения сцепленности 1.5 ≤ H ≤ 4.0
Описание слайда:
Relational Cohesion (H) Relational Cohesion (H): относительная сцепленность, среднее число внутренних отношений на тип: H = (R + 1) / N, где R = число отношений внутри сборки, N = число типов сборки Классы внутри сборки должны сильно соотносится друг с другом, и сцепленность должна быть высокой. С другой стороны, слишком большие значение могут означать излишнюю связанность. Хорошие значения сцепленности 1.5 ≤ H ≤ 4.0

Слайд 34





Coupling, Cohesion, Abstractness and Instability metrics on example
Описание слайда:
Coupling, Cohesion, Abstractness and Instability metrics on example

Слайд 35





Lack of cohesion (LCOM)
Принцип SRP утверждает, что класс должен иметь не более чем одну причину для изменения. Такой класс сцепленный (cohesive).
Высокое значение означает 
плохо сцеплений класс.
Типы, у которых LCOM > 0.8 могут быть проблемными. Тем не менее, очень сложно избежать таких не-сцепленных типов
Описание слайда:
Lack of cohesion (LCOM) Принцип SRP утверждает, что класс должен иметь не более чем одну причину для изменения. Такой класс сцепленный (cohesive). Высокое значение означает плохо сцеплений класс. Типы, у которых LCOM > 0.8 могут быть проблемными. Тем не менее, очень сложно избежать таких не-сцепленных типов

Слайд 36





Cyclomatic Complexity (CC)
Число следующих выражений в методе:
if, while, for, foreach, case, default, continue, goto, &&, ||, catch, ? : (ternary operator), ?? (nonnull operator)

Эти выражения не учитываются: 
else, do, switch, try, using, throw, finally, return, object creation, method call, field access

CC > 15 сложно понимать, CC > 30 очень сложные и должны быть разбиты на более мелкие методы (кроме сгенерированного кода)
Описание слайда:
Cyclomatic Complexity (CC) Число следующих выражений в методе: if, while, for, foreach, case, default, continue, goto, &&, ||, catch, ? : (ternary operator), ?? (nonnull operator) Эти выражения не учитываются: else, do, switch, try, using, throw, finally, return, object creation, method call, field access CC > 15 сложно понимать, CC > 30 очень сложные и должны быть разбиты на более мелкие методы (кроме сгенерированного кода)

Слайд 37





Distance from main sequence:
zone of pain and zone of uselessness
Main sequence в терминах NDepend,
	A + I = 1,
Представляет оптимальный баланс между абстрактностью и стабильностью
D – это нормализированное расстояние от main sequence, 
0 ≤ D ≤ 1
Сборки с D > 0.7  - проблематичны

Но, в реальной жизни, сложно 
избежать таких сборок. 
Просто необходимо удерживать 
число таких сборок минимальным.
Описание слайда:
Distance from main sequence: zone of pain and zone of uselessness Main sequence в терминах NDepend, A + I = 1, Представляет оптимальный баланс между абстрактностью и стабильностью D – это нормализированное расстояние от main sequence, 0 ≤ D ≤ 1 Сборки с D > 0.7 - проблематичны Но, в реальной жизни, сложно избежать таких сборок. Просто необходимо удерживать число таких сборок минимальным.

Слайд 38





Cсылки и источники
Описание слайда:
Cсылки и источники

Слайд 39





Спасибо за внимание:)
Описание слайда:
Спасибо за внимание:)



Похожие презентации
Mypresentation.ru
Загрузить презентацию