logo
ТППС / Магистры / ТППС-лаб

1. Прототипування в процесі розробки пз

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

Один зі способів подолання цих труднощів полягає у використанні еволюційного методу розробки систем. Це означає, що користувачеві надається незавершена система, яка потім змінюється і доповнюється доти, поки не стануть ясні всі вимоги користувача. У якості альтернативи можна побудувати “експериментальний” прототип, який допоможе проаналізувати і перевірити вимоги. Після цього створюється система. На рис. 5.2 показано обидва підходи до використання прототипів.

Рис. 5.2. Еволюційне і експериментальне прототипування

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

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

Існує відмінність між цілями еволюційного і експериментального прототипування.

Інша важлива відмінність між цими підходами стосується керування якістю розроблювальної системи. Експериментальні прототипи мають дуже короткий строк життя. Вони швидко міняються і для них висока експлуатаційна надійність не потрібна. Для експериментального прототипу допускається знижена ефективність і безвідмовність. оскільки прототип повинен виконати тільки свою основну функцію ‒ допомогти в розумінні вимог.

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

Еволюційне прототипування

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

Рис. 5.3. Еволюційне прототипування

Цей метод прототипування має дві основні переваги.

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

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

Між окремими методами швидкої розробки ПЗ існують відмінності, але всі вони мають деякі загальні властивості.

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

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

  3. Застосування методів швидкої розробки систем. Вони можуть використовувати інструментальні САSЕ-засоби і мови четвертого покоління.

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

Еволюційне прототипування і методи, засновані на використанні детальної системної специфікації, відрізняються підходами до верифікації і атестації систем. Верифікація ‒ процес перевірки системи на відповідність специфікації. Оскільки для прототипу не створюється докладної специфікації, його верифікація неможлива.

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

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

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

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

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

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

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

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

Рис. 5.4. Покроковий процес розробки

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

Експериментальне прототипування

Модель процесу розробки ПЗ, заснована на експериментальному прототипуванні, показана на рис. 5.5. У цій моделі розширений етап аналізу вимог з метою зменшення загальних витрат на розробку. Основне призначення прототипу ‒ зробити зрозумілими вимоги і надати додаткову інформацію для оцінки ризиків. Після цього прототип більше не використовується і не бере участь в подальшому процесі розробки системи.

Рис. 5.5. Розробка ПЗ з використанням експериментальних прототипів

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

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

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

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

Розробники іноді зазнають тиску менеджерів для прискорення роботи над прототипом, особливо якщо намічається затримка в поставці остаточної версії системи. Зазвичай таке “прискорення” породжує ряд проблем.

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

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

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

  4. У процесі розробки прототипу послабляються стандарти якості.

Щоб бути корисними в процесі розробки вимог, експериментальні прототипи не обов'язково повинні виконувати роль реальних макетів систем. Паперові форми, що імітують користувацькі інтерфейси систем, показали свою ефективність при формуванні вимог користувача, в уточненні проекту інтерфейсу і при створенні сценаріїв роботи кінцевого користувача. Вони дуже дешеві в розробці і можуть бути створені за кілька днів. Розширенням цієї методики є макет користувацького інтерфейсу “Wizard of Oz” (Чарівник країни Оз). Користувачі взаємодіють із цим інтерфейсом, але їх запити спрямовані до фахівця, який інтерпретує їх і імітує відповідну реакцію.