Загрузил m2007973

лр1

реклама
Министерство науки и высшего образования РФ
ФГАОУ ВПО
Национальный исследовательский технологический университет «МИСИС»
Институт Информационных технологий и компьютерных наук (ИТКН)
Кафедра Инфокоммуникационных технологий (ИКТ)
Отчет по лабораторной работе №1
по дисциплине «Технологии Разработки ПО»
на тему «Расчет показателей масштабности»
Выполнил
студенты группы
БИСТ-20-1
Лысенко О.А.
Проверил:
Карпишук А.В
Москва, 2022
Цель работы: освоение методики определения масштабов программных
средств и получение практических навыков в оценке производительности и
качества работы программиста.
Теория:
В оценке сроков и стоимости разработки программного проекта выделяют
два основных этапа: оценивание размера программы и, опираясь на
полученные данные, оценивание трудозатрат и стоимости. При этом
трудоемкость разработки в рамках одного класса решаемых задач
практически линейно зависит от масштаба проекта. Организации, сферой
деятельности которых является разработка программ, имеют собственные
наработки и стандарты в методике определения трудоемкости,
опирающиеся на опыт выполнения предыдущих проектов и позволяющие
оптимально распределить ресурсы. Важными параметрами в учете
ресурсов являются производительность и качество работы отдельных
программистов или групп разработчиков, для оценки которых необходим
расчет численных показателей (метрик) программного кода.
К размерно-ориентированным метрикам относится метрика строки кода
(source
lines of code, SLOC) – совокупное количество строк кода в модулях
программы. Различают
физические (physical) и логические (logical) строки кода. Физической
строке соответствует
одна строка листинга программы, логической строке соответствует, как
правило, один оператор языка программирования. Поскольку один и тот
же программный код, даже в рамках
5
одного языка, может быть описан разным количеством физических строк,
для оценки трудоемкости используют логические строки кода.
При подсчете показателя SLOC в программах на языках C/C++, С#
считаются:
1. Операторы ветвления: if, else if, else, ?, try, catch, switch.
2. Операторы цикла: for, while, do..while. Инициализация, условие и
инкремент в заголовке цикла for, фигурные скобки {}, ограничивающие
тело цикла, а также закрывающий
оператор цикла разделитель точка с запятой не считаются.
3. Операторы перехода: return, break, goto, exit, continue, throw. Метки,
используемые
совместно с оператором goto, не считаются.
4. Прочие операторы, оканчивающиеся точкой с запятой.
5. Разделитель блоков: {}. Пара фигурных скобок считаются как один
разделитель.
Фигурные скобки, оканчивающиеся разделителем точка с запятой, не
считаются. Фигурные скобки, используемые в операторах ветвления и
цикла, также не считаются.
6. Директивы препроцессора.
Для того чтобы оценить масштаб проекта, модули которого написаны на
разных языках программирования, необходимо выбрать универсальную
единицу измерения и привести к ней объемы этих модулей. Такой
единицей может выступать число машинных команд
в объектном коде после трансляции. Коэффициенты перевода зависят от
компилятора,
среды разработки и стиля программирования, и должны определяться для
каждого разработчика или группы разработчиков на основании опыта
предыдущих проектов.
Выполнение работы:
1) Анализ
Задача: Вывести на экран консоли количество чисел, кратных 2 и 3 в
массиве
Функциональные требования к программе:
программа должна осуществить суммирование количества чисел,
кратных 2 и 3, в заданном пользователем массиве.
Форматом выходных данных было принято строковое представление
целого числа.
Время выполнения этапа – 3 минут.
2) Проектирование
Замечена ошибка не указания размера массива в анализе. Сделаем
массив произвольного размера, задаваемый пользователем.
Были заданы переменные, задан массив и описан алгоритм
суммирования количества положительных элементов массива
Время выполнения этапа – 6 минут.
3) Кодирование
На этапе кодирования, при первичной отладке было выявлена одна
ошибка в коде.
Время выполнения этапа – 10 минут.
4) Тестирование
После компиляции программы было осуществлено ее тестирование, в
ходе которого не обнаружилось ошибок.
Время выполнения этапа – 1 минута.
Таким образом, сводная таблица выполнения этапов разработки
принимает вид:
Этап
Время, ч
Выявлено
анализа
0
ошибок
этапа
проектирования кодирования
х
х
Анализ
0,05
Проектирование 0,1
1
0
х
Кодирование
0,16
0
1
1
Тестирование
0,016
0
0
0
5) Расчет метрик:
Листинг программы :
using System;
namespace A1
{
class Program
{
static void
{
int[] b
int c =
int d =
Main(string[] args)
= { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
0;
0;
foreach (int a in b)
{
if (b % 3 == 0)
{
c++;
}
if (b % 2 == 0)
{
d++;
}
}
Console.WriteLine($"Количество чисел кратных 3: {c}");
Console.WriteLine($"Количество чисел кратных 2: {d}");
}
}
}
Определим согласно правилам подсчета значение SLOC, занося
промежуточные значения в таблицу:
Таблица 1.4
Оператор
Количество
if
2
foreach
1
;
7
{}
6
Значит, SLOC = 16.
Для расчета метрик Холстеда выделим уникальные операторы и операнды и
приведем их общее количество.
№
оператор
кол-во
№
операнд
кол-во
1
int
4
1
b
4
2
;
8
2
c
3
3
=
3
3
0
5
4
()
6
4
d
3
5
,
10
5
Console
2
6
in
1
6
"Количество чисел кратных
3: "
1
7
[]
2
7
"Количество чисел кратных
2: "
1
9
foreach
1
8
10
1
10
%
2
9
9
1
11
++
2
10
8
1
12
{}
2
11
7
1
13
WriteLine
2
12
6
1
14
==
2
13
5
1
14
3
2
15
2
2
16
1
1
17
4
1
Значит, ƞ1 = 14, N1 = 45, ƞ2 = 17, N2 = 31.
ƞ = 14 + 17 = 31
N = 45 + 31 = 76
N = 14 ∙ log14 + 17 ∙ log17 = 36,96
V = 76 ∙ log 31 = 113,34
D = 14/2 + 31/17= 8,82
Е= 113,34 · 8,82 = 999,65
T = 999,65/ 64800 = 0,015 ч
B = 113,34 / 3000 = 0,03
TК = 15 / 60 = 0,25 ч
BК = 4
PP = 16 / 0,25 = 64 строк/ч
DDE
DDE
DDE
Для расчета удельной стоимости кода определим величину
финансовых затрат исходя из стоимости одного часа работы программиста
(условно, 1000 руб.):
СК = TК · 1000 = 250 руб.
Тогда удельная стоимость равна:
Суд = СК / SLOC = 250 / 16 = 15,625 руб. / строку
Вывод: Благодаря данной лабораторной работе я освоила методики
определения масштабов программных средств и получение практических
навыков в оценке производительности и качества работы программиста.
Скачать