Какую помощь в обеспечении структурного качества могут оказать современные языки?
Какие мероприятия могут помочь в обеспечении структурного качества?
Реально ли повысить структурное качество уже написанных приложений?
Основная задача
… планировать и осуществлять мероприятия по анализу и повышению структурного качества исходного программного кода как артефакта в процессах разработки ПО
Актуальность
Итеративные методы разработки; распространение методов обеспечения и контроля качества на все этапы разработки ПО; распространение методов ОО-анализа, проектирования и разработки; применение 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: Нажмите что бы посмотреть