- •4 Курс 2 семестр
- •Задача проектирования программных систем
- •Общие сведения о технологии программирования
- •Тестирование программ
- •Тестирование программного обеспечения
- •Правила тестирования Майерса
- •Уровни тестирования
- •Введение в программную инженерию История и основные понятия
- •Эволюция подходов к управлению программными проектами
- •Модели процесса разработки по
- •Управление проектами. Определения и концепция
- •Расчет экономической ис
- •Моделирование программных систем
- •Словарь uml
Общие сведения о технологии программирования
Характерные особенности технологии программирования
1950-1960гг – развитие концепции модульного программировании
1960-1970гг – развитие методологии и технологии программирования
1970-1980гг – развитие информационных систем и БД
1980-1990гг – развитие пользовательских интерфейсов
1990г-наше время – международная компьютерная сеть
Оценка статистической сложности программы
Оценка статистической сложности проводится по нескольким показателям:
Показатель статистической сложности. Определяется двумя способами:
Метод непосредственного подсчета числа операторов и операндов:
N=N1+N2, где N1 – общее количество операций и операторов в программе, N2 – общее количество операндов в программе.
С помощью уравнения длины:
N=n1*log2n1+n2*log2n2, где n1 – количество типов операторов (операции), n2 – количество различных операндов.
Объем программы:
V=N*log2n [бит], где N – длина программы, n – длина полного словаря (операций и операндов)
Уровень качества программирования:
L=(n1*/n1)*(n2/N2); L=(2/n1)*(n2/N2)
n2 – количество операндов
n1* - минимальное возможное количество операндов (n1*=2)
Уровень языка программирования:
Λ=L2V
Трудозатраты на проектирование программы:
a’ – Коэффициент, учитывающий стоимость проектирования одной команды в уникальной программе.
u – Показатель неавтоматизированной технологии при ручной работе равной нулю.
0≤р≤1
Понятие корректности программы
К
Корректность комплексов программ
орректность программы определяется степенью ее соответствия, предъявляемые к ней формализованным требованиям – программной спецификации.
Корректность текстов программ:
- синтаксическая
- семантическая
Корректность программных модулей:
- структурная
- функциональная:
Детерминированная
Стокастическая
Корректность данных:
- структурная
- конкретных значений
Корректность групп и комплексов программ:
- структурная и межмодульных связей
- функциональная:
Детерминированная
Стокастическая
Динамическая
Задача 1: составить программу для вычисления a=b/c-d, при вводе трех чисел b,c,d. После чего найти сумму пяти введенных элементов массива. Предусмотреть правильность ввода переменных. По составленной программе определить длину программы, объем программы, рассчитать уровень качества, уровень языка, оценку трудозатрат на разработку программы
Решение:
Program primer1;
Label m;
Var a,b,c,d,s:real;
x:array[1..5] of real;
i:integer
begin
m:
writeln(‘Введите три числа: ‘);
readln(b,c,d);
if c=0 then
begin
writeln(‘Деление на ноль запрещено!’);
goto m;
end
else
begin
a:=b/c-d;
writeln(‘a=b/c-d = ‘,a:10:2);
end;
writeln(‘Введите 5 элементов массива: ‘);
for i:=1 to 5 do
begin
readln(x[i]);
s:=s+x[i];
end;
writeln(‘Сумма элементов массива’,s:10:2);
end.
Расчет показателей:
Тип операторов |
Операнды |
|||||
Название |
i |
F1,j |
В теле программы |
i |
F2,j |
|
Readln |
1 |
2 |
A |
1 |
2 |
|
Writeln |
2 |
5 |
B |
2 |
2 |
|
For..to..do |
3 |
1 |
C |
3 |
3 |
|
If..then..else |
4 |
1 |
D |
4 |
2 |
|
Goto |
5 |
1 |
S |
5 |
3 |
|
:= |
6 |
3 |
X |
6 |
2 |
|
+ |
7 |
1 |
I |
7 |
3 |
|
- |
8 |
1 |
label |
8 |
2 |
|
/ |
9 |
1 |
|
|
|
|
= |
10 |
1 |
|
|
|
|
Begin..end |
11 |
4 |
|
|
|
|
ИТОГО: |
11 |
21 |
ИТОГО: |
8 |
19 |
|
|
n1 |
N1 |
|
n2 |
N2 |
|
Расчет параметров:
Длина программы равна:
Методом непосредственного подсчета
N=N1+N2=21+19=40 – реальная оценка сложности
N1- общее количество операций и операторов в программе, N2 – общее количество операндов в программе
Определение длины программы аналитическим путем (с помощью уравнения длины)
N=n1log2n1+n2log2n2=11*log211+8*log28=11*ln11/ln2+8*3=11*2.3978/0.6931+24=38.0548+24=62.054
n1 – количество типов операторов (операций)
n2 – количество различных операндов
Объем программы:
V=N*log2n [бит]
N – длина программы, n – длина полного словаря (операций и операндов)
n=n1+n2=11+8=19
V=40*log219=40*ln19/ln2=169.91
Уровень качества программирования:
L=(n1*/n1)*(n2/N2); L=(2/n1)*(n2/N2)
n1 – количество операндов (11)
n2 – количество операндов (8)
n1*- min возможное количество операндов (2)
L=(2/11)*(8/19)=0.0765
Уровень языка программирования:
Λ=L2V=0.07652*169.91=0.996
Оценка трудозатрат на разработку программы:
n1=11
n2=8
N1=21
N2=19
n=n1+n2=19
N=N1=N2=40
Трудозатраты определяются по формуле:
Сп=3*(165.669*lg165.693*(1-e-0.2*39)*2-3)/(39*sqrt(1-0))=2.84
