- •Вопросы к экзамену по курсу "Технология программирования"
- •История развития языков программирования высокого уровня.
- •Архитектура языков программирования (три поколения).
- •Архитектура объектно-ориентированных языков программирования.
- •Сложность, присущая по (основные причины). Проблемы, возникающие при создании сложных систем.
- •Структура сложных систем (пять признаков). Примеры сложных систем (выделить признаки).
- •Основные понятия: метод, методология, технология. Классификация методов проектирования пс. Общая характеристика методов проектирования.
- •Эволюция программного продукта. Основные определения, понятия, отличительные черты.
- •Понятие «модуль» в программировании. Различные виды модулей при использовании основных методов проектирования пс.
- •Case – технологии (инструменты, системы, средства). Эволюция case – средств, их классификация, характеристики современных case – инструментов. Перспективы развития.
- •Роль case – инструментов в объектно-ориентированной методологии разработки пс. Связь case – технологии с методами быстрой разработки приложений (rad).
- •Классификация средств разработки (case - инструментов).
- •Жизненный цикл по (жц). Структура жц, основные фазы жц.
- •Организация процесса разработки пс (методы, средства, процедуры).
- •Модели процесса разработки пс (каскадная, спиральная)
- •Модели процесса разработки пс (компонентно-ориентированная, инкрементная, rad – модель).
- •Тяжеловесные и облегченные процессы разработки пс.
- •Унифицированный процесс разработки пс.
- •Iconix – процесс.
- •Scrum – процесс.
- •Артефакты
- •Встречи
- •Планирование спринта происходит в начале итерации(не более 4-8 часов), выбирается что будет сделано и обсуждается как это будет сделано.
- •Митинг Происходит каждый день в течение спринта(не более 15 минут), ищутся ответы на вопросы: что сделано? Что надо сделать? Какие есть проблемы?
- •Демонстрация проходит в конце спринта(не более 4-8 часов), показывается инкремент.
- •Прототип системы (достоинства и недостатки макетирования).
- •Масштаб проекта и риски
- •Содержание основных рабочих процессов по созданию по (анализ требований, системный анализ, проектирование).
- •Содержание основных рабочих процессов по созданию по (кодирование, тестирование).
- •Изменения в процессе эволюции программных систем, стоимость каждого вида изменения (в смысле затрат).
- •Организационные процессы (распределение ресурсов, управление проектом, организация коллектива разработчиков).
- •Документирование программного продукта. Различные виды документов, их содержание.
- •Виды документов при использовании объектно-ориентированной методологии разработки пс.
- •Временные затраты на реализацию этапов разработки по. Особенности распределения ресурсов при использовании объектно-ориентированной методологии.
- •Методы и средства структурного анализа.
- •Диаграммы потоков данных с расширениями для реального времени.
- •Пример банковской задачи (провести анализ).
- •Средства структурного проектирования (карты Константайна).
- •Методы проведения анализа объектно-ориентированных систем.
- •Типовая и структурная иерархии в объектно-ориентированной методологии.
- •Унифицированный язык моделирования пс (uml). Словарь, достоинства и возможности
- •Механизмы расширения в uml.
- •Диаграммы классов (точки зрения).
- •Отношения в диаграмме классов.
- •Классы ассоциаций.
- •Диаграммы вариантов использования, реализации вариантов использования.
- •Диаграммы взаимодействий.
- •Диаграммы пакетов и компонентов.
- •Диаграммы состояний.
- •Диаграммы активности (деятельностей).
- •Каркасы и паттерны.
- •Основные понятия и определения теории тестирования. Подходы к тестированию. Стратегии тестирования. Критерии тестирования.
- •Критерии тестирования стратегии "черного ящика".
- •1. Эквивалентное разбиение (самый популярный критерий из-за простоты)
- •2. Анализ граничных условий.
- •3. Метод функциональных диаграмм
- •Классический процесс тестирования по.
- •Тестирование модулей (блоков) программы. Тестирование интеграции.
- •Тестирование правильности (функциональное тестирование). Системное тестирование.
- •Особенности тестирования объектно-ориентированных программ. Тестирование классов.
- •Тестирование взаимодействия классов и функционирования компонентов.
- •Вопросы автоматизации тестирования. Инструменты тестирования.
Каркасы и паттерны.
Образец (Pattern – паттерн) проектирования предлагает типичное решение типичной проблемы в определенном контексте.
Каркас (Framework) – это коллекция классов, используемых в нескольких различных приложениях (чаще всего в одной конкретной области).
Или другими словами – каркас – это архитектурный образец, который предлагает расширяемый шаблон (чаще всего классы внутри каркаса абстрактные, а в приложении используются через наследование (в основном) или агрегации, хотя в каркасе могут быть и конкретные классы, которые можно использовать).
Kаркасы описывают структуру и поведение системы в целом, а образцы описывают структуру и поведение сообщества классов. Образцы используются и в каркасах, и в процессе детального проектирования.
Образцы обычно накапливаются у тех разработчиков, которые умеют находить в своих проектах повторяющиеся решения.
Все паттерны авторы монографии делят на 3 категории: структурные, порождающие и паттерны поведения.
1) Структурные образцы (Адаптер, Компоновщик, Декоратор, Мост, Фасад и др. (всего 7)) используются с целью образования более крупных структур из классов и объектов для получения новой функциональности.
Структурные паттерны (отсюда их название) имеют дело со способами представления объектов (такими, как деревья или связные списки).
2) Порождающие (Креационные) паттерны (Aбстрактная Фабрика, Строитель, Фабричный метод, Прототип, Одиночка).
3) Паттерны поведения (Команда, Итератор, Интерпретатор, Посредник, Наблюдатель, Состояние, Шаблонный метод и др.).
Паттерн поведения позволяет нам следить за поведением объектов
Иногда в каркасах используется отношение “зависимости”, т.е. объекты каркаса вызывают (или уточняют) абстракции пользователя. Короче, как и в паттернах, каркас настраивается на пользователя. Короче, если выражаться короче, слово «короче» это, короче, самое, что ни наесть короче. Короче, выражаясь понятным языком, «короче» — самое короткое слово, короче, из всего, короче, ну, короче, нашего языка.
Акцент в каркасе делается на повторном использовании дизайна, а не кода (как в библиотеках).
Проектировщик каркаса рассчитывает, что единая архитектура будет пригодна для всех приложений в данной предметной области. Поэтому каркас должен быть максимально гибким и расширяемым, так как приложения сильно зависят от каркаса.
По этой же причине каркасы часто спроектированы с использованием паттернов
Поскольку между паттернами и каркасами много общего, то часто возникает вопрос: в чем же они различны? Так вот, существует 3 основных различия:
1. Паттерны проектирования более абстрактны, чем каркасы. Что имеется в виду? Паттерн необходимо реализовать всякий раз, когда он используется (хотя сегодня уже есть много примеров реализации паттернов на С++, Java).
2. Паттерны мельче, чем каркасы (в смысле архитектурных элементов типичный каркас содержит несколько паттернов).
3. Паттерны менее специализированы, чем каркасы. Каркас почти всегда создается для конкретной предметной области, а паттерны можно использовать в приложениях почти любого вида. Хотя, безусловно, есть и более специализированные паттерны. Например, для распределения систем, для параллельного программирования, для проектирования БД и др.