slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Эффективное ОО-проектирование и структурное качество приложени PowerPoint Presentation
Download Presentation
Эффективное ОО-проектирование и структурное качество приложени

Loading in 2 Seconds...

play fullscreen
1 / 33

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


  • 135 Views
  • Uploaded on

Алексей Петров. Эффективное ОО-проектирование и структурное качество приложений. О чем пойдет речь?. 1. Что такое «структурное качество» приложений?. 2. Как соотносятся шаблоны ОО-проектирования и показатели качества? Что такое «анти-шаблоны» ?. 3.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Эффективное ОО-проектирование и структурное качество приложени' - tanek-vega


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1
Алексей ПетровЭффективноеОО-проектированиеи структурное качество приложений
slide2

О чем пойдет речь?

1

Что такое «структурное качество» приложений?

2

Как соотносятся шаблоны ОО-проектирования и показатели качества?

Что такое «анти-шаблоны»?

3

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

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

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

4

slide3

Неформальное введение

Качество — это…

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

1

Основная задача

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

2

Актуальность

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

3

4

Первые результаты

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

slide4

Модели качества ПО

20стр.

Критерии

Дж. МакКол

Б. Боэм

атрибуты

модели

Метрики

ISO 9126

точка зрения разработчика

Факторы

Модели качества ПО— это упорядоченные системы атрибутов, значимых для заинтересованных сторон проектаразработки ПО

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

точка зрения пользователя

slide5

Вопрос #1

20стр.

Что такое «качественное ПО»?

1

  • Что такое «качественное ПО»?
  • Ответьте, используя не более шести слов.

2

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

Модель качества ISO / IEC 9126

6целей

ISO 25000:2005

SQuaRE — Software product Quality Requirements and Evaluation

ожиданиеот ПО

5 структурных характеристик ПО

❶Надежность

1991

2001

прочность, устойчивость; степень риска, сопряженного с использованием системы

❷Эффективность

производительность операций; управление ресурсами; правила кодирования

21 атрибут

ISO / IEC 9126

правила кодирования; обработка ошибок и исключений

❸Безопасность

❹Удобство сопровождения

❺Размер кода

близость к достижению цели

документация в коде; удобство чтения кода; отсутствие «грязных» техник; переносимость кода

оценка трудозатрат в ретроспективе и перспективе

slide7

Метрики качества в модели ISO / IEC 9126

6целей

ISO 9126-2, ISO 9126-3

SQuaRE — Software product Quality Requirements and Evaluation

ожиданиеот ПО

Полнота и корректность реализации функций

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

Отношение числа найденных дефектов к прогнозному

1991

2001

Отношение числа проведенных тестов к общему их числу

21 атрибут

ISO / IEC 9126

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

близость к достижению цели

slide8

Ландшафт методов оценки качества ПО

статические

1

Необходим «запуск» объекта исследования?

динамические

документация

объектный код

2

исходный программный код

По анализируемым артефактам

формальные модели

3

инструментальный анализ

По способу изучения

целенаправленнаяинспекция (desk-checking)

рефакторинг

slide9

Вопрос #2

20стр.

Ограничения статического анализа

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

Статический анализ и структурные показатели качества

удобство чтениянизкая сложностькорректность обработки исключений

отсутствие предупреждений при компиляции

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

1

Статический анализ:

полнотакраткость

понятность надежность

структурированность

удобство сопровождения

2

Нефункциональные требования:

компонентная структураплатформа архитектураисходный код схема БД

3

Оценка качества:

slide11

Метрики в артефактах

Архитектура

Соблюдение стандартов разработки архитектуры;

реализация шаблонов проектирования разного уровня;

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

1

Транзакции и алгоритмы

Сложность транзакций и алгоритмов;

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

2

Исходный код

Соблюдение правил оформления кода;

обработка ошибок и исключений;

соответствие выбранной парадигме

3

4

Техническая документация

Удобство чтения и структурированность;

объем документации

slide12

Борьба со сложностью: раунд 1

20стр.

Сложность — это…

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

1

Снижению сложности способствуют…

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

2

3

использование шаблонов

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

модульность

лаконичность

соблюдение правилоформления кода

слабая связанность

4

систематическая обработка ошибок

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

…снижение совокупной стоимости владения ПО

slide13

Борьба со сложностью: раунд 2

Самодокументируемость кода

Обеспечивает понятность кода без обращения к документации;

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

1

Композиция объектов  компонентная разработка

Не порождает сильной связи суперклассов с подклассами;

не вызывает проблемы «хрупких» базовых классов (fragile base class)

2

3

Принцип «корректность по построению»

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

4

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

slide14

Вопрос #3

20стр.

«Контракты» в коде и качество ПО

1

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

2

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

Знакомьтесь: Практические примеры

Стандарты и стили кода

Открытые: Google C++ Style Guide,Code Conventions for the Java ProgrammingLanguage;

частные: корпоративные, командные и т.д.

1

Шаблоны проектирования

Фундаментальные (базовые);

GoF, Gang of Four (Э. Гамма и др.);

GRASP (К. Ларман);

PoEAA (М. Фаулер)

2

3

Автоматическая генерация, рефакторинг, комментирование и документирование кода

CASE- и ALM-средства (в составе Microsoft Visual Studio,Eclipse IDE, IntelliJ IDEA и т.д.);

Doxygen, javadoc и т.д.

slide16

Фундаментальные шаблоны ОО-проектирования. Шаблоны GoF и GRASP

1

Цель ОО-проектирования

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

Типичные компромиссы

Соответствие дизайна задаче общность дизайна;

доступность элементов системыбезопасность;

удобство вызова  возможность тонкой настройки

2

3

Шаблоны (паттерны) проектирования —это…

…типовые архитектурные решения задач, в том числе:

фундаментальные шаблоны:

наследование, делегирование и др.;

шаблоны «банды четырех» (GoF):

стратегия, адаптер и др.;

шаблоны GRASP, PoEAAи др.

Единственноправильных решенийне существует!

slide17

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

Делеги-рование

Адаптер объекта

slide18

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

  • publicclass Singleton {
  • privatestaticfinal Singleton instance =
  • new Singleton();
  • private Singleton() {
  • // …
  • }
  • publicstatic Singleton getInstance() {
  • return instance;
  • }
  • }
slide19

Вопрос #4

20стр.

Проблемы архитектуры и качество ПО

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

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

20стр.

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

slide21

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

20стр.

slide22

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

20стр.

slide23

Что такое «анти-шаблоны»…?

Загадочный код (Cryptic code)

умышленное или неумышленное несоблюдение принципа самодокументируемости исходного кода

Божественный объект (God object)

монолитный артефакт большого размера в исходном коде

Магические числа (Magic numbers)

константы с трудно постижимой семантикой

Жесткий код (Hard code)

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

slide24

… И что такое «грязные техники»?

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

Архитектурно необоснованные заглушки

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

Код с непредсказуемым поведением

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

Критическиеошибки!!!

slide25

Вопрос #5

20стр.

Языки ООП и качество исходного кода

1

Какие «внеязыковые» возможности современных сред разработки могут помочь в обеспечении структурного качества исходного кода?

2

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

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

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

20стр.

slide27

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

20стр.

slide28

Элементы рефлексии в исходном коде

  • Предотвращают…
    • …некорректное использование библиотек, ошибки при выборе (типов) фактических параметров, непреднамеренные ошибки в сигнатурах методов (архитектуре классов) и пр.

1

2

Выделяют и принуждают…

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

3

Сопровождают…

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

4

Упрощают…

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

slide29

Алгоритмы и контейнеры в составе стандартных библиотек

  • Позволяют…
    • работать с эффективным готовым исходным кодом;
    • ускорить процессы разработки;
    • снизить издержки на сопровождение продукта

1

Предоставляют…

строгие гарантии вычислительной сложности операций (напр., поиск элемента списка требует линейного времени)

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

расширяемые, удобные, взаимозаменяемые программные модули с унифицированными интерфейсами

2

Обеспечивают…

вариативность решения задачи с учетом предпочтений разработчика;

структурную несовместимость контейнеров и алгоритмов, неэффективных при совместной работе

3

slide30

Пример #3: стандартные Алгоритмы сортировки (Std. template Library, C++)

  • std::sort (вариант quicksort)
    • нестабильная сортировка на месте;
    • среднее время —
    • наибольшее время —

1

std::partial_sort (вариант heapsort)

нестабильная сортировка на месте;

допускает получение отсортированного поддиапазонадлины ;

наибольшее время — или

2

std::stable_sort (вариант mergesort)

стабильная сортировка на месте;

адаптируется к ограничениям памяти (оптимальный объем памяти — под элементов);

наибольшее время — от до

3

slide31

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

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

1

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

2

3

Соглашения о проектировании, моделировании, кодировании

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

4

Аудит наличной архитектуры и кодовой базы

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

slide32

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

❶Провести комплексорганизационных мероприятий

Да!

❷Запустить систематический рефакторинг архитектурыи исходного кода

❸Провести дополнительноетестирование приложения

❹На регулярной основе пересматриватьи ужесточать требования действующеймодели качества приложения

❺Держаться курса, чего бы это ни стоило!