Програмна інженерія та її відмінності від інформатики та інших інженерів

Що таке програмний продукт і його основні характеристики? Складові вартості ПО.

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







Програмні продукти можуть створюватися як:

індивідуальна розробка під замовлення;

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

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

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

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

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

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

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







Основними характеристиками програм є:

алгоритмічна складність (логіка алгоритмів обробки інформації);

склад і глибина опрацювання реалізованих функцій обробки;

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

обсяг файлів програм;

вимоги до операційної системи і технічних засобів обробки з боку

обсяг дискової пам'яті;

розмір оперативної пам'яті для запуску програм;

версія операційної системи;

наявність обчислювальної мережі та ін.

Програмна інженерія та її відмінності від інформатики та інших інженерів?

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

Всі аспекти виробництва ПО

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

У чому відмінність від інших інженерів?
Відмінність програмної інженерії від інших інженерів цікаво перш за все з точки зору двох питань:
Чому частка провальних проектів в програмної інженерії так велика в порівнянні з іншими інженерами?
Чи можна в програмної інженерії застосовувати досвід інших інженерів?
Ці питання є фундаментальними для програмної інженерії. З цього приводу висловлюється багато думок (і часто протилежних). Зупинимося на деяких більш-менш очевидних відмінностях програмної інженерії від інших інженерів.
Перш за все, відзначимо, що життєвий цикл продукту будь інженерії в спрощеному вигляді включає фази: проектування, створення зразка, випробування, виробництво, експлуатація.
Комп'ютерна програма - це (на відміну від об'єктів інших інженерів) не матеріальний об'єкт (прохання не плутати з носієм програми - пристроєм пам'яті будь-якого типу). Звідси випливають такі відмінності. Фаза виробництва полягає в копіюванні зразка на інші носії. Вартість фази зникаюче мала. Якщо кодування вважати елементом проектування (що дуже близько до істини), то відсутня також і фаза створення зразка (будується компілятором і лінковщік)
Звідси випливають такі висновки:
Вартість програми - це вартість лише її проектування
Вартість проектування коробкових продуктів «розмазується» по копіям
Вартість замовних продуктів (масово не копіюються) залишається високою







Схожі статті