Какую помощь в обеспечении структурного качества могут оказать современные языки?
Какие мероприятия могут помочь в обеспечении структурного качества?
	Реально ли повысить структурное качество уже написанных приложений?
                                
Основная задача
	… планировать и осуществлять мероприятия по анализу и повышению структурного качества исходного программного кода как артефакта в процессах разработки ПО
Актуальность
	Итеративные методы разработки; распространение методов обеспечения и контроля качества на все этапы разработки ПО; распространение методов ОО-анализа, проектирования и разработки; применение UML и CASE-средств.
Первые результаты
	Повышение качества управления рисками и затратами на всех этапах жизненного цикла ПО
                                
атрибуты
20
стр.
                                
Какие характеристики ПО, на ваш взгляд, можно назвать структурными?
Ответьте, используя не более шести слов.
20
стр.
                                
ISO 9126-2, ISO 9126-3
Метрики качества
В трактовке ISO 9126,
качество ПО можно повысить,
не внося в него изменений
                                
рефакторинг
                                
20
стр.
                                
полнота краткость
понятность надежность
структурированность
удобство сопровождения
                                
Транзакции и алгоритмы
	Сложность транзакций и алгоритмов;
	сложность приемов программирования и отсутствие «грязных» техник
Исходный код
	Соблюдение правил оформления кода;
	обработка ошибок и исключений;
	соответствие выбранной парадигме
Техническая документация
	Удобство чтения и структурированность;
	объем документации
                                
Снижению сложности способствуют…
	…предварительное проектирование архитектуры
в соответствии с заданными критериями качества
с учетом ее реализуемости на выбранном языке
«Несложный» код:
«Несложный» код обеспечивает…
	…снижение совокупной стоимости владения ПО
20
стр.
                                
Композиция объектов → компонентная разработка 
	Не порождает сильной связи суперклассов с подклассами;
	не вызывает проблемы «хрупких» базовых классов (fragile base class)
Контрактное программирование
Принцип «корректность по построению»
	Подразумевает применение методов проектирования, автоматически гарантирующих корректность получаемого продукта
                                
Какие структурные показатели качества улучшает применение «контрактов» в исходном коде?
Ответьте, используя не более четырех слов.
20
стр.
                                
Шаблоны проектирования
	Фундаментальные (базовые);
	GoF, Gang of Four (Э. Гамма и др.);
	GRASP (К. Ларман);
	PoEAA (М. Фаулер)
Автоматическая генерация, рефакторинг, комментирование и документирование кода
	CASE- и ALM-средства (в составе Microsoft Visual Studio,
Eclipse IDE, IntelliJ IDEA и т.д.);
	Doxygen, javadoc и т.д.
                                
Типичные компромиссы
	Соответствие дизайна задаче ←→общность дизайна;
	доступность элементов системы ←→безопасность;
	удобство вызова ←→ возможность тонкой настройки
Шаблоны (паттерны) проектирования —это… 
	…типовые архитектурные решения задач, в том числе:
	фундаментальные шаблоны:
		наследование, делегирование и др.;
	шаблоны «банды четырех» (GoF):
		стратегия, адаптер и др.;
	шаблоны GRASP, PoEAA и др.
                                
20
стр.
                                
Божественный объект (God object)
	монолитный артефакт большого размера в исходном коде
Жесткий код (Hard code)
	имена, адреса и пр. числовые и символьные литералы, наличие которых затрудняет (делает невозможным) конфигурирование системы
Магические числа (Magic numbers)
	константы с трудно постижимой семантикой
✗
✗
✗
✗
                                
Архитектурно необоснованные заглушки
	методы или функции, не выполняющие роль пустых неабстрактных методов, шаблонных методов (GoF) или операций-«зацепок» (hook operations)
Код с непредсказуемым поведением
	обращение к неинициализированным
переменным, «трюки» в управлении
памятью, неконтролируемое
переполнение буферов и т.д.
✗
✗
✗
                                
Какие возможности языков ОО-программирования вносят свой вклад в обеспечение структурного качества кода?
Ответьте полно, насколько это возможно. Время на ответ — 
2 минуты.
                                
Выделяют и принуждают…
	… к отказу от использования устаревающих элементов архитектуры
Упрощают…
	… работу с атомарными характеристиками типов и позволяют предельно оптимизировать специализированные версии универсальных функций и методов
Сопровождают…
	… намеренно сохраненные в итоговой сборке кода предупреждения при компиляции
                                
2
Предоставляют…
	строгие гарантии вычислительной сложности операций (напр., поиск элемента списка требует линейного времени)
	широкие возможности повторного использования кода;
	расширяемые, удобные, взаимозаменяемые программные модули с унифицированными интерфейсами
3
Обеспечивают…
	вариативность решения задачи с учетом предпочтений разработчика;
	структурную несовместимость контейнеров и алгоритмов, неэффективных при совместной работе
                                
Программа повышения квалификации
	(Принятая) модель и атрибуты структурного качества ПО;
	расширенные возможности языков моделирования (UML), запросов к БД (SQL) и языков программирования;
	поддержка качественного проектирования и разработки CASE-средствами, языками и инструментами
Соглашения о проектировании, моделировании, кодировании 
	Активное применение языков моделирования и CASE-технологий; автоматическая генерация исходного кода и технической документации по нему
1
2
3
4
Аудит наличной архитектуры и кодовой базы
	Разработка и реализация плана рефакторинга архитектуры системы и ее исходного программного кода
                                
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть