Основи програмної ніженерії. Умови виникнення інженерії програмного забезпечення
Скачать 215.87 Kb.
|
Умови виникнення інженерії програмного забезпечення Перші комп'ютери, що працюють під управлінням програм, які зберігаються в пам'яті, з'явилися наприкінці 40-х, початку 50-х років. Разом з ними виникла нова задача, сутність якої полягає у створенні програм, і процес, спрямований На її вирішення - програмування. Тому подальший розвиток обчислювальної техніки пов'язано не тільки з удосконаленням комп'ютерів і Їх розповсюдженням, але і з розвитком програмування Практично одночасно з появою комп'ютерів відбулося розділення розробників програм, а ними були програмісти, на два типи прикладні системнi програмісти Із збільшенням продуктивності, кількості обчислювальних машин і розширенням сфери їх застосування, з'явилися програми двох типів. Першi, створювалися і продавалися разом з машинами. Програми другого типу, виготовлялися на замовлення Наприкінці 60-х початку 70-х були створені високопродуктивні обчислювальні машини З їх появою виникла можливість вирiшення великих і складних задач. Це в свою чергу зажадало розробки великих програм (від 100 тис. до 1 млн. рядків) Передумови та історія В кінці 60-х - початку 70-х років минулого століття відбулася подія, яка увійшло в історію як перша криза програмування. подя полягало в тому, що вартість програмного забезпечення стала наближатися до вартостi апаратури (заліза), а динаміка зростання цих вартостей дозволяла прогнозувати, що до середини 90-років все людство буде займатися розробкою програм для комп'ютере. З тих пір програмна інженерія пройшла досить бурхливий розвиток. Етапи розвитку програмної інженерії можна виділяти по різному. Кожен етап пов'язаний з появою (або усвідомленням) чергових проблеми / знаходженням шляхiв ма способів вирiшення цiсi проблеми Вихід з ситуації обговорення на конференцiї NATO B 1968 р нової дисципліни, яку назвали інженерія програмного забезпечення (software engineering). При цьому, вперше акценти в методах, засобах і процесах розробки програмного забезпечення були свiдомо зміщені, по-перше, з кодування програм на інші процеси їх розробки, а по-друге, з якісних аспектів у бік кількісних, інженерних Інженерія програмного забезпечення в обличчях та подіях До 90-х років існувало дві точки зору на ПЗ як домен: комп'ютерних наук, конструювання комп'ютерних програм - це математичні дії подiбнi рiшенням, наприклад, диференціальних рівнянь. інженерії програмного забезпечення - програмне забезпечення набуває рис конструктивного об'єкта інженерного домену, а конструювання комп'ютерних програм - стає частиною відповідної індустрії Основоположною для інженерії програмного забезпечення слiд вважати роботу W.Royce, в якій було введено поняття життєвого циклу програмного забезпечення. . Завдяки цій роботі з'явилася можливість дослiджувати окремі процеси і розробляти ресурси фаз життєвого циклу, а результати будувати як продукти інженерії - перша, найважливіша - це конференція NATO 1968. Інші - це конференції з інженерії програмного забезпечення, які проходять щорічно і конференції з навчання інженерії програмного забезпечення, які також проходять щорічно. Крім зазначених, слід згадати конференції з супроводу, реверсивної інженерії та повторному використанню програмного забезпечення Організації -ISO - International Organization for Standardization - Мiжнародна органiзацiя по стандартизації. Найбiльш представницька і впливова організація, розробляюча стандарти майже в усіх областях діяльності, у тому числі і в ІТ. - ACM - Association for Computing Machinery -Асоцiацiя по обчислювальнiй технiцi. Всесвiтня наукова і освітня організація в області обчислювальнiй техніці. Відома також і розробкою освітніх стандартів. -SEI - Software Engineering Institute - Iнститут Програмної інженерії. Дослiдження в області програмної інженерії з упором на розробку методів оцінки і підвищення якості ПЗ. Стандарти за якістю ПЗ і зрілості органiзацiй, розробляючих - PMI - Project Management Institute - Мiжнародний Інститут Проектного Менеджменту (Управління Проектами). Некомерційна органiзацiя, метою якої є просування, пропаганда, розвиток проектного менеджменту в різних країнах. РМП розробляє стандарти проектного менеджменту, займається підвищенням кваліфікації фахівців. - IEEE - Інститут інженерів по електроніці. Підтримка наукових і практичних розробок в області електроніки і обчислювальної техніки. Великі вкладення в розробку стандартів в цій областi У колишньому Радянському Союзі Перші роботи по інженерії програмного забезпечення були ініційовані А.П. Єршовим. Цю галузь тоді назвали «технологія програмування». Значний вклад в її дослідження вніс В.М.Глушков. Перші практичні результати були отримані І.В. Вельбицький. У колишньому Радянському Союзі першими досліджували і отримали суттєві результати в розглянутій галузі А.П.Ершов, В.М.Глушков, Е.А.Жоголев, І.В.Вельбiцкiй, В.В.Ліпаев, В.Н.Редько, Е.Х.Тиугу. Вони використовували термін «технологія програмування, розглядаючи його як деяке загальне базове поняття, проте часто виходячи за рамки тільки програмування. Тепер цей термін практично не використовується. хоча мають мiсце терміни «технологія розробки програмного забезпечення» і «програмна інженерія» Програми, комп’ютерні програми. Властивості. Програма - це опис обчислень. Обчислення це дії, здійснення яких доручається - деякому виконавцю. В основі опису дій лежить поняття алгоритму. Мета обчислень - отримати результат. Основними оби се като асимметрите на обчислень і результатом значення. Значення - це конкретні елементи програми, обекти зміни, які в обчисленнях замінюють змінні. Змінні - це програмні об'єкти, які зберігають значення. Програма описує багато обчислень. Залежно ВІД конкретних значень виконавець здійснює одне з них Якщо виконавець програми комп'ютер, то - вона називається комп'ютерною. Комп'ютер - це «механічний, рутинний» пристрій, тому дуже важливо, щоб комп'ютерна програма містила всі вказівки про те як необхідно виконувати обчислення. А це означає, що поняття алгоритму, що лежить в основі програми повинно мати точний, конструктивний характер Властивості: - повна деталізація і визначеність опису обчислень і Тим самим закінченість; - масовість обчислень - орієнтація на загальні зміни змінної; - Виконавець обчислень - комп'ютер; - форма програми - текст; засіб запису програми - спеціальна мова. Державний стандарт (ДСТУ 2844-94) визначає комп'ютерну програму (computer program) Як послідовність інструкцій, які може виконувати EOM Програмування. Процеси програмування. Мови програмування Процеси, пов'язані з написанням комп'ютерних програм, називаються програмуванням. У найзагальнішому вигляді програмування - це виконання трьох наступних процесів: - складання схеми програми; - складання тексту програми; - налагодження програми Мова програмування - це штучна знакова система, призначена для запису комп'ютерних програм. Як будь-яка знакова система мова програмування задається синтаксисом - безліч правил, що визначають вигляд пропозицій (мови), і семантикою - безліч правил визначальних операційне значення (сенс) пропозицій мови Кожна мова програмування за допомогою синтаксису і семантики описує деякого носія мови, якою ця мова визначається однозначно. Носій мови входить до складу перекладачів (трансляторів), які здійснюють переклад програми з мови програмування на мову виконавця. Теоретичну основу мов програмування складають алгоритмічні мови (засоби для запису алгоритмів), при цьому набори описових засобів мов програмування перевищують мiнiмальні набори, необхідні для їх алгоритмічної універсальності, що викликане практичною орієнтацією мов програмування. За весь період розвитку програмування було розроблено значну кількість мов програмування Найпопулярніші мови програмування: JavaScript C# Java Python PHP TypeScript Swift C++ Продукти інженерії програмного забезпечення. Стандарт ISO/IEC 14598-1 інженерії програмного визначае продукт забезпечення як безліч комп'ютерних програм, процедур, пов'язаних з ними документації і даних. При цьому підкреслюється, що продукти можуть CERNAC бути наступних типів: - для поставки користувачеві: - інтегральні частини інших продуктів; - для розробників і супроводжуючих Хто використовує продукти ІПЗ: Користувач(user); Розробник(developer); Супроводжуючий(Mainteiner); - по-перше, так називають комп'ютерні програми, які задовольняють додатковим вимогам, пов'язаним з їх тривалим застосуванням користувачами, які не є розробниками комп'ютерних програм. Ці вимоги задовольняються шляхом, Наприклад, СТВОРЕННЯ додаткових описів, інструкцій і даних; по-друге, так називаються результати виконання фаз життєвого циклу програмного забезпечення (робочий продукт), коли результати є інтегральними частинами розробленого продукту. Тому, продуктом може бути не тільки комп'ютерна програма, а й специфікація вимог, Документація або проект програми, що розробляється. Продукція інженерії програмного забезпечення. У зв'язку з розвитком і застосуванням інженерних методів у розробці та використанні комп'ютерних програм змінилося ставлення до результатів праці в даній галузі. Розширення асортименту розробників і користувачів продуктів призвело до необхiдностi класифікувати їх до того чи iншого виду продукції. Предистория ХЗ надо чи не Продукція інженерії програмного забезпечення - це сукупність програм, програмних засобів і продуктів, що мають загальний класифікаційний ознака (за належністю, місцем розробки, призначенням). В даний час розрізняють продукцiю iнженерії програмного забезпечення країни, галузі та підприємства. Наприклад, продукція компанії Microsoft Програмне забезпечення. Різні визначення ПЗ. Визначення ПЗ Стандарт ISO / IEC визначає програмне забезпечення (software) як все або частину програм, процедур, правил і пов'язаної з ними документації інформаційної обчислювальної системи. Український стандарт визначає програмної забезпечення (software) як програмний засіб (програмний засіб) - взаємопов'язана сукупність програм, процедур, правил, документації та даних, що відносяться до функціонування обчислювальної системи Програмне забезпечення (software) - сукупність програм системи обробки інформації і програмних документів, необхідних для експлуатації цих програм. Розрізняють системне програмне забезпечення (зокрема, операційна система, транслятори, редактори, графічний iнтерфейс користувача) та прикладне програмне забезпечення, що використовується для виконання конкретних завдань, наприклад, статистичне програмне забезпечення Іншими словами програмне забезпечення - це комплекс програм, які забезпечують ефективне управління компонентами обчислювальної системи, такими як процесор, оперативна пам'ять, канали введення-виведення, мережеве обладнання, виступаючи як «міжшарової інтерфейс» з одного боку якого апаратура, а з іншого додатка користувача Типи комп’ютерних програм: Р – програми. S – програми. Е – програми. Відомо багато класифікацій програм по тих або інших ознаках. Ці класифікації зазвичай відображають або конструктивні характеристики програм (розмір, складність, модульність) або прикладні (орієнтація Домен, на платформу, мову). Проте більш відомий загальний підхід, у відповідність з яким, всі комп'ютерні програми можна розділити на три типи: S (Specification) програма - це така програма, функція якої відома і визначена однозначно i специфікацією завдання P (Problem) програма - це така програма, яка вирішує задачу безпосередньо пов'язану із зовнішнім світом, але не має точної постановки E (Environment) програма - це така програма, яка вирішує завдання, що вимагає її присутності в контексті реального світу 9. Перш ніж визначити поняття програмної системи, розглянемо властивості комп’ютерних програм з позицій системного аналізу 3 системного аналізу відомо, що об'єкт повинен мати принаймні чотири властивості, щоб вважатися системою, тому комп'ютерну програму можна розглядати як систему, якщо вона має такі властивості: цілісність і членимость, наявність зв'язків, наявність організованість, наявність інтегральної якості Цілісність і артикуляція виражається в тому, що з одного боку програма є цілісною структурою, а з іншого - в її структурі можна виділити елементи. Елементами називають ті частини програми, які в цій програмі на певному рівні її розгляду не підлягають подальшому поділу на частини. Поза програмою елементи мають властивості, що мають спільне значення і називаються системнозначущими. Увійшовши в програму, елемент набуває властивостей, які мають значення тільки в цій програмі і які називають системовизначаючими. Наприклад, підпрограма, яка обчислює tg (x) (системозначима властивість) увійшовши до складу програми управління польоту деякого обʼєкту, може обчислити значення деформації (зсуву) шарів плоского тіла (системно визначаюча властивість) . Завдяки властивостям цілісності та членства програму можна розглядати як єдине ціле, але складається з взаємодіючих частин. Наявність зв'язків (couple) - виражається в наявності стійких зв'язків між елементами програми, переважній міцності зв'язку цих елементів з елементами, які не входять до цієї програми. Зв'язки можуть бути зʼєднуючими та інформаційними Наявність міцних зв'язків дозволяє говорити про межу програми (де зв'язки стають слабкими), а наявність межі веде до поняття зовнішнього середовища програми, яке є сукупністю елементів, які не належать програмі, але пов’язані з нею і впливають на неї. Зазвичай цей вплив інтерпретується як надходження в програму вхідних значень (впливів) і отримання з програми значень (результату) Наявність організації виражається y взаємозалежному поведінці частин програми, обумовленої їх впорядкованістю в часі та просторі. В результаті формується внутрішня структура програми, і завдяки процесам, що відбуваються в програмі, функції частин програми перетворюються на функції (функцію) програми. Функції можуть бути корисними, марними і шкідливими. Корисність програми є однією з її властивостей і визначається відповідністю функції та дизайну програми вимогам до неї. Наявність інтегральної якості виражається в тому, що має місце якість або властивість, яка притаманне програмі в цілому, але не властиво жодної з її частин окремо. Тому програма не зводиться до простої сукупності її частин, а, поділяючи програму на частини, і вивчаючи тільки їх окремо, неможливо зрозуміти цілісну якість програми. 10. Програмна система — це продукт програмної інженерії, який має системні властивості і призначений для використання в певній предметній області. Як правило, програмні системи є частиною складного програмно-апаратного комплексу, до складу якого крім комп'ютера входять різноманітні пристрої. Постійно поширені прикладні обчислення привели до великої різноманітності програмних систем 11. Основна причина кризи ПЗ - це складність продуктів комп'ютерної науки і процесу розробки. Серед невід'ємних причин кризи ПЗ: Суперечності між очікуваною відповідальністю ІС і їх ненадійністю. Це результати складності систем і не ідеальних методів їх створення. Дорога підтримка. Нечасте повторне використання вже існуючих проектів і компонентів ПЗ, їх низький рівень. Довгий і дорогий цикл розробки ПЗ, великий шанс провалу проекту. Довгий і дорогий життєвий цикл інформаційних систем і необхідність робити часті зміни. Розмаїття мов програмування. Залежність результатів проектування від швидких змін мов пристроїв, методів, довгий і ненадійний період підтримки. Залежність компаній від комп'ютерних систем і прикладних технологій обробки інформації. Проблеми з інтеграцією готових компонентів ПЗ різних команд. Проблеми з удосконаленням існуючих і робочих систем для того, щоб задовольняти нові вимоги техніки. Розробники ПЗ і менеджери намагаються здійснювати певні кроки для того, щоб мінімізувати дію вищевказаних факторів. Важливі методи для обмеження кризи ПЗ: + Застосування різних методів і інструментів ,що полегшують роботу зі складними системами. Використання методів підтримки для аналізу нових проблем ,..що полегшує процес. Процедури розробки ПЗ повинні бути систематичними, спланованими і керованими. Переконання виробників і покупців, що розроблена систем високої якості вимагає професійного підходу. 12. В даний час програмна інженерія — це системний, регламентований та кількісний (інженерний) підхід до вирішення завдань розробки, експлуатації, супроводу та утилізації програмного забезпечення. При цьому процеси та програмне забезпечення повинні відповідати заданим технічним, економічним, соціальним юридичним вимогам Технічні вимоги обов'язково відображають відповідність процесів і продуктів життєвого циклу вимогам, специфікованим замовником. Економічні вимоги обов'язково містять вимоги щодо виконання проекту в рамках заданого фінансового бюджету. Соціальні вимоги обов'язково відображають те, що створювані Програмні продукти повинні мати властивості корисності. Правові вимоги обов'язково відображають те, що виконання програмного проекту повинне здійснюватися законними методами. Особливо це важливо, коли під час розробки застосовується успадковане програмне забезпечення або компоненти багаторазового використання. 13. Процес розробки цього програмного забезпечення фундаментальний Майже небезпечний компонент культури організації. Зрілість процесу програмного забезпечення визначається як ступінь, до якої можна стверджувати, що визначений процес є керованим, виміряним, контрольованим та ефективним. Існує кілька моделей такого процесу, кожна з яких описує свій підхід, у вигляді завдань і/або діяльності, які мають місце в ході процесу. Вибір тієї або іншої моделі здійснюється відповідно до обраної методології розробки програмного забезпечення. 15 СММ - це моделі, спрощене уявлення світу. Моделі СММ містять суттєві елементи процесів, що забезпечують різні сторони діяльності, і можуть бути використані як посібник для розробки та покращення виробничих процесів 16.РСМ модель PCM - Process Communication Model, модель типології особистості, що описує її структуру та дає інструменти для ефективної комунікації. Модель ґрунтується на психотерапевтичній практиці; вона дозволяє зрозуміти, який ти, як ти спілкуєшся і що викликає у тебе стрес. Завдяки PCM компанії можуть ефективно використовувати творчу енергію співробітників, успішно реалізовувати організаційні зміни та створювати високопродуктивні команди за рахунок унікальних комунікаційних навичок. Модель процесуальної комунікації служить для того, щоб вступити в спілкування з іншими, налаштовуючи себе не тільки на те, що вони говорять, але і на те, що вони відчувають і у що вірять. У Process Communication Model® ми більше фокусуємося на тому, як сказати, ніж на тому, що сказати. Модель процесної комунікації ® поступово розроблялася доктором психології Тайбі Калером з 1970-х років на основі його спостережень за відносинами та управлінням в американських компаніях. 17.CMMI модель Інтеграція моделі зрілості можливостей (Capability Maturity Model Integration) (CMMI) — це модель процесу та поведінки, яка допомагає організаціям оптимізувати процеси та заохочувати продуктивну та ефективну поведінку, що знижує ризики при розробці програмного забезпечення, продуктів та послуг. CMMI був розроблений Інститутом розробки програмного забезпечення Університету Карнегі-Меллона як інструмент покращення процесів для проектів, підрозділів або організацій. CMMI покликаний допомогти підвищити продуктивність, надаючи підприємствам все необхідне для послідовної розробки якісніших продуктів та послуг. Але CMMI – це більше, ніж модель процесу; це також поведінкова модель. Підприємства можуть використовувати CMMI для вирішення питань логістики підвищення продуктивності шляхом розробки вимірюваних контрольних показників, але CMMI також може допомогти створити структуру для заохочення продуктивної та ефективної поведінки у всій організації. 18. Культура- всі поняття і знання процев,відношень, що знаходяться над тваринною поведінкою.Культуру складають безліч цінностей, цілей і принципів, які керують діями, пріоритетами і вирішеннями окремих осіб або групи, що працюють у напрямі загальної мети Культура ІПЗ-сукупність орієнтованих на якість позицій розробників,людських відношень і людських процесів.(якщо підприємство працює із з орієнтацією на якість і з повагою до замовника, то це великий +) Культура вища за економіку. У основі будь-якої діяльності і виробництві лежить культура. Ліхачов. Культура ІПЗ характеризується •ясними організаційними цілями; •зобов'язанням менеджменту вести організацію до досягнення встановлених цілей; •середовищем, яке дозволяє кожному розробникові удосконалювати і ефективно застосовувати свої знання і навики; +•вимірюваннями, що дозволяють відбирати ефективні процеси. |