Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

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

Підхід до конструювання впливає на можливість зменшення (в ідеалі – мінімізації) складності, готовності до змін та конструювання з можливістю перевірки. Планування конструкторської діяльності визначає порядок, у якому створюються компоненти й інші активи даної галузі знань (фази діяльності), проводяться роботи по забезпеченню якості програмного забезпечення, що отримується в результаті, розподіляються задачі та відповідні ресурси, у тому числі, визначаються призначення/відображення робіт конкретним інженерам-програмістам, членам проектної групи. Все це, звичайно ж, відбувається згідно правил, які визначаються методом (методологією, практиками і т. п.), що використовується. У нечітко регламентованих та неформальних методах, таких, як ХР, члени проектної групи самі приймають на себе відповідальність за рішення визначених задач, а «володіння» кодом є спільним на основі співпраці, як одного із ключових принципів роботи проектної команди.

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

Різні типи проектів вимагають різних підготовки та конструювання. У таблиці 1 наведено три популярних типи проектів, а також оптимальні в більшості випадків методи роботи над ними.

Таблиця 1

Тип програмного забезпечення
  Бізнес-системи Системи цільового призначення Вбудовані системи, від яких залежить людське життя
Типові застосунки Інтернет-сайти. Сайти в інтрамережах. Системи управління матеріально-технічним постачанням. Ігри. Системи керування інформацією. Системи виплати заробітної плати. Вбудоване ПЗ. Інтернет-сайти. Ігри. Пакетне ПЗ. Програмні інструменти. Web-сервіси.   Авіаційне ПЗ. Вбудоване ПЗ. ПЗ для медичних пристроїв. Операційні системи. Пакетне ПЗ.
Моделі життєвого циклу Гнучка розробка (екстремальне програмування, методологія Scrum, розробка на базі часових вікон та ін.). Еволюційне прототипування. Поетапна поставка. Еволюційна поставка. Спіральна розробка. Поетапна поставка. Еволюційна поставка. Спіральна розробка.
Планування та управління Інкрементне планування об’єкту. Планування тестування та гарантії якості при необхідності. Неформальний контроль над змінами. Базове завчасне планування. Базове планування тестування. Планування гарантії якості при необхідності. Формальний контроль над змінами. Вичерпне завчасне планування. Вичерпне планування тестування. Вичерпне планування гарантії якості. Ретельний контроль над змінами.
Вироблення вимог Неформальна специфікація вимог Напівформальна специфікація вимог. Огляди вимог при необхідності. Формальна специфікація вимог. Формальні інспекції вимог.
Проектування Комбінація проектування та кодування Проектування архітектури. Неформальне детальне проектування. Огляди проекту при необхідності. Проектування архітектури. Формальні інспекції архітектури. Формальне детальне проектування. Формальні інспекції детального проекту.
Конструюван-ня Парне або індивідуальне програмування. Неформальна процедура реєстрації коду або її відсутність. Парне або індивідуальне програмування. Неформальна процедура реєстрації коду. Огляди коду при необхідності. Парне або індивідуальне програмування. Формальна процедура реєстрації коду. Формальні інспекції коду.
Тестування та гарантія якос-ті Розробники тестують власний код. Попередня розробка тестів. Тестування окремої групи проводиться в малому об’ємі або не проводиться взагалі. Розробники тестують власний код. Попередня розробка тестів. Окрема група тестування. Розробники тестують власний код. Попередня розробка тестів. Окрема група тестування. Окрема група гарантії якості.
Впровадження застосунку Неформальна процедура впровадження. Формальна процедура впровадження. Формальна процедура впровадження.

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

Суть одного популярного практичного правила зводиться до того, щоб

· заздалегідь визначити близько 80% вимог;

· передбачити час для пізнішого визначення додаткових вимог;

· виконувати по мірі роботи систематичний контроль змін, приймаючи лише найважливіші вимоги.

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

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

 

а)

 

б)

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

Більш послідовний підхід можна обирати, якщо:

· Вимоги досить стабільні;

· Проект відносно простий та зрозумілий;

· група розробників знайома з прикладною областю;

· проект не пов’язаний з особливим ризиком;

· важлива довготривала передбачуваність проекту;

· затрати на зміну вимог, проекту додатку і коду, скоріше за все, виявляться високими.

Більш ітеративному підходу (питання вирішуються підчас роботи) краще віддавати перевагу у випадку:

· вимоги відносно незрозумілі або здається, що вони нестабільні;

· проект великим, не зовсім зрозумілий;

· група розробників незнайома з прикладною областю;

· проект пов’язаний з високим ризиком;

· довготривала передбачуваність не грає особливої ролі;

· затрати на зміну вимог, проекту додатку і коду, скоріше за все, виявляться низькими.

Попередні умови, які необхідно виконати перед конструюванням:

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

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

2. Вироблення вимог описує, що повинна робити програмна система. Ще називається аналізом вимог, специфікацією, функціональною специфікацією. Явні вимоги дозволяють гарантувати, що функціональність програми визначається користувачем, а не програмістом. Увага до вимог може допомогти звести до мінімуму зміни системи під час розробки. В результаті досліджень прийшли до висновку, що знаходження та виправлення помилки у вимогах до великих проектів на етапі проектування архітектури обходиться втричі дорожче, ніж на етапі вироблення вимог. Аналогічна помилка, виявлена при кодуванні буде дорожче у 5-10 разів, при тестуванні системи – в 10, а після випуску програми – в 10-100 разів. У менших проектах цей показник наближається до 5-10 разів. Згідно досліджень IBM при реалізації середнього проекту вимоги під час розробки змінюються приблизно на 25%.

3. Розробка архітектури, як правило, описується в єдиному документі, що називається «специфікацією архітектури» або «високорівневим проектом». Якість архітектури визначає концептуальну цілісність системи, котра, в свою чергу, визначає підсумкову якість системи. Архітектура дозволяє розбити роботу на частини для груп чи окремих програмістів. Вона визначає:

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

· організацію даних у вигляді опису форматів файлів, таблиць, БД (з альтернативами та обґрунтуванням). Ця інформація допоможе при конструюванні та супроводженні програмної системи, підказуючи, чим керувалися розробники;

· специфічні бізнес-правила та їх вплив на проект (наприклад, правило, що дані в системі оновлюються кожні 30с);

· інтерфейс користувача (описує головні елементи формату Web-сторінок, GUI, інтерфейсу командного рядка);

· План управління обмеженими ресурсами (з’єднання з БД, потоки, дескриптори). При умові обмеження об’єму пам’яті архітектура повинна визначати спосіб керування пам’яттю. Архітектура повинна включати оцінку ресурсів, що будуть використовуватись при номінальному та екстремальному навантаженні;

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

· Масштабованість – здатність системи адаптуватись до росту вимог (реагування системи на збільшення кількості користувачів, серверів, мережевих вузлів, записів до БД, транзакцій тощо);

· Взаємодію з іншими системами (при наявності спільних даних чи ресурсів з іншими програмами чи пристроями);

· Інтернаціоналізацію/локалізацію програмної системи (підтримка регіональних стандартів та мов). Особлива увага цьому питанню приділяється при розробці архітектури інтерактивної системи, що включає підказки, індикатори стану, повідомлення про помилки, допоміжні повідомлення та ін.;

· Введення-виведення (схема зчитування даних, рівень, на якому будуть визначатись помилки введення-виведення: на рівні полів, записів, потоків даних чи файлів);

· Обробку помилок;

· Відмовостійкість;

· Можливість реалізації архітектури (чи зможе система досягнути заданих показників продуктивності, працювати при обмеженості ресурсів). Архітектура повинна підтверджувати, що система може бути технічно реалізована;

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

· Купівлю чи створення. Якщо архітектура не передбачає використання готових компонентів, вона повинна пояснювати, в яких аспектах розроблювані компоненти будуть краще за готові бібліотеки та компоненти);

· Повторне використання (як ресурси, що будуть повторно використані, адаптуються у програмну систему);

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

Якщо проект розвивається без проблем, то на вироблення вимог, архітектуру та попереднє планування витрачається 10-20% зусиль та 20-30% часу.

<== предыдущая лекция | следующая лекция ==>
Спіральна модель | English Renaissance Poetry and Prose
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 1619; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.024 сек.