Подсчет количества функциональных точек. Расчет трудозатрат на разработку программного средства и ориентировочного времени его разработки, модель жизненного цикла. Разработка технического задания на создание автоматизированной системы, требования к ней.
Аннотация к работе
Данное программное средство предназначено для нахождения максимальных собственных чисел заданной матрицы степенным методом. Данный программный продукт позволяет существенно сократить время, затрачиваемое на нахождение максимального собственного числа матрицы с заданной точностью, а также повысить эту точность. Данное программное средство рассчитано на любой класс пользователей, так как он имеет простой, интуитивно понятный интерфейс, для работы с данным программным продуктом не требуется никаких определенных навыков или дополнительных знаний. Область действия: Программное средство при запуске предоставляет пользователю выбор: вводить данные с клавиатуры либо же из файла. Также пользователю предоставляется возможность вывести результаты в файл - для этого пользователю необходимо нажать кнопку «Запись в файл».
Введение
1.1. Назначение
Данное программное средство предназначено для нахождения максимальных собственных чисел заданной матрицы степенным методом. Данный программный продукт позволяет существенно сократить время, затрачиваемое на нахождение максимального собственного числа матрицы с заданной точностью, а также повысить эту точность.
Данное программное средство рассчитано на любой класс пользователей, так как он имеет простой, интуитивно понятный интерфейс, для работы с данным программным продуктом не требуется никаких определенных навыков или дополнительных знаний.
1.2. Область действия: Программное средство при запуске предоставляет пользователю выбор: вводить данные с клавиатуры либо же из файла. При выборе ввода данных из файла, пользователю необходимо ввести имя файла (выбрать существующий файл). При выборе ввода с клавиатуры, пользователю предоставляются специальные поля, предназначенные для заполнения. После ввода данных и их проверки на корректность для расчета необходимо нажать кнопку «Вычислить результат». Отображение результат на экране происходит автоматически. Также пользователю предоставляется возможность вывести результаты в файл - для этого пользователю необходимо нажать кнопку «Запись в файл».
1.3. Определения, аббревиатуры, сокращения
Собственным числом л матрицы А называется такое число, которое удовлетворяет решению системы: |А - ЛЕ| = 0.
Матрица - математический объект, записываемый в виде прямоугольной таблицы, представляющий собой совокупность строк и столбцов, на пересечении которых находятся ее элементы.
Вектор - матрица, состоящая только из одного столбца.
Вырожденность матрицы - это свойство матрицы, подразумевающее сведение одной или нескольких строк матрицы в одну. Вырожденность характеризуется кратностью всех коэффициентов одной строки матрицы коэффициентам другой строке матрицы.
ПО - программное обеспечение.
ПС - программной средство.
ОС - операционная система.
Список литературы
Отсутствуют.
2. Полное описание
2.1. Перспектива
Программное средство является независимым и полностью автономным. Оно не имеет связи с другими изделиями.
2.2. Функции изделия
2.2.1. Функция, предусматривающая ввод данных из файла. Она читает данные из указанного пользователем файла, содержащего информацию о размере матрицы, ее коэффициентах, точности вычислений и заданном начальном приближении.
2.2.2. Функция, предусматривающая ввод данных с клавиатуры. Она считывает данные из различных полей ввода.
2.2.3. Функция, подготавливающая форму для ввода данных пользователем.
2.2.4. Функция, вычисляющее максимальное собственное число матрицы, с заданной пользователем точностью. Функция вычисляет максимальное собственное число степенным методом.
2.2.5. Функция для записи результатов в файл. Она производит запись результатов вычисления в файл, имя которого указано пользователем.
2.2.6. Функция, выводящая результаты вычислений на экран.
2.3. Характеристики пользователей
Для использования данного программного средства пользователь не должен иметь никаких определенных навыков. Пользователю достаточно иметь азы работы с персональным компьютером.
2.4. Ограничения
Данный программный продукт разработан под операционную системы Microsoft Windows.
2.5. Допущения и зависимости
Отсутствуют.
2.6. Распределение требований
Отсутствуют.
3. Специфические требования
3.1. Требования к внешним интерфейсам
3.1.1. Интерфейсы пользователя
Реализовать графический интерфейс пользователя, представляющий из себя комплекс диалоговых окон, содержащий поля для ввода данных и кнопки для вычисления определенных действий.
3.1.2. Аппаратные интерфейсы
Отсутствуют
3.1.3. Интерфейсы программного обеспечения
Отсутствуют
3.1.4. Интерфейсы связи
Входные данные включают в себя: имя файла с исходными данными, размер матрицы, коэффициенты матрицы, начальное приближение, точность вычислений.
· имя файла вводится с клавиатуры, имеет символьным тип и длину не более 256 знаков (с учетом расширения файла);
· размер матрицы либо считывается из файла, либо вводится с клавиатуры, имеет целочисленный тип данных, минимально допустимое значение 1, максимальное - 20.
· коэффициенты матрицы вводятся либо с клавиатуры, либо считываются из файла, имеют вещественный тип данных, диапазон значений ограничен возможностями данного типа;
· начальное приближение - вектор из 0 и 1 - вводится либо с клавиатуры, либо считывается из файла, имеет целочисленный тип, ограничение на значения - нельзя брать нулевой вектор, пожелание - наилучшим является вариант, когда в начальном приближении одна 1, остальные - 0;
· точность вычислений вводится либо с клавиатуры. Либо из файла, имеет вещественный тип, должна быть больше нуля, желательно задавать точность, меньше единицы;
Выходные данные: имя файла, максимальное собственное число, количество итераций, за которое оно было вычислено.
· имя файла вводится пользователем с клавиатуры, имеет символьный тип, ограничение длины -256 символов (включая расширение файла);
· максимальное собственное число - результат вычислений, имеет вещественный тип, выводит на экран или в файл - по выбору пользователя;
· количество итераций, за которое было получено решение, имеет целочисленный тип, выводится на экран или в файл - по выбору пользователя.
3.2. Функциональные требования
Программное средство должно проверять корректность вводимых исходных данных. Программное средство должно информировать пользователя о всех неполадках и ошибках, возникающих в ходе его работы.
3.3. Требования к рабочим характеристикам
Число одновременно поддерживаемых пользователей равно 1. Вычисления должны производиться за промежуток времени, не превышающий 5 секунд.
3.4. Логические требования к базе данных
Отсутствуют ввиду отсутствия использования в программном средстве базы данных.
3.5. Проектные ограничения
Отсутствуют
3.6. Атрибуты системы программного обеспечения
3.6.1. Надежность
Вводимые пользователем данные должны проходить проверку на корректность. Корректно введенные данные обеспечивают надежную бесперебойную работы программного средства.
3.6.2. Доступность
Программное средство производит расчеты по мере обращения пользователя к нему, контрольных точек и механизма восстановления для данного программного средства не предусмотрено.
3.6.3. Защита
Программное средство должно осуществлять проверку верности вводимых данных и ограничений на размерности с целью предотвращения «зависания» программного средства.
3.6.4. Удобство сопровождения
Для данного программного средства имеется справка, вызываемая из самой программы. Информация, содержащаяся в ней, позволяет любому пользователю, даже первый раз работающему с данным программным средством, быстро с ним освоиться и избежать трудностей в работе.
3.6.5. Мобильность
Для переноса данного программного средства с одного персонального компьютера на другой необходимо, чтобы обе машины имели операционную систему, под которую разрабатывалось данное программное средство, то есть Microsoft Windows.
10. Архитектурный проект
Разрабатываемое программное средство является достаточно простым, поэтому для его разработки используется модульное проектирование. В связи с простотой программного продукта, его структура будет состоять из одного модуля, в котором будут реализованы необходимые функции.
Связанность модуля определим как: · функциональную - так как весь модуль целиком реализует одну общую задачу - вычисление максимального собственного числа заданной матрицы по степенному методу;
· информационную - так как все действия внутри модуля связаны данными и имеют строго определенный порядок следования.
11. Модуль программного продукта
Модуль играет роль «черного ящика», содержимое которого невидимо клиентам.
Модуль содержит следующие функции: 1) Функция, обработчик кнопки «Ввести данные с клавиатуры»: private: System: Void button6_Click (System: Object^ sender, System: EVENTARGS^ e)
2) Функция, обработки сообщения от кнопки «Вычислить результаты». Запускает вычисление максимального собственного числа матрицы. private: System: Void button4_Click (System: Object^ sender, System: EVENTARGS^ e)
3) Функция для обработки сообщений от кнопки «Записать результаты в файл». Записывает результаты вычислений в файл. private: System: Void button5_Click (System: Object^ sender, System: EVENTARGS^ e)
4) Функция, читающая данные из файла. Запускается по нажатию на кнопку «Ввести данные из файла». private: System: Void button3_Click (System: Object^ sender, System: EVENTARGS^ e)
5) Функция, вычисляющая максимальное собственное число матрицы степенным методом. private: void Max (double Mas[20] [20])
6) Обработчик нажатия на клафишу «Подготовить форму для ввода с клавиатуры». Считывает значения размера матрицы и точности вычислений и создает сетку соответствующего размера для ввода данных с клавиатуры. private: System: Void button1_Click (System: Object^ sender, System: EVENTARGS^ e)
12. Требования к оформлению программного кода
1. Имена
Имя должно соответствовать процессу или свойству, которое оно обозначает. Имена должны быть осмысленными и понятными. Имена констант следует задавать большими буквами. Имена функций и переменных лучше не задавать целиком из больших букв.
1.1. Имена функций
Имя должно соответствовать той функции, которой оно принадлежит, и содержать в себе суть действий, выполняемых данной функцией. Имя функции должно начинаться с большой буквы. Имя не должно напоминать ругательство, либо являться таковым на самом деле. Обычно лучше использовать длинные имена, чем короткие аббревиатуры. Однако не следует злоупотреблять. Если имя функции состоит из нескольких слов, то каждое слово должно начинаться с большой буквы.
1.2. Имена переменных.
Для составления имен переменных необходимо использовать упрощенную Венгерскую нотацию. Имена переменных должны нести в себе смысловую нагрузку.
1.2.1. Имена глобальных переменных.
Имя глобальной переменной должно начинаться с префикса «g_».
1.3. Имена файлов.
Для имен файлов лучше использовать соглашение 8.3 (8 символов - имя, 3 - расширение). Имя файла также должно быть информативным и включать в себя информацию о функциях, реализованных в этом файле.
2. Форматирование
2.1. Общие требования.
На одной строке должно находиться не больше одного оператора. Если вызов функции, операция инициализации, список и т.п. занимают более одной строки, то перенос на следующую строку должен следовать сразу после запятой. Если выражение занимает несколько строк, то переход на следующую строку должен осуществляться сразу после бинарной операции.
2.1.1. Максимальная длина строки.
Максимальная длина строки не должна превышать 70 символов. Принимая во внимание требования удобства, необходимо помнить, что возможность одновременно иметь несколько открытых окон - это удобней одного открытого окна, поэтому следует ограничить длину строки.
2.1.2. Использование для организации отступов табуляции и пробелов.
Для организации отступов используется табуляция, вместо пробелов. Размер отступа неограничен, однако если он превышает 4 табуляции, код не может уместиться по ширине страницы.
Комментарии должны находиться на уровне того оператора, которому они соответствуют. Комментарии справа от операторов должны быть выровнены с помощью пробелов.
2.1.3. Пунктуация.
Точке с запятой не должны предшествовать пробелы или табуляция. После запятой должен следовать пробел.
2.1.4. Расстановка фигурных скобок.
Существуют несколько традиций расстановки скобок, наиболее часто употребляемыми из них являются: · традиция фирмы Microsoft: if(…)
{
…
}
· традиция Unix: if(…) {
…
}
Традиция фирмы Microsoft более предпочтительна, особенно при условии необходимости оценки размеров блока, когда необходимо видеть его границы.
2.1.5. Расстановка круглых скобок.
Ключевое слово, заключенное в круглые скобки, должно начинаться и заканчиваться пробелом. Исключением является оператор sizeof(). Недопустимо ставить пробелы сразу после имени функции. Не следует применять скобки в операторе return без необходимости. Каждое выражение, за исключением арифметических операций должно использовать круглые скобки, чтобы задать порядок выполнения операций.
2.1.6. Форматирование операторов if/else.
При сравнении с константой ее лучше размещать справа от операторов == и!=. Выравнивать if/else следует так: if(…)
{
…
}
2.1.7. Комментарии.
Строка комментария должна иметь такой же отступ, как и операция, которую она комментирует. In-line комментарии должны размещаться справа от комментируемого кода. Операторы комментария должны отделяться от текста комментария, по крайней мере, одним пробелом.
13. Исходный код
13. Метрики сложности программных средств
Рассмотрим следующий фрагмент кода: // умножение вектора на вектор for (int i=0; i<g_N; i )
{ temp = _x[i]*x[i];
temp1 = x[i]*x[i];
x[i] = _x[i];
_x[i] = 0;
}
// непосредственно расчет максимального
// собственного числа матрицы g_l=temp/temp1;
fl = FABS (_l-g_l);
Рассчитаем для него метрики размера программ, метрику Мак-Кейба и метрику комментированности. Расчеты с пояснениями приведены ниже.
1. Метрики размера программ
1.1. Измерение первичных понятий
Приведем перечень операторов (Таблица 3) и операндов (Таблица 4.) для данного фрагмента кода.
Таблица 3. Число вхождений операторов
Оператор i f1i for 1 1
= 2 5
< 3 1
4 1
(), {} 5 3
[] 6 7
= 7 2
* 8 2
/ 9 1
FABS 10 1
?1=10 N1=24
Таблица 4. Число вхождений операндов
Операнд i f2i i 1 10
0 2 2 g_N 3 1 temp 4 2 temp1 5 2 x 6 4
_x 7 3 g_l 8 2
_l 9 1
?2=9 N2=27
Таким образом, длина приведенного фрагмента программы составляет: N=N1 N2=24 27=51.
1.2. Метрика длины
Теоретическая длина рассматриваемого фрагмента кода составляет:
1.3. Метрика объема
Рассчитаем реальный объем данного фрагмента кода:
Теперь рассчитаем потенциальный объем данного фрагмента кода:
1.4. Метрика уровня реализации
Метрика качества программирования равна:
Определим уровень программы с помощью аппроксимальной оценки:
1.5. Метрика интеллектуального содержания
Определим метрику интеллектуального содержания:
Определим количество элементарных решений необходимых для написания данного фрагмента кода:
1.6. Метрика Мак-Кейба
Построим граф для данного фрагмента кода.
Рисунок 4. Граф для рассматриваемого фрагмента кода
Вычислим цикломатическое число Мак-Кейба: , где е - число дуг ориентированного графа, v - число вершин графа, p - число компонентов связности графа.
Для графа (рис. 4) е = 13, v = 11, p = 1. В таком случае число Мак-Кейба равно Полученное число означает, что количество тестовых прогонов программы, необходимых для исчерпывающего тестирования по критерию «работает каждая ветвь», равно 4.
Рассмотрим тестовые прогоны программы, соответствующие полученному цикломатическому числу Мак-Кейба: 1) N=2, Mas = {4 1; 2 -1}, x0={1 1}, E=0,01. Данные введены с клавиатуры. Вывод результата осуществляется на экран. В основной функции, вычисляющей максимальное собственное число, цикл while пройден несколько раз.
2) N=2, Mas = {4 1; 2 -1}, x0={1 1}, E=0,01. Данные введены из файла. Вывод результата осуществляется на экран. В основной функции, вычисляющей максимальное собственное число, цикл while пройден несколько раз.
3) N=2, Mas = {4 1; 2 -1}, x0={1 1}, E=10. Данные введены с клавиатуры. Вывод результата осуществляется в файл. В основной функции, вычисляющей максимальное собственное число, цикл while пройден 1 раз.
4) N=2, Mas = {4 1; 2 -1}, x0={1 1}, E=10. Данные введены из файла. Вывод результата осуществляется в файл. В основной функции, вычисляющей максимальное собственное число, цикл while пройден 1 раз.
1.7. Метрика уровня комментированности
Отсюда можно сделать вывод, что данная функция имеет нормальный уровень комментированности.
14. Тестирование программных средств программный технический автоматизированный
Таблица 5. Основные тесты и их продолжительность
№ теста Описание Желаемый результат Полученный результат Длительность теста, сек.
1 Выбираем ввод данных из файла Появляются окно для выбора файла и кнопки «Ок» и «Отмена». Появляются окно для выбора файла и кнопки «Ок» и «Отмена». 0,047
2 Выбираем ввод данных с клавиатуры Появляется кнопка «Подготовить форму для ввода данных с клавиатуры». В поля необходимо ввести размерность и точность, затем нажать на эту кнопку. Формируется сетка для ввода коэффициентов матрицы, максимальное собственное число которой и нужно посчитать. 0,360
3 Ввод данных из существующего файла Считывание данных из файла. Вывод данных на экран. На экране появляется матрица с коэффициентами, полученными из файла, а так ее размер и точность 3
4 Ввод данных из существующего файла, структура которого не соответствует необходимой Информарование пользователя о несоответствующей структуре файла Система зависает. - 5 При выборе ввода данных с клавиатуры указываем размер 3 (и точность 1) и нажимаем «Подготовить форму для ввода данных с клавиатуры». Появление матрицы размером 3 на 3. На экране появились сетка размера 3х3 полей для ввода данных 0,328
6 При выборе ввода данных с клавиатуры указываем размер -1 (и точность 1) и нажимаем «Подготовить форму для ввода данных с клавиатуры». Сообщение о некорректном вводе Сообщение о неправильном вводе размера матрицы. Значение поля, в котором указан размер, установится в значение по умолчанию. 0,125
7 При выборе ввода данных с клавиатуры указываем размер 1.2 (и точность 1) и нажимаем «Подготовить форму для ввода данных с клавиатуры». Сообщение о некорректном вводе Сообщение о неправильном вводе размера матрицы не поступает. Размер матрицы задан неверно. Система зависает. - 8 При выборе ввода данных с клавиатуры указываем размер 2а (и точность 1) и нажимаем «Подготовить форму для ввода данных с клавиатуры». Сообщение о некорректном вводе Сообщение о неправильном вводе размера матрицы не поступает. Размер матрицы задан неверно. Система зависает. - 9 При выборе ввода данных с клавиатуры указываем точность а (и размер 3) и нажимаем «Подготовить форму для ввода данных с клавиатуры». Сообщение о некорректном вводе Сообщение о неправильном вводе точности не поступает. Размер матрицы задан неверно. Система зависает. - 10 При выборе ввода данных с клавиатуры указываем точность 0 (и размер 3) и нажимаем «Подготовить форму для ввода данных с клавиатуры». Сообщение о некорректном вводе Сообщение о неправильном вводе точности не поступает. Размер матрицы задан неверно. Система продолжает работу. 0,328
11 Указываем размер 3 и точность 0,0001. Нажимаем «Подготовить форму для ввода данных с клавиатуры». Заполняем сетку числами 1 2 3 4 5 6 7 8 9 И нажимаем кнопку «Ввести данные» Отсутствие каких-либо ошибок, программа должна продолжать работать Отсутствие каких-либо ошибок 2,023 (не учитывается время на заполнения полей пользователем, но учитывается время на нажатие кнопки «Ввести данные»)
12 Указываем размер 3 и точность 0,0001. Нажимаем «Подготовить форму для ввода данных с клавиатуры». Заполняем сетку числами 1 2 3 4 5 6 7 8 9 Нажимаем кнопку «Ввести данные». Нажимаем кнопку «Вычислить результаты». Нахождение максимального собственного числа. Вывод полученного результата на экран. 28
13 Указываем размер 4 и точность 0,0001. Нажимаем «Подготовить форму для ввода данных с клавиатуры». Заполняем сетку числами 1 2 3 5 4 5 6 9 7 8 9 10 4 8 11 16 Нажимаем кнопку «Ввести данные». Нажимаем кнопку «Вычислить результаты». Нахождение максимального собственного числа. Вывод полученного результата на экран. 45
14 Указываем размер 5 и точность 0,0001. Нажимаем «Подготовить форму для ввода данных с клавиатуры». Заполняем сетку числами 1 2 3 5 5 4 5 6 97 7 8 9 10 11 4 8 11 16 3 5 6 8 3 11 Нажимаем кнопку «Ввести данные». Нажимаем кнопку «Вычислить результаты». Нахождение максимального собственного числа. Вывод полученного результата на экран 53
15 Указываем размер 5 и точность 0,0001. Нажимаем «Подготовить форму для ввода данных с клавиатуры». Заполняем сетку числами 1 2 3 5 5 4 5 р 97 7 8 9 п0 11 4 8 11 16 3 5 6 8 3 11 Нажимаем кнопку «Ввести данные». Сообщение о некорректном вводе данных. Сообщение о некорректном вводе данных не поступает. Коэффициенты матрицы введены не верно. Система зависает. 2,01
16 Записать в файл результат решения системы из теста №10 В файл должны быть записаны следующие элементы: Размер матрицы, точность вычислений, матрица, максимальное собственное число. В файл записываются необходимые данные. 4
17 Записать в файл результат решения системы из теста №11 В файл должны быть записаны следующие элементы: Размер матрицы, точность вычислений, матрица, максимальное собственное число. В файл записываются необходимые данные. 5
15. Метрики тестирования
Метрики прогнозирования дефектов. По некоторым данным, количество дефектов, оставшихся после автономного и интеграционного тестирования, колеблется в диапазоне от 1 до 14 на KSLOC, а в среднем - 10, то есть, до 1%. Для прогнозирования количества дефектов на уровне отдельных компонентов (до начала тестирования) можно использовать зависимость: , где
V - размер в условных единицах функциональности, 1.2 - показатель степени.
Метрики оценивания. Предназначены для оценивания текущего состояния ПС (метрики продукта) в процессе тестирования. Основные категории метрик оценивания: a) метрики подсчета дефектов. b) метрики тенденций дефектов. c) метрики надежности.
Таблица 6. Метрики подсчета дефектов
Метрика Обозначение Формула Значение
Количество дефектов Дфакт Сумма всех дефектов Дфакт = 6
Плотность дефектов Пл_Дфакт Пл_Дфакт = Дфакт / Размер Пл_Дфакт = 6/894 = 0,0067
Метрики тенденций дефектов (или профили дефектов) - группа метрик, которые предназначены для определения тенденций дефектов в ПС, а также динамики устранения дефектов. Профили дефектов могут вычисляться по любой классификационной категории: приоритетам устранения, типам, серьезности.
Таблица 7. Метрики профилей дефектов
Метрика Обозначение Формула Значение
Профиль открытых дефектов Пр. Доткр Пр. Доткр = Доткр / Дфакт Пр. Доткр = 1
Профиль закрытых дефектов Пр. Дзакр Пр. Дзакр = Дзакр / Дфакт Пр. Дзакр = 0/1=0
Общее состояние выполнения тестирования Т проц Тпроц = Тпр / Тплан Тпроц = 100%
Метрики оценки продолжительности и трудоемкости тестирования.
Продолжительность тестирования может вычисляться в единицах календарного времени тестирования (днях) (включая время на разработку планов, тестов, подготовку данных, выполнение тестов, регистрацию результатов и др.).
Продолжительность = 34 дня
Трудоемкость тестирования Tm (чел.-дней) - может вычисляться как сумма периодов времени, потраченного участниками процесса тестирования на выполнение задач тестирования.
где Ді - время (дней), затраченное одним участником, n - количество участников.
Ді = 34; n = 1. Tm = 34 человекодня.
16. Надежность программного средства
Рассчитаем надежность разрабатываемого программного продукта по модели Коркорэна.
В результате тестирования программного средства было проведено 17 испытаний. 6 из них прошли безуспешно. В ходе тестов был выявлен один тип ошибок - ошибки ввода. Вероятность появления такой ошибки составляет 0,375. В этом случае показатель уровня надежности программного средства составит: , где
N0 - число безуспешных испытаний, Y - вероятность появления ошибок.