Розробка програмного забезпечення (англ. software engineering, software development) — це рід діяльності (професія) та процес, спрямований на створення та підтримку працездатності, якості та надійності програмного забезпечення, використовуючи технології, методологію та практики з інформатики, керування проєктами, математики, інженерії та інших областей знання.
Складність розробки ПЗ
Як й інші традиційні інженерні дисципліни, розробка програмного забезпечення має справу з проблемами якості, вартості та надійності. Деякі програми містять мільйони рядків вихідного коду, які, як очікується, повинні правильно виконуватися в умовах, що змінюються. Складність ПЗ порівнянна зі складністю найскладніших з сучасних машин, таких як літаки.
Розділи дисципліни
Розробка програмного забезпечення може бути розділена на кілька розділів. Це:
- Вимоги до програмного забезпечення: витяг, аналіз, специфікація та ратифікація вимог для програмного забезпечення.
- Проєктування програмного забезпечення: проєктування програмного забезпечення засобами Автоматизованої Розробки Програмного Забезпечення (CASE) і стандарти формату описів, такі як Уніфікований Мова Моделювання (UML), використовуючи різні підходи: і т. д..
- Інженерія програмного забезпечення: створення програмного забезпечення за допомогою мов програмування.
- Тестування програмного забезпечення: пошук та виправлення помилок у програмі.
- Обслуговування програмного забезпечення: програмні системи часто мають проблеми сумісності та переносимості, а також потребують подальших модифікацій протягом довгого часу після того, як створена їх перша версія. Підобласть має справу з цими проблемами.
- Керування конфігурацією програмного забезпечення: оскільки системи програмного забезпечення дуже складні та модифікуються в процесі експлуатації, їх конфігурації повинні управлятися стандартизованим та структурованим методом.
- Керування розробкою програмного забезпечення: керування системами програмного забезпечення має запозичення з керування проєктами, але є нюанси, що не трапляються в інших дисциплінах керування.
- Процес розробки програмного забезпечення: процес побудови програмного забезпечення гаряче обговорюється серед практиків, основними парадигмами вважаються agile або waterfall.
- Інструменти розробки програмного забезпечення, див. CASE: методика оцінки складності системи, вибору засобів розробки та застосування програмної системи.
- Якість програмного забезпечення: методика оцінки критеріїв якості програмного продукту та вимог до надійності.
- Локалізація програмного забезпечення, гілка мовної промисловості.
Процес і методологія
Розробка програмного забезпечення включає створення, проєктування, розгортання та підтримку комп'ютерного програмного забезпечення. Протягом кількох десятиліть стоїть завдання пошуку повторюваного, передбачуваного процесу або методології, яка б поліпшила продуктивність, якість і надійність розробки. Одні намагалися систематизувати та формалізувати цей, мабуть, малопередбачуваний процес. Інші застосовували до нього методи управління проєктами та методи програмної інженерії. Треті вважали, що без постійного контролю з боку замовника розробка ПЗ виходить з-під контролю, з'їдаючи зайвий час і кошти. Досвід управління розробкою програм відбивається у відповідних посібниках, звичаях і стандартах. Якщо при розробці використовується декілька стандартів і нормативних документів, то має сенс скласти профіль. Інформатика як наукова дисципліна пропонує і використовує на базі методів структурного програмування технологію надійної розробки програмного забезпечення, використовуючи тестування програм та їх верифікацію на основі методів доказового програмування для систематичного аналізу правильності алгоритмів і розробки програм без алгоритмічних помилок. Дана методологія спрямована на вирішення завдань на ЕОМ, аналогічної технології розробки алгоритмів і програм, використовуваної на олімпіадах з програмування вітчизняними студентами та програмістами з використанням тестування і структурного псевдокоду для документування програм в корпорації IBM з 70-х років. Методологія структурного проєктування програмного забезпечення може використовуватися з застосуванням самих різних мов і засобів програмування для розробки надійних програм найрізноманітнішого призначення. Одним з таких проєктів була розробка бортового програмного забезпечення для космічного корабля «Буран», в якому вперше використовувався бортовий комп'ютер для автоматичного управління апарату, яка виконала успішний старт і посадку космічного корабля. При виборі методології розробки програмного забезпечення слід керуватися тим, що складність методології порівнянна з складністю структури програмного продукту, і невиправдана для продукту даної складності складність методології тільки невиправдано збільшить вартість розробки. Прикладом сучасної методології проєктування може бути проблемно-орієнтоване проєктування.
Учасники процесу розробки ПЗ
- Користувач
- Замовник
- Дизайнер
- Керівник проєкту
- Аналітик
- Тестувальник
- Постачальник
Проблеми розробки ПЗ
Найпоширенішими проблемами, що виникають в процесі розробки ПЗ, вважають:
- Недолік прозорості. У будь-який момент часу складно сказати, в якому стані знаходиться проєкт і який відсоток його завершення. Дана проблема виникає при недостатньому плануванні структури (чи архітектури) майбутнього програмного продукту, що найчастіше є наслідком відсутності достатнього фінансування проєкту: програма потрібна, скільки часу займе розробка, якими є етапи, чи можна якісь етапи виключити або заощадити — наслідком цього процесу є те, що етап проєктування скорочується.
- Недолік контролю. Без точної оцінки процесу розробки зриваються графіки виконання робіт і перевищуються встановлені бюджети. Складно оцінити обсяг виконаної роботи і роботи, що залишилася.
Дана проблема виникає на етапі, коли проєкт, завершений більш ніж наполовину, продовжує розроблятися після додаткового фінансування без оцінки ступеня завершеності проєкту.
- Недолік трасування.
- Недолік моніторингу. Неможливість спостерігати хід розвитку проєкту не дозволяє контролювати хід розробки в реальному часі. За допомогою інструментальних засобів менеджери проєктів приймають рішення на основі даних, що надходять в реальному часі.
Дана проблема виникає в умовах, коли вартість навчання менеджменту володінню інструментальними засобами порівнянна з вартістю розробки самої програми.
- Неконтрольовані зміни. У споживачів постійно виникають нові ідеї щодо розроблюваного програмного забезпечення. Вплив змін може бути суттєвим для успіху проєкту, тому важливо оцінювати пропоновані зміни та реалізовувати тільки схвалені, контролюючи цей процес за допомогою програмних засобів.
Дана проблема виникає внаслідок небажання кінцевого споживача використовувати ті чи інші програмні середовища. Наприклад, коли при створенні клієнт-серверної системи споживач висуває вимоги не тільки до операційної системи на комп'ютерах-клієнтах, а й на комп'ютері-сервері.
- Недостатня надійність. Найскладніший процес — пошук і виправлення помилок у програмах на ЕОМ. Оскільки число помилок у програмах заздалегідь невідомо, то заздалегідь невідома і тривалість налагодження програм і відсутність гарантій відсутності помилок в програмах. Слід зазначити, що залучення доказового підходу до проєктування ПЗ дозволяє виявити помилки в програмі до її виконання. У цьому напрямку багато працювали Кнут, Дейкстра і Вірт. Професор Вірт при розробці Паскаля і Оберона за рахунок строгості їх синтаксису домігся математичної доказовості виконання і правильності програм, написаної на цих мовах.
Дана проблема виникає при неправильному виборі засобів розробки. Наприклад, при спробі створити програму, що вимагає коштів високого рівня, за допомогою засобів низького рівня. Наприклад, при спробі створити засоби автоматизації з СУБД на асемблері. У результаті вихідний код програми виходить занадто складним і погано піддається структуруванню.
- Неправильний вибір методології розробки програмного забезпечення. Процес вибору необхідної методології може проблемно відбитися на всіх показниках програмного забезпечення — це його гнучкість, вартість і функціональність. Так звані гнучкі методології розробки допомагають вирішити основні проблеми, однак, варто відзначити, що і каскадна модель (waterfall) так само має свої переваги. У деяких випадках найдоцільнішим буде застосування гібридних методологій у зв'язці Agile + каскадна модель + MSF + RUP і т. д.
- Відсутність гарантій якості і надійності програм через відсутність гарантій відсутності помилок в програмах аж до формальної здачі програм замовникам.
Дана проблема не є проблемою, що відноситься виключно до розробки ПЗ. Гарантія якості — це проблема вибору постачальника товару (продукту).
Див. також
Література
- Іан Соммервіллем Інженерія програмного забезпечення = Software Engineering. — 6-е вид. — М.: «Вильямс», 2002. — С. 642. —
- Джек Грінфілд, Кіт Шорт, Стів Кук, Стюарт Кент, Джон Крупи Фабрики розробки програм (Software Factories): потокова збірка типових додатків, моделювання, структури та інструменти = Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools. — М.: «Діалектика», 2006. — С. 592. —
Посилання
- DOU — спільнота програмістів [ 29 травня 2015 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Rozrobka programnogo zabezpechennya angl software engineering software development ce rid diyalnosti profesiya ta proces spryamovanij na stvorennya ta pidtrimku pracezdatnosti yakosti ta nadijnosti programnogo zabezpechennya vikoristovuyuchi tehnologiyi metodologiyu ta praktiki z informatiki keruvannya proyektami matematiki inzheneriyi ta inshih oblastej znannya Koli Grejs Hopper pracyuvala z komp yuterom v Garvardskomu universiteti yiyi kolegi viyavili cyu mol zastryaglu v rele ta takim chinom zashkodila roboti pristroya pislya chogo vona zaznachila sho voni nalagodzhuvali debug sistemu Takim chinom pochav nabuvati populyarnosti termin Bag pomilka programnogo zabezpechennya Ne plutati z Programna inzheneriya Skladnist rozrobki PZYak j inshi tradicijni inzhenerni disciplini rozrobka programnogo zabezpechennya maye spravu z problemami yakosti vartosti ta nadijnosti Deyaki programi mistyat miljoni ryadkiv vihidnogo kodu yaki yak ochikuyetsya povinni pravilno vikonuvatisya v umovah sho zminyuyutsya Skladnist PZ porivnyanna zi skladnistyu najskladnishih z suchasnih mashin takih yak litaki Rozdili discipliniRozrobka programnogo zabezpechennya mozhe buti rozdilena na kilka rozdiliv Ce Vimogi do programnogo zabezpechennya vityag analiz specifikaciya ta ratifikaciya vimog dlya programnogo zabezpechennya Proyektuvannya programnogo zabezpechennya proyektuvannya programnogo zabezpechennya zasobami Avtomatizovanoyi Rozrobki Programnogo Zabezpechennya CASE i standarti formatu opisiv taki yak Unifikovanij Mova Modelyuvannya UML vikoristovuyuchi rizni pidhodi i t d Inzheneriya programnogo zabezpechennya stvorennya programnogo zabezpechennya za dopomogoyu mov programuvannya Testuvannya programnogo zabezpechennya poshuk ta vipravlennya pomilok u programi Obslugovuvannya programnogo zabezpechennya programni sistemi chasto mayut problemi sumisnosti ta perenosimosti a takozh potrebuyut podalshih modifikacij protyagom dovgogo chasu pislya togo yak stvorena yih persha versiya Pidoblast maye spravu z cimi problemami Keruvannya konfiguraciyeyu programnogo zabezpechennya oskilki sistemi programnogo zabezpechennya duzhe skladni ta modifikuyutsya v procesi ekspluataciyi yih konfiguraciyi povinni upravlyatisya standartizovanim ta strukturovanim metodom Keruvannya rozrobkoyu programnogo zabezpechennya keruvannya sistemami programnogo zabezpechennya maye zapozichennya z keruvannya proyektami ale ye nyuansi sho ne traplyayutsya v inshih disciplinah keruvannya Proces rozrobki programnogo zabezpechennya proces pobudovi programnogo zabezpechennya garyache obgovoryuyetsya sered praktikiv osnovnimi paradigmami vvazhayutsya agile abo waterfall Instrumenti rozrobki programnogo zabezpechennya div CASE metodika ocinki skladnosti sistemi viboru zasobiv rozrobki ta zastosuvannya programnoyi sistemi Yakist programnogo zabezpechennya metodika ocinki kriteriyiv yakosti programnogo produktu ta vimog do nadijnosti Lokalizaciya programnogo zabezpechennya gilka movnoyi promislovosti Proces i metodologiyaRozrobka programnogo zabezpechennya vklyuchaye stvorennya proyektuvannya rozgortannya ta pidtrimku komp yuternogo programnogo zabezpechennya Protyagom kilkoh desyatilit stoyit zavdannya poshuku povtoryuvanogo peredbachuvanogo procesu abo metodologiyi yaka b polipshila produktivnist yakist i nadijnist rozrobki Odni namagalisya sistematizuvati ta formalizuvati cej mabut maloperedbachuvanij proces Inshi zastosovuvali do nogo metodi upravlinnya proyektami ta metodi programnoyi inzheneriyi Treti vvazhali sho bez postijnogo kontrolyu z boku zamovnika rozrobka PZ vihodit z pid kontrolyu z yidayuchi zajvij chas i koshti Dosvid upravlinnya rozrobkoyu program vidbivayetsya u vidpovidnih posibnikah zvichayah i standartah Yaksho pri rozrobci vikoristovuyetsya dekilka standartiv i normativnih dokumentiv to maye sens sklasti profil Informatika yak naukova disciplina proponuye i vikoristovuye na bazi metodiv strukturnogo programuvannya tehnologiyu nadijnoyi rozrobki programnogo zabezpechennya vikoristovuyuchi testuvannya program ta yih verifikaciyu na osnovi metodiv dokazovogo programuvannya dlya sistematichnogo analizu pravilnosti algoritmiv i rozrobki program bez algoritmichnih pomilok Dana metodologiya spryamovana na virishennya zavdan na EOM analogichnoyi tehnologiyi rozrobki algoritmiv i program vikoristovuvanoyi na olimpiadah z programuvannya vitchiznyanimi studentami ta programistami z vikoristannyam testuvannya i strukturnogo psevdokodu dlya dokumentuvannya program v korporaciyi IBM z 70 h rokiv Metodologiya strukturnogo proyektuvannya programnogo zabezpechennya mozhe vikoristovuvatisya z zastosuvannyam samih riznih mov i zasobiv programuvannya dlya rozrobki nadijnih program najriznomanitnishogo priznachennya Odnim z takih proyektiv bula rozrobka bortovogo programnogo zabezpechennya dlya kosmichnogo korablya Buran v yakomu vpershe vikoristovuvavsya bortovij komp yuter dlya avtomatichnogo upravlinnya aparatu yaka vikonala uspishnij start i posadku kosmichnogo korablya Pri vibori metodologiyi rozrobki programnogo zabezpechennya slid keruvatisya tim sho skladnist metodologiyi porivnyanna z skladnistyu strukturi programnogo produktu i nevipravdana dlya produktu danoyi skladnosti skladnist metodologiyi tilki nevipravdano zbilshit vartist rozrobki Prikladom suchasnoyi metodologiyi proyektuvannya mozhe buti problemno oriyentovane proyektuvannya Uchasniki procesu rozrobki PZKoristuvach Zamovnik Dizajner Kerivnik proyektu Analitik Testuvalnik PostachalnikProblemi rozrobki PZNajposhirenishimi problemami sho vinikayut v procesi rozrobki PZ vvazhayut Nedolik prozorosti U bud yakij moment chasu skladno skazati v yakomu stani znahoditsya proyekt i yakij vidsotok jogo zavershennya Dana problema vinikaye pri nedostatnomu planuvanni strukturi chi arhitekturi majbutnogo programnogo produktu sho najchastishe ye naslidkom vidsutnosti dostatnogo finansuvannya proyektu programa potribna skilki chasu zajme rozrobka yakimi ye etapi chi mozhna yakis etapi viklyuchiti abo zaoshaditi naslidkom cogo procesu ye te sho etap proyektuvannya skorochuyetsya Nedolik kontrolyu Bez tochnoyi ocinki procesu rozrobki zrivayutsya grafiki vikonannya robit i perevishuyutsya vstanovleni byudzheti Skladno ociniti obsyag vikonanoyi roboti i roboti sho zalishilasya Dana problema vinikaye na etapi koli proyekt zavershenij bilsh nizh napolovinu prodovzhuye rozroblyatisya pislya dodatkovogo finansuvannya bez ocinki stupenya zavershenosti proyektu Nedolik trasuvannya Nedolik monitoringu Nemozhlivist sposterigati hid rozvitku proyektu ne dozvolyaye kontrolyuvati hid rozrobki v realnomu chasi Za dopomogoyu instrumentalnih zasobiv menedzheri proyektiv prijmayut rishennya na osnovi danih sho nadhodyat v realnomu chasi Dana problema vinikaye v umovah koli vartist navchannya menedzhmentu volodinnyu instrumentalnimi zasobami porivnyanna z vartistyu rozrobki samoyi programi Nekontrolovani zmini U spozhivachiv postijno vinikayut novi ideyi shodo rozroblyuvanogo programnogo zabezpechennya Vpliv zmin mozhe buti suttyevim dlya uspihu proyektu tomu vazhlivo ocinyuvati proponovani zmini ta realizovuvati tilki shvaleni kontrolyuyuchi cej proces za dopomogoyu programnih zasobiv Dana problema vinikaye vnaslidok nebazhannya kincevogo spozhivacha vikoristovuvati ti chi inshi programni seredovisha Napriklad koli pri stvorenni kliyent servernoyi sistemi spozhivach visuvaye vimogi ne tilki do operacijnoyi sistemi na komp yuterah kliyentah a j na komp yuteri serveri Nedostatnya nadijnist Najskladnishij proces poshuk i vipravlennya pomilok u programah na EOM Oskilki chislo pomilok u programah zazdalegid nevidomo to zazdalegid nevidoma i trivalist nalagodzhennya program i vidsutnist garantij vidsutnosti pomilok v programah Slid zaznachiti sho zaluchennya dokazovogo pidhodu do proyektuvannya PZ dozvolyaye viyaviti pomilki v programi do yiyi vikonannya U comu napryamku bagato pracyuvali Knut Dejkstra i Virt Profesor Virt pri rozrobci Paskalya i Oberona za rahunok strogosti yih sintaksisu domigsya matematichnoyi dokazovosti vikonannya i pravilnosti program napisanoyi na cih movah Dana problema vinikaye pri nepravilnomu vibori zasobiv rozrobki Napriklad pri sprobi stvoriti programu sho vimagaye koshtiv visokogo rivnya za dopomogoyu zasobiv nizkogo rivnya Napriklad pri sprobi stvoriti zasobi avtomatizaciyi z SUBD na asembleri U rezultati vihidnij kod programi vihodit zanadto skladnim i pogano piddayetsya strukturuvannyu Nepravilnij vibir metodologiyi rozrobki programnogo zabezpechennya Proces viboru neobhidnoyi metodologiyi mozhe problemno vidbitisya na vsih pokaznikah programnogo zabezpechennya ce jogo gnuchkist vartist i funkcionalnist Tak zvani gnuchki metodologiyi rozrobki dopomagayut virishiti osnovni problemi odnak varto vidznachiti sho i kaskadna model waterfall tak samo maye svoyi perevagi U deyakih vipadkah najdocilnishim bude zastosuvannya gibridnih metodologij u zv yazci Agile kaskadna model MSF RUP i t d Vidsutnist garantij yakosti i nadijnosti program cherez vidsutnist garantij vidsutnosti pomilok v programah azh do formalnoyi zdachi program zamovnikam Dana problema ne ye problemoyu sho vidnositsya viklyuchno do rozrobki PZ Garantiya yakosti ce problema viboru postachalnika tovaru produktu Div takozhAlgoritm Informatika Programuvannya Paradigma programuvannya Strukturne programuvannya Testuvannya programnogo zabezpechennya Logika v informatici Logichne programuvannya Bus factorLiteraturaIan Sommervillem Inzheneriya programnogo zabezpechennya Software Engineering 6 e vid M Vilyams 2002 S 642 ISBN 5 8459 0330 0 Dzhek Grinfild Kit Short Stiv Kuk Styuart Kent Dzhon Krupi Fabriki rozrobki program Software Factories potokova zbirka tipovih dodatkiv modelyuvannya strukturi ta instrumenti Software Factories Assembling Applications with Patterns Models Frameworks and Tools M Dialektika 2006 S 592 ISBN 978 5 8459 1181 0PosilannyaDOU spilnota programistiv 29 travnya 2015 u Wayback Machine