- •Вопросы к экзамену по курсу "Технология программирования"
- •История развития языков программирования высокого уровня.
- •Архитектура языков программирования (три поколения).
- •Архитектура объектно-ориентированных языков программирования.
- •Сложность, присущая по (основные причины). Проблемы, возникающие при создании сложных систем.
- •Структура сложных систем (пять признаков). Примеры сложных систем (выделить признаки).
- •Основные понятия: метод, методология, технология. Классификация методов проектирования пс. Общая характеристика методов проектирования.
- •Эволюция программного продукта. Основные определения, понятия, отличительные черты.
- •Понятие «модуль» в программировании. Различные виды модулей при использовании основных методов проектирования пс.
- •Case – технологии (инструменты, системы, средства). Эволюция case – средств, их классификация, характеристики современных case – инструментов. Перспективы развития.
- •Роль case – инструментов в объектно-ориентированной методологии разработки пс. Связь case – технологии с методами быстрой разработки приложений (rad).
- •Классификация средств разработки (case - инструментов).
- •Жизненный цикл по (жц). Структура жц, основные фазы жц.
- •Организация процесса разработки пс (методы, средства, процедуры).
- •Модели процесса разработки пс (каскадная, спиральная)
- •Модели процесса разработки пс (компонентно-ориентированная, инкрементная, rad – модель).
- •Тяжеловесные и облегченные процессы разработки пс.
- •Унифицированный процесс разработки пс.
- •Iconix – процесс.
- •Scrum – процесс.
- •Артефакты
- •Встречи
- •Планирование спринта происходит в начале итерации(не более 4-8 часов), выбирается что будет сделано и обсуждается как это будет сделано.
- •Митинг Происходит каждый день в течение спринта(не более 15 минут), ищутся ответы на вопросы: что сделано? Что надо сделать? Какие есть проблемы?
- •Демонстрация проходит в конце спринта(не более 4-8 часов), показывается инкремент.
- •Прототип системы (достоинства и недостатки макетирования).
- •Масштаб проекта и риски
- •Содержание основных рабочих процессов по созданию по (анализ требований, системный анализ, проектирование).
- •Содержание основных рабочих процессов по созданию по (кодирование, тестирование).
- •Изменения в процессе эволюции программных систем, стоимость каждого вида изменения (в смысле затрат).
- •Организационные процессы (распределение ресурсов, управление проектом, организация коллектива разработчиков).
- •Документирование программного продукта. Различные виды документов, их содержание.
- •Виды документов при использовании объектно-ориентированной методологии разработки пс.
- •Временные затраты на реализацию этапов разработки по. Особенности распределения ресурсов при использовании объектно-ориентированной методологии.
- •Методы и средства структурного анализа.
- •Диаграммы потоков данных с расширениями для реального времени.
- •Пример банковской задачи (провести анализ).
- •Средства структурного проектирования (карты Константайна).
- •Методы проведения анализа объектно-ориентированных систем.
- •Типовая и структурная иерархии в объектно-ориентированной методологии.
- •Унифицированный язык моделирования пс (uml). Словарь, достоинства и возможности
- •Механизмы расширения в uml.
- •Диаграммы классов (точки зрения).
- •Отношения в диаграмме классов.
- •Классы ассоциаций.
- •Диаграммы вариантов использования, реализации вариантов использования.
- •Диаграммы взаимодействий.
- •Диаграммы пакетов и компонентов.
- •Диаграммы состояний.
- •Диаграммы активности (деятельностей).
- •Каркасы и паттерны.
- •Основные понятия и определения теории тестирования. Подходы к тестированию. Стратегии тестирования. Критерии тестирования.
- •Критерии тестирования стратегии "черного ящика".
- •1. Эквивалентное разбиение (самый популярный критерий из-за простоты)
- •2. Анализ граничных условий.
- •3. Метод функциональных диаграмм
- •Классический процесс тестирования по.
- •Тестирование модулей (блоков) программы. Тестирование интеграции.
- •Тестирование правильности (функциональное тестирование). Системное тестирование.
- •Особенности тестирования объектно-ориентированных программ. Тестирование классов.
- •Тестирование взаимодействия классов и функционирования компонентов.
- •Вопросы автоматизации тестирования. Инструменты тестирования.
Диаграммы активности (деятельностей).
Диаграммы деятельностей – это одна из самых больших неожиданностей UML. Используются для описания поведения систем.
В отличие от большинства других средств UML диаграммы деятельностей не имеют отношения к работам «троих друзей». Диаграммы деятельностей сочетают в себе идеи различных методов: диаграмм событий Джима Оделла, диаграмм состояний SDL и сетей Петри. Эти диаграммы особенно полезны в сочетании с потоками работ, а также в описании поведения, которое включает параллельные процессы.
Основным элементом диаграммы деятельностей является деятельность. Причем диаграммы деятельностей, как и диаграммы классов, могут строиться с трех различных точек зрения: с концептуальной, с точки зрения спецификации и с точки зрения реализации. В соответствии с точкой зрения деятельность рассматривается по-разному.
На концептуальной диаграмме деятельность – это некоторая задача, которую необходимо автоматизировать или выполнить вручную.
На диаграмме, построенной с точки зрения спецификации или реализации, деятельность – это некоторый метод над классом.
Рассмотрим пример на рис.6.8.1. Диаграмма деятельностей описывает метод над типом Личность.
Мы видим на примере, что за каждой деятельностью может следовать другая деятельность. В этом случае они образуют простую последовательность (например, за деятельностью «Положить Кофе в Фильтр» следует деятельность «Вставить Фильтр в Автомат»). При таком подходе диаграмма деятельностей напоминает блок-схему.
Разницу можно обнаружить, если посмотреть на деятельность «Поискать Напиток». Эта деятельность активизирует два действия: каждое действие содержит условие, которое может принимать одно из двух значений: «истина» или «ложь» (так же, как на диаграмме состояний). У нас Личность осуществляет деятельность «Поискать Напиток», выбирая между кофе и колой.
Предположим, что мы отыскали кофе, то есть идем вниз по «кофейному» маршруту. Этот путь ведет к линейке синхронизации, с которой связана активизация трех деятельностей: «Положить Кофе в Фильтр», «Добавить Воду в Ёмкость» и «Достать Чашки». Диаграмма указывает, что эти три деятельности могут выполняться параллельно. Причем порядок их выполнения не играет роли: их можно выполнять в любой последовательности, а можно и чередовать друг с другом (например, достать одну чашку, затем добавить немного воды в ёмкость; достать другую чашку, добавить еще немного воды и т.д.). А можно делать некоторые вещи одновременно: одной рукой наливать воду, а другой доставать чашки. Любой из этих вариантов допустим. Это и показывает линейка синхронизации, то есть выбор порядка выполнения действий остается за Личностью (за тем, кто выполняет эти действия). В этом заключается главное различие между диаграммой деятельностей и блок-схемой, то есть блок-схемы обычно показывают последовательные процессы, а диаграммы деятельностей могут поддерживать дополнительно параллельные процессы.
Поэтому диаграммы деятельностей являются полезными при параллельном программировании. Можно графически изобразить все ветви и показать, когда их необходимо синхронизировать. Такая возможность важна также при моделировании бизнес - процессов, так как среди бизнес-процессов часто встречаются такие, которые не обязаны выполняться последовательно: диаграмма побуждает людей искать возможности делать дела параллельно.
Итак, если при описании поведения системы выявляются параллельные процессы (деятельности), то их необходимо синхронизировать.
Простая линейка синхронизации (как в примере) показывает, что выходная деятельность ( «Включать Автомат» ) активизируется только тогда, когда выполнены обе входные деятельности: «Добавить Воду в Емкость» и «Вставить Фильтр в Автомат». Линейки могут быть и более сложными.
Обратите внимание, что второе решение (первое – «Поискать Напиток») относится к составным. Если кофе нет, то приходим ко второму решению, связанному с колой. При такой последовательности решений второе решение обозначается ромбом. Количество вложенных решений может быть любым.
Далее обратите внимание, что деятельность «Выпить Напиток» имеет два входа. Это означает, что она будет выполнена в любом случае, т. е. рассматривается как условие «ИЛИ» (выполняется, если выполняется хотя бы одна из двух входящих деятельностей). Линейку же синхронизации можно рассматривать как условие «И».
Диаграммы деятельности полезны для описания сложных методов. Их также можно применять где угодно. Например, для описания вариантов использования, если вариант использования представляет собой сложный процесс (функцию).