Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы к гос. экзамену.doc
Скачиваний:
4
Добавлен:
30.04.2019
Размер:
89.09 Кб
Скачать

II. Раздел «Управление данными»

  1. Виды декомпозиций. Декомпозиция без потерь.

  2. Функции администратора базы данных. Функции администратора данных.

  3. Уровни моделирования базы данных.

  4. Аксиомы вывода. Классификация покрытий.

  5. Проблемы декомпозиции на минимальном покрытии. Теорема Хеза.

  6. Ключи. Неопределенность значений атрибутов в ключах.

  7. Нормальные формы. Общая классификация. Отличие НФБК от 3 НФ.

  8. Практическая значимость понятий: замыкания ФЗ, замыкание атрибутов.

  9. Формализация реляционной базы данных.

  10. Целостность базы данных.

  11. Ключи.

  12. ЕR – модель. Генерация отношений.

  13. Трёхуровневая архитектура ANSI-SPARC.

  14. Функции и компоненты СУБД.

  15. Архитектуры многопользовательских СУБД.

  16. Составные части языка SQL.

  17. Реализация запросов средствами SQL.

  18. Необходимость управления параллельностью.

  19. Транзакция и её свойства.

  20. Методы управления параллельностью.

  21. Функции и архитектура распределённых СУБД.

  22. Разработка распределённых баз данных.

  23. Управление распределённой параллельностью.

  24. Распределённая взаимная блокировка.

  25. Восстановление распределённых баз данных.

Литература

  1. Дейт К. Введение в системы баз данных.7-е изд. М.;  CПб.: Издательский дом “Вильямс”, 2002. –1072 с.

  2. Мейер М. Теория реляционных баз данных. М.: Мир, 1987. - 608 с.

  3. Конноли Т., Бегг К., Страчан А. Базы данных: проектирование, реализация, сопровождение. Теория и практика, 2-е издание. : Пер. с англ.: Уч. пос. –М. : Издательский дом “Вильямс”,2001. – 1120 с.

  4. Нейбург М., Максимчук Р. Проектирование баз данных с помощью UML.: - М.: Издательский дом «Вильямс», 2002.-288 с.

  5. Николаева Н.А. Базы и банки знаний. Практические занятия: Учебное пособие. – Ухта: УГТУ, 2002. – 72 с. ил.

  6. Николаева Н.А. Базы и банки знаний. Контрольные работы: Учебное пособие. – Ухта: УГТУ, 2002. – 72 с., ил.

III. Раздел «Технология программирования»

  1. Эволюция средств программирования: программирование в машинных кодах, программирование в мнемонике ассемблера, языки высокого уровня.

  1. Определение алгоритма. Пример алгоритма. Пять основных свойств алгоритма. Сущность алгоритмизации.

  1. Понятие алгоритмического языка. Основные достоинства и недостатки программирования на алгоритмическом языке.

  2. Языки программирования высокого уровня. Поколения и топология языков программирования высокого уровня с примерами (по Г. Бучу).

  3. Интерпретаторы и компиляторы. «За» и «против». Структура. Понятие Байт-кода (P-Code). Языки 4GL.

  4. Транслятор. Редактор связей. Загрузчик. Назначение и принципы функционирования.

  5. Понятие исходного, объектного, загрузочного модулей. Назначение.

  6. Понятие программы, подпрограммы, функции. Способы передачи и возврата параметров в подпрограммы и функции.

  7. Основные принципы структурного программирования.

  8. Модели управления в программных системах: централизованное управление, управление, основанное на событиях.

  9. Структура событийно-управляемой программы для платформы Win32.

  10. Основные элементы объектно-ориентированных методов создания программных систем: абстрагирование, инкапсуляция, модульность, иерархия, типизация, параллелизм, устойчивость, полиморфизм. Понятие объектно-ориентированного программирования.

  11. Понятие объекта и класса. Свойства объекта: состояние, поведение, идентичность. Свойства класса: структура и поведение. Описание классов в языке C++. Объект, класс и инкапсуляция как связанные понятия.

  12. Создание объектов в языке C++. Распределение объектов в динамической памяти (куче) и автоматическое распределение памяти под объекты (на стеке). Сильные и слабые стороны.

  13. Методы (члены-функции) в классах языка C++. Специальные методы, статические (static) методы, виртуальные методы и неизменные (immutable) методы в C++.

  14. Конструкторы и деструкторы в языке C++. Соглашения относительно специальных функций-членов класса. Порядок вызова при наследовании. Виртуальные деструкторы.

  15. Понятие модуля. Модуль как средство борьбы со сложностью программной системы. Принципы проектирования модулей. Модули в языке C++. Модульность и инкапсуляция как связанные понятия.

  16. Типизация (декларация) данных в языках программирования. Задачи типизации. Слабая и сильная типизация. Достоинства и недостатки каждой. Типизация в языке C++. Встроенные типы данных. Определение новых типов данных.

  17. Соглашения по преобразованию (приведению) типов данных в языке C++. Операторы const_cast, reinterpret_cast, static_cast, dynamic_cast.

  18. Статический полиморфизм в языке C++. Перегрузка функций и операторов.

  19. Параметризованные классы (template) и функции в языке C++ как средство статического полиморфизма.

  20. Частичная специализация шаблонов в языке C++.

  21. Простое и множественное наследование в языке C++. Полиморфное поведение объектов при наследовании (динамический полиморфизм). Проблема «среза» в динамическом полиморфизме и способы решения.

  22. Абстрактные классы и интерфейсы. Описание на языке C++. Реализация интерфейсов.

  23. Понятие интерфейса. Язык описания интерфейсов IDL (MIDL).

  24. Стандартная библиотека шаблонов STL. Основные концепции: контейнер, алгоритм, итератор, поток.

  25. Представление в машине символьной информации. Кодировки ASCII, MBCS, ANSI, Unicode. Строки ASCII-Z, Pascal, BSTR.

  26. Признаки сложных систем согласно общей теории систем. Примеры систем (выделить в них признаки).

  27. Сложность, присущая программному обеспечению. Составляющие сложности программного обеспечения по Ф. Бруксу.

  28. Эволюция системного программного продукта. Понятие и составляющие программы, программного комплекса, программного продукта, системного программного продукта (по Ф. Бруксу)

  29. Борьба со сложностью в программном обеспечении. Эволюция методов анализа и разработки (SA/SD, OOA/OOD).

  30. Жизненный цикл программного обеспечения. Фазы жизненного цикла, их характеристики и артефакты.

  31. Модели жизненного цикла разработки программного обеспечения. Сравнение моделей.

  32. Восходящее (снизу-вверх) и нисходящее (сверху-вниз) проектирование программного обеспечения. Достоинства и недостатки.

  33. Производительность труда программиста. Различия в программах опытного программиста и новичка по Ф. Бруксу.

  34. Распределение стоимости разработки программного обеспечения по технологическим стадиям создания.

  35. Язык UML. История создания. Область применения. Виды диаграмм UML для описания системы.

  36. Программирование на основе шаблонов (паттернов). Роль шаблонов проектирования в борьбе со сложностью программного обеспечения. Будущее шаблонов.

  37. Понятия связанности (Coupling) и зацепления (Cohesion) в сложных программных системах. Связанность и зацепление классов, модулей, компонентов.

  38. Понятие безопасного программного кода. Основы защищённого программирования.

  39. Оптимизация программного кода. Основные возможности оптимизации кода программистом и компилятором.

  40. Оформление программ: основные пункты.

  41. Процесс отладки программного обеспечения. Сложность отладки ПО. Методы поиска и устранения ошибок. Связь отладки с тестированием.

  42. Понятие качества программного обеспечения. Составляющие и критерии качества. Обеспечение качества как процесс, а не этап. Международный стандарт ISO 9000/9001.

  43. Задачи тестирования программного обеспечения. Тестирование как процесс, а не этап. Тестирование модулей, интерфейсов, сборки. Нисходящее и восходящее тестирование. Метирики тестирования и окончание тестирования.

  44. Основы тестирования программного обеспечения методом «чёрный ящик» (функциональное тестирование). Роль прецедентов в функциональном тестировании.

  45. Основы тестирования программного обеспечения методом «белый ящик» (структурное тестирование)

  46. Понятие надежности программного обеспечения. Различие между надежностью аппаратуры и программного обеспечения.

  47. Модели надёжности программного обеспечения. Сравнение моделей оценки надежности программного обеспечения. Перспективы построения «хороших» моделей оценки надежности программного обеспечения.

  48. Динамические модели надежности программного обеспечения (Шумана).

  49. Статические модели надежности программного обеспечения (Миллса).

  50. CASE - технологии (инструменты, системы, средства). Эволюция CASE - средств, их классификация, характеристики современных CASE - инструментов. Перспективы развития.

  51. Классификация средств разработки (CASE - инструментов).

  52. Технологический скачок в программировании. Признаки технологического скачка. Исторические факты технологических скачков.

  53. Основные нормы и принципы этики программирования.

  54. Хакерство как феномен. «За» и «против», вообще в мире и в России, в частности.