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