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

Содержание

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

Слайд 1ЭФФЕКТИВНОЕ ОО-ПРОЕКТИРОВАНИЕ И СТРУКТУРНОЕ КАЧЕСТВО ПРИЛОЖЕНИЙ
Алексей ПЕТРОВ


Слайд 2О ЧЕМ ПОЙДЕТ РЕЧЬ?
1
2
3
4
Что такое «структурное качество» приложений?
Как соотносятся шаблоны ОО-проектирования

и показатели качества?
Что такое «анти-шаблоны»?

Какую помощь в обеспечении структурного качества могут оказать современные языки?

Какие мероприятия могут помочь в обеспечении структурного качества?
Реально ли повысить структурное качество уже написанных приложений?


Слайд 3НЕФОРМАЛЬНОЕ ВВЕДЕНИЕ
1
2
3
4
Качество — это…
… «степень соответствия присущих характеристик изделия или

продукта потребностям, ожиданиям» (ГОСТ Р ИСО 9000). Различают качество программного обеспечения (ПО) и исходного кода.

Основная задача
… планировать и осуществлять мероприятия по анализу и повышению структурного качества исходного программного кода как артефакта в процессах разработки ПО

Актуальность
Итеративные методы разработки; распространение методов обеспечения и контроля качества на все этапы разработки ПО; распространение методов ОО-анализа, проектирования и разработки; применение UML и CASE-средств.

Первые результаты
Повышение качества управления рисками и затратами на всех этапах жизненного цикла ПО


Слайд 4МОДЕЛИ КАЧЕСТВА ПО
Модели качества ПО — это упорядоченные системы атрибутов, значимых

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


атрибуты

20 стр.


Слайд 5ВОПРОС #1
Что такое «качественное ПО»?
1
2
Что такое «качественное ПО»?
Ответьте, используя не более

шести слов.

Какие характеристики ПО, на ваш взгляд, можно назвать структурными?
Ответьте, используя не более шести слов.

20 стр.


Слайд 6МОДЕЛЬ КАЧЕСТВА ISO / IEC 9126

ISO / IEC 9126

ISO 25000:2005
SQuaRE —

Software product Quality Requirements and Evaluation

Слайд 7МЕТРИКИ КАЧЕСТВА В МОДЕЛИ ISO / IEC 9126

ISO / IEC 9126
SQuaRE

— Software product Quality Requirements and Evaluation

ISO 9126-2, ISO 9126-3

Метрики качества

В трактовке ISO 9126, качество ПО можно повысить, не внося в него изменений



Слайд 8ЛАНДШАФТ МЕТОДОВ ОЦЕНКИ КАЧЕСТВА ПО
1
2
3
Необходим «запуск» объекта исследования?
По анализируемым артефактам
По способу

изучения






рефакторинг


Слайд 9ВОПРОС #2
Ограничения статического анализа
Возможно ли путем статического анализа установить степень реализации

следующих атрибутов качества ПО? Ответьте «да» или «нет»
Защищенность ________________________
Понятность ________________________
Правильность, точность ________________________
Привлекательность ________________________
Работоспособность ________________________
Удобство анализа ________________________
Удобство обучения ________________________

20 стр.


Слайд 10СТАТИЧЕСКИЙ АНАЛИЗ И СТРУКТУРНЫЕ ПОКАЗАТЕЛИ КАЧЕСТВА
1
2
3
Статический анализ:
Нефункциональные требования:
Оценка качества:

удобство чтения низкая

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


полнота краткость
понятность надежность
структурированность
удобство сопровождения



Слайд 11МЕТРИКИ В АРТЕФАКТАХ
1
2
3
4
Архитектура
Соблюдение стандартов разработки архитектуры;
реализация шаблонов проектирования разного уровня;
показатели связности

и повторного использования компонентов

Транзакции и алгоритмы
Сложность транзакций и алгоритмов;
сложность приемов программирования и отсутствие «грязных» техник

Исходный код
Соблюдение правил оформления кода;
обработка ошибок и исключений;
соответствие выбранной парадигме

Техническая документация
Удобство чтения и структурированность;
объем документации


Слайд 12БОРЬБА СО СЛОЖНОСТЬЮ: РАУНД 1
1
2
3
4
Сложность — это…
…атрибут качества, опосредованно оцениваемый через

количество, размер и связность единиц трансляции, соблюдение правил и соглашений о проектировании, моделировании, кодировании продукта

Снижению сложности способствуют…
…предварительное проектирование архитектуры в соответствии с заданными критериями качества с учетом ее реализуемости на выбранном языке

«Несложный» код:

«Несложный» код обеспечивает…
…снижение совокупной стоимости владения ПО


20 стр.


Слайд 13БОРЬБА СО СЛОЖНОСТЬЮ: РАУНД 2
1
2
3
4
Самодокументируемость кода
Обеспечивает понятность кода без обращения к

документации;
способствует соответствию исходного кода «внутренней программной документации»

Композиция объектов → компонентная разработка
Не порождает сильной связи суперклассов с подклассами;
не вызывает проблемы «хрупких» базовых классов (fragile base class)

Контрактное программирование

Принцип «корректность по построению»
Подразумевает применение методов проектирования, автоматически гарантирующих корректность получаемого продукта


Слайд 14ВОПРОС #3
«Контракты» в коде и качество ПО
1
2
Что вы знаете о контрактном

программировании?
Предложите свое определение контрактного программирования, содержащее не более пяти слов.

Какие структурные показатели качества улучшает применение «контрактов» в исходном коде?
Ответьте, используя не более четырех слов.

20 стр.


Слайд 15ЗНАКОМЬТЕСЬ: ПРАКТИЧЕСКИЕ ПРИМЕРЫ
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 и т.д.


Слайд 16ФУНДАМЕНТАЛЬНЫЕ ШАБЛОНЫ ОО-ПРОЕКТИРОВАНИЯ. ШАБЛОНЫ GOF И GRASP
1
2
3
Цель ОО-проектирования
Разработка архитектуры согласно выбранным

критериям качества и с учетом ее реализуемости на выбранном языке

Типичные компромиссы
Соответствие дизайна задаче ←→общность дизайна;
доступность элементов системы ←→безопасность;
удобство вызова ←→ возможность тонкой настройки

Шаблоны (паттерны) проектирования —это…
…типовые архитектурные решения задач, в том числе:
фундаментальные шаблоны:
наследование, делегирование и др.;
шаблоны «банды четырех» (GoF):
стратегия, адаптер и др.;
шаблоны GRASP, PoEAA и др.


Слайд 17ПРИМЕР #1: ШАБЛОНЫ ОО-ПРОЕКТИРОВАНИЯ (UML)


Слайд 18ПРИМЕР #2: ШАБЛОНЫ ОО-ПРОЕКТИРОВАНИЯ (JAVA)

public class Singleton {
private static final

Singleton instance =
new Singleton();

private Singleton() {
// …
}

public static Singleton getInstance() {
return instance;
}
}

Слайд 19ВОПРОС #4
Проблемы архитектуры и качество ПО
20 стр.
Какие показатели качества ПО страдают от

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

Слайд 20КАК СООТНОСЯТСЯ ШАБЛОНЫ ПРОЕКТИРОВАНИЯ И КАЧЕСТВО ПРИЛОЖЕНИЙ? (1 / 3)
Каждый шаблон

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

20 стр.


Слайд 21КАК СООТНОСЯТСЯ ШАБЛОНЫ ПРОЕКТИРОВАНИЯ И КАЧЕСТВО ПРИЛОЖЕНИЙ? (2 / 3)
20 стр.


Слайд 22КАК СООТНОСЯТСЯ ШАБЛОНЫ ПРОЕКТИРОВАНИЯ И КАЧЕСТВО ПРИЛОЖЕНИЙ? (3 / 3)
20 стр.


Слайд 23ЧТО ТАКОЕ «АНТИ-ШАБЛОНЫ»…?
Загадочный код (Cryptic code)
умышленное или неумышленное несоблюдение принципа

самодокументируемости исходного кода

Божественный объект (God object)
монолитный артефакт большого размера в исходном коде

Жесткий код (Hard code)
имена, адреса и пр. числовые и символьные литералы, наличие которых затрудняет (делает невозможным) конфигурирование системы

Магические числа (Magic numbers)
константы с трудно постижимой семантикой










Слайд 24… И ЧТО ТАКОЕ «ГРЯЗНЫЕ ТЕХНИКИ»?
«Мертвый» или пустой код
кодовые фрагменты, которые

не используются в текущей сборке (версии) приложения, устарели или сделаны «про запас»

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

Код с непредсказуемым поведением
обращение к неинициализированным переменным, «трюки» в управлении памятью, неконтролируемое переполнение буферов и т.д.








Слайд 25ВОПРОС #5
Языки ООП и качество исходного кода
20 стр.
1
2
Какие «внеязыковые» возможности современных сред

разработки могут помочь в обеспечении структурного качества исходного кода?

Какие возможности языков ОО-программирования вносят свой вклад в обеспечение структурного качества кода?

Ответьте полно, насколько это возможно. Время на ответ — 2 минуты.


Слайд 26КАКУЮ ПОМОЩЬ МОГУТ ОКАЗАТЬ СОВРЕМЕННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ? (1 / 2)
20 стр.


Слайд 27КАКУЮ ПОМОЩЬ МОГУТ ОКАЗАТЬ СОВРЕМЕННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ? (2 / 2)
20 стр.


Слайд 28ЭЛЕМЕНТЫ РЕФЛЕКСИИ В ИСХОДНОМ КОДЕ
1
2
3
4
Предотвращают…
…некорректное использование библиотек, ошибки при выборе (типов)

фактических параметров, непреднамеренные ошибки в сигнатурах методов (архитектуре классов) и пр.

Выделяют и принуждают…
… к отказу от использования устаревающих элементов архитектуры

Упрощают…
… работу с атомарными характеристиками типов и позволяют предельно оптимизировать специализированные версии универсальных функций и методов

Сопровождают…
… намеренно сохраненные в итоговой сборке кода предупреждения при компиляции


Слайд 29АЛГОРИТМЫ И КОНТЕЙНЕРЫ В СОСТАВЕ СТАНДАРТНЫХ БИБЛИОТЕК
1
Позволяют…
работать с эффективным готовым исходным

кодом;
ускорить процессы разработки;
снизить издержки на сопровождение продукта

2

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

3

Обеспечивают…
вариативность решения задачи с учетом предпочтений разработчика;
структурную несовместимость контейнеров и алгоритмов, неэффективных при совместной работе


Слайд 30ПРИМЕР #3: СТАНДАРТНЫЕ АЛГОРИТМЫ СОРТИРОВКИ (STD. TEMPLATE LIBRARY, C++)
1
 
2
 
3
 






Слайд 31КАКИЕ ОРГАНИЗАЦИОННЫЕ МЕРОПРИЯТИЯ МОГУТ ПОМОЧЬ В ОБЕСПЕЧЕНИИ КАЧЕСТВА?
Выбор и внедрение модели

качества ПО
Выбор модели и атрибутов качества, определение метрик качества и их сравнительной значимости («весов»);
принятие модели качества в «обязывающей» форме;
утверждение и внедрение регламента регулярной оценки качества

Программа повышения квалификации
(Принятая) модель и атрибуты структурного качества ПО;
расширенные возможности языков моделирования (UML), запросов к БД (SQL) и языков программирования;
поддержка качественного проектирования и разработки CASE-средствами, языками и инструментами

Соглашения о проектировании, моделировании, кодировании
Активное применение языков моделирования и CASE-технологий; автоматическая генерация исходного кода и технической документации по нему

1

2

3

4

Аудит наличной архитектуры и кодовой базы
Разработка и реализация плана рефакторинга архитектуры системы и ее исходного программного кода


Слайд 32РЕАЛЬНО ЛИ ПОВЫСИТЬ СТРУКТУРНОЕ КАЧЕСТВО УЖЕ НАПИСАННЫХ ПРИЛОЖЕНИЙ?
Да!


Слайд 33
СПАСИБО! ВОПРОСЫ?

Алексей ПЕТРОВ
education@luxoft.com


Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика