Після знаходження безвідмовної роботи блоків, знаходимо 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Після знаходження безвідмовної роботи блоків, знаходимо



КОНТРОЛЬНІ РОБОТИ № 1, 2, 3

 

„Надійність, контроль, діагностика, експлуатація ЕОМ”

 

 

 

Виконав:

Ст. гр. КІ-14-СКЗ

Резенко Марк Станіславович

Дата: 22.02.2016

 

Підпис:________________

 

 

Перевірила: викладач

Смірнова Наталія Володимирівна

 

Дата: ­­______________

 

Підпис: ______________

 

Кіровоград, 2016

Контрольна робота № 1

 

Тема: Діагностування ОЗП методом запису - читання вперед і назад та кроковим методом

Ціль роботи

Отримати навички по діагностики ОЗП з використанням тесту.

Завдання:

Виділити область ОЗП 32 кбайта пам'яті, у програмі і провести її тестування використовуючи навички програмування написати програму тестування області ОЗП у відповідності з варіантом.

 

Проаналізувавши методичні рекомендації до контрольної роботи, можу додати наступне, що, необхідно написати ПЗ, яке буде змінювати нулі на одиниці, при цьому можливе використання матриці, нагадаю для само перевірки, що матриця має рядки та стовпці, кожний стовпець відповідає рядку, кожний рядок стовпцю, матриці можливо як додавати так віднімати, множити, використовувати закони Гауса, і т.д.

Використаю мову програмування яка використовувалась в лабораторних роботах «PASCAL», це моя з найпершим мов яку я почав вивчати ще в Кіровоградському Кооперативному коледжі економіки і права імені М.П.Сая, на даному етапі в Кіровоградському технічному університеті, я закріпив знання з цього предмету (мови високого рівня). Перейдемо безпосередньо до виконання завдання!.

Безпосередньо завдання контрольної роботи передбачає покрокове тестування програмного модулю, виведу процедуру яка підраховує нулі та одиниці використаю замість процедури функцію для зчитування одиниць:

Function Count(x: Integer): Integer;

Процедура буде в моїй програмі одна, і повторюватись не буде а лише цикл буде закручений і мати умову. Далі використаємо умову «if», для підрахунку остачі від ділення а саме:

If x mod 2=1 Then Inc(c);

x:=x div 2;

Таким чином ми звертаємось до одиниць, в моєму випадку це кількість одиниць двійкового запису чисел, реалізую програмно і продемонструю на рисунку 1.1:

Program Rezenko_mark_ki_14_skz;

Type

arr = Array [1..100] of Integer;

Function Count(x: Integer): Integer;

var c: Integer;

begin

c:=0;

While x>0 do

begin

If x mod 2=1 Then Inc(c);

x:=x div 2;

end;

Count:=c;

end;

 

Var

i, n: Integer;

mas: ^arr;

 

BEGIN

Write('Введідть будь-ласка кількість елементів: ');

ReadLn(n);

GetMem(mas,SizeOf(Integer)*n);

for i:= 1 to n do begin

Write('[', i, '] = ');

ReadLn(mas^[i]);

WriteLn('Кількість одиниць в двійковому записі числа', mas^[i], ': ', Count(mas^[i]));

end;

FreeMem(mas);

END.

Рисунок 1.1 – Результат підрахунку одиниць

Продовжую тестування програми, на цей раз опираючись на методичні рекомендації, по «Стовпці і рядки матриці пам'яті», спробую створити матрицю і на створення процедури вона буде повторюватись2 рази і 3 рази функція:

 

procedure Vvod (c: char;var z: mas); - відповідає за введення стовпців і рядків матриці і звернення її до памятті.

 

procedure Print (c: char; z: mas); - відповідає за виведення даних на екран, виводу дійсних чисел, і масва матриці.

 

А також три функції, нагадаю функції також використовуються для оптимізації програмного коду.

 

function IsAllNull (ns: byte; z: mas): boolean;

function CountStr(z: mas): byte;

function Max(x,y: byte): integer;

Реалізую програмно

Program kontr_1_rezenko_ki_14_skz;

uses crt;

const n=5;

type mas=array [1..n,1..n] of integer;

var a,b,c: mas; m: integer;

 

procedure Vvod (c: char;var z: mas);

var i,j: byte;

begin

writeln('Введіть елементи матриці ',c);

for i:=1 to n do

for j:=1 to n do

begin

write(c,'[',i,',',j,']=');

readln(z[i,j]);

end;

end;

 

procedure Print (c: char; z: mas);

var i,j: byte;

begin

writeln('Матриц9 ',c);

for i:=1 to n do

begin

for j:=1 to n do

write(z[i,j]:3);

writeln;

end;

end;

 

function IsAllNull (ns: byte; z: mas): boolean;

var j: byte; b: boolean;

begin

b:=true;

for j:=1 to n do

if z[ns,j]<>0 then b:=false;

IsAllNull:=b;

end;

 

function CountStr(z: mas): byte;

var i,k: byte;

begin

k:=0;

for i:=1 to n do

if IsAllNull(i,z) then inc(k);

CountStr:=k;

end;

 

function Max(x,y: byte): integer;

begin

if x>y then Max:=x else Max:=y;

end;

 

begin

Vvod ('A',a);

Vvod ('B',b);

Vvod ('C',c);

writeln('Кількість нульових рядків в матриці А ',CountStr(a));

writeln('Кількість нульових рядків в матриці В ',CountStr(b));

writeln('Кількість нульових рядків в матриці С ',CountStr(c));

m:=Max(CountStr(a),Max(CountStr(b),CountStr(c)));

writeln('Максимальа кількість нульових рядків = ',m);

if CountStr(a)=m then Print ('A',a);

if CountStr(b)=m then Print ('B',b);

if CountStr(c)=m then Print ('C',c);

readln;

end.

Рисунок 1.2 – Введення рядків і стовпців матриці

 

Рисунок 1.3 – Результат тестування 0 матриці в памятті

Висновки: Завдання виконано в повному обсязі покрокове тестування передбачає, тестування кожного окремого програмного модулю, в моєму випадку використовувались функції та процедури, за допомогою яких я опирався на методичні рекомендації до контрольної роботи. Тестування виконувалось за допомогою одиниць і нулів, спочатку реалізовано одиниці, далі в наступній програмі нулі.

 

Контрольні питання:

 

1. Як здійснюється перевірка ОЗП методом читання вперед і назад?

По всіх адресахОЗП записуються нулі, потім проводиться послідовне зчитування і перевірка цієї інформації.

2. Які основні переваги методу читання вперед і назад?

Швидкий пошук зі старшої адреси до молодшої.

3. Які недоліки методу читання вперед і назад?

не дозволяє здійснювати читання і запис одночасно

4. Які зміни і доповнення потрібно внести в метод перевірки читання вперед і назад для поліпшення якості тестування ОЗП?

Швидкодію.

5. Як здійснюється перевірка ОЗП методом кроку?

Метод покрокового тестування передбачає, що модулі тестуються не ізольовано один від одного, а підключаються по черзі для виконання тесту до набору які вже раніше протестували модулі. Покроковий процес триває до тих пір, поки до набору протестованих модулів не буде підключений останній модуль.

6. Які основні переваги методу кроку?

рання перевірка основних проектних рішень і сполучення модулів, а також багаторазове тестування сполучення модулів в контексті розроблюваного програмного забезпечення.

7. Які недоліки методу кроку?

труднощі всебічного тестування викликаючого модуля, є наслідком того, що модуль отримує вхідні дані не безпосередньо, а через викликаючий модуль.


Контрольна робота № 2

 

 

Тема: Діагностування ОЗП методом пінг – понг та галопуючим методом

Ціль роботи

Одержати навички по діагностики ОЗП з використанням тесту.

Завдання:

Виділити область ОЗП 32 кбайта пам'яті, у програмі і провести її тестування використовуючи навички програмування написати програму тестування області ОЗП у відповідності з варіантом.

 

 

Згідно до завдання контрольної роботи необхідно виконати тестування методом «ГАЛАПУЮЧИМ», для даного варіанту рішення використаю програму на мові asm-86, знову ж таки опираючись на знання предмета «asm-86», створю програму для підрахунку кількості нулів та одиниць в памятті, асемблер допомагає працювати з пам’яттю, мова (низького рівня), програмний код асемблера дуже важко оптимізувати, він підходить більше для даної контрольної роботи, оскільки тестування галопуюче не передбачає оптимізацію і швидкодію програмного коду. Далі буде створена програма з коментарями, тому як цей метод передбачає розпис всіх компонентів системи:

.model small; Модель памяті.stack 1000h; Встановлення розміру стеку.data; Початок сегменту даних програми;<опис змінних> message2 db "result:",13,10,"$"message3 db "k-st nuliv:",13,10,"$"message4 db "k-st odunuz:",13,10,"$"mes3 db 10,13,"$"result dw 123kol_odin dw 0kol_nol dw 0 .code; Початок сегменту коду start:mov ax,@DATA; Пересилаємо адресу сегменту даних в реєстр AX mov ds,ax; Встановлення регістру DS на сегмент даних podschet:mov bx, 32768xor ax,axmov ax, resultand ax, bxcmp ax, 1 je odin jmp podschet2 podschet2:test bx, bx jz vivodshr bx, 1mov ax, resultand ax, bxcmp ax, 1 je odincmp kol_odin,0 jne nol jmp podschet2; odin:add kol_odin,1 jmp podschet2; nol:add kol_nol,1 jmp podschet2; vivod:mov ah,09h; DOS функція введення рядка на екран mov dx, offset message3; Створюємо зміщення до початку рядка int 21h; Виводимо рядок mov ax,kol_nol ;Число яке буде в реєстрі AX push -1 ;Зберігаємо кінець числа mov cx,10 ;Ділимо на 10 l: xor dx,dx div cx ;Ділим0 push dx ;Зберігаємо цифру cmp ax,0 ;Залишився 0? jne l ;ні -> продовжуємо mov ah,02hl2: pop dx ;Відтворення цифри cmp dx,-1 ;Доходимо до кінця -> вихід je exadd dl, 48int 21h jmp l2 ;І продовжуємо ex:mov ah,09h; DOS функція виведення рядка на екран mov dx, offset message4; Створюємо зміщенн9 до початку рядка int 21h; Виводимо рядок mov ax,kol_odin ;виводимо число в регістрі AX push -1 ;Зберігаємо кінець числа mov cx,10 ;Ділимо на 10 vt: xor dx,dx div cx ;Ділимо push dx ;Зберігаємо цифру cmp ax,0 ;залишився 0? jne vt ;ні -> продовжити mov ah,02hvvv: pop dx cmp dx,-1 je closeadd dl, 48int 21h jmp vvv ;Продовжуємо роботу close:mov ax,4C00h int 21h; Вихід з програми end start

Як можна побачити на виконаній мною програмі, були додані дані до сегменту стеку, і виявлені нулі.

Наступний крок виконаю програму на мові паскаль, щоб було з чим порівнювати. Для прикладу тестуванн9 будемо використовувати факторіал, який буде звертатися до памятті і підраховувати кількість нулів діапазон факторіалу «500».

PROGRAM KONTR2_REZENKO_MARK;

const

cS = 10000;

 

type

TSar = array [1..cS] of string;

 

var

N,d,m: integer;

Sar: TSar;

ans: longint;

 

procedure Mult(var Sar: TSar; n: integer);

var

p, k, c, m: integer;

begin

p:= 0;

m:= cS;

repeat

for k:= Length(Sar[m]) downto 1 do

begin

c:= (ord(Sar[m][k]) - ord('0')) * n + p;

p:= c div 10;

Sar[m][k]:= char(ord('0') + (c mod 10));

end;

if Sar[m - 1] <> '' then dec(m) else break;

until false;

while p <> 0 do

begin

if (m > 1) and (length(Sar[m]) >= 50) then dec(m);

Sar[m]:= char(ord('0') + (p mod 10)) + Sar[m];

p:= p div 10;

end;

end;

begin

Readln(N);

case N of

1: Sar[cS]:= '0';

0: Sar[cS]:= '1';

else begin

Sar[cS]:= '1'; //шукаємо факторіал

for N:= 1 to N do Mult(Sar, N);

end;

end;

m:=1;

while Sar[m]='' do inc(m);

for m:=m to cS do for d:=1 to length(Sar[m]) do if Sar[m][d] = '0' then inc(ans); //перевіряємо скільки 0

Writeln('відповідь: ',ans);

end.

Рисунок 2.1 – Результат тестування і пошуку нулів факторіалу

Висновки: Опановано практичні навички: програмування на мові паскаль та асм86, виконано тестування галопуючим методом, зроблена перевірка нулів за допомогою факторіалу, проведений аналіз «ПЗ», на якість виконання та швидкодію. Теоретичні навички: поняття методу пінг понг, галопуючий метод, тестування, озп, недоліки, переваги пз.

Контрольні питання:

 

1. Як здійснюється перевірка ОЗП методом пінг - понг?

Суть в тому, що тести пишуться до коду. Один програміст пише червоний тест. Другий програміст пише код, який зробить тест зеленим. Він же пише наступний червоний тест і знову передає клавіатуру першому. І так далі по колу. У першу комірку ОЗП записуютьсяодиниці, а в усі інші – нулі. Потім послідовно зчитуються і перевіряються комірки 2,1 потім 3,1;4,1 і т.д. поки всі пари переходів, що включають комірку 1, не будуть перевірені.

2. Які основні переваги методу пінг - понг?

Можливо чітко виявити помилки при тестуванні.

3. Які недоліки методу пінг - понг?

Обмеження числових типів.

4. Які зміни і доповнення потрібно внести в метод перевірки пінг - понг для поліпшення якості тестування ОЗП?

З опанованих знань теоретичної частини можу добвати наступне, що цей метод тестування розчитаний на двох розробників, було б доречно щоб людина могла самостійно використовувати даний метод.

5. Як здійснюється перевірка ОЗП методом галопуючим методом?

По кожному символу і коду програми починаючи з «Program» закінчуючи «end.», (приклад наведено для мови паскаль).

6. Які основні переваги галопуючего методу?

Як для мене, я не виявив переваг окрім однієї, цей тест потребує ретельної перевірки програмного коду від початку до його кінця, без пропуску навіть таких казалось би не важливих компонентів програми як «program».

7. Які недоліки галопуючего методу?

По крокове тестування, займає багато часу.

8. Які зміни і доповнення потрібно внести в даний метод перевірки для поліпшення якості тестування ОЗП?

Швидкодію перевірки на помилки, менший затрат часу.


Контрольна робота № 3

Тема: Наближений метод розрахунків надійності електричної схеми по раптовим відмовам

 

Ціль: одержати навички розрахунків надійності по раптових відмовах

 

 

Завдання:

 

Розрахувати:

 

сумарну інтенсивність відмови блоків

 

m

lб =å lk N k

k =1

 

імовірність безвідмовної роботи блоків

 

Pб (t) = e-t l б

 

імовірність безвідмовної роботи системи при паралельному з'єднанні блоків

 

Рсист =1-(1- Рб 1´ Рб 2)2

імовірність безвідмовної роботи системи при послідовному з'єднанні блоків

 

n

P(t) = ÕPk (t)

k =1

 

середній час справної роботи

 

Tб =1/ l б

 

Визначити середній час напрацювання на відмову, імовірність безвідмовної роботи за восьмигодинну зміну і за час Т=1000 годин.

 

Для розрахункив використаю електричну схему

 

Задача № 1

  1. Згідно формули про визначення імовірність безвідмовної роботи блоків, використаємо наступну формулу

Pб (t) = e-t l б

Далі отримаємо значення t – в нашому випадку час = 1000 (год)

l б = 0.1 * 10-5=електричний конденсатор.

e= 8 – безвідмовна робота, отже з наведених вижче значень ~ що в нас є значення для розрахунків.

Електричного конденсатору.

Часу.

е.

Використаємо формулу і знайдемо значення безвідмовної роботи блоків:

Pб (t) = 8(-1000*(0.1*10-5))= 7,99% - ймовірність безвідмовної роботи.

Задача №2

  1. Згідно формули про визначення імовірність безвідмовної роботи блоків, використаємо наступну формулу

Pб (t) = e-t l б

Далі отримаємо значення t – в нашому випадку час = 1000 (год)

l б = 0.04 * 10-5=керамічний конденсатор

e= 8 – безвідмовна робота, отже з наведених вижче значень ~ що в нас є значення для розрахунків.

Електричного конденсатору.

Часу.

е.

Використаємо формулу і знайдемо значення безвідмовної роботи блоків:

Pб (t) = 8(-1000*(0.04*10-5))= 32% - ймовірність безвідмовної роботи.

Задача № 3

  1. Згідно формули про визначення імовірність безвідмовної роботи блоків, використаємо наступну формулу

Pб (t) = e-t l б

Далі отримаємо значення t – в нашому випадку час = 1000 (год)

l б = 1 * 10-7=паяні зєднання

e= 8 – безвідмовна робота, отже з наведених вижче значень ~ що в нас є значення для розрахунків.

Електричного конденсатору.

Часу.

е.

Використаємо формулу і знайдемо значення безвідмовної роботи блоків:

Pб (t) = 8(-1000*(1*10-7))= 62% - ймовірність безвідмовної роботи.

ЗАДАЧА 4

  1. Згідно формули про визначення імовірність безвідмовної роботи блоків, використаємо наступну формулу

Pб (t) = e-t l б

Далі отримаємо значення t – в нашому випадку час = 1000 (год)

l б = 0,15 * 10-5=транзитори кремнієві

e= 8 – безвідмовна робота, отже з наведених вижче значень ~ що в нас є значення для розрахунків.

Електричного конденсатору.

Часу.

е.

Використаємо формулу і знайдемо значення безвідмовної роботи блоків:

Pб (t) = 8(-1000*(0,15*10-5))= 7,99% - ймовірність безвідмовної роботи.

ЗАДАЧА №5

  1. Згідно формули про визначення імовірність безвідмовної роботи блоків, використаємо наступну формулу

Pб (t) = e-t l б

Далі отримаємо значення t – в нашому випадку час = 1000 (год)

l б = 0,2 * 10-5=резистори змінні

e= 8 – безвідмовна робота, отже з наведених вижче значень ~ що в нас є значення для розрахунків.

Електричного конденсатору.

Часу.

е.

Використаємо формулу і знайдемо значення безвідмовної роботи блоків:

Pб (t) = 8(-1000*(0,2*10-5))= 7,99% - ймовірність безвідмовної роботи.

ЗАДАЧА №6

  1. Згідно формули про визначення імовірність безвідмовної роботи блоків, використаємо наступну формулу

Pб (t) = e-t l б

Далі отримаємо значення t – в нашому випадку час = 1000 (год)

l б = 1 * 10-5=резистори

e= 8 – безвідмовна робота, отже з наведених вижче значень ~ що в нас є значення для розрахунків.

Електричного конденсатору.

Часу.

е.

Використаємо формулу і знайдемо значення безвідмовної роботи блоків:

Pб (t) = 8(-1000*(1*10-5))= 7,99% - ймовірність безвідмовної роботи.

ЗАДАЧА №7

  1. Згідно формули про визначення імовірність безвідмовної роботи блоків, використаємо наступну формулу

Pб (t) = e-t l б

Далі отримаємо значення t – в нашому випадку час = 1000 (год)

l б = 6,5 * 10-7=ОПЕРАЦІЙНИЙ ПІДСИЛЮВА4

e= 8 – безвідмовна робота, отже з наведених вижче значень ~ що в нас є значення для розрахунків.

Електричного конденсатору.

Часу.

е.

Використаємо формулу і знайдемо значення безвідмовної роботи блоків:

Pб (t) = 8(-1000*(6,5*10-7))= 52% - ймовірність безвідмовної роботи.

КОНТРОЛЬНІ РОБОТИ № 1, 2, 3

 

„Надійність, контроль, діагностика, експлуатація ЕОМ”

 

 

 

Виконав:

Ст. гр. КІ-14-СКЗ

Резенко Марк Станіславович

Дата: 22.02.2016

 

Підпис:________________

 

 

Перевірила: викладач

Смірнова Наталія Володимирівна

 

Дата: ­­______________

 

Підпис: ______________

 

Кіровоград, 2016

Контрольна робота № 1

 

Тема: Діагностування ОЗП методом запису - читання вперед і назад та кроковим методом

Ціль роботи

Отримати навички по діагностики ОЗП з використанням тесту.

Завдання:

Виділити область ОЗП 32 кбайта пам'яті, у програмі і провести її тестування використовуючи навички програмування написати програму тестування області ОЗП у відповідності з варіантом.

 

Проаналізувавши методичні рекомендації до контрольної роботи, можу додати наступне, що, необхідно написати ПЗ, яке буде змінювати нулі на одиниці, при цьому можливе використання матриці, нагадаю для само перевірки, що матриця має рядки та стовпці, кожний стовпець відповідає рядку, кожний рядок стовпцю, матриці можливо як додавати так віднімати, множити, використовувати закони Гауса, і т.д.

Використаю мову програмування яка використовувалась в лабораторних роботах «PASCAL», це моя з найпершим мов яку я почав вивчати ще в Кіровоградському Кооперативному коледжі економіки і права імені М.П.Сая, на даному етапі в Кіровоградському технічному університеті, я закріпив знання з цього предмету (мови високого рівня). Перейдемо безпосередньо до виконання завдання!.

Безпосередньо завдання контрольної роботи передбачає покрокове тестування програмного модулю, виведу процедуру яка підраховує нулі та одиниці використаю замість процедури функцію для зчитування одиниць:

Function Count(x: Integer): Integer;

Процедура буде в моїй програмі одна, і повторюватись не буде а лише цикл буде закручений і мати умову. Далі використаємо умову «if», для підрахунку остачі від ділення а саме:

If x mod 2=1 Then Inc(c);

x:=x div 2;

Таким чином ми звертаємось до одиниць, в моєму випадку це кількість одиниць двійкового запису чисел, реалізую програмно і продемонструю на рисунку 1.1:

Program Rezenko_mark_ki_14_skz;

Type

arr = Array [1..100] of Integer;

Function Count(x: Integer): Integer;

var c: Integer;

begin

c:=0;

While x>0 do

begin

If x mod 2=1 Then Inc(c);

x:=x div 2;

end;

Count:=c;

end;

 

Var

i, n: Integer;

mas: ^arr;

 

BEGIN

Write('Введідть будь-ласка кількість елементів: ');

ReadLn(n);

GetMem(mas,SizeOf(Integer)*n);

for i:= 1 to n do begin

Write('[', i, '] = ');

ReadLn(mas^[i]);

WriteLn('Кількість одиниць в двійковому записі числа', mas^[i], ': ', Count(mas^[i]));

end;

FreeMem(mas);

END.

Рисунок 1.1 – Результат підрахунку одиниць

Продовжую тестування програми, на цей раз опираючись на методичні рекомендації, по «Стовпці і рядки матриці пам'яті», спробую створити матрицю і на створення процедури вона буде повторюватись2 рази і 3 рази функція:

 

procedure Vvod (c: char;var z: mas); - відповідає за введення стовпців і рядків матриці і звернення її до памятті.

 

procedure Print (c: char; z: mas); - відповідає за виведення даних на екран, виводу дійсних чисел, і масва матриці.

 

А також три функції, нагадаю функції також використовуються для оптимізації програмного коду.

 

function IsAllNull (ns: byte; z: mas): boolean;

function CountStr(z: mas): byte;

function Max(x,y: byte): integer;

Реалізую програмно

Program kontr_1_rezenko_ki_14_skz;

uses crt;

const n=5;

type mas=array [1..n,1..n] of integer;

var a,b,c: mas; m: integer;

 

procedure Vvod (c: char;var z: mas);

var i,j: byte;

begin

writeln('Введіть елементи матриці ',c);

for i:=1 to n do

for j:=1 to n do

begin

write(c,'[',i,',',j,']=');

readln(z[i,j]);

end;

end;

 

procedure Print (c: char; z: mas);

var i,j: byte;

begin

writeln('Матриц9 ',c);

for i:=1 to n do

begin

for j:=1 to n do

write(z[i,j]:3);

writeln;

end;

end;

 

function IsAllNull (ns: byte; z: mas): boolean;

var j: byte; b: boolean;

begin

b:=true;

for j:=1 to n do

if z[ns,j]<>0 then b:=false;

IsAllNull:=b;

end;

 

function CountStr(z: mas): byte;

var i,k: byte;

begin

k:=0;

for i:=1 to n do

if IsAllNull(i,z) then inc(k);

CountStr:=k;

end;

 

function Max(x,y: byte): integer;

begin

if x>y then Max:=x else Max:=y;

end;

 

begin

Vvod ('A',a);

Vvod ('B',b);

Vvod ('C',c);

writeln('Кількість нульових рядків в матриці А ',CountStr(a));

writeln('Кількість нульових рядків в матриці В ',CountStr(b));

writeln('Кількість нульових рядків в матриці С ',CountStr(c));

m:=Max(CountStr(a),Max(CountStr(b),CountStr(c)));

writeln('Максимальа кількість нульових рядків = ',m);

if CountStr(a)=m then Print ('A',a);

if CountStr(b)=m then Print ('B',b);

if CountStr(c)=m then Print ('C',c);

readln;

end.

Рисунок 1.2 – Введення рядків і стовпців матриці

 

Рисунок 1.3 – Результат тестування 0 матриці в памятті

Висновки: Завдання виконано в повному обсязі покрокове тестування передбачає, тестування кожного окремого програмного модулю, в моєму випадку використовувались функції та процедури, за допомогою яких я опирався на методичні рекомендації до контрольної роботи. Тестування виконувалось за допомогою одиниць і нулів, спочатку реалізовано одиниці, далі в наступній програмі нулі.

 

Контрольні питання:

 

1. Як здійснюється перевірка ОЗП методом читання вперед і назад?

По всіх адресахОЗП записуються нулі, потім проводиться послідовне зчитування і перевірка цієї інформації.

2. Які основні переваги методу читання вперед і назад?

Швидкий пошук зі старшої адреси до молодшої.

3. Які недоліки методу читання вперед і назад?

не дозволяє здійснювати читання і запис одночасно

4. Які зміни і доповнення потрібно внести в метод перевірки читання вперед і назад для поліпшення якості тестування ОЗП?

Швидкодію.

5. Як здійснюється перевірка ОЗП методом кроку?

Метод покрокового тестування передбачає, що модулі тестуються не ізольовано один від одного, а підключаються по черзі для виконання тесту до набору які вже раніше протестували модулі. Покроковий процес триває до тих пір, поки до набору протестованих модулів не буде підключений останній модуль.

6. Які основні переваги методу кроку?

рання перевірка основних проектних рішень і сполучення модулів, а також багаторазове тестування сполучення модулів в контексті розроблюваного програмного забезпечення.

7. Які недоліки методу кроку?

труднощі всебічного тестування викликаючого модуля, є наслідком того, що модуль отримує вхідні дані не безпосередньо, а через викликаючий модуль.


Контрольна робота № 2

 

 

Тема: Діагностування ОЗП методом пінг – понг та галопуючим методом

Ціль роботи

Одержати навички по діагностики ОЗП з використанням тесту.

Завдання:

Виділити область ОЗП 32 кбайта пам'яті, у програмі і провести її тестування використовуючи навички програмування написати програму тестування області ОЗП у відповідності з варіантом.

 

 

Згідно до завдання контрольної роботи необхідно виконати тестування методом «ГАЛАПУЮЧИМ», для даного варіанту рішення використаю програму на мові asm-86, знову ж таки опираючись на знання предмета «asm-86», створю програму для підрахунку кількості нулів та одиниць в памятті, асемблер допомагає працювати з пам’яттю, мова (низького рівня), програмний код асемблера дуже важко оптимізувати, він підходить більше для даної контрольної роботи, оскільки тестування галопуюче не передбачає оптимізацію і швидкодію програмного коду. Далі буде створена програма з коментарями, тому як цей метод передбачає розпис всіх компонентів системи:

.model small; Модель памяті.stack 1000h; Встановлення розміру стеку.data; Початок сегменту даних програми;<опис змінних> message2 db "result:",13,10,"$"message3 db "k-st nuliv:",13,10,"$"message4 db "k-st odunuz:",13,10,"$"mes3 db 10,13,"$"result dw 123kol_odin dw 0kol_nol dw 0 .code; Початок сегменту коду start:mov ax,@DATA; Пересилаємо адресу сегменту даних в реєстр AX mov ds,ax; Встановлення регістру DS на сегмент даних podschet:mov bx, 32768xor ax,axmov ax, resultand ax, bxcmp ax, 1 je odin jmp podschet2 podschet2:test bx, bx jz vivodshr bx, 1mov ax, resultand ax, bxcmp ax, 1 je odincmp kol_odin,0 jne nol jmp podschet2; odin:add kol_odin,1 jmp podschet2; nol:add kol_nol,1 jmp podschet2; vivod:mov ah,09h; DOS функція введення рядка на екран mov dx, offset message3; Створюємо зміщення до початку рядка int 21h; Виводимо рядок mov ax,kol_nol ;Число яке буде в реєстрі AX push -1 ;Зберігаємо кінець числа mov cx,10 ;Ділимо на 10 l: xor dx,dx div cx ;Ділим0 push dx ;Зберігаємо цифру cmp ax,0 ;Залишився 0? jne l ;ні -> продовжуємо mov ah,02hl2: pop dx ;Відтворення цифри cmp dx,-1 ;Доходимо до кінця -> вихід je exadd dl, 48int 21h jmp l2 ;І продовжуємо ex:mov ah,09h; DOS функція виведення рядка на екран mov dx, offset message4; Створюємо зміщенн9 до початку рядка int 21h; Виводимо рядок mov ax,kol_odin ;виводимо число в регістрі AX push -1 ;Зберігаємо кінець числа mov cx,10 ;Ділимо на 10 vt: xor dx,dx div cx ;Ділимо push dx ;Зберігаємо цифру cmp ax,0 ;залишився 0? jne vt ;ні -> продовжити mov ah,02hvvv: pop dx cmp dx,-1 je closeadd dl, 48int 21h jmp vvv ;Продовжуємо роботу close:mov ax,4C00h int 21h; Вихід з програми end start

Як можна побачити на виконаній мною програмі, були додані дані до сегменту стеку, і виявлені нулі.

Наступний крок виконаю програму на мові паскаль, щоб було з чим порівнювати. Для прикладу тестуванн9 будемо використовувати факторіал, який буде звертатися до памятті і підраховувати кількість нулів діапазон факторіалу «500».

PROGRAM KONTR2_REZENKO_MARK;

const

cS = 10000;

 

type

TSar = array [1..cS] of string;

 

var

N,d,m: integer;

Sar: TSar;

ans: longint;

 

procedure Mult(var Sar: TSar; n: integer);

var

p, k, c, m: integer;

begin

p:= 0;

m:= cS;

repeat

for k:= Length(Sar[m]) downto 1 do

begin

c:= (ord(Sar[m][k]) - ord('0')) * n + p;

p:= c div 10;

Sar[m][k]:= char(ord('0') + (c mod 10));

end;

if Sar[m - 1] <> '' then dec(m) else break;

until false;

while p <> 0 do

begin

if (m > 1) and (length(Sar[m]) >= 50) then dec(m);

Sar[m]:= char(ord('0') + (p mod 10)) + Sar[m];

p:= p div 10;

end;

end;

begin

Readln(N);

case N of

1: Sar[cS]:= '0';

0: Sar[cS]:= '1';

else begin

Sar[cS]:= '1'; //шукаємо факторіал

for N:= 1 to N do Mult(Sar, N);

end;

end;

m:=1;

while Sar[m]='' do inc(m);

for m:=m to cS do for d:=1 to length(Sar[m]) do if Sar[m][d] = '0' then inc(ans); //перевіряємо скільки 0

Writeln('відповідь: ',ans);

end.

Рисунок 2.1 – Результат тестування і пошуку нулів факторіалу

Висновки: Опановано практичні навички: програмування на мові паскаль та асм86, виконано тестування галопуючим методом, зроблена перевірка нулів за допомогою факторіалу, проведений аналіз «ПЗ», на якість виконання та швидкодію. Теоретичні навички: поняття методу пінг понг, галопуючий метод, тестування, озп, недоліки, переваги пз.

Контрольні питання:

 

1. Як здійснюється перевірка ОЗП методом пінг - понг?

Суть в тому, що тести пишуться до коду. Один програміст пише червоний тест. Другий програміст пише код, який зробить тест зеленим. Він же пише наступний червоний тест і знову передає клавіатуру першому. І так далі по колу. У першу комірку ОЗП записуютьсяодиниці, а в усі інші – нулі. Потім послідовно зчитуються і перевіряються комірки 2,1 потім 3,1;4,1 і т.д. поки всі пари переходів, що включають комірку 1, не будуть перевірені.

2. Які основні переваги методу пінг - понг?

Можливо чітко виявити помилки при тестуванні.

3. Які недоліки методу пінг - понг?

Обмеження числових типів.

4. Які зміни і доповнення потрібно внести в метод перевірки пінг - понг для поліпшення якості тестування ОЗП?

З опанованих знань теоретичної частини можу добвати наступне, що цей метод тестування розчитаний на двох розробників, було б доречно щоб людина могла самостійно використовувати даний метод.

5. Як здійснюється перевірка ОЗП методом галопуючим методом?

По кожному символу і коду програми починаючи з «Program» закінчуючи «end.», (приклад наведено для мови паскаль).

6. Які основні переваги галопуючего методу?

Як для мене, я не виявив переваг окрім однієї, цей тест потребує ретельної перевірки програмного коду від початку до його кінця, без пропуску навіть таких казалось би не важливих компонентів програми як «program».

7. Які недоліки галопуючего методу?

По крокове тестування, займає багато часу.

8. Які зміни і доповнення потрібно внести в даний метод перевірки для поліпшення якості тестування ОЗП?

Швидкодію перевірки на помилки, менший затрат часу.


Контрольна робота № 3

Тема: Наближений метод розрахунків надійності електричної схеми по раптовим відмовам

 

Ціль: одержати навички розрахунків надійності по раптових відмовах

 

 

Завдання:

 

Розрахувати:

 

сумарну інтенсивність відмови блоків

 

m

lб =å lk N k

k =1

 

імовірність безвідмовної роботи блоків

 

Pб (t) = e-t l б

 

імовірність безвідмовної роботи системи при паралельному з'єднанні блоків

 

Рсист =1-(1- Рб 1´ Рб 2)2

імовірність безвідмовної роботи системи при послідовному з'єднанні блоків

 

n

P(t) = ÕPk (t)

k =1

 

середній час справної роботи

 

Tб =1/ l б

 

Визначити середній час напрацювання на відмову, імовірність безвідмовної роботи за восьмигодинну зміну і за час Т=1000 годин.

 

Для розрахункив використаю електричну схему

 

Задача № 1

  1. Згідно формули про визначення імовірність безвідмовної роботи блоків, використаємо наступну формулу

Pб (t) = e-t l б

Далі отримаємо значення t – в нашому випадку час = 1000 (год)

l б = 0.1 * 10-5=електричний конденсатор.

e= 8 – безвідмовна робота, отже з наведених вижче значень ~ що в нас є значення для розрахунків.

Електричного конденсатору.

Часу.

е.

Використаємо формулу і знайдемо значення безвідмовної роботи блоків:

Pб (t) = 8(-1000*(0.1*10-5))= 7,99% - ймовірність безвідмовної роботи.

Після знаходження безвідмовної роботи блоків, знаходимо



Поделиться:


Последнее изменение этой страницы: 2016-09-19; просмотров: 197; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.174.168 (0.416 с.)