Системне програмне забезпечення

У складі системного ПЗ можна виділити дві складові:

  1. базове ПЗ;
  2. сервісне ПЗ.

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

Сервісне ПЗ– програми і програмні комплекси, які розширюють можливості базового ПЗ і організують більш зручне середовище роботи користувача.

В базове ПЗ входять:

  1. операційна система;
  2. операційні оболонки (текстові, графічні);
  3. мережева операційна система.

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

Операційна система– сукупність програмних засобів, які забезпечують управління апаратної частини комп’ютера і прикладних програм, а також їх взаємодію між собою і користувачем.

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

Для роботи з ОС необхідно оволодіти мовою цього середовища – сукупність команд, структура яких визначається синтаксисом цієї мови.

ОС виконує наступні функції:

  • управління роботою кожного блоку ПЗ та їх взаємодією;
  • управління виконанням програм;
  • організація збереження інформації у зовнішній пам’яті;
  • взаємодія користувача з комп’ютером (підтримка інтерфейсу користувача).

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

Операційні системи для ПК діляться:

  • на одно- та багатозадачні (в залежності від числа паралельного виконання прикладних процесів);
  • одно- і багатокористувацькі (в залежності від числа користувачів, одночасно працюючих з ОС);
  • непереносимі і переносимі на інші типи комп’ютерів;
  • немережеві і мережеві, забезпечують роботу ЕОМ у мережі.

Операційні системи, як правило, порівнюють за наступними критеріями:

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

Найбільш розповсюдженими ОС для ПК в наш час є:

  • Windows (Microsoft);
  • UNIX;
  • OS/2 (IBM).

ОС OS/2 розроблена IBM для ПК на основі системної прикладної архітектури, яка раніше використовувалась на великих ЕОМ. Це багатозадачна, багатокористувацька ОС, забезпечує як текстовий так і графічний інтерфейс користувача. OS/2 забезпечує:

  • підтримку графічного інтерфейсу користувача;
  • одночасну обробку декількох додатків;
  • багатопотокову обробку декількох задач одного додатку;
  • 32-розрядну обробку даних;
  • стиснення даних при запису на магнітний диск;
  • захист пам’яті.

Важливими особливостями OS/2 є високоефективна файлова система HPFS (High Performance File System), яка має переваги для серверів БД (на відміну від MS DOS підтримуються довгі імена файлів), а також підтримка мультипроцесорної обробки – до 16 процесорів типу Intel і Power PC. OS/2 Warp має вбудований доступ до Internet, систему розпізнавання мови VoiceType, інтегровану версію Lotus Notes Mail для передачі електронної пошти. В OS/2 можуть виконуватись прикладні програми Windows 3.х, але не можуть виконуватись додатки, які працюють в середовищі WindowsNT.

ОС UNIX, створена корпорацією Bell Laboratory, реалізує принцип відкритих систем і широкі можливості по об’єднанню у складі однієї обчислювальної системи різнорідних технічних і програмних засобів. UNIX володіє наступними властивостями:

  • переносимість прикладних програм з одного комп’ютера на інший;
  • підтримка розподіленої обробки даних в мережі ЕОМ;
  • сумісність з процесорами RISC.

ОС UNIX розповсюджена для суперкомп’ютерів, робочих станцій і професійних ПК, має велике число версій, які розроблені різними виробниками ПЗ.

Мережева ОС– цекомплекс програм, який забезпечує обробку, передачу і збереження даних в мережі. Мережева ОС надає користувачам різні види мережених служб (управління файлами, електронна пошта, процеси управління мережею і т.д.), підтримують роботу в абонентських системах. Мережеві ОС використовують архітектуру «клієнт-сервер» або однорангову архітектуру. Найбільш поширеними є Windows 95, LAN Server, NetWare.

Windows NT є багатозадачною, призначеною для архітектури «клієнт-сервер» і використання різних протоколів транспортного рівня мереженої ОС (IPX/SPX, TCP/IP, Net Bios), має 32-розрядну архітектуру і забезпечує наступні функції локальної мережі:

  • можливість кожної абонентської системи в мережі бути сервером або клієнтом;
  • сумісну роботу групи користувачів;
  • адресацію оперативної та зовнішньої пам’яті великого розміру;
  • багатозадачність і багатопотоковість обробки даних;
  • підтримку мультипроцесорної обробки та ін.

Характеристики деяких ОС.

ОС Об’єм ОЗУ, Мбайт Пам’ять на МД, Гбайт Багато-процесорна обробка Засоби взаємодії прикладних програм
OS/2 Warp 4.0 12-24 100-300 Немає Java, Open DOC
MS Windows 2000 Є Open JL, PM API, WIN 32
MS Windows XP Є OLE, Open JL, WIN 32

Операційні оболонки – спеціальні програми, призначені для полегшення роботи користувача з командами ОС. Операційні оболонки мають текстовий та графічний варіанти інтерфейсу. Найбільш популярні такі оболонки MS DOS, як Norton Commander, DOS Navigator, Volkov Commander та інші. Ці програми суттєво спрощують складність роботи користувача.

Серед графічних оболонок MS DOS можна виділити Windows 3.1, Windows 3.11 for Work Group, які розширюють набір основних (диспетчер файлів, графічний редактор, текстовий редактор і т.д.) і сервісних функцій, які забезпечують створення для користувача систем обробки інформації у складі однорангових локальних мереж.

Розширенням базового ПЗ комп’ютера є набір програм, які можна класифікувати по функціональному признаку наступним чином:

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

Ці програми часто називають утилітами.

Утиліти– програми, які служать для виконання допоміжних операцій обробки даних або обслуговування комп’ютерів.

1.2.2. Інструментарій технології програмування

Інструментарій технології програмування – це програмні продукти, призначені для підтримки технології програмування.

Середовища для створення додатків– сукупність мов і систем програмування, інструментальні середовища користувача, а також різні програмні компоненти для налагодження і підтримки створюваних програм.

Мова програмування– це формалізована мова для описання алгоритму розв’язування задач на комп’ютері.

Мови програмування можна умовно розділити на наступні класи:

· машинні мови – це мови, які сприймаються апаратною частиною комп’ютера (машинні коди);

· машинно-орієнтовані мови, відображають структуру конкретного типу комп’ютера (асемблер);

· процедурно-орієнтовані мови – це мови, в яких є можливість описання програми як сукупність процедур, або підпрограм (С, Pascal та ін.);

· проблемно-орієнтовані мови, призначені для розв’язання задач деякого класу.

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

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

· компілятор (транслятор);

· інтегроване середовище розробки програм (не завжди);

· налагоджувач;

· засоби оптимізації коду програми;

· набір бібліотек;

· редактор зв’язків;

· сервісні засоби (утиліти) (для роботи з бібліотеками, текстовими і двійковими файлами);

· довідкові системи;

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

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

Відгадчики (debugger) – спеціальні програми, призначені для трасування і аналізу виконання інших програм. Трасування – це забезпечення виконання в операторному варіанті.

Інструментальне середовище користувача– це спеціальні засоби, вбудовані в пакети прикладних програм, такі як:

· бібліотека функцій, процедур, об’єктів і методів обробки;

· макрокоманди;

· клавішні макроси;

· мовні макроси;

· конструктори екранних форм та об’єктів;

· генератори додатків;

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

· конструктори меню та ін.

Інтегровані середовища розробки програмоб’єднують набір засобів для їх комплексного застосування на технологічних етапах створення програми.

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

Однією з сучасних засобів розробки ІС є CASE-технологія (CASE – Computer-Aided System Engineering) – програмний комплекс, автоматизує весь технологічний процес аналізу, проектування, розробки і супроводження складних програмних систем.

Засоби CASE-технологій діляться:

· на вбудовані в систему реалізації – всі рішення по проектуванню і реалізації прив’язки до вибраної СУБД;

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

Основна перевага CASE-технології – це підтримка колективної роботи над проектом за рахунок можливості роботи в локальній мережі розробників, експорту (імпорту) довільних частин проекту, організованого управління проектами.

В деяких CASE-системах підтримується кодогенерація програм – створення каркасу програм і створення повного продукту.

Приклади програмного продукту для створення додатку: Visual C++; Visual Basic і т.д.

Пакети прикладних програм

Класифікація пакетів прикладних програм (ППП)

Рис. 1.8. класифікація пакетів прикладних програм

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

· ППП автоматизованого бухгалтерського обліку;

· ППП фінансової діяльності;

· ППП управління персоналом;

· ППП управління виробництвом;

· банківські інформаційні системи і т.п.

Основні тенденції розвитку:

· створення програмних комплексів у вигляді автоматизованих робочих місць (АРМ) управлінського персоналу;

· створення інтегрованих систем управління предметної області на базі обчислювальних мереж, які об’єднують АРМ;

· організація даних великих інформаційних систем у вигляді розподіленої БД у мережі ЕОМ;

· наявність простих мовних засобів кінцевого користувача та ін.

ППП автоматизованого проектування призначені для підтримки роботи конструкторів і технологів, пов’язаних з розробкою креслень, схем, графічним моделюванням і конструюванням. Особливими рисами цього класу ППП є великі вимоги до апаратного забезпечення, наявність бібліотек вбудованих функцій, об’єктів, інтерфейсів з графічними системами та БД (AutoCAD).

До ППП загального призначенняналежать:

1. Системи управління базами даних(СУБД), забезпечують організацію та зберігання локальних БД на автономних комп’ютерах або центральне зберігання БД на файл-сервері і мережений доступ до них. Сучасні СУБД (наприклад, MS Access) містять елементи CASE-технології процесу проектування, а саме:

o візуалізована схема БД;

o реалізована автоматизована підтримка цілісності БД при різних видах обробки (включення, видалення, модифікація);

o надаються так звані майстри, які забезпечують підтримку процесу проектування;

o створені шаблони (прототипи) структур БД, звітів, форм і т.д.

2. Сервери БД – це ПЗ, яке призначене для створення і використання при роботі в мережі інтегрованих БД в архітектурі «клієнт-сервер». Багатокористувацькі СУБД в мереженому варіанті обробки інформації зберігають дані на файл-сервері, спеціально виділеному комп’ютері, але сама обробка ведеться на робочих станціях. Сервери БД більшу частину обробки даних (зберігання, пошук, передача даних клієнту) виконують самостійно, одночасно забезпечують даними велику кількість користувачів мережі. Спільним для різних видів серверів БД є використання реляційної мови програмування SQL (Structured Query Language) для реалізації запитів до даних. Проблеми: забезпечення цілісності даних, тиражування даних по вузлах мережі і синхронне оновлення.

3. Генератори звітів (сервери звітів), забезпечують реалізацію запитів і формування звітів у друкованому чи екранному вигляді в умовах мережі з архітектурою «клієнт-сервер». Сервер звітів підключається до сервера БД.

4. Текстові процесори,призначені для роботи з текстовими документами. Розвитком даного напряму є видавницькі системи (Microsoft Word).

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

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

7. Інтегровані пакети набір декількох програмних продуктів, які доповнюють один одного функціонально, підтримують одну технологію, реалізовані на одній операційній та обчислювальній платформі (Microsoft Office). Компоненти інтегрованих пакетів можуть працювати ізольовано один від одного, мають спільний інтерфейс, завдяки чому їх легше освоювати.

Методо-оріентовані ППП. Цей клас охоплює програмні продукти, які забезпечують незалежно від предметної області і функції інформаційних систем математичні, статичні та інші способи розв’язування задач. Найбільш поширені методи математичного програмування, розв’язування диференціальних рівнянь, імітаційного моделювання, дослідження операцій (Storm, SYSTAT, SAS та ін.).

Офісні ППП.Програми, які забезпечують орієнтаційне управління діяльністю офіса:

· органайзери (планувальники)– ПЗ для планування робочого часу, складання протоколу зустрічей, розкладів, ведення записів та телефонної книжки. У склад входять: калькулятор, записна книжка, годинник, календар і т.д.

· програми перекладачі, засоби перевірки орфографії, розпізнавання тексту{Lingvo};

· комунікаційні пакети,призначені для організації взаємодії користувачів з віддаленими абонентами чи інформаційними ресурсами мережі;

· браузери, засоби створення Web-сторінок;

· засоби електронної пошти.

Настільні видавницькі системи. Цей клас ПЗ включає програми (PageMaker, CorelDraw, PhotoShop for Windows і т.д.), які забезпечують інформаційну технологію комп’ютерної видавницької діяльності:

· форматування та редагування тестів;

· автоматичну розбивку тексту на сторінки;

· комп’ютерну верстку друкованої сторінки;

· монтування графіки;

· підготовка ілюстрацій і т.п.

Програмні засоби мультимедіа.Основнепризначення цих програмних засобів – створення та використання аудіо- та відеоінформації для розширення інформаційного простору користувача (бібліотеки звукових та відео записів).

Системи штучного інтелекту:

· програми оболонки для створення експертних систем шляхом наповнення баз знань і правил логічного виводу;

· готові експертні системи для прийняття рішень в рамках визначених предметних областях;

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

Приклади систем штучного інтелекту: FIDE, MYSIN, Guru та ін.

Тема 2. Технологія розробки програмних продуктів.. Основні визначення і підходи

2.1. Особливості програмного забезпечення як об’єкта розробки

2.1.1. Складність визначення вимог до ПЗ

2.1.2. Відсутність задовільних засобів опису поведінки дискретних систем з великою кількістю станів

2.1.3. Особливості колективної розробки

2.1.4. Необхідність підвищення ступеня повторюватомості кодів.

2.2. Блочно-ієрархічний підхід до створення складних систем

Тема 3. Життєвий цикл розробки програм та його етапи

3.1. Поняття життєвого циклу розробки програми

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

Розглянемо спочатку основні терміни і означення. «Технологія» (від грец. techne – мистецтво, майстерність, уміння) в широкому розумінні «сукупність методів обробки, виготовлення, зміна стану, властивостей, форми ресурсів, матеріалу чи напівфабрикатів, застосовних в процесі виробництва для отримання готової продукції»; в науковому «про способи впливу на ресурси, матеріали і напівфабрикати відповідними засобами виробництва». Задача науки технології полягає у виявленні «фізичних, хімічних, механічних та інших закономірностей з ціллю визначення і використання на практиці найбільш ефективних і економічних виробничих процесів». З тлумачного словника, технологія – це сукупність виробничих процесів у певній сфері виробництва, а також наукове описання способів виробництва».

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

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

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

Надійність є невід’ємним атрибутом ПЗ, технологію програмування тут будемо розглядати як технологію розробки надійних ПЗ. Це означає, по-перше, обговорення всіх процесів розробки ПЗ (від ідеї створення до «утилізації»), а по-друге, питань побудови програмних конструкцій, описання функцій і розв’язків. В якості продукту технології з’явиться надійний ПЗ. Все вище перераховане буде суттєво впливати на вибір методів і інструментальних засобів при розробці ПЗ.

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

Результатом таких процесів є програмний засіб – сукупність логічно зв’язаних програм на носіях даних, забезпечені програмною документацією і призначені для людей, які не брали участь в процесі розробки.

3.2. Основні етапи розробки програмного забезпечення

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

Існує декілька моделей життєвого циклу (ЖЦ), кожна з яких визначає різну методологію створення систем. Всі без виключення моделі ЖЦ включають в себе п’ять етапів і зв’язків між ними з подальшим описанням дій, моделей і результатів кожного етапу. Наведемо назву і короткий зміст кожного етапу у відповідності з ГОСТ 19.102–77.

1. Технічне завдання:

o постановка задачі;

o вибір критеріїв ефективності;

o проведення попередніх науково-дослідницьких робіт (НДР);

o розробка ТЗ.

2. Ескізний проект:

o структура вхідних і вихідних даних;

o уточнення методів розв’язання;

o загальний алгоритм;

o розробка документації ескізного проекту.

3. Технічний проект:

o уточнення структури вхідних і вихідних даних;

o розробка алгоритмів;

o форми даних;

o семантика і синтаксис мови;

o структура програми;

o конфігурація технічних засобів;

o план робіт.

4. Робочий проект:

o програмування і налагодження;

o розробка документів;

o підготовка і проведення випробувань;

o коректування програми і документів по висновкам випробувань.

5. Впровадження:

o передача програми і документів для супроводження;

o оформлення акта;

o передача в Фонд алгоритмів і програм (ФАП).

3.3. Еволюція моделей життєвого циклу

- Каскадна модель

- Каскадна модель з проміжним контролем

- Спіральна модель

- Рекурсивна модель

Історично в ході розвитку теорії проектування програмного забезпечення і по мірі його ускладнення сформувались чотири моделі ЖЦ.

Першою по часу появи і самою поширеною є каскадна модель.

Рис. 2.5. Каскадна модель життєвого циклу ПЗ

Каскадна модель характеризується наступними основними особливостями:

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

· закінченням кожного попереднього етапу до початку наступного;

· відсутністю часового перекриття етапів (наступний етап не починається, поки не завершиться попередній);

· відсутність (або певні обмеження) повернення до попередніх етапів;

· наявність результату тільки в кінці розробки.

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

Наступною стадією розвитку теорії проектування ПЗ стала Ітераційна модельЖЦ, чи так звана поетапна модель з поетапним контролем. Основною її особливістю є наявність зворотних зв’язків між етапами, внаслідок цього з’являється можливість проведення перевірок і коректувань ІС на кожній стадії розробки. В результаті трудомісткість налагодження порівняно з каскадною моделлю суттєво знижується. Ітераційність моделі проявляється в обробці помилок, виявлених поетапним контролем. Якщо на деякому етапі в ході поетапної перевірки знайдена помилка, допущена на більш ранній стадії розвитку, необхідно повторити весь цикл робіт цієї стадії. При цьому аналізуються причини помилки і коректуються у випадку необхідності початкові дані етапу чи його зміст (послідовність дій).

Рис 2.6. ітераційна модель життєвого циклу ПЗ

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

Третя модель ЖЦ ПЗ – спіральна (spiral) модель – підтримує ітерації поетапної моделі, але особливу увагу приділяється початковим етапам проектування: аналіз вимог, проектування специфікацій, попередньому проектуванню і детальному проектуванню. Кожен завиток спіралі відповідає поетапній моделі створення фрагменту чи версії ПЗ, уточнюються цілі і вимоги до програмного забезпечення, оцінюється якість розробленого фрагменту чи версії і плануються роботи наступної стадії розробки (витка). Таким чином, заглиблюються і коректуються всі деталі проектованого ПЗ, в результаті розробляється продукт, який задовольняє всім вимогам замовника.

3.4. Особливості застосування моделей ЖЦ до розробки ПЗ різного розміру та складності

Тема 4. Оцінка якості процесів створення програмного забезпечення

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

· міжнародні стандарти серії ISO 9000 (ISO 9000 – ISO 9004);

· CMM – Capability Maturity Model – модель зрілості (вдосконалення) процесів створення програмного забезпечення, запропонована SEI (Software Engineering Institute – інститут програмування при університеті Карнегі – Меллон);

· Процес сертифікації програм на базі інформації про їх використання.

4.1. Серія стандартів ІSO 9000

Однією з найважливіших проблем забезпечення якості програмних засобів є формалізація характеристик якості і методологія їх оцінки. Для визначення адекватності якості функціонування, наявності технічних можливостей програмних засобів до взаємодії, вдосконалення і розвитку необхідно використовувати стандарти в області оцінки характеристик їх якості. Основою регламентування показників якості програмних засобів раніше був міжнародний стандарт ISO 9126:1991 «Інформаційна технологія. Оцінка програмного продукту. Характеристики якості і керівництво по їх використанню». Завершується розробка і формалізований останній проект який складається з чотирьох частин стандарту ISO 9126–1 – ISO 9126–4 для заміни невеликої редакції 1991 р. Проект складається з чотирьох частин під загальним заголовком «Інформаційна технологія – характеристики і метрики якості програмного забезпечення»: «Частина 1. Характеристики і субхарактеристики якості»; «Частина 2. Зовнішні метрики якості»; «Частина 3. Внутрішні метрики якості»; «Частина 4. Метрики якості у використанні».

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

· категорійним чи описовим (номінальним) метрикам найбільш адекватні функціональні можливості програмних засобів;

· кількісні метрики застосовні для вимірювання надійності та ефективності складних комплексів програм;

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

У частині стандарту ISO 9126–1 даються означення з уточненнями з іших його частин для кожної характеристики програмного засобу, а також для субхарактеристик якості.

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

Друга і третя частини стандарту – ISO 9126–2 та ISO 9126–3, присвячені формалізації відповідно зовнішніх та внутрішніх метрик характеристик якості складних програмних засобів. Всі таблиці містять уніфіковану рубрикацію, де відображені ім’я і призначення метрики; метод її використання; спосіб вимірювання, тип шкали метрики; тип вимірюваної величини; початкові дані для вимірювання та порівняння; а також етапи життєвого циклу програмного засобу (по ISO 12207), до яких може бути використана метрика.

Четверта частина стандарту ISO 9126–4 – призначена для покупців, поставщиків, розробників, користувачів та менеджерів якості програмних засобів. В ній обґрунтовуються і коментуються виділені показники сфери (контексту) використання програмних засобів і групи вибраних метрик для користувачів.

Стандарти СММ

У листопаді 1986 р. американський інститут Software Engineering Institute (SEI) разом з Mitre Corporation почав розробку огляд зрілості процесів розробки програмного забезпечення, який був призначений для допомоги в покращенні їх внутрішніх процесів [31].

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

У вересні 1987 р. SEI випустив короткий огляд процесів розробки ПЗ з описанням їх рівнів зрілості, а також опитувач (вопросник), призначений для виявлення областей в компанії, в яких були необхідні покращення. Однак більшість компаній розглядало цей опитувач і якості готової моделі, внаслідок цього через 4 роки опитувач був перетворений в реальну модель, Capability Maturity Model for Software (CMM). Перша версія CMM (Version 1.0), яка вийшла в 1991 р., в 1992 р. була переглянута учасниками робочої зустрічі, в якій приймали участь біля 200 спеціалістів в області ПЗ.

У результаті був випущений стандарт CMM, Version 1.1, який до нашого часу активно використовується у всьому світі.

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

Постійне покращення процесів базується на поступовому вирощуванні культури компанії, а не на проведенні революційних інновацій. В CMM представлена схема такого поступового покращення, розділена по п’яти рівням зрілості процесів. Ці п’ять рівнів представляють собою шкалу (рис. 2.4) для оцінки рівня зрілості процесів розробки ПЗ в компанії і для вимірювання їх параметрів.

4.3. Процес сертифікації програм на базі інформації про їхнє використання

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

Методів сертифікації якості програмного забезпечення стає все більше. Популярні підходи, основані на процесах, такі як ISO 9000 таSEI-CMM,примушують творців програмного забезпечення жорстко притримуватись вибраних стандартів та процесів розробки. Такі підходи часто вимагають участі аудиторів, які перевіряють документацію виробника і те, як він виконує дану ним обіцянку. Але навіть якщо аудитор по сертифікації може переконатись в чистоті намірів виробника, одна ця перевірка не гарантує, що створюване програмне забезпечення буде високої якості.

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

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

Організації, які виконують таку сертифікацію, називаються лабораторіями по сертифікації програмного забезпечення (Software Certification Laboratories – SCL). Їх переваги в тому, що вони зможуть надати рівні можливості всім виробникам, якщо, звичайно, кожний продукт буде тестуватись в рівних умовах.

SCL до цього часу не отримали широкого поширення через відповідальність, яку бере на себе ця організація. Якщо сертифіковане ПЗ не оправдає очікувань при його використанні в реальному виробничому процесі, той хто видав сертифікат, несе за це визначену відповідальність. Суди в США відомі своєю вимогливістю до тих, хто називає себе професіоналами, чи то лікарі, юристи та інженери.

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

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

Тема 5. Поняття технологічності програмного забеспечення

5.1. Поняття технологічності програмного забеспечення

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

Розглянемо спочатку основні терміни і означення. «Технологія» (від грец. techne – мистецтво, майстерність, уміння) в широкому розумінні «сукупність методів обробки, виготовлення, зміна стану, властивостей, форми ресурсів, матеріалу чи напівфабрикатів, застосовних в процесі виробництва для отримання готової продукції»; в науковому «про способи впливу на ресурси, матеріали і напівфабрикати відповідними засобами виробництва». Задача науки технології полягає у виявленні «фізичних, хімічних, механічних та інших закономірностей з ціллю визначення і використання на практиці найбільш ефективних і економічних виробничих процесів». З тлумачного словника, технологія – це сукупність виробничих процесів у певній сфері виробництва, а також наукове описання способів виробництва».

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

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

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

Надійність є невід’ємним атрибутом ПЗ, технологію програмування тут будемо розглядати як технологію розробки надійних ПЗ. Це означає, по-перше, обговорення всіх процесів розробки ПЗ (від ідеї створення до «утилізації»), а по-друге, питань побудови програмних конструкцій, описання функцій і розв’язків. В якості продукту технології з’явиться надійний ПЗ. Все вище перераховане буде суттєво впливати на вибір методів і інструментальних засобів при розробці ПЗ.

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

Результатом таких процесів є програмний засіб – сукупність логічно зв’язаних програм на носіях даних, забезпечені програмною документацією і призначені для людей, які не брали участь в процесі розробки.

5.2. Поняття модуля та його властивості