- •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 для проведення рефакторингу.
-
Lines of Code (кількість стрічок коду)
Цей параметр простий. Ця метрика найбільш відома її неправильним застосуванням. Використовуйте її обережно, взагалі, найкраще її використовувати для вимірювання інформації, лише для того щоб дізнатися наскільки великий є клас, чи метод.
-
Maintainability Index (індекс зручності підтримки):
цей індекс вираховуються, використовуючи формулу, так як показано в Visual Studio Code Analysis Team Blog: Maintainability Index = 171 - 5.2 * log2 (Halstead Volume) - 0.23 * (Cyclomatic Complexity) - 16.2 * log2 (Lines of Code). Ця формула ґрунтується на базі робіт проведених в Carnegie Melon University.
Значення індексу зручності підтримки варіюється від 0 до 100, де 0 – це код, який підтримувати найскладніше, а 100 – код, який ідеально підтримувати. Звичайно, коли цей індекс наближається до 100 – це добре. Для того щоб забезпечити простоту, інструмент code metrics в своїх результатах забезпечує іконками для частини коду (класу, або методу) разом зі значенням індексу для того щоб показати зручність його підтримки. Червона іконка представляє індекс підтримки, який менший за 10, що значить що ця частина коду потребує термінової уваги розробників. Значення між 10 і 20 супроводжуються жовтою іконкою для позначення частин коду які непросто підтримувати. Всі значення більше 20 прикрашені зеленою іконкою показують що код нормально підтримується.
-
Цикломатична складність:
це значення - підрахунок кількості розгалужень для кожної частини коду. Розгалуження можуть бути такі: оператори if, switch, for, while, і т.д. Менші значення кращі, тому що вони забезпечують більш зручний для читання і підтримки код.
-
Зв’язність класів:
це підрахунок всіх класів, від яких даний клас залежить. Якщо клас зв’язаний з багатьма іншими класами, тоді велика ймовірність, що код цього класу перестане працювати через зміни в інших класах. Тому цей показник має бути наскільки можливо нижчим. Вирішення полягає в використанні слабких зв’язків, або Service Oriented Architecture, якщо можливо. Являється правилом хорошого тону визначити спільні компоненти і абстрагувати їх як сервіси.
-
Глибина наслідування:
це число відображає кількість типів, які знаходяться вище типу, що відображається в дереві наслідування. Це значення міряється від класу Object, який знаходиться на нульовому рівні.
-
Аналіз даних. Автоматизація аналізу даних.
Кінцевою метою аналізу даних є одержання інформації, на основі якої можуть прийматися правильні рішення. Основні етапи технології аналізу даних показані на рис.
Типовою формою представлення даних є таблиця «об'єкт-ознака», у яку заносяться значення ознак (властивостей), що характеризують кожний досліджуваний об'єкт. Прикладами ознак можуть бути «вага», «довжина», «колір», «професія», «ціна», «люди», «вироби», «родовище» та ін. Таблицю такого виду прийнято називати таблицею або матрицею експериментальних даних (ТЕД). Цю назву варто трактувати більш широко, говорячи не про експериментальні дані, а про дані наукового дослідження.
Склад даних — це, насамперед, склад ознак, що характеризують об'єкти. Кожний реальний об'єкт має нескінченне число різноманітних властивостей, що відображають його різні сторони. Природно, що в кожному конкретному дослідженні істотними є не всі властивості, а лише обмежений їх набір, що визначає найбільш важливі ознаки. Виділити їх — завдання фахівця предметної області; ніхто інший, включаючи фахівця з аналізу даних, цього зробити не може. Необхідно також вирішити, як подавати в таблиці значення кількісних ознак та ін.
Наступним етапом аналізу даних є етап, на якому поставлене завдання вирішується на якісному рівні. Це насамперед означає процедуру подання даних у візуальній формі, щоб побачити їхню придатність для перевірки візуальних гіпотез або обраних моделей. Найголовніше те, що ця інформація може бути неформалізованою і в той же час майже однаково сприйматися людьми, що мають різний рівень підготовки і працюють у різних областях. На етапі якісного аналізу даних основні гіпотези стосуються структури даних — саме її необхідно досліджувати. Тому завдання полягає в побудові проекцій даних на різні пари ознак (на які саме — варто визначити, виходячи з висунутої гіпотези); дослідженні окремих ознак; пошуку дублюючих одна одну або надлишкових ознак і т. д.
Гіпотез, що пояснюють явище, може бути багато, отже, повинен бути апарат, що допомагає здійснювати їхню перевірку. У аналізі даних таким апаратом є обчислювальний експеримент із даними, тобто застосування до даних певного методу машинної обробки. Обчислювальний експеримент є однією з загальних методологій застосування обчислювальної техніки в різноманітних областях — методологією перевірки гіпотез, висунутих дослідниками, за допомогою машинних методів або моделей .
Якщо обчислювальний експеримент можна назвати стратегією аналізу даних, то тактикою його правомірно вважати зіставлення результатів застосування різноманітних алгоритмів обробки. На одиничний результат роботи якоїсь програми рідко можна покластись. Занадто багато чинників може вплинути на нього (причому часто незалежних від самих даних або математичних методів).
Результати роботи декількох програм, як правило, свідчать про багато що, але при цьому потрібно уважно підходити до вибору тих методів, які застосовуються для обробки.
Цих же принципів слід дотримуватися і на інших етапах аналізу, насамперед на етапі кількісного аналізу даних. Якщо при якісному аналізі об'єктом дослідження була структура даних, а результатом, як правило, — інформація про клас моделей, якими можна описати явище, то на етапі кількісного опису звичайно ведеться пошук параметрів цих моделей.
Обчислювальний експеримент дає можливість випробувати різноманітні варіанти моделей, наприклад, шукати різноманітні засоби інформаційного опису даних, а порівняльний аналіз допомагає відібрати кращі варіанти, що мають право на існування не тільки як формальні результати експериментування, але і як змістовно значима інформація про предметну область. Відзначимо, що в процесі пошуку кількісного опису даних (наприклад, при побудові правила розпізнавання) дуже часто виникає необхідність повернення до більш ранніх етапів обробки і повторення всього циклу дослідження. Це може бути викликано і знайденими помилками в даних, і усвідомленням необхідності у зборі й обробці додаткового матеріалу.
Останній етап вирішення завдання аналізу даних — інтерпретація результатів і прийняття рішень. Всі отримані на ЕОМ результати фахівець з аналізу даних може інтерпретувати, не виходячи за рамки понять і аналізу даних, у термінах інформативних ознак, групувань об'єктів і т. д. Користувач же щораз порівнює отриманий результат (або інтерпретацію фахівця з аналізу даних), виданий йому в цифровій або графічній формі, зі своїми власними уявленнями про досліджуване явище. Таким чином, відбувається подвійне осмислення результатів — спочатку в рамках аналізу даних, а потім у рамках предметної області, причому друге неможливе без першого. Процедура інтерпретації результатів опрацювання даних здійснюється тим легше, чим більш зручною форма видачі результатів на екрани монітора або до друку. Прийняття рішень у рамках предметної області суто індивідуальне і не може бути типізоване. Досить поширеною тут помилкою є ілюзія, ніби-то отриманий результат і є вже прийнятим рішенням.
Кожний алгоритм обробки дає один із можливих результатів (МР). При аналізі сукупності МР, одержаних за допомогою ряду алгоритмів, можливі три ситуації:
1) усі МР збігаються (це буває вкрай рідко в практичних задачах). У цьому випадку рішення задачі можна вважати досягнутим в силу одержання єдиного результату.
2) МР частково збігаються. У цьому випадку можна виділити загальну частину як можливий достовірний результат (МДР) і аналізувати його з наступною інтерпретацією в термінах відповідної предметної області;
3) МР суперечать один одному. Цей випадок означає, що задача була сформульована некоректно і потрібно її коригування з можливими змінами як в експериментальному матеріалі (аж до збору нових даних), так і в сукупності алгоритмів, які при цьому використовуються.