лр расчет метрик. лабораторная метрическая оценка ПО (1). Лабораторная работа по теме Метрическая оценка по
Скачать 356.5 Kb.
|
Ульяновский государственный университет Факультет Математики и информационных технологий Кафедра Информационных технологий Лабораторная работа по теме: «Метрическая оценка ПО». . Ульяновск - 2013г. МЕТРИКИ СЛОЖНОСТИ ПРОГРАММЫ.МЕТРИКИ РАЗМЕРА ПРОГРАММ. Метрика Холстеда.Линейная программа.Программа с указателями.Программа с модулями.МЕТРИКИ СЛОЖНОСТИ ПОТОКА УПРАВЛЕНИЯ ПРОГРАММЫ. Метрика Маккейба.Линейная программа.G(Z) = 16 - 13 + 2 = 5 Программа с указателями.G(Z) = 18 - 15 + 2 = 5 Программа с модулями.G(Z) = 6 - 5 + 2 = 3 Метрика граничных значений.Линейная программа.
Sa = 11+3+3+13+9=39 So=1-13/39=0.66 Программа с указателями.
Sa=11+3+3+14+10=41 So=1-14/41=0.66 Программа с модулями.
Sa=3+5+3=11 So=1-5/11=0.55 Метрика Джилба.Линейная программа.CL=3 cl = CL/N=3/120=0.025 Программа с указателями.CL=3 cl = CL/N=3/130=0.023 Программа с модулями.CL=3 cl=CL/N=3/133=0.022 МЕТРИКИ СЛОЖНОСТИ ПОТОКА ДАННЫХ. Метрика спена.
Метрика Чепина.
Q = 1*P+2*M+3*C+0.5*Q Q1=1+2*3+3*2=13 Q2=1+2*4+3*2=15 Q3=1+2*4+3*3=18 МЕТРИКИ СТИЛИСТИКИ И ПОНЯТНОСТИ ПРОГРАММ.Метрика уровня комментированности программ.
Метрики Холстеда.n = n1+n2 словарь программы N = N1+N2 длина программы N ^= n1 log2 n1 + n2 log2 n2 теоретическая длина программы V = Nlog2n объем программы V* = n*log2n* потенциальный объем программы L = V*/V уровень качества программирования L^ = 2n2/n1N2 уровень программы (без оценки теоретического объема) I = L^V интеллектуальное содержание алгоритма E = V2/V* интеллектуальные усилия при программировании
Метрики использования языков программирования и технологических средств.Метрики Денисенко.Оценка эффективности контроля соответствия типов данных. T(T-1) + N1(n1-1) + N2(n2-1) g = Т ------------------------------ тип N1(n1-T) + N2(n2-T) где T - число типов данных; N1 - число операторов; n1 - словарь операторов; N2 - число операндов; n - словарь операндов
Оценка эффективности ограничения области доступности переменных. nсв - число внешних переменных
Уровень языка программирования.
λср=1,275475Δx = 1,396978Линейная программа.#include #include #include #include typedef struct _STUDENT { char fio[20]; char group[10]; unsigned int grant; }STUDENT, *PSTUDENT; char path[] = "students.dat"; STUDENT st; void main() { char choice; fstream file; unsigned int num; do { clrscr(); cout<<"1-add new record\n"; cout<<"2-search record\n"; switch(choice = getch()) { case '1': { file.open(path,ios::app); if(!file) { cout<<"File could not be opened!!!\n"; } else { cout<<"fio=";cin>>st.fio; cout<<"group=";cin>>st.group; cout<<"grant=";cin>>st.grant; file.write((char*)&st,sizeof(STUDENT)); file.close(); } getch(); break; } case '2': { file.open(path,ios::in); if(!file) { cout<<"File could not be opened!!!\n"; } else { cout<<"Enter number of record:";cin>>num; file.seekp(num*sizeof(STUDENT)); file.read((char*)&st,sizeof(STUDENT)); file.close(); cout<<"fio="< cout<<"group="< cout<<"grant="< } getch(); break; } } } while(choice != 27); } Программа с указателями.#include #include #include #include typedef struct _STUDENT { char fio[20]; char group[10]; unsigned int grant; }STUDENT, *PSTUDENT; char path[] = "students.dat"; PSTUDENT st; void main() { char choice; unsigned int num; fstream *file; st = new STUDENT; file = new fstream(); do { clrscr(); cout<<"1-add new record\n"; cout<<"2-search record\n"; switch(choice = getch()) { case '1': { file->open(path,ios::app); if(!file) { cout<<"File could not be opened!!!\n"; } else { cout<<"fio=";cin>>st->fio; cout<<"group=";cin>>st->group; cout<<"grant=";cin>>st->grant; file->write((char*)st,sizeof(STUDENT)); file->close(); } getch(); break; } case '2': { file->open(path,ios::in); if(!file) { cout<<"File could not be opened!!!\n"; } else { cout<<"Enter number of record:";cin>>num; file->seekp(num*sizeof(STUDENT)); file->read((char*)st,sizeof(STUDENT)); file->close(); cout<<"fio="< cout<<"group="< cout<<"grant="< } getch(); break; } } } while(choice != 27); delete file; delete st; } Программа с модулями.#pragma argsused #include "type.h" #include #include "Unit1.h" #include "Unit2.h" #include "Unit3.h" #include "Unit4.h" char path[] = "students.dat"; STUDENT st; void main() { char choice; unsigned int num; do { clrscr(); switch(choice=menu()) { case '1': { cout<<"fio=";cin>>st.fio; cout<<"group=";cin>>st.group; cout<<"grant=";cin>>st.grant; add(path, st); break; } case '2': { cout<<"Enter number of record:";cin>>num; st = search(path,num); print(st); break; } } } while(choice != 27); } //--------------------------------------------------------------------------- #include "Unit1.h" //--------------------------------------------------------------------------- char menu() { cout<<"1-add new record\n"; cout<<"2-search record\n"; return getch(); } #pragma package(smart_init) //--------------------------------------------------------------------------- #include "Unit2.h" //--------------------------------------------------------------------------- void add(char *path, STUDENT st) { fstream file; file.open(path,ios::app); if(!file) { cout<<"File could not be opened!!!\n"; } else { file.write((char*)&st,sizeof(STUDENT)); file.close(); } } //--------------------------------------------------------------------------- #include "Unit3.h" //--------------------------------------------------------------------------- STUDENT search(char *path, int num) { fstream file; STUDENT st; file.open(path,ios::in); if(!file) { cout<<"File could not be opened!!!\n"; } else { file.seekp(num*sizeof(STUDENT)); file.read((char*)&st,sizeof(STUDENT)); file.close(); } return st; } //--------------------------------------------------------------------------- #include "Unit4.h" //--------------------------------------------------------------------------- void print(STUDENT st) { cout<<"fio="< cout<<"group="< cout<<"grant="< getch(); } |