
- •Перечень контрольных вопросов по дисциплине «Системное программирование»
- •Понятие системного программного продукта.
- •Стадии разработки программного обеспечения.
- •Технология инкрементального программирования.
- •Понятие объекта: состояние, поведение, методы. Понятие класса и идентичность объектов.
- •Принципы объектной модели
- •Проблема создания и уничтожения объектов
- •Понятие ссылки. Операции над ссылками и способы применения ссылок.
- •Статические и постоянные члены класса. Встраиваемые методы.
- •Дружественные функции.
- •Иерархические отношения между классами: композиция.
- •Иерархические отношения между классами: наследование.
- •Виртуальные методы и позднее связывание.
- •Понятие абстрактного класса.
- •Использование потокового ввода-вывода.
- •Порождаемые функции в обобщённом программировании.
- •Порождаемые классы в обобщённом программировании.
- •Использование основных контейнеров стандартной библиотеки.
- •Классы функциональных объектов: создание и применение.
- •Использование алгоритмов стандартной библиотеки операционной системы, ее назначение и функции.
- •Операционная система, ее назначение и функции
- •Утилиты операционной системы gnu/Linux
- •Понятие файла. Виртуальная файловая система gnu/Linux
- •Разграничение доступа к файлам. Доступ к устройствам
- •Организация взаимодействия пользователя с системой
- •Организация ввода-вывода системного уровня
- •Концепция процесса. Состояние процесса и диаграмма смены состояний процесса
- •Операции над процессами. Разграничение доступа процессов к ресурсам системы.
- •Планирование процессов. Политики планирования
- •Сигналы и их использование для управления процессами
- •Понятие потока выполнения. Сравнительный анализ потоков и процессов.
- •Асинхронные параллельные потоки. Проблематика разработки многопоточных приложений.
- •Задача «разделение доступа к ресурсу». Способы ее решения.
- •Задача «синхронизация по готовности данных». Способы ее решения.
- •Системные средства синхронизации потоков.
- •1.Решение задачи «разделение доступа к ресурсу».
- •2.Способы обеспечения атомарности операций
- •3.Обеспечение взаимоисключения потоков через мьютексы.
- •4.Решение задачи «синхронизация по готовности данных»
- •Мониторы Хоара. Пример проектирования монитора «склад» для задачи «производитель-потребитель».
- •Проектирование и модели многопоточных приложений.
- •Иерархия памяти. Виртуальная память: концепция и инструменты.
- •Взаимодействие процессов: проблематика и средства.
- •Модули ядра Linux.
semi, 2010г
Перечень контрольных вопросов по дисциплине «Системное программирование»
Понятие системного программного продукта.
Современные задачи и их сложность. Один разработчик не в состоянии охватить все аспекты такой программы. Простая программа и её назначение: пригодна для запуска автором и его знакомыми на той же системе, где была разработана.
Программа → программный продукт. Требования к программному продукту (ПП): обобщённый стиль, надёжность, документация, сопровождение.
Программа → программный комплекс. Требования к программному комплексу (ПК): набор взаимодействующих программ (компонент), согласование по функциям и по форматам данных, системное тестирование.
Системный программный продукт – комплекс взаимодействующих программ, надлежащим образом написанный, протестированный и задокументированный с обеспечением сопровождения в процессе его применения пользователями.
Системное программирование – процесс разработки сложных программных систем в целом или их отдельных компонент.
Стадии разработки программного обеспечения.
Типичная ошибка: после получения задания немедленное написание кода. Правильно для маленькой программы и недопустимо для большой системы.
Этапы: постановка задачи, анализ требований и исследование проблемы, проектирование, написание и тестирование компонент, системное тестирование, документирование и сопровождение.
Технология инкрементального программирования.
Программа наращивается путём пошаговой разработки.
Этап №1: заставить выполняться (пустая программа).
Этап №2: создание каркаса системы, реализующего схему работы системы на самом верхнем уровне. Используются функции-заглушки (фиктивные подпрограммы) и определяются необходимые переменные.
Этап №3,4,...: обрастание системы «мясом». Реализация заглушек, возможно с использованием других заглушек и дополнительных временных переменных. Последовательное добавление новой функциональности (наращивание каркаса).
Понятие объекта: состояние, поведение, методы. Понятие класса и идентичность объектов.
Объекты это элементы проблемной области и их представление в области реализации. ООП описывает проблему в терминах самой проблемы, а не компьютера. Объект – нечто, обладающее состоянием, поведением и индивидуальностью. Объект может иметь имя.
Состояние объекта характеризуется перечнем (обычно статическим) всех свойств объекта и текущими (обычно динамическими) значениями каждого из этих свойств.
Поведение – это то, как объект действует и реагирует, поведение выражается в терминах состояния объекта и передачи сообщений.
Метод – функция, принадлежащая классу или объекту
Класс – разновидного абстрактного типа данных.
Принципы объектной модели
Абстракция — это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Это позволяет работать с объектами, не вдаваясь в особенности их реализации.
Инкапсуляция — это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейсную часть класса и не вникать в его внутреннюю реализацию. Поэтому данные принято инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.
Модульность — принцип, согласно которому программное средство (ПС, программа, библиотека, web-приложение и др.) разделяется на отдельные именованные сущности, называемые модулями. Модульность часто является средством упрощения задачи проектирования ПС и распределения процесса разработки ПС между группами разработчиков. При разбиении ПС на модули для каждого модуля указывается реализуемая им функциональность, а также связи с другими модулями.
Роль модулей могут играть структуры данных, библиотеки функций, классы, сервисы и др. программные единицы, реализующие некоторую функциональность и предоставляющие интерфейс к ней.
Иерархия:
Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (прародителя, иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Набор классов, связанных отношением наследования, называют иерархией. Наследование призвано отобразить такое свойство реального мира, как иерархичность.
Полиморфизмом называют явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм бывает статический и динамический