- •1. Пряма, зворотна, емпірична інженерія програмного забезпечення.
- •2. Емпіричні та теоретичні дослідження.
- •3. Напрями емпіричних досліджень.
- •4. Методи пізнання: загально наукові, конкретно наукові.
- •5. Теоретичні загально наукові методи пізнання.
- •6. Емпіричні загально наукові методи пізнання.
- •7. Конкретно наукові методи пізнання (в загальному).
- •8. Місце емпіричної інженерії програмного забезпечення в іпз.
- •9. Емпірична інженерія програмного забезпечення – суть, предмет та методи.
- •10. Методи емпіричної інженерії (загально наукові, конкретно наукові).
- •Непрямі методики збору даних.
- •Незалежні методики збору даних.
- •Збір даних. Автоматизація збору даних. Використання засобів збору даних.
- •Збір даних. Вимірювання пз. Автоматизація вимірювань.
- •Lines of Code (кількість стрічок коду)
- •Maintainability Index (індекс зручності підтримки):
- •Цикломатична складність:
- •Зв’язність класів:
- •Глибина наслідування:
- •Аналіз даних. Автоматизація аналізу даних.
- •Caese-засоби: структура, процеси та призначння.
- •Порівняння case та caese-засобів.
- •Порівняння моделей процесів case та caese-засобів.
- •Кроки проведення емпіричних досліджень.
- •Проведення кращих емпіричних досліджень. Основні принципи.
- •Компоненти емпіричних досліджень.
- •Середовище досліджень
- •Гіпотези
- •План експерименту
- •Визначення предмету досліджень
- •Побудова взаємозв’язків між досліджуваними величинами
- •Проведення довгострокових (в природних умовах) та короткострокових (в лабораторних умовах) досліджень
- •Способи отримання даних.
- •Отримання даних на протязі часу
- •Моделювання
- •Статичне отримання даних
- •Паралельне проведення декількох досліджень.
- •Загально наукові емпіричні методи: спостереження та описання, експеримент, вимірювання.
- •Ціленаправленість;
- •Активність
- •Загально наукові теоретичні методи: ідеалізація, мисленний експеримент, формалізація.
- •Ідеалізація
- •Мисленний експеримент
- •Формалізація
- •Загально наукові теоретичні методи: абстрагування, аксіоматичний метод, метод гіпотези.
- •Абстрагування
- •Аксіоматичний метод
- •Метод гіпотези
- •Кількісні та якісні емпіричні дослідження. Відмінності в методах.
- •Кількісні емпіричні дослідження.
- •Якісні емпіричні дослідження.
- •Контрольовані експерименти.
- •Дослідження ситуацій (case studies).
- •Дослідження ситуацій (survey).
- •Інші методи емпіричних досліджень пз: кінцевий аналіз (post mortem analysis), етнографії, дослідження дій.
- •Вимірювання пз. Підходи до вимірювань.
- •Моделі вимірювань.
- •Мета-модель. Використання мета-моделі в iPlasma.
- •Шкали вимірювань.
- •Помилки при вимірюваннях
- •51. Види вимірювань
- •52. Вимірювання розміру.
- •53. Вимірювання функціональності.
- •54. Вимірювання складності.
- •55. Оцінка зусиль.
- •56. Вимірювання дефектів.
- •57. Надійність пз та прогнозування. Відмови.
- •58. Час відгуку та робото придатність.
- •59. Вимірювання прогресу.
- •60. Фінансові вимірювання.
- •Метрики програмного забезпечення. Види метрик.
- •Прямі та непрямі метрики.
- •Метрики розміру.
- •Недоліки розмірно-орієнтованих метрик.
- •Метрики складності потоку управління.
- •Метрики складності потоку даних.
- •Об’єктно-орієнтовані метрики.
- •Метрики Хольстеда.
- •Метрики Чепіна.
- •Метрики цикломатичної складності Мак-Кейба.
- •71. Попередня оцінка складності
- •72. Вимірювання зусиль
- •73. Вимірювання дефектів
- •75. Метрики якості продукту:
- •76. Метрики якості процесів:
- •77. Метрики якості супроводження
- •78. Застосування засобів контролю якості
- •79. Виявлення дефектів
- •80. Метрики процесів для тестування
- •Вимірювачі програмного забезпечення.
- •Особливості використання вимірювачів пз
- •Використання iPlasma для вимірювань.
- •Використання Analist4j для вимірювань.
- •Використання cccc для вимірювань.
- •Використання Visual Studio для вимірювань.
- •Пояснення основних метрик iPlasma.
- •Пояснення основних метрик Visual Studio.
- •Пояснення основних метрик Analist4j.
- •Структура iPlasma.
- •Візуалізація в iPlasma.
- •Призначення та послідовність проведення первинного статистичного аналізу.
- •Призначення та послідовність проведення кореляційного аналізу.
- •Призначення та послідовність проведення регресійного аналізу.
- •Описати, пояснити використання Statistica для первинного статистичного аналізу (або іншого засобу).
- •Описати, пояснити використання Statistica для кореляційного аналізу (або іншого засобу).
- •Описати, пояснити використання Statistica для регресійного аналізу (або іншого засобу).
- •Описати та пояснити використання Visual Studio для проведення рефакторингу.
-
Збір даних. Вимірювання пз. Автоматизація вимірювань.
Вимі́рювання — пізнавальний процес знаходження відношення між двома величинами однакової природи — вимірюваною й умовноюодиницею вимірювання, а також дія, знаходження значення фізичної величини дослідним шляхом, порівнюючи її з одиницею виміру за допомогою спеціальних технічних засобів.
У більшості випадків вимірювання - це багаторазове спостереження величини, що вимірюється. При цьому одержують сукупність вимірів, які необхідно сумісно обробити для одержання результату. Виправлений результат вимірювання одержують шляхом вилучення систематичних похибок. Якість результатів вимірювання характеризується надійністю, правильністю і точністю. Існують три складові частини загальної похибки вимірювання і відповідні їм показники якості результатів вимірювання: грубі, систематичні і випадкові похибки. Відсутність грубих похибок (промахів) характеризує надійність результатів і досягається організацією вимірювання. Вилучення систематичних похибок характеризує правильність результатів і досягається за допомогою введення спеціальних коефіцієнтів або поправок. Випадкові похибки є неминучими, а їх величини і закон розподілу характеризують точність результатів вимірювання.
Важлива ознака вимірювання — точність. Ступінь точності змінюється залежно від вимог, які ставлять до результату вимірювання. На практиці не тільки неминучі, а й допустимі різні похибки вимірювання. Розроблено спеціальні методи оцінки й компенсації цих похибок. Аналіз механізму вимірювання має важливе гносеологічне значення в зв'язку з тим, що кількісні методи дослідження широко застосовуються в сучасній науці, охоплюючи сферу як природничих, так і соціальних явищ.
Вимірювання - основний метод отримання результатів; процес квантифікації властивостей(атрибутів) об’єктів(сутностей) реального світу. Метод –певна сукупність кроків щоб вирішувати певну задачу і отримати результат. Методика(техніка)- невелика дія, частина методу.
Розглянемо основні вимірювачі, що автоматизують вимірювання:
-
iPlasma - інструмент для C++ і Java; платформа, створена як університетський проект в Румунії, для якісної оцінки об'єктно-орієнтованого проекту. Вона створює звіт у вигляді піраміди, показуючи ключову метрику для вашого проекту разом з порівняннями до стандартних.
Кожен ряд має кольоровий відсоток; відсоток виходить через співвідношення номера на цьому ряду і тим, що під цим. В таблиці показано, що означають абревіатури метрик:
NDD Number of direct descendants (число прямих нащадків)
HIT Height of inheritance tree (висота дерева успадкування)
NOP Number of packages (число пакетів)
NOC Number of classes (число класів)
NOM Number of methods (число методів)
LOC Lines of code (рядки коду)
CYCLO Cyclomatic complexity (цикломатична складність)
CALL Calls per method (виклик методу)
FOUT Fan out (number of other methods called by a given method) (число інших методів, до яких звертається заданий метод)
Номери вказують на співвідношення; кольори вказують, як співвідношення відповідають стандартним рівням: зелений(в межах ряду), синій (нижче за ряд), або червоний (за межами ряду). Для розрахунків метрик в iPlasma також використовуються стандартні константні значення2. Analyst4j
-
Analyst4j автоматизує процес вимірювання і забезпечує опис оточення для знаходження, аналізу і виразного представлення якісті коду Java, його зразки і «небезпечні місця», які можуть виникнути в коді.
Об'єктно-орієнтовані метрики.
Додатки розвивалися для використання вихідних орієнтованих мов подібно до Яви і були задумані, як об'єкти зборів, які інтермедія один з одним, щоб досягти бажаної функціональності. Взаємодія між об'єктами створює взаємовідношення між ними.
Analyst4j вимірює ці метрики автоматично, які формують джерело для аналізу.
o Навантажена Складність Методів ( WMC)
o Відповідь Для Класу (RFC)
o Відсутність Методів, що Пов'язуються (LCOM)
o З'єднання Між Об'єктами (CBO)
o Глибина Дерева успадкування (DIT)
o Число нащадків (NOC)
Метрики складності
Складність системи або його компонентів визначається як ступінь, до якого система / компоненти має проект або виконання, яке важке, щоб розуміти і перевіряти. Взагалі програмна складність може бути класифікована в трьох напрямах: логічна складність категорій, психологічна складність і структурна складність.
Програмне забезпечення завжди «зв'язане» і має складні модулі або програми, цим самим знаходячи такі програми і плануючи їх, ми відповідно гарантуємо продуктивність. Метрика складності, запропонована Halstead, McCabe визначають кількість програмної складності, які широко використовуються, щоб оцінити і зрозуміти складність системи.
Analyst4j вимірюють наступні метрики складності автоматично:
-
цикломатична складність за МакКейбом;
-
істотна складність;
-
метрики Хольстеда.
Метрика індексу ремонтопридатності
Кількісне вимірювання ремонтопридатності оперативної системи бажане як і миттєвий захід, так і як провісник ремонтопридатності через якийсь час.
Analyst4j автоматизує процес вимірювання МІ.
Кодова метрика
Поки досліджується метрика, що спеціалізується, вище зазначені метрики забезпечують специфічні інтуїції про кодову якість; загальні кодові метрики мають своє використання, коли використовуються в комбінації один з одним або з метрикою, що спеціалізується, подібно до Метрики OO або Метрики Складності.
Analyst4j автоматизує наступну кодову метрику, через чотири рівні (Метод, Клас, Файл і Пакет).
-
Method Level
-
Number of lines of Code (NLOC_MTD)
-
Percentage of comments (POC_MTD)
-
Number of Variables (NOV_MTD)
-
Number of Unused Variables (NOUV_MTD)
-
Number of comment lines (CL_MTD)
-
Number of Parameters (NOP_MTD)
-
Number of Unused Parameters (NOUP_MTD)
-
Class Level
-
Number of Lines of Code(NLOC_CLS)
-
Number of Parents (NOPNT_CLS)
-
Number of Fields (NOFLD_CLS)
-
Percentage of Non-Private Fields (NPFP_CLS)
-
Percentage of Non-Private Methods (NPMP_CLS)
-
Number of Inner Classes (NOIC_CLS)
-
File Level
-
Number of Lines of Code (NLOC_FIL)
-
Halstead Effort / Volume (HE_FIL, HV_FIL)
-
SEI Maintainability Index (MI_FIL)
-
Package Level
-
Number of Lines of Code (NLOC_PKG)
-
Number of Classes (NOCLS_PKG)
-
Number of Interfaces(NOIFC_PKG)
-
Number of Files (NOF_PKG)
-
CCCC - інструмент для аналізу початкового коду в різних мовах (перш за все C++), який генерує повідомлення в HTML форматі на різних вимірюваннях обробки коду. Хоча інструмент спочатку здійснювався, щоб обробити C++ і ANSI C, теперішня версія також може обробити початкові файли Java, і підтримувати теперішні версії на Ada95. Абривіатура CCCC розшифровується як 'C and C++ Code Counter'. Вимірювання початкового коду цього вигляду загалом прямують до того, як 'метрика програмного забезпечення', або точніше метрика «програмного продукту» (оскільки термін'метрика програмного забезпечення` також покриває вимірювання процесу програмного забезпечення, які є під назвою 'software process metrics').
LOC
Лінії коду
Цей показник перераховує рядки коду, початкового коду без коментаря у функції (LOCf), модулі (LOCm), або проекті (LOCp). Дана метрика була однією з найраніших, яка використовувалася.
Це має очевидне відношення до розміру або складності частини коду, і може бути відкалібрований для використання в прогнозі зусиль.
MVG
Цикломатична складність за Мак Кейбом
Дана метрика призначена для оцінювання складності потоку управління програми (control flow graph) і обчислюється на основі орієнтованого графа, де обчислювальні оператори або вирази представляються у вигляді вузлів, а передача управління між вузлами - у вигляді дуг.
COM Коментовані рядки
Рядок коментаря - лінія або частина лінії в програмі, яка призначається як зауваження, або коментарій проігнорених програмних дій. Це наголошується в межах файлу, використовуючи крапку з комою або REM, щоб відзначити лінію як коментар
Fan-out, Fan-in
Для даного модуля А, fan-out - число інших модулів, які модуль А використовує, а fan-in - число інших модулів, які використовують модуль А.
NOM
Число модулів присутніх в проекті.
WMC Зваженість методів класу
Ця метрика - сума складнощів методів, визначених в класі. Тому вона представляє складність класу, як ціле і тому вона може використовуватися, щоб вказувати розвиток і підтримку зусиль для класу.
-
Visual Studio 2008Team Edition для розробників програмного забезпечення, який являється частиною Visual Studio Team System має інструмент, який називається Code Metrics. Він використовується для визначення того як написаний код, ґрунтується на певних критеріях і показує результати в окремому вікні. Підрахунки ґрунтуються на таких критеріях: цикломатична складність, кількість рядків коду, глибина наслідування і т.д. все це впливає на індекс зручності підтримки коду (maintainability index).
Code Metrics забезпечує зворотній зв’язок з розробниками за наступними факторами: