Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



Програмна інженерія як фах. Базові поняття програмної інженерії

Програмна інженерія як фах. Базові поняття програмної інженерії




Сторінка1/6
Дата конвертації07.06.2017
Розмір0.83 Mb.
  1   2   3   4   5   6

http://antibotan.com/ - Всеукраїнський студентський архів

Дисципліна: Інженерія програмного забезпечення

Модуль №1 " Області знань програмної інженерії.

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


Тема: Програмна інженерія як фах. Базові поняття програмної інженерії.

Мета

1. Познайомити студентів з досягненнями в галузі програмної інженерії.

2. Вивчити сучасні методи інженерії та використовувати їх на практиці.

3. Освоєння підходів до поведінки менеджерів колективів при виконанні замовлення на розробку комп’ютерних програмних систем.


Зміст

  1. Загальні відомості про дисципліну.

  2. Поняття складності.

  3. Системотехніка обчислювальних систем.
    Обчи́слювальна систе́ма (англ. computer system) - сукупність ЕОМ та їх програмного забезпечення, що призначені для організації ефективного обчислювального процесу;


  4. Проектування, конструювання ПЗ.

  5. Супровід, управління інженерією ПЗ.

  6. Домашнє завдання та контрольні питання.

Література



  1. Соммервил И. Инженерия программного обеспечения. – М.: И.Д. «Вильямс», 2002. – 624 с.

  2. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений. – М.: ООО «И.Д. Вильямс», 2008. – 720 с.

  3. Бабенко Л.П. Основи програмної інженерії. – К.: Т-во «Знання», КОО, 2001. – 269 с.



  1. Загальні відомості про дисципліну.

Курс – 2 Семестр – 3, 4

Семестр - 3

2 модулі


Модуль №1 "Області знань програмної інженерії. Моделі життєвого циклу для розробки програмних систем"

Модуль №2 "Методи об'єктного аналізу та побудови моделей предметних областей.

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

Лекції – 42 32= 14 год

Лабораторні заняття – (34 6) (4 6 8)= 36 год

Домашнє завдання – 8 год

МКР - 2 2=4 год

Самостійна робота – 35 год

Ітого: - 97 год

Звітність: диференційований залік



  1. Поняття складності.

Лікар, будівельник і програміст посперечалися про те, чия професія древнє. Лікар помітив: "У Біблії сказано, що Бог створив Еву з ребра Адама. Це міг зробити тільки хірург, тому моя професія сама древня у світі". Його перебив будівельник: "Однак, як сказано в Книзі Буття, ще раніше Бог створив з хаосу спочатку небо, а потім - землю. Це було перше й, безсумнівно, найбільш вражаюче будівництво. Отже, дорогий доктор, ви помиляєтеся. Саме моя професія сама древня у світі". Почувши це, програміст відкинувся на спинку крісла, посміхнувся й запитав довірчим тоном: "Ну а хто ж, по-вашому, створив хаос?"

"Чим складніше система, тим вона уязвимее" [5]. Важко собі представити будівельника, що міркує, а чи не вирити ще один підвальний поверх під уже побудованим стоэтажным будинком. Такий захід було б занадто дорогим і небезпечним. Як не дивно, користувачі програмного забезпечення, не замислюючись, просять робити аналогічні зміни в програмах. Більше того, він уважають, що для програміста це завдання не представляє ніяких труднощів.

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

Техні́чне завдання́ (ТЗ) (англ. scope statements та англ. statement of work; SOW) - документ, що встановлює основне призначення, показники якості, техніко- економічні та спеціальні вимоги до виробу, обсягу, стадії розроблення та складу конструкторської документації.
Трудові́ ресу́рси (або також трудові резерви) - поняття «марксистсько-ленінської» (комуністичної, сталінської або так званої «лагерної») політичної економії.
Для того щоб створити нове програмне забезпечення, необхідне користувачам, зовсім не досить просто зібрати команду гарних програмістів. Крім того, у багатьох організаціях велика кількість персоналу змушена відволікатися на підтримку морально застарілих програм. З огляду на прямій і непрямий внесок, що вносить програмне забезпечення в економіку найбільш розвинених країн, а також величезні можливості, що з'являються завдяки інформатизації, варто визнати, що миритися з такою ситуацією більше не можна.
Розвинені країни - країни з найбільшим розвитком економіки, в яких домінує третинний і четвертинний сектори. Цей рівень економічного розвитку зазвичай характеризується високим прибутком на душу населення і максимальним індексом розвитку людського потенціалу (ІРЛП).

Приклади складних систем

  • Структура персонального комп'ютера

Персональний комп'ютер - це пристрій середньої складності. Більшість персональних комп'ютерів складається з тих самих основних елементів: центрального процесора (central processor unit - CPU), монітора, клавіатури й зовнішнього запам'ятовувального пристрою, як правило, CD- або DVD-дисководу й жорсткого диска.
Центральний процесор, ЦП (англ. Central processing unit, CPU) - функціональна частина комп'ютера, що призначена для інтерпретації команд.
Тверди́й диск або Тверди́й магні́тний диск, або Накопичувач на магнітних дисках (англ. Hard (magnetic) disk drive, англ. HDD), у комп'ютерному сленгу - «вінчестер» (від англ. winchester), - магнітний диск, основа якого виконана з твердого матеріалу.
Кожної із цих компонентів можна, у свою чергу, розкласти на більше дрібні складові частини. Наприклад, центральний процесор звичайно складається з первинної пам'яті, арифметико-логічного пристрою (arithmetic/ logic unit - ALU) і шини, до якої приєднані периферійні пристрої.
Арифметико-логічний пристрій (АЛП) (англ. Arithmetic Logic Unit, ALU) - блок процесора, що служить для виконання арифметичних та логічних перетворень над даними, що іменуються операндами. Цей пристрій є фундаментальною частиною будь-якого обчислювача, навіть найпростіші мікроконтролери мають його в складі свого ядра.
Перифері́йний при́стрій - частина технічного забезпечення, конструктивно відокремлена від головного блоку обчислювальної системи.
Кожну із цих частин також можна розкласти на компоненти: арифметико- логічний пристрій складається з регістрів і схем довільного керування (random control logic), які у свою чергу складаються із ще більш простих деталей: вентилів, інверторів і т.д.

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

Ієрархія характерна не тільки для складних систем, але й для абстракцій.

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

  • Структура рослин і тварин

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

Рослини складаються із трьох основних частин - корінь, стебел і листів. Кожна із цих частин має особливу структуру. Наприклад, корінь складається з відростків, волосків, верхівки й чехлика. Аналогічно, вивчаючи зріз аркуша, можна виявити эпидермис, мезофилл і судинну тканину. Кожна із цих структур, у свою чергу, являє собою сукупність кліток. Усередині кожної клітки можна виявити новий рівень складності, що охоплює хлоропласти, ядро й т.д. Як і комп'ютер, рослина являє собою ієрархію певних компонентів, кожний рівень якої характеризується власною складністю.

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

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

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

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

Вивчаючи морфологію рослини, неможливо виділити окремі частини, відповідальні за якусь одну невелику фазу єдиного великого процесу, наприклад, фотосинтезу. У рослині не існує централізованих частин, що безпосередньо координують діяльність компонентів, що ставляться до більше низьких рівнів. Замість цього в ньому існують окремі частини, що діють як незалежні агенти, кожна з яких має досить складне поводження, що є частиною функцій більше високого рівня. Більше високий рівень функціонування рослини забезпечується тільки завдяки цілеспрямованій взаємодії незалежних агентів. У теорії складності це явище називається похідним поводженням (emergent behaviour): поводження цілого складніше, ніж поводження суми його складових [6].

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

Теорія складності обчислень - підрозділ теоретичної інформатики, що займається дослідженням складності алгоритмів для розв'язання задач на основі формально визначених моделей обчислювальних пристроїв. Складність алгоритмів вимірюється за необхідними ресурсами, в основному це тривалість обчислень або необхідний обсяг пам'яті.
Ієра́рхія (грец. ίεράρχίά, від ίερσς - священний, та άρχή - влада) - поділ на вищі й нижчі посади, чини; суворий порядок підлеглості нижчих щодо посади або чину осіб вищим. В ієрархії між її членами діють вертикальні зв'язки - відносини субординації.
Тут також проявляється економія засобів вираження, характерна для Бога. Основними цеглинками, з яких складаються як тварини, так і рослини, є клітки. Зрозуміло, клітки рослин і тварин відрізняються друг від друга. Наприклад, клітки рослин укладені у тверду целюлозну оболонку, а клітки тварин - немає. Незважаючи на ці розходження, обидві ці структури, безсумнівно, є клітками. Це явище являє собою приклад спільності різних організмів.

Крім того, у рослинах і тваринах існує величезна кількість механізмів надклітинного рівня. І рослини, і тварини використають судинну систему для транспортування живильних речовин усередині організму, а між індивідуумами того самого виду існують полові розходження.



  • Структура матерії

Дослідження в таких різних областях, як астрономія і ядерна фізика, дають багато інших прикладів неймовірно складних систем.
Я́дерна фі́зика - розділ фізики, який вивчає структуру і властивості атомних ядер, та механізми ядерних реакцій (в тому числі радіоактивний розпад).
Ці наукові дисципліни демонструють приклади ієрархічних систем нового типу. Астрономи вивчають галактики, які об'єднані в скупчення. У свою чергу, галактики складаються із зірок, планет і інші небесних тел. Фахівці з ядерної фізики зіштовхуються зі структурною ієрархією фізичних тіл зовсім іншого масштабу. Атоми складаються з електронів, протонів і нейтронів; електрони є елементарними частками, а протони й нейтрони діляться на ще більш дрібні компоненти - кварки.

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

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



  • Структура суспільних інститутів

Як останній приклад складних систем звернемося до суспільних інститутів. Люди поєднуються в групи для рішення завдань, які не можуть бути вирішені індивідуумами. Одні організації є тимчасовими, інші існують протягом декількох поколінь. Ніж крупніше організація, тим отчетливее проявляється її ієрархічна структура.
Ієрархічна структура - множина будь-чого, частково упорядкована так, що існує тільки один елемент цієї множини, який не має попереднього, а всі інші елементи мають тільки один попередній; багаторівнева форма організації об'єктів з чіткою приналежністю об'єктів нижнього рівня певному об'єкту верхнього рівня.
Наприклад, транснаціональні корпорації складаються з компаній, які у свою чергу утворяться підрозділами, що включають у себе філії, якою належать місцеві офіси й т.д.
Транснаціональна корпорація - це корпорація, що здійснює міжнародне виробництво на основі прямих іноземних інвестицій та має прямий контроль над своїми закордонними філіями. ТНК - це міжнародні компанії.
Якщо організація проходить випробування часом, то границі між її частинами можуть змінитися, а потім може виникнути нова, більше стійка ієрархія.

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



Визначення складності програмного забезпечення

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

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

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



Чому програмному забезпеченню властива складність?

Брукс затверджує: "Складність програмного забезпечення є істотним, а не випадковою властивістю" [3]. Це пояснюється чотирма причинами: складністю предметної області, труднощами керування розробкою програмного забезпечення, необхідністю забезпечити гнучкість програм, а також складністю опису функціонування дискретних систем.



Складність предметної області

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

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

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

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

Темні місця (англ. Dark Places) - англійський фільм жахів 1973 року.

Оскільки велика система програмного забезпечення завжди пов'язана з інвестуванням засобів, ми не можемо дозволити собі викидати існуючу систему при кожній зміні технічного завдання. Системи згодом еволюціонують, за планом або спонтанно. Іноді цей процес помилково називають супроводом програмного забезпечення. Точніше кажучи, супроводом (maintenance) називається виправлення виявлених помилок, еволюцією (evolution) — реакція на зміну технічних вимог, а збереженням (preservation) — спроба всіма можливими продовжити способами функціонування застарілих і частин, що розпадаються, програмного забезпечення. На жаль, як показує досвід, значна частка ресурсів, виділених на розробку програмних систем, витрачається саме на збереження.


//


Завдання групи проектувальників - створити ілюзію простоти


  1   2   3   4   5   6



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