6) При нисходящем тестировании проверки начинаются с программ управления и организации вычислительного процесса. Первоначально тестируется управляющее ядро комплекса программ и программы решения функциональных задач, размещенных на высших иерархических уровнях.
К ним постепенно подключаются для тестирования программы последующих более низких иерархических уровней. Преимуществом такого метода является возможность сохранения и развития наборов тестовых данных по мере подключения программ нижних уровней.
На практике обычно используются три стратегии тестирования:
1) Тестирование программ как "Чёрного ящика ". Имеет цель выяснения обстоятельств, в которых поведение программ не соответствует спецификации. Тестовые данные составляются и используются без учета знаний о внутренней структуре программы.
2) Тестирование программ как "Белого ящика ". Тестовые наборы данных проектируются на основе внутренней логики программы. Цель тестирования
- проверить каждую ветвь, каждый путь и каждый оператор. Спецификация программы при этом не используется.
3) Реальная стратегия обычно сочетает оба метода. При помощи метода
"чёрного ящика" делается:
V Проверка в нормальных условиях.
V Анализ граничных значений.
V Проверка в исключительных ситуациях.
V Предположение об ошибке.
При помощи метода "Белого ящика" делается: V Покрытие операторов. V Покрытие решений. V Покрытие условий.
7.2. Результаты тестирования
При тестировании программы был использован восходящий метод тестирования. С помощью этого метода сначала были протестированы отдельные модули программы, а затем и вся программа. Результаты тестирования показаны на рисунке Приложения. Тестирование системы включало в себя: - тестирование ввода различных набора данных; - получение комбинаций для кода с любым образующим многочленом;
Тестирование ввода различных наборов кодовых комбинаций не показало ни одной исключающей ситуации.
ВЫВОДЫ. В данной главе был выбран метод тестирования системы. В результате тестирования были обнаружены ошибки, которые впоследствии были устранены. В результате тестирования было получено, что программа является работоспособной. Программа правильно находит образующую матрицу и строит код Файра..
8. Ограничения на разработку.
Для выполнения программы необходимо соблюдать некоторые требования, а именно: 1) Программа может работать на персональных компьютерах с процессором не ниже 80486 . 2) Для реализации интерфейса необходимо иметь цветной монитор с адаптером не ниже VGA. 3) RAM не ниже 8MB. 4) Windows 95/98/NT
8.1. Инструкция пользователю.
В программе разработан интерфейс, подходящий под стандарты. Интерфейс реализован в графическом режиме. Меню горизонтальное, с выпадающими окнами. Главное окно программы изображено на рис.. Приложения 2. Главное меню программы содержит следующие пункты: 1. О программе - дана краткая аннотация выполненной программы. 2. Работа - содержит подменю с пунктами:
1. Ввод - позволяет пользователю ввод соответствующих данных.
Здесь предусмотрена защита от некорректного ввода. В этом пункте можно ввести любую информационную комбинацию.
2. Вывод - выполняется алгоритм построения образующей матрицы, с последующем выводом ее на экран.
3. Выход - обеспечивает выход из программы. Используется защита от случайного выхода.
Пункты меню активизируются нажатием клавиши . При появления каждого окна в строке статуса появляется сообщение о возможных действиях.
Передвижение по меню осуществляется клавишами перемещения курсора на клавиатуре. Также используется "горячая клавиша" Esc. При нажатии на неё происходит автоматический выход из программы.
Заключение
В данной работе был рассмотрен один из множества методов кодирования. Достоинство данного метода в том, что он может находить исправлять пачки ошибок. Также все циклические коды легко поддаются схемной реализации.
Все элементы принципиальной схемы имеют серии К155 или К55. Это одни из самых распространенных и довольно не дорогих отечественных микросхем, легко доступная любому пользователю.
Программа реализована на языке Turbo Pascal 7.0. Это наиболее распространенный на сегодняшний день язык программирования. Поэтому в программе разобраться трудностей не будет.
Кодирование информации наиболее актуальна в наши дни в связи с развитием компьютерных сетей. Необходимо передавать информацию быстро и точную.
Программа тестировалась восходящим методом. С помощью этого метода сначала были протестированы отдельные модули программы, а затем и вся программа.
Проведено тестирование программы необходимое для проверки работоспособности программы, которое показало, что программа устойчиво работает на все режимах работы и выполняет поставленную задачу.
Программа является универсальной и может быть усовершенствована любым пользователем, разбирающимся в языке программирования Pascal 7.0 .
Дана общая модульная структура программа, которая может помочь ползо- вателю разобраться в общей структуре программы и усовершенствовать программу.
Список литературы.
1. Тёмников Ф. Е..
Теоретические основы информационной техники:
Учеб.пособие для вузов-2-е изд., перераб. и доп.-М.:Энергия, 1979.-
512 с., ил.
2. Липаев В.В.
Тестирование программ.- М.: Радио и связь,1986. - 296 с.: ил.
3. Тутевич В. Н.
Телемеханика:
Учеб.пособие для студентов вузов спец. “Автоматика и телемеханика”-2-е изд., перераб. и доп.-М.: Высш. Шк., 1985.- 423 с., ил.
4. Зельдин Е. А.
Цифровые интегральные микросхемы в информационн-измерительной
аппаратуре. –Л.: Энергоатомиздат. Ленингр. отд-ние, 1986.- 280 с.: ил.
Приложения.
Приложение 1. Перечень элементов
| | | | | |Поз. |Наименование |Кол|Примечания | |Обозн. | | | | | |Конденсаторы | | | |С3 |К10-60 – 10 мКф + 10% |1 | | | С1,С2 |К10-17а – 0.1 мКф + 0.1% |2 | | | |Микросхемы. | | | | |К555АГ3 |1 | | | |К155ИР13 |9 | | | |К555ТВ6 |1 | | | |К555ИЕ10 |2 | | | |К155ЛН1 | | | | |К155ЛИ1 | | | | |Резисторы | | | |R1-R2 |С2-29В 5Ком±0.1% |2 | | |R4 |МЛТ-0.125 – 30 Ком + 10% |1 | | |R5 |МЛТ-0.125 – 1.5Koм + 10% |1 | |
Приложение 2. Блок-схема алгоритма.
Приложение 3. Текст програмных модулей.
Uses Crt,Graph,AlexUnit; Const _N = 33; _M = 10;
Type Delim_Mas = array[1 .. 100] of byte; Mass1 = array[1 .. _N+_M-1] of byte; Mass2 = array[1 .. _M] of byte; Mass3 = array[1 .. _M-1] of byte; Mas_Exit=array[1..2] of String; Two_Matrix=array[1 .. _N,1 .. _N+_M-1] of byte;
Const P : Mass2 = (1,0,1,1,0,0,1,0,1,1); Y_No : Mas_Exit = ('Да','Нет');
Var
F,Cicle_Kod : Mass1; R : Mass1;
Delimoe : Delim_Mas;
Obraz_Matrix : Two_Matrix;
Mas : Mass; grDriver,grMode,ErrCode: Integer; flag : boolean;
_t,c,n,m,i,schot,N0,Code : integer;
Function Sum(F,P : Byte) : Byte; {Суммирование по модулю 2} Var i : Byte; Begin
If ((F=1) and (P=1)) or ((F=0) and (P=0)) Then Sum:=0
Else Sum:=1; End;
{-------------------------------} Procedure Dopoln(Var F : Mass1); {Умножение на старшую степень образующего многочлена} Var i : Byte; Begin for i:=_N+1 to _N+_M-1 do F[i]:=0; End;
{--------------------------------} Procedure Delenye(F : Mass1;P : Mass2); {Деление многочлен на многочлен} Var i,j,t : Byte; K : Mass1; Begin
For i:=1 to _N do
Begin
IF F[i]=1 Then Begin t:=1;
For j:=i to i+_M-1 do
K[j]:=Sum(F[j],P[t]);
F[j]:=K[j]; t:=t+1;
End;
End; t:=1;
For i:=_N+1 to _N+_M-1 do
R[t]:=F[i]; t:=t+1;
End; End;
{----------------------------------------} Procedure Ed_Matrix(Var A : Two_Matrix); {Составление еденичной матрицы} Var i : Integer; Begin
A[i,_N+1-i]:=1
End; End; {----------------------------------------}
Procedure Obr_Matrix(Var A : Two_Matrix); {Получение образующей матрицы} Var i,j,t,Schot,l,m : Byte; K : Mass1; Begin
Delimoe[1]:=1;
Schot:=1;
IF Delimoe[i]=1 Then Begin t:=1;
K[j]:=Sum(Delimoe[j],P[t]);
Delimoe[j]:=K[j];
t:=t+1;
l:=1;
For m:=i+1 to i+_M-1 do
A[Schot,_N+l]:=Delimoe[m]; l:=l+1;
End
Else Begin l:=1;
Schot:=Schot+1;
Procedure InitGrf; {Инициализация графики} Begin grDriver := Detect; InitGraph(grDriver, grMode,'c:subbpbgi'); if GraphResult grOk then Begin
Halt(1); End; End;
Procedure Visual(Var sa:mass); {Ввод информационных символов} Var i,x,y,k,Fon,Color,a:Integer;
Code: Integer; ch,chi:Char;
Stop:Boolean;
Elm : String;
Begin moveto(20,465); SetTextJustify(0,1); SetColor(0); outtext('Нажмите Enter'); x:=30; y:=225; k:=17; Fon:=1; Color:=14; Window_(30,150,610,260,1,'Ввод нформационных символов'); SetTextStyle(1,0,4); SetColor(Fon); For i:=1 to _N Do
MoveTo(x+i*k,y);
Str(Sa[i],Elm);
OutText(Elm);
End; SetTextStyle(0,0,1); MoveTo(x+17,y-20); Str(_N,Elm); OutText(Elm); MoveTo(x+_N*17,y-20); Str(0,Elm); OutText(Elm);
SetTextStyle(1,0,4); i:=1;
Setcolor(Color);
Stop:=False;
Repeat
Begin ch:=ReadKey;
Case ch Of
#75:Begin
Setcolor(Fon);
OutText(Elm); i:=i-1; if(i_N)then i:=1;
SetColor(Color);
End;{вправо}
'1':Begin
SetColor(7);
MoveTo(x+i*k,y); sa[i]:=1;
F[i]:=Sa[i];
'2':Begin
MoveTo(x+i*k,y); sa[i]:=0;
#13:Begin Stop:=True; End;
Until(Stop);
SetTextStyle(0,0,1); End;
{---------------------------------------} {Вывод образующей матрицы} Procedure OutPutObr_Matrix(x,y : Integer;Obr_Matr : Two_Matrix ); Var k,i,j : Integer;
Elm : String; Begin k:=12;
For i:=1 to _N Do
For j:=1 to _N Do
MoveTo(x+j*k,i*10+y);
Str(Obr_Matr[i,j],Elm);
SetColor(4);
For j:=_N+1 to _N+_M-1 Do
{----------------------------------} {Вывод полученной кодовой комбинации} Procedure OutPut(x,y : Integer;F,A : Mass1); Var k,s : Integer;
Elm : String; Begin
MoveTo(x+10,y-20);
Str(_N+_M-1,Elm);
MoveTo(x+(_N+_M)*12-3,y-20);
Str(0,Elm);
OutText(Elm); k:=12;
For i:=1 to _N Do Cicle_Kod[i]:=F[i];
s:=1;
For i:=_N+1 To _N+_M-1 Do
Cicle_Kod[i]:=A[s]; s:=s+1;
Str(Cicle_Kod[i],Elm);
For i:=_N+1 to _N+_M-1 Do
MoveTo(10+x+i*k,y);
{---------------------------------} {выход из программы}
Function _Exit(Fon,Color : Integer;Col_Simv : Byte) : integer;
Var x,y,k : Integer;
Stop : Boolean;
Ch : Char; Begin Window_(250,200,450,300,1,'Выход'); x:=225; y:=260; k:=80; SetTextStyle(0,0,1); SetColor(Col_Simv); For i:=1 to 2 do
OutText(Y_No[i]);
i:=1;
SetFillStyle(1,Fon); Bar(x+i*k-30,y-15,x+i*k+30,y+15);
MoveTo(x+i*k,y); Setcolor(Color); OutText(Y_No[i]); Stop:=False; Repeat ch:=ReadKey;
SetFillStyle(1,7);
Bar(x+i*k-30,y-15,x+i*k+30,y+15);
Setcolor(Col_Simv);
OutText(Y_No[i]); i:=i-1; if(i2)then i:=2;
SetFillStyle(1,Fon);
#13:Begin Stop:=True; _Exit:=i End;
End;{Case} Until Stop; SetTextStyle(0,0,0); End;
{---------------------------------} {ОСНОВНАЯ ПРОГРАММА } {---------------------------------}
Begin InitGrf;
Repeat flag:=false; Fon(3,2,GetMaxX-3,30); setcolor(0); moveto(20,465); SetTextJustify(0,1); outtext('Esc - Выход'); Menu(3,'Работа','О программе','Помощь','','',''); Case t Of
1:Begin
SetFillStyle(1,7); {Строка состтояния}
Bar(3,450,getmaxx-3,getmaxy-3);
SetColor(15);
Line(3,450,getmaxx-3,450);
Line(3,450,3,getmaxy-3);
SetColor(0);
Line(3,getmaxy-3,getmaxx-3,getmaxy-3);
Line(getmaxx-3,450,getmaxx-3,getmaxy-3);
{moveto(20,465);
SetTextJustify(0,1);
SetColor(0); outtext('Нажмите любую клавишу ...');}
VerMenu(3,'Ввод комбинации','Образующая матрица','Выход','','','');
Case Np Of
1 : Begin
Visual(Mas);
Dopoln(F);
Delenye(F,P);
Window_(30,300,610,410,1,'Закодированное сообщение. Красные символы - контрольные.');
OutPut(40,370,F,R);
ReadKey;
SetFillStyle(1,3);
Bar(30,150,610,410);
2 : Begin
Window_(30,50,610,445,1,'Образующая матрица');
Ed_Matrix(Obraz_Matrix);
Obr_Matrix(Obraz_Matrix);
OutPutObr_Matrix(40,90,Obraz_Matrix);
Bar(30,50,610,450);
3 : Begin
Case _Exit(1,15,0) of
1 : begin
Np:=3; flag:=true; end;
2 : Flag:=False; end
Until (Np=3) or (Np=4);
Ramka_Off(x1,y1,x2,y2);
2:Begin
Window_(100,80,510,400,1,'О программе'); moveto(130,130);
SetTextJustify(0,1); outtext('Данная программа является курсовой работой'); moveto(300,145);
SetTextJustify(1,1); outtext('по курсу :'); moveto(300,160);
SetTextJustify(1,1); outtext('" Передача информации " '); moveto(120,200);
SetTextJustify(0,1); outtext('Задание : Построить кодирующее устройство'); moveto(185,220); outtext('для кода Файра.Кодируемых сообщений 63,'); moveto(185,240); outtext('число обнаруживаемых ошибок Br=4, число'); moveto(185,260); outtext('исправляемых ошибок Bs=3.'); moveto(120,290); outtext('Студент : Иванов А. Е.'); moveto(120,310); outtext('Группа : BM-1-97'); moveto(120,330); outtext('Преподаватель : Каевченко .'); moveto(300,380);
SetTextJustify(1,1); outtext('СМОЛЕНСК 1999 г.'); moveto(20,465);
SetColor(0); outtext('Нажмите любую клавишу ...');
Readkey;
3:Begin
Window_(100,50,500,350,1,'Помощ'); moveto(120,110);
SetTextJustify(0,1); outtext(' ПЕРЕДВИЖЕНИЕ ПО ГОРИЗОНТАЛЬНОМУ МЕНЮ.'); moveto(120,130); outtext('- |'); moveto(120,135); outtext('| | ПЕРЕДВИЖЕНИЕ ПО ВЕРТИКАЛЬНОМУ МЕНЮ.'); moveto(120,140); outtext('| '); moveto(114,150); moveto(114,155); outtext(' АКТИВАЦИЯ ПУНКТА МЕНЮ.'); moveto(140,200); outtext('В программе использованы соотношения :'); moveto(120,220); outtext('L >= Bs c >= Bs+Br-1'); moveto(160,235); outtext('L'); moveto(120,240); outtext('e = 2 -1 m = c + L'); moveto(120,260); outtext('n = НОК(e,c)'); moveto(120,280); outtext('После расчетов получили образующий многочлен'); moveto(120,300); outtext('Файра : P(x)=1011001011'); moveto(20,465);
End; {Case} Until flag; closegraph; End.
Оглавление.
|Аннотация | | |Введение | | |1. Теоретическое введение | | | 1.1. Постановка задачи. | | | 1.2. Понятие двоичных циклических кодов. | | | 1.2.1. Общие понятия и определения. | | | 1.2.2. Методы построения циклических кодов. | | |1.3.Технические средства кодирования для двоичных | | |циклических кодов. | | |1.4. Коды Файра. | | | 2. Разработка схемы кодирующего устройства. | | |2.1. Построение кода Файра. | | |2.2. Структурная схема кодирующего устройства. | | | 3. Анализ технического задания. | | | 4. Работа устройства | | | 5.Выбор узлов принципиальной схемы. | | |5.1. Расчет генератора тактовых импульсов | | | 5.2. Счетчик К555 ИЕ10 | | | 5.3. Тригер К555 ТВ6 | | |5.4. Регистр К155ИР13. | | | 6. Описание разработки системы. | | |6.1. Модульная структура системы. | | |6.2. Организация пользовательского интерфейса . | | | 6.2.1. Меню системы. | | | 6.2.2. Обработка ошибочных ситуаций. | | |6.3. Спецификация на программные модули. | | | 7 . Тестирование. | | |7.1. Выбор методики тестирования. | | |7.2. Результаты тестирования | | | 8. Ограничения на разработку. | | |8.1. Инструкция пользователя | | | Заключение. | | Список литературы. | | Приложения | |Приложение 1. Перечень элементов. | |Приложение 2. Блок схема алгоритма. | |Приложение 3. Текст программных модулей. | | Приложение 4. Экранные формы. |
-----------------------
M2
1
2
К1
Вход
Выход
К2
g0
g1
gn-k-1
g2
Обработка ошибок
Модуль вывода
Рис. 5.3 . Триггер К555 ТВ6.
[pic]
Рис.5.2 Счетчик К555 ИЕ10.
Рис. 5.1. Принципиальная схема генератора.
Г
Кодер
Счетчик
=H0 + H1X + ... + HkXk
H(X)=
G(X)
xn+1
Основная программа
Модуль ввода
Интерфейс
Страницы: 1, 2, 3, 4