Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бИЛЕТЫ_GOSam.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆

3)Основные этапы проектирования баз данных.

В основу проектирования БД должны быть положены представления конечных пользователей конкретной организации — концептуальные требования к системе.

При рассмотрении требований конечных польз-й необходимо:

  1. БД должна удовлетворять актуальным инф-м потребностям организации. Получаемая информация должна по структуре и содержанию соответствовать решаемым задачам.

  2. БД должна обеспечивать получение требуемых данных за приемлемое время, то есть отвечать заданным требованиям производительности.

  3. База данных должна удовлетворять выявленным и вновь возникающим требованиям конечных пользователей.

  4. БД должна легко расшир-я при реорганизации и расширении предм-ой области.

  5. БД должна легко изменяться при изменении программной и аппаратной среды.

  6. Загруженные в базу данных корректные данные должны оставаться корректными.

  7. Данные до включения в базу данных должны проверяться на достоверность.

  8. Доступ к данным, размещаемым в базе данных, должны иметь только лица с соответствующими полномочиями.

В результате анализа поставленной заказчиком задачи и обработки требований конечных пользователей составляется концептуальная модель.

При разработке логической модели базы данных необходимо решить, какая модель данных наиболее подходит для отображения конкретной концептуальной модели предметной области. Коммерческие системы управления БД поддерживают одну из известных моделей данных или некоторую их комбинацию. Почти что все популярные системы для персональных компьютеров поддерживают реляционную модель данных.

Каждый прямоугольник концептуальной модели отобр-я в одно отношение, которое отражает предст-е польз-я в удобном для него таб формате. Простота отобр-я связана с тем, что при разработке концептуальной модели использ-я реляционный подход.

Полотно 215

4)Основные показатели надёжности программного обеспечения

1. Вероятность безотказной работы P(tз) – это вероятность того, что в пределах заданной наработки отказ системы не возникает.

2. Вероятность отказа – вероятность того, что в пределах заданной наработки отказ системы возникает.

Это показатель, обратный предыдущему.

Q(tз) =1 – P(t з) где tз – заданная наработка, ч.; Q(tз) – вероятность отказа.

3. Интенсивность отказов системы – это условная плотность вероятности возникновения отказа ПИ в определенный момент времени при условии, что до этого времени отказ не возник.

4. Средняя наработка на отказ Тi - математическое ожидание времени работы ПИ до очередного отказа:

5. Среднее время восстановления T - математическое ожидание времени восстановления работоспособности.

где ti — время восстановления i-го объекта;

n — число объектов, подлежащих восстановлению.

6. Коэффициент готовности K - вероятность того, что ПИ ожидается в работоспособном состоянии в произвольный момент времени его использования по назначению:

где - суммарное время исправной работы изделия; - суммарное время вынужденного простоя.

7. Все приведенные показатели надежности ПО характеризуют наличие ошибок программы (производственных дефектов), но ни один из них не характеризует характер этих ошибок и возможные их последствия. Поэтому предлагается ввести новый показатель надежности ПО – средняя тяжесть ошибок (СТО):

B=1/Q СУММ(bi*pi*zi)

где Q – вероятность сбоя ПО;

СУММ – оператор суммирования по переменной i;

bi – функция принадлежности тяжести последствий ошибки, возникшей при i-ом наборе входных данных, к максимально тяжелым последствиям;

pi – вероятность ввода i-го набора входных данных при эксплуатации ПО;

zi – дихотомическая переменная, равная 1, если при i-ом наборе входных данных был зафиксирован сбой, и 0 в противном случае;

m – общее число наборов входных данных.

Билет №3.

1) Способы создания и разрушения объектов. Конструкторы и деструкторы, их виды и порядок вызова. Примеры на языке С++.

В процессе создания и удаления объектов в программе обязательно участвуют особые методы класса – конструктор и деструктор, назначение которых интуитивно понятно.

Конструктор – выделяет память для объекта и инициализирует данные-члены класса.

  • имя конструктора совпадает с именем класса;

  • конструктор не имеет возвращаемого значения (даже void);

  • классу без конструктора предоставляется конструктор по умолчанию;

  • при явно описанном конструкторе конструктор по умолчанию не генерируется;

  • конструкторы могут быть перегружены;

  • не могут быть описаны с ключевыми словами virtual, static, const, mutable, volatile;

  • не могут явно вызываться в программе;

  • частным случаем конструктора является конструктор копирования, у которого в аргументах передается ссылка на другой объект того же класса.

Деструктор – вызывается автоматически при разрушении объекта, его задача - освободить память и корректно уничтожить объект.

  • имя деструктора также совпадает с именем класса но предваряется символом тильда "~" (~имя_класса);

  • деструктор не имеет ни какого возвращаемого значения;

  • не может быть описан как static, const, mutable, volatile;

  • без явного задания генерируется деструктор по умолчанию;

  • могут быть описаны как virtual - у всех производных классов деструкторы автоматически будут виртуальными;

  • могут явно вызываться.

Объявление конструктора: ComplexType(); Определение пустого конструктора:

ComplexType() {}

В классе может быть объявлено (и определено) несколько конструкторов. Их объявления должны различаться списками параметров. Такие конструкторы по аналогии с функциями называются перегруженными (или совместно используемыми). Транслятор различает перегруженные конструкторы по спискам параметров. В этом смысле конструктор не отличается от обычной функции-члена класса:

ComplexType(double rePar, double imPar); /* Объявление… */

ComplexType(double rePar, double imPar) { /*…*/ }

Конструктор вызывается не для объекта класса, как другие функции-члены, а для области памяти. Для её преобразования ("превращения") в объект класса.

Конструктор копирования (пример):

class demo { char *p; public: demo(void) { p="NULL"; } demo(char* s){ p=s; }

demo(demo& demo_o){ p=o.p; } void out(void){ puts(p); }}

void main(){ demo a("Ok"), b(a); a.out(); b.out();}

В C++ конструктор копирования является единственным средством создания копий объекта. Конструктор копирования - обязательный элемент любого класса. Он также может быть переопределён подобно конструктору умолчания. Спецификатор const (конструктор копирования работает с адресом объекта) предохраняет объект-параметр от случайной модификации в теле конструктора.

Операторы new и delete предназначены для динамического распределения памяти и могут использоваться в С++ - программах вместо функций malloc() и free().

Оператор new имеет два допустимых формата вызова:

[::] new [список_аргументов] тип [инициализатор]

[::] new [список_аргументов] (тип) [инициализатор]

Тип - это тип данных, для которых необходимо зарезервировать память.

Инициализатор - значение, используемое для инициализации данных в памяти.

Для удаления элементов классов вызывается деструктор. В некоторых реализациях языка вызов оператора delete для несуществующего или пустого указателя приводит к возникновению исключения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]