- •1.Розробка системи оперативної довідки
- •1.1.Меню Help
- •1.2. Малюнок 1. Вікно довідки. Кнопка Help в екранній формі
- •1.4.Виклик контекстно-залежної довідки кнопкою What's This?
- •1.5. Малюнок 2. Екранна форма, у якій установлена кнопка виклику контекстної довідки. Використання html Help Workshop
- •1.5.1.Створення проекту системи оперативної довідки
- •Малюнок 3. Діалогове вікно New.
- •Малюнок 4. Діалогове вікно Existing Files.
- •1.5.2.Таблиця змісту
- •Малюнок 5. Вікно щойно створеного проекту.
- •Малюнок 6. Заповнення таблиці змісту.
- •1.5.3.Предметний покажчик
- •Малюнок 7. Заповнення контекстного вказівника.
- •1.5.4.Додавання в проект html-файлів розділів довідки
- •1.5.5. Малюнок 8. Заготівля html-файлу, оформлена html Help Workshop. Зв'язки між файлами розділів і url
- •1.6.Додавання і видалення файлів розділів довідки
- •Малюнок 9. Діалогове вікно Topіc Fіles.
- •1.7.Компіляція системи оперативної довідки
- •1.8.Контекстно-залежні розділи довідки
- •Малюнок 10. Діалогове вікно Options.
- •Малюнок 11. Wizard Selection
- •Малюнок 12. Вікно Application Builder.
- •1.8.1.Включення файлу відображення в проект системи оперативної довідки
- •1.8.2. Малюнок 13. Включення файлу відображення в проект системи оперативної довідки. Зв'язування HelpContextіD з html — файлами розділів довідки
- •1.8.3. Малюнок 14. Діалогове вікно для організації зв'язування файлів розділів довідки і HelpContextі у додатку. Розділи довідки, що викликаються кнопкою What's This?
- •Малюнок 15 Екранна форма Visual FoxPro, налаштована на використання довідки What's This?
- •1.9.Поширення готової системи оперативної довідки
- •2.Пошук і обробка помилок, тестування проекту
- •2.1.Проблема помилок у програмному продукті
- •2.2.Пошук помилок у програмному коді
- •2.2.1.Синтаксичні помилки
- •2.2.2.Логічні помилки
- •2.2.3.Виключення
- •2.3.Розбивка коду на модулі для мінімізації помилок
- •2.4.Помилки при передачі параметрів
- •2.5.Використання команд exіt і return
- •2.6.Обробка ушкоджених файлів
- •2.7.Тестування та налагодження додатків
- •2.7.1.Технологія тестування
- •2.7.2.Створення середовища для тестування
- •2.7.3.Створення тестових наборів даних, що забезпечують повноту накриття додатка
- •2.7.4.Документування тестових наборів
- •2.8.Методика перехоплення помилок
- •2.9.Налагоджувальник
- •Малюнок 16. Налагоджувальник Visual FoxPro.
- •2.9.1.Використання вікна Trace
- •Малюнок 17. Панель інструментів налагодження
- •Малюнок 18 Діалогове вікно Breakpoints
- •2.9.2.Використання вікна Locals
- •Малюнок 19. Діалогове вікно Locals
- •2.9.3.Використання вікна Watch
- •Малюнок 20. Діалогове вікно Watch.
- •2.9.4.Діалогове вікно Call Stack
- •2.9.5.Використання вікна Debug Output
- •2.9.6.Діалогове вікно Event Tracking
- •Малюнок 21. Діалогове вікно Event Tracking.
- •2.10.Використання Coverage Profiler
- •Малюнок 22. Додаток Coverage Profiler у режимі відображення покриття.
- •2.11. Малюнок 23. Додаток Coverage Profiler у режимі відображення профілю. Використання процедур обробки помилок
- •2.11.1.Використання методів обробки події error в об'єктах
- •3.Література
- •4.Перелік ілюстрацій
2.11.1.Використання методів обробки події error в об'єктах
У прикладах, представлених вище, демонструвалася технологія обробки аварійних ситуацій за допомогою оператора перехоплення ON ERROR. Ця технологія була присутня у всіх версіях FoxPro і Visual FoxPro, починаючи з найперших. Але в останніх версіях, у яких реалізовані механізми об'єктно-орієнтованого програмування, з'явилася можливість використовувати іншу технологію. Справа в тім, що кожен клас має свій метод обробки події ERROR, а виконавча система Visual FoxPro при виникненні аварійної ситуації с початку передає керування саме цьому методу поточного активного об'єкта в програмі, а вже потім виконує глобальну процедуру, призначену в ON ERROR. Якщо ж у додатку така відсутня, виконується процедура виконавчої системи.
При передачі керування методу обробки події ERROR одночасно передаються три параметри.
Системний номер помилки.
Ім'я методу, при виконанні якого помилка виникла.
Номер рядка програмного коду, виконання якої привело до аварійної ситуації.
Від процедури обробки помилок, виконуваною виконавчою системою Visual FoxPro за замовчуванням, для користувача користі мало. Ця процедура виводить системне вікно повідомлення з номером помилки і чотирма кнопками. Перша з них — Cancel (Скасування). Якщо користувач клацне на ній, то поточна трансакція просто “зависне”. Якщо додаток виконується в середовищі Visual FoxPro, а не як автономне, можна вибрати кнопку Suspend, але незрозуміло, що ж користувачу робити після призупинення програми. Третя кнопка — Ignore. Ігнорувати помилку, звичайно, можна, але це, швидше за все, просто приведе до нової помилки. Залишається четвертий варіант — Help. Користувач одержить докладне пояснення, як подібна помилка взагалі може виникнути, але що йому робити в даній конкретній ситуації? З усього сказаного випливає тільки одне: не можна передоручати виконавчій системі таку важливу функцію, як обробка аварійної ситуації. Досить того, що вона може передати в цьому випадку керування тій процедурі, що ви самі для цього передбачите.
В цій процедурі окрім обробки помилки необхідно передбачити протоколювання всіх аварійних ситуацій і коректне завершення додатку, якщо неможливо виправити помилку автоматично, або за допомогою користувача. Протокол13 необхідний буде програмісту для наступного аналізу аварійної ситуації і виправлення помилок.
Технологія об'єктно-орієнтованого програмування дозволяє розробляти власні базові класи, у яких маються методи обробки помилок, тобто події ERROR. Потім можна формувати похідні від них — класи окремих екранних форм і т. п.
Якщо в похідних класах повинна бути якась специфічна обробка помилок, тобто метод ERROR() базового класу перевантажується, то наприкінці нового варіанта має сенс усе-таки уключити виклик методу базового класу. Це робиться наступним оператором:
DODEFAULT(nError, cMethod, nLineNo)
Можна також і звернутися до методу ERROR() класу батьківського об'єкта-контейнера. У цьому випадку оператор виклику буде мати вид:
This.Parent.Error(nError, cMethod, nLineNo)
Таким чином, можна організувати обробку виниклої помилки у вигляді своєрідної естафети, передаючи її від об'єктів більш низького рівня до більш старших, причому кожний з них додає свою інформацію до загального протоколу. У результаті можна зібрати досить докладні зведення про стан системи в момент виникнення аварійної ситуації.
Скільки часу потрібно запланувати на налагодження і тестування додатка, перш ніж передати його замовнику? Це залежить від ряду факторів.
Наскільки гостро цей додаток потрібен замовнику.
Наскільки критична область застосування додатка до його збоїв чи аваріям (представте на хвилинку, що відбудеться при збої системи керування аеропортом чи устаткуванням хірургічної клініки).
Як бачиться керівництву життєвий цикл додатка. Чи очікується, що додаток відразу буде передано в повномасштабну експлуатацію чи планується деякий період адаптації і дослідно-промислової експлуатації.
Фактично налагодження йде увесь час, поки додаток знаходиться в експлуатації. Просто воліють називати цей процес по-іншому, наприклад супроводом.
Не існує якоїсь єдино правильної методики створення програмного забезпечення високої якості, придатної на усі випадки життя. Точно так само не існує єдиного методу обробки помилок. Дуже багато чого залежить від конкретного додатка та кваліфікації розробників. Але чим більше різноманітних методик ви освоїте, тим легше буде підібрати придатну для конкретного випадку.
