Ім'я файлу: ПЗ Реферат.docx
Розширення: docx
Розмір: 38кб.
Дата: 28.09.2021
скачати
Пов'язані файли:
відп на пит.docx
389-3658-1-PB.docx

Титулка
Зміст



Вступ 3

Розділ 1. Особливості використання методів розв’язування складних прикладних задач в інженерії програмного забезпечення 5

1.1.Метод лінійного програмування 6

1.2.Метод нелінійного програмування 8

1.3.Метод дискретної оптимізації 9

1.3.1.Гілок та границь 10

1.3.2.Найближчого сусіда 11

1.3.3.Моделювання відпалу 12

1.3.4.Забороненого пошуку 13

1.3.5.Еволюційних алгоритмів 14

1.3.6.Колективної поведінки 15

1.3.7.Нейромережеві алгоритми 16

1.3.8.Імунні алгоритми 17

1.3.9.Меметичні алгоритми 19

1.3.10.Гібридні алгоритми 20

Розділ 2. Сфера та результати застосування даних методів 21

Висновки 24

Список використаних джерел 25



Вступ



Програмна інженерія (ПІ) містить у собі методи і засоби керування програмними проектами (планування робіт і регулювання ресурсів), експертне оцінювання проміжних результатів розроблення під час процесів ЖЦ, оцінювання ризику побудови програмної системи і досягнутої для неї якості.

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

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

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

Сучасна практика програмування вимагає вдосконалення прийомів розробки програмного забезпечення, прискорення та полегшення процесу його проектування. При цьому програмні засоби повинні бути орієнтовані на тривалу роботу з користувачем.

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

Метою даного реферату є дослідження особливостей використання методів розв’язування складних прикладних задач в інженерії програмного забезпечення.

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

Розділ 1. Особливості використання методів розв’язування складних прикладних задач в інженерії програмного забезпечення



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

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

Щодо розробки програмного забезпечення розрізняють дві інженерії програмного забезпечення:

  • уперед (forward), або пряма інженерія - зорієнтована на створення програмного забезпечення;

  • назад (backward, reverse), або зворотна (реверсивна) інженерія – зорієнтована на створення різнорівневих уявлень про програмне забезпечення.

Реалізація життєвого циклу, що забезпечує створення та використання програмного продукту – це мета прямої інженерії.

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

Крім цих двох інженерій, для дослідження програмного забезпечення застосовуються методи та засоби третьої інженерії – емпіричної (empirical software engineering).


    1. Метод лінійного програмування



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

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

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

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

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

- використовуючи результати аналізу визначають можливість і напрямок поліпшення початкового варіанта плану;

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

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

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

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


    1. Метод нелінійного програмування


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

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

Оптимізаційні задачі, на змінні яких накладаються обмеження, розв’язуються методами класичної математики. Оптимізацію з обмеженнями-рівностями виконують методами зведеного градієнта, наприклад, методом множників Лагранжа. У задачах оптимізації з обмеженнями-нерівностями досліджують необхідні та достатні умови існування екстремуму Куна-Таккера.

Ідея методу Лагранжа полягає в заміні окресленої задачі простішою - знаходження екстремуму складнішої функції, але без обмежень.


    1. Метод дискретної оптимізації


Використання моделей та алгоритмів дискретної оптимізації (ДО), дозволяє вирішувати багато задач, таких, як:

задачі оптимізації на мережах; маршрутизації трафіку в комунікаційних мережах;

задачі розміщення економічних об'єктів; задачі оптимізації автоматизованих систем планування ресурсів; задачі логістики [1];

задачі штучного інтелекту і робототехніки [2].

Це обумовлено тим, що дискретні оптимізаційні моделі адекватно відбивають нелінійні залежності та враховують обмеження логічного і технологічного типу, а також мають якісний характер [3]. Достатня кількість цих задач важкі, їх вирішення в гіршому випадку може вимагати побудови дерева пошуку рішень експоненціального розміру.

В даний час серед найбільш перспективних напрямків досліджень в області дискретної оптимізації можна виділити такі підходи [4]:  розробка ефективних обчислювальних алгоритмів (точних та наближених) для вирішення завдань ДО;  пошук спеціальних класів задач ДО, на яких добре працюють ті чи інші алгоритми;  розробка та дослідження алгоритмів ДО з ефективним розпаралелюванням обчислень;  теоретичний аналіз складності алгоритмів розв’язання задач ДО.

До традиційних методів вирішення задач ДО відносять алгоритми, які будуються на основі властивостей цільової функції і обмежень. Найбільш відомі [8]: симплекс - метод для вирішення задач цілочисленної оптимізації з лінійними обмеженнями; група методів послідовного аналізу та відсіювання варіантів, який є розвитком методу «гілок і меж» для задачі дискретної оптимізації з неспадними цільовими функціями, і дозволяє з аналізу деякого числа варіантів відкидати більше число, послідовно зменшуючи множину варіантів до розмірів, задовільних для використання прямого перебору.



      1. Гілок та границь


Метод гілок і меж (англ. Branch-and-Bound) — один з поширених методів дискретної оптимізації. Метод працює на дереві рішень та визначає принципи роботи конкретних алгоритмів пошуку розв'язків, тобто, є мета-алгоритмом. Для різних задач комбінаторної оптимізації створюють спеціалізовані алгоритми гілок та меж.

Ідею методу було вперше сформульовано A.H. Land та A.G. Doig (1960) в галузі дослідження операцій. R.J. Dakin (1965) розробив простий для впровадження алгоритм.

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

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

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


      1. Найближчого сусіда


Алгоритм найближчого сусіда — один з перших і найбільш простих евристичних методів розв'язування задачі комівояжера. Відноситься до категорії жадібних алгоритмів. За кожен крок його виконання до знайденої частини маршруту додається нове ребро. Алгоритм припиняє роботу, коли розв'язок знайдено і не намагається його покращити.

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


      1. Моделювання відпалу


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

Алгоритм імітації відпалу - загальний алгоритмічний метод розв'язання задачі глобальної оптимізації, особливо дискретної та комбінаторної оптимізації.

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

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


      1. Забороненого пошуку


Табу-пошук (ТП) — метод локального пошуку для математичної оптимізації. Створений Фредом У. Гловером в 1986 році[1] і формалізований в 1989[2].

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

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

      1. Еволюційних алгоритмів



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

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

Еволюційні алгоритми, в сучасному вигляді, з'явились наприкінці 1960-х на початку 1970-х (існують посилання на раніші дослідження). Еволюційні алгоритми можна поділити на три групи:[1]

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

Еволюційні стратегії (ЕС): Важливою особливістю еволюційних стратегій є використання само-адаптивних механізмів для контролю процесу мутації. Ці механізми зосереджені не лише на еволюції шуканих розв'язків, а й на еволюції параметрів мутації.

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

      1. Колективної поведінки


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

Мурашиний алгоритм. Мурашиний алгоритм [6] (ant colony optimization, ACO) – один з ефективних поліноміальних алгоритмів для знаходження наближених рішень задачі комівояжера, а також аналогічних завдань пошуку маршрутів на графах.

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



      1. Нейромережеві алгоритми


Одним з підходів до вирішення такого типу задач є використання апарату штучних нейронних мереж (ШНМ). Теорія нейронних мереж є перспективним напрямком математики та інформатики. Багато вчених проводили теоретичні та практичні дослідження, щодо створення нейронних мереж з різною динамікою для вирішення завдань лінійної, квадратичної, нелінійної, комбінаторної оптимізації [9].

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


      1. Імунні алгоритми


Для початку розглянемо загальний принцип роботи штучної імунної системи у вигляді алгоритму, що входить до класу клональних алгоритмів відбору[5]: На вході в систему - набір зразків для розпізнавання S; на виході ми повинні отримати набір «розпізнавачів» M, які в подальшому будуть здатні класифікувати нові для системи зразки.

Створюється випадковий набір антитіл A. Далі, для кожного зразка з набору S відбувається наступне: ­ визначається міра афінності (affinity - характеристика, яка визначає схожість генетичного набору антигену (зразка) і антитіла; в ШІС[6] визначається за допомогою математичних відстаней) з кожним конкретним антитілом з набору A; ­ антитіла з піднабору A з найвищою афінністю клонуються, причому число клонів кожного антитіла пропорційно його афінності; ­ кожен клон піддається мутації (зміни атрибутів; ступінь залежить від цільової функції), після чого вся популяція клонів одного антитіла порівнюється з батьківським.

Якщо після мутації клон виявляється краще батьківського, то він замінює останній в наборі A. Копії антитіл з найвищою афінністю відправляються в набір M; ­ n антитіл c найнижчою афінністю замінюються в наборі A на випадково згенеровані антитіла. Існує ще три основні класи алгоритмів відбору, які використовують ШІС: ­ Негативні алгоритми відбору, засновані на принципі позитивної і негативної селекції.

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

Дендритні алгоритми засновані на моделі дендритних клітини - ще одного виду імунокомпетентних клітин. В цілому, ШІС дозволяють вирішувати велику кількість завдань, особливо, пов'язаних з даними - крім класифікації і кластеризації, ШІС здатна знаходити аномалії, розпізнавати образи і сигнали, моделювати системи пошуку і оптимізації, а також системи комп'ютерної безпеки. З

адача ідентифікації користувача за клавіатурним почерком[3] можна представити як задачу розпізнавання образу, так як часові інтервали між натисканням клавіш на клавіатурі і час утримання (натискання) клавіші дозволяють достатньо однозначно охарактеризувати почерк роботи користувача на клавіатурі і є унікальними для кожної людини. В даному випадку набір часових характеристики користувача виступає в ролі набору зразків для розпізнавання.


      1. Меметичні алгоритми


Мем є одиницєю культурної інформації, поширюваною від однієї людини до іншої за допомогою імітації, навчання тощо [4]. У контексті МА, мем є реалізацією певного методу локальної оптимізації, що уточнює рішення у процесі глобального пошуку.

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

Для створення меметичного підходу до розв’язання конкретної задачі необхідно: - запропонувати форму гібридного подання задачі з урахуванням як генотипу, так і фенотипу особин популяції; - розробити модель зв’язку між генотипом і фенотипом особини; - розробити генетичні операції компоненту класичного генетичного алгоритму; - розробити алгоритм локального покращення (навчання) особин популяції; - дослідити ефективність розробленого підходу і намітити напрямки його подальшого вдосконалення.


      1. Гібридні алгоритми


Для ідентифікації параметрів зазначеної вище моделі було застосовано генетичний алгоритм оптимізації (ГА), розроблений нами раніше [4, 8]. Для цього алгоритму було проведено інтенсивне дослідження продуктивності при різних можливих параметрах ГА [4].

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

Для підвищення точності рішення було розроблено гібридний метод оптимізації, який спочатку запускає ГА, а потім використовує локальний детерміністичний метод для покращення результату [4]. Критерієм зупинки ГА було обрано формування заданого проценту схеми рішення [9]. У більшості випадків це не тільки призводить до підвищення точності рішення, але й також зменшує кількість обчислень цільової функції. Було проведено аналітичну та експериментальну оцінку ефективності гібридного методу на багатьох штучних цільових функціях та на складних динамічних моделях, де він показав високу ефективність [4].

Розділ 2. Сфера та результати застосування даних методів



Лінійне програмування є особливим випадком математичного програмування (математичної оптимізації).

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

Алгоритм використання методів лінійного програмування наступний:

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

- використовуючи результати аналізу визначають можливість і напрямок поліпшення початкового варіанта плану;

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

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

Під задачею дискретного програмування (дискретної оптимізації) розуміють задачу математичного програмування f(x)=min f(x), xG, множина допустимих розв’язків якої скінчена і тому всі допустимі розв’язки можна пронумерувати: х 1 , х2 ,…, х N, обчислити f(x i ), i=1, 2, …, N, і знайти найменше значення.

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

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

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

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

Ітераційна модель передбачає розбиття проекту на частини (етапи, ітерації) і проходження етапів життєвого циклу на кожному з них. Кожен етап є закінченим сам по собі, сукупність етапів формує кінцевий результат.

Пояснимо розбиття на етапи на побутовому прикладі. Припустимо, нам потрібен стіл у вітальню.

  • На першому етапі ми зробить стільницю, ніжки і скріпимо їх так, щоб стіл стояв.

  • На другому, зміцнимо і пофарбуємо його.

  • А на третьому, накриємо скатертиною і купимо до нього стільці.

На кожній ітерації ми працювали з одним і тим же продуктом і в кінці кожної ітерації отримували результат, яким можна користуватися (звісно з певними обмеженнями).

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

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

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

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

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

Висновки



Програмна інженерія. Це наука побудови комп'ютерних програмних систем (ПС), що містить у собі теоретичні концепції, методи і засоби програмування, технологію програмування, системи та інструменти їхньої підтримки, сучасні стандарти, зокрема, процеси життєвого циклу (ЖЦ), вимірювання і оцінювання якості розробки ПС.

Головне призначення програмної інженерії – побудова ПС, починаючи з аналізу предметної області (ПрО) і закінчуючи виготовленням вихідного коду для виконання на комп'ютері. Фундаментальну основу побудови ПС становлять: теорія алгоритмів, математична логіка, теорія обчислень, теорія керування й ін.

Колективне розроблення великих проектів ПС обумовило розвиток інженерних, технологічних методів і засобів регламентованого проектування ПС з урахуванням організаційних процесів ЖЦ: інженерія вимог, керування ризиком і якістю, планування і регулювання ресурсів, оцінювання процесів ЖЦ та показників якості, вартості і строків виготовлення програмного продукту.

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

Даний реферат мав за мету розглянути особливості використання методів розв’язування складних прикладних задач в інженерії програмного забезпечення. Було розглянуто їх властивості та основні характеристику, сфера застосування.

Список використаних джерел





  1. Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. 2-е изд. / Буч Г.– М. : "Бином", 1999. – 560 с.

  2. Иан Соммервилл. Инженерия программного обеспечения. 6-е изд. / Соммервилл И. – М.: "Вильямс", 2006. – 624 с.

  3. Леоненков А. Самоучитель UML. Эффективный инструмент моделирования информационных систем. / Леоненков А. – BHV-Санкт- Петербург, 2001. – 304 с.

  4. Фаулер М. UML в кратком изложении. Применение стандартного языка объектного моделирования. / Фаулер М., Скотт К. – М.: Мир, 1999. – 192 с.

  5. Орлов С.А. Технологии разработки программного обеспечения: Учебник. / Орлов С. – СПб.: "Питер", 2002. – 464 с.

  6. Бесекерский В.А., Власов В.Ф., Гомзин В.Н. и др. Руководство по проектированию систем автоматического управления. – М.: Высш.шк., 1983.

  7. Романычева Э.Т., Иванова А.К. и др. Разработка и оформление конструкторской документации РЭА. – М.: Радио и связь, 1984.

  8. С.П. Иглин. Математические расчеты на базе Matlab. Издательство "BHV- Санкт-Петербург" 2005г. 640 стр.

  9. В.П. Дьяконов. MATLAB 6.0/6.1/6.5/6.5 + SP1 + Simulink 4/5. Обработка сигналов и изображений. М.: СОЛОН-Пресс, 2004. - 592 с.

  10. В.П. Дьяконов. Matlab 6.5 SP1/7 + Simulink 5/6 в математике и моделировании. М.: СОЛОН-Пресс, 2005. - 576с.

  11. Оленев Н.Н., Печенкин Р.В., Чернецов А.М. Параллельное программирование в MATLAB и Simulink с приложениями к моделированию экономики. — М.: ВЦ РАН, 2015. — 123 с.

  12. Дьяконов В. П. MATLAB и SIMULINK для радиоинженеров. — М.: «ДМК-Пресс», 2011. — 976 с. — ISBN 978-5-94074-492-4.

  13. Глушко В. П., Глушко А. В. Курс уравнений математической физики с использованием пакета Mathematica. — СПб.: «Лань», 2010. — С. 320.

  14. Дьяконов В. П. Mathematica 5/6/7. Полное руководство. — М.: «ДМК Пресс», 2009. — С. 624. — ISBN 978-5-94074-553-2.

  15. Дьяконов В. П. Mathematica 5.1/5.2/6. Программирование и математические вычисления. — М.: «ДМК-Пресс», 2008. — С. 576.

  16. Акименко А.М. Періодичні розв'язки сингулярно збуреної виродженої системи диференціальних рівнянь [Текст] : автореф. дис... канд. фіз.-мат. наук: 01.01.02 / Акименко Андрій Миколайович ; Київський національний ун-т ім. Тараса Шевченка. - К., 2008. - 14 с.

  17. Акимов О.Е. Дискретная математика. Логика, группы, графы. / О.Е. Акимов – М: изд. дом «Лаборатория базовых знаний», 2003. – 376 с.

  18. Балухто А.Н. Нейронные сети, минимизирующие свою энергию, и решение задач целочисленного программирования с булевыми переменными / А.Н. Балухто // Нейрокомпьютеры: разработка. – В: 1997. № 3, 4. – С. 166.

  19. Новиков Ф.А. Дискретная математика для программистов / Ф.А. Новиков – СПб.: изд. дом «Питер», 2002 г.– 304 с..

  20. Рихтер К. Динамические задачи дискретной оптимизации: Пер. с нем. / К. Рихтер. – М.: Радио и связь, 1985. – 136 с.

  21. Свами М. Графы, сети и алгоритмы / М. Свами, К. Тхуласиларман. Пер. с англ. – М.: Мир, 1984.-455 с

  22. Сергиенко И.В. Математические модели и методы решения задач дискретной оптимизации / И.В. Сергіенко. – К.: Наукова думка, 1988. – 65 с.

  23. Скобцов Ю.А. Основы эволюционных вычислений. Учебное пособие / Ю.А. Скобцов. – Донецк: ДонНИУ, 2008.

  24. Струченков В.И. Методы оптимизации. Основы теории, задачи, обучающие компьютерные программы. / В.И. Струченков. – М.: Издательство «Экзамен», 2005. – 256 с.

  25. Струченков В.И. Методы оптимизации. Основы теории, задачи, обучающие компьютерные программы: Учебное пособие / В.И. Струченков – М.: Издательство «Экзамен», 2005. – 256 с.

скачати

© Усі права захищені
написати до нас