'

Эффективное ОО-проектирование и структурное качество приложений

Понравилась презентация – покажи это...





Слайд 0

Эффективное ОО-проектирование и структурное качество приложений Алексей Петров


Слайд 1

О чем пойдет речь? 1 2 3 4 Что такое «структурное качество» приложений? Как соотносятся шаблоны ОО-проектирования и показатели качества? Что такое «анти-шаблоны»? Какую помощь в обеспечении структурного качества могут оказать современные языки? Какие мероприятия могут помочь в обеспечении структурного качества? Реально ли повысить структурное качество уже написанных приложений?


Слайд 2

Неформальное введение 1 2 3 4 Качество — это… … «степень соответствия присущих характеристик <…> изделия или продукта потребностям, ожиданиям» (ГОСТ Р ИСО 9000). Различают качество программного обеспечения (ПО) и исходного кода. Основная задача … планировать и осуществлять мероприятия по анализу и повышению структурного качества исходного программного кода как артефакта в процессах разработки ПО Актуальность Итеративные методы разработки; распространение методов обеспечения и контроля качества на все этапы разработки ПО; распространение методов ОО-анализа, проектирования и разработки; применение UML и CASE-средств. Первые результаты Повышение качества управления рисками и затратами на всех этапах жизненного цикла ПО


Слайд 3

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


Слайд 4

Вопрос #1 Что такое «качественное ПО»? 1 2 Что такое «качественное ПО»? Ответьте, используя не более шести слов. Какие характеристики ПО, на ваш взгляд, можно назвать структурными? Ответьте, используя не более шести слов. 20 стр.


Слайд 5

Модель качества ISO / IEC 9126 ISO / IEC 9126 ISO 25000:2005 SQuaRE — Software product Quality Requirements and Evaluation


Слайд 6

Метрики качества в модели ISO / IEC 9126 ISO / IEC 9126 SQuaRE — Software product Quality Requirements and Evaluation ISO 9126-2, ISO 9126-3 Метрики качества В трактовке ISO 9126, качество ПО можно повысить, не внося в него изменений


Слайд 7

Ландшафт методов оценки качества ПО 1 2 3 Необходим «запуск» объекта исследования? По анализируемым артефактам По способу изучения рефакторинг


Слайд 8

Вопрос #2 Ограничения статического анализа Возможно ли путем статического анализа установить степень реализации следующих атрибутов качества ПО? Ответьте «да» или «нет» Защищенность ________________________ Понятность ________________________ Правильность, точность ________________________ Привлекательность ________________________ Работоспособность ________________________ Удобство анализа ________________________ Удобство обучения ________________________ 20 стр.


Слайд 9

Статический анализ и структурные показатели качества 1 2 3 Статический анализ: Нефункциональные требования: Оценка качества: удобство чтения низкая сложность корректность обработки исключений отсутствие предупреждений при компиляции легкость отладки, тестирования, исправления ошибок, поддержки и внесения изменений полнота краткость понятность надежность структурированность удобство сопровождения


Слайд 10

Метрики в артефактах 1 2 3 4 Архитектура Соблюдение стандартов разработки архитектуры; реализация шаблонов проектирования разного уровня; показатели связности и повторного использования компонентов Транзакции и алгоритмы Сложность транзакций и алгоритмов; сложность приемов программирования и отсутствие «грязных» техник Исходный код Соблюдение правил оформления кода; обработка ошибок и исключений; соответствие выбранной парадигме Техническая документация Удобство чтения и структурированность; объем документации


Слайд 11

Борьба со сложностью: раунд 1 1 2 3 4 Сложность — это… …атрибут качества, опосредованно оцениваемый через количество, размер и связность единиц трансляции, соблюдение правил и соглашений о проектировании, моделировании, кодировании продукта Снижению сложности способствуют… …предварительное проектирование архитектуры в соответствии с заданными критериями качества с учетом ее реализуемости на выбранном языке «Несложный» код: «Несложный» код обеспечивает… …снижение совокупной стоимости владения ПО 20 стр.


Слайд 12

Борьба со сложностью: раунд 2 1 2 3 4 Самодокументируемость кода Обеспечивает понятность кода без обращения к документации; способствует соответствию исходного кода «внутренней программной документации» Композиция объектов ? компонентная разработка Не порождает сильной связи суперклассов с подклассами; не вызывает проблемы «хрупких» базовых классов (fragile base class) Контрактное программирование Принцип «корректность по построению» Подразумевает применение методов проектирования, автоматически гарантирующих корректность получаемого продукта


Слайд 13

Вопрос #3 «Контракты» в коде и качество ПО 1 2 Что вы знаете о контрактном программировании? Предложите свое определение контрактного программирования, содержащее не более пяти слов. Какие структурные показатели качества улучшает применение «контрактов» в исходном коде? Ответьте, используя не более четырех слов. 20 стр.


Слайд 14

Знакомьтесь: Практические примеры 1 2 3 Стандарты и стили кода Открытые: Google C++ Style Guide, Code Conventions for the Java Programming Language; частные: корпоративные, командные и т.д. Шаблоны проектирования Фундаментальные (базовые); GoF, Gang of Four (Э. Гамма и др.); GRASP (К. Ларман); PoEAA (М. Фаулер) Автоматическая генерация, рефакторинг, комментирование и документирование кода CASE- и ALM-средства (в составе Microsoft Visual Studio, Eclipse IDE, IntelliJ IDEA и т.д.); Doxygen, javadoc и т.д.


Слайд 15

Фундаментальные шаблоны ОО-проектирования. Шаблоны GoF и GRASP 1 2 3 Цель ОО-проектирования Разработка архитектуры согласно выбранным критериям качества и с учетом ее реализуемости на выбранном языке Типичные компромиссы Соответствие дизайна задаче ??общность дизайна; доступность элементов системы ??безопасность; удобство вызова ?? возможность тонкой настройки Шаблоны (паттерны) проектирования —это… …типовые архитектурные решения задач, в том числе: фундаментальные шаблоны: наследование, делегирование и др.; шаблоны «банды четырех» (GoF): стратегия, адаптер и др.; шаблоны GRASP, PoEAA и др.


Слайд 16

Пример #1: шаблоны ОО-проектирования (UML)


Слайд 17

Пример #2: шаблоны ОО-проектирования (Java) public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() { // … } public static Singleton getInstance() { return instance; } }


Слайд 18

Вопрос #4 Проблемы архитектуры и качество ПО 20 стр. Какие показатели качества ПО страдают от наличия следующих проблем в архитектуре системы? Ответьте полно, насколько это возможно. Время на ответ — 3 минуты. Наличие «божественных» классов или объектов _______________________________________________ Сильная связанность классов или объектов _______________________________________________ Невозможность замены способа выполнения операции (запроса) _______________________________________________


Слайд 19

Как соотносятся шаблоны проектирования и качество приложений? (1 / 3) Каждый шаблон (справа) призван решать проблемы в архитектуре системы, последовательно устраняя важнейшие причины перепроектирования (слева) 20 стр.


Слайд 20

Как соотносятся шаблоны проектирования и качество приложений? (2 / 3) 20 стр.


Слайд 21

Как соотносятся шаблоны проектирования и качество приложений? (3 / 3) 20 стр.


Слайд 22

Что такое «анти-шаблоны»…? Загадочный код (Cryptic code) умышленное или неумышленное несоблюдение принципа самодокументируемости исходного кода Божественный объект (God object) монолитный артефакт большого размера в исходном коде Жесткий код (Hard code) имена, адреса и пр. числовые и символьные литералы, наличие которых затрудняет (делает невозможным) конфигурирование системы Магические числа (Magic numbers) константы с трудно постижимой семантикой ? ? ? ?


Слайд 23

… И что такое «грязные техники»? «Мертвый» или пустой код кодовые фрагменты, которые не используются в текущей сборке (версии) приложения, устарели или сделаны «про запас» Архитектурно необоснованные заглушки методы или функции, не выполняющие роль пустых неабстрактных методов, шаблонных методов (GoF) или операций-«зацепок» (hook operations) Код с непредсказуемым поведением обращение к неинициализированным переменным, «трюки» в управлении памятью, неконтролируемое переполнение буферов и т.д. ? ? ?


Слайд 24

Вопрос #5 Языки ООП и качество исходного кода 20 стр. 1 2 Какие «внеязыковые» возможности современных сред разработки могут помочь в обеспечении структурного качества исходного кода? Какие возможности языков ОО-программирования вносят свой вклад в обеспечение структурного качества кода? Ответьте полно, насколько это возможно. Время на ответ — 2 минуты.


Слайд 25

Какую помощь могут оказать современные языки программирования? (1 / 2) 20 стр.


Слайд 26

Какую помощь могут оказать современные языки программирования? (2 / 2) 20 стр.


Слайд 27

Элементы рефлексии в исходном коде 1 2 3 4 Предотвращают… …некорректное использование библиотек, ошибки при выборе (типов) фактических параметров, непреднамеренные ошибки в сигнатурах методов (архитектуре классов) и пр. Выделяют и принуждают… … к отказу от использования устаревающих элементов архитектуры Упрощают… … работу с атомарными характеристиками типов и позволяют предельно оптимизировать специализированные версии универсальных функций и методов Сопровождают… … намеренно сохраненные в итоговой сборке кода предупреждения при компиляции


Слайд 28

Алгоритмы и контейнеры в составе стандартных библиотек 1 Позволяют… работать с эффективным готовым исходным кодом; ускорить процессы разработки; снизить издержки на сопровождение продукта 2 Предоставляют… строгие гарантии вычислительной сложности операций (напр., поиск элемента списка требует линейного времени) широкие возможности повторного использования кода; расширяемые, удобные, взаимозаменяемые программные модули с унифицированными интерфейсами 3 Обеспечивают… вариативность решения задачи с учетом предпочтений разработчика; структурную несовместимость контейнеров и алгоритмов, неэффективных при совместной работе


Слайд 29

Пример #3: стандартные Алгоритмы сортировки (Std. template Library, C++) 1 std::sort (вариант quicksort) нестабильная сортировка на месте; среднее время — ?? ?? log ?? ; наибольшее время — ?? ?? ?? 2 std::partial_sort (вариант heapsort) нестабильная сортировка на месте; допускает получение отсортированного поддиапазона длины ??<??; наибольшее время — ?? ?? log ?? или ?? ?? log ?? 3 std::stable_sort (вариант mergesort) стабильная сортировка на месте; адаптируется к ограничениям памяти (оптимальный объем памяти — под ?? ?? элементов); наибольшее время — от ?? ?? log ?? до ?? ?? log ?? ??


Слайд 30

Какие организационные мероприятия могут помочь в обеспечении качества? Выбор и внедрение модели качества ПО Выбор модели и атрибутов качества, определение метрик качества и их сравнительной значимости («весов»); принятие модели качества в «обязывающей» форме; утверждение и внедрение регламента регулярной оценки качества Программа повышения квалификации (Принятая) модель и атрибуты структурного качества ПО; расширенные возможности языков моделирования (UML), запросов к БД (SQL) и языков программирования; поддержка качественного проектирования и разработки CASE-средствами, языками и инструментами Соглашения о проектировании, моделировании, кодировании Активное применение языков моделирования и CASE-технологий; автоматическая генерация исходного кода и технической документации по нему 1 2 3 4 Аудит наличной архитектуры и кодовой базы Разработка и реализация плана рефакторинга архитектуры системы и ее исходного программного кода


Слайд 31

Реально ли повысить структурное качество уже написанных приложений? Да!


Слайд 32

Спасибо! Вопросы? Алексей Петров education@luxoft.com


×

HTML:





Ссылка: