Головна |
Методи забезпечують проектування, реалізацію і виконання ПЗ. Вони накладають деякі обмеження на інженерію ПЗ у зв'язку з особливостями застосування їх нотацій і процедур, а також забезпечують оцінку і перевірку процесів і продуктів. Інструменти є програмною підтримкою окремих методів інженерії ПЗ і забезпечують автоматизоване виконання завдань процесів ЖЦ.
Галузь знань "Методи і інструменти інженерії ПЗ (Software Engineering Tools and Methods)" складається з розділів:
- Інструменти інженерії ПЗ (Software Engineering Tools),
- Методи інженерії ПЗ (Software Engineering Methods).
Методи інженерії ПО - Це евристичні методи (heuristic methods), Формальні методи (formal methods) І методи прототипування (prototyping methods) ,.
Евристичні методи включають: структурні методи, Засновані на функціональній парадигмі; методи, орієнтовані на структури даних, якими маніпулює ПО; об'єктно-орієнтовані методи, які розглядають предметну область як колекцію об'єктів, а не функцій; методи, орієнтовані на конкретну область застосування, наприклад, на системи реального часу, безпеки та ін.
Формальні методи засновані на формальних специфікаціях, аналізі, доведенні та верифікації програм. Формальна специфікація записується на мові, синтаксис і семантика якого визначені формально і засновані на математичних концепціях (алгебрі, теорії множин, логіці). Відрізняються такі категорії формальних методів:
- Мови і нотації специфікації (specification languages ??and notations), орієнтовані на модель, властивості і поведінку;
- Уточнення специфікації (refinement specification) шляхом трансформації в кінцевий результат, близький до кінцевого виконуваного програмного продукту;
- Методи докази / верифікації (verification /proving properties), що використовують затвердження (теореми), перед- і постумови, які формально описуються і застосовуються для встановлення правильності специфікації програм.
Ці методи застосовувалися в основному в теоретичних експериментах і більше 25 років їх практичне застосування було обмежено через трудомісткість і економічну невигідність. У 2005 р проблема верифікації придбала знову актуальність у зв'язку c розробкою нового міжнародного проекту з верифікаційних ПО "Цілісний автоматизований набір інструментів для перевірки коректності ПС" (ідея Т. Хоара, "Відкриті системи", 2006, № 6), що ставить наступніперспективні завдання:
- Розробка єдиної теорії побудови і аналізу програм;
- Побудова багатостороннього інтегрованого набору інструментів верифікації на всіх виробничих процесах - розробка формальних специфікацій, їх доказ і перевірка правильності, генерація програм і тестових прикладів, уточнення, аналіз і оцінка;
- Створення сховища формальних специфікацій, верифікованих програмних об'єктів різних типів і видів.
Передбачається, що формальні методи верифікації будуть охоплювати всі аспекти створення та перевірки правильності програм. Це призведе до створення потужної верифікаційної виробничої основи і значного скорочення помилок в ПЗ (доказу і верифікації буде присвячена тема 7.)
Методи прототипирования (Prototyping Methods) засновані на прототіпірованії ПО і поділяються на:
- Стилі прототипирования, що включають в себе створення тимчасово використовуваних прототипів (throwaway), еволюційне прототипирование - перетворення прототипу в кінцевий продукт і розробка виконуваних специфікацій;
- Техніки оцінки / дослідження (evaluation) результатів прототипирования.
Інструменти інженерії ПОзабезпечують автоматизовану підтримку процесів розробки ПЗ та включають безліч різних інструментів, які охоплюють усі процеси ЖЦ.
Інструменти роботи з вимогами (Software Requirements Tools) - це:
- Інструменти розробки (Requirement Development) Управління вимогами (Requirement Management) Для аналізу, збору, специфицирования і перевірки вимог. Наприклад, в моделі CMMI Staged на 2-му рівні зрілості знаходиться управлінні вимогами, а на 3-му рівні - розробка вимог;
- інструменти трасування вимог (Requirement traceability tools) є невід'ємною частиною роботи з вимогами, їх функціональне зміст залежить від складності проектів і рівня зрілості процесів.
Інструменти проектування (Software Design Tools) - це інструменти для створення ПЗ із застосуванням базових нотацій (SADT/IDEF, UML, Microsoft DSL, Oracle і т.п.).
Інструменти конструювання ПО (Software Construction Tools) - це інструменти для виробництва, трансляції програм і машинного виконання. До них відносяться:
- Редактори (program editors) Для створення і модифікації програм, і редактори "загального призначення" (UNIX і UNIX-подібні середовища);
- Компілятори і генератори коду (compilers and code generators) Як самостійні засоби об'єднання в інтегрованому середовищі програмних компонентів для отримання вихідного продукту з використанням препроцесорів, складальників, завантажувачів та ін .;
- Інтерпретатори (interpreters) забезпечують виконання програм шляхом емуляції, надаючи для виконання програм контрольоване і спостережуване оточення. Намітилася тенденотладчікі (debuggers) для перевірки правильності опису вихідних програм і усунення помилок;
- інтегровані середовища розробки (IDE - integrated developers environment), Бібліотеки компонент (libraries components), без яких не може проводиться процес розробки ПС, програмні платформи (Java, J2EE і Microsoft .NET) і платформа розподілених обчислень (CORBA і WebServices).
Інструменти тестування (Software Testing Tools) це:
- Генератори тестів (test generators), Що допомагають в розробці сценаріїв тестування;
- Засоби виконання тестів (test execution frameworks) забезпечують виконання тестових сценаріїв і відслідковують поведінку об'єктів тестування;
- Інструменти оцінки тестів (test evaluation tools) підтримують оцінку результатів виконання тестів і ступеня відповідності поведінки тестованого об'єкта очікуваному поведінки;
- Засоби управління тестами (test management tools) Забезпечують інженерію процесу тестування ПЗ;
- Інструменти аналізу продуктивності (performance analysis tools), кількісної її оцінки і оцінки поведінки програм в процесі виконання.
Інструменти супроводу (Software Maintenance Tools) включають в себе:
- Інструменти полегшення розуміння (comprehension tools) програм, наприклад, різні засоби візуалізації;
- Інструменти реінжінеріі (reengineering tools) підтримують діяльність по реінжінеріі і зворотної інженерії (reverse engineering) Для відновлення (артефактів, специфікація, архітектури) старіючого ПО і генерації нового продукту.
Інструменти конфігураційного управління (Software Configuration Management Tools) - це:
- Інструменти відстеження (tracking) дефектів;
- Інструменти управління версіями;
- Інструменти управління складанням, випуском версії (конфігурації) продукту його інсталяції.
Інструменти управління інженерною діяльністю (Software Engineering Management Tools) складаються з:
- Інструментів планування і відстеження проектів, кількісної оцінки зусиль і вартості робіт проекту (Microsoft Project 2003);
- Інструментів управління ризиками використовуються для ідентифікації, моніторингу ризиків і оцінки завданої шкоди;
- Інструментів кількісної оцінки властивостей ПЗ шляхом ведення вимірювань і розрахунку остаточного значення надійності і якості.
Інструменти підтримки процесів (Software Engineering Process Tools) розділені на:
- Інструменти моделювання та опису моделей ПЗ (наприклад, UML і його інструменти);
- Інструменти управління програмними проектами (Microsoft Project 2003);
- Інструменти управління конфігурацією для підтримки версій і всіх артефактів проекту.
Інструменти забезпечення якості (Software Quality Tools) діляться на дві категорії:
- Інструменти інспектування для підтримки перегляду (review) і аудиту;
- Інструменти статичного аналізу програмних артефактів, даних, потоків робіт і перевірки властивостей або артефактів на відповідність заданим характеристикам.
Додаткові аспекти інструментального забезпечення (Miscellaneous Tool Issues) відповідають таким аспектам:
- Техніки інтеграції інструментів (платформ, уявлень, процесів, даних і управління) для природного їх поєднання в інтегрованому середовищі
- Метаінструменти для генерації інших інструментів;
- Оцінка інструментів при їх еволюції.
Аналіз і характеристика областей знань SWEBOK | Вимоги до ПО (Software Requirements) | Проектування ПО (Software design) | Конструювання ПЗ (Software Construction) | Тестування ПЗ (Software Testing) | Супровід ПЗ (Software maintenance) | Управління конфігурацією ПЗ | Управління інженерією ПЗ | Життєвий цикл ПС, зв'язок з ядром знань SWEBOK | Каскадна модель ЖЦ |