Завадостійке кодування на основі циклічних кодів
Розробка та дослідження алгоритмів і програм кодування даних з виявленням помилок на основі циклічних CRC-кодів. Аналіз циклічних кодів. Розробка та тестування програмних модулів. Розрахунок економічних показників. Вирішення питань охорони праці.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 22.06.2010 |
Размер файла | 5,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Міністерство освіти і науки України
Вінницький національний технічний університет
Інститут інформаційних технологій та комп'ютерної інженерії
Факультет комп'ютерного інтелекту
ЗАТВЕРДЖУЮ
Завідувач кафедри ПЗ
д.т.н., проф. А.М. Пєтух
«_____» ________ 2010 р.
РОЗРОБКА ТА ДОСЛІДЖЕННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ДЛЯ ЗАВАДОСТІЙКОГО КОДУВАННЯ НА ОСНОВІ ЦИКЛІЧНИХ КОДІВ
Пояснювальна записка
До дипломної роботи за спеціальністю
7. 080403 - Програмне забезпечення автоматизованих систем
08-24.ДР.008.00.000 ПЗ
Керівник дипломної роботи
к.т.н., доцент В. П. Майданюк
«____» __________ 2010
Розробив студент гр. 1ПЗ-09сп
В. В. Кравець
«____» __________ 2010
Вінниця ВНТУ 2010
ЗАВДАННЯ
на дипломну роботу зі спеціальності 7.080403
«Програмне забезпечення автоматизованих систем»
студенту групи 1ПЗ-09сп Кравець В. В.
Тема проекту: Розробка та дослідження програмного забезпечення для завадостійкого кодування на основі циклічних кодів .
Вихідні дані: операційна система - Windows XP, Windows Vista
мова програмування - C# метод кодуванн - CRC - код .
Короткий зміст частин роботи
1. Графічна: - мета і задачі робот; .
- циклічні коди; .
- стандартні циклічні CRC-коди; .
- обчислення CRC32 табличним методом; .
- граф-схема алгоритму обчислення CRC8; .
- головна форма програми; .
- тестування програми .
2. Текстова (пояснювальна записка)
- вступ;
-техніко-економічне обґрунтування доцільності розробки програми;
- аналіз циклічних кодів; .
- розробка алгоритму і програми для кодування на основі CRC-коду;
- економічний розділ;
- безпека життєдіяльності;
- висновки
АНОТАЦІЯ
Дипломна робота присвячена розробці програмного продукту для завадостійкого кодування даних з використанням корегуючих кодів. Високий рівень рішення поставленої задачі досягнутий, за рахунок використання програмного середовища Visual Studio 2008 та мови програмування C#.
Результатом проведення досліджень є розроблений програмний продукт, який призначений як для завадостійкого кодування файлів з використанням CRC-коду так і для вивчення самого методу.
ANNOTATION
Diploma work is devoted development of software product for | encoding of data with the use of error correcting codes. The high level of decision of the put task is attained, due to of software environment of Visual Studio 2008 and programming of C#.
The result of lead through of researches is the developed software product, is intended as for encoding of files with the use of CRC codes so for the study of method.
ЗМІСТ
ВСТУП
1 ТЕХНІКО-ЕКОНОМІЧНЕ ОБГРУНТУВАННЯ ДОЦІЛЬНОСТІ РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ
1.1 Суть технічної проблеми, що виникла на сучасному етапі
1.2 Аналіз існуючих програм
1.3 Вибір і обґрунтування аналогу
1.4 Уточнення технічних вимог
1.5. Прогноз величини попиту
1.6 Цінова політика
1.7. Визначення конкурентів
1.8 Проведення розрахунків, що підтверджують економічну доцільність нового програмного продукту
Висновок
2 АНАЛІЗ ЦИКЛІЧНИХ КОДІВ
2.1 Основні підходи до застосування завадостійких кодів
2.2 Класифікація завадостійких кодів
2.3 Принципи побудови циклічних кодів
2.4 Аналіз CRC-кодів
2.5 Варіантний аналіз основної проектної задачі і технічне обґрунтування вибору оптимального алгоритму завадостійкого кодування
Висновки
3 РОЗРОБКА АЛГОРИТМУ І ПРОГРАМНИХ МОДУЛІВ ДЛЯ КОДУВАННЯ ДАНИХ НА ОСНОВІ CRC-КОДІВ
3.1 Розробка алгоритму кодування на основі CRC-кодів
3.2 Розробка програми захисту файлів на основі CRC - кодів
3.3 Тестування програми
3.4 Керівництво оператора
Висновки
4 ЕКОНОМІЧНА ЧАСТИНА
4.1 Розрахунок кошторису витрат на розробку програмного продукту
4.2 Розрахунок собівартості матеріального носія з програмним продуктом
4.3 Розрахунок ціни реалізації матеріального носія із записаним програмним продуктом
4.4 Розрахунок прибутку для виробника
4.5 Розрахунок експлуатаційних витрат у споживача, пов'язаних з використанням програмного продукту
4.6 Розрахунок умовних обсягів робіт, який може бути виконаний із застосуванням нового програмного продукту
4.7 Розрахунок річного економічного ефекту від впровадження нового програмного продукту
4.8 Розрахунок для споживача економічного ефекту на ціні від придбання нового програмного продукту
4.9 Розрахунок терміну окупності витрат
Висновки
5 БЕЗПЕКА ЖИТТЄДІЯЛЬНОСТІ
5.1 Основні принципи конструювання робочого місця користувача ЕОМ
5.2 Принципи конструювання робочого місця користувача ЕОМ
5.3 Вимоги до організації робочих місць користувачів ЕОМ
5.4 Технічне рішення щодо забезпечення електробезпеки до робочого місця користувача ЕОМ
Висновок
ВИСНОВКИ
ПЕРЕЛІК ПОСИЛАНЬ
ДОДАТОК А Технічне завдання на роботу
ДОДАТОК Б Текст програми CRC - кодування
ДОДАТОК В Ілюстративний матеріал до захисту дипломної роботи
ВСТУП
Важливим способом боротьби з завадами в системах передачі та обробки інформації є застосування кодів, що виявляють і виправляють помилки. Відомі два взаємодоповнювальних методи боротьби з завадами [1]:
- кодування з виправленням помилок (корегуючі коди) - приймач виявляє і виправляє помилки;
- кодування з виявленням помилок - приймач розпізнає помилки і, у разі потреби, проводить запит на повторну передачу помилкового блока.
Корегуючі коди формуються шляхом введення значної надлишковості в дані, що передаються, цифрові потоки можуть зростати в два і більше раз. Крім того, вони працюють з блоками обмеженої довжини і при певних конфігураціях помилок або не виявляють їх зовсім, або невірно інтерпретують характер помилок. Це робить їх майже непридатними для перевірок цілісності даних в умовах одночасної дії завад та можливого несанкціонованого порушення цілісності даних.
Другий метод припускає наявність каналу зворотного зв'язку і знаходить своє застосування в каналах з достатньо малою імовірністю помилки у випадку, якщо цю імовірність помилки необхідно ще знизити. Крім того, такі коди використовують не тільки для виявлення наявності помилок які вносять природними факторами, але і для перевірки цілісності файлів, яка може бути порушена в результаті дій зловмисника, оскільки задача виявлення помилок ідентична цій задачі. Найчастіше при цьому використовуються методи, що ґрунтуються на підрахунку контрольних сум. Контрольна сума - деяке значення, розраховане з|із| послідовності даних шляхом застосування|вживання| певного алгоритму, яке використовується для перевірки правильності передачі даних [2]. Популярність використання контрольних сум для перевірки цілісності даних обумовлена тим, що подібна перевірка просто реалізовується і добре підходить для виявлення загальних помилок, викликаних наявністю шуму в каналах передачі даних або спробами несанкціонованої зміни даних. Слід зазначити, що застосування контрольних сум вносить мінімальну надлишковість в дані, що передаються, тому навіть у випадку повторної передачі цифрові потоки можуть бути значно меншими у порівнянні з корегуючими кодами.
Хоча циклічні коди можуть використовуватись для кодування з виправленням помилок, але найчастіше їх використовують саме для формування контрольних сум. Циклічні надлишкові CRC (Cyclic redundancy code) коди [1-3] вже стали основою багатьох стандартів, де застосовуються контрольні суми. Тому ці коди і вибрані для подальшої реалізації та дослідження.
Метою даної роботи є розробка та дослідження алгоритмів і програм кодування даних з виявленням помилок на основі циклічних CRC-кодів.
У відповідності до поставленої мети в роботі вирішуються такі завдання:
- аналіз циклічних кодів;
- розробка алгоритму кодування даних з виявленням помилок на основі CRC-кодів;
- вибір програмних засобів для вирішення поставлених завдань;
- розробка та тестування програмних модулів;
- розрахунок економічних показників;
- вирішення питань охорони праці.
1 ТЕХНІКО-ЕКОНОМІЧНЕ ОБҐРУНТУВАННЯ ДОЦІЛЬНОСТІ РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ
1.1 Суть технічної проблеми, що виникла на сучасному етапі
Реальні системи передачі та зберігання даних не ідеальні. Застосовуючи інформаційну техніку, ми повинні враховувати можливість виникнення помилок при передачі і зберіганні інформації. Причиною можуть бути як завади (noise), що діють в інформаційній системі, так і свідомі дії зловмисників, направлені на порушення цілісності даних.
Важливим способом боротьби з завадами в системах передачі та обробки інформації є застосування кодів, що виявляють і виправляють помилки. Теорія завадостійкого кодування для кожного конкретного каналу дозволяє вибрати найбільш ефективний метод виявлення і виправлення помилок. Відомі два взаємодоповнювальних методи боротьби з завадами:
- кодування з виправленням помилок (корегуючі коди) - приймач виявляє і виправляє помилки;
- кодування з виявленням помилок - приймач розпізнає помилки і, у разі потреби, проводить запит на повторну передачу помилкового блока.
Корегуючі коди формуються шляхом введення значної надлишковості в дані, що передаються, цифрові потоки можуть зростати в два і більше раз. Крім того, вони працюють з блоками обмеженої довжини і при певних конфігураціях помилок або не виявляють їх зовсім, або невірно інтерпретують характер помилок. Це робить їх майже непридатними для перевірок цілісності даних в умовах одночасної дії завад та можливого несанкціонованого порушення цілісності даних.
Другий метод припускає наявність каналу зворотного зв'язку і знаходить своє застосування в каналах з достатньо малою імовірністю помилки у випадку, якщо цю імовірність помилки необхідно ще знизити.
Така ситуація часто виникає в обчислювальних мережах і в Інтернеті.
Типове значення імовірності помилки на біт без кодування в обчислювальних мережах складає 10-6. Використання простих кодів з невеликою надмірністю дозволяє досягти вірогідності 10-9 і нижче.
Найчастіше при цьому використовуються методи, що ґрунтуються на підрахунку контрольних сум. Контрольна сума - деяке значення, розраховане з|із| послідовності даних шляхом застосування певного алгоритму, яке використовується для перевірки правильності передачі даних. Популярність використання контрольних сум для перевірки цілісності даних обумовлена тим, що подібна перевірка просто реалізовується і добре підходить для виявлення загальних помилок, викликаних наявністю шуму в каналах передачі даних або спробами несанкціонованої зміни даних. Слід зазначити, що застосування контрольних сум вносить мінімальну надлишковість в дані, що передаються, тому навіть у випадку повторної передачі цифрові потоки можуть бути значно меншими у порівнянні з корегуючими кодами.
Контрольні суми можуть використовуватись і для перевірки цілісності файлів, яка може бути порушена в результаті дій зловмисника, оскільки задача виявлення помилок в каналі передачі ідентична задачі перевірки цілісності файлів на диску комп'ютера.
Циклічні коди, можуть використовуватись як для кодування з виправленням помилок так і для формування контрольних сум. Але як показано вище метод з формуванням контрольних сум має переваги в комп'ютерних обчислювальних мережах. Для формування контрольних сум використовують циклічні надлишкові CRC (Cyclic redundancy code) коди [2-3], які вже стали основою багатьох стандартів. Тому ці коди і вибрані для подальшої реалізації та дослідження.
1.2 Аналіз існуючих програм
Відомо безліч пакетів прикладних програм, які формують контрольні суми для перевірки цілісності файлів з використанням CRC - кодів.
В першу чергу це архіватори WinRAR, WinZIP та інші, які використовують CRC - коди для формування контрольних сум для архівів. Ці програми призначені для ущільнення даних і формування контрольних сум є допоміжною функцією збереження цілісності ущільнених даних. Більшість файлів даних на дисках персональних комп'ютерів невеликі за розміром, так що немає необхідності їх ущільнювати. Для таких файлів архіватори не дозволяють формувати контрольні суми. Це є одним з важливих недоліків програм даного типу. Іншим недоліком є закритість кодів цих програм, що не дозволяє використовувати їх для навчання програмуванню задач завадостійкого кодування. Крім того, необхідне придбання ліцензії на право їх використання.
Іншу важливу групу складають платні утиліти для формування контрольних сум з використанням CRC - кодів .
Утиліта FastCRC Library це швидка програма, яка дозволяє обчислювати контрольні суми, з використанням популярних алгоритмів CRC32, CRC16, та інші. Можна обчислювати контрольні суми для файлів, блоків пам'яті, рядків, потокових даних. Дана програма підтримує декілька інтерфейси. Довідковий файл має приклади на мовах C, C++ і Visual Basic, які показують, як додати обчислення контрольних сум до Windows додатків на максимально можливій швидкості. Недоліком цієї програми, як і попередньої, є закритість кодів цих програм та необхідність придбання ліцензії на право їх використання.
AccuHash 2,0 це Windows утиліта для захисту цілісності та перевірки точності даних, файлів за допомогою контрольної суми. Реалізовано декілька алгоритмів для обчислення контрольних сум. що дозволяє легко і швидко перевірити цілісність файлів, завантажених з Інтернету або записаних на CD / DVD диск. Недоліком цієї програми, як і попередньої, є закритість кодів цих програм та необхідність придбання ліцензії на право їх використання.
В мережі Інтернет також поширюється маса безкоштовних утиліт для обчислення контрольних сум з використанням CRC - кодів.
Arpoon обчислює контрольні суми файлів, дозволяє виявляти зміни файлів і документів. Дана програма може бути використана також для перегляду змін важливих документів. Інша програма Duplicate Checker дублює засоби операційної системи для пошуку файлів та їх знищення.
Уявіть, що необхідно знайти певний файл на вашому комп'ютері і Ви отримуєте п'ять файлів з тією ж самою назвою і тим же самим розміром.
Який файл дійсно потрібний? Щоб уникати таких проблем і організовувати файли, необхідно видалити непотрібні файли, що зберігає простір жорсткого диску. При порівнянні файлів використовується контрольна сума CRC32.
Програма Fsum - це безкоштовний і простий у використанні інструмент, який дозволяє розраховувати контрольні суми файлів. Програма підтримує "drag-and-drop" і може працювати з декількома файлами одночасно. Контрольна сума може бути використана для звірки цілісності файлів.
Загальним недоліком безкоштовних утиліт є низька достовірність їх роботи, закритість кодів цих програм та відсутність супроводження. Відповідальність за її роботу лежить повністю на користувачеві, який встановив цю програму на комп'ютері.
1.3 Вибір і обґрунтування аналогу
В якості аналога для розробки програмного продукту було обрано програму FastCRC Library. Ця програма призначена для захисту файлів шляхом формування контрольних сум з використанням майже всіх відомих популярних алгоритмів для формування контрольних сум - CRC32, CRC16, CRC16C, MD5 та інших [5]|.
Основним недоліком FastCRC Library є складність її використання через функціональну перевантаженість. Також до недоліків можна віднести відносно низьку швидкість кодування, оскільки для формування контрольних сум використовуються поліноми високої степені, а також закритість кодів цієї програми та необхідність придбання ліцензії на право їх використання.
У розробці дана проблема вирішується за рахунок використання для формування контрольної суми лише поліномів не вище восьмої степені (CRC4, CRC8), що дозволить спростити інтерфейс користувача, а також підвищити швидкість кодування. Використання поліномів вищого ступеня не має сенсу, оскільки до даних, що передаються по мережі, апаратні засоби та операційна система сама добавляє CRC-код, а для перевірка цілісності даних на диску достатньо і поліномів невисокої степені. Також програмний продукт випереджає аналог за таким параметром як сумісність з різними типами апаратних та програмних платформ, оскільки розробка нового програмного продукту планується на мові програмування C# у середовищі програмування Miscrosoft Visual Studio 2008, що дасть можливість використовувати бібліотеки Microsoft.NET Framework, які забезпечують перенесення програми на більшість апаратних та програмних платформ.
Основні технічні показники аналога і нової програми наведені в таблиці 1.1
Таблиця 1.1 - Основні технічні показники аналога і нової програми
Показники |
Од. виміру |
Аналог |
Нова розробка |
Відношення параметрів нової розробки до параметрів аналога |
|
Складність використання |
Вимагає спеціальної підготовки |
Не вимагає спеціальної підготовки |
+ |
||
Швидкість кодування |
сек. |
60 |
30 |
1/5 |
|
Сумісність з різними апаратними і програмними платформами |
% |
50 |
90 |
1/18 |
Отже, програма, що розробляється має ряд суттєвих переваг перед аналогом. Вона не вимагає спеціальної підготовки, має вищу швидкість кодування за рахунок використання поліномів не вище восьмої степені, а також високу сумісність нової програми з найсучаснішими апаратними та програмними платформами, що досягається за рахунок використання бібліотеки Microsoft .NET Framework. вищу швидкість кодування за рахунок використання поліномів не вище восьмої степені
1.4 Уточнення технічних вимог
Вимоги до програмного забезпечення будуть розроблятись з урахуванням існуючих на сьогоднішній день машинних ресурсів і тому мінімальні вимоги до апаратури можуть бути дещо завищені. Але оскільки такі проекти розробляються на перспективу, потрібно враховувати прогрес у розвитку апаратних засобів, щоб не відставати від конкурентів.
Для рішення задачі розробки програми для захисту даних з використанням циклічних CRC кодів будемо використовувати програмне забезпечення перераховане в табл. 1.2.
Таблиця 1.2 - Перелік програмного забезпечення
Найменування |
Призначення |
|
Microsoft Windows XP |
Операційна система (ОС) |
|
Visual Studio 2008 |
Середовище програмування |
|
С# |
Мова програмування |
Операційною системою для програми, що розроблюється, вибрана Microsoft Windows XP. Можливості ОС Windows XP достатньо широкі: це і запуск програм, і переключення між задачами, і управління вікнами, і організація зручного оточення, а також, робота в мережі та інше Вона являється найбільш оптимальною операційною системою для вирішення, існуючих задач.
До складу програмних засобів повинні входити оптимальні для реалізації існуючих задач засоби. Програма, розроблена за допомогою середовища програмування Visual Studio 2008. Мова програмування вибрана С#, оскільки вона забезпечує як високу швидкість розробки, так і добрі швидкісні характеристики програмного продукту. Крім того, висуваються такі вимоги:
- IBM сумісний комп'ютер на базі мікропроцесора Pentium II і вище;
- операційна система Windows ХР з встановленою бібліотекою Microsoft.NET Framework;
- розмір оперативної пам'яті не менш 512 Mb;
- підтримка маніпулятора типу “миша”;
- розмір простору на твердому диску 80 Гб.
1.5 Прогноз величини попиту
Одним з важливих етапів економічного прогнозування є прогнозування споживчого попиту на дану розробку. Оптимістичний прогноз визначається кількістю споживачів, які будуть застосовувати даний програмний продукт.
Сферою застосування даної розробки можуть бути будь-які користувачі та фірми для яких важливим є забезпечення цілісності файлів при їх передачі та зберіганні. Наприклад, це можуть бути фінансові дані, зміна яких в результаті природних причин або зловмисником може призвести до не передбачуваних наслідків.
Комп'ютеризація світу, в тому числі і України, набуває все більшого розмаху. Можлива кількість споживачів продукту по Україні може складати близько тисячі. Враховуючи те, що деякі фірми вже використовують програми-аналоги, можна сказати, що близько 35% споживачів не стануть використовувати новий та зовсім невідомий продукт; навіть враховуючи всі його переваги. Незважаючи на рекламу, в перший рік існування програмного продукту про нього не одержать інформації близько 5% споживачів. Тому оптимістичний прогноз (ОП) складе:
ОП = 1500 - 1500 • (0,35+0,05)=900 (шт.).
Для визначення песимістичного прогнозу (ПО) необхідно врахувати, що близько 15% споживачів не зможуть придбати новий програмний, продукт за нестачею коштів, 5% - за несумісністю з програмними та апаратними засобами, і ще близько 5% - за особистими переконаннями. Отже, песимістичний обсяг ринку буде:
ПО = 900 - 900 • (0,15+0,05+0,05) =900 - 225= 675 (шт.)
Реалістичний прогноз РП може бути визначений як середнє арифметичне оптимістичного та песимістичного прогнозів, тобто:
РП =
Якщо врахувати, що підприємство, яке буде випускати новий програмний продукт, може охопити 40% вітчизняного ринку, то величина цільового ринку складе:
ЦР = 788/10040=315 (шт.)
Отже за перший рік просування товару на ринок, планується продати приблизно 315 шт.
1.6 Цінова політика
Головною кінцевою метою цінової політики є отримання максимального прибутку від продажу нового програмного продукту. Цінова політика повинна бути орієнтована на завоювання певного сегменту ринку, що ще не завойований конкурентами.
При встановленні ціни будемо враховувати, що ціна не повинна бути занадто низькою, щоб забезпечити прибуток, і не зростати занадто високо, щоб не зменшити попит. Рекомендується продавати розробку на 10-20% дешевше ринкової вартості аналогів. Для споживача необхідною умовою є так званий супровід програмного забезпечення. Ця умова може включати в себе технічну підтримку програмного продукту та заміна старої версії новою.
Ринкова ціна аналогу становить 329,00 грн. Тому рекомендується продавати розробку за ціною, яка буде нижчою за ціну аналогу.
1.7 Визначення конкурентів
В даний час на ринку програмного забезпечення в Україні спостерігається надлишковість програмних засобів закордонних виробників. Це стосується і програм, що реалізують алгоритми завадостійкого кодування даних на основі CRC-кодів. Конкурентами на ринку є відомі продукти FastCRC Library, AccuHash 2.0, а також безкоштовні програми Arpoon Checksum, Fsum. Загальним недоліком безкоштовних утиліт є низька достовірність їх роботи, закритість кодів цих програм, відсутність супроводження програмного забезпечення, тому ці програми не можуть бути конкурентами нової розробки в сфері промислового використання.
Вітчизняні виробники програмних продуктів не акцентують великої уваги на розробці подібних засобів. Тому найбільшу конкуренцію на ринку даного виду продукції будуть складати саме закордонні виробники, аналоги яких досить часто зустрічаються на споживчому ринку.
Але всі програмні засоби, що виробляються за кордоном мають ряд недоліків. По-перше, в чистому вигляді алгоритми завадостійкого кодування з використанням циклічних CRC кодів вбудовують в інші програмні засоби, які можуть коштувати великих грошей, а це не зовсім вигідно споживачеві.
По-друге, інтерфейс користувача найчастіше англомовний, що заважає в роботі з цими програмами звичайним користувачам. Однак, якщо виключити питання мови, то слід зауважити, що закордонні виробники не жалкують часу для розробки зручного інтерфейсу користувача та оформлення своїх продуктів, тому при розробці слід врахувати естетичний вигляд та зручність в користуванні продукту, а також розробити необхідну для користування документацію у вигляді допоміжних файлів.
Практично одним з основних засобів в боротьбі із конкурентами для розробника є реклама. Реклама має великий вплив на споживачів, і повинна в повній мірі описати продукт та всі його переваги. При проведені рекламної кампанії планується акцентувати увагу споживачів на доцільності використання програмного продукту в зв'язку з його надійністю та новизною, а також на те, що купуючи новий продукт вони підтримують саме вітчизняного виробника. Зробивши акцент на перевагах нової розробки, планується дістати довіри на вітчизняному ринку.
Враховуючи той факт, що програма володіє рядом переваг, таких як зручний україномовний інтерфейс користувача, велика швидкодія та сумісність з новітніми програмними та апаратними засобами, вона буде успішно конкурувати на ринку з існуючими аналогами.
1.8 Проведення розрахунків, що підтверджують економічну доцільність нового програмного продукту
Оцінка економічної доцільності розробки нового програмного продукту проводиться шляхом співставлення капітальних вкладень та експлуатаційних витрат аналога та нового продукту .
Визначення умовного обсягу роботи при використанні програмного продукту.
Для визначення обсягу робіт Q1 без використання програмного продукту потрібно знати час виконання конкретної функції (роботи) при умові, що програмний продукт не буде застосовуватись (або при застосуванні старого програмного продукту).
Для визначення обсягу робіт Q2 при використанні нового програмного продукту потрібно знати час виконання конкретної функції (роботи) в умовах, коли буде використовуватись новий програмний продукт.
Тоді обсяги робіт можна розрахувати за формулами [6]:
та (1.1)
де Q1 - обсяг робіт при застосуванні існуючого програмного продукту, умовних одиниць, штук, тощо;
Q2 - обсяг робіт при застосуванні нового програмного продукту, умовних одиниць, штук, тощо;
F - ефективний фонд часу роботи за рік, (для однозмінної роботи
F = 1800 годин,;
- доля часу, який витрачає працівник на виконання конкретних робіт з застосуванням даного програмного продукту в загальному часі своєї роботи;
ti - час виконання конкретної функції або роботи.
Q1 = 1800 • 60 • 0,01/1= 1080[функцій/хв],
Q2 = 1800 • 60 • 0,01/0,5 = 2160 [функцій/хв].
Тобто застосування нового програмного продукту підвищує продуктивність при виконанні певної роботи у 2160/1080 = 2 рази.
Собівартість одиниці нової розробки (програмного продукту) може бути cпрогнозована методом питомої ваги. Цей метод застосовується тоді, коли є можливість розрахувати одну із прямих витрат (в даному випадку це вартість інтелектуальної власності) і установити питому вагу даної статті витрат в собівартості аналога. Собівартість одиниці продукту S можна спрогнозувати за формулою:
[грн.], (1.2)
де Вп -- величина прямих витрат нової розробки (вартість інтелектуальної власності), яка вибрана за основу, грн.;
П - питома вага витрат в собівартості аналога, %;
Кн - коефіцієнт, який ураховує конструктивні та технологічні особливості нової розробки.
(грн.),
(грн.).
Величина капітальних вкладень К може бути cпрогнозована за формулою:
K = B A S,[грн.], (1.3)
де В -- коефіцієнт, який ураховує витрати на розробку, придбання, транспортування, монтаж, налагодження нової розробки;
А -- коефіцієнт, який ураховує прогнозований прибуток та податки, які повинен сплачувати виробник;
S -- собівартість нової розробки, розрахованої приблизним способом;
Ц -- ціна реалізації нової розробки, якщо вона була визначена раніше, грн.
Кан(грн.),
Кнпп(грн.).
Експлуатаційними витратами є такі витрати, які забезпечують нормальне функціонування певного технічного рішення в період його експлуатації. Величина експлуатаційних витрат в розрахунку за 1 рік може бути cпрогнозована за формулою:
[], (1.4)
де Ц - ціна реалізації нової розробки, якщо вона була визначена раніше, грн/шт.;
k - коефіцієнт, який ураховує витрати на амортизацію, електроенергію, обслуговування, ремонти тощо.
А - коефіцієнт, який ураховує прогнозований прибуток та податки, які повинен сплачувати виробник;
S - собівартість нової розробки, яка була прогнозована приблизним способом;
- доля часу, який витрачає працівник на обслуговування технічної або інтелектуальної розробки в загальному часі своєї роботи.
Еа (грн.),
Енпп (грн.).
Отже, отримали, що експлуатаційні витрати на новий програмний продукт менші, ніж на відомий аналог. Механізм співставлення капітальних вкладень та експлуатаційних витрат наведений у таблиці 1.2.
Таблиця 1.2 - Механізм співставлення величин капітальних та експлуатаційних витрат
Співвідношення між варіантами |
Формули для розрахунку економічних показників |
Висновки щодо економічної ефективності нової розробки |
||
за капітальними вкладеннями К |
за експлуатаційними витратами Е |
|||
К1/Q1 > К2/Q2 |
Е1/Q1 > Е2/Q2 |
Абсолютна економія як на питомих капітальних вкладеннях, так і на питомих експлуатаційних витратах: Кек = К1/Q1 - К2/Q2 = Еек = Е1/Q1 - Е2/Q2 = |
Кращою є нова розробка |
Отже, новий програмний продукт буде кращим за свій аналог.
Висновок
На підставі вищевикладеного можна стверджувати, що нове технічне рішення, що пропонується для розробки, буде мати кращі технічні показники, ніж існуючі, вирішить задачі щодо передачі та зберігання даних, дій зловмисників, які спрямовані на порушення цілісності даних.
Нова програма є більш економічно ефективною в порівнянні з аналогом і тому її розробка та впровадження є актуальною та доцільною.
2 Аналіз циклічних кодів
2.1 Основні до підходи до застосування завадостійких кодів
Реальні системи передачі та зберігання даних не ідеальні. Застосовуючи інформаційну техніку, ми повинні враховувати можливість виникнення помилок при передачі і зберіганні інформації. Причиною можуть бути як завади (noise), що діють в інформаційній системі, так і свідомі дії зловмисників, направлені на порушення цілісності даних.
Важливим способом боротьби з завадами в системах передачі та обробки інформації є застосування кодів, що виявляють і виправляють помилки. Теорія завадостійкого кодування для кожного конкретного каналу дозволяє вибрати найбільш ефективний метод виявлення і виправлення помилок. Відомі два взаємодоповнювальних методи боротьби з завадами
- кодування з виправленням помилок (корегуючі коди) - приймач виявляє і виправляє помилки;
- кодування з виявленням помилок - приймач розпізнає помилки і, у разі потреби, проводить запит на повторну передачу помилкового блока.
Корегуючі коди формуються шляхом введення значної надлишковості в дані, що передаються, цифрові потоки можуть зростати в два і більше раз. Крім того, вони працюють з блоками обмеженої довжини і при певних конфігураціях помилок або не виявляють їх зовсім, або невірно інтерпретують характер помилок. Це робить їх майже непридатними для перевірок цілісності даних в умовах одночасної дії завад та можливого несанкціонованого порушення цілісності даних.
Другий метод припускає наявність каналу зворотного зв'язку і знаходить своє застосування в каналах з достатньо малою імовірністю помилки у випадку, якщо цю імовірність помилки необхідно ще знизити. Така ситуація часто виникає в обчислювальних мережах і в Інтернеті. Типове значення імовірності помилки на біт без кодування в обчислювальних мережах складає 10-6. Використання простих кодів з невеликою надмірністю дозволяє досягти вірогідності 10-9 і нижче. Найчастіше при цьому використовуються методи, що ґрунтуються на підрахунку контрольних сум. Контрольна сума - деяке значення, розраховане з послідовності даних шляхом застосування певного алгоритму, яке використовується для перевірки правильності передачі даних. Популярність використання контрольних сум для перевірки цілісності даних обумовлена тим, що подібна перевірка просто реалізовується і добре підходить для виявлення загальних помилок, викликаних наявністю шуму в каналах передачі даних або спробами несанкціонованої зміни даних. Слід зазначити, що застосування контрольних сум вносить мінімальну надлишковість в дані, що передаються, тому навіть у випадку повторної передачі цифрові потоки можуть бути значно меншими у порівнянні з корегуючими кодами. Контрольні суми можуть використовуватись і для перевірки цілісності файлів, яка може бути порушена в результаті дій зловмисника, оскільки задача виявлення помилок в каналі передачі ідентична задачі перевірки цілісності файлів на диску комп'ютера.
Циклічні коди, можуть використовуватись як для кодування з виправленням помилок так і для формування контрольних сум. Але як показано вище метод з формуванням контрольних сум має переваги в комп'ютерних обчислювальних мережах. Для формування контрольних сум використовують циклічні надлишкові CRC (Cyclic redundancy code) коди, які вже стали основою багатьох стандартів [1-2]. Тому ці коди і вибрані для подальшої реалізації та дослідження.
2.2 Класифікація завадостійких кодів
Всі коди, що виявляють і корегують помилки, можна розділити на два класи: блокові і безперервні.
Блокові коди - коди, в яких кожному повідомленню (або елементу) зіставляється блок з n символів (кодовий вектор довжиною n). Операції кодування і декодування в кожному блоці проводяться окремо [8, 10].
Безперервні коди є безперервною послідовністю символів, що не підрозділяється на блоки. Такі коди називаються також рекурентними, ланцюговими, згортними, конволюціонними. Процеси кодування і декодування здійснюються безперервно. Послідовність, що передається утворюється шляхом розміщення в певному порядку перевірочних символів між інформаційними символами початкової послідовності.
Як блокові, так і безперервні коди діляться на розділимі і нерозділимі.
Розділимі коди передбачають можливість чіткого розмежування інформаційних і перевірочних символів.
Нерозділимі коди не передбачають такої можливості.
Розділимі коди діляться, у свою чергу, на|своєю чергою|:
- систематичні
- несистематичні.
Систематичні коди характеризуються тим, що інформаційні символи, як правило, не змінюються при кодуванні і займають визначені заздалегідь задані місця. Несистематичні коди не володіють відміченими вище властивостями і застосовуються значно рідше, ніж систематичні.
Якщо перевірні символи обчислюються як лінійна комбінація інформаційних, то такі коди називаються ще лінійними.
Для блокових кодів приймається позначення [n, k] - код, де k - число інформаційних символів в кодовій комбінації, n - загальне число символів в коді.
Циклічні коди (ЦК) складають велику групу найширше використовуваних на практиці лінійних кодів. Їх основна властивість, полягає в тому, що кожен вектор, що отримується з початкового кодового вектора шляхом циклічної перестановки його символів, також є дозволеним кодовим вектором. Прийнято описувати циклічні коди (ЦК) за допомогою твірних поліномів G(Х) степеня r = n-k, де r - число перевірочних символів в кодовому слові. Циклічні коди відносяться до різновиду поліноміальних кодів.
Операції кодування і декодування ЦК зводяться до відомих процедур множення і ділення поліномів. Для двійкових кодів ці операції легко реалізуються технічно за допомогою лінійних перемикальних схем (ЛПС), при цьому виходять відносно прості схеми кодеків, в чому полягає одна з практичних переваг ЦК.
Серед циклічних кодів особливе місце займає клас кодів, запропонованих Боузом і Чоудхурі і незалежно від них Хоквінгемом і CRC-коди.
Коди Боуза-Чоудхурі-Хоквінгема отримали скорочене найменування БЧХ- коди. БЧХ- коди є узагальненням коду Хеммінга на випадок виправлення декількох незалежних помилок. Окремими випадками БЧХ- коду є коди Файра, призначені для виявлення і виправлення серійних помилок, код Голея - код, що виправляє одиночні, подвійні і потрійні помилки (dmin=7), у кодах Рида-Соломона (РС- коди) символами коду є багаторозрядні двійкові числа.
Циклічний надлишковий код (Cyclic redundancy code, CRC) використовується для обчислення контрольних сум. Контрольна сума - спосіб цифрової ідентифікації деякої послідовності, який полягає в обчисленні контрольного значення її циклічного надлишкового коду. Алгоритм CRC базується на властивостях ділення із залишком двійкових многочленів, тобто многочленів над кінцевим полем GF(2). Значення CRC є по суті залишком від ділення многочлена, відповідного вхідним даним, на якийсь фіксований многочлен. CRC коди є основою багатьох стандартів передачі даних, а також використовуються для перевірки цілісності файлів.
2.3 Принципи побудови циклічних кодів
Циклічні коди є різновидністю поліноміальних кодів [1]. В таких кодах вважається, що елементи a1, a2, …an-1 деякого кодового слова є коефіцієнтами полінома від x:
(2.1)
Використовуючи це позначення можна визначити поліноміальний код як множину всіх многочленів степені не більше чим n-1, які містять як множник деякий фіксований многочлен g(x), який називається породжувальним многочленом. Тоді процес кодування можна подати як результат множення полінома m(x), що являє собою інформаційну послідовність на породжувальний многочлен g(x), а декодування як результат ділення на цей поліном.
При деяких значеннях n поліноміальні ходи характеризуються властивістю циклічності. Це означає, що циклічна перестановка кодового слова знову приводить до кодового слова даного коду.
Ідея побудови циклічних кодів ґрунтується на використанні многочленів, що не приводяться (простий многочлен). Простим многочленом називається многочлен, який не може бути поданий у вигляді добутку многочленів нижчої степені, тобто такий многочлен ділиться тільки на самого себе або на 1.
Многочлени, що не приводяться, при побудові циклічних кодів грають роль так званих твірних поліномів, від виду яких, власне і залежать основні характеристики отриманого коду: надмірність і корегуюча здатність.
У табл. 2.1 вказані многочлени, що не приводяться, із степенями k=1,2,3,4|.
Таблиця 2.1 -| Поліноми, що не приводяться, k=1,2,3,4|.
k=1 |
x+1 |
11 |
|
k=2 |
x2+x+1 |
111 |
|
k=3 |
x3+x+1 |
1101 |
|
x3+x2+1 |
1011 |
||
k=4 |
x4+x+1 |
11001 |
|
x4+x3+1 |
10011 |
||
x4+x3+x2+x+1 |
11111 |
Основні принципи кодування в циклічному коді полягають в наступному. Двійково-кодоване n - розрядне число представляється поліномом (n-1|) - ої степені деякої змінної х, причому коефіцієнтами полінома є двійкові знаки відповідних розрядів. Запис, читання і передача кодових комбінацій в циклічному коді проводиться починаючи із старшого розряду. Відповідно до цього правила, надалі самі числа і відповідні ним поліноми записуватимемо так, щоб старший розряд виявлявся справа.
Наприклад, число 110101 (нумерація розрядів, згідно вище приведеного правила, ведеться зліва направо від 0 до 5) буде представлено поліномом п'ятого ступені: 1 + х + х3. Слід зазначити, що циклічна перестановка розрядів в двійковому представленні числа відповідає множенню полінома на х, при якому хn замінюється 1 і переходить в початок полінома.
Здійснимо множення полінома, отриманого в попередньому прикладі на х. Отриманий поліном х + х2| + х4| + х6. Замінивши х6| на 1, остаточно 1 + х + х2| + х4| , що відповідає числу 111010.
Циклічний систематичний код n-значного числа складається з k інформаційних і r контрольних знаків, причому останні займають r молодших розрядів систематичного коду. Оскільки послідовна передача кодових комбінацій проводиться, як ми вже указували, починаючи із старших розрядів, контрольні знаки передаються в кінці коду. Утворення коду здійснюється за допомогою так званого твірного (породжуючого) полінома G(x), степені r і саме видом цього полінома визначаються всі властивості коду - надмірність і корегуюча здатність.
Кодовим поліномом, F(x), є поліном степені менше (k+r|), якщо він ділиться без залишку на твірний поліном G(x). Після передачі повідомлення, декодування полягає у виконанні ділення полінома H(x), що відповідає прийнятому коду, на G(x). За відсутності помилок H(x)=F(x) і ділення виконується без залишку. Наявність ненульового залишку указує на те, що при передачі або зберіганні сталися спотворення інформації. Для отримання систематичного циклічного коду використовується наступне співвідношення:
F(x)= xr| C(x)+ R(x) (2.2)
де C(x) - поліном, що представляє інформаційні символи (інформаційний поліном);
R(x) - залишок від ділення xk C(x) на G(x).
Розглянемо кодування 8-значного числа 10110111. Хай для кодування заданий твірний поліном 3-ої| степені G(x) = 1 + x + x3. Ділимо x3• C(x) на G(x):
C(x)= 1 + x2| + x3+| x5| + x6+| x7 |
x3| C(x)= x3| + x5+| x6| + x8+| x9| + x10|
Використовуючи співвідношення (2.2) знаходимо|находимо| F(x):
F(x)= ( x3| + x5+| x6| + x8+| x9| + x10| ) + x2|
Таким чином остаточно кодова комбінація, що відповідає F(x) має вигляд|вид|:
де 001 - контрольні розряди.
Практично процедура кодування ще простіша. Оскільки нас цікавить тільки залишок, а частка не використовується, то можна проводити послідовне віднімання по модулю 2 дільника з ділимого і отриманих різниць до тих пір, поки різниця не матиме нижчої степені, ніж дільник. Ця різниця і є залишок. Такий алгоритм може бути реалізований апаратно з допомогою r - розрядного регістра зсуву, що має зворотні зв'язки. Очевидно, що отриманий в такий спосіб циклічний код буде систематичним.
Проте існує і другий варіант отримання циклічного коду, коли чергову кодову комбінацію отримують шляхом множення кодової комбінації C(x) простого n-значного| коду на твірний поліном G(x). При другому способі утворення циклічних кодів інформаційні і контрольні символи в комбінаціях циклічного коду не відокремлені один від одного, що утрудняє процес декодування. Тому цей спосіб кодування застосовується рідше, ніж перший.
Розглянемо приклад кодування з використанням другого варіанту, причому при виконанні операцій використовуватимемо безпосередньо записи початкових кодових комбінацій в двійковому вигляді.
Дано твірний поліном G(1,0) =1101. Потрібно побудувати циклічний код з простого чотиризначного коду другим способом. Як приклад для побудови використовуємо початкову комбінацію С (1,0)=0011. Операція множення цієї комбінації на твірний поліном запишеться таким чином:
0010111 - це і є циклічний код для 0011.
В таблиці 2.2 наведені не систематичні циклічні коди для інформаційної послідовності при k=4.
Таблиця 2.2 - Циклічні коди (7,4)
Простий чотирьох символьний код C|із|(х) |
Циклічний(7,4)-код - |C|із|(х)•G(х), G(1,0)=1101 |
|
0000 |
0000000 |
|
0001 |
0001101 |
|
0010 |
0011010 |
|
0011 |
0010111 |
|
0100 |
0110100 |
|
0101 |
0111001 |
|
0110 |
0101110 |
|
0111 |
0100011 |
|
1000 |
1101000 |
|
1001 |
1100101 |
|
1010 |
1110010 |
|
1011 |
1111111 |
|
1100 |
1011100 |
|
1101 |
1010001 |
|
1110 |
1000110 |
|
1111 |
1001011 |
Два варіанти побудови|шикування| циклічних кодів, що розглянуті, для простоти реалізації можуть використовувати так зване матричне подання [1]. Проблема виявлення різного типу помилок за допомогою циклічного коду, як вже указувалося, зводиться до знаходження потрібного твірного полінома.
2.4 Аналіз CRC-кодів
Прикладом використання сімейства циклічних кодів є контроль помилок за допомогою циклічного надлишкового коду, тобто CRC - коду ( Cyclic redundancy check), які називають також кодом Абрамсона [1-3]. При передачі даних в пакетних режимах, ці коди використовуються для визначення цілісності блоків даних (FCS - Frame Checking Sequence). Прикладом систем з FCS є стандарти передачі даних Х.25 (HDSL), ISDN, DECT і LAN.
CRC кодами є розширення циклічних код Хеммінга. Хай р(Х) - примітивний многочлен степеня m, тоді породжуючий многочлен g(x) CRC коду, можна записати у вигляді добутку:
g(x)= (1 + Х)р(x). (2.3)
За допомогою породжуючого многочлена g(Х) може бути побудований циклічний CRC (n,k) -код з параметрами n = 2r - 1, k = 2r - r -2, що має r + 1 перевірочних символів і dmin = 4.
CRC-коди| володіють п'ятьма важливими властивостями:
Таблиця 2.3 - Породжувальні многочлени CRCкоду
Код |
Многочлен g(Х), що породжує |
|
CRC-4 |
1 + x + x4, використовується в ISDN |
|
CRC-8 |
(1 + x)(1 + x2 + x3 + x4 + x5 + x6 + x7) =1 + x + x2 + x8, використовується в АТМ в якості НЕС |
|
CRC-12 |
(1+x)(1+x2+x11)=1+x+x2+x3+x11+ x12 |
|
CRC-16 |
(1 + x)(l + х+х15) = 1 + x2 + х15 + x16, IBM |
|
CRC-16 |
(1 + х)(1 + x + x2 + x3 + x4 + x12 + x13+х14 + x15) = 1 + х5 + х12+ x16, є стандартом CCITT для HDLC і LAPD |
|
CRC-32 |
1 + x + x2 + x4 + x5 + x7 + x8 + x10+х11 + x12 + х16 + x22 + x23 + x26 + x32, використовується в HDLC |
1. Всі помилки кратності 3 або менше виявляються.
2. Всі помилки непарної кратності виявляються.
3. Всі пакети помилок довжини L = r + 1 або менше виявляються.
4. Частка пакетів помилок довжини L= r + 2, що не виявляються, складає 2-r .
5. Частка пакетів помилок довжини L ? r + 3, що не виявляються складає 2-(r-1).
Всі перераховані властивості дозволяють ефективно використовувати CRC-| код при передачі даних з (протокол ARQ). На практиці часто використовуються укорочені коди CRC У таблиці 2.3 приведені породжуючі многочлени CRC кодів, що найбільш вживаються а також вказані сфери їх застосування.
Здатність контрольної суми виявляти помилки логічніше вимірювати не в кількості помилкових бітів, а у ймовірності не виявлення помилки. При використанні CRC проходить непоміченими лише поєднання помилок, що задовольняють вельми спеціальній умові, а саме такі, вектор помилок (двійкове число, одиничні біти якого відповідають помилковим бітам прийнятого блоку, а нульові - правильно прийнятим) яких ділиться на G (твірний поліном) без остачі. При випадковому розподілі помилок ймовірність цього може бути грубо оцінена як 1/G, тому збільшення розрядності контрольної суми у поєднанні з вибором простих G забезпечує досить швидкий і дешевий спосіб перевірки цілісності навіть досить довгих блоків. 32- розрядний CRC забезпечує практично повну гарантію того, що дані не були пошкоджені, а 8-розрядний - упевненість, достатню для багатьох цілей.
Обчислення значення коду CRC| виконується за допомогою ділення многочлена, що відповідає початковому (поліном-повідомлення), на фіксований многочлен (поліном-генератор). Залишо від такого ділення і є код CRC, що відповідає початковому повідомленню. Для коду CRC-16 поліном-генератор має степінь 16, а для CRC-32 - 32. Поліноми-генератори підбираються спеціальним чином і стандартизовані Міжнародним консультативним комітетом з телеграфного і телефонного зв'язку (CCITT). Для CRC-16, наприклад, стандартним є поліном-генератор x16 + x12 + x5 + 1.
Розглянемо приклад побудови коду CRC-4 для повідомлення 11010111, використовуючи поліном-генератор x4+x3+x2+1. Початковому повідомленню відповідає поліном x7+x6+x4+x2+x+1, тобто нумерація бітів тут починається справа:
Поліному x2+1 відповідають біти 0101 - це і є CRC-4 код. Існують швидкі алгоритми для розрахунку CRC-кодів, що використовують спеціальні таблиці, а не ділення многочленів із залишком
CRC-коди здатні виявляти одиночну помилку в будь-якій позиції і, крім того, численні комбінації кратних помилок, розташованих близько одна від одної. При реальній передачі або зберіганні інформації помилки зазвичай групуються на деякій ділянці, а не розподіляються рівномірно по всій довжині даних. Таким чином, хоча для ідеального випадку двійкового симетричного каналу CRC-коди не мають ніяких теоретичних переваг у порівнянню, наприклад, з простими контрольними сумами, для реальних систем ці коди є дуже корисними.
Коди CRC використовуються дуже широко: модемами, телекомунікаційними програмами, програмами архівації і перевірки цілісності даних і багатьма іншими програмними і апаратними компонентами обчислювальних систем.
2.5 Варіантний аналіз основної проектної задачі і технічне обґрунтування вибору оптимального алгоритму завадостійкого кодування
Всі схеми завадостійкого кодування можна розділити на дві групи: кодування з виявленням помилок і кодування з виправленням помилок (корегуючі коди).
Найпростішими серед корегуючих є коди з повторенням. Це коди з високими корегуючими характеристиками та дуже великою надлишковістю. Тут один інформаційний символ повторюється n раз (n непарне), тобто це (n,1)-коди. Основним недоліком даного коду є низька швидкість, цифрові потоки або розміри файлів зростають в три і більше разів.
Коди Хеммінга це лінійні коди з відстанню dmin=3 та коди з відстанню dmin=4. Перші, виправляють всі одиничні помилки, а другі виправляють всі одиничні помилки і виявляють подвійні.
Хоча коди Хеммінга доволі економічні коди і прості в реалізації, але їх корегуюча здатність невелика, цифрові потоки можуть зростати на 30 і більше процентів.
Корегуючу здатності кодів Хеммінга можна збільшити за рахунок каскадного включення декількох кодерів Хеммінга. Цей підхід дозволив істотно підвищити ефективність застосування кодування в порівнянні з базовими некаскадними методами. Мінімальна відстань сформованого каскадного коду буде рівна
D=d1•d2, (2.4)
де d1 і d2 - мінімальні відстані складових кодів.
Але і надлишковість при цьому також зростає, що ставить питання доцільності використання корегуючих кодів взагалі та заміни їх кодами з виявлення помилок і системами з повторною передачею.
В згортних кодах обробляється неперервна послідовність символів без розподілу її на блоки. Вони є доволі простими з точки зору реалізації і тому знайшли найбільш широке застосування.
Найважливішими відмінностями згортних кодів від блокових є такі [8].
1. Згортні коди дозволяють проводити кодування і декодування потоків даних безперервно в часі.
2. Згортні коди не потребують блокової синхронізації.
3. Застосування згортних кодів дозволяє досягти дуже високої надійності передачі інформації.
Оскільки передбачається кодування файлів, які можна розбити на блоки, то застосування згортних кодів недоцільно, оскільки вони призначені для кодування потоку бітів в каналах зв'язку. Ці коди також характеризуються великою надлишковістю.
Циклічні коди є різновидністю поліноміальних кодів [8]. В таких кодах вважається, що елементи a1, a2, …an-1 деякого кодового слова є коефіцієнтами полінома від x:
(2.5)
Процес кодування можна подати як результат множення полінома m(x), що являє собою інформаційну послідовність на породжувальний многочлен g(x), а декодування як результат ділення на цей поліном. При деяких значеннях n поліноміальні ходи характеризуються властивістю циклічності. Це означає, що циклічна перестановка кодового слова знову приводить до кодового слова даного коду. Хоча декодери для циклічних кодів доволі прості, однак у порівнянні з кодами Хеммінга, вони все ж складніші.
Подобные документы
Алгоритми перешкодостійкого кодування процесом виявлення і виправлення одиничної помилки в циклічних кодах. Програмна реалізація процесу виявлення і виправлення помилок в циклічних кодах. Програма, що реалізує завдання засобами Borland C++Builder 6.
курсовая работа [384,2 K], добавлен 24.04.2014Обстеження і аналіз фільмотеки. Постановка задачі. Розроблення проекту бази даних фільмотеки. Розробка концептуальної моделі, специфікації програмних модулів, алгоритмів і графічних інтерфейсів програми. Кодування і тестування.
курсовая работа [2,9 M], добавлен 12.07.2007Історія створення мови С#. Аналіз алгоритмів кодування даних. Розробка системи в середовищі Visual Studio 2008 Express. Схема шифрування алгоритму DES. Дослідження алгоритму RC2. Приклади хешів RIPEMD-160. Програмна реалізація основних процедур системи.
дипломная работа [1,7 M], добавлен 25.10.2012Перевірка коду на парність. Формула для підрахунку парності або непарності одиниць в інформаційних розрядах. Побудова групових кодів і їх вживання для виявлення і виправлення помилок. Правила формування перевірочних символів. Використання кодів Хемминга.
лабораторная работа [639,7 K], добавлен 17.12.2010Обстеження і аналіз репозиторія програмного забезпечення. Аналіз репозиторія ПЗ. Розробка функціональної моделі. Розробка проекту Бази Даних "Репозиторій ПЗ". Розробка алгоритмів і графічних інтерфейсів програмних модулів.
курсовая работа [3,4 M], добавлен 05.09.2007Програмний продукт "Графічний кодер чорно-білих зображень". Аналіз технологій одержання компактних подань відеоінформації способом організації кодування й пошук шляхів підвищення їх ефективності. Кодування зображень на основі зміни градації яскравості.
дипломная работа [1,8 M], добавлен 29.06.2009Розробка програмних модулів базових операцій обробки на підставі розрядно-логарифмічного кодування. Дослідження алгоритму розв'язку системи лінійних алгебраїчних рівнянь. Реалізація алгоритму Гауса. Покращення точності розрахунків за допомогою рл-чисел.
курсовая работа [427,2 K], добавлен 20.11.2013Основні теоретичні відомості алгоритмів стиснення зображень: класи зображень та їх представлення в пам'яті, алгоритми та принципи групового кодування. Огляд та аналіз сучасних програмних засобів конвертування. Тестування, опис роботи програмного засобу.
курсовая работа [2,9 M], добавлен 15.03.2014Мета і основні етапи формування курсової роботи з дисципліни "Прикладна теорія цифрових апаратів". Вимоги до змісту та основні правила оформлення даної роботи, її значення в учбовому процесі студентів. Принципи кодування інформації та перетворення кодів.
методичка [874,3 K], добавлен 18.12.2010Проектування архітектури гри "Тетріс". Аналіз вимог до неї. Вивчення особливостей реалізації, кодування та тестування програми. Алгоритм побудови робочого поля. Вибір мови програмування. Розробка і налагодження тексту програми. Інструкції з експлуатації.
курсовая работа [460,9 K], добавлен 04.03.2014