Разработка программного продукта

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,55 Мб
  • Опубликовано:
    2013-10-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программного продукта

1. Описание предметной области

Объектом автоматизации данного программного средства является вычисление максимального из собственных чисел заданной пользователем матрицы.

Собственным числом л матрицы А называется такое число, которое удовлетворяет решению системы: |А - лЕ| = 0. Для каждой матрицы может существовать несколько собственных чисел.

Во многих ситуациях требуется вычисление собственных значений матрицы. Эта проблема возникает во многих областях математики, механики, инженерного дела и геологии. Однако, зачастую, задача не ограничивается вычислением всех собственных чисел. Иногда, бывает необходимо вычислить только максимальное собственное число матрицы. Эта задача обусловлена необходимой скоростью вычислений и получением конкретного значения в ограниченно короткий срок.

Суть степенного метода нахождения максимального собственного числа матрицы заключается в следующем.

Задана матрица A. Задан вектор начального приближения x0. На каждом этапе производится вычисление следующего приближения xk+1. То есть, на каждом шаге имеются два вектора xk и xk+1. Именно они и используются для вычисления текущего собственного числа. Вычисление происходит по формуле:

, где xk+1=А xk.

Заданная точность обеспечивается выполнением следующего условия: , где  - заданная точность.

Рассмотрим частный случай.

Пусть имеется матрица A (3х3) и задано начальное приближение х0

.


Если заданная точность равна е = 1,6, тогда расчет максимального собственного числа прекращается, и полученное число 3,693 считают максимальным. В реальной жизни, подобная точность зачастую является недопустимой, поэтому ее значение берется от 0,00001 и меньше. Для нахождения максимального собственного числа с такой точностью требуется достаточно большое количество итераций.

2. Модель предметной области

Для представления предметной области воспользуемся диаграммой вариантов использования. Она приведена на рис. 1.

Рис. 1. Диаграмма вариантов использования. Степенной метод

3. Требования пользователя

1.      Программа должна вычислять максимальное собственное значение матрицы.

2.      Предложенное решение должно быть выполнено степенным методом.

.        Вычисления должны производиться с точностью задаваемой пользователем и большой скоростью.

.        Программа должна предусматривать возможность осуществления чтения исходной матрицы из файла и запись полученного результата в файл.

.        Программа должна иметь возможность работы в режиме диалога с пользователем: исходная матрица может задаваться пользователем в процессе выполнения программы, а не только считываться из файла.

.        Программный продукт должен иметь возможность проверки введенных данных на наличие в них ошибок.

.        Интерфейс должен быть приятен на вид и выполнен в темных тонах.

. Обзор существующих систем автоматизации поставленной задачи

Существует несколько программных продуктов, способных реализовывать поставленную задачу. Среди них: MathCad, MatLab. Однако, реализуемая задача не является основной в этих программных средствах, а является лишь некой встроенной функцией. Именно поэтому и возникает необходимость в разработке отдельного программного продукта, вычисляющего максимальное собственное число заданной матрицы.

. Требования к программному изделию

1.       Функциональные требования:

a.       Программа должна вычислять только максимальное из собственных значений матрицы с точностью, заданной пользователем.

b.      Программа должна обеспечивать точность вычислений: значения, вычисляемые программой, должны быть максимально приближены к точным значениям во избежание ошибок, связанных с их использованием..      Программа должна вычислять собственные числа для любой заданной матрицы..    Использовать алгоритм приведенный в пункте 1.

2.       Эксплуатационные требования:

a.       Программа должна работать с txt файлами: осуществлять чтение исходной матрицы из файла и запись полученного результата в файл. Внутренняя структура файлов определяется разработчиком.

b.      Программа должна обеспечивать высокую скорость вычислений. Вычисления с высокой точность (порядка 10 -15) не должны занимать более 5-7 секунд..         Программное изделие должно работать без сбоев в течение 6-7 часов.

3.       Требования к интерфейсам:

a.       Интерфейс программы должен быть максимально простым и понятным.

b.      Программный продукт должен предусматривать ввод данных с клавиатуры и чтение данных из файла. Для ввода данных с клавиатуры должны быть предусмотрены поля для ввода размера матрицы, точности, коэффициентов матрицы и вектора начального приближения. Помимо этого интерфейс программного средства должен содержать кнопки «Ввести данные с клавиатуры» - для ввода и проверки данных, введенных с клавиатуры, «Вывести результат на экран» - для вывода результата расчетов на экран, «Записать результат в файл» - для записи результатов вычислений в файл..         Конечный результат при нажатии кнопки «Записать результат в файл» дублируется на экран..   Программный продукт должен предусматривать возможность записи конечного результата в файл.

4.       Операционные требования:

a.                Программный продукт должен быть совместим с операционной системой Windows XP и ее более поздними аналогами.

b.      Программный продукт должен содержать необходимую справочную информацию, которая позволит пользователю избежать примитивных ошибок при работе с программой.

5.       Другие требования:

a.                Программный продукт должен корректно работать с матрицами размера не более 20х20 и не менее 3х3.

b.      Программный продукт должен уведомлять пользователя посредством сообщений о всех возникающих ошибках и неточностям, как на этапе ввода данных, так и на этапе выполнения расчетов.

 

. Подсчет количества функциональных точек


Определение границ программного средства

Разрабатываемое программное средство является полностью локальным и не предусматривает обмена данными с другими программными средствами через локальные либо глобальные сети.

Идентификация и оценка функциональности даннных (ILF, EIF)

Программное средство обеспечивает работу с одним внутренним логическим файлом (ILF). В данном файле хранится вся необходимая программному средству информация: размер матрицы, ее коэффициенты, точность вычислений и начальное приближение.

Число типов элементов данных (DET) внутреннего логического файла равно шести:

1.       n - количество строк в матрице. Количество строк равно количеству столбцов, так как расчет ведется для так называемых квадратных матриц.

2.      Mas - заданная матрица.

.        e - заданная точность.

4.      x0 - начальное приближение.

.        l - результат вычислений - максимальное собственное число заданной матрицы.

6.      k - количество итераций, необходимых для вычисления максимального собственного числа матрицы с заданной точностью.

Число типов элементов записей (RET) для внутреннего логического файла равно четырем:

1.            Mas - матрица.

2.      x0 - вектор.

3.      n, k - целые числа.

.        e, l - вещественные числа.

Таким образом, уровень сложности внутреннего логического файла определен как низкий.

Внешних интерфейсных файлов (ELF) данное программное средство не имеет.

Идентификация и оценка функциональности транзакций (EI, EO, EQ)

Данное программное средство предусматривает два внешних ввода (EI): ввод данных с клавиатуры и ввода данных из файла.

Для ввода данных с клавиатуры число типов элементов данных (DET) равно пяти: Mas, x0, n, e, а также кнопка «Ввести данные с клавиатуры». Количество используемых типов (FTR) равно пяти.

Уровень сложности для данного типа ввода определен как высокий.

Для ввода данных из файла результаты аналогичны результатам для ввода с клавиатуры, за исключение использования символьной строки с именем файла и соответствующей кнопки для загрузки данных. То есть, DET = 6, FTR=5. Уровень сложности для данного типа ввода определен как высокий.

Данное программное средство имеет только один внешний запрос (EQ) - запрос на корректность введенных данных. Для этого необходимы переменные Mas, x0, n, e, их значения проверяются соответственно: для матрицы - проверка на занесение недопустимых символом - знаков либо букв, для начального приближения - на равенство нулю, занесение недопустимых символов, для размера матрицы - принадлежность к заданным пределам, для точности - ограничение по порядку. Таким образом, DET=4, FTR=3. Информация на выходе данного запроса - «Введенная информация корректна» или «Введенная информация некорректна». То есть, DET=FTR=1. Таким образом, уровень сложности внешнего запроса определен как средний.

Данное программное средство предусматривает два внешних вывода: вывод данных в файл и вывод данных на экран. Для вывода данных на экран число типов элементов данных DET равно четырем: заданная точность, полученное максимальное собственное число матрицы, количество итераций, а также кнопка «Вычислить результаты». Количество используемых типов FTR равно трем. Таким образом, уровень сложности вывода на экран определен как средний.

Для записи данных в файл количество типов элементов данных DET равно пяти: максимальное собственное число, заданная точность, количество итераций, имя файла, а также кнопка «Записать результаты в файл». Количество используемых типов FTR равно четырем. Таким образом, уровень сложности вывода в файл определен как средний.

Определение нормирующего фактора (VAF)

Рассчитаем ненормированное количество функциональных точек.

Таблица 1. Расчет UFPC

Характеристика

Количество

Ранг

Итог

Внешние вводы (EI)

2

7

14

Внешние выводы (EO)

2

5

10

Внешние запросы (EQ)

1

4

4

Внутренние логические файлы (ILF)

1

7

7

Внешние интерфейсы (EIF)

0

-

0

Итого (UFPC)

35


Основные характеристики системы:

·        Программное средство реализовано как единый пакет на автономном персонально компьютере - 0.

·        Данные между компонентами программного средства и системы не передаются - 0.

·        Требования к производительности и проектированию программного средства были установлены и рассмотрены, но чтобы удовлетворить их никаких специальных мер не требовалось - 1.

·        Явных или неявных ограничений на использование ресурсов не установлено - 0.

·        Пиковые периоды транзакций не ожидаются - 0.

·        Сложность диалоговых транзакций - более 30% обрабатываются в интерактивном режиме - 5.

·        Эффективность программного средства для конечного пользователя - 2.

·        Оперативное обновление отсутствует - 0.

·        Сложность обработки данных - 3.

·        В программном средстве нет кода, предназначенного для повторного использования - 0.

·        Нет особых требований пользователя, и не требуется специальной установочной программы - 0.

·        Простота использования - 1.

·        При проектировании требования по установке программного средства были учтены, причем программное средство может выполняться, только на похожем (совместимом) аппаратном и / или программном обеспечении - 2.

·        Изменение программного средства не предусмотрена - 0.

Нормирующий фактор (VAF) вычислим следующим образом:

VAF=0,65+0,01*TDI=0,65+0,01*(1+5+2+3+2)=0,78

Подсчет нормированного числа функциональных точек

Нормированное число функциональных точек определяется как:

APFC=UPFC*VAF=35*0,78=26,3

Оценка количества строк исходного кода с использованием бэкфайер-метода

Программное средство будет разрабатываться в среде MS Visual Studio 2008, поэтому значение языкового множителя равно 34. Таким образом, приблизительное количество строк законченное программы в среде MS Visual Studio 2008 будет равно:

SLOC=AFPC*LM=26,3*34»894.

 

. Расчет трудозатрат на разработку рпограммного средства и ориентировочного времени его разработки


Таблица 2. Стоимостные факторы и коэффициенты нормирования трудозатрат

Фактор

Уровень

Нормировочный коэффициент

Rely

Очень низкий

0,75

Data

Низкий

0,94

SPLX

Низкий

0,85

Time

Сверх высокий

1,66

STOR

Низкий

1

VIRT

Очень низкий

1

Turn

Низкий

0,87

ACAP

Номинальный

1

PCAP

Номинальный

1

AXEP

Номинальный

1

VEXP

Высокий

0,9

LXEP

Номинальный

1

MODP

Номинальный

1

TOOL

Очень низкий

1,24

SCED

Очень низкий

1,23

1,19




, где

MM - трудозатраты или объем работ (в человеко-месяцах),

A, B - коэффициенты, зависящие от типа проекта,

KSLOC - размер программного средства в тысячах строк исходного кода,

Fi - i-тый коэффициент нормирования трудозатрат для соответствующего стоимостного фактора.

, где

T - ненормированная длительность разработки программного средства в месяцах,

C, D - коэффициенты, зависящие от типа проекта.

Очевидно, что по всем признакам (размеру, сложности, ограничениям и пр.) данный проект относится к типу распространенных, и следовательно, коэффициенты будут иметь следующие значения: A=3,2; B=1,05; C=2,5; D=0,38.

Рассчитаем ненормированные трудозатраты и ненормированную длительность разработки программного средства (при расчете коэффициент нормирования трудозатрат будет принят =1):

MM = 3,1 * (0,894)1,05=2,7559 человеко-месяца,

T = 2,5 * (2,7559)0,38=3,674 месяца.

С учетом оценки стоимостных факторов, и расчета коэффициента нормирования трудозатрат (Таблица 2), рассчитаем нормированные трудозатраты и нормированную длительность проекта:

MM = 2,7559 * 1,19 = 3,279 человеко-месяцев,

T = 2,5 * (3,279)0,38=3,925 месяцев.

Таким образом, для того чтобы разработать программное средство, вычисляющее максимальное собственное число заданной матрицы не обходимы трудозатраты, эквивалентные 3,279 человеко-месяцам. Оптимальным планируемым сроком разработки данного программного средства в предполагаемых условиях будет 4 месяца. То есть, один человек выполнит данный проект за 4 месяца, а 3 человека - за 1 месяц.

Время, затрачиваемое на программирование, составляет 4 месяца. Таким образом, с учетом того, что оно представляет собой 63% общего рабочего времени, получаем время на реализацию проекта, равное 6,4 месяца. Полное время составит 8 месяцев (оно учитывает еще 1,6 месяца необходимые на согласование с заказчиком).

 

. Модель жизненного цикла программного средства


Рисунок 2. Спиральная модель жизненного цикла программного средства

Спиральная модель жизненного цикла. Она представляет собой процесс разработки программного обеспечения, сочетающий в себе как проектирование, так и постадийное прототипирование. Отличительной особенностью данной модели является специальное внимание рискам, влияющим на организацию жизненного цикла. Среди этих рисков выделяют: дефицит специалистов, недостаточную квалификацию специалистов в необходимой предметной области, нереалистичные сроки, разработка неправильного пользовательского интерфейса, непрекращающийся поток изменений и некоторые другие.

Каждый виток спирали соответствует созданию фрагмента или версии программного обеспечения, на нем уточняются цели, характеристики проекта, определяется качество, планируются следующие этапы. Таким образом, каждый виток можно разбить на 4 сектора: оценка и разрешение рисков, определение целей, разработка и тестирование и планирование. На каждом витке спирали могут применяться различные модели разработки программного обеспечения.

Рассмотрим достоинства и недостатки данной модели.

Достоинства:

1.       В процессе разработки формируются работоспособные версии программного продукта.

2.      Невозможно четко определить требования к программному продукту, и, как следствие, имеется возможность минимизировать ошибки, связанные с противоречия в требованиях.

3.      На каждом витке предполагается демонстрация возможностей программного средства.

4.      Спиральная модель ориентирована на большие, сложные проекты, проекты, в которых требуется разработка стабильной архитектуры, и проекты, удовлетворяющие требованиям по нагрузке и устойчивости.

Недостатки:

1.            Невозможность четко определить требования к программному продукту, и, как следствие, существование недосказанностей, а также вероятность на начальных этапах упустить важные нюансы.

2.      Основной проблемой данной модели является определение момента перехода на следующий этап. Для ее решения необходимо вести четкое планирование, и, соответственно, переход на новый виток (новый этап) осуществлять в соответствии с составленным планом. То есть, есть необходимость ввода временных ограничений на этапы жизненного цикла программного продукта.

Рисунок 3. График работ над проектом

9. Разработка технического задания на создание автоматизированной системы


1.      Введение

1.1.   Назначение

Данное программное средство предназначено для нахождения максимальных собственных чисел заданной матрицы степенным методом. Данный программный продукт позволяет существенно сократить время, затрачиваемое на нахождение максимального собственного числа матрицы с заданной точностью, а также повысить эту точность.

Данное программное средство рассчитано на любой класс пользователей, так как он имеет простой, интуитивно понятный интерфейс, для работы с данным программным продуктом не требуется никаких определенных навыков или дополнительных знаний.

1.2.   Область действия:

Программное средство при запуске предоставляет пользователю выбор: вводить данные с клавиатуры либо же из файла. При выборе ввода данных из файла, пользователю необходимо ввести имя файла (выбрать существующий файл). При выборе ввода с клавиатуры, пользователю предоставляются специальные поля, предназначенные для заполнения. После ввода данных и их проверки на корректность для расчета необходимо нажать кнопку «Вычислить результат». Отображение результат на экране происходит автоматически. Также пользователю предоставляется возможность вывести результаты в файл - для этого пользователю необходимо нажать кнопку «Запись в файл».

1.3.   Определения, аббревиатуры, сокращения

Собственным числом л матрицы А называется такое число, которое удовлетворяет решению системы: |А - лЕ| = 0.

Матрица - математический объект, записываемый в виде прямоугольной таблицы, представляющий собой совокупность строк и столбцов, на пересечении которых находятся ее элементы.

Вектор - матрица, состоящая только из одного столбца.

Вырожденность матрицы - это свойство матрицы, подразумевающее сведение одной или нескольких строк матрицы в одну. Вырожденность характеризуется кратностью всех коэффициентов одной строки матрицы коэффициентам другой строке матрицы.

ПО - программное обеспечение.

ПС - программной средство.

ОС - операционная система.

1.4.   Публикации

Отсутствуют.

2.      Полное описание

2.1.   Перспектива

Программное средство является независимым и полностью автономным. Оно не имеет связи с другими изделиями.

2.2.   Функции изделия

2.2.1. Функция, предусматривающая ввод данных из файла. Она читает данные из указанного пользователем файла, содержащего информацию о размере матрицы, ее коэффициентах, точности вычислений и заданном начальном приближении.

2.2.2. Функция, предусматривающая ввод данных с клавиатуры. Она считывает данные из различных полей ввода.

.2.3.  Функция, подготавливающая форму для ввода данных пользователем.

.2.4.  Функция, вычисляющее максимальное собственное число матрицы, с заданной пользователем точностью. Функция вычисляет максимальное собственное число степенным методом.

.2.5.  Функция для записи результатов в файл. Она производит запись результатов вычисления в файл, имя которого указано пользователем.

.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.

 

. Архитектурный проект


Разрабатываемое программное средство является достаточно простым, поэтому для его разработки используется модульное проектирование. В связи с простотой программного продукта, его структура будет состоять из одного модуля, в котором будут реализованы необходимые функции.

Связанность модуля определим как:

·                    функциональную - так как весь модуль целиком реализует одну общую задачу - вычисление максимального собственного числа заданной матрицы по степенному методу;

·        информационную - так как все действия внутри модуля связаны данными и имеют строго определенный порядок следования.

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 следует так:(…)

{

}

2.1.7. Комментарии.

Строка комментария должна иметь такой же отступ, как и операция, которую она комментирует. In-line комментарии должны размещаться справа от комментируемого кода. Операторы комментария должны отделяться от текста комментария, по крайней мере, одним пробелом.

. Исходный код












13. Метрики сложности программных средств


Рассмотрим следующий фрагмент кода:

 // умножение вектора на вектор(int i=0; i<g_N; i++)

{+= _x[i]*x[i];+= x[i]*x[i];[i] = _x[i];

_x[i] = 0;

}

// собственного числа матрицы_l=temp/temp1;= 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.    Метрика уровня комментированности

 


Отсюда можно сделать вывод, что данная функция имеет нормальный уровень комментированности.

 

. Тестирование программных средств

программный технический автоматизированный

Таблица 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

. Метрики тестирования

Метрики прогнозирования дефектов. По некоторым данным, количество дефектов, оставшихся после автономного и интеграционного тестирования, колеблется в диапазоне от 1 до 14 на KSLOC, а в среднем - 10, то есть, до 1%. Для прогнозирования количества дефектов на уровне отдельных компонентов (до начала тестирования) можно использовать зависимость:

, где

V - размер в условных единицах функциональности, 1.2 - показатель степени.

Метрики оценивания. Предназначены для оценивания текущего состояния ПС (метрики продукта) в процессе тестирования. Основные категории метрик оценивания:

a)  метрики подсчета дефектов.

b)      метрики тенденций дефектов.)       метрики надежности.

Таблица 6. Метрики подсчета дефектов

Метрика

Обозначение

Формула

Значение

Количество дефектов

Дфакт

Сумма всех дефектов

Дфакт = 6

Плотность дефектов

Пл_Дфакт

Пл_Дфакт = Дфакт / Размер

Пл_Дфакт = 6/894 = 0,0067

Метрики тенденций дефектов (или профили дефектов) - группа метрик, которые предназначены для определения тенденций дефектов в ПС, а также динамики устранения дефектов. Профили дефектов могут вычисляться по любой классификационной категории: приоритетам устранения, типам, серьезности.

Таблица 7. Метрики профилей дефектов

Метрика

Обозначение

Формула

Значение

Профиль открытых дефектов

Пр. Доткр

Пр. Доткр = Доткр / Дфакт

Пр. Доткр = 1

Профиль закрытых дефектов

Пр. Дзакр

Пр. Дзакр = Дзакр / Дфакт

Пр. Дзакр = 0/1=0

Профиль серьезности

ПрСер

ПрСер = Дсер / Дфакт

ПрСер = 0/1 = 0

Средний возраст открытых дефектов

ВОЗРоткр

ВОЗРоткр = Днейоткр / Доткр

ВОЗРоткр = 0/1 = 0

Средний возраст закрытых дефектов

ВОЗРзакр

ВОЗРзакр = Днейзакр / Дзакр

ВОЗРзакр = 0

 

Метрики надежности - вычисляются по данным об отказах и требуют помимо подсчета отказов (дефектов) измерения интервалов времени между отказами.

Таблица 8. Метрики надежности

Метрика

Обозначение

Формула

Значение

Интенсивность отказов

FR

FR = Дфакт/Т

FR = 6/1=6 отк/час

Среднее время между отказами

MTBF

MTBF = Tc/Дфакт

MTBF = 1/6



Таблица 9. Метрики состояния процесса тестирования

Метрика

Обозначение

Формула

Значение

Динамика выполнения тестов

Твып

Твып = Тфакт / Тплан

Твып = 17/17 = 1

Динамика обнаружения дефектов

Тдин

Тдин = Тдеф / Тфакт

Тдин = 6/17 = 0,35

Общее состояние выполнения тестирования

Т проц

Тпроц = Тпр / Тплан

Тпроц = 100%


Метрики оценки продолжительности и трудоемкости тестирования.

Продолжительность тестирования может вычисляться в единицах календарного времени тестирования (днях) (включая время на разработку планов, тестов, подготовку данных, выполнение тестов, регистрацию результатов и др.).

Продолжительность = 34 дня

Трудоемкость тестирования Tm (чел.-дней) - может вычисляться как сумма периодов времени, потраченного участниками процесса тестирования на выполнение задач тестирования.


где Ді - время (дней), затраченное одним участником, n - количество участников.

Дi = 34;     n = 1. Tm = 34 человеко-дня.

 

. Надежность программного средства


Рассчитаем надежность разрабатываемого программного продукта по модели Коркорэна.

В результате тестирования программного средства было проведено 17 испытаний. 6 из них прошли безуспешно. В ходе тестов был выявлен один тип ошибок - ошибки ввода. Вероятность появления такой ошибки составляет 0,375. В этом случае показатель уровня надежности программного средства составит:

, где

0 - число безуспешных испытаний, Y - вероятность появления ошибок.

Похожие работы на - Разработка программного продукта

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!