SlideShare une entreprise Scribd logo
1  sur  33
ЭФФЕКТИВНОЕ
ОО-ПРОЕКТИРОВАНИЕ
И СТРУКТУРНОЕ КАЧЕСТВО
ПРИЛОЖЕНИЙ
Алексей ПЕТРОВ
О ЧЕМ ПОЙДЕТ РЕЧЬ?
1
2
3
4
Что такое «структурное качество» приложений?
Как соотносятся шаблоны ОО-проектирования и
показатели качества?
Что такое «анти-шаблоны»?
Какую помощь в обеспечении структурного качества
могут оказать современные языки?
Какие мероприятия могут помочь в обеспечении
структурного качества?
Реально ли повысить структурное качество уже написанных
приложений?
НЕФОРМАЛЬНОЕ ВВЕДЕНИЕ
1
2
3
4
Качество — это…
… «степень соответствия присущих характеристик <…>
изделия или продукта потребностям, ожиданиям»
(ГОСТ Р ИСО 9000). Различают качество программного
обеспечения (ПО) и исходного кода.
Основная задача
… планировать и осуществлять мероприятия по анализу и
повышению структурного качества исходного программного
кода как артефакта в процессах разработки ПО
Актуальность
Итеративные методы разработки; распространение методов
обеспечения и контроля качества на все этапы разработки
ПО; распространение методов ОО-анализа, проектирования
и разработки; применение UML и CASE-средств.
Первые результаты
Повышение качества управления рисками и затратами на
всех этапах жизненного цикла ПО
МОДЕЛИ КАЧЕСТВА ПО
Модели качества ПО — это упорядоченные
системы атрибутов, значимых для
заинтересованных сторон проекта
разработки ПО
Общий принцип — числовое выражение фактора:
линейная комбинация взвешенных влияющих
метрик
4,8
Критерии
точка зрения
разработчика
точка зрения
пользователя
Факторы
Метрики
атрибуты
модели
Дж.
МакКол
Б. Боэм
ISO
9126
20
стр.
ВОПРОС #1
Что такое «качественное ПО»?
1
2
Что такое «качественное ПО»?
– Ответьте, используя не более шести слов.
Какие характеристики ПО, на ваш взгляд, можно
назвать структурными?
– Ответьте, используя не более шести слов.
20
стр.
МОДЕЛЬ КАЧЕСТВА ISO / IEC 9126
1991
2001
6
целей
ожидание
от ПО
21
атрибут
близость к
достижению
цели
ISO / IEC 9126
ISO 25000:2005
SQuaRE — Software product
Quality Requirements and
Evaluation
5
структурных
характеристик
ПО
❶Надежность
прочность, устойчивость;
степень риска, сопряженного с
использованием системы
❷Эффективность
производительность операций;
управление ресурсами; правила
кодирования
❸Безопасность правила кодирования;
обработка ошибок и исключений
документация в коде; удобство чтения
кода; отсутствие «грязных» техник;
переносимость кода
❹Удобство сопровождения
оценка трудозатрат в
ретроспективе и перспективе
❺Размер кода
МЕТРИКИ КАЧЕСТВА В МОДЕЛИ ISO / IEC 9126
1991
2001
6
целей
ожидание
от ПО
21
атрибут
близость к
достижению
цели
ISO / IEC 9126
SQuaRE — Software product
Quality Requirements and
Evaluation
ISO 9126-2, ISO 9126-3
Метрики
качества
Полнота и корректность
реализации функций
Отношение числа найденных
дефектов к прогнозному
Отношение числа проведенных
тестов к общему их числу
…
В трактовке ISO 9126,
качество ПО можно повысить,
не внося в него изменений
ЛАНДШАФТ МЕТОДОВ ОЦЕНКИ КАЧЕСТВА ПО
1
2
3
Необходим «запуск» объекта
исследования?
По анализируемым
артефактам
По способу
изучения
статические
динамические
формальные модели
исходный программный код
объектный коддокументация
инструментальный анализ
целенаправленная
инспекция (desk-checking)
рефакторинг
ВОПРОС #2
Ограничения статического
анализа
Возможно ли путем статического анализа установить
степень реализации следующих атрибутов качества
ПО? Ответьте «да» или «нет»
– Защищенность ________________________
– Понятность ________________________
– Правильность, точность ________________________
– Привлекательность ________________________
– Работоспособность ________________________
– Удобство анализа ________________________
– Удобство обучения ________________________
20
стр.
СТАТИЧЕСКИЙ АНАЛИЗ И СТРУКТУРНЫЕ
ПОКАЗАТЕЛИ КАЧЕСТВА
1
2
3
Статический
анализ:
Нефункциональные
требования:
Оценка качества:
удобство чтения низкая сложность
корректность обработки исключений
отсутствие предупреждений при компиляции
легкость отладки, тестирования, исправления
ошибок, поддержки и внесения изменений
полнота краткость
понятность надежность
структурированность
удобство сопровождения
компонентная структура
платформа архитектура
исходный код схема БД
МЕТРИКИ В АРТЕФАКТАХ
1
2
3
4
Архитектура
Соблюдение стандартов разработки архитектуры;
реализация шаблонов проектирования разного уровня;
показатели связности и повторного использования
компонентов
Транзакции и алгоритмы
Сложность транзакций и алгоритмов;
сложность приемов программирования и отсутствие
«грязных» техник
Исходный код
Соблюдение правил оформления кода;
обработка ошибок и исключений;
соответствие выбранной парадигме
Техническая документация
Удобство чтения и структурированность;
объем документации
БОРЬБА СО СЛОЖНОСТЬЮ: РАУНД 1
1
2
3
4
Сложность — это…
…атрибут качества, опосредованно оцениваемый через
количество, размер и связность единиц
трансляции, соблюдение правил и соглашений о
проектировании, моделировании, кодировании продукта
Снижению сложности способствуют…
…предварительное проектирование архитектуры
в соответствии с заданными критериями качества
с учетом ее реализуемости на выбранном языке
«Несложный» код:
«Несложный» код обеспечивает…
…снижение совокупной стоимости владения ПО
лаконичность модульность
использование шаблонов
слабая связанность
соблюдение правил
оформления кода
систематическая обработка ошибок
20
стр.
БОРЬБА СО СЛОЖНОСТЬЮ: РАУНД 2
1
2
3
4
Самодокументируемость кода
Обеспечивает понятность кода без обращения к
документации;
способствует соответствию исходного кода «внутренней
программной документации»
Композиция объектов  компонентная разработка
Не порождает сильной связи суперклассов с подклассами;
не вызывает проблемы «хрупких» базовых классов (fragile
base class)
Контрактное программирование
Принцип «корректность по построению»
Подразумевает применение методов
проектирования, автоматически гарантирующих корректность
получаемого продукта
ВОПРОС #3
«Контракты» в коде и
качество ПО
1
2
Что вы знаете о контрактном программировании?
– Предложите свое определение контрактного
программирования, содержащее не более пяти слов.
Какие структурные показатели качества улучшает
применение «контрактов» в исходном коде?
– Ответьте, используя не более четырех слов.
20
стр.
ЗНАКОМЬТЕСЬ: ПРАКТИЧЕСКИЕ ПРИМЕРЫ
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 и т.д.
ФУНДАМЕНТАЛЬНЫЕ ШАБЛОНЫ ОО-
ПРОЕКТИРОВАНИЯ. ШАБЛОНЫ GOF И GRASP
1
2
3
Цель ОО-проектирования
Разработка архитектуры согласно выбранным критериям
качества и с учетом ее реализуемости на выбранном языке
Типичные компромиссы
Соответствие дизайна задаче общность дизайна;
доступность элементов системы безопасность;
удобство вызова  возможность тонкой настройки
Шаблоны (паттерны) проектирования —это…
…типовые архитектурные решения задач, в том числе:
фундаментальные шаблоны:
наследование, делегирование и др.;
шаблоны «банды четырех» (GoF):
стратегия, адаптер и др.;
шаблоны GRASP, PoEAA и др.
ПРИМЕР #1:
ШАБЛОНЫ ОО-ПРОЕКТИРОВАНИЯ (UML)
Делеги-
рование
Адаптер
объекта
ПРИМЕР #2:
ШАБЛОНЫ ОО-ПРОЕКТИРОВАНИЯ (JAVA)
public class Singleton {
private static final Singleton instance =
new Singleton();
private Singleton() {
// …
}
public static Singleton getInstance() {
return instance;
}
}
ВОПРОС #4
Проблемы архитектуры и
качество ПО
20
стр.
Какие показатели качества ПО страдают от наличия
следующих проблем в архитектуре системы? Ответьте
полно, насколько это возможно. Время на ответ —
3 минуты.
– Наличие «божественных» классов или объектов
_______________________________________________
– Сильная связанность классов или объектов
_______________________________________________
– Невозможность замены способа выполнения операции
(запроса)
_______________________________________________
КАК СООТНОСЯТСЯ ШАБЛОНЫ
ПРОЕКТИРОВАНИЯ И КАЧЕСТВО
ПРИЛОЖЕНИЙ? (1 / 3)
Проблема Пример шаблона
Чрезмерное количество используемых
классов, объектов или глобальных
переменных системы
Наследование, прототип,
одиночка, посредник,
приспособленец
«Хрупкие» базовые классы Композиция
«Божественные» объекты
Декоратор, состояние,
стратегия
Слабая инкапсуляция (локализация) имен
или зависимость от имен
Абстрактная фабрика,
прототип, фабричный метод,
фасад, шаблонный метод
Слабая инкапсуляция (локализация) кода
или структур данных
Итератор, мост, наблюдатель
(менеджер), состояние,
стратегия, строитель, фасад,
шаблонный метод
Каждый шаблон (справа) призван решать проблемы в
архитектуре системы, последовательно устраняя
важнейшие причины перепроектирования (слева)
20
стр.
Проблема Пример шаблона
Дублирование кода
Наследование, композиция,
мост, шаблонный метод
Невозможность замены способа
выполнения запроса, сложность сочетания
поведений или динамического
конфигурирования системы
Декоратор, делегирование
(композиция), наблюдатель,
посредник, прототип,
состояние, стратегия
Потребность в универсальном или
альтернативном способе доступа (системе
запросов), абстрактном типе данных (ADT)
Адаптер, интерфейс, итератор,
компоновщик, наблюдатель,
посетитель
Потребность в глобальной точке доступа Одиночка
Потребность в константном объекте Неизменяемый объект
Зависимость системы от программной или
аппаратной платформы
Абстрактная фабрика, мост
Зависимость клиента от алгоритмов,
представления или реализации объекта
Итератор, мост
КАК СООТНОСЯТСЯ ШАБЛОНЫ
ПРОЕКТИРОВАНИЯ И КАЧЕСТВО
ПРИЛОЖЕНИЙ? (2 / 3)
20
стр.
КАК СООТНОСЯТСЯ ШАБЛОНЫ
ПРОЕКТИРОВАНИЯ И КАЧЕСТВО
ПРИЛОЖЕНИЙ? (3 / 3)
Проблема Пример шаблона
Сильная связанность классов или объектов
Команда, мост, посредник,
фасад
Чрезмерное использование наследования Декоратор, композиция
Недостаточная скорость выполнения
инициализирующих операций
Заместитель, отложенная
инициализация
Необходимость широковещательных
коммуникаций
Наблюдатель
Недостаточная расширяемость,
переносимость и безопасность
Заместитель, команда, мост,
фасад
Сложность архитектуры и компрометация
уровней многоуровневой системы
Наблюдатель, фасад
20
стр.
ЧТО ТАКОЕ «АНТИ-ШАБЛОНЫ»…?
Загадочный код (Cryptic code)
умышленное или неумышленное несоблюдение принципа
самодокументируемости исходного кода
Божественный объект (God object)
монолитный артефакт большого размера в исходном коде
Жесткий код (Hard code)
имена, адреса и пр. числовые и символьные
литералы, наличие которых затрудняет (делает
невозможным) конфигурирование системы
Магические числа (Magic numbers)
константы с трудно постижимой семантикой




… И ЧТО ТАКОЕ «ГРЯЗНЫЕ ТЕХНИКИ»?
«Мертвый» или пустой код
кодовые фрагменты, которые не используются в текущей
сборке (версии) приложения, устарели или сделаны «про
запас»
Архитектурно необоснованные заглушки
методы или функции, не выполняющие роль пустых
неабстрактных методов, шаблонных методов (GoF) или
операций-«зацепок» (hook operations)
Код с непредсказуемым поведением
обращение к неинициализированным
переменным, «трюки» в управлении
памятью, неконтролируемое
переполнение буферов и т.д.



ВОПРОС #5
Языки ООП и качество
исходного кода
20
стр.
1
2
Какие «внеязыковые» возможности современных
сред разработки могут помочь в обеспечении
структурного качества исходного кода?
Какие возможности языков ОО-программирования
вносят свой вклад в обеспечение структурного
качества кода?
– Ответьте полно, насколько это возможно. Время на ответ —
2 минуты.
КАКУЮ ПОМОЩЬ МОГУТ ОКАЗАТЬ
СОВРЕМЕННЫЕ ЯЗЫКИ
ПРОГРАММИРОВАНИЯ? (1 / 2)
C++ Java
Исполнение управляемого кода в
защищенной программной среде

быстро,
небезопасно

медленно,
безопасно
«Родные» методы
(выполняют код вне защищенной среды,
имеют доступ ко всем системным
ресурсам)
—

быстро, небезоп.,
непереносимо
Строгая типизация  
Запрет автоматического приведения
(преобразования) типов

част., особ. в C++11

Средства динамической идентификации
типов времени выполнения (RTTI)

dynamic_cast,
typeid

instanceof
Отладочные утверждения (assertions)
времени компиляции (исполнения)
 
Автоматическая сборка мусора

эмулируется

20
стр.
КАКУЮ ПОМОЩЬ МОГУТ ОКАЗАТЬ
СОВРЕМЕННЫЕ ЯЗЫКИ
ПРОГРАММИРОВАНИЯ? (2 / 2)
C++ Java
Обобщенное программирование с
поддержкой безопасности типов данных

шаблоны

обобщения
Элементы рефлексии в исходном коде

характеристики
типов

аннотации
Расширенная поддержка ОО-парадигмы
(абстрактные классы, «листовые» классы /
методы, «удаленные» методы)

особ. в C++11

Обработка исключительных ситуаций.
Стандартные и пользовательские классы-
исключения
 
Спецификация типов исключений,
возбуждаемых методами классов

на усмотрение
разработчика

существуют
непроверяемые
Алгоритмы и структуры данных в составе
стандартных библиотек
 
20
стр.
ЭЛЕМЕНТЫ РЕФЛЕКСИИ В ИСХОДНОМ КОДЕ
1
2
3
4
Предотвращают…
…некорректное использование библиотек, ошибки при
выборе (типов) фактических параметров, непреднамеренные
ошибки в сигнатурах методов (архитектуре классов) и пр.
Выделяют и принуждают…
… к отказу от использования устаревающих элементов
архитектуры
Упрощают…
… работу с атомарными характеристиками типов и позволяют
предельно оптимизировать специализированные версии
универсальных функций и методов
Сопровождают…
… намеренно сохраненные в итоговой сборке кода
предупреждения при компиляции
АЛГОРИТМЫ И КОНТЕЙНЕРЫ В СОСТАВЕ
СТАНДАРТНЫХ БИБЛИОТЕК
1
Позволяют…
работать с эффективным готовым исходным кодом;
ускорить процессы разработки;
снизить издержки на сопровождение продукта
2
Предоставляют…
строгие гарантии вычислительной сложности операций
(напр., поиск элемента списка требует линейного времени)
широкие возможности повторного использования кода;
расширяемые, удобные, взаимозаменяемые программные
модули с унифицированными интерфейсами
3
Обеспечивают…
вариативность решения задачи с учетом предпочтений
разработчика;
структурную несовместимость контейнеров и алгоритмов,
неэффективных при совместной работе
ПРИМЕР #3: СТАНДАРТНЫЕ АЛГОРИТМЫ
СОРТИРОВКИ (STD. TEMPLATE LIBRARY, C++)
1
2
3
КАКИЕ ОРГАНИЗАЦИОННЫЕ МЕРОПРИЯТИЯ
МОГУТ ПОМОЧЬ В ОБЕСПЕЧЕНИИ КАЧЕСТВА?
Выбор и внедрение модели качества ПО
Выбор модели и атрибутов качества, определение метрик
качества и их сравнительной значимости («весов»);
принятие модели качества в «обязывающей» форме;
утверждение и внедрение регламента регулярной оценки
качества
Программа повышения квалификации
(Принятая) модель и атрибуты структурного качества ПО;
расширенные возможности языков моделирования (UML),
запросов к БД (SQL) и языков программирования;
поддержка качественного проектирования и разработки
CASE-средствами, языками и инструментами
Соглашения о
проектировании, моделировании, кодировании
Активное применение языков моделирования и CASE-
технологий; автоматическая генерация исходного кода и
технической документации по нему
1
2
3
4
Аудит наличной архитектуры и кодовой базы
Разработка и реализация плана рефакторинга архитектуры
системы и ее исходного программного кода
РЕАЛЬНО ЛИ ПОВЫСИТЬ СТРУКТУРНОЕ
КАЧЕСТВО УЖЕ НАПИСАННЫХ ПРИЛОЖЕНИЙ?
Да!
❶ Провести комплекс
организационных мероприятий
❷ Запустить систематический
рефакторинг архитектуры
и исходного кода
❸ Провести дополнительное
тестирование приложения
❹ На регулярной основе пересматривать
и ужесточать требования действующей
модели качества приложения
❺ Держаться курса, чего бы это ни стоило!
СПАСИБО! ВОПРОСЫ?
Алексей ПЕТРОВ
education@luxoft.com

Contenu connexe

Tendances

Контрольный список для проверки требований
Контрольный список для проверки требованийКонтрольный список для проверки требований
Контрольный список для проверки требованийIvan Shamaev
 
Requirement modelling in software creation process
Requirement modelling in software creation processRequirement modelling in software creation process
Requirement modelling in software creation processDima Dzuba
 
Путь тестировщика: Расту или деградирую?
Путь тестировщика: Расту или деградирую?Путь тестировщика: Расту или деградирую?
Путь тестировщика: Расту или деградирую?SQALab
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Andrii Gakhov
 
требования к кандидату
требования к кандидатутребования к кандидату
требования к кандидатуNatalia Zhelnova
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахMaxim Tsepkov
 
Объектно-ориентированное программирование. Лекции 11 и 12
Объектно-ориентированное программирование. Лекции 11 и 12Объектно-ориентированное программирование. Лекции 11 и 12
Объектно-ориентированное программирование. Лекции 11 и 12Dima Dzuba
 
Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Dima Dzuba
 
Управление требованиями
Управление требованиямиУправление требованиями
Управление требованиямиIvan Shamaev
 
Req Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требованийReq Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требованийAlexander Kalouguine
 
Как задавать требования к качеству ПО в цифрах
Как задавать требования к качеству ПО в цифрахКак задавать требования к качеству ПО в цифрах
Как задавать требования к качеству ПО в цифрахSQALab
 
Введение в Анализ ПО
Введение в Анализ ПОВведение в Анализ ПО
Введение в Анализ ПОAlexander Baikin
 
DUMP-2013 Управление разработкой - Метрики в проектах по разработке нового пр...
DUMP-2013 Управление разработкой - Метрики в проектах по разработке нового пр...DUMP-2013 Управление разработкой - Метрики в проектах по разработке нового пр...
DUMP-2013 Управление разработкой - Метрики в проектах по разработке нового пр...it-people
 
Построение процесса безопасной разработки - Стачка 2016
Построение процесса безопасной разработки - Стачка 2016Построение процесса безопасной разработки - Стачка 2016
Построение процесса безопасной разработки - Стачка 2016Valery Boronin
 
Коммуникация при различной структуре мышления - таксономия против фолксономии
Коммуникация при различной структуре мышления - таксономия против фолксономииКоммуникация при различной структуре мышления - таксономия против фолксономии
Коммуникация при различной структуре мышления - таксономия против фолксономииSQALab
 
PT Application Inspector SSDL Edition листовка
PT Application Inspector SSDL Edition листовкаPT Application Inspector SSDL Edition листовка
PT Application Inspector SSDL Edition листовкаValery Boronin
 
Технология разработки программного обеспечения
Технология разработки программного обеспеченияТехнология разработки программного обеспечения
Технология разработки программного обеспеченияRauan Ibraikhan
 

Tendances (20)

PMIufa 2012-03-01
PMIufa 2012-03-01PMIufa 2012-03-01
PMIufa 2012-03-01
 
Контрольный список для проверки требований
Контрольный список для проверки требованийКонтрольный список для проверки требований
Контрольный список для проверки требований
 
Requirement modelling in software creation process
Requirement modelling in software creation processRequirement modelling in software creation process
Requirement modelling in software creation process
 
Путь тестировщика: Расту или деградирую?
Путь тестировщика: Расту или деградирую?Путь тестировщика: Расту или деградирую?
Путь тестировщика: Расту или деградирую?
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1
 
требования к кандидату
требования к кандидатутребования к кандидату
требования к кандидату
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектах
 
Объектно-ориентированное программирование. Лекции 11 и 12
Объектно-ориентированное программирование. Лекции 11 и 12Объектно-ориентированное программирование. Лекции 11 и 12
Объектно-ориентированное программирование. Лекции 11 и 12
 
Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4
 
Управление требованиями
Управление требованиямиУправление требованиями
Управление требованиями
 
Req Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требованийReq Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требований
 
Как задавать требования к качеству ПО в цифрах
Как задавать требования к качеству ПО в цифрахКак задавать требования к качеству ПО в цифрах
Как задавать требования к качеству ПО в цифрах
 
Введение в Анализ ПО
Введение в Анализ ПОВведение в Анализ ПО
Введение в Анализ ПО
 
DUMP-2013 Управление разработкой - Метрики в проектах по разработке нового пр...
DUMP-2013 Управление разработкой - Метрики в проектах по разработке нового пр...DUMP-2013 Управление разработкой - Метрики в проектах по разработке нового пр...
DUMP-2013 Управление разработкой - Метрики в проектах по разработке нового пр...
 
Построение процесса безопасной разработки - Стачка 2016
Построение процесса безопасной разработки - Стачка 2016Построение процесса безопасной разработки - Стачка 2016
Построение процесса безопасной разработки - Стачка 2016
 
Коммуникация при различной структуре мышления - таксономия против фолксономии
Коммуникация при различной структуре мышления - таксономия против фолксономииКоммуникация при различной структуре мышления - таксономия против фолксономии
Коммуникация при различной структуре мышления - таксономия против фолксономии
 
PT Application Inspector SSDL Edition листовка
PT Application Inspector SSDL Edition листовкаPT Application Inspector SSDL Edition листовка
PT Application Inspector SSDL Edition листовка
 
SECON'2014 - Максим Цепков - DDD: от требований до кода
SECON'2014 - Максим Цепков - DDD: от требований до кодаSECON'2014 - Максим Цепков - DDD: от требований до кода
SECON'2014 - Максим Цепков - DDD: от требований до кода
 
Технология разработки программного обеспечения
Технология разработки программного обеспеченияТехнология разработки программного обеспечения
Технология разработки программного обеспечения
 
L4 requirements
L4 requirementsL4 requirements
L4 requirements
 

En vedette

Системная архитектура вместо требований
Системная архитектура вместо требованийСистемная архитектура вместо требований
Системная архитектура вместо требованийМихаил Заборов
 
Архитектура корпоративных систем
Архитектура корпоративных системАрхитектура корпоративных систем
Архитектура корпоративных системConstantin Kichinsky
 
Краткое описание Scrum
Краткое описание ScrumКраткое описание Scrum
Краткое описание ScrumIvan Evtukhovich
 
Jennifer Robbins: ARTIFACT Conference Keynote
Jennifer Robbins: ARTIFACT Conference KeynoteJennifer Robbins: ARTIFACT Conference Keynote
Jennifer Robbins: ARTIFACT Conference KeynoteJenRobbins
 
Паракатегории современной эстетики
Паракатегории современной эстетикиПаракатегории современной эстетики
Паракатегории современной эстетикиТаня Быстрова
 
Роль аналитика в негибких методологиях разработки
Роль аналитика в негибких методологиях разработкиРоль аналитика в негибких методологиях разработки
Роль аналитика в негибких методологиях разработкиDevDay
 
Прагматичный подход к документированию Веб-проектов
Прагматичный подход к документированию Веб-проектовПрагматичный подход к документированию Веб-проектов
Прагматичный подход к документированию Веб-проектовAnatol Filin
 

En vedette (9)

Системная архитектура вместо требований
Системная архитектура вместо требованийСистемная архитектура вместо требований
Системная архитектура вместо требований
 
INEC | OUTUBRO | 31/10/2013
INEC | OUTUBRO | 31/10/2013INEC | OUTUBRO | 31/10/2013
INEC | OUTUBRO | 31/10/2013
 
Архитектура корпоративных систем
Архитектура корпоративных системАрхитектура корпоративных систем
Архитектура корпоративных систем
 
Краткое описание Scrum
Краткое описание ScrumКраткое описание Scrum
Краткое описание Scrum
 
Jennifer Robbins: ARTIFACT Conference Keynote
Jennifer Robbins: ARTIFACT Conference KeynoteJennifer Robbins: ARTIFACT Conference Keynote
Jennifer Robbins: ARTIFACT Conference Keynote
 
Паракатегории современной эстетики
Паракатегории современной эстетикиПаракатегории современной эстетики
Паракатегории современной эстетики
 
Роль аналитика в негибких методологиях разработки
Роль аналитика в негибких методологиях разработкиРоль аналитика в негибких методологиях разработки
Роль аналитика в негибких методологиях разработки
 
Artifacts
ArtifactsArtifacts
Artifacts
 
Прагматичный подход к документированию Веб-проектов
Прагматичный подход к документированию Веб-проектовПрагматичный подход к документированию Веб-проектов
Прагматичный подход к документированию Веб-проектов
 

Similaire à Эффективное объектно-ориентированное проектирование и структурное качество приложений

STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...Alex V. Petrov
 
Тестирование осень 2013 лекция 1
Тестирование осень 2013 лекция 1Тестирование осень 2013 лекция 1
Тестирование осень 2013 лекция 1Technopark
 
Сделать безопасно и сертифицировано — ЗАО «ПМ» на DevCon 2015
Сделать безопасно и сертифицировано — ЗАО «ПМ» на DevCon 2015Сделать безопасно и сертифицировано — ЗАО «ПМ» на DevCon 2015
Сделать безопасно и сертифицировано — ЗАО «ПМ» на DevCon 2015Maxim Avdyunin
 
Управление требованиями и тестирование ПО
Управление требованиями и тестирование ПОУправление требованиями и тестирование ПО
Управление требованиями и тестирование ПОТранслируем.бел
 
Тестирование весна 2014 лекция 1
Тестирование весна 2014 лекция 1Тестирование весна 2014 лекция 1
Тестирование весна 2014 лекция 1Technopark
 
Тестирование весна 2013 лекция 1
Тестирование весна 2013 лекция 1Тестирование весна 2013 лекция 1
Тестирование весна 2013 лекция 1Technopark
 
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...Dakiry
 
Презентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияПрезентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияRauan Ibraikhan
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияRauan Ibraikhan
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rusMaxim Shaptala
 
Бизнес и системный анализ весна 2013 лекция 6
Бизнес и системный анализ весна 2013 лекция 6Бизнес и системный анализ весна 2013 лекция 6
Бизнес и системный анализ весна 2013 лекция 6Technopark
 
Внедрение CASE-технологий
Внедрение CASE-технологийВнедрение CASE-технологий
Внедрение CASE-технологийОтшельник
 
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьОтветственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьCUSTIS
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахSQALab
 

Similaire à Эффективное объектно-ориентированное проектирование и структурное качество приложений (20)

STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
STRATOPLAN. Efficient Object-Oriented Design and Structured Quality of Softwa...
 
Sep reqm-lec1
Sep reqm-lec1Sep reqm-lec1
Sep reqm-lec1
 
Тестирование осень 2013 лекция 1
Тестирование осень 2013 лекция 1Тестирование осень 2013 лекция 1
Тестирование осень 2013 лекция 1
 
MS ALM 2013 Review
MS ALM 2013 ReviewMS ALM 2013 Review
MS ALM 2013 Review
 
01ka-nov
01ka-nov01ka-nov
01ka-nov
 
Test design print
Test design printTest design print
Test design print
 
Сделать безопасно и сертифицировано — ЗАО «ПМ» на DevCon 2015
Сделать безопасно и сертифицировано — ЗАО «ПМ» на DevCon 2015Сделать безопасно и сертифицировано — ЗАО «ПМ» на DevCon 2015
Сделать безопасно и сертифицировано — ЗАО «ПМ» на DevCon 2015
 
Управление требованиями и тестирование ПО
Управление требованиями и тестирование ПОУправление требованиями и тестирование ПО
Управление требованиями и тестирование ПО
 
Тестирование весна 2014 лекция 1
Тестирование весна 2014 лекция 1Тестирование весна 2014 лекция 1
Тестирование весна 2014 лекция 1
 
Тестирование весна 2013 лекция 1
Тестирование весна 2013 лекция 1Тестирование весна 2013 лекция 1
Тестирование весна 2013 лекция 1
 
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
Аліна Петренко: “Майстер-клас: Виявлення ключових вимог на предпроектній фазі...
 
Презентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияПрезентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспечения
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспечения
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
 
Бизнес и системный анализ весна 2013 лекция 6
Бизнес и системный анализ весна 2013 лекция 6Бизнес и системный анализ весна 2013 лекция 6
Бизнес и системный анализ весна 2013 лекция 6
 
Training Labs (www.cmcons.com)
Training Labs (www.cmcons.com)Training Labs (www.cmcons.com)
Training Labs (www.cmcons.com)
 
Внедрение CASE-технологий
Внедрение CASE-технологийВнедрение CASE-технологий
Внедрение CASE-технологий
 
01-lection-ka
01-lection-ka01-lection-ka
01-lection-ka
 
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьОтветственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектах
 

Plus de LuxoftTraining

Адаптивный дом
Адаптивный домАдаптивный дом
Адаптивный домLuxoftTraining
 
Basic networking course
Basic networking courseBasic networking course
Basic networking courseLuxoftTraining
 
Лучшие практики исполнения проекта в соответствии с методологией IBM Rational
Лучшие практики исполнения проекта в соответствии с методологией IBM RationalЛучшие практики исполнения проекта в соответствии с методологией IBM Rational
Лучшие практики исполнения проекта в соответствии с методологией IBM RationalLuxoftTraining
 
Gobov denys (it arena 2015)
Gobov denys (it arena 2015)Gobov denys (it arena 2015)
Gobov denys (it arena 2015)LuxoftTraining
 
Remigiusz dudek exploratorytests_testwarez2014
Remigiusz dudek exploratorytests_testwarez2014Remigiusz dudek exploratorytests_testwarez2014
Remigiusz dudek exploratorytests_testwarez2014LuxoftTraining
 
От бизнес-систем к информационным системам: переход шаг за шагом
От бизнес-систем к информационным системам: переход шаг за шагомОт бизнес-систем к информационным системам: переход шаг за шагом
От бизнес-систем к информационным системам: переход шаг за шагомLuxoftTraining
 
Kumskov it arena-lviv-2014-10-03
Kumskov it arena-lviv-2014-10-03Kumskov it arena-lviv-2014-10-03
Kumskov it arena-lviv-2014-10-03LuxoftTraining
 
Рекомендации по проведению экспертной оценки Lt
Рекомендации по проведению экспертной оценки LtРекомендации по проведению экспертной оценки Lt
Рекомендации по проведению экспертной оценки LtLuxoftTraining
 
Awinning culture33rddegree
Awinning culture33rddegreeAwinning culture33rddegree
Awinning culture33rddegreeLuxoftTraining
 
Awinning culture33rddegree
Awinning culture33rddegreeAwinning culture33rddegree
Awinning culture33rddegreeLuxoftTraining
 
Waterfall revisited: практические метрики тестирования
Waterfall revisited: практические метрики тестированияWaterfall revisited: практические метрики тестирования
Waterfall revisited: практические метрики тестированияLuxoftTraining
 
Веб-служба на базе Workflow foundation
Веб-служба на базе Workflow foundationВеб-служба на базе Workflow foundation
Веб-служба на базе Workflow foundationLuxoftTraining
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняLuxoftTraining
 
Презентация доклада Лавриненко
Презентация доклада ЛавриненкоПрезентация доклада Лавриненко
Презентация доклада ЛавриненкоLuxoftTraining
 
Secr презентация дружинина
Secr презентация дружининаSecr презентация дружинина
Secr презентация дружининаLuxoftTraining
 
Secr презентация гардиенков
Secr презентация гардиенковSecr презентация гардиенков
Secr презентация гардиенковLuxoftTraining
 
Опыт Объектно Ориентированного подхода в Бизнес-Анализе
Опыт Объектно Ориентированного подхода в Бизнес-АнализеОпыт Объектно Ориентированного подхода в Бизнес-Анализе
Опыт Объектно Ориентированного подхода в Бизнес-АнализеLuxoftTraining
 
Концепция построения процесса тестирования в Agile проектах: 3+1
Концепция построения процесса тестирования в Agile проектах: 3+1Концепция построения процесса тестирования в Agile проектах: 3+1
Концепция построения процесса тестирования в Agile проектах: 3+1LuxoftTraining
 

Plus de LuxoftTraining (20)

Адаптивный дом
Адаптивный домАдаптивный дом
Адаптивный дом
 
Basic networking course
Basic networking courseBasic networking course
Basic networking course
 
Take a sip of sip
Take a sip of sipTake a sip of sip
Take a sip of sip
 
Лучшие практики исполнения проекта в соответствии с методологией IBM Rational
Лучшие практики исполнения проекта в соответствии с методологией IBM RationalЛучшие практики исполнения проекта в соответствии с методологией IBM Rational
Лучшие практики исполнения проекта в соответствии с методологией IBM Rational
 
Gobov denys (it arena 2015)
Gobov denys (it arena 2015)Gobov denys (it arena 2015)
Gobov denys (it arena 2015)
 
Remigiusz dudek exploratorytests_testwarez2014
Remigiusz dudek exploratorytests_testwarez2014Remigiusz dudek exploratorytests_testwarez2014
Remigiusz dudek exploratorytests_testwarez2014
 
От бизнес-систем к информационным системам: переход шаг за шагом
От бизнес-систем к информационным системам: переход шаг за шагомОт бизнес-систем к информационным системам: переход шаг за шагом
От бизнес-систем к информационным системам: переход шаг за шагом
 
Kumskov it arena-lviv-2014-10-03
Kumskov it arena-lviv-2014-10-03Kumskov it arena-lviv-2014-10-03
Kumskov it arena-lviv-2014-10-03
 
Рекомендации по проведению экспертной оценки Lt
Рекомендации по проведению экспертной оценки LtРекомендации по проведению экспертной оценки Lt
Рекомендации по проведению экспертной оценки Lt
 
Awinning culture33rddegree
Awinning culture33rddegreeAwinning culture33rddegree
Awinning culture33rddegree
 
Awinning culture33rddegree
Awinning culture33rddegreeAwinning culture33rddegree
Awinning culture33rddegree
 
Waterfall revisited: практические метрики тестирования
Waterfall revisited: практические метрики тестированияWaterfall revisited: практические метрики тестирования
Waterfall revisited: практические метрики тестирования
 
Веб-служба на базе Workflow foundation
Веб-служба на базе Workflow foundationВеб-служба на базе Workflow foundation
Веб-служба на базе Workflow foundation
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровня
 
Vs vs. charles
Vs vs. charlesVs vs. charles
Vs vs. charles
 
Презентация доклада Лавриненко
Презентация доклада ЛавриненкоПрезентация доклада Лавриненко
Презентация доклада Лавриненко
 
Secr презентация дружинина
Secr презентация дружининаSecr презентация дружинина
Secr презентация дружинина
 
Secr презентация гардиенков
Secr презентация гардиенковSecr презентация гардиенков
Secr презентация гардиенков
 
Опыт Объектно Ориентированного подхода в Бизнес-Анализе
Опыт Объектно Ориентированного подхода в Бизнес-АнализеОпыт Объектно Ориентированного подхода в Бизнес-Анализе
Опыт Объектно Ориентированного подхода в Бизнес-Анализе
 
Концепция построения процесса тестирования в Agile проектах: 3+1
Концепция построения процесса тестирования в Agile проектах: 3+1Концепция построения процесса тестирования в Agile проектах: 3+1
Концепция построения процесса тестирования в Agile проектах: 3+1
 

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

  • 2. О ЧЕМ ПОЙДЕТ РЕЧЬ? 1 2 3 4 Что такое «структурное качество» приложений? Как соотносятся шаблоны ОО-проектирования и показатели качества? Что такое «анти-шаблоны»? Какую помощь в обеспечении структурного качества могут оказать современные языки? Какие мероприятия могут помочь в обеспечении структурного качества? Реально ли повысить структурное качество уже написанных приложений?
  • 3. НЕФОРМАЛЬНОЕ ВВЕДЕНИЕ 1 2 3 4 Качество — это… … «степень соответствия присущих характеристик <…> изделия или продукта потребностям, ожиданиям» (ГОСТ Р ИСО 9000). Различают качество программного обеспечения (ПО) и исходного кода. Основная задача … планировать и осуществлять мероприятия по анализу и повышению структурного качества исходного программного кода как артефакта в процессах разработки ПО Актуальность Итеративные методы разработки; распространение методов обеспечения и контроля качества на все этапы разработки ПО; распространение методов ОО-анализа, проектирования и разработки; применение UML и CASE-средств. Первые результаты Повышение качества управления рисками и затратами на всех этапах жизненного цикла ПО
  • 4. МОДЕЛИ КАЧЕСТВА ПО Модели качества ПО — это упорядоченные системы атрибутов, значимых для заинтересованных сторон проекта разработки ПО Общий принцип — числовое выражение фактора: линейная комбинация взвешенных влияющих метрик 4,8 Критерии точка зрения разработчика точка зрения пользователя Факторы Метрики атрибуты модели Дж. МакКол Б. Боэм ISO 9126 20 стр.
  • 5. ВОПРОС #1 Что такое «качественное ПО»? 1 2 Что такое «качественное ПО»? – Ответьте, используя не более шести слов. Какие характеристики ПО, на ваш взгляд, можно назвать структурными? – Ответьте, используя не более шести слов. 20 стр.
  • 6. МОДЕЛЬ КАЧЕСТВА ISO / IEC 9126 1991 2001 6 целей ожидание от ПО 21 атрибут близость к достижению цели ISO / IEC 9126 ISO 25000:2005 SQuaRE — Software product Quality Requirements and Evaluation 5 структурных характеристик ПО ❶Надежность прочность, устойчивость; степень риска, сопряженного с использованием системы ❷Эффективность производительность операций; управление ресурсами; правила кодирования ❸Безопасность правила кодирования; обработка ошибок и исключений документация в коде; удобство чтения кода; отсутствие «грязных» техник; переносимость кода ❹Удобство сопровождения оценка трудозатрат в ретроспективе и перспективе ❺Размер кода
  • 7. МЕТРИКИ КАЧЕСТВА В МОДЕЛИ ISO / IEC 9126 1991 2001 6 целей ожидание от ПО 21 атрибут близость к достижению цели ISO / IEC 9126 SQuaRE — Software product Quality Requirements and Evaluation ISO 9126-2, ISO 9126-3 Метрики качества Полнота и корректность реализации функций Отношение числа найденных дефектов к прогнозному Отношение числа проведенных тестов к общему их числу … В трактовке ISO 9126, качество ПО можно повысить, не внося в него изменений
  • 8. ЛАНДШАФТ МЕТОДОВ ОЦЕНКИ КАЧЕСТВА ПО 1 2 3 Необходим «запуск» объекта исследования? По анализируемым артефактам По способу изучения статические динамические формальные модели исходный программный код объектный коддокументация инструментальный анализ целенаправленная инспекция (desk-checking) рефакторинг
  • 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. Проблема Пример шаблона Дублирование кода Наследование, композиция, мост, шаблонный метод Невозможность замены способа выполнения запроса, сложность сочетания поведений или динамического конфигурирования системы Декоратор, делегирование (композиция), наблюдатель, посредник, прототип, состояние, стратегия Потребность в универсальном или альтернативном способе доступа (системе запросов), абстрактном типе данных (ADT) Адаптер, интерфейс, итератор, компоновщик, наблюдатель, посетитель Потребность в глобальной точке доступа Одиночка Потребность в константном объекте Неизменяемый объект Зависимость системы от программной или аппаратной платформы Абстрактная фабрика, мост Зависимость клиента от алгоритмов, представления или реализации объекта Итератор, мост КАК СООТНОСЯТСЯ ШАБЛОНЫ ПРОЕКТИРОВАНИЯ И КАЧЕСТВО ПРИЛОЖЕНИЙ? (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) C++ Java Исполнение управляемого кода в защищенной программной среде  быстро, небезопасно  медленно, безопасно «Родные» методы (выполняют код вне защищенной среды, имеют доступ ко всем системным ресурсам) —  быстро, небезоп., непереносимо Строгая типизация   Запрет автоматического приведения (преобразования) типов  част., особ. в C++11  Средства динамической идентификации типов времени выполнения (RTTI)  dynamic_cast, typeid  instanceof Отладочные утверждения (assertions) времени компиляции (исполнения)   Автоматическая сборка мусора  эмулируется  20 стр.
  • 27. КАКУЮ ПОМОЩЬ МОГУТ ОКАЗАТЬ СОВРЕМЕННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ? (2 / 2) C++ Java Обобщенное программирование с поддержкой безопасности типов данных  шаблоны  обобщения Элементы рефлексии в исходном коде  характеристики типов  аннотации Расширенная поддержка ОО-парадигмы (абстрактные классы, «листовые» классы / методы, «удаленные» методы)  особ. в C++11  Обработка исключительных ситуаций. Стандартные и пользовательские классы- исключения   Спецификация типов исключений, возбуждаемых методами классов  на усмотрение разработчика  существуют непроверяемые Алгоритмы и структуры данных в составе стандартных библиотек   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. РЕАЛЬНО ЛИ ПОВЫСИТЬ СТРУКТУРНОЕ КАЧЕСТВО УЖЕ НАПИСАННЫХ ПРИЛОЖЕНИЙ? Да! ❶ Провести комплекс организационных мероприятий ❷ Запустить систематический рефакторинг архитектуры и исходного кода ❸ Провести дополнительное тестирование приложения ❹ На регулярной основе пересматривать и ужесточать требования действующей модели качества приложения ❺ Держаться курса, чего бы это ни стоило!