Смекни!
smekni.com

Характеристика якості програмних засобів (стр. 1 из 2)

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ

Бердичівський політехнічний коледж

КОНТРОЛЬНА РОБОТА

з дисципліни “Технологія розробки програмного забезпечення”

Виконав:студент групи ПЗС-504

Горпинич О.О.

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

Тростянський Б.Г.

м. Бердичів

2007 р

Зміст

1. Поняття якості програмних засобів.

2. Основні поняття і принципи відладки та тестування програм.

3. Особливості об’єктного підходу на етапі конструювання програмних засобів.

4. Практичне завдання.

Список використаної літератури.

1. Поняття якості програмних засобів

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

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

- функціональність,

·- надійність,

·- легкість застосування,

- ефективність,

·- супровід,

- мобільність.

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

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

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

Ефективність - це відношення рівня послуг, які надає ПЗ користувачу при заданих умовах, до обсягу використовуваних ресурсів.

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

Мобільність - це здатність ПЗ бути перенесеним з одного середовища (оточення) в іншу, зокрема, з одного комп'ютера на іншій.

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

2. Основні поняття і принципи відладки та тестування програм

Успіх налагодження ПЗ у значній мірі визначає раціональна організація тестування. При налагодженні ПЗ відшукуються й усуваються, в основному, ті помилки, наявність яких у ПЗ установлюється при тестуванні. Як було уже відзначене, тестування не може довести правильність ПЗ, у кращому випадку воно може продемонструвати наявність у ньому помилки. Іншими словами, не можна гарантувати, що тестуванням ПЗ практично здійсненним набором тестів можна установити наявність кожної наявної в ПЗ помилки. Тому виникає дві задачі. Перша задача: підготувати такий набір тестів і застосувати до них ПЗ, щоб знайти в ньому по можливості більше число помилок. Однак чим довше продовжується процес тестування (і налагодження в цілому), тим більшої стає вартість ПЗ. Звідси друга задача: визначити момент закінчення налагодження ПЗ (чи окремого його компонента). Ознакою можливості закінчення налагодження є повнота охоплення пропущеними через ПЗ тестами (тобто тестами, до яких застосоване ПЗ) безлічі різних ситуацій, що виникають при виконанні програм ПЗ, і відносно рідкий прояв помилок у ПЗ на останньому відрізку процесу тестування. Останнє визначається відповідно до необхідного ступеня надійності ПЗ, зазначеної в специфікації його якості. Для оптимізації набору тестів, тобто для підготовки такого набору тестів, що дозволяв би при заданому їхньому числі (чи при заданому інтервалі часу, відведеному на тестування) виявляти більше число помилок у ПЗ, необхідно, по-перше, заздалегідь планувати цей набір і, по-друге, використовувати раціональну стратегію планування тестів. Проектування тестів можна починати відразу ж після завершення етапу зовнішнього опису ПЗ. Можливі різні підходи до вироблення стратегії проектування тестів, який можна умовно графічно розмістити (див. мал. 9.1) між наступними двома крайніми підходами. Лівий крайній підхід полягає в тім, що тести проектуються тільки на підставі вивчення специфікацій ПЗ (зовнішнього опису, опису архітектури і специфікації модулів). Будівля модулів при цьому ніяк не враховується, тобто вони розглядаються як чорні ящики. Фактично такий підхід вимагає повного перебору всіх наборів вхідних даних, тому що в противному випадку деякі частини програм ПЗ можуть не працювати при пропуску будь-якого тесту, а це значить, що помилки, що містяться в них, не будуть виявлятися. Однак тестування ПЗ повною безліччю наборів вхідних даних практично нездійсненно. Правий крайній підхід полягає в тім, що тести проектуються на підставі вивчення текстів програм з метою протестувати всі шляхи виконання кожної програм ПЗ. Якщо узяти до уваги наявність у програмах циклів з перемінним числом повторень, то різних шляхів виконання програм ПЗ може виявитися також надзвичайно багато, так що їхнє тестування також буде практично нездійсненно. Оптимальна стратегія проектування тестів розташована усередині інтервалу між цими крайніми підходами, але ближче до лівого краю. Вона включає проектування значної частини тестів по специфікаціях, але вона вимагає також проектування деяких тестів і по текстах програм. При цьому в першому випадку ця стратегія базується на принципах:

· на кожну використовувану функцію - хоча б один тест,

· на кожну область і на кожну границю зміни якої-небудь вхідної величини - хоча б один тест,

· на кожну особливу (виняткову) ситуацію, зазначену в специфікаціях, - хоча б один тест.

В другому випадку ця стратегія базується на принципі: кожна команда кожної програми ПЗ повинна бути перевірена хоча б на одному тесті. Оптимальну стратегію проектування тестів можна конкретизувати на підставі наступного принципу: для кожного програмного документа (включаючи тексти програм), що входить до складу ПЗ, повинні проектуватися свої тести з метою виявлення в ньому помилок. У всякому разі, цей принцип необхідно дотримувати відповідно до визначення ПЗ і змістом поняття технології програмування як технології розробки надійних ПЗ. Розрізняються два основних види налагодження (включаючи тестування): автономне і комплексне налагодження ПЗ. Автономне налагодження ПЗ означає послідовне роздільне тестування різних частин програм, що входять у ПЗ, з пошуком і виправленням у них фіксуємих при тестуванні помилок. Воно фактично включає налагодження кожного програмного модуля і налагодження сполучення модулів. Комплексне налагодження означає тестування ПЗ у цілому з пошуком і виправленням при тестуванні помилок у всіх документах (включаючи тексти програм ПЗ), що відносяться до ПЗ у цілому. До таких документів відносяться визначення вимог до ПЗ, специфікація якості ПЗ, функціональна специфікація ПЗ, опис архітектури ПЗ і тексти програм ПЗ.

3. Особливості об’єктного підходу на етапі конструювання програмних засобів

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

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

·- функціональну специфікацію модуля (опис функцій, виконуваних цим модулем по кожному з його входів).

Функціональна специфікація модуля будується так само, як і функціональна специфікація ПЗ.

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

Метод висхідної розробки(знизу – вгору) полягає в наступному. Спочатку будується модульна структура програми у виді дерева. Потім по черзі програмуються модулі програми, починаючи з модулів самого нижнього рівня (листи дерева модульної структури програми), у такому порядку, щоб для кожного програмного модуля були вже запрограмовані всі модулі, до яких він може звертатися. Після того, як усі модулі програми запрограмовані, виконується їхнє почергове тестування і налагодження у такому ж (висхідному) порядку, у якому велося їхнє програмування. Такий порядок розробки програми на перший погляд здається цілком природним: кожен модуль при програмуванні виражається через уже запрограмовані безпосередньо підлеглі модулі, а при тестуванні використовує вже налагоджені модулі. Однак, сучасна технологія не рекомендує такий порядок розробки програми. По-перше, для програмування якого-небудь модуля зовсім не потрібно наявності текстів використовуваних їм модулів ( для цього досить, щоб кожен використовуваний модуль був лише описаний в мірі, яка дозволяє побудувати правильне звертання до нього), а для тестування його можливо використовувані модулі заміняти їх імітаторами (заглушками). По-друге, кожна програма в якомусь ступені підкоряється деяким внутрішнім для неї, але глобальним для її модулів принципам реалізації, припущенням, структурам даних і т.п., що визначає її концептуальну цілісність і формується в процесі її розробки. При висхідній розробці ця глобальна інформація для модулів нижніх рівнів ще не ясна в повному обсязі, тому дуже часто приходиться їх перепрограмувати, коли при програмуванні інших модулів виробляється істотне уточнення цієї глобальної інформації (наприклад, змінюється глобальна структура даних). По-третє, при висхідному тестуванні для кожного модуля (крім головного) приходиться створювати ведучу програму, яка повинна підготувати для модуля, який проходить тестування, необхідний стан інформаційного середовища і зробити необхідне звертання до нього. Це приводить до великого обсягу «відладочного» програмування й у той же час не дає ніякої гарантії, що тестування модулів виконується саме в тих умовах, у яких воно буде виконуватися в робочій програмі.