logo
rektorska_pi

Передумови виникнення програмної інженерії.

В кінці 60-х – на початку 70-х років з’явилися перші ознаки кризи в області програмування – колосальні успіхи в галузі розвитку засобів обчислювальної техніки прийшли в протиріччя з низькою продуктивністю праці програмістів. У зв’язку з ускладненням програмних систем стало очевидним, що їх важко проектувати, кодувати, тестувати і особливо важко розуміти, коли виникає необхідність їх модифікації в процесі супроводу. З’явилася життєва потреба в створенні технології розробки програмних засобів і інженерних методів їх проектування для істотного поліпшення продуктивності праці розробників.Кардинальні зміни в галузі створення програмного забезпечення (ПЗ) були обумовлені і швидким зростанням ринкового програмного продукту – тієї частини розроблених програм, яка отримувалася користувачем у вигляді готових до експлуатації пакетів програм різного призначення. Не дивлячись на те, що значна частина створюваного програмного забезпечення не доводиться до комерційного використання, тобто не виходить за межі фірми-розробника,вона представляє велику цінність для подальших розробок і для накопичення досвіду і знань. Вже до початку 80-х років тільки в США було створено ПЗ на сотні мільярдів доларів. Впровадження комп’ютерних технологій в різноманітні сфери людської діяльності привело до виникнення і бурхливого розвитку нової галузі

суспільного виробництва – промисловості обробки даних, сумарний обсяг продажів продукції в якій швидко залишив позаду всі традиційні галузі промисловості. Перерозподіл кількості працюючих у сфері матеріального виробництва привів до того, що в найрозвиненіших країнах більше половини працівників виявилися зайнятою обробкою інформації. В США в 90-ті роки цей показник досяг 80%. Основа даної галузі в першу чергу є технічне і програмне забезпечення систем обробки даних. При цьому самою наукомісткою залишається програмна продукція. Природно, що і в наукових дослідженнях, і в практичній діяльності постійно робилися спроби перевести виготовлення програмної продукції на інженерну основу. Так, в 70-х роках виникла нова інженерна дисципліна – програмотехніка, або інженерія ПЗ (Software Engineering). Становленню програмотехніки сприяло розширення ринку ПЗ, поява могутніх фірм, зайнятих виробництвом виключно цієї продукції, і зростання кількості користувачів програмних виробів. Програмна інженерія вивчає теорії, методи й засоби професійної розробки

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

важливі частини:

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

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

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

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

− Застарілі системи, які необхідно супроводжувати і розвивати;

− Робота в гетерогенному середовищі з розподіленими системами, які включають різне програмне і апаратне забезпечення;

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

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