Програмне забезпечення як продукт виробництва

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

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

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

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

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

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

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

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

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

1) основні поняття і об'єкти;

2) теорію програмування і методи керування виготовленням продукту;

3) засоби і інструменти процесів розроблення продукту.

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

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

Надамо загальне визначення цільових об’єктів у ПІ.

Визначення 1.3. Програмна (прикладна) система (Application) – комплекс інтегрованих програм і засобів, що реалізують набір взаємопов’язаних функцій деякої предметної області в заданому середовищі. У комплекс можуть входити: прикладні системи (наприклад, програми розрахунку зарплати, обліку матеріалів на складі тощо), загальносистемні програмні засоби (наприклад, транслятор, редактор, СКБД тощо), спеціалізовані програмні засоби для реалізації функцій захисту інформації, забезпечення безпеки функціонування та ін. Спосіб виготовлення – інженерія ПС (або application engineering), що містить у собі процеси ЖЦ, методи розробки і процедури керування, а також методи і засоби оцінки продуктів і процесів з метою їх удосконалення.

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

Визначення 1.5. Сімейство систем (Systems family) – сукупність програмних систем із загальним (незмінним для всіх членів сімейства) і керованим (змінним) набором характеристик, що задовольняють визначені потреби прикладної області (домену). Спосіб виготовлення – інженерія домену (Domain Engineering) або конвеєрне виробництво однотипних ПП за єдиною схемою на основі спеціально розроблених базових членів сімейства й інших готових програмних ресурсів (assets) за допомогою базового процесу або автоматизованої лінійки продукту (Product line).

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

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

1.3. Принципи програмної інженерії

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2) базовий процес ПІ, як стрижень процесної діяльності в організації-розробнику програмного продукту;

3) стандарти, як набір регламентованих правил конструювання проміжних артефактів у процесах ЖЦ;

4) інфраструктура – умови середовища та методичне забезпечення базового процесу ПІ і підтримка дій його виконавців, що займаються виробництвом програмного продукту;

5) менеджмент проекту (РМВОК) – ядро знань з керування промисловими проектами – набір стандартних процесів, а також принципів і методів планування і контролювання роботами у проекті;

6) засоби та інструменти розробки програмних продуктів.

Стандарти ПІ встановлюють технологічно відпрацьований набір процесів зі строго визначеним і регламентованим порядком проведення різних видів робіт з програмної інженерії, зв’язаних з розробленням програмного продукту і оцінюванням його якості, ризику тощо. Стандарти у галузі програмної інженерії регламентують різні напрями діяльності щодо проектування програмних продуктів. Вони стандартизують термінологію і поняття, життєвий цикл, якість, вимірювання, оцінювання продуктів і процесів. Найбільш важливими серед них є стандарт ISO/IEC 12207 «Процеси життєвого циклу програмного забезпечення» (та його дещо застарілий вітчизняний еквівалент ДСТУ 3918–99), серія стандартів ДСТУ ISO/IEC 14598 «Оцінювання програмного продукту», стандарт ДСТУ ISO 15939 «Процес вимірювання», серія стандартів ISO/IEC 15504 «Оцінювання процесів ЖЦ ПЗ», базові стандарти з якості – ISO 9001 «Системи керування якістю. Вимоги», ДСТУ 2844–94, ДСТУ 2850–94, що регламентують різні аспекти забезпечення якості ПП. Серед стандартів, що безпосередньо пов’язані з якістю ПЗ, слід також назвати проект нової серії стандартів ISO/IEC TR 9126 «Програмна інженерія. Якість продукту». У цих стандартах узагальнені знання спеціалістів з технології проектування і інженерних методів керування розробкою, починаючи від встановлення вимог і закінчуючи оцінкою якості продукту і можливою його подальшою сертифікацією.

Література

1. Бабенко Л.П., Лавріщева К.М. Основи програмної інженерії.– Навч. посібник.–К.: Знання, 2001. –269 с.

2. Рекомендации по преподаванию программной инженерии и информатики в университетах.–Computing Curricula-2001: Computer Science.–Пер. с англ. – Интернет– Ун. информац. технологий, М.: 2007.–462с.

3. Иан Соммервил. Инженерия программного обеспечения. 6-е издание. – М.; Спб. – Киев, 2002. – 623 с.

4. Software Engineering: A Practioner's Approach. 3 ed. by ed. R.S. Pressman. N.Y.: McGraw Hill, 1992.

5. Кармайкл Э., Хейвуд Д. Быстрая и качественная разработка программного обеспечения – М.: Издательский дом «Вильямс». 2003 – 400 с.

6. Орлов С. Технология разработки программного обеспечения: Учебник / СПб.: Питер, 2002. – 464с.

 



php"; ?>