Розробка програмного продукту. 


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



ЗНАЕТЕ ЛИ ВЫ?

Розробка програмного продукту.



Лабораторна робота №4

Розробка програмного продукту.

Етап реалізації

Мета: Ознайомлення з основними задачами, які необхідно розв’язати під час виконання етапу реалізації

Завдання: Навчитись реалізовувати моделі, які були побудовані на попередньому етапі проектування

Теоретична частина

Етап реалізації виконується в певному середовищі розробки і визначає надійність проекту. Вона досягається униканням або виправленням помилок.

Всі помилки усунути не можливо. Але ми можемо зменшити ймовірність їх виникнення, застосовуючи наступне:

· відхід від небезпечних методів, наприклад використання вказівників,

· обмежені принципи доступу (розділення пам'яті, принципи діапазону, інкапсуляція),

· використання типізованих мов і компіляторів,

· використання мов високого рівня,

· послідовність у використанні інтерфейсів між модулями,

· врахування надзвичайних ситуацій (порожні множини, цикли, невизначеності),

· використання існуючих компонентів,

· мінімум відмінностей між концептуальною моделлю і моделлю реалізації.

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

Він вимагає:

· виявлення помилок,

· опрацювання помилок,

· виправлення помилок.

Опрацювання помилок є можливим, якщо виконана відповідна діагностика, можливо - вказання рядка з помилкою.

Існує два методи опрацювання помилок:

· перевірка даних, наприклад, виконання тестованих формул,

· порівняння результатів декількох версій модулів.


Ключові чинники успіху:

· високоякісна і детальна специфікація,

· хороше знання середовища розробки,

· відповідність стандартів,

· опрацювання помилок.

Основні результати етапу:

· покращений документ, що описує вимоги,

· покращена аналітична модель,

· покращений проект,

· код з перевіреними модулями,

· звіт про перевірені модулі,

· розроблена база даних,

· планування етапу тестування.

Ця стадія виробництва програмного забезпечення (ПЗ) увійшла до ери автоматизованого виробництва ПЗ. Тут використовуються такі інструменти, як швидка розробка програм (Rapid Application Development, RAD) і мови високого рівня.

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

Надійність програмного забезпечення

Надійність є найголовнішим чинником створення ПЗ. Вимоги клієнтів до ПЗ зазвичай ростуть швидше, ніж вимоги до апаратури. Зараз існує надзвичайно різноманітне ПЗ і воно постійно ускладнюється.

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

Основними методами збільшення надійності є:

· запобігання помилкам;

· визначення похибки помилок.

Запобігання помилкам

Всіх помилок уникнути неможливо, але є способи, що допоможуть зменшити їхню кількість:

· Не використовувати методи з великою вірогідністю помилок (наприклад, використання вказівників і т.п.);

· Використання принципу обмеженого доступу (інкапсуляція, розділення пам'яті і т.д.);

· Використання мов і компіляторів з перевіркою відповідності типів;

· Використання мов високого рівня;

· Строго визначати інтерфейси користувача;

· Приділити увагу виключенням (порожні множини, порожні цикли, нульові значення, змінні, що не були ініціалізовані, і т.д.);

· Використання готових компонентів (бібліотеки, класи і т.д.);

· Мінімізація відмінностей між абстрактною моделлю і моделлю реалізації.

Небезпечні техніки

Програміст може подолати проблему різними способами. Шляхи і вибір методу залежить від проблеми, досвіду, його переваг, вибору мови, середовища і т.п.

Але методів з більшою вірогідністю помилки слід уникати. Іноді їх дійсно необхідно застосувати. У таких випадках методи обробки помилок і контролю результатів повинні розроблятися дуже ретельно.

Найнебезпечнішою технікою програмування є:

· Використання команди "goto". Ця команда може призвести до труднощів розуміння програм і їх підтримки (внесення подальших змін).

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

· Використання вказівників і адресної арифметики з їх використанням. Вказівники є надзвичайно небезпечними. Вони дозволяють проникнути в пам'ять і здійснити в ній будь-які зміни. На них необхідно звертати увагу.

· Паралельне обчислення. Паралельні обчислення приводять до складної залежності часу і так званому галопуванню (залежить від випадкових результатів деяких потоків). Їх важко перевірити.

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

· Використання рекурентних співвідношень. Програму з рекурентними співвідношеннями важко зрозуміти і трасувати.

· Використання динамічного розподілу пам'яті. Динамічний розподіл пам'яті без контролю даних може призвести до втрат інформації і "підвісити" програму.

· Несподівані побічні ефекти у функціях і процедурах.

· Використання складних виразів без дужок. Таке відбувається, коли програмісти покладаються на пріоритет операторів і уникають дужок. Це не веде до збільшення продуктивності. Але підхід може викликати багато помилок і труднощів в управлінні.

· Обробка даних багатьма процесами без синхронізації (блокування, транзакції). Деякі з методів є корисними, але їх потрібно використовувати обережно.

Принцип обмеженого доступу

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

Він може бути сформульований таким чином:

Все, що повинно бути схованим, слід приховати.

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

Принцип обмеженого доступу реалізується інкапсуляцією (відомою з Modula 2) і об'єктно-орієнтованим підходом.

· приватні поля, змінні, методи

· таблиці експорту

· таблиці імпорту (визначають внутрішні ресурси)

Строгий контроль типів

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

Тип визначає значення даних і є формальним обмеженням конструкції змінних і об'єктів.

Мета типізації - керувати формальним програмуванням.

Типізація підтримує об'єктно-орієнтоване програмування. Ім'я зазвичай відображає семантику об'єкту, наприклад, D представляє дані (від Data). У мовах з сильною типізацією (наприклад, Pascal і Modula2) така ідентифікація повинна бути присутньою в оголошенні типів. Оголошення перевіряються (наприклад, якщо програміст оголосить X як ціле число (integer), компілятор перевірить, чи всі виклики сприймають X як ціле число.

Сильна типізація запобігає помилкам в 80% випадків. На жаль, в багатьох комерційних продуктах цей контроль не повний, або ним і зовсім нехтують (Smalltalk, SQL).

Система сильного статичного контролю типів містить наступні елементи:

· Специфікація всіх видів змінних і об'єктів, наприклад:

ü Typedef TypWorker = struct{string name, int salary, Works_in, int salary_without_taxes()};

ü TypWorker Worker;

· Визначення сигнатури всіх операторів, процедур, функцій, методів, наприклад:

ü Boolean works_long (in TypWorker wrkr, in WorkSphere, out years_works)

ü Визначення інтерфейсів, класів і інших інкапсульованих абстракцій.

· При визначенні параметрів ми вказуємо параметри вводу і виводу.

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

Похибка

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

Тому програма повинна:

· виявляти помилки;

· відновлюватися після помилки, коректно завершуватися;

· проводити корекцію помилок, тобто вносити зміни, щоб позбутися помилки.

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

Є два основні методи автоматичного виявлення помилок:

· Перевірка коректності даних. Метод складається з розміщення додаткових рядків в код для того, щоб перевірити коректність даних.

· Порівняння декількох версій модулів.

Транзакції

Транзакція - послідовність операцій що виконуються, які не можуть бути розділені і є одним цілим.

Транзакція складається з наступних операцій:

· читання даних x транзакцією T,

· запис даних x транзакцією T,

· відміна транзакції T,

· ухвалення транзакції T.

Транзакції використовуються для компактності та у випадку паралельних операцій.

Якщо виконується значна кількість процесів, компактність може не дотриматися і є можливість виникнення помилок.

 

 

У таблиці 1. наведена схема роботи двох процесів А і B, які використовують загальні дані.

Таблиця 1.

У Таблиці 1. наведено два паралельні процеси, які не порушують компактність.

Таблиця 2.

 

У таблиці 2. наведено два процеси, які порушують компактність.

Блок 6 не компактний. Є два процеси, які при незалежному виконанні дадуть результат 11. Відсутність синхронізації призведе до того, що один з процесів не буде оновлений.

Приклад: ми маємо 4 автори, які оновлюють тест. Якщо немає ніякого протоколу щодо оновлень, деякі виправлення можуть бути втрачені.

Транзакції роблять можливою підтримку сумісності процесів. При цьому ручна синхронізація або домовленості не потрібні.

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

Уявімо банківську систему з наступними операціями над рахунками клієнта F.

1. Клієнт читає магнітну картку і авторизується

2. Клієнт оголошує суму

3. Рахунок перевіряється

4. Залишок на рахунку зменшується на вказану суму

5. Посилається замовлення передачі

6. Касир знімає суму з рахунку

7. Касир проводить оплату

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

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

Постулати ACID

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

Під транзакціями розуміють наступні властивості:

(A) Атомарність – у всіх транзакціях виконується або одна операція, або нічого.

(C) Цілісність – якщо транзакція увійшла до цілісної бази даних, то поля і база даних повинні теж залишитися цілісними.

(I) Ізоляція – транзакція не знає про інші транзакції і не втручається в їх дії. Дії, що виконуються однією транзакцією, не повинні бути видимі іншим, поки не будуть отримані результати.

(D) Стійкість – після того, як транзакція завершиться, результати записуються на жорсткий диск і не можуть бути змінені випадковим чином, наприклад, відключенням електрики.

Транзакції в SQL

У SQL кожна транзакція починається з почати транзакцію (BEGIN TRANSACTION), і закінчується операцією фіксування(COMMIT), що позначає правильне закінчення, або відкат (ROLLBACK) (або відміна (ABORT)), означає повернення до початкового стану (або відміну) транзакції.

Такі команди, як вибрати, вставити, відновити, видалити, створити запускають транзакцію, якщо вона ще не була запущена.

Транзакція виконується, поки команда фіксувати (підтверджуюча) або відкат(що перериває або повертає). Транзакція може містити в собі такі слова, як видалити, створити, вставити, створити і т.д.

Приклад транзакції з командами відміна та фіксування наведені на рис. 3:

Рисунок 3. Приклад використання транзакцій.

Метод 1.

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

Метод 2.

Уникнення взаємних блокувань. Є багато таких методів, наприклад:

Попередній запит ресурсу: перед початком кожна транзакція визначає свої потреби. Зміни не вносяться. Недолік - зниження ефективності паралельного обчислення.

Чекай-помри (wait-die): якщо транзакція намагається дістати доступ до заблокованого ресурсу, вона відміняється. Це неприпустимо для діалогових систем, оскільки користувач може бути збентежений потребою багатократного введення даних. Це зменшує продуктивність.

Середовище реалізації

Середовище процедурних мов

Це традиційне середовище реалізації. Процеси і модулі можуть бути представлені цілими програмами. Групи Процедур і функцій відповідають системним функціям. Пам'ять і контейнери в проекті відповідають структурам мови.

Процедурні мови не забезпечують достатні механізми для контролю доступу до даних. Доступ до структур отримується легко. Є інші мови, наприклад, Ada, Modula 2, які мають досконаліші механізми.

Порядок виконання роботи

3.1. Ознайомитися з теоретичною частиною.

3.2. Виконати етап реалізації для свого індивідуального завдання.

3.3. Оформити звіт згідно результатів виконаної роботи.

 

Вимоги до звіту

Оформити звіт для захисту лабораторної роботи за зразком:

· назва роботи

· мета роботи

· порядок роботи

· короткі теоретичні відомості

· аналіз отриманих результатів та висновок.

Оформлення звіту

Звіт повинен відповідати вимогам, перерахованим в розділі 3, – Вимоги до звіту. Звіт оформляється на аркушах А4 формату (додатково додається електронний варіант). Титульна сторінка повинна містити: назву предмету, такий заголовок:


Звіт

до лабораторної роботи № 4

Розробка програмного продукту.

Етап реалізації

 

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


Рекомендована література

1. Энди Кармайкл, Дэн Хейвуд “Быстрая и качественная разработка программного обеспечения” Москва: Издательский дом “Вильямс”, 2001, 450 ст.;

2. Антон Элиенс “Принципы объектно-ориентированной разработки программ” Москва: Издательский дом Вильямс 2002, 1 кв., 543 ст.;

3. Иан Грэхем “Объектно-ориентированные методы. Принципы и практика” Издательский дом Вильямс 2004., 434 ст.;

4. Поль М. Дюваль, Стивен М. Матиас III, Эндрю Гловер “Непрерывная интеграция: улучшение качества программного обеспечения и снижение риска ” Издательский дом Вильямс 2008., 645 ст.;

5. Роберт Л. Круз “Структуры данных и проектирование программ” издательство "Бином. Лаборатория знаний" · 2008, 580 ст.;

6. Владимир Грекул, Галина Денищенко, Нина Коровкина “Проектирование информационных систем” издательство "Интернет-университет информационных технологий" · 2008, 478 ст.;

7. Белла Виснадул, Елена Кокорева, Лариса Гагарина “Технология разработки программного обеспечения ” издательство "Инфра-М" · 2008, 730 ст.;

8. Федоров Н.В. “Проектирование информационных систем на основе современных case-технологий ” издательство "МГИУ" · 2007, 556 ст.;

9. Стив Макконнелл “Профессиональная разработка программного обеспечения” издательство "Символ-Плюс" · 2007, 582 ст.;

10. Уокер Ройс “Управление процессом создания программного обеспечения” издательство "Лори" · 2007, 388 ст.;

11. Маккарти Дж., Маккарти М. “Правила разработки программного обеспечения” издательство "Питер" · 2007, 468 ст.;

12. Владимир Липаев “Процессы и стандарты жизненного цикла сложных программных средств. Справочник” издательство "Синтег" · 2006, 742 ст.;

13. Джек Гринфилд, Джон Крупи, Кит Шорт, Стив Кук, Стюарт Кент “Фабрики разработки программ (Software Factories): потоковая сборка типовых приложений, моделирование, структуры и инструменты” издательство "Диалектика" · 2006, 546 ст.;

14. Владимир Липаев “Анализ и сокращение рисков проектов сложных программных средств” издательство "Синтег" · 2005, 678 ст.;

15. Карл Вигерс “Разработка требований к программному обеспечению” издательство "Русская Редакция" · 2003, 487 ст.;


Навчальне видання

 

Технологія програмування та створення програмних продуктів

 

Методичні вказівки до лабораторної роботи № 4 “ Розробка програмного продукту. Етап реалізації ” з дисципліни Технологія програмування та створення програмних продуктів для студентів спеціальності 0804 “Комп’ютерні науки”

 

 

Укладач:

Лабораторна робота №4

Розробка програмного продукту.

Етап реалізації

Мета: Ознайомлення з основними задачами, які необхідно розв’язати під час виконання етапу реалізації

Завдання: Навчитись реалізовувати моделі, які були побудовані на попередньому етапі проектування

Теоретична частина

Етап реалізації виконується в певному середовищі розробки і визначає надійність проекту. Вона досягається униканням або виправленням помилок.

Всі помилки усунути не можливо. Але ми можемо зменшити ймовірність їх виникнення, застосовуючи наступне:

· відхід від небезпечних методів, наприклад використання вказівників,

· обмежені принципи доступу (розділення пам'яті, принципи діапазону, інкапсуляція),

· використання типізованих мов і компіляторів,

· використання мов високого рівня,

· послідовність у використанні інтерфейсів між модулями,

· врахування надзвичайних ситуацій (порожні множини, цикли, невизначеності),

· використання існуючих компонентів,

· мінімум відмінностей між концептуальною моделлю і моделлю реалізації.

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

Він вимагає:

· виявлення помилок,

· опрацювання помилок,

· виправлення помилок.

Опрацювання помилок є можливим, якщо виконана відповідна діагностика, можливо - вказання рядка з помилкою.

Існує два методи опрацювання помилок:

· перевірка даних, наприклад, виконання тестованих формул,

· порівняння результатів декількох версій модулів.


Ключові чинники успіху:

· високоякісна і детальна специфікація,

· хороше знання середовища розробки,

· відповідність стандартів,

· опрацювання помилок.

Основні результати етапу:

· покращений документ, що описує вимоги,

· покращена аналітична модель,

· покращений проект,

· код з перевіреними модулями,

· звіт про перевірені модулі,

· розроблена база даних,

· планування етапу тестування.

Ця стадія виробництва програмного забезпечення (ПЗ) увійшла до ери автоматизованого виробництва ПЗ. Тут використовуються такі інструменти, як швидка розробка програм (Rapid Application Development, RAD) і мови високого рівня.

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



Поделиться:


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

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