Смекни!
smekni.com

Предметна область системного аналізу Основні поняття системного аналізу (стр. 1 из 2)

МІНІСТЕРСТВО ОСВІТИ І НАУКИ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”

Кафедра інформаційних

систем та мереж

Практична робота №1

на тему:

ПРЕДМЕТНА ОБЛАСТЬ СИСТЕМНОГО АНАЛІЗУ. ОСНОВНІ ПОНЯТТЯ СИСТЕМНОГО АНАЛІЗУ

Львів-2009р.

Назва роботи:

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

Мета роботи:

Ознайомитись з предметною областю системного аналізу та вивчити теоретичні відомості.

Короткі теоретичні відомості:

У процесі вивчення системного аналізу важливо передусім проаналізувати причини і фактори, що зумовили можливість його становлення й розвитку як універсальної наукової методології, зрозуміти роль і місце системного аналізу в сучасних галузях наукових знань, у різних сферах практичної діяльності, а також виявити міру його впливу на розвиток суспільства.

Необхідність такого підходу обумовлена видатними досягненнями ХХ століття, зокрема освоєнням космосу; розробкою й масовим впровадженням обчислювальної техніки, інформаційних технологій і світової мережі Інтернет; швидким розвитком і широким застосуванням авіацій; дослідженням ядерних процесів, освоєнням і розвитком атомної енергетики. Стрімкий розвиток наукомістких технологій і технічного оснащення в різних галузях виробництва й обслуговування, враховуючи медицину, фармакологію, генну інженерію, низка інших найбільших досягнень науково- технічного прогресу увійшли в історію цивілізації як результат погодженої взаємодії науки, освіти і промисловості. Усі ці досягнення зробили свій вагомий внесок різні науки, які охоплюють багато галузей знань і різні історичні періоди. Це були науки, щозародилися у Стародавньому світі, і науки, формування яких почалося лишеу ХХ столітті. До останніх поряд з іншими новітніми напрямами, такими яккібернетика, дослідження операцій, загальна теорія систем, системотехніка,теорія прийняття рішень, теоріяоптимізації, належить і системний аналіз.

Системне мислення – це вища форма людського пізнання, коли процеси відображення об’єктивної реальності базуються на цілісному відображені досліджуваного об’єкта з позиції досягнення поставлених цілей дослідження на підставі знань, досвіду, інтуїції і передбачення. Принципововажливоюдеталлю цього означення є залежність меж об’єкта дослідженнявідпоставлених цілей.

Середовище – зовнішнє оточення людини та об’єкта дослідження (природне середовище, зовнішні об’єкти, що залежать від розглянутого об’єкта або взаємодіють із ним).

Людина – розробник, виробник, користувача, продавець чи покупець об’єкта або фахівець-дослідник відповідної предметної галузі, до якої належить досліджуваний об’єкт.

Відповіді на контрольні питання:

1. Системний аналіз — вивчення об'єкта дослідження як сукупності елементів, що утворюють систему. У наукових дослідженнях він передбачає оцінку поведінки об'єкта як системи з усіма факторами, які впливають на його функціонування. Цей метод широко застосовується у наукових дослідженнях при комплексному вивченні діяльності виробничих об'єднань і галузі в цілому, визначенні пропорцій розвитку галузей економіки тощо.

2. Системне мислення – це вища форма людського пізнання, коли процеси відображення об’єктивної реальності базуються на цілісному відображені досліджуваного об’єкта з позиції досягнення поставлених цілей дослідження на підставі знань, досвіду, інтуїції і передбачення. Принципововажливою деталлю цього означення є залежність меж об’єкта дослідження відпоставлених цілей.

3. Системний аналітик – Людина яка стежить за станом системи.І досліджує систему.

4. Предметна область системного аналізу зводиться до вивчення складнихбагаторівневих множин систем різної природи та різних видів і класів зрізноманітними властивостями і відношеннями між ними. Вона настількиширока, що не підлягає строгій та однозначній класифікації йвпорядкуванню.Методи системного дослідження як способи чи шляхи практичного аботеоретичного пізнання явищ і закономірностей функціонування і розвиткускладних систем є досить різноманітними іне обмежуються будь-якимирамками.

5. A×B={(a,b) |aA,bB} - прямий добуток множин.

AB={x|xAxB} - поєднання множин.

AB={x|xAxB} - перетин множин.

A\B={x|xAxB} - різниця множин.

∅- пуста множина.

U- універсальна множина.

A=U\A={x|xA} - доповнення множини.

6. Будь-який заданий клас абстрактних об’єктів може мати декількаможливихпредставлень, та вибір найкращого з них основним чиномзалежить від того,яким чином об’єкт буде використаний, а також від типуздійснених над ним операцій.

В алгоритмах на дискретних структурах часто ми зустрічаємось зпредставленням кінцевих послідовностей та операціями з ними. Зобчислювальної точки зору простішим представленням кінцевоїпослідовності 1 2 , , ,n s s s є точний список її членів, які знаходяться попорядкув суміжних комірках пам’яті.

7. Мережа Петрі складається з чотирьох елементів: скінченної множини позицій Р = {p1, p2,..., pn}, множини переходів Т = {t1, t2,..., tm}, вхідної функції І:TP, і вихідної функції О:TP.

8. Майже всі машинні представлення дерев основані на зв’язнихрозподілах.Кожний вузол складається із поля даних та деяких полів длявказівників. В наступному прикладі представлені дерев кожний вузол має потри полявказівників.

9. Дерево досягальності мережі Петрі є ілюстрацією множинидосягальностіR(C, μ). Оскільки в багатьох випадках множина досягальності єнескінченною, то існують певні правила, які дозволяють відобразити їїскінченним деревом досягальності.

Поставновка задачі:

Потрібно за даними в методичці знайти розширену вхідну і вихідну функції мережі Петрі. Також зобразити граф мережі Петрі, дерево досяжності глибини 3. Написати програму яка повинна шукати розширену вхідну і вихідну функції за вхідними даними і будувати дерево досяжності.

Вхідні дані:

I(t1) = {p4,p2 , p3 }; O(t1) = { p4, p3, p4 , p3, p3 , p4, p1 };

I(t2) = { p2, p3, p3 , p3};O(t2) = { p3,p1, p2, p4, p4};

I(t3) = {p4, p3}; O(t3) = {p1,p4};

I(t4) = {p4, p2p2, p4 ,p4p3, p2};O(t4) = { p2, p2 };

μ0 = {5,5,5,5}.

Хід виконання роботи:

Ознайомитись з теоретичними відомості, які подані в цій методичці. Реалізувати на мовах Pascal або С програми зв’язного формування списку елементів послідовності згідно номеру варіанту.Програма повинна шукати розширену вхідну і вихідну функцію і будувати дерево досяжності глибини 3. Розв’язати завдання відповідно до свого порядкового номеру у спискугрупи. Завдання отримати у викладача. При оформленні лабораторної роботидотримуватись вимог, які наведені в методичних вказівках.

Розширена вхідна і вихідна функції:

I(p1)={t1,t2,t3}I(p2)={t2,t4,t4}I(p3)={t1,t1,t1,t2}I(p4)={t1,t1,t1,t2,t2,t3} O(p1)={}O(p2)={t1,t2,t4,t4,t4}O(p3)={t1,t2,t2,t2,t3,t4}O(p4)={t1,t3,t4,t4,t4}

Граф мережі Петрі:

Маркування мережі Петрі:

Виконання мережі Петрі:

Запуск t1:

Запуск t2:


Запуск t3:


Запуск t4:


Дерево досягальності глибини 3:

Код програми:

#include <vcl.h>#include <string.h>#pragma hdrstop#include "Unit1.h"#include "Unit2.h"#include "Unit3.h"//--------------------------------------------------------------------------#pragma package(smart_init)#pragma link "XPManifest"#pragma link "acButtons"#pragma resource "*.dfm"#define n 4TForm1 *Form1;//---------------------------------------------------------------------------struct TMT{int z;int p[n];int t[n];};TMT P[n], T[n]; int ccc[n],cc[n],c[n],b;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void run(){P[0].z=StrToInt(Form1->StringGrid3->Cells[1][0]); T[0].z=0; ccc[0]=P[0].z;P[1].z=StrToInt(Form1->StringGrid3->Cells[2][0]); T[1].z=0; ccc[1]=P[1].z;P[2].z=StrToInt(Form1->StringGrid3->Cells[3][0]); T[2].z=0; ccc[2]=P[2].z;P[3].z=StrToInt(Form1->StringGrid3->Cells[4][0]); T[3].z=0; ccc[3]=P[3].z;int z;for(z=0; z<n; z++){for(int i=0; i<n; i++){P[z].t[i]=0; T[i].p[z]=0;for(int j=0; j<Form1->StringGrid1->ColCount; j++){if((StrToIntDef(Form1->StringGrid2->Cells[j][i],0)))if(z+1==StrToInt(Form1->StringGrid2->Cells[j][i]))P[z].t[i]++;if((StrToIntDef(Form1->StringGrid1->Cells[j][i],0)))if(z+1==StrToInt(Form1->StringGrid1->Cells[j][i]))T[i].p[z]++;}}}}//---------------------------------------------------------------------------void search(){ AnsiString p,p2,t,t2; int z,j,zz;for(z=0; z<Form1->StringGrid1->RowCount; z++){ p="I(p"+IntToStr(z+1)+")={"; t="O(p"+IntToStr(z+1)+")={";for(j=0; j<Form1->StringGrid2->RowCount; j++)for(zz=0; zz<Form1->StringGrid2->ColCount; zz++){if((StrToIntDef(Form1->StringGrid2->Cells[zz][j],0)))if(z+1==StrToInt(Form1->StringGrid2->Cells[zz][j])){p2="t"+IntToStr(j+1)+",";p+=p2; }if((StrToIntDef(Form1->StringGrid1->Cells[zz][j],0)))if(z+1==StrToInt(Form1->StringGrid1->Cells[zz][j])) {t2="t"+IntToStr(j+1)+",";t+=t2; }}if(p.Pos("t")) p[p.Length()]='}';else p+="}";Form1->Memo1->Lines->Add(p);if(t.Pos("t")) t[t.Length()]='}';else t+="}";Form1->Memo2->Lines->Add(t);}}//=========================================================void __fastcall TForm1::FormCreate(TObject *Sender){for(int i=0; i<Form1->StringGrid1->RowCount; i++){StringGrid1->Cells[0][i]="I(t"+IntToStr(i+1)+")";StringGrid2->Cells[0][i]="O(t"+IntToStr(i+1)+")";}StringGrid3->Cells[0][0]=" м";StringGrid3->Cells[1][0]="5";StringGrid3->Cells[2][0]="5";StringGrid3->Cells[3][0]="5";StringGrid3->Cells[4][0]="5";}//=========================================================void spp(int i){for(int j=0; j<n; j++)if(T[i].p[j]&&T[i].p[j]>P[j].z) {b=0; break;}if(b==1) { for(int j=0; j<n; j++) { T[i].z+=T[i].p[j]; P[j].z-=T[i].p[j]; } for(int k=0; k<n; k++) if(P[k].t[i]!=0&&T[i].z!=0) P[k].z+=P[k].t[i]; }} void kpk() {for(int i=0; i<n; i++){Form1->TreeView1->Items->AddChild(Form1->TreeView1->Items->Item[0],"0");Form2->TreeView1->Items->AddChild(Form2->TreeView1->Items->Item[0],"0");for(int j=0; j<n; j++){Form1->TreeView1->Items->AddChild(Form1->TreeView1->Items->Item[0]->Item[i],"0");Form2->TreeView1->Items->AddChild(Form2->TreeView1->Items->Item[0]->Item[i],"0");for(int e=0; e<n; e++){Form1->TreeView1->Items->AddChild(Form1->TreeView1->Items->Item[0]->Item[i]->Item[j],"0");Form2->TreeView1->Items->AddChild(Form2->TreeView1->Items->Item[0]->Item[i]->Item[j],"0");}}}}//---------------//=======================================int p1,p2,p3;void run_5() p1=-1;AnsiString f="m("+IntToStr(P[0].z)+","+IntToStr(P[1].z)+","+IntToStr(P[2].z)+","+IntToStr(P[3].z)+")";Form1->TreeView1->Items->Clear(); Form2->TreeView1->Items->Clear();Form1->TreeView1->Items->Add(NULL,f); Form2->TreeView1->Items->Add(NULL,f);Form1->TreeView1->Items->Item[0]->Text=f;Form2->TreeView1->Items->Item[0]->Text=f;kpk();for(int i=n-1; i>-1; i--){b=1; T[i].z=0; p1++; p2=-1;if(!Form1->CheckBox2->Checked) t1=p1; else t1=i; P[0].z=ccc[0]; P[1].z=ccc[1]; P[2].z=ccc[2]; P[3].z=ccc[3];spp(p1);AnsiString f="t"+IntToStr(p1+1)+"("+IntToStr(P[0].z)+","+IntToStr(P[1].z)+","+IntToStr(P[2].z)+","+IntToStr(P[3].z)+")";if(ccc[0]!=P[0].z||ccc[1]!=P[1].z||ccc[2]!=P[2].z||ccc[3]!=P[3].z){Form1->TreeView1->Items->Item[0]->Item[t1]->Text=f;Form2->TreeView1->Items->Item[0]->Item[t1]->Text=f;cc[0]=P[0].z;cc[1]=P[1].z;cc[2]=P[2].z;cc[3]=P[3].z;}else goto end;for(int j=n-1; j>-1; j--) {b=1; T[j].z=0; p2++; p3=-1; if(!Form1->CheckBox2->Checked) t2=p2; else t2=j; P[0].z=cc[0]; P[1].z=cc[1]; P[2].z=cc[2]; P[3].z=cc[3]; spp(p2); AnsiString f="t"+IntToStr(p2+1)+"("+IntToStr(P[0].z)+","+IntToStr(P[1].z)+","+IntToStr(P[2].z)+","+IntToStr(P[3].z)+")"; if(cc[0]!=P[0].z||cc[1]!=P[1].z||cc[2]!=P[2].z||cc[3]!=P[3].z) { Form1->TreeView1->Items->Item[0]->Item[t1]->Item[t2]->Text=f; Form2->TreeView1->Items->Item[0]->Item[t1]->Item[t2]->Text=f; c[0]=P[0].z; c[1]=P[1].z; c[2]=P[2].z; c[3]=P[3].z; } else goto end1; for(int e=n-1; e>-1; e--) { b=1; T[j].z=0; p3++; if(!Form1->CheckBox2->Checked) t3=p3; else t3=e; P[0].z=c[0]; P[1].z=c[1]; P[2].z=c[2]; P[3].z=c[3]; spp(p3); AnsiString f="t"+IntToStr(p3+1)+"("+IntToStr(P[0].z)+","+IntToStr(P[1].z)+","+IntToStr(P[2].z)+","+IntToStr(P[3].z)+")"; if(c[0]!=P[0].z||c[1]!=P[1].z||c[2]!=P[2].z||c[3]!=P[3].z) { Form1->TreeView1->Items->Item[0]->Item[t1]->Item[t2]->Item[t3]->Text=f; Form2->TreeView1->Items->Item[0]->Item[t1]->Item[t2]->Item[t3]->Text=f; } } end1: }end: }void __fastcall TForm1::acBitBtn2Click(TObject *Sender){int i=0,j=0;p1=n; b=1; p1=n;Memo1->Clear();Memo2->Clear();search();run();run_5();}

Результати роботи програми: