
- •Программирование
- •1.Функции и процедуры в языках программирования.Передача параметров по значению и по ссылке.
- •3. Переменные в языках программирования. Имя, тип и значение переменной. Область видимости и время жизни переменной.
- •4. Среда вводв/вывода в современных языках программирования. Текстовые и двоичные файлы. Чтение, запись и позиционирование файлов.
- •5. Рекурсивные функции и алгоритмы. Примеры рекурсивных алгоритмов и программ
- •6. Основные структуры данных – линейные, односвязные и двусвязные списки. Основные операции. Примеры использования.
- •7. Основные структуры данных – деревья, бинарные деревья. Основные операции Примеры использования
- •8. Основные структуры данных – стек, очередь. Операции над ними.
- •9. Основные принципы ооп. Инкапсуляция, полиморфизм, наследование.
- •10. Статические и виртуальные методы класса. Иерархические библиотеки классов.
- •Базы данных
- •Основные понятия баз данных. Роль и место систем управления базами данных (субд). Этапы развития субд.
- •Субд должна удовлетворять выявленным и вновь возникающим требованиям конечных пользователей.
- •Основные функции и возможности субд. Наиболее распространенные сегодня субд и области их использования.
- •Реляционная модель данных. Понятия таблица, ключ, кортеж, атрибут, домен. Фундаментальные свойства отношений.
- •Фундаментальные свойства отношений
- •Основы реляционной алгебры. Операторы реляционной алгебры. Нормализация отношений. Операторы реляционной алгебры
- •Классификация моделей данных. Модель «Объект – свойство – отношение». Проектирование схемы базы данных.
- •Обеспечение целостности данных. Архитектура и модели "клиент-сервер" в технологии бд.
- •Язык sql. Назначение и основные операторы языка sql. Представления.
- •Понятие транзакции и ее свойства. Операторы commit, rollback.
- •Операционные системы, среды и оболочки
- •Назначение и основные функции операционных систем. Основные понятия – процесс, файл, пользователь.
- •Классификация операционных систем. Наиболее важные современные ос, их области использования.
- •Файловые системы ос. Основные функции и требования к файловым системам.
- •Управление процессами в ос. Жизненный цикл процесса. Рождение процесса, состояние ожидания, выполнение, окончание процесса. Виртуальная память процесса.
- •5. Механизмы синхронизации и обмена информацией между процессами (ipc). Разделяемая память, семафоры, именованные и неименованные каналы.
- •Пользователи компьютера. Имена, пароли, права пользователей. Управление доступом к компьютеру.
- •Пользовательский интерфейс ос. Командная строка, графический пользовательский интерфейс (gui). Основные элементы gui – окно, меню, кнопки, списки и т.Д.
- •Поддержка сетевых технологий в ос. Сетевые операционные системы. Сетевые службы – экспортируемые файловые системы, электронная почта, www-серверы.
- •Безопасность и надежность операционных систем. Способы создания информационных систем высокой надежности.
- •«Проектирование информационных систем»
- •Жизненный цикл программного изделия – анализ требований, проектирование, программирование, тестирование, эксплуатация и сопровождение. Модели жизненного цикла.
- •Сущность структурного и объектно-ориентированного подходов к проектированию информационных систем.
- •Диаграммы потоков данных (dfd). Основные и вспомогательные объекты диаграмм. Построение функциональной модели в виде иерархии диаграмм потоков данных.
- •Диаграммы потоков данных (dfd)
- •Объекты диаграмм.
- •Диаграммы «сущность – связь» (erd). Типы отношений (один к одному, один ко многим, многие ко многим). Построение схемы базы данных на основе erd диаграмм.
- •Теория систем и системный анализ
- •Основные понятия, характеризующие строение и функционирование системы
- •Понятие общесистемных закономерностей.
- •Основные преимущества и принципы системного подхода.
- •Методика системного анализа
- •Качественные методы описания систем. Метод мозговой атаки или коллективной генерации идей. Метод экспертных оценок. Метод «Дельфи».
- •Кибернетический подход к описанию систем.
- •Особенности анализа и синтеза технических систем.
- •Особенности анализа и синтеза эргатических систем.
- •Особенности анализа и синтеза организационных систем.
- •Основы теории управления
- •Понятие об управляемой системе. Примеры управляемых систем.
- •Функции управления.
- •Управление в технических системах. Задачи стабилизации и слежения.
- •Управление в человеко-машинных системах. Понятие о человеческом факторе.
- •Понятие об оптимальном управлении. Показатели и критерии управления.
Обеспечение целостности данных. Архитектура и модели "клиент-сервер" в технологии бд.
Целостность (от англ. integrity – нетронутость, неприкосновенность, сохранность, целостность) – понимается как правильность (корректность, правдоподобность, однозначность, непротиворечивость) данных в любой момент времени.
Для того чтобы гарантировать корректность и взаимную непротиворечивость данных, на базу данных накладываются некоторые ограничения, которые называют ограничениями целостности (data integrity constraints).
Поддержание целостности базы данных может рассматриваться как защита данных от неверных изменений или разрушений. Современные СУБД имеют ряд средств для обеспечения поддержания целостности (так же, как и средств обеспечения поддержания безопасности).
Выделяют четыре вида целостности:
целостность по сущностям (декларативная целостность);
целостность по ссылкам (ссылочная целостность – referential integrity);
целостность, определяемая пользователем (семантическая целостность);
физическая целостность (целостность файлов операционной системы).
Декларативная целостность – целостность по сущностям. Ограничения целостности, необходимые для обеспечения декларативной целостности обычно задаются при объявлении (декларировании, от слова declaration – «объявление») сущности в базе данных.
Для обеспечения декларативной целостности базы данных используются следующие механизмы:
тип данных;
размер типа данных;
опция NOT NULL;
домен;
первичный ключ;
уникальный ключ.
Тип данных – характеристика, задающая перечень всевозможных значений атрибута. В любых СУБД, так или иначе, реализованы такие типы данных, как целочисленный, символьный, дата/время и логический. При помощи этой характеристики задаются достаточно широкие диапазоны, которые затем можно ограничить (сузить) при помощи домена.
Размер типа данных – ограничение перечня возможных значений атрибута, заданного типом данных. Например, для типа данных СТРОКА всегда указывают максимально количество символов, которое может содержать в строке. Для типа данных ЦЕЛОЕ ЧИСЛО указывают либо максимальное количество цифр, которое может содержать в числе, либо максимальный объем памяти в байтах, которое может занимать число.
Опция NOT NULL – назначается атрибуту в том случае, если нужно, чтобы тот не мог содержать неопределенное значение.
Домен – это, также как и тип данных, характеристика, задающая перечень всевозможных значений атрибута, но, как правило, этот перечень более «узкий». Например, если атрибут ВОЗРАСТ имеет тип данных ЦЕЛОЕ ЧИСЛО, который задает диапазон от –32768 до 32767, то при попытке записать в этот атрибут отрицательное число, СУБД успешно выполнит данную команду. При помощи домена можно наложить ограничение, например, (ВОЗРАСТ > 0 И ВОЗРАСТ < 100), которое не позволит для атрибута ВОЗРАСТ использовать значения, выходящие за указанный диапазон.
Первичный Ключ – это минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности. Минимальность означает, что исключение из набора любого атрибута не позволяет идентифицировать сущность по оставшимся атрибутам. При выборе первичного ключа следует отдавать предпочтение несоставным ключам или ключам, составленным из минимального числа атрибутов. Нецелесообразно также использовать ключи с длинными текстовыми значениями (предпочтительнее использовать целочисленные атрибуты). Так, для идентификации студента можно использовать либо уникальный номер зачетной книжки, либо набор из фамилии. Не допускается, чтобы первичный ключ стержневой сущности (любой атрибут, участвующий в первичном ключе) принимал неопределенное значение (NULL). Иначе возникнет противоречивая ситуация: появится не обладающий индивидуальностью, и, следовательно не существующий экземпляр стержневой сущности. По тем же причинам необходимо обеспечить уникальность первичного ключа.
Уникальный ключ – ограничение целостности, накладываемое на набор атрибутов, и не допускающее повторение значений в указанных атрибутах. В отличие от первичного ключа, можно задать несколько уникальных ключей для одной сущности. Кроме того, уникальный ключ не требует отсутствия неопределенных значений в используемых атрибутах.
Ссылочная целостность – целостность по ссылкам. Данный вид целостности необходимо обеспечивать, когда данные, находящиеся в нескольких таблицах, связаны между собой и зависят друг от друга (ассоциации и обозначения). Для обеспечения ссылочной целостности базы данных используют внешние (или вторичные) ключи.
Внешний ключ – это набор атрибутов зависимой сущности, по значениям которых можно идентифицировать сущность, с которой она связана. Иными словами, значения атрибутов, входящих в состав внешнего ключа, выбираются из значений атрибутов, составляющий первичный ключ той сущности, на которую ссылается зависимая сущность. В общем случае значения атрибутов, составляющих внешний ключ, могут иметь неопределенные значения (NULL), но если это невозможно по смыслу реализуемой задачи, можно на эти атрибуты наложить дополнительные ограничения целостности, запрещающие использование неопределенных значений.
При указании внешнего ключа, связывающего две сущности, необходимо также определить необходимость выполнения так называемых каскадных действий. Каскадные действия – операции, выполняемые СУБД автоматически (неявно) при возникновении того или иного события, вызванного чаще всего действиями пользователей.
В частности, необходимо определить, что случиться при попытке удаления целевой сущности, на которую ссылается внешний ключ? Например, при удалении поставщика, который осуществил, по крайней мере, одну поставку. Существует три возможности:
• Каскадирование: операция удаления «каскадируется» с тем, чтобы удалить также поставки этого поставщика.
• Ограничение: удаляются лишь те поставщики, которые еще не осуществляли поставок. Иначе операция удаления отвергается.
• Установка: для всех поставок удаляемого поставщика внешний ключ устанавливается в неопределенное значение, а затем этот поставщик удаляется. Такая возможность, конечно, неприменима, если данный внешний ключ не должен содержать NULL-значений.
Кроме этого, определяется что должно происходить при попытке обновления первичного ключа целевой сущности, на которую ссылается некоторый внешний ключ? Например, может быть предпринята попытка обновить номер поставщика, для которого имеется, по крайней мере, одна соответствующая поставка. Имеются те же три возможности, как и при удалении:
• Каскадирование: операция обновления «каскадируется» с тем, чтобы обновить также и внешний ключ в поставках этого поставщика.
• Ограничение: обновляются первичные ключи лишь тех поставщиков, которые еще не осуществляли поставок. Иначе операция обновления отвергается.
• Установка: для всех поставок такого поставщика внешний ключ устанавливается в неопределенное значение, а затем обновляется первичный ключ поставщика. Такая возможность, конечно, неприменима, если данный внешний ключ не должен содержать NULL-значений.
Архитектура и модели "клиент-сервер" в технологии БД.
Вычислительная модель «клиент-сервер» исходно связана с парадигмой открытых систем, которая появилась в 90-х годах и быстро эволюционировала. Сам термин «клиент-сервер» исходно применялся к архитектуре программного обеспечения, которое описывало распределение процесса выполнения по принципу взаимодействия двух программных процессов, один из которых в этой модели называли «клиентом», а другой – «сервером». Клиентский процесс запрашивал некоторые услуги, а серверный процесс обеспечивал их выполнение. При этом предполагалось, что один серверный процесс может обслужить множество клиентских процессов.
Основной принцип технологии «клиент-сервер» применительно к технологии баз данных заключается в разделении функций стандартного интерактивного приложения на три части:
Представление (Presentation Logic).
Обработка (Business Logic).
Хранение (Data manipulation Logic) и данные (Data).
Презентационная логика (Presentation Logic) - это интерфейс приложения. Сюда относятся все интерфейсные экранные формы, которые пользователь видит или заполняет в ходе работы приложения (для веб-приложений – это HTML-страницы, загружаемые при помощи браузера на компьютер пользователя). К этой же части относится все то, что выводится пользователю на экран как результаты выполнения запрошенных действий.
Основными задачами презентационной логики являются:
формирование экранных изображений;
чтение и запись в экранные формы информации;
управление экраном, движением мыши, клавиатуры.
Бизнес-логика (Business Logic) – это исполняемая часть приложения, которая определяет алгоритмы решения конкретных задач приложения.
Эта часть приложения может находиться как на клиентском компьютере, так и на сервере.
Логика обработки данных (Data manipulation Logic) и данные (Data) – это часть функций приложения, которая чаще всего возложена на сервер. Это собственно данные, составляющие базу данных, и функции по управлению хранением данных на сервере.
В зависимости от распределения описанных выше трех функций между клиентом и сервером различают четыре модели «клиент-сервер» в технологии баз данных.
В модели файлового сервера (File Server, FS) презентационная логика и бизнес-логика располагаются на клиенте. На сервере располагаются файлы с данными, и поддерживается доступ к файлам. Клиент обращается к серверу с файловыми командами, а механизм управления всеми информационными ресурсами, собственно база метаданных, находится на клиенте.
Единственным достоинством этой модели можно считать факт разделения функций между клиентом и сервером и возможность доступа к файлам, хранящимся на сервере одновременно многим пользователям.
К недостаткам модели можно отнести:
высокий сетевой трафик (пересылаются файлы целиком, даже полезной в нем является всего одна строка);
узкий спектр операций манипулирования с данными, который определяется файловыми командами;
отсутствие средств безопасности доступа к данным (только на уровне файловой системы).
Модель удаленного доступа к данным
Отличием модели удаленного доступа к данным (Remote Data Access, RDA) (рис. 6) от модели файлового сервера является то, что ядро СУБД теперь расположено на сервере. Презентационная логика и бизнес-логика по-прежнему расположены на стороне клиента.
Достоинством данной модели можно считать значительное сокращение сетевого трафика, так как по сети передаются не запросы на ввод-вывод в файловой терминологии, а запросы на языке SQL. Иными словами, вместо файлов по сети передается только полезная информация, определенная пользователем при помощи языка структурированных запросов (Structured Query Language, SQL), которая выделяется из файлов на уже стороне сервера самой СУБД.
Недостатки:
высокий сетевой трафик (несмотря на значительно сокращение сетевого трафика, по сравнению с модель файлового сервера, все-таки запросы на языке SQL при интенсивной работе клиентских приложений могут существенно загрузить сеть);
дублирование кода приложений (запросы на получение одних и тех же данных присутствуют в виде копий в различных приложениях);
пассивный сервер.
Модель сервера баз данных (Database Server, DBS) поддерживается большинством современных СУБД: Informix, Ingres, Sybase, Oracle, MS SQL Server. Основу данной модели составляет механизм хранимых процедур как средство программирования SQL-сервера, механизм триггеров как механизм отслеживания текущего состояния информационного хранилища и механизм ограничений на пользовательские типы данных, который иногда называется механизмом поддержки доменной структуры.
В этой модели бизнес-логика разделена между клиентом и сервером. На сервере бизнес-логика реализована в виде хранимых процедур – специальных программных модулей, которые хранятся в БД и управляются непосредственно СУБД. Клиентское приложение обращается к серверу с командой запуска хранимой процедуры, а сервер выполняет эту процедуру и регистрирует все изменения в БД, которые в ней предусмотрены. Сервер возвращает клиенту данные, релевантные его запросу, которые требуются клиенту либо для вывода на экран либо для выполнения части бизнес-логики, которая расположена на клиенте. Трафик обмена информацией между клиентом и сервером резко уменьшается.
В данной модели сервер является активным, потому что не только клиент, но и сам сервер, используя механизм триггеров, может быть инициатором обработки данных в БД.
И хранимые процедуры, и триггеры хранятся в словаре БД, они могут быть использованы несколькими клиентами, что существенно уменьшает дублирование алгоритмов обработки данных в разных клиентских приложениях.
Недостатком данной модели является очень большая загрузка сервера, поскольку на него перекладывается большая часть бизнес-логики, предназначенной для обработки данных. Однако это же одновременно является и плюсом, поскольку теперь требования к клиентам резко уменьшаются. Иногда такую модель называют моделью с «тонким» клиентом. При построении приложений в модели сервера баз данных значительно упрощается организация обновления версий клиентских приложений, поскольку при обновлении приложения на стороне сервера, обновление части приложения на стороне клиента иногда даже не требуется. Кроме того, при использовании модели сервера баз данных увеличивается надежность и защищенность создаваемых приложений.
Для разгрузки модели была предложена трехуровневая модель – модель сервера приложений.
Модель сервера приложений (Application Server, AS) является расширением двухуровневой модели и в ней вводится дополнительный промежуточный уровень между клиентом и сервером. Этот промежуточный уровень содержит один или несколько серверов приложений.
Здесь в наибольшей степени выражен принцип разделения функций, поскольку каждая из трех функций расположена теперь на отдельных компьютерах: презентационная логика находится на клиенте, базнес-логика реализована на серверах приложений, а данные хранятся на сервере баз данных.
Нужно отметить, что эта модель обладает большей гибкостью, чем двухуровневые модели. Наиболее заметны преимущества модели сервера приложений в тех случаях, когда клиенты выполняются сложные аналитические расчеты над базой данных, которые относятся в области OLAP-приложений (On-line analytical processing). В этой модели большая часть бизнес-логики клиента изолирована от возможностей расширенного SQL, реализованного в конкретной СУБД, и может быть выполнена на стандартных языках программирования, таких как C, C++, Object Pascal, Java. Это повышает переносимость системы, ее масштабируемость.