Caracteristici ale dezvoltării agenților software. Medii de instrumente pentru dezvoltarea și întreținerea instrumentelor software

Instrumentele de dezvoltare a agenților software formează un mediu care este optimizat pentru lansarea unui anumit tip de aplicație, cu o arhitectură specifică.

Principala diferență dintre mediile de instrumente și alte instrumente pentru construirea agenților software este că mediul oferă un ciclu complet de dezvoltare a agentului software, inclusiv etapele analizei domeniului, etapele de proiectare, dezvoltare, verificare, precum și etapele de implementare și întreținere.

Putem evidenția cele mai cunoscute și populare medii de dezvoltare a agenților:

ABE (Agent Building Environment);

Să luăm în considerare mai detaliat mediile de instrumente enumerate pentru dezvoltarea agenților software.

1. Bancul de lucru AgentBuilder oferă dezvoltatorilor instrumentele de dezvoltare și mediul de rulare pentru aplicația agent. Tehnologia pentru crearea unui agent inteligent în mediul AgentBuilder este prezentată în Figura 2.1.

Orez. 2.1

Instrumentele de dezvoltare și mediul de rulare sunt scrise în limbajul de programare Java, ceea ce le permite să ruleze pe toate platformele pe care este instalat mediul Java. Un agent creat cu setul de instrumente AgentBuilder poate rula pe orice platformă cu o mașină virtuală Java (versiunea 1.1 și o versiune ulterioară).

Instrumentele de dezvoltare sunt o interfață grafică convenabilă pentru analiza subiectului MAC dezvoltat și pentru specificarea comportamentului dorit al agenților dezvoltați folosind editori grafici. Acest mediu de instrumente oferă următorii pași pentru construirea unei aplicații multi-agent:

stabilirea componenței agenției;

crearea de agenți, care presupune construirea unei ontologii utilizată pentru îndeplinirea puterilor delegate unui agent, și a unui model mental (credințe, abilități, obligații, reguli de conduită);

crearea de protocoale pentru specificarea interacțiunii dintre agenții unei agenții date;

generarea unui fisier special de descriere a agentului in RADL, care, in final, reprezinta modelul mental si comportamentul dorit al agentului.

Timpul de execuție al aplicației agent este format din programul agent și procesorul de execuție a agentului. Procesorul folosește proceduri eficiente de inferență prin potrivirea regulilor de comportament ale agentului cu convingerile agentului, determinate de modelul mental actual și de mesajele primite. Pe baza raționamentului în curs de desfășurare, procesatorul efectuează anumite acțiuni legate de puterile agentului. Un program agent este o definiție de agent sub forma unui fișier RADL împreună cu o bibliotecă completă de clase de proiect. Programul agent împreună cu procesorul formează un agent executabil. Când pornește mediul de rulare, procesorul agent este inițializat, care utilizează modelul RADL și ontologia agentului, reprezentată ca o bibliotecă de accesorii pentru proiect. Acest lucru necesită o definiție de agent (un fișier RADL care oferă agentului capacitatea de raționament și un model mental inițial) și o bibliotecă de clase de proiect (clasele de ajutor PAC ale proiectului din biblioteca de clase a proiectului) - aceste obiecte sunt folosite pentru a mapa domeniul problemei.

2. În mediul Bee-gent, dezvoltarea aplicațiilor orientate către agent se realizează conform metodologiei de precizare a comportamentului agenților unui sistem distribuit folosind MAC - o bibliotecă implementată în limbajul Java. Pe baza instrumentelor grafice oferite de sistemul Bee-gent, este posibilă structurarea clară a comportamentului fiecărui agent sub forma unui grafic de stare și determinarea protocoalelor pentru interacțiunile agentului. Graficele stării agentului sunt construite pe baza viabilității rolurilor definite sub formă de expresii regulate în stadiul analizei orientate către agent (de exemplu, folosind metodologia Gaia). Un exemplu de fragment al graficului comportamentului elevului al sistemului de învățare este prezentat în Figura 2.2.


Orez. 2.2

Graficul de stat înregistrează toate numele de stat în care se poate afla un agent. Următorul pas de dezvoltare este definirea claselor pentru fiecare stat. Fiecare stare din grafic este o instanță a clasei AwrIPState din biblioteca de agenți Java a Toshiba. În constructorul de clasă, sunt definite condițiile pre și post, i.e. condiții care trebuie îndeplinite de un agent în starea curentă pentru a efectua acțiunile definite de clasa de stări și pentru a determina trecerea la următoarea stare. Sunt apoi specificate acțiunile care trebuie efectuate în fiecare stare (inclusiv procesele proprii ale agentului și interacțiunile cu alți agenți). Clasele „INIT” și „END” sunt create și pentru stările inițiale și finale. Dacă un agent interacționează cu alți agenți, atunci când se specifică stări individuale, sistemul Bee-gent prevede definirea unui protocol de interacțiune. Protocolul ar trebui să reflecte toate liniile de comportament ale agentului în această stare. În fiecare stare, activitatea agentului vizează executarea protocoalelor de interacțiune pentru a implementa linia de comportament planificată. Activitatea fiecărui agent din MAC este determinată, de exemplu, de un model de serviciu dezvoltat în etapa analizei bazate pe agenți folosind metodologia Gaia.

Fiecare linie de comportament este documentată de o diagramă de interacțiune a agenților care indică conținutul mesajelor și ordinea acestora. Figura 2.3 prezintă un exemplu de diagramă de interacțiune pentru starea „Disciplina de studiu” a agentului Student. Formatul mesajului este definit de limbajul XML/ACL, care este o evoluție a limbajului de comunicare KQML.


Orez. 2.3 Diagrama de interacțiune a agentului Student în starea „Disciplina de studiu”.

Astfel, pe baza modelelor logice dezvoltate, sistemul Bee-gent generează automat în Java scheletul codului programului de sistem multi-agent, care va fi suplimentat cu codul de program necesar care asigură „ciclul de viață” specificat al agenților. În sistemul Bee-gent, spre deosebire de AgentBuilder, atunci când se descrie comportamentul agenților, regulile care determină reacția agentului la evenimente externe și starea sa internă nu sunt folosite.

3. JACK TM Intelligent Agents (JACK) este un mediu de dezvoltare bazat pe agent care se bazează pe limbajul de programare Java. JACK este un add-on Java care extinde sintaxa Java cu constructe pentru implementarea programatică a proprietăților asociate conceptului de agent inteligent. Limbajul de programare agent JACK oferă următoarele caracteristici:

definește noi clase de bază, interfețe și metode;

extinde sintaxa Java pentru a suporta noi clase, definiții și operatori orientate către agenți;

furnizează extensii semantice (specifice de execuție) pentru a sprijini modelul de execuție cerut de un sistem software orientat pe agent.

Toate extensiile de limbaj sunt implementate ca plug-in, ceea ce face ca limbajul să fie cât mai extensibil și flexibil posibil în programarea orientată către agent.

La nivelul clasei au fost introduse 5 constructe principale:

un agent care modelează entități inteligente în JACK;

o abilitate care adună componente funcționale (evenimente, planuri, credințe multiple și alte abilități) într-un singur întreg pentru a fi utilizate de agenții lor;

eveniment, pentru a modela situații și mesaje la care agentul trebuie să poată răspunde;

un plan care este conceput pentru a modela o descriere procedurală a modului în care agentul gestionează acest eveniment (toate acțiunile întreprinse de agent sunt prevăzute în prealabil și descrise în planurile sale);

set de credințe pentru a modela cunoștințele agentului sub formă de credințe care aderă la semantica unei lumi închise sau deschise. Această construcție reprezintă credințele agentului sub formă de tuplu relațional de ordinul întâi și asigură consistența lor logică.

Trebuie remarcat faptul că comportamentul dorit al agentului este încapsulat în unitățile modulare definite de aceste clase, iar clasele conțin toate structurile și metodele necesare pentru execuția independentă pe care le pot folosi programatorii JACK. Există un set de declarații pentru a stabili relații între clasele menționate mai sus.

Este furnizat un set de declarații pentru a stabili relații între clasele menționate mai sus. Mai jos este un fragment de cod pentru implementarea unui construct de plan scris în JACK (elementele de sintaxă care aparțin lui JACK sunt îngroșate):

plan MovementResponse extinde Planul (

#handles evenimentul RobotMoveEvent moveresponse;

#utiliză agent care implementează robotul RobotInterface;

boolean static relevant (RobotMoveEvent ev)

context() (…)

#metoda raționamentului

În acest exemplu, planul de acțiune al agentului de program care este definit își moștenește funcțiile principale din clasa JACKPlan. În plus, mai multe declarații pentru planurile JACK specifică modul în care va fi utilizat planul. Fiecare declarație este precedată de un caracter „#” pentru a le distinge de elementele de sintaxă Java. Declarația evenimentului #handles definește ținta sau evenimentul la care răspunde acest plan. Declarația de implementare a agentului #uses specifică agenții care pot utiliza acest plan. Planul din exemplu poate fi executat numai de agenții care implementează interfața specificată (RobotInterface). Acoladele conțin cod Java normal.

Pe lângă declarații, limbajul JACK oferă operatorilor metodei de raționament pentru a descrie raționamentul și comportamentul luat de agent la executarea planului, care se disting prin caracterul „@” precedent.

Pentru a sprijini execuția unui sistem software bazat pe agenți, JACK oferă următoarele extensii de limbaj suplimentare care oferă următoarea semantică:

Multithreading-ul este încorporat în nucleu și nu este sub controlul programatorului.

Agenții lucrează în așa fel încât agenții procesează mai multe planuri și au acces la descrieri ale credințelor. Agenții execută planuri în sarcinile de gestionare a evenimentelor pe măsură ce apar, comparându-și convingerile atunci când este necesar. Aceste planuri pot declanșa sarcini secundare, care la rândul lor pot declanșa propriile sarcini secundare dacă agentul necesită un răspuns complex și consumatoare de timp.

A fost introdusă o nouă structură de date, numită membru logic, a cărei valoare depinde de rezultatul unei interogări asupra setului de convingeri al agentului.

Abilitatea de a interoga setul de credințe ale unui agent folosind porți logice, combinându-le pentru a obține rezultatul dorit. Dacă cererea are succes, atunci valoarea booleană conține valoarea dorită.

Componenta JACK Development Environment vă permite să desenați diagrame de ansamblu, conform cărora mediul generează un schelet al codului programului și se asigură că modificările aduse codului sunt afișate pe diagrame.

Agenții creați în JACK au o arhitectură similară cu cea a agenților inteligenți. Astfel, este posibil să se modeleze comportamentul inteligent, în conformitate cu modelul teoretic al arhitecturii BDI a agentului, bazat pe credințe, dorințe și intenții.

Conform arhitecturii BDI, agenții inteligenți JACK sunt componente software autonome care pot prezenta un comportament inteligent bazat pe proactivitate (intelibilitate) și reactivitate (condusă de evenimente) la semnalele de intrare. Fiecare astfel de agent are:

credințe (acesta este setul său de date despre lume);

dorințe (un set de evenimente la care va reacționa și un set de obiective, a căror realizare și-ar putea dori);

intenții (un set de planuri care descriu modul în care poate gestiona obiectivele și planurile emergente).

Dacă agentul este considerat ca fiind analog cu persoana, atunci setul de planuri descrie pașii pe care agentul trebuie să îi efectueze atunci când are loc un anumit eveniment sau dorește să obțină un anumit rezultat. La prima vedere, comportamentul unui agent poate părea similar cu acțiunile sistemelor expert, cu toate limitările lor inerente. Cu toate acestea, diferența fundamentală dintre sistemele bazate pe agenți este că agenții pot fi programați să realizeze planuri în același mod în care ar acționa o persoană inteligentă. În special, agenții pot implementa următoarele proprietăți asociate comportamentului inteligent:

scop sustenabil - agenții sunt concentrați pe obiective, și nu pe metodele alese pentru a le atinge;

dependența contextuală în timp real – agenții vor monitoriza opțiunile care sunt aplicabile la un moment dat și vor lua decizii cu privire la pașii următori, pe baza condițiilor existente;

afirmarea în timp real a corectitudinii abordării - agentul se va asigura că urmează cursul de acțiune ales atâta timp cât anumite condiții continuă să fie adevărate;

simultaneitate - sistemul agent este multi-threaded. Dacă apar noi ținte și evenimente, atunci agentul este capabil să prioritizeze multitasking la cerere.

Aplicația JACK este un cod sursă care implementează conceptele tipice abordării orientate către agent: agenți, abilități, evenimente, planuri, credințe, vederi (cereri), precum și o clasă Java cu funcția principală (), care este intrarea. punct pentru mașina virtuală Java și orice alte fișiere necesare Java. Fișierele care sunt create pentru aceste concepte trebuie să aibă același nume ca și obiectul definit în fișier. Au o extensie care definește tipul JACK al conceptului. Compilatorul JACK Agent convertește fișierele sursă în limbajul JACK Agent în cod Java, care este apoi compilat în cod Java Virtual Machine pentru a fi executat pe sistemul țintă.

4. Mediul software JADE (Java Agent Development Framework) a fost utilizat pe scară largă pentru dezvoltarea sistemelor multi-agent. Este implementat complet în Java și acceptă FIPA - standarde pentru crearea de agenți inteligenți. Scopul creării unui mediu JADE este de a simplifica procesul de dezvoltare prin standardizarea modului în care agenții interacționează într-un mediu de servicii de sistem cuprinzător.

Pentru a atinge acest obiectiv, JADE oferă dezvoltatorului de sisteme de agenți următoarele opțiuni:

o platformă de agenți conformă cu FIPA, bazată pe FIPA și care include tipurile obligatorii de agenți de sistem pentru a gestiona, în primul rând, platforma de agenți (AMS), în al doilea rând, canalul de comunicare (ACC) și serviciile de director (DF) (aceste tipuri de agenți sunt automat sunt activate la lansarea platformei);

o Platformă de agent distribuit care poate folosi mai multe gazde, cu o singură mașină virtuală Java care rulează pe fiecare gazdă. Agenții rulează ca fire de execuție Java. În funcție de locația agentului care trimite mesajul și de cine îl primește, mecanismul de transport corespunzător este utilizat pentru a livra mesajele.

Suport pentru domenii multiple - un număr de agenți DF bazați pe FIPA pot fi federați, realizând astfel un mediu de agenți cu mai multe domenii.

Mediu de execuție cu mai multe fire cu programare pe două niveluri. Fiecare agent JADE are propriul său fir de control, dar este și capabil de multithreading. Java Virtual Machine face programarea sarcinilor efectuate de agenți sau de unul dintre ei.

Mediu de programare orientat pe obiecte. Majoritatea conceptelor inerente specificației FIPA sunt reprezentate de clase Java care formează interfața cu utilizatorul.

Biblioteca de protocoale de interacțiune. Sunt utilizate protocoalele interactive standard de solicitare fipa și fipa-contract-net. Pentru a crea un agent care poate acționa conform unor astfel de protocoale, dezvoltatorii de aplicații trebuie doar să implementeze acțiuni specifice domeniului, în timp ce toată logica de protocol independentă de aplicație va fi gestionată de sistemul JADE.

GUI de administrare. Operațiunile simple de gestionare a platformei pot fi efectuate printr-o interfață grafică care afișează agenți activi și containere de agenți. Folosind GUI, administratorii platformei pot crea, distruge, întrerupe și relua agenți, pot crea ierarhii de domenii și pot crea federații DF cu mai mulți agenți (facilitator).

JADE se bazează pe tehnologiile Java RMI, Java CORBA IDL, Java Serialization și Java Reflection API. Dezvoltarea MAC în acest mediu este simplificată prin utilizarea specificațiilor FIPA și a unui număr de instrumente pentru a sprijini faza de depanare și implementare a sistemului. Această platformă de agent poate fi instalată pe computere cu sisteme de operare diferite și poate fi configurată printr-o GUI la distanță. Procesul de configurare a acestei platforme este destul de flexibil: poate fi schimbat chiar și în timpul rulării prin mutarea agenților de la o mașină la alta. Singura cerință pentru ca sistemul să funcționeze este ca Java Run Time 1.2 să fie instalat pe mașină.

Fiecare instanță care rulează a mediului JADE este un container. poate conține mai mulți agenți. Un grup de containere active formează o platformă. Containerul principal trebuie să fie întotdeauna activ și toate celelalte containere trebuie să fie înregistrate cu el atunci când sunt create. Prin urmare, primul container care rulează pe platformă este containerul principal, iar toate celelalte sunt containere obișnuite și trebuie să li se spună unde se află containerul lor principal pe care ar trebui să fie înregistrate. Dacă un alt container principal este lansat în rețea, atunci este o platformă diferită pe care containerele obișnuite noi au posibilitatea de a se înregistra. Figura 2.4 prezintă conceptele de platformă și container de mai sus și prezintă un scenariu cu două platforme JADE, constând din trei și, respectiv, un container.


Orez. 2.4 Mediu „de existență” pentru agenții JADE

Agenții JADE trebuie să aibă nume unice, să cunoască numele celuilalt și, din această cauză, pot comunica direct, indiferent de locația lor reală, adică. în același container (de exemplu, agenți A2 și A3), în containere diferite în cadrul aceleiași platforme (de exemplu, A1 și A2) sau în platforme diferite (de exemplu, A4 și A5). Containerul principal diferă de cele obișnuite prin faptul că conține un sistem de gestionare a agenților și un router care sunt lansate automat la pornirea containerului principal. Sistemul de management al agenților (AMS) este „autoritatea” din platformă (creați/ștergeți agenți în containere la distanță solicitate prin AMS) și oferă un serviciu de denumire a agenților. Routerul de director DF (Directory facilitator), care furnizează serviciul Yellow Pages, ajută agentul să găsească alți agenți pe care să îi primească de la ei. servicii necesare necesar pentru a-și atinge obiectivele.

Pentru comunicare, arhitectura mediului oferă un proces de mesagerie flexibil și eficient în care JADE creează o coadă și gestionează fluxul de mesaje ACL care sunt private pentru fiecare agent. Agenții pot accesa coada folosind o combinație a mai multor moduri de operare: blocare, vot, timeout și potrivire a modelelor (dacă este vorba despre metode de căutare). platformă set de instrumente multi-agent

Cele mai recente versiuni ale sistemului folosesc Java RMI, notificarea evenimentelor și IIOP. Cu toate acestea, alte protocoale pot fi adăugate cu ușurință. De asemenea, oferă posibilitatea de a integra SMTP, HTTP și WAP. Majoritatea protocoalelor de comunicare care au fost deja definite de comunitatea internațională a dezvoltatorilor de mediu agent sunt disponibile și pot fi ilustrate cu exemple specifice după ce comportamentul sistemului și stările sale principale au fost determinate. Împreună cu suportul pentru limbaje de conținut definite de utilizator, sunt implementate ontologii de management al agenților, precum și ontologii care pot fi implementate și înregistrate de agenți și utilizate de sistem. Pentru a extinde semnificativ performanța JADE, este posibil să se integreze cu JESS și CLIPS Java shell.

O analiză comparativă a capacităţilor mediilor de instrumente considerate pentru dezvoltarea agenţilor software este dată în Tabelul 4. Iar Figura 2.5 prezintă rezultatele acestei analize.

Tabelul 4

Analiza comparativă a capacităților mediilor de instrumente pentru dezvoltarea agenților software

Capacitate de mediu

Instrumente pentru construirea agenției

Instrumente de management de proiect

Mediu grafic pentru definirea specificațiilor agentului

Mecanism de control al integrității

Instrumente pentru construirea ontologiei

Biblioteca de dezvoltare MAC

Mecanismul de raționament al unui agent cu privire la abilitățile sale și abilitățile altor agenți

Limbajul formal de comunicare

Instrumente de depanare a interacțiunii cu agenții

Mecanism de căutare a agenților cu abilități specificate


Orez. 2.5

Pe baza unei comparații a caracteristicilor mediilor de instrumente considerate, se poate concluziona că cele mai puternice și flexibile tehnologii pentru implementarea conceptului de „agent” sunt abordările propuse de setul de instrumente AgentBuilder și de mediul JACK.

Este necesar să se acorde atenție faptului că pentru platforma JADE există o extensie BDI suplimentară - mediul Jadex. Acest mediu asigură o arhitectură hibridă reactiv-deliberativă în care agentul este tratat ca o „cutie neagră” care primește și trimite mesaje. Pe baza rezultatelor procesării mesajelor, evenimentelor interne și externe, mecanismul deliberativ ia decizii privind trecerea la un nou plan de acțiune sau continuarea celui vechi. Un plan activ poate trimite mesaje altor agenți, poate schimba baza de convingeri, poate forma noi obiective și poate declanșa evenimente interne. Sistemul folosește o bibliotecă de planuri, care sunt tratate ca clase Java.

Unul dintre principalele avantaje ale dezvoltării agenților inteligenți pe platforma Jadex este că nu este nevoie să înveți noi limbaje de programare. În schimb, agenții sunt codați folosind programarea orientată pe obiecte în medii de dezvoltare integrate (IDE), cum ar fi Eclipse și Intellij IDEA.

Un alt aspect important este independența middleware-ului, deoarece Jadex independent cu modulele sale poate fi folosit în scenarii complet diferite la nivelul superior al platformei. Programele orientate către agenți adaugă obiectelor pasive proprietăți explicite ale actorilor autonomi care iau parte la procesul de decizie. În acest sens, agenții furnizează componente active cu interacțiuni individuale cu componentele.

Jadex este conceput pentru a fi un mecanism independent de luare a deciziilor, adaptat să funcționeze cu orice sisteme nexus care interacționează cu un agent în ceea ce privește propriul control și primirea mesajelor.

Agentul poate migra liber între gazde, efectuând operațiuni atât pe partea de server, cât și pe partea utilizatorului, păstrând în același timp independența față de locul în care sunt efectuate sarcinile.

Analiza celor mai cunoscute sisteme de instrumente a făcut posibilă alegerea unui mediu Jadex eficient și accesibil.

Un mediu de dezvoltare integrat (IDE) este un sistem de instrumente software utilizate de programatori pentru a dezvolta software. În engleză, un astfel de mediu se numește mediu de dezvoltare integrat, sau pe scurt IDE.

Un IDE include, de obicei, un editor de text, un compilator, un interpret, instrumente de dezvoltare software și de automatizare a construirii și un depanator. Uneori conține și instrumente pentru integrarea cu sistemele de control al versiunilor și diverse instrumente pentru a simplifica construirea unei interfețe grafice cu utilizatorul. Multe medii de dezvoltare moderne includ, de asemenea, un browser de clasă de program, un inspector de obiecte și o diagramă de ierarhie a claselor pentru utilizare în dezvoltarea software-ului orientat pe obiecte. Cele mai multe IDE-uri moderne sunt concepute pentru a dezvolta programe în mai multe limbaje de programare în același timp.

Unul dintre cazurile speciale ale IDE-urilor sunt mediile de dezvoltare vizuală, care includ posibilitatea de a edita vizual interfața programului.

Fereastra principală este un editor de text care este folosit pentru a introduce codul sursă în IDE și se concentrează pe lucrul cu secvențe de caractere din fișierele text. Astfel de editori oferă funcționalități avansate - evidențierea sintaxelor, sortarea șirurilor de caractere, șabloane, conversia de codare, afișarea codurilor de caractere etc. Sunt uneori numiți editori de coduri, deoarece scopul lor principal este acela de a scrie coduri sursă pentru programe de calculator.

Evidențierea sintaxelor - evidențierea construcțiilor sintactice ale textului folosind diferite culori, fonturi și stiluri. Utilizat de obicei în editorii de text pentru a facilita citirea textului sursă, pentru a îmbunătăți percepția vizuală. Folosit adesea la publicarea codurilor sursă pe Internet.

Conceptul de traducere, compilator și interpret a fost prezentat în prelegerile anterioare.

Una dintre cele mai importante părți ale IDE este depanatorul, care este un modul de mediu de dezvoltare sau o aplicație autonomă concepută pentru a găsi erori într-un program. Depanatorul vă permite să treceți prin urmărire, să monitorizați, să setați sau să modificați valorile variabilelor în timpul execuției programului, să setați și să eliminați punctele de întrerupere sau condițiile de întrerupere și așa mai departe.

Cele mai comune depanatoare sunt:

- GNU Debugger - un program de depanare din proiectul GNU;

- IDA este un dezasamblator și un depanator de nivel scăzut pentru sistemele de operare Windows și GNU/Linux;

- Microsoft Visual Studio este un mediu de dezvoltare software care include instrumente de depanare de la Microsoft Corporation;

- OllyDbg este un depanator gratuit de nivel scăzut pentru sistemele de operare din familia Windows;

- SoftICE este un depanator de nivel scăzut pentru sistemele de operare din familia Windows;

- Dr. Watson - un depanator standard Windows care vă permite să creați depozite de memorie;

- WinDbg este un depanator gratuit de la Microsoft.

Principalul proces de depanare este urmărirea. Urmărirea este procesul de executare a unui program pas cu pas. În modul de urmărire, programatorul vede secvența de execuție a comenzilor și valorile variabilelor la un anumit pas de execuție a programului, ceea ce facilitează detectarea erorilor. Urmărirea poate fi începută și încheiată oriunde în program, execuția programului se poate opri la fiecare comandă sau puncte de întrerupere, urmărirea poate fi efectuată cu sau fără introducerea de proceduri/funcții.

Cel mai important modul al ISW în dezvoltarea comună a proiectelor de complexitate medie și mare este sistemul de control al versiunilor. Sistem de control al versiunilor (abrevierea în engleză CVS) - software pentru facilitarea lucrului cu informații în schimbare. Vă permite să stocați mai multe versiuni ale aceluiași document, dacă este necesar, să reveniți la versiunile anterioare, să determinați cine și când a făcut această sau acea modificare și multe altele.

Astfel de sisteme sunt cele mai utilizate în dezvoltarea de software, pentru stocarea codurilor sursă ale programului în curs de dezvoltare. Cu toate acestea, ele pot fi aplicate cu succes și în alte domenii care lucrează cu un număr mare de documente electronice în continuă schimbare, în special, sunt din ce în ce mai utilizate în CAD, de obicei ca parte a sistemelor de gestionare a datelor despre produse. Versiunea este utilizată în instrumentele de gestionare a configurației diverse dispozitiveși sisteme.

În țara noastră, poate din cauza numărului mic de proiecte de anvergură, sistemele de control al versiunilor nu au primit distribuție, în ciuda faptului că utilizarea lor este cheia implementării cu succes a proiectelor mari. În acest sens, să ne oprim mai în detaliu asupra acestei posibilități a ISR.

Majoritatea sistemelor de control al versiunilor folosesc un model centralizat, unde există un singur depozit de documente gestionat de un server special care realizează majoritatea funcțiilor de control al versiunilor. Un utilizator care lucrează cu documente trebuie să obțină mai întâi versiunea documentului de care are nevoie din depozit; de obicei, se creează o copie locală a documentului, așa-numita „copie de lucru”. Se poate obține cea mai recentă versiune sau oricare dintre versiunile anterioare, selectate după numărul versiunii sau data creării, uneori după alte criterii. După ce se fac modificările dorite în document, noua versiune este plasată în depozit. Spre deosebire de salvare simplă fișier, versiunea anterioară nu este ștearsă, dar rămâne și în depozit și poate fi preluată de acolo oricând. Serverul poate folosi compresia delta, o metodă de stocare a documentelor care salvează doar modificările între versiunile succesive, reducând astfel cantitatea de date stocată.

Uneori, crearea unei noi versiuni se face în mod invizibil pentru utilizator (transparent) - fie cu ajutorul unui program de aplicație care are suport încorporat pentru o astfel de funcție, fie prin utilizarea unui sistem de fișiere special. În acest din urmă caz, utilizatorul pur și simplu lucrează cu fișierul ca de obicei, iar atunci când fișierul este salvat, o nouă versiune este creată automat.

Se întâmplă adesea ca mai multe persoane să lucreze la același proiect în același timp. Dacă două persoane modifică același fișier, una dintre ele poate anula accidental modificările făcute de cealaltă. Sistemele de control al versiunilor urmăresc astfel de conflicte și oferă instrumente pentru a le rezolva. Majoritatea sistemelor pot îmbina (imbina) automat modificările făcute de diferiți dezvoltatori. Cu toate acestea, o astfel de îmbinare automată a modificărilor este de obicei posibilă numai pentru fișierele text și apoi numai cu condiția ca diferite părți (nesuprapuse) ale acestui fișier să fi fost modificate. Această limitare se datorează faptului că majoritatea sistemelor de control al versiunilor sunt axate pe sprijinirea procesului de dezvoltare a software-ului, iar codurile sursă ale programului sunt stocate în fișiere text. Dacă îmbinarea automată eșuează, sistemul poate oferi rezolvarea manuală a problemei.

Este adesea imposibil să îmbinați fie automat, fie manual, de exemplu, dacă formatul fișierului este prea complex sau complet necunoscut. Unele sisteme de control al versiunilor vă oferă opțiunea de a bloca un fișier în seif. O blocare împiedică alți utilizatori să obțină o copie de lucru sau împiedică modificarea copiei de lucru a unui fișier (de exemplu, prin intermediul sistemului de fișiere) și astfel oferă acces exclusiv numai utilizatorului care lucrează la document.

Alte caracteristici ale sistemului de control al versiunilor sunt:

În crearea unor versiuni diferite ale aceluiași document de ramură, cu un istoric comun al modificărilor înainte de punctul de ramură și cu altele diferite după acesta.

Păstrarea unui jurnal de modificări, în care utilizatorii pot scrie explicații despre ce și de ce s-au schimbat în această versiune;

Controlează drepturile de acces ale utilizatorilor, permițând sau interzicând citirea sau modificarea datelor, în funcție de cine solicită această acțiune.

Sistemele distribuite de control al versiunilor sunt o clasă separată. Astfel de sisteme folosesc un model distribuit în locul modelului tradițional client-server. În general, nu au nevoie de un depozit centralizat: întregul istoric al modificărilor documentelor este stocat pe fiecare computer în stocare locală și, dacă este necesar, fragmente individuale din istoricul stocării locale sunt sincronizate cu o stocare similară pe alt computer. În unele dintre aceste sisteme, stocarea locală se află direct în directoarele de copiere de lucru.

Când un utilizator al unui astfel de sistem efectuează acțiuni normale, cum ar fi extragerea versiune specifică document, creând o nouă versiune și așa mai departe, el lucrează cu copia sa locală a depozitului. Pe măsură ce se fac modificări, depozitele aparținând diferiților dezvoltatori încep să difere și devine necesară sincronizarea acestora. O astfel de sincronizare poate fi realizată prin schimbul de corecții sau așa-numitele seturi de modificări între utilizatori.

Principalul avantaj al sistemelor distribuite este flexibilitatea acestora. Fiecare dezvoltator poate lucra independent, după cum crede de cuviință, salvând versiuni intermediare ale documentelor și transferând rezultatele altor participanți atunci când consideră de cuviință. În acest caz, schimbul de seturi de modificări poate fi efectuat conform diferitelor scheme. În echipe mici, participanții la lucru pot împărtăși schimbările unul la unu, eliminând necesitatea unui server dedicat. O comunitate mare, dimpotrivă, poate folosi un server centralizat, cu care sunt sincronizate copii ale tuturor membrilor săi. Sunt posibile și opțiuni mai complexe, de exemplu, prin crearea de grupuri care să lucreze în zone separate în cadrul unui proiect mai mare.

Pentru a utiliza sisteme de control al versiunilor, trebuie să cunoașteți terminologia acestor sisteme. Nu există o terminologie general acceptată; sisteme diferite pot folosi nume diferite pentru aceleași acțiuni.

Mai jos sunt câteva dintre opțiunile mai frecvent utilizate. Datorită faptului că sistemele au fost dezvoltate de comunitatea vorbitoare de limbă engleză, iar terminologia în limba rusă nu a fost încă dezvoltată, se folosesc termeni englezi.

ramură (ramură) - direcția de dezvoltare, independentă de ceilalți. O ramură este o copie a unei părți (de obicei un director) a depozitului, în care vă puteți face propriile modificări fără a afecta alte ramuri. Documentele din ramuri diferite au același istoric înainte de punctul de ramificare și istoric diferit după acesta.

check-in, commit, submit - crearea unei noi versiuni, publicarea modificărilor. Propagarea modificărilor făcute în copia de lucru în depozitul de documente. În același timp, în depozit este creată o nouă versiune a documentelor modificate.

C heck-out, clone - Preluați un document din stocare și creați o copie de lucru.

C onflict - o situație conflictuală în care mai mulți utilizatori au făcut modificări în aceeași secțiune a documentului. Un conflict este detectat atunci când un utilizator și-a publicat deja modificările, iar al doilea încearcă doar să le publice, iar sistemul în sine nu poate îmbina corect modificările aflate în conflict. Deoarece este posibil ca programul să nu fie suficient de inteligent pentru a determina care modificare este „corectă”, al doilea utilizator trebuie să rezolve el însuși conflictul (rezolvarea).

M erge, integrare (merge) - combinând modificări independente într-o singură versiune a documentului. S-a întâmplat când două persoane au schimbat același fișier sau când se mută modificări de la o ramură la alta.

R epository (depozitare de documente) - un loc în care sistemul de control al versiunilor stochează toate documentele împreună cu istoricul modificărilor acestora și alte informații de serviciu.

R ediție (versiunea documentului). Sistemele de control al versiunilor disting versiunile prin numere, care sunt atribuite automat.

T ag, etichetă (etichetă) - care poate fi atribuită unei versiuni specifice a documentului. O etichetă este un nume simbolic pentru un grup de documente și descrie nu numai un set de nume de fișiere, ci și revizuirea fiecărui fișier. Revizuirile documentelor incluse în etichetă pot aparține unor momente diferite în timp.

T runk, mainline (trunk) - ramura principală a dezvoltării proiectului. Politica trunchiului poate diferi de la proiect la proiect, dar, în general, este după cum urmează: majoritatea modificărilor se fac trunchiului; dacă este necesară o schimbare majoră care ar putea duce la instabilitate, se creează o ramură care se contopește cu trunchiul atunci când inovația a fost suficient testată; înainte de lansarea următoarei versiuni, se creează o ramură de „lansare”, în care se fac doar corecții.

U pdate, sync (actualizare, sincronizare) - sincronizarea copiei de lucru la o anumită stare de stocare specificată. Cel mai adesea, această acțiune înseamnă actualizarea copiei de lucru la cea mai recentă stare a seifului. Cu toate acestea, dacă este necesar, puteți sincroniza copia de lucru la o stare mai veche decât cea actuală.

W orking copy (working copy) - copie de lucru (locală) a documentelor.

Luați în considerare capacitățile ISR folosind versiunile cele mai accesibile și populare ca exemplu.

Eclipse (din engleză eclipse) este un mediu de dezvoltare integrat gratuit pentru aplicații modulare multiplatforme (Figura 69). Dezvoltat și întreținut de Fundația Eclipse, non-profit (http://www.eclipse.org/).

Inițial, Eclipse a fost dezvoltat de IBM ca standard IDE corporativ pentru dezvoltare în diferite limbi pentru platformele acestei companii. Potrivit IBM, proiectarea și dezvoltarea au costat 40 de milioane de dolari.Codul sursă a fost complet open-source și pus la dispoziție după ce Eclipse a fost predat comunității independente de IBM pentru dezvoltare ulterioară.

Eclipse se bazează pe framework-ul OSGi și SWT / JFace, pe baza căruia este dezvoltat următorul strat - RCP (Rich Client Platform, o platformă pentru dezvoltarea aplicațiilor client cu drepturi depline). RCP servește ca bază nu numai pentru Eclipse, ci și pentru alte aplicații RCP, cum ar fi Azureus și File Arranger. Următorul strat este Eclipse în sine, care este un set de extensii RCP: editori, panouri, perspective, un modul CVS și un modul Java Development Tools (JDT).

Eclipse este, în primul rând, un IDE Java cu drepturi depline care vizează dezvoltarea de grup: suportul CVS este inclus în livrarea lui Eclipse, mai multe variante de module SVN sunt dezvoltate în mod activ, există suport pentru VSS și altele. Datorită gratuită și de înaltă calitate, Eclipse este standardul corporativ pentru dezvoltarea de aplicații în multe organizații.

Al doilea scop al Eclipse este să servească drept platformă pentru dezvoltarea de noi extensii, ceea ce l-a făcut popular: orice dezvoltator poate extinde Eclipse cu propriile module. Există deja instrumente de dezvoltare C/C++ (CDT) dezvoltate de inginerii QNX în colaborare cu IBM și instrumente pentru COBOL, FORTRAN, PHP și altele de la diverși dezvoltatori. Multe extensii completează mediul Eclipse cu manageri pentru lucrul cu baze de date, servere de aplicații etc.

Figura 69 . Interfața ferestrei principale Eclipse

Eclipse este scris în Java, prin urmare este un produs independent de platformă, cu excepția bibliotecii SWT, care este dezvoltată pentru toate platformele comune. Biblioteca SWT este utilizată în locul bibliotecii standard Java Swing. Se bazează în întregime pe platforma de bază (sistemul de operare) pentru o interfață de utilizator receptivă și naturală, dar uneori provoacă probleme de compatibilitate și stabilitate a aplicațiilor pe platforme.

Baza Eclipse este platforma rich client (RCP). Componentele sale:

OSGi (mediu standard de livrare a pachetelor);

SWT (kit de instrumente portabil widget);

JFace (buffer-uri de fișiere, manipulare text, editori de text);

Mediul de lucru Eclipse (panouri, editori, proiecții, vrăjitori).

Un alt IDE gratuit popular este KDevelop (http://www.kdevelop.org, Figura 70). KDevelop este un mediu de dezvoltare software gratuit pentru sisteme de operare asemănătoare UNIX. Proiectul a început în 1998. KDevelop este distribuit sub Licența Publică Generală GNU.

Figura 70. Interfața KDevelop

KDevelop nu include un compilator, ci folosește orice compilator pentru a genera cod executabil.

Versiunea stabilă actuală acceptă un număr mare de limbaje de programare, cum ar fi Ada, Bash, C, C++, Fortran, Java, Pascal, Perl, PHP, Python, Ruby și SQL.

KDevelop folosește o componentă încorporată - un editor de text - prin tehnologia KParts. Editorul principal este Kate.

Funcții KDevelop:

Evidențierea codului sursă, ținând cont de sintaxa limbajului de programare utilizat, care se determină automat;

Manager de proiect pentru proiecte de diverse tipuri, precum Automake, qmake pentru proiecte bazate pe tehnologii Qt și Ant pentru proiecte bazate pe Java;

Class Navigator (Class Browser);

Front-end pentru GNU Compiler Collection;

Front-end pentru GNU Debugger

Ajutoare pentru generarea și actualizarea definițiilor de clase și platforme (cadru);

Sistem automat de completare a codurilor (C/C++);

Suport încorporat pentru sistemul de documentare a codului sursă (Doxygen);

Unul dintre sistemele de control al versiunilor: SCM, CVS, Subversion, Perforce și ClearCase;

Caracteristica Deschidere rapidă vă permite să navigați rapid prin fișiere.

KDevelop este o arhitectură „conectabilă”. Când un dezvoltator face modificări, trebuie doar să compileze pluginul. Este posibil să salvați profiluri care indică ce pluginuri trebuie încărcate. KDevelop nu vine cu incorporat editor de text, este conectat ca un plugin. KDevelop nu depinde de limbajul de programare și de platforma pe care rulează, suportând KDE, GNOME și multe alte tehnologii (de exemplu, Qt, GTK+ și wxWidgets).

Depanator încorporat KDevelop vă permite să lucrați grafic cu toate instrumentele de depanare, cum ar fi punctele de întrerupere și urmărirea. Poate funcționa și cu pluginuri încărcate dinamic, spre deosebire de consola gdb.

Pe acest moment există aproximativ 50 până la 100 de plugin-uri pentru acest IDE. Unele dintre cele mai utile sunt marcajele de cod persistente la nivelul întregului proiect, abrevierile de cod care vă permit să extindeți rapid textul, formatatorul sursă care reformatează textul pentru ghidul de stil înainte de salvare, căutarea cu expresii regulate și găsirea/înlocuirea la nivel de proiect.

Ultimul ISR considerat este Microsoft Visual Studio (Microsoft Visual Studio, Figura 71). De fapt, Microsoft Visual Studio este o linie de produse Microsoft care include un mediu de dezvoltare software integrat și o serie de alte instrumente.


Figura 71. Interfață Microsoft Visual Studio

Microsoft Visual Studio include unul sau mai multe dintre următoarele: Visual Basic.NET, Visual C++, Visual C#, Visual F#, Microsoft SQL Server, Visual InterDev, Visual J++, Visual J#, Visual FoxPro, Visual Source Safe.

Unul dintre principalele avantaje ale Microsoft Visual Studio este calitate superioară documentarea procesului de dezvoltare și descrierea posibilelor probleme din MSDN Library. Cu toate acestea, partea cea mai interesantă pentru un profesionist, dedicată complexității dezvoltării, există doar în limba engleză.

Microsoft oferă, de asemenea, o alternativă gratuită la Visual Studio Express.

Alexey Fedorov, Natalia Elmanova

Articolul anterior al acestei serii a fost dedicat luării în considerare a logicii și design fizic datele și instrumentele utilizate în acest proces. Am descoperit că ingineria datelor joacă un rol cheie în dezvoltarea sisteme de informare- la urma urmei, costurile asociate cu crearea de aplicații pentru utilizatorii finali, precum și cu întreținerea și modernizarea ulterioară a produsului creat, depind de calitatea acestei lucrări. Rezultatul acestui pas este o bază de date „vide” (adică o bază de date ale cărei tabele nu conțin în mare parte înregistrări, cu excepția, probabil, a tabelelor de referință, cum ar fi o listă de subiecte Federația Rusă sau prefixele telefonice ale zonei).

Următoarea etapă a ciclului de viață al sistemului informațional este dezvoltarea aplicațiilor client. Rezultatul acestei etape este un produs finit, constând dintr-o serie de aplicații care permit utilizatorilor să introducă date în tabele sau să editeze datele existente, să analizeze datele introduse și să le prezinte într-o formă mai lizibilă - grafice, tabele pivot sau rapoarte (inclusiv „documente pe hârtie).

Procesul de proiectare a datelor pentru SGBD relațional este într-o anumită măsură un proces logic și este supus unei singure metodologii standard. Acest lucru determină un grad scăzut de dependență a secvenței de acțiuni efectuate în timpul proiectării acestor acțiuni atât de ce instrument de proiectare a datelor este utilizat, cât și de dacă acesta este utilizat deloc. De fapt, acesta este motivul pentru care instrumentele de proiectare a datelor sunt mai mult sau mai puțin similare în interfața lor, ceea ce reflectă în esență procesul de desenare a modelelor de date pe hârtie.

Procesul de creare a aplicațiilor client care funcționează cu baze de date este destul de dificil de descris sub forma unei astfel de secvențe universale de acțiuni, deoarece logica unei anumite aplicații depinde aproape complet de logica procesului de afaceri modelat. Instrumentele de dezvoltare a aplicațiilor ca categorie de produse software au existat mult mai mult decât instrumentele de proiectare a datelor și sunt mai diverse - dintr-un compilator rulat de la Linie de comanda, la instrumente, unde aplicația finită este asamblată de „mouse” din componente gata făcute, iar codul este generat automat. Cu o asemenea varietate de instrumente de dezvoltare, acestea ar trebui clasificate într-un fel, ceea ce vom încerca să facem în acest articol, spunând pe parcurs care dintre ele sunt convenabile de utilizat într-un anumit caz.

Clasificarea instrumentelor de dezvoltare a aplicațiilor

Instrumentele de dezvoltare pot fi clasificate din diverse poziții, de exemplu, în funcție de limbajul de programare pe care îl suportă, sau de performanța aplicațiilor create pe o anumită platformă, sau de prezența anumitor biblioteci și instrumente vizuale în acestea. Vom încerca să clasificăm instrumentele de dezvoltare a aplicațiilor în funcție de comoditatea utilizării lor pentru a crea produse care reprezintă o interfață cu utilizatorul pentru baza de date.

Aproape orice instrument de dezvoltare care se pretinde a fi universal poate fi făcut să funcționeze cu orice bază de date - este suficient să sprijine utilizarea bibliotecilor terțe în acest instrument de dezvoltare și această bază de date are un set de interfețe client (API) pentru platforma pe pe care ar trebui să opereze aplicațiile create . Cu toate acestea, nu fiecare pereche de produse „instrument de dezvoltare plus DBMS” este atractivă în ceea ce privește costurile forței de muncă asociate cu crearea unor astfel de aplicații. Puteți scrie o aplicație completă care apelează funcțiile API-ului client și implementează o interfață de utilizator convenabilă folosind un compilator C și o bibliotecă grafică simplă (de exemplu, permițându-vă să schimbați culoarea pixelilor de pe ecran) pentru sistemul de operare pe care acesta aplicația va rula. Dar costurile asociate cu implementarea unui astfel de proiect pot fi complet nejustificate, deoarece, în acest caz, dezvoltatorii vor trebui să implementeze funcții care sunt deja conținute în bibliotecile de clasă și componente ale instrumentelor de dezvoltare care sunt mai profund concentrate pe crearea de aplicații de baze de date sau includ suport. pentru crearea unor astfel de aplicații.

Instrumente de dezvoltare axate pe un SGBD specific

În urmă cu zece sau douăzeci de ani, în multe aplicații care foloseau baze de date, funcțiile client API erau apelate din codul scris într-unul dintre limbajele de programare, cel mai adesea în C. Priviți doar descrierea API-ului părții client a aproape orice parte de server. DBMS - și veți găsi multe exemple ale celor mai tipice fragmente de cod, de exemplu, pentru înregistrarea unui utilizator, executarea de interogări etc. Cu toate acestea, dezvoltatorii DBMS au devenit rapid clar că costurile forței de muncă asociate cu scrierea unui astfel de cod pot fi reduse semnificativ prin colectarea celor mai tipice fragmente de cod și a elementelor de interfață cu utilizatorul cel mai frecvent întâlnite în biblioteci (chiar și pentru terminale alfanumerice), formatând aceste biblioteci în ca produs separat și adăugând la acesta un mediu de dezvoltare și utilități de proiectare a formularelor de utilizator pentru vizualizarea și editarea datelor, precum și a rapoartelor. Așa au apărut primele instrumente de dezvoltare specifice DBMS, precum Oracle * Forms (predecesorul actualului Dezvoltator Oracle Forms).

Produsele din această clasă sunt încă disponibile astăzi pe piața instrumentelor de dezvoltare. Aproape toți vânzătorii de baze de date server produc, de asemenea, instrumente de dezvoltare a aplicațiilor. În marea majoritate a cazurilor, versiunile moderne ale acestor instrumente de dezvoltare acceptă accesul la DBMS de la alți producători folosind cel puțin unul dintre mecanismele universale de acces la date (ODBC, OLE DB, BDE). Totuși, accesul la „propriul” SGBD se realizează de obicei în cel mai eficient mod, adică folosind API-uri client, obiecte conținute în bibliotecile părții client a SGB-urilor server, clase speciale pentru accesarea datelor acestui SGBD, sau prin implementarea driverelor pentru mecanisme universale de acces la date, capabile să țină cont de caracteristicile specifice acestui SGBD.

Mediile de dezvoltare DBMS desktop pot fi distinse într-o categorie separată. În articolul din această serie dedicat SGBD-urilor desktop, am remarcat deja că marea majoritate a SGBD-urilor desktop care au supraviețuit până în prezent, cum ar fi Microsoft Visual FoxPro, Microsoft Access, Corel Paradox, Visual dBase, acceptă accesul la SGBD-uri de server, cel puțin folosind mecanisme universale de accesare a datelor, ceea ce ne permite să le clasificam condiționat ca instrumente de dezvoltare. Rețineți, însă, că în prezent crearea de aplicații în arhitectura „client-server” cu ajutorul acestora este un fenomen rar. Excepție, poate, sunt perechile Microsoft Access - MSDE, Microsoft Access - Microsoft SQL Server și Microsoft Visual FoxPro - Microsoft SQL Server. Acesta este rezultatul unei politici competente a Microsoft, depunând eforturi pentru compatibilitatea maximă a produselor sale și oferind utilizatorilor cel mai ușor de înlocuit DBMS-ul desktop cu propriile servere de baze de date (Access->MSDE->Microsoft SQL Server, FoxPro->Visual). FoxPro->Microsoft SQL Server) .

Instrumente de dezvoltare care sunt universale în raport cu SGBD

Instrumentele de dezvoltare care sunt universale în raport cu SGBD (sau care pretind că sunt universale similare) sunt, de regulă, adepte ai instrumentelor convenționale de dezvoltare a aplicațiilor care nu sunt direct legate de bazele de date. Exemple tipice de astfel de instrumente de dezvoltare sunt Borland Pascal, Borland C++, Microsoft QuickC. Capabile de a utiliza biblioteci terțe, aceste instrumente au făcut posibilă accesarea funcțiilor API-urilor client și, odată cu dezvoltarea mecanismelor universale de acces la date (cum ar fi ODBC), și a funcțiilor API ale bibliotecilor care implementează astfel de mecanisme. Trebuie remarcat faptul că mediile DBMS desktop (cum ar fi dBase, FoxBase) sau pseudo-compilatoare pentru limbaje din familia xBase (cum ar fi Clipper) au fost adesea create cu ajutorul acestor instrumente de dezvoltare.

Versiunile ulterioare ale instrumentelor de dezvoltare menționate mai sus au dobândit biblioteci de funcții și clase concepute pentru a accesa date folosind anumite mecanisme universale. Dezvoltarea în continuare a instrumentelor de dezvoltare a condus la apariția a două categorii de produse în acest scop.

Prima categorie include instrumente de dezvoltare care au biblioteci extinse de clase, un număr mare de „vrăjitori” și generatoare de cod, dar sunt concentrate pe crearea de cod „manuală” și sunt rareori folosite pentru a crea aplicații de baze de date „standard” (aici sub sintagma „standard aplicație „ne referim la o aplicație care are acces direct la baza de date cu care interacționează utilizatorul, adică este un client „clasic” al serverului SGBD). Un reprezentant tipic (și singurul cu adevărat popular pe piața de software) al acestei clase de produse este Microsoft Visual C++. Cu ajutorul Microsoft Visual C++ și al bibliotecii MFC (Microsoft Foundation Classes), puteți crea orice aplicație dacă aveți abilitățile, cunoștințele, îndemânarea și timpul. Cu toate acestea, aplicațiile cu o interfață de utilizator complexă (de exemplu, cele care folosesc baze de date) nu sunt adesea dezvoltate cu ajutorul acestuia (deși exemple de utilizare a acesteia pot fi găsite chiar și în literatura rusă). Acest produs este folosit în principal pentru a crea aplicații client în cazul prezentării acestora cerinte speciale, cum ar fi, de exemplu, productivitate ridicată, capacitatea de a efectua orice operațiuni non-standard etc.

A doua categorie include instrumente de dezvoltare cu instrumente vizuale avansate care vă permit să „desenați” literalmente interfața cu utilizatorul, ștergând parțial diferențele dintre munca programatorului și a utilizatorului și reducând costul produsului final prin atragerea dezvoltatorilor care nu sunt de cea mai înaltă calificare la proiectarea interfeței (dacă studiați cu atenție programele de curs centrele de formare specializate în predarea instrumentelor de dezvoltare Microsoft, Borland și Sybase, puteți constata că durata cursului de formare, după ascultare, care utilizator Windows ar trebui să învețe cum să creeze aplicații client pentru server DBMS, este de la 5 la 10 zile lucrătoare).

Această categorie de instrumente de dezvoltare este cea mai des folosită la crearea aplicațiilor client. Cele mai populare produse din această clasă includ Microsoft Visual Basic, Borland Delphi , Sybase PowerBuilderși Borland C++Builder. Mediile de dezvoltare pentru astfel de produse sunt foarte asemănătoare ca aspect (până la locația ferestrelor pe ecran, care este setată „în mod implicit”): de regulă, mediul de dezvoltare pentru un astfel de produs conține un „blank” al proiectului. formular (analog cu o fereastră), un panou separat cu pictograme ale elementelor interfeței cu utilizatorul și alte obiecte utilizate în aplicație care pot fi selectate și plasate pe formular, o fereastră în care proprietățile unuia dintre elementele selectate în formular sunt afișate și editate (și uneori o listă de evenimente la care acest element reacționează), o fereastră de editor de cod în care puteți introduce fragmente de cod, asociate procesării anumitor evenimente, precum și codul care implementează logica acestei aplicații. De regulă, instrumentele moderne de dezvoltare din această clasă vă permit să creați cele mai simple aplicații pentru editarea datelor cu puțin sau fără cod.

Recent, a devenit foarte populară și crearea de aplicații care utilizează accesul la baze de date, dar aflate în interiorul documentelor obișnuite. Instrumentele de dezvoltare pentru astfel de aplicații se bazează pe limbajele macro ale editorilor corespunzători. Cel mai tipic și practic singurul reprezentant popular al instrumentelor de dezvoltare din această categorie este Visual Basic for Applications, care este similar instrumentelor de dezvoltare vizuală enumerate mai sus și diferă de acestea prin faptul că aplicațiile create cu acesta sunt conținute în interior. documente Microsoft birou și nu sunt înstrăinați de ei.

Rețineți, totuși, că împărțirea de mai sus a instrumentelor de dezvoltare în aceste două clase este mai degrabă condiționată. După cum am spus mai sus, aproape toate instrumentele de dezvoltare a aplicațiilor de baze de date, inclusiv cele axate pe DBMS specific, acceptă cel puțin unul dintre mecanismele universale de acces la date. Și aproape toate instrumentele „universale” de dezvoltare a aplicațiilor, dacă aparțin producătorului oricărui SGBD de server, suportă SGBD-ul „lor” mai bine decât SGBD-ul terților (acest lucru poate fi exprimat, de exemplu, în biblioteci de clasă specială sau componente pentru accesarea acestui server și, de asemenea, în prezența depozitelor comune de obiecte și modele de date și, uneori, editori de parametri de acces la date sau scheme de date comune cu partea client a SGBD-ului server)

Clasificarea aplicațiilor care utilizează baze de date

Aplicații în arhitectura client-server

În articolele anterioare ale acestei serii, am vorbit deja despre ceea ce constituie o arhitectură „client-server” în sensul tradițional. Prin urmare, ne vom aminti doar pe scurt că sistemele informaționale create în această arhitectură sunt un server de baze de date care manipulează datele și o aplicație client care le accesează și utilizează fie API-uri client (sau clase și componente care le încapsulează apelurile), fie una din date universale. mecanisme de acces. De obicei, atunci când se utilizează o astfel de arhitectură de aplicație, serverul bazei de date este, de asemenea, responsabil pentru aplicarea regulilor de afaceri implementate sub formă de proceduri stocate, declanșatoare, constrângeri de server și alte obiecte de bază de date.

În acest caz, instrumentele de dezvoltare cu instrumente vizuale avansate, precum Microsoft Visual Basic, Borland Delphi, Sybase PowerBuilder, Borland C++Builder, sunt cel mai des folosite pentru a crea aplicații client.

Rețineți, totuși, că alegerea arhitecturilor de aplicații moderne este în prezent destul de largă și nu se limitează la arhitectura „clasică” client-server, ceea ce presupune că aplicația este formată dintr-un server de bază de date și aplicații client care interacționează cu acest server. Prin urmare, mai jos vom discuta ce instrumente de dezvoltare sunt convenabile de utilizat la crearea aplicațiilor distribuite.

Aplicații distribuite

Aplicațiile distribuite (sau cu mai multe niveluri) constau de obicei din servicii de prezentare (sau clienți „subțiri” cu care utilizatorii finali interacționează de obicei), servicii de logică de afaceri implementate ca obiecte de afaceri (sau servicii de nivel mediu; adesea pentru a descrie o colecție de astfel de servicii sunt denumite middleware) și servicii de date (constând de obicei dintr-un server de baze de date și mecanisme de acces la date). Serviciile de logică de afaceri sunt concepute pentru a primi informațiile utilizatorilor de la serviciile de prezentare, pentru a interacționa cu serviciile de date pentru a efectua operațiuni de afaceri (cum ar fi procesarea comenzilor sau calcularea bilanțului) și pentru a returna rezultatele acestor operațiuni către serviciile de prezentare.

Spre deosebire de aplicațiile convenționale client-server, în sistemele cu mai multe niveluri, clienții subțiri de obicei nu au acces direct la date. În schimb, clienții trimit cereri către obiecte de afaceri special concepute în acest scop. Aceștia, la rândul lor, pot efectua operațiuni de afaceri solicitate de client (cum ar fi procesarea unui ordin, executarea unei tranzacții bancare etc.).

Unele dintre obiectele de afaceri pot accesa serviciile de date folosind un fel de mecanism de acces la date. Deoarece utilizatorul final nu interacționează direct cu obiectele de afaceri, acestea din urmă nu au de obicei o interfață cu utilizatorul în sensul obișnuit. Din punct de vedere fizic, obiectele de afaceri pot fi implementate ca servicii de sistem de operare, aplicații console sau aplicații Windows, precum și biblioteci încărcate în spațiul de adrese al unei aplicații server special concepute în acest scop (server Web, server de aplicații, monitor de tranzacții etc.). ). Nu este neobișnuit ca o singură entitate comercială să servească mulți clienți.

Pentru a crea obiecte de afaceri, sunt folosite atât instrumente de dezvoltare cu instrumente vizuale avansate, cât și instrumente de dezvoltare axate pe crearea „manuală” a codului aplicației (cum ar fi Visual C++). Rețineți că cele mai recente versiuni ale aproape tuturor celor mai populare instrumente de dezvoltare de aplicații Windows (Microsoft Visual Basic, Visual FoxPro și Visual C++, Borland Delphi și C++Builder, Sybase PowerBuilder) sprijină crearea de diferite tipuri de obiecte de afaceri (aplicații web, ASP - obiecte, servere COM etc.), cu posibila excepție Microsoft Access - acest produs este proiectat mai mult pentru utilizatori calificați decât pentru dezvoltatorii de sisteme distribuite. Adesea, instrumentele de creare a aplicațiilor Java (cum ar fi Borland JBuilder) sunt de asemenea folosite în acest scop.

Rețineți că, pe lângă instrumentele „universale” menționate mai sus pentru crearea atât a aplicațiilor în arhitectura „client-server”, cât și a obiectelor de business pentru sistemele distribuite, există instrumente specializate pe piața instrumentelor de dezvoltare care sunt concepute special pentru crearea de obiecte de business. (de obicei, aplicații web). Dintre instrumentele de dezvoltare ale acestei clase pentru platforma Windows, cel mai popular este Microsoft Visual InterDev, a cărui primă versiune a apărut în 1998. Putem aminti și un alt produs interesant aparținând aceleiași categorii de instrumente de dezvoltare - Borland IntraBuilder, care a apărut cu doi ani mai devreme, dar din anumite motive, în ciuda nevoii tot mai mari de produse din această clasă, nu a primit o dezvoltare ulterioară. Instrumentele de dezvoltare din această clasă, de regulă, vă permit să creați aplicații care generează în mod dinamic cod HTML sau cod într-unul dintre limbajele de scripting (VBScript sau JavaScript), care este transmis de serverul Web browserului utilizatorului ca parte a o pagină Web și acceptând datele introduse de utilizator în formă HTML și transmise de browser către serverul Web.

Concluzie

În acest articol am discutat despre procesul de creare a aplicațiilor care utilizează baze de date, precum și despre diferitele categorii de instrumente utilizate în dezvoltarea acestora. Am văzut că instrumentele de dezvoltare pot fi împărțite condiționat, pe de o parte, în instrumente axate pe utilizarea unor SGBD specifice, instrumente care sunt universale în raport cu SGBD și medii SGBD desktop utilizate pentru dezvoltarea aplicațiilor. Pe de altă parte, ele pot fi împărțite în instrumente axate pe proiectarea interfeței vizuale cu utilizatorul (această categorie include Microsoft Visual Basic, Borland Delphi, Sybase PowerBuilder, Borland C++Builder) și instrumente axate pe scrierea codului aplicației (Visual C++).

După ce am analizat unele dintre cele mai populare instrumente de dezvoltare a aplicațiilor, am constatat că majoritatea acestor produse, de regulă, acceptă:

  • cel puțin unul dintre mecanismele universale de acces la date, care permite utilizarea datelor din diverse SGBD în aplicațiile create;
  • crearea mai multor tipuri de aplicații distribuite;
  • generarea automată a codului aplicației pe baza modelelor create folosind cele mai populare instrumente de proiectare a datelor și modelare a proceselor de afaceri.

De asemenea, am discutat despre modul în care aplicațiile client-server diferă de sistemele distribuite și ce instrumente de dezvoltare pot fi utilizate pentru a crea ambele tipuri de aplicații.

Ciclul de viață al unui sistem informațional nu se termină cu dezvoltarea aplicațiilor. Odată create, acestea ar trebui să fie testate, implementate, instruite pentru a le utiliza și, în final, exploatate pentru un număr de ani. Ca urmare a unei astfel de exploatări, se acumulează date, care, de regulă, sunt mult mai valoroase decât aplicațiile în sine. Aceste date reprezintă adesea materialul necesar pentru luarea unor decizii importante de management, de aceea este important să le putem converti într-o formă adecvată unui astfel de scop. Pentru a face acest lucru, există instrumente legate de categoria Business Intelligence - generatoare de rapoarte, instrumente pentru prelucrarea datelor analitice și căutarea modelelor. Despre ele vom vorbi în următorul articol al acestei serii.

Pentru dezvoltarea optimă a mediului software, este necesară combinarea diferitelor limbaje de programare, deoarece fiecare dintre ele are ca scop îndeplinirea anumitor scopuri și obiective. La fel ca câteva comenzi PHP fac posibilă crearea unei întregi pagini Web, dar, în practică, scriptul este aproape întotdeauna folosit împreună cu HTML și, de obicei, codul sursă al scriptului conține un număr mare de linii. Dar, în ciuda acestui fapt, trebuie remarcat faptul că codul PHP poate fi localizat oriunde în documentul HTML, dar nu trebuie să folosească HTML. Este necesar doar să vă asigurați că codul PHP generează cod HTML valid, care este apoi afișat corect de browserul Web.

HTML este un limbaj de marcare hipertext care este folosit pentru a crea documente pe Internet. Cu acesta, este creată structura și grila necesare paginii, al cărei aspect este îmbunătățit în continuare de CSS și JavaScript. În prezent, cea mai recentă versiune este HTML5, care a fost precedată de HTML4.01. Majoritatea resurselor Web sunt construite pe baza acestui limbaj special.

Spre deosebire de HTML 4, care are 3 validatori, HTML 5 are un validator:. HTML 5 acceptă MathML și SVG.

Etichete noi: secțiune, articol, deoparte, hgroup, antet, subsol, navigare, dialog, figură, video, audio, sursă, încorporare pentru a încorpora conținut cu plugin (numai), marcare, progres, contor, timp, ruby, rt, rp , canvas, comandă, detalii, datalist, keygen, output.

Noi tipuri de introducere: tel, căutare, url, e-mail, datetime, dată, lună, săptămână, oră, datetime-local, număr, interval, culoare.

Atribute noi pentru etichete: atribute media ping pentru a și zonă etc.

Dispariția unor etichete, datorită faptului că pot fi înlocuite cu CSS: basefont, big, center, font, s, strike, tt, u.

Cadrele dispar din cauza impactului negativ asupra întregii pagini

Dispariția unor etichete, înlocuite în specificația actualizată cu altele mai relevante: acronim (se folosește abbr), applet (se folosește obiectul), isindex, dir.

Unele atribute de etichetă nu sunt acceptate din cauza lipsei de necesitate: rev și charset pentru link și a, shape and coords pentru a etc.

Unele atribute ale etichetelor nu sunt acceptate din cauza faptului că atunci când utilizați CSS, se obține cel mai bun efect: aliniere pentru toate etichetele, alink, link, text, vlink pentru body și așa mai departe.

Noi API-uri: desenarea imaginilor 2D în timp real; control asupra redării fișierelor media; stocarea datelor în browser; editare; tragere și plasare; rețele; MIMA elemente noi în DOM.

CSS este un limbaj formal pentru a descrie aspectul unui document scris folosind un limbaj de marcare. CSS este un acronim pentru Cascading Style Sheets. CSS este un limbaj de stil care definește redarea documentelor HTML. De exemplu, CSS se ocupă de fonturi, culoare, margini, linii, înălțime, lățime, imagini de fundal, poziționarea elementelor și multe alte lucruri. HTML poate fi folosit pentru a modela site-urile Web, dar CSS este mai puternic, mai precis și mai elaborat. CSS este în prezent acceptat de toate browserele.

HTML este folosit pentru a structura conținutul unei pagini. CSS este folosit pentru a formata acest conținut structurat. Dupa cum designeri web a început să caute modalități de a formata documente online. Pentru a satisface cerințele tot mai mari ale consumatorilor, producătorii de browsere (apoi Netscape și Microsoft) au inventat noi etichete HTML, cum ar fi , care diferă de etichetele HTML originale prin faptul că defineau mai degrabă aspectul decât structura. Acest lucru a dus și la etichete de structurare originale, cum ar fi

, au devenit din ce în ce mai folosite pentru designul paginii în loc de structurarea textului. Multe etichete de design noi, cum ar fi , au fost acceptate doar de un browser. „Aveți nevoie de browser X pentru a vizualiza această pagină” este o respingere comună pe site-urile Web.

CSS a fost creat pentru a remedia această situație, oferind designerilor web capabilități de design precise care sunt acceptate de toate browserele. În același timp, a existat o separare a conținutului prezentării și documentelor, ceea ce a simplificat foarte mult munca.

Apariția CSS a revoluționat lumea designului web. Beneficii specifice ale CSS:

Gestionarea afișajului mai multor documente cu o singură foaie de stil;

Control mai precis asupra aspectului paginilor;

Vizualizări diferite pentru diferite medii (ecran, imprimare etc.);

Tehnica de design sofisticată și sofisticată.

Există modalități de a aplica regulile CSS unui document HTML.

Metoda 1: Inline / In-line (atribut de stil). Puteți aplica CSS la HTML folosind atributul stil HTML. Culoarea roșie de fundal poate fi setată astfel:

exemplu

Aceasta este o pagină roșie

Metoda 2: Internă (etichetă de stil). A doua modalitate de a insera coduri CSS - eticheta HTML