Trandafiri arbusti pentru gradina ta. Un exemplu de utilizare împreună a Delphi și Rational Rose

Grădinarii din întreaga lume adoră trandafirii și îi cresc într-o mare varietate de climate.Un fel de revoluție în lumea trandafirilor a fost făcută prin apariția unui nou grup de scrubs de grădină - trandafiri arbusti. Deși aproape toți mai necesită protecție pentru iarnă în condițiile noastre, astăzi trandafirii arbusti sunt cei mai versatili și mai nepretențioși.

Frecați tufișurile

Scruburile sunt foarte eterogene. Acestea sunt specii sălbatice, hibrizii lor și trandafiri moderni de origine complexă, ale căror flori sunt similare cu florile. trandafiri hibrizi de ceaiși trandafiri de grup floribunda.

Rose rugosa și hibrizii săi

Unul dintre cei mai valoroși trandafiri de parc este trandafirul încrețit, sau trandafir rugosa, numit și trandafir japonez. Specia originală este comună în țara noastră în Orientul Îndepărtat, precum și în China de Nord, Coreea și Japonia. Există sub două forme: una cu flori albe, cealaltă cu flori roz închis sau roșii.

Florile au diametrul de la 5 la 10 cm, foarte parfumate, in inflorescente de 3-6 flori sau solitare. Florile soiurilor hibride de rugosa variază de la alb până la roșu închis, există și galbene, variază și ca mărime și dubitate. Frunzele sunt mari, dure, încrețite. Lăstarii sunt acoperiți dens cu spini și peri. Tufișurile sunt largi, dense, ating o înălțime de 1-2 m și produc creștere puternică cu lăstari erecți. Sistemul radicular este puternic și superficial. Înflorirea este abundentă, de la sfârșitul lunii mai, de lungă durată, putând fi repetată într-o formă mai slabă. Datorită acestei caracteristici, tufișurile conțin simultan fructe și flori. Formele și soiurile cu flori duble sunt capabile în special de acest lucru, ceea ce este valoros din punct de vedere decorativ. Fructele sunt strălucitoare, roșii portocalii, mari (2-2,5 cm), foarte decorative. Rosa rugosa este o specie foarte rezistentă la iarnă (nu necesită adăpost) și rezistentă la boli.

De asemenea, majoritatea hibrizilor de rugosa nu au nevoie de adăpost pentru iarnă. Dar unele soiuri) nu diferă în ceea ce privește rezistența la iarnă. Lăstarii lor înfloriți apar pe lăstarii superiori iernați din anul precedent. Fără protecție de iarnă sau acoperire adâncă de zăpadă, doar mugurii inferiori sunt conservați și nu pot asigura înflorirea. Nu este ușor să îndoiți lăstarii puternici și groși la pământ. Prin urmare, atunci când alegeți un soi, este necesar să acordați atenție rezistenței generale, frecvenței și abundenței înfloririi și rezistenței la boli.

Rose rugosa și hibrizii săi sunt utilizați pentru plantări și gard viu în grupuri mici și individuale. Acești trandafiri fac gard viu minunat, în special cei care împart zona în părți separate. Fructele sunt potrivite pentru a face gemuri și compoturi.

Hibrizi de trandafir moiesi

Zona de distribuție a strămoșului acestui grup este China de Vest. Hibrizii se obțin prin încrucișarea speciilor originale cu trandafiri din diferite grupuri. Florile sunt roșii, roz, medii (5-6 cm), simple sau semiduble, în inflorescențe. Frunzele constau din 7-13 foliole ovale. Tufișurile sunt înalte - până la 2-2,5 m, răspândite, cu lăstari brun-roșcați. Înflorirea este abundentă din iunie, înflorirea repetată este mai slabă. Fructele sunt în formă de sticlă, mari (5 cm lungime), roșu portocaliu închis. Hibrizii de trandafiri moiesi sunt decorativi pentru gradinaritul peisagistic. Au nevoie de un adăpost ușor, fără a îndoi lăstarii la pământ.

Hibrizi de trandafiri Cordes

Acești trandafiri au fost numiți în onoarea autorului lor - faimosul originator german V. Cordes. Majoritatea acestor trandafiri sunt obținuți din soiul Max Graf (un hibrid spontan de Rosa rugosa și Rosa Vihura). Ca urmare a încrucișărilor sale cu soiuri din alte grupuri, s-a format un grup varietal de hibrizi de trandafiri Cordes. Trebuie remarcat faptul că noi grupuri de grădină nu sunt create fără motive speciale, iar trandafirii Cordes au primit această onoare pentru rezistența lor combinată cu atractivitatea.

Florile de trandafiri destul de mari (7-8 cm în diametru) din acest grup se disting printr-o varietate de culori și forme, de la semiduble până la dens duble, uneori parfumate, colectate în inflorescențe mici. Toate soiurile au frunze frumoase de culoare verde închis, strălucitoare. Tufișurile sunt viguroase (1,5-2 m), adesea cu lăstari ca bici. Înflorește abundent din iunie până toamna târziu. Fructele sunt ovoide. Toate soiurile sunt destul de rezistente la iarnă și rezistente la boli. Cu toate acestea, în condițiile din centrul Rusiei au nevoie de adăpost pentru iarnă. Pot fi cultivate chiar și la umbră parțială.
Acest grup de trandafiri se foloseste in plantari de grup si singure, pentru gradinarit vertical. Pot decora foișoare, terase, pergole, arcade, gratare specialeși alte suporturi pentru împărțirea spațiului grădinii, crearea de zone de recreere și decorarea dependințelor.

Acești trandafiri nu sunt capabili să se înfășoare în jurul unui suport, așa că trebuie să fie legați de acesta, formați la începutul primăverii după tăiere, astfel încât să crească imediat în direcția corectă. Pe tot parcursul sezonului de vegetație, ramurile principale sunt ghidate de-a lungul suportului și legate cu grijă de acesta.

Arbuști

Scrub-urile (numite și trandafiri moderni de parc) includ toate soiurile care nu pot fi incluse cu încredere în alte grupuri de grădină.

  • Aspect spectaculos. Înflorirea este abundentă, de lungă durată (din iunie până în toamnă) și se repetă. Aproape toate soiurile înfloresc în mod repetat, dar există și soiuri care înfloresc o dată.
  • Aromă. Există mai mulți trandafiri parfumați printre scrub-uri decât printre trandafirii hibrizi de ceai.
  • Volum. Multe soiuri se remarcă prin puterea și vigoarea lor de creștere (ating 2 m). Tufele unor soiuri sunt atât de grațioase încât ramurile lor flexibile necesită puțin sprijin, care este în curând acoperit de flori.
  • Rezistență la boli și rezistență ridicată la iarnă.

Au nevoie doar de protecție ușoară pentru iarnă.

  • Nepretențiozitate. Orice grădinar poate cultiva arbusti.
  • Folosit pe scară largă în amenajarea teritoriului.
  • Tufișurile pot fi cultivate atât în ​​plantare unică, cât și în grupuri mici (3-5 tufișuri).

Plantarea în grupuri mici dă efectul unei mingi mari înflorite de trandafiri; toate neregulile unui tuf sunt ascunse de cele vecine. Distanța dintre tufe poate fi de la 50 cm până la mai mult de 2 m, în funcție de lățimea tufelor. Este imposibil de dat o recomandare generală pentru plantarea tufișurilor, deoarece acestea variază foarte mult în dimensiunea tufișului. În medie, se plantează 2 până la 3 tufișuri la 1 m2. La trandafirii arbusti mari, uneori partea goală a tufișului este vizibilă, iar apoi poate fi ascunsă de trandafiri cu creștere joasă, aflați în fața lor.

Un singur tufiș frumos pe gazon arată impresionant. Pentru rolul de „solist”, alegeți o plantă cu formă frumoasă tufă și înflorire abundentă, cu o aromă plăcută. Il poti planta oriunde: la intrarea in casa, pe gazon, in centrul patului de flori. Mulți trandafiri arbusti, atât vechi, cât și moderni, sunt buni pentru plantarea unică. Principalul lucru este că planta se îmbină armonios cu peisajul din jur.

Scrubs nostalgici

Din grupul scruburilor aparțin și așa-zișii trandafiri englezi, creați de britanicul David Austin. Timp de mulți ani, acest crescător a lucrat la un program pentru a crea trandafiri care semănau cu specii antice, dar aveau culoarea florilor modernă și capacitatea de a re-înflori. Trandafirii englezi se obtin prin incrucisarea trandafirilor francezi, damasc, bourbon si alti cu soiuri moderne de trandafiri hibrizi de ceai si trandafiri floribunda. Trandafirii lui D. Austin au apărut în ultimul sfert al secolului al XX-lea. Florile lor sunt dens duble, de diferite culori: cais pal, galben intens, roșu închis, în formă de bujor, foarte parfumate și arată nostalgic de modă veche. Tufele sunt compacte, bine formate și înfloresc repetat. Multe soiuri sunt rezistente la boli. Meritul lui D. Austin este că a insuflat din nou în lume dragostea pentru formele de flori vechi ( pentru o lungă perioadă de timp Trandafirii în formă de cupă de tip ceai hibrid au fost considerați ideali), precum și structura tridimensională a tufișului.

Cele mai populare soiuri ale acestui grup sunt Abraham Darby, Graham Thomas. În mare parte datorită trandafirilor englezi, grădinarii au aflat despre grupul de scrubs. Clima din zona de mijloc este puțin aspră pentru ei. Prin urmare, lăstarii lor trebuie acoperiți cu grijă pentru iarnă.

Trandafirii de la compania franceză Meilland din seria Romantica se disting și prin durabilitate, înflorire repetă abundentă, varietate de nuanțe, petale ciufulite și farmecul trandafirilor vechi. Adevărat, doar câteva soiuri din acest grup aparțin grupului de scrubs, de exemplu Collette, Les Quatre Saisons, Yellow Romantika, Lovely Meilland. Toate soiurile se disting nu numai prin frumusețea și aspectul „vechi”, ci și prin durabilitatea lor. Sunt visul oricărei grădini romantice. Compania germană Rosen Tantau crește și ea de mulți ani trandafiri nostalgici moderni. Toate soiurile sunt testate pentru rezistența la boli și rezistența la îngheț în climatele aspre. Noi soiuri de trandafiri nostalgici de scrub: Belvedere, First Lady, Gartentraume, Grafin von Hardenberg, Mariatherese, Pasella.

Trandafirii din seria Canadian Explorer Roses (Charles Albanel, David Thompson, Henry Hudson, Jens Munk, Martin Frobicher), numiti după exploratorii canadieni remarcabili, se disting în primul rând prin rezistența lor ridicată la iarnă. Originea multor soiuri din această serie a implicat trandafirul cordesia și trandafirul rugosa.

Caracteristici de îngrijire

Adăpost pentru iarnă

Deși rezistența la iarnă a trandafirilor arbusti moderni este mai mare decât cea a trandafirilor hibrizi de ceai și floribunda, aceștia trebuie acoperiți pentru iarnă, iar acoperirea în sine poate fi mai dificilă din cauza volumului tufelor.
Trandafirii arbusti care înfloresc repetat pot atinge 1,5 m înălțime sau mai mult în timpul sezonului de creștere. La sfârșitul lunii octombrie, se efectuează tăierea de toamnă - până la 1/3 din lungimea lăstarilor.

Ar trebui să încercați să îndoiți lăstarii tufurilor înalte la pământ. Tufișurile pot fi săpate pe o parte și așezați prin fixarea lor pe pământ. Ramurile îndoite sunt așezate pe un strat de ramuri de molid, altfel trandafirii pot putrezi în solul dezghețat sub acoperire. Blatul este, de asemenea, acoperit cu crengi de molid sau orice material izolator. Puteți folosi pământ pentru a asigura materialul izolator deasupra.

Protecția fiabilă pentru tufișurile care au trecut prin etapele normale de întărire poate fi o acoperire puternică de zăpadă. Sub un strat de zăpadă de 50-70 cm, temperatura nu coboară sub 4-5° sub zero când temperatura de afară este de 25-30° C. Dar, din moment ce momentul zăpezii și grosimea stratului de zăpadă nu sunt constante. , este necesar să se utilizeze tehnici suplimentare de protecție: crengi de molid, tablă de stejar, material nețesut.

Tunderea

Arbuștii se caracterizează printr-o creștere puternică și voluminoasă și necesită o tăiere ușoară. Acești trandafiri se tem de tăierea grea și chiar moderată. Mugurii latenți durează mai mult până se trezesc decât, de exemplu, trandafirii hibrizi de ceai. Cu o vară scurtă și nu întotdeauna suficient de caldă, această caracteristică devine semnificativă. Cu tăierea lungă, înflorirea este mai abundentă, deoarece lăstarii de ordinul doi din mugurii superiori se dezvoltă mai intens.

3-5 dintre cei mai puternici lăstari bazali noi sunt lăsați pe tufe și 6-8 sau mai mulți muguri bine dezvoltați sunt lăsați pe ei. Scopul tăierii anuale este de a scurta lăstarii cu un sfert sau jumătate, iar lăstarii laterali cu două treimi. Dacă înălțimea lăstarului ajunge la 120 cm, scurtați-le cu 30-40 cm, dacă lungimea lăstarii laterale este de 30 cm, scurtați-l cu 10 cm. Este necesar să lăsați lăstari destul de puternici, uniform distanțați.

În prezent Delphi este unul dintre cele mai populare produse software pentru creare sisteme de informare. Pe baza acesteia, sunt create atât programe mici, cât și sisteme la scară întreprinzătoare. Ce este atât de atractiv la acest produs din punctul de vedere al dezvoltatorului? În primul rând, este, desigur, un excelent mediu de programare vizuală - ușor de înțeles, ușor de învățat și adesea nu necesită cunoștințele unui dezvoltator profesionist (care, după cum știm, se acumulează puțin câte puțin de-a lungul multor ani și decenii și este incredibil de scump). În mediul Delphi, puteți crea sisteme software destul de complexe aproape de la zero, scriind un minim de cod. În același timp, limbajul Obiectul Pascal, în care este scris programul, este familiar multora (cel puțin la noi), iar în prezent este studiat în cursuri de juniori în majoritatea universităților tehnice autohtone.

Cu toate acestea, nu totul este atât de simplu. Dacă pentru a crea sisteme software mici pentru propriile nevoi, vă puteți limita la un mediu de programare vizuală, atunci pentru a crea ceva destul de critic pentru calitate software(software) necesită o abordare fundamental diferită, cel puțin - utilizare atunci când se dezvoltă un model de ciclu de viață DE, cu toate cerințele ulterioare pentru documentarea procesului.

Fundamental pentru sistemele din această clasă este prezența unei arhitecturi de bază, care este neschimbată pe întregul ciclu de viață al dezvoltării și funcționării sistemului și ale cărei elemente principale sunt stabilite în primele etape de proiectare. Arhitectura de bază este creată, de regulă, folosind o serie de modele care reflectă punctele principale asociate cu structura sistemului și funcțiile acestuia. Din pacate este miercuri Delphi nu este aplicabil pentru rezolvarea unor astfel de probleme.

Dar să revenim la avantajele Delphi. Dacă renunțăm la mediul de programare vizuală, atunci ce rămâne? Model obiect. Și acest avantaj al Delphi este atractiv din punctul de vedere al proiectantului de sistem. Modelul obiect (oricât de ciudat ar părea cuiva) este cel care determină în mare măsură succesul mediului de programare vizuală. Modelul obiect Delphi acoperă o gamă largă de sarcini, oferind instrumente de organizare la nivel înalt, dar în același timp extrem de flexibile, aproape nelimitate. interfața cu utilizatorul, managementul resurselor sistemului de operare, manipularea bazei de date, suport pentru standarde sisteme deschise, precum și suport pentru tehnologiile populare (inclusiv CORBAȘi COM), arhitectura pe mai multe niveluri și, în sfârșit, Internet-intranet- tehnologii.

Arhitectura de bază poate folosi elemente ale modelului obiect Delphi (de ce să recreeze toate cele de mai sus), completând-o cu componentele necesare care reflectă specificul aplicației unui anumit sistem.

Folosim produsul pentru proiectarea sistemului Trandafir rațional companiilor Rational Software Corp.discurs. Acest produs are toate caracteristicile necesare pentru a crea arhitectura de bază a unui sistem de orice scară. Dacă aveți suficientă experiență de programare în mediul Delphi, folosirea Rational Rose și Delphi împreună, în cadrul unui singur proces tehnologic, ni se pare potrivită.

Scopul acestui articol este de a analiza utilizarea combinată a Rational Rose și Delphi și de a indica cu exactitate (în opinia noastră, desigur) locul fiecărui produs în procesul de dezvoltare. Sperăm că acest lucru va permite dezvoltatorilor să își formeze o opinie cu privire la aplicabilitatea unei astfel de tehnologii pentru propriile nevoi și să economisească timp în studierea detaliilor.

Ce vrem de la Rational Rose și Delphi

Metodologia pe care o urmăm în timpul dezvoltării DE, este o metodologie de dezvoltare software Proces rațional unificat de la Rational Software Corporation. Metodologia, din punct de vedere tehnologic, include următoarele etape (desigur, în cadrul fiecărei iterații): modelarea domeniului, determinarea cerințelor sistemului, analiză și proiectare, implementare (codare și depanare offline), testare și implementare. Tabelul de mai jos arată ce ne putem aștepta să realizăm cu Rational Rose și Delphi în fiecare etapă.

Utilizarea Rational Rose și Delphi în diferite etape ale dezvoltării software

Etapă Ce așteptăm de la Rose Ce așteptăm de la Delphi
Modelarea domeniului Zona de subiect este modelată, iar zona de subiect este descrisă „ca atare” -
Determinarea cerințelor de sistem Sunt determinate cerințele funcționale pentru sistem, cerințele pentru interfața sistemului Este creat un prototip de interfață cu utilizatorul
Analiză și proiectare Sunt determinate componentele de bază ale arhitecturii, datele sunt modelate, iar componentele sistemului sunt proiectate în detaliu. Elementele modelului obiect Delphi sunt incluse în arhitectura de bază. Asigură o corespondență unu-la-unu între elementele diagramei de clasă Rose și elementele componentelor Delphi
Implementarea Diagramele de clasă sunt implementate sub formă de module software, sunt dezvoltate diagrame de componente și diagrame de plasare Codul programului este implementat, asigurând conformitatea fără ambiguitate a proiectului în Rose și Delphi. Documentarea codului în Delphi Reflects în Rose
Testare Modelele rămân practic neschimbate. Cazurile de testare sunt dezvoltate pentru a testa funcțiile sistemului Se fac modificări la codul programului. Modificările în codul programului sunt reflectate în codul Delphi
Implementarea Diagramele de aspect sunt baza pentru implementarea software-ului. Pe baza modelelor, se poate obține documentație actualizată la nivel de sistem -

După cum se poate observa din tabel, principala interacțiune dintre Rose și Delphi poate avea loc în timpul etapelor de definire, analiză și proiectare și implementare a cerințelor sistemului. Principalele modele utilizate în aceste etape sunt: ​​un model de funcții ale sistemului, un model de interfață, un model de date și un model de specificații ale modulelor software.

Pentru a permite comunicarea între Delphi și Rose, este utilizat un middleware numit generator de cod. Trebuie remarcat faptul că, strict vorbind, sarcinile acestui software nu se limitează la generarea de cod.

Înainte de a trece la descrierea unui anumit generator de cod, enumeram ceea ce, în opinia noastră, ar trebui să ofere:

  • să poată converti clasele Rational Rose în cod de definire a clasei în limba țintă (în acest caz Delphi ) . În acest caz, descrierea asociată cu o anumită clasă trebuie plasată în locul corespunzător din codul programului;
  • suport pentru o diagramă de clasă stereotipuri asociate cu caracteristici specifice ale limbajului (de exemplu, stereotipul unitate, interfata sau proprietate cu definițiile corespunzătoare: pachet specific - modul Delphi , clasa - interfata Delphi, atribut - proprietate pentru o componenta Delphi);
  • au o modalitate descrisă, evidentă și fără ambiguitate de a mapa o diagramă de clasă la codul Delphi. În acest caz, afișajul trebuie să fie personalizabil;
  • să poată importa modelul actual de obiecte Delphi (de preferință pentru versiuni diferite biblioteci VCL);
  • susține generarea de coduri pentru crearea claselor Delphi;
  • să poată afișa corect tipurile tipice de conexiuni între clase (cel puțin generalizare, agregare și compunere);
  • să poată afișa cardinalitatea conexiunii în codul programului;
  • Pe baza diagramei componentelor Rose, creați un proiect Delphi care conține elementele necesare module software (inginerie avansată);
  • pe baza unui proiect Delphi gata făcut, construiți o diagramă de componente Rose care să conțină sub formă de componente toate modulele proiectului Delphi și clasele asociate obținute de la Delphi ca urmare a ingineriei inverse ( Inginerie inversă). Diagramele trebuie să fie compacte și evidente;
  • oferă reconciliere automată între modelele Rose și Delphi după ce se fac modificări la codul modulelor Delphi ( inginerie dus-întors);
  • după ce ați făcut modificări la modelul Rose și ați regenerat codul, nu distrugeți fragmentele scrise în mediul Delphi;
  • pe lângă generarea de cod, aveți o modalitate de a afișa un element Delphi atât de important ca formularele;
  • lucrați la proiecte reale (sute de clase și module) cu performanțe acceptabile.

Generator de cod Delphi de la Ensemble Systems, Inc.

Companie Ensemble Systems, Inc. este în prezent unul dintre cei mai importanți furnizori de componente suplimentare (Adăugați ins) pentru Rational Rose . Aceste componente acceptă generarea de cod pentru o gamă largă de sisteme de programare populare, inclusiv Delphi. Să vedem cum funcționează generatorul de cod Delphi în mediul Rational Rose.

După instalarea componentei Delphi de la Ensemble Systems, Inc. în mediul Rational Rose, apare un nou element de meniu în secțiunea Instrumente (Fig. 1).

Se numește generatorul de cod Rose Delphi Link (RDL). Cum se utilizează RDL , vom descrie în plan când vom lua în considerare exemplu concret. Acum ne vom concentra asupra principalelor caracteristici ale RDL, fără a înțelege care este puțin probabil ca RDL să poată fi utilizat eficient.

În primul rând, rețineți că codul generat de RDL nu conține implementare (pentru un model de obiect acesta este de obicei corpul metodei). Când un model este actualizat din codul Delphi (inginerie inversă sau dus-întors), modelul nu încarcă codul Delphi pentru corpurile metodei. Modificările în model privesc doar elemente declarative: definiții de clase, interfețe, tipuri, înregistrări etc. Cu toate acestea, atunci când se regenerează codul din Rose, corpurile metodei din Delphi rămân de asemenea neschimbate și doar elementele declarative se modifică. Prin urmare, este imposibil să „stricați” codul programului atunci când îl regenerați. Pentru a mapa elementele modelului în codul programului, RDL folosește Proprietăți de generare a codului (C.G. P) este un set de tabele speciale care sunt asociate cu fiecare element al modelelor Rational Rose și care conțin informații specifice Delphi utilizate pentru generarea codului. Un set din aceste tabele (Fig. 2) este disponibil din meniul principal (articolul Instrumente/Opțiuni, marcaj Delphi).

Pentru ca CGP-urile pentru Delphi să fie disponibile din specificație, trebuie setată valoarea câmpului Limba implicita = Delphiîn marcaj Notaţie element de meniu Instrumente/Opțiuni. Pentru a simplifica munca în secțiunea de meniu Instrumente/Ansamblu Instrumente apare și un marcaj Editor de proprietăți Delphi, unde puteți configura proprietățile elementului de model selectat. Rețineți că utilizarea CGP este o tehnică tipică pentru toate generatoarele de cod de la Ensemble Systems, Inc. și pentru Rational Rose în general. Când utilizați Editorul de proprietăți Delphi, puteți vizualiza codul elementului de model corespunzător (de exemplu, o clasă) fără a efectua generarea de cod, ceea ce este adesea foarte convenabil.

Acum să ne uităm la modul în care RDL mapează practicile comune de proiectare în codul programului.

1. Moștenirea de la o clasă și implementarea unei interfețe

Se convertește în cod:

Tip SampleClass1 = clasa (BaseClass, SampleInterface) (...) final;

2. Legături asociative cu roluri și cardinalitate diferită a conexiunilor

Se convertește în cod:

Tip SampleClass3 = clasa privată ArrayRole1: matrice de SupplierClass2; ArrayRole2: matrice SupplierClass5; ArrayRole3: matrice SupplierClass3; ArrayRole4: TItems; Sfârşit;

Rețineți că pentru a reprezenta roluri cu cardinalitate diferită de 1, sunt folosite matrice (fie lungime fixă, fie dinamică). Constanta SampleRange din exemplu trebuie definită în proprietatea Array_Range pentru ArrayRole. Rețineți că pentru Role4 codul nu definește o matrice, ci mai degrabă un tip TItems care se presupune că reprezintă o colecție.

Se convertește în cod:

SampleClass1 = clasa Public A: SampleClass2; B: SampleClass3; C: matrice de SampleClass4; D: matrice de SampleClass5; Sfârşit;

Rețineți că nu am găsit nicio diferență semnificativă în codul pentru agregare și compunere, iar codul rezultat este foarte asemănător cu codul pentru asocierea obișnuită a rolurilor.

4. Stereotipuri pentru elemente tipice de cod Delphi

RDL are mai multe stereotipuri pentru a reprezenta elemente tipice de cod Delphi: pointeri, matrice, fișiere, referințe de clasă etc. Adevărat, în opinia noastră, aceste elemente sunt rareori utilizate în proiectarea la nivel înalt a unui model de obiect.

La sfârșitul scurtei descrieri a caracteristicilor RDL, notăm următoarele. Un element de proiectare important este documentația din caietul de sarcini pentru elementul de model corespunzător. RDL asigură transferul acestuia în codul programului. Deci, pentru operații (metode ale clasei Delphi), valoarea câmpului documentațieîn specificație, este inserat în cod înainte de definirea metodei. În schimb, comentariile din codul Delphi pot fi convertite în câmpuri de documentație în specificațiile elementelor modelului Rose.

Ce nu poate face RDL

Anterior, am definit ceea ce credeam că ar trebui să ofere generatorul de cod Delphi. În general, RDL acoperă toate caracteristicile de mai sus, poate cu o singură excepție - nu vă permite să creați formulare. Vă puteți imagina un mediu Delphi fără forme? Nici noi nu putem. Principala paradigmă a programării vizuale în mediul Delphi constă în setarea valorilor proprietăților corespunzătoare (valorile atributelor de clasă) și scrierea codului pentru handlere de evenimente. Și, din păcate, RDL nu este ajutorul nostru în acest sens. Dar este aceasta într-adevăr o limitare atât de serioasă? Aici pot exista opinii diferite.

Una dintre modalitățile de a crea o aplicație este următoarea: interfața cu utilizatorul este proiectată în mediul Delphi (și unde se poate face acest lucru mai rapid și mai ușor?) iar codul programului este convertit în modele Rational Rose. În ciuda faptului că formele se dovedesc a fi destul de voluminoase, pot fi „pieptănate”, dar principalul lucru este nu afișați detalii neimportante în ele. În Rational Rose, sunt proiectate modelul obiect actual, modelul de date și modelul componentelor, adică elemente semnificative din punct de vedere arhitectural.În combinație cu modelul de interfață cu utilizatorul de sistem, ele formează o structură de sistem care poate fi urmărită de instrumentele de management al configurației, incluse în documentație, ușor de analizat pentru erori fundamentale și reprezintă baza pentru testarea funcțională, adică poate fi utilizată în orice etapă. a ciclului de viață ( J C) dezvoltare de software. În același timp, RDL asigură coordonarea completă a modelelor și a codului programului de-a lungul întregului ciclu de viață al software-ului. Încercăm să aderăm exact la această abordare.

Un exemplu de utilizare împreună a Delphi și Rational Rose

Din păcate, este cu greu posibil să demonstrezi un exemplu cu drepturi depline de aplicație reală într-un articol scurt. Cu toate acestea, acest lucru nu este necesar. În punctul din articol în care am descris ce așteptăm de la Rose și Delphi la fiecare etapă de dezvoltare, am remarcat că este important pentru noi atunci când proiectăm să creăm o arhitectură de bază, în acest caz, inclusiv elemente ale modelului obiect Delphi. Aici vom demonstra capabilitățile RDL.

Ca exemplu, am ales un fragment dintr-un sistem care afișează indicatori ai stării unui pacient pentru medicul curant. Cerințele funcționale pentru sistem sunt prezentate sub forma unei diagrame (Fig. 3).

Diagrama prezintă trei obiecte active: administrator, dispozitiv, doctor. Nu vom lua în considerare funcțiile sistemului legate de dispozitiv. În ceea ce privește dispozitivul, este important pentru noi ca indicatorul să fie obținut la o anumită frecvență și ca sistemul să ofere o interfață pentru stocarea lui în baza de date. Toate funcțiile rămase ale sistemului sunt legate de interfața cu utilizatorul și furnizarea de stocare a informațiilor în baza de date sau regăsirea acesteia.

Bazăm sistemul pe următoarele soluții arhitecturale:

  • interfața cu utilizatorul ( GUI) sistemul este construit pe baza modelului obiect Delphi;
  • interfața cu SGBD se bazează pe modelul obiect Delphi;
  • Un SGBD relațional este folosit ca SGBD.

Când proiectăm un sistem, trebuie să definim: clase pentru a reprezenta interfața cu utilizatorul ( clase de limită); clase de control care implementează logica sistemului ( clase de control); clase de entități pentru afișarea structurii de stocare a informațiilor ( clase de entitate).

Clasele de entități pe care le-am proiectat sunt prezentate în Fig. 4 .

Din modelul obiect al claselor de entități, am obținut un model fizic de date pentru un SGBD relațional și am asigurat generarea acestuia pentru un SGBD anume. Omitem aici detaliile despre cum se poate face acest lucru în mediul Rational Rose.

Deoarece plănuim să construim o interfață grafică bazată pe modelul obiect Delphi, este rezonabil să presupunem că clasele pentru reprezentarea interfeței cu utilizatorul (clasele limită ) poate fi obținut prin prototiparea interfeței cu utilizatorul în mediul Delphi. Clase interfață cu utilizatorul (clase limită ) sunt proiectate pentru forma prezentată în fig. 5 .

În diagrama de clasă, am eliminat atribute și operații pentru toate clasele modelului obiect Delphi: deoarece există câteva zeci de aceste atribute și operații în fiecare clasă, diagrama în acest caz ar deveni vastă. Diagrama arată clar care clase de model de obiecte Delphi sunt folosite pentru a reprezenta elementele interfeței cu utilizatorul și ce reprezintă ele exact. Ar trebui să excludeți imediat din reprezentarea modelului TGroupBoxȘi TLabel ca elemente neimportante din punct de vedere arhitectural. Diagrama de clase pentru formularul de editare a tabelului este prezentată în Fig. 8 .

Pe lângă fereastra principală, avem nevoie și de o interfață (GUI) pentru menținerea unei baze de date cu pacienți, tipuri de indicatori și unități de măsură. Pentru aceasta intenționăm să folosim o formă standard de editare a tabelelor bazată pe componente standard Delphi. Să desenăm această formă în Delphi și să o transformăm în modelul Rational Rose (Fig. 9).

Folosind mecanismul de moștenire, obținem toate celelalte formulare de ecran din formularul de editare tabelar. Un exemplu despre cum va arăta directorul de tip de observație este prezentat în Fig. 10 .

Deci, cu aspect Am definit complet interfața cu utilizatorul, iar acum ne putem concentra pe implementarea logicii aplicației. Pentru comoditate (dar nu luați acest lucru ca o practică standard!) Vom folosi o clasă de interfață deja existentă ca clasă de control TMainForm.

Clasa TMainForm trebuie să furnizeze:

  • navigarea între ecrane, gestionarea evenimentelor de clic pe buton pentru a afișa alte formulare;
  • completarea listelor derulante, pacienți, indicatori, unități de măsură;
  • calcularea automată a unității de măsură după tipul de indicator;
  • selectarea unui pacient după numărul cardului;
  • selectarea unui număr de card pentru pacient;
  • calculul și afișarea ultimei valori a indicatorului.

Să creăm operații în mediul Rational Rose pentru a implementa funcțiile clasei TMainForm descrise mai sus (Fig. 11).

Operațiile clasei TMainForm ar trebui împărțite în două grupuri: calcule și reacții la evenimente. Operațiuni care se termină cu Clic sau Schimbare, și FormShow- reacții la evenimente, restul sunt calcule.

Operațiunile trebuie să implementeze următoarele:

  • FillPatientLis t - completarea listei derulante de pacienti;
  • FillMeasureList- completarea listei derulante de unitati de masura;
  • FillObservList- completarea listei derulante de tipuri de observații;
  • CalcObservVal- calculul ultimei valori observate;
  • ChPatientByCard- cautarea unui pacient dupa numarul cardului;
  • ChCardByPatient- cautare numarul cardului dupa pacient;
  • ChMeasureByObserv- returnează unitatea de măsură pentru un anumit tip de observație;
  • CardValChange- reacția la schimbarea numărului cardului;
  • PatientChComboChange- reacția la selectarea unui nou pacient pe listă;
  • ObservTypeComboChange- reacția la alegerea tipului de observație;
  • GetValueButtonClick- reacția la apăsarea butonului de calcul al valorii;
  • PatientDictClick- răspuns la apăsarea butonului Pacienți;
  • ObservTypeDictClick- reacția la apăsarea butonului Tipuri de observații;
  • MeasureDictClick- reacția la apăsarea butonului Unități de măsură;
  • FormShow- procesare atunci când formularul este afișat pentru prima dată pe ecran.

Iar ultimul lucru necesar pentru a finaliza proiectarea sunt clasele de control pentru a implementa interacțiunea cu baza de date. Fără acestea, nu este posibilă nici completarea bazei de date, nici implementarea operațiunilor de decontare a clasei de control TMainForm. Ca și în cazul claselor de interfață, vom folosi mediul Delphi pentru a proiecta o clasă de control pentru interacțiunea cu baza de date - TDataModule1, apoi efectuați potrivirea modelului. Noul modul pentru interacțiunea cu baza de date este prezentat în Fig. 12 .

Bazat pe obiect QueryPatient, QueyObType, Măsuri de interogareȘi PatientDataSource, ObTypeDataSource, MeasureDataSource se implementează lucrul cu o bază de date de pacienți, tipuri de observații și unități de măsură - într-un mod standard Delphi, bazat pe utilizarea unei perechi de obiecte de clasă TQuery, TSursă de dateși interacțiunea lor cu clasele GUI. ObservDataSource folosit pentru a accesa informații despre observațiile efectuate. Pentru a descrie interacțiunea claselor de control TDataModule1Și TMainForm ar trebui să creați mai multe diagrame de interacțiune legate de executarea interogărilor necesare în baza de date (din cauza domeniului limitat al articolului, omitem aceste diagrame).

Rețineți că în procesul de adăugare de noi module și clase la sistem și de armonizare a modelelor, am primit automat un model component al sistemului (Fig. 13).

Deci, să rezumam pe scurt. Ca urmare a utilizării comune a Rational Rose și Delphi, am primit:

  • clase de interfață și control organizate în pachete;
  • modelul component al sistemului.

Clasele de entități și diagramele care descriu dinamica sunt concepute în Rational Rose. Pe viitor, modelele Rational Rose ne oferă o bază pentru documentarea proiectului, urmărirea stării și organizării acestuia testarea functionala. Proiectul obtinut in Delphi este, la randul sau, baza implementarii. Pe parcursul procesului de implementare, proiectul este coordonat periodic în Delphi cu modelul Rational Rose bazat pe tehnologie dus-întors, care vă permite să păstrați modelele la zi și să le dezvoltați fără probleme în conformitate cu cerințele modificate pentru sistem.

Concluzie

În concluzie, dorim să atragem atenția asupra acelor etape în care, în opinia noastră, utilizarea în comun a Delphi și a Rational Rose are cel mai mult sens din punct de vedere tehnologic.

in primul rand , este crearea unui prototip de interfață cu utilizatorul. Creare rapidă formularele din mediul Delphi vă permite, de asemenea, să obțineți rapid un model de clase de interfață în Rose, să evidențiați pe baza acestuia punctele arhitecturale fundamentale (de exemplu, comportament obișnuit, elemente tipice GUI, redundanță) și, de asemenea, să comparați clasele de interfață cu cerințele funcționale pentru sistem.

În al doilea rând , aceasta este crearea claselor de control în modelele Rational Rose cu generarea ulterioară a codului în Delphi. Clasele de control sunt prezentate mai clar în mediul Rational Rose când se utilizează UML (în Delphi pot fi „neclare” între clasele mari de interfață).

Și, în sfârșit, În al treilea rând , acesta este stadiul implementării codului de program în care pot fi aduse modificări modelului legate de problemele de implementare. Coordonarea periodică a modelelor în această etapă permite dezvoltatorului să se asigure că deciziile arhitecturale fundamentale nu au suferit modificări semnificative și, de asemenea, să aibă modele actualizate care reflectă starea actuală de dezvoltare.

ComputerPress 4"2001

Când frumusețea regală trandafir cățărător „Elf” înflorește, va tăia respirația oricui. Ca un basm, inflorescențele deschise apar într-un nor de lumină frumos, alb ca zăpada de departe, și cu o prospețime plăcută de lămâie de aproape. Această splendoare de durată încântă întregul sezon și evocă gânduri romantice. Mâna se întinde spre floare, dar nu pentru a o culege, ci doar pentru a atinge creația nepământeană și a inspira aroma fascinantă.

Spiridusul nu poate trăi fără iubire, dar este și imposibil să nu-l iubești.

Trandafirul cățărător „Elf” a fost crescut de compania germană Tantau (seria „Trandafiri nostalgici”) în 2000 și este un trandafir de grădină cu flori mari (LCI) modern.

Crescătorii au creat o plantă cu o combinație rafinată între o siluetă elegantă și un romantism nostalgic blând. Aici numele în sine este în consonanță cu aspectul său, ca și cum ar ieși dintr-un ținut al zânelor.

Descriere

Tufa este viguroasă (până la 280 cm înălțime, mai rar până la 250) și erectă. Lăstarii cățărători ajung uneori la trei metri.

Florile sunt mari, de până la 14 cm în diametru, dens duble. Fiecare pahar de flori conține uimitor până la 57 de petale. Culoarea lor unică de fildeș nobil la margini trece treptat la un verde pal cu o nuanță de lămâie la bază. Poate de aceea aroma este originală - delicată, ușor fructată, vrăjitoare și atrăgătoare.

În condiții favorabile, în timpul înfloririi în masă, un peduncul aruncă simultan până la cinci flori într-o inflorescență umbelata.

Frunzele sunt mari, verde strălucitor. Soarele iubește să se liniștească în reflexia frunzișului lucios.

Tehnologia agricolă

  1. Condiții. Trandafirul cățărător „Elf” are nevoie de locuri calde, însorite. Solul trebuie să fie fertil și ușor, ușor acid sau neutru. Principalul lucru este că reține bine umiditatea. La fel ca toate rudele sale, are nevoie de hrănire regulată (balegar de cal, de exemplu) și de adăpost pentru iarnă.
  2. Aterizare. Primavara, inainte de plantare, rasadul este inmuiat in apa timp de o zi. În acest timp, sistemul de rădăcină va avea timp să devină saturat de umiditate. Apoi, lăstarii slabi ai plantei sunt tăiați și sunt lăsați accutanul generic strong buy. Rădăcinile deteriorate și lungi sunt tăiate.
  3. Durabilitate. Soiul „Elf” este destul de rezistent la îngheț și chiar reușește să păstreze frunzișul. Dar la temperaturi foarte scăzute este posibilă înghețarea. Nu suferă de mucegai sau pete negre. Dar florilor nu le plac ploaia și umbra.
  4. A sustine. Dacă trandafirul este ghidat de-a lungul unui suport subțire, discret, atunci lăstarii laterali puternici vor crea imaginea unui copac în creștere cu mulți muguri magnifici.

„Elf” arată perfect într-o grădină romantică sub formă de arcade, decorează pereții și foișoarele. Cascadele de lămâie-cremă se vor pleca pitoresc sub greutatea florilor mari, ale căror petale au fost sculptate de un „maestru” priceput. Acest trandafir este pentru iubitorii de romantici și cei care au un simț extraordinar al stilului. Și dacă plantezi verbena, catnip și lavandă la picioarele sale, atunci frunzele lor delicate și inflorescențele aerisite și luxuriante vor încadra și completa frumos frumusețea trandafirului cățărător.

Planta este în floare luxuriantă, ca niște elf de basm pline de emoții strălucitoare. Trandafirul „Elf” poate fi schimbător și capricios, în același timp este plin de farmec, capacitatea de a vrăji și de a schimba lumea cu frumusețea ei. Tufa de basm aduce o notă nostalgică vieții noastre de zi cu zi și este atât de frumos.


Materialul a fost publicat în martie
numărul revistei „Programator” pentru anul 2002

Companie

Software rațional De câțiva ani încoace este lider în crearea de instrumente pentru proiectarea, dezvoltarea, testarea și întreținerea software-ului. Produsul principal din linie Rational este instrumentul Rational Rose CASE. Trandafir rațional acceptă modelarea vizuală orientată pe obiecte ( UML ), acceptă generarea de cod și inginerie inversă (construirea unui model din codul programului) pentru multe limbaje de programare, vă permite să construiți un model de obiect al modelului dezvoltat sistem software, definiți specificațiile claselor, obiectelor, atributelor și operațiilor (pentru mai multe detalii, vezi „Programator” nr. 2, 3, 5/6 pentru 2001). Trandafir rațional are toate caracteristicile necesare pentru proiectarea unei arhitecturi de sistem de orice scară, ideea de utilizare Trandafir cu un sistem de programare atât de puternic și popular ca Delphi . Livrare Standard Trandafir rațional nu se poate lucra cu Delphi, dar Rational Software rulează un program pentru a sprijini furnizorii terți de software bridge ( Legături) între Rose și alte instrumente de dezvoltare. Ca parte a acestui program, compania Sisteme de ansamblu a fost dezvoltat un program de poduri Rose Delphi Link (RDL) care leagă Rational Rose și Delphi . Functii principale RDL - generare de cod și inginerie inversă. Trebuie amintit că generat RDL codul nu conține implementarea funcționalității! Sunt generate doar elemente declarative: definiții de clase, interfețe, înregistrări, tipuri, directive de vizibilitate etc.

Distributie

Rose Delphi Link poate fi descărcat gratuit de pe site Software-ul Rational (http://ftp.rational.com/public/rose/Links/RoseDelphiLink3Setup.exe ), dimensiune – aproximativ 8 MB. Instalare RDL standard, nu provoacă dificultăți. După instalarea programului în Rational Rose apare un nou element Ensemble Tools ® Rose Delphi Link în meniul Instrumente (Fig. 1).

1. Element de meniu RDL

Înainte de a trece la revizuire

Rose Delphi Link , permiteți-mi să vă reamintesc principalele etape ale muncii în mediu Trandafir rațional . De obicei, se utilizează următoarea abordare:
  1. Determinarea cerințelor de sistem și construirea unui model de interacțiune între elementele sistemului (
Diagrama de caz de utilizare și diagrama de colaborare ). Pentru detalii Cazul de utilizare utilizat Diagrama secvenței . Aceste diagrame afișează obiecte de domeniu implicate în procesele de afaceri. Aceste diagrame nu afectează codul generat.
  • Construirea unui model hardware al sistemului (
  • Diagrama de implementare ). Această diagramă prezintă modelul de sistem în implementarea hardware. Diagrama nu afectează codul generat R.D.L.
  • Dezvoltarea unui model obiect al sistemului (definirea claselor, interacțiunile acestora, atribute, operații). În paralel cu dezvoltarea unei diagrame de clasă, de regulă, se dezvoltă o diagramă de componente (
  • Diagrama componentelor ), care afișează interacțiunea fișierelor, modulelor și bibliotecilor suplimentare utilizate în sistem. De asemenea, diagrama componentelor nu afectează generarea codului.
  • Generarea codului programului.
  • Numai diagramele de clasă afectează generarea de cod, așa că în scopul acestui articol vom lua în considerare numai diagramele de secțiuni

    Vedere logică . Caracteristicile construirii altor diagrame sunt omise.

    Etapele de proiectare enumerate în mediu

    Trandafir rațional folosit pentru a dezvolta un model și a genera cod în diferite limbi suportate de mediu Trandafir. Dar în Delphi există o caracteristică care distinge semnificativ dezvoltarea în Delphi din dezvoltarea în alte medii de programare: programarea interfeței cu utilizatorul. Nu este un secret că în Delphi Dezvoltarea majorității programelor începe cu proiectarea interfeței cu utilizatorul și cu programarea ulterioară - modificările sale semnificative. Prin urmare, utilizați abordarea standard Trandafir rațional nu foarte convenabil. Pentru a rezolva această problemă compania Sisteme de ansamblu propune următoarea metodologie de proiectare:

    Figura 2. Metodologia de proiectare folosind

    RDL

    Ideea principală a acestei abordări este utilizarea ingineriei inverse (

    Inginerie dus-întors ): toate modificările efectuate la nivel de cod în Delphi , sunt afișate în modelul obiect încorporat Trandafir , și invers, la schimbarea claselor, metodelor etc. în modelul obiect Trandafir , respectiv,Codul programului este corectat. Observați perechea de săgeți care leagă al treilea și al patrulea bloc. Aceste săgeți reprezintă procesul de inginerie inversă.

    Să ne uităm la fereastra principală

    Rose Delphi Link (Fig. 3). Interfața este destul de simplă, conține:
    • un meniu care conține comenzi pentru lucrul cu proiectul, setarea opțiunilor și apelul de ajutor;
    • panouri pe care sunt afișate structurile ierarhice ale modelelor sub formă de arbori
    Trandafir și Delphi;
  • buton de actualizare a arborilor de obiecte, butoane de inginerie inversă (¬
  • Actualizați toate) și proiectare directă, adică generare de cod (Update All®).

    Figura 3. Bazele

    Fereastra Rose Delphi Link

    Fereastra principala

    RDL este un copil al ferestrei principale Trandafir rațional și este situat în mod constant deasupra acestei ferestre, minimizată astfel la fel ca o fereastră pentru copii, care este, fără îndoială, foarte convenabilă.

    Înainte de a privi un exemplu specific, să aruncăm o privire mai atentă la elementele din meniu

    Rose Delphi Link.

    Fișier ® Deschideți proiect – servește la deschiderea înăuntru RDL proiect creat Delphi . Când deschideți un proiect într-o fereastră RDL Se afișează arborii de obiecte ai proiectului deschis.

    File® Proiect nou– la selectarea acestui element de meniu RDL sugerează crearea unuia gol Delphi -proiect. Fișierul proiect creat în acest caz conține doar elemente declarative,necesare pentru programul minim Delphi (program, început, sfârșit ). Ar trebui creat un nou proiect dacă programul nu conține o interfață grafică cu utilizatorul, de exemplu, o bibliotecă dinamică. Adevărat, în acest caz, va trebui să se facă o ajustare la codul generat - înlocuiți program pe bibliotecă . Folosind meniul contextual puteți crea module ( unitate ) și directoare suplimentare pentru module. Modulele create în acest fel conțin, de asemenea, doar o implementare minimă ( utilizări, interfață, implementare, final ). După crearea modulului, în timpul generării ulterioare a codului, în secțiunea utilizări o nouă declarație de modul este adăugată la fișierul de proiect.

    Elemente de meniu VedereȘi Ajutorsunt standard și nu necesită descriere în domeniul de aplicare al acestui articol.

    Acum să folosim metodologia de proiectare de mai sus și să dezvoltăm un program și modelul corespunzător

    Trandafir . De exemplu, să luăm un program care umple două matrice numerice de dimensiunea 5 cu 5 numere aleatorii, precum și implementarea unor funcții matematice pentru prelucrarea acestora. Programul trebuie să îndeplinească următoarele funcții:
    • Umpleți tablourile cu numere aleatorii cuprinse între 1 și 10;
    • Calculați suma elementelor fiecărui tablou;
    • Determinați media aritmetică a elementelor;
    • Ștergeți matricele (inițializați-le la zero).

    Să începem cu dezvoltarea interfeței cu utilizatorul în

    Delphi . Ca urmare a unor acțiuni simple cu mouse-ul, am primit următorul program, care nu efectuează încă nicio acțiune (Fig. 4).

    Figura 4. Interfața programului dezvoltat

    Să salvăm acest proiect cu numele de module sugerate

    Delphi implicit, deschide proiect nou Rational Rose și lansează Delphi Rose Link . Selectați un element de meniuProiect deschis,și deschideți-o pe cea doar salvată Proiectul Delphi. În fereastra RDL vor fi afișați arborii obiectului model Rose și proiectul Delphi (Fig. 5).

    Figura 5. Proiect

    Delphi deschis în RDL

    Arborele de obiecte din stânga este obiectele model

    Trandafir , arborele potrivit sunt obiectele declarate în codul sursă Delphi . Observați semnele de exclamare roșii din stânga pictogramelor reprezentând obiecte. Ele indică diferențe între cod Modelul Delphi și Rose . Toate pictogramele sunt acum bifate, deoarece modelele sunt introduse Trandafir nu există încă deloc.

    Următorul pas este generarea modelului

    Trandafir după codul sursă. Pentru a începe generarea, trebuie să apăsați butonul ¬Actualizați toate.În cazul unei generații de succes semne de exclamare obiectele dispar, ceea ce înseamnă că modelul Trandafir pentru fiecare obiect corespunde codului sursă Delphi . Pentru a vizualiza istoricul mesajelor de generare, trebuie să selectați elementul de meniuVizualizați ® Mesaje. Un jurnal destul de detaliat al mesajelor va fi afișat în fereastra care se deschide. RDL , rezultat la generarea unui model sau cod sursă. Rose Delphi Link , și în browserul de obiecte Rose, selectează ramura Logical View . Vedem că apar două pachete:<> Unitatea 1, care conține modelul obiect al codului din modul Unit1.pas, și Referințe externe,care conțin obiecte Delphi , care sunt declarate în module din afara proiectului curent (obiecte bibliotecă VCL).

    Acum să-l deschidem în mediu

    Trandafir diagrama de clase corespunzătoare modulului Unitatea 1 ( Vizualizare logică ® Unit1 ® Prezentare generală). În forma ei inițială, diagrama prezintă un model de obiecte ușor confuz, pe care îl vom pune în ordine prin aranjarea atentă a obiectelor în funcție de ierarhia lor (Fig. 6).

    Figura 6. Modelul obiect al modulului

    Unitatea 1

    Atunci când interfața programului în curs de dezvoltare este destul de complexă și include mai mult de o duzină de elemente, modelul obiect devine oarecum supraîncărcat. Pentru a descărca modelul, puteți elimina unele elemente neesențiale din model. Trebuie doar să ștergeți elemente din diagramă, deoarece în acest caz sunt eliminate doar vizual. Atunci când obiectele sunt șterse din browser, acestea sunt șterse definitiv, iar acest lucru implică o modificare a conținutului generat.

    RDL cod.

    Acum să trecem la pasul următor: dezvoltarea unui model obiect care implementează funcționalitatea programului specificată mai sus. Vom implementa clasele, atributele și metodele acestora într-un modul separat; în modulul principal vom crea instanțe ale claselor, iar în handlerul de evenimente de apăsare a butonului vom scrie apeluri la metodele acestor clase.

    Să creăm un nou modul. Acest lucru se poate face și în

    Delphi și Rose și RDL , dar pentru puritatea experimentului vom crea totul numai în R.D.L. În Trandafir activați fereastra RDL și faceți clic Click dreapta mouse-ul peste elementul rădăcină din arborele obiect model Trandafir - în cazul nostru este Model1.mdl . În meniul contextual, selectațiUnitate ® nouă.Se va deschide fereastra editorului de componente ( Editor de componente ) (Fig. 7). Pe filaGeneraleste indicat numele modulului ( Unitate 2), și un comentariu pentru modulul creat, care va fi inserat în modul ca comentariu în timpul generării codului. Pe filaDetaliueste indicat tipul ( drăguț ) și calea către fișier sursă. Pe filaPrevizualizare codputeți vedea codul care va fi generat RDL pentru acest modul. OprițiPermite actualizări de cod/modelprevine generarea de cod și actualizarea modelului pentru elementul selectat.

    Figura 7. Editor de componente

    După apăsarea butonului

    Binevedem ce este în fereastră RDL a apărut o pictogramă care indică un nou modul, iar lângă acesta Semn de exclamare, semnalând că modelul Codul Rose și Delphi nesincronizat. Să actualizăm codul Delphi făcând clic pe un buton Update All®.

    Acum trebuie să treci la

    Delphi . Vedem o fereastră care avertizează că modulul a fost schimbat (Fig. 8). Pentru a descărca modulul actualizat, faceți clic peBine.

    Figura 8. Mesaj

    Delphi despre modificarea fișierului de proiect

    Acum să deschidem modulul nou generat

    Unitatea2.pas . Puteți verifica dacă generarea codului a avut succes - totul este necesar Cuvinte cheie, comentariu introdus. Următorul pas este modelarea claselor și a metodelor acestora în acest modul. Să mergem la Trandafir și activați fereastra RDL . În arborele de obiecte vom afișa un meniu contextual asupra obiectului Unitate 2 și selectați articoleNoua clasă ®. Apare fereastra editorului de clase ( Editor de clasă ) (Fig. 9). Pe filaGeneraltrebuie să specificați numele clasei ( Nume), Natură, Vizibilitate ) și un comentariu de clasă ( Documentație ). În cazul nostru, clasa va fi chemată TMassiv , domeniul de aplicare este Public

    Figura 9. Editor de clasă

    Pentru a crea toate metodele și atributele unei clase vom folosi elementul de meniu

    Nouîn meniul contextual al clasei din arborele de obiecte RDL . Editorii de atribute și metode sunt practic similare cu editorul de clasă, așa că vom omite detaliile de creare. Să creăm următoarele atribute și metode (toate metodele cu directive de vizibilitate Public, atribut M are aspectul Privat):

    M: matrice de numere întregi;

    ; // Inițializați matricea

    procedura FillMassiv

    ; // Umplerea matricei cu numere aleatorii

    procedura CalcSum

    ; // Calculați suma elementelor matricei

    procedura CalcSr

    ; // Calculați valoarea medie a elementelor matricei

    function GetElement(X, Y: integer): Integer; //

    Obținerea elementului de matrice (x,y)

    Să creăm și o metodă pentru clasă

    TForm 1, care va umple componentele TMemo , situate pe formular, elemente din tablouri:

    procedura GetMassiv;

    Există ceva special în crearea de metode cu parametri. Mai întâi, metoda este creată în mod obișnuit, apoi, în arborele de obiecte

    RDL , în meniul contextual al metodei pentru care vi se cere să specificați un parametru, selectați elementulParametru nou ®și sunt indicate numele parametrului, tipul acestuia și un comentariu pentru acesta.

    După crearea clasei, aruncați o privire la diagrama de clasă pentru modul

    Unitatea 2în Trandafir – clasa noastră este mapată conform specificației UML (Fig. 10).

    Figura 10. Diagrama de clasă cu clasa creată

    Deci, clasa a fost creată, sau mai degrabă shell-ul ei, fără implementare încă. Acum în modulul principal

    Unitatea 1 Să creăm două instanțe ale acestei clase. Să-i declarăm ca M1 și M2 în secțiunea Public a clasei TForm 1. Acest lucru se realizează prin selectarea elementelor necesare în meniul contextual al arborelui obiect și specificarea parametrilor în editorul de atribute. Diagrama modificată unde în clasă TForm 1 prezintă instanțe declarate ale clasei, prezentate în Fig. unsprezece.

    Figura 11. Instanțele de clasă declarate într-o secțiune

    clasă publică TForm1

    Deci, modelul este construit și acum trebuie să generăm codul final. La fereastră

    Faceți clic pe RDL Actualizează, actualizează tot®si mergi la miercuri Delphi . Acum trebuie să scriem cod care implementează funcționalitatea și să compilam programul. Când populați metode cu cod, uneori trebuie să adăugați variabile locale sau globale. Acest lucru se poate face în RDL , dar este mai bine să implementați aceste variabile în cod și apoi să actualizați modelul Trandafir prin codul sursă Delphi (¬ Actualizați toate). Dacă unele elemente au fost eliminate din model, dar sunt deja implementate în cod, acest cod este conținut între directivele compilatorului($IFDEF DELETED) și ($ENDIF) .

    După implementarea întregului cod sursă în

    Delphi înapoi la RDL și faceți din nou inginerie inversă apăsândReîmprospătaȘi ¬ Actualizați toate. Clasa TForm 1 s-a schimbat - au apărut metode în el - handlere de evenimente butoane (Fig. 12). În cazul nostru, aceasta este versiunea finală a diagramei de clasă și a întregului model în ansamblu.

    Figura 12. Diagrama finală de clasă pentru modul

    Unitatea 1

    Final sursă programe și model construit

    Trandafir poate fi descărcat de pe site-ul revistei.

    În exemplul luat în considerare, am urmat metodologia de dezvoltare a aplicației propusă de dezvoltator

    Rose Delphi Link , iar ca rezultat am primit un model obiect al sistemului. Toate clasele și diagramele care descriu activitățile sistemului au fost concepute în Trandafir rațional folosind programul Rose Delphi Link.

    Deci, să evidențiem principalele avantaje ale partajării

    RDL și Rational Rose:
    • crearea rapidă și convenabilă a unui prototip de interfață cu utilizatorul;
    • oportunitatea de a obține model detaliat clase de interfață și, pe baza acesteia, evidențiază caracteristicile arhitecturale fundamentale ale sistemului;
    • capacitatea de a compara clasele cu cerințele funcționale ale sistemului;
    • capacitatea de a crea clase de control în modele
    • Trandafir rațional urmată de generarea codului în Delphi;
    • suport deplin al ciclului de viață al sistemului software dezvoltat atunci când se utilizează alte produse ale companiei
    • Raţional.

    Astfel, cu coordonarea periodică bazată pe tehnologie de inginerie inversă, se asigură conformitatea cu modelul

    Codul Rose și Delphi , care permite dezvoltatorului să se asigure că soluțiile arhitecturale nu au suferit modificări semnificative și, de asemenea, să aibă modele documentate actualizate care reflectă starea reală a dezvoltării proiectului.

    Literatură:

    1. Vendrov A.M. Proiectare de software pentru sisteme informatice economice. – M.: Finanțe și Statistică, 2000.
    2. Trofimov S.A.
    3. CAZ -tehnologii: munca practica V Trandafir rațional – „Editura BINOM”, 2001
    4. Butch G., Rambo D., Jacobson A. Language
    5. UML . Ghidul utilizatorului: Per. din engleza – M.

    Rational Software este lider în proiectarea, dezvoltarea, testarea și instrumentele de întreținere software de câțiva ani. Produsul principal din linia Rational este instrumentul Rational Rose CASE. Rational Rose acceptă modelarea vizuală orientată pe obiecte (UML), acceptă generarea de cod și inginerie inversă (construirea unui model din codul programului) pentru multe limbaje de programare, vă permite să construiți un model de obiect al sistemului software în curs de dezvoltare, să definiți specificațiile claselor, obiecte, atribute și operații (pentru mai multe detalii, vezi „Programator” nr. 2, 3, 5/6 pentru 2001).

    Deoarece Rational Rose are toate caracteristicile necesare pentru proiectarea arhitecturii unui sistem de orice scară, ideea de a utiliza Rose cu un sistem de programare atât de puternic și popular precum Delphi se sugerează. Rational Rose nu vine standard cu Delphi, dar Rational Software are un program pentru a sprijini programele terțe (Links) între Rose și alte instrumente de dezvoltare. Ca parte a acestui program, Ensemble Systems a dezvoltat programul de punte Rose Delphi Link (RDL) care leagă Rational Rose și Delphi. Principalele funcții ale RDL sunt generarea de cod și inginerie inversă. Trebuie reținut că codul RDL generat nu conține implementarea funcționalității! Sunt generate doar elemente declarative: definiții de clase, interfețe, înregistrări, tipuri, directive de vizibilitate etc.


    Figura 1. Element de meniu RDL

    Înainte de a trece la revizuirea Rose Delphi Link, permiteți-mi să vă reamintesc principalele etape ale lucrului în mediul Rational Rose. De obicei, se utilizează următoarea abordare:

    1. Determinarea cerințelor de sistem și construirea unui model de interacțiune între elementele sistemului (Use Case Diagram and Collaboration Diagram). Diagrama secvenței este utilizată pentru a detalia cazul de utilizare. Aceste diagrame afișează obiecte de domeniu implicate în procesele de afaceri. Aceste diagrame nu afectează codul generat.
    2. Construirea unui model hardware al sistemului (Deployment Diagram). Această diagramă prezintă modelul de sistem în implementarea hardware. Diagrama nu afectează codul generat de RDL.
    3. Dezvoltarea unui model obiect al sistemului (definirea claselor, interacțiunile acestora, atribute, operații). În paralel cu dezvoltarea unei diagrame de clasă, de regulă, este dezvoltată o diagramă de componente, care afișează interacțiunea fișierelor, modulelor și bibliotecilor suplimentare utilizate în sistem. De asemenea, diagrama componentelor nu afectează generarea codului.
    4. Generarea codului programului.
      Numai diagramele de clasă afectează generarea de cod, așa că în scopul acestui articol vom lua în considerare numai diagramele din secțiunea Vizualizare logică. Caracteristicile construirii altor diagrame sunt omise. Următorii pași de proiectare Rational Rose sunt utilizați pentru a dezvolta modelul și a genera cod în diferitele limbi acceptate de Rose. Dar Delphi are o caracteristică care distinge semnificativ dezvoltarea în Delphi de dezvoltarea în alte medii de programare: programarea interfeței cu utilizatorul. Nu este un secret pentru nimeni că în Delphi dezvoltarea majorității programelor începe cu proiectarea interfeței cu utilizatorul și cu programarea ulterioară - modificările sale semnificative. Prin urmare, utilizarea abordării standard Rational Rose nu este complet convenabilă. Pentru a rezolva această problemă, Ensemble Systems oferă următoarea metodologie de proiectare:


    Figura 2. Metodologia de proiectare folosind RDL

    Ideea principală a acestei abordări este folosirea ingineriei inverse (ingineria dus-întors): toate modificările efectuate la nivelul codului programului în Delphi sunt reflectate în modelul obiect construit în Rose și invers, când clasele, metodele etc. .sunt schimbate. în modelul obiect Rose, codul programului este ajustat corespunzător. Observați perechea de săgeți care leagă al treilea și al patrulea bloc. Aceste săgeți reprezintă procesul de inginerie inversă.
    Să ne uităm la fereastra principală Rose Delphi Link (Fig. 3). Interfața este destul de simplă, conține:

    • un meniu care conține comenzi pentru lucrul cu proiectul, setarea opțiunilor și apelul de ajutor;
    • panouri care afișează structurile ierarhice ale modelelor Rose și Delphi sub formă de arbori;
    • buton pentru actualizarea arborilor de obiecte, butoane pentru inginerie inversă (Update All) și inginerie directă, de ex. generarea codului (Actualizare toate->).


    Figura 3. Fereastra principală Rose Delphi Link

    Fereastra RDL principală este un copil al ferestrei principale Rational Rose și este situată permanent deasupra acestei ferestre și este redusă la minimum la fel ca o fereastră copil, ceea ce este, fără îndoială, foarte convenabil.
    Înainte de a privi un exemplu specific, să aruncăm o privire mai atentă la elementele de meniu Rose Delphi Link.
    File -> Open Project - servește la deschiderea proiectului Delphi creat în RDL. Când deschideți un proiect, fereastra RDL afișează arborele de obiecte a proiectului pe care îl deschideți.
    Fișier -> Proiect nou - atunci când selectați acest element de meniu, RDL oferă să creeze un proiect Delphi gol. Fișierul proiect creat în acest caz conține doar elementele declarative necesare unui program Delphi minim (program, start, end). Ar trebui creat un nou proiect dacă programul nu conține o interfață grafică cu utilizatorul, de exemplu, o bibliotecă dinamică. Cu toate acestea, în acest caz, va trebui să se facă o ajustare la codul generat - înlocuiți programul cu biblioteca. Folosind meniul contextual, puteți crea unități și directoare suplimentare pentru module. Modulele create astfel conțin și o implementare minimă (utilizări, interfață, implementare, final). După crearea unui modul, în timpul generării ulterioare a codului, o declarație a unui nou modul este adăugată la secțiunea de utilizări a fișierului de proiect.
    Elementele de meniu Vizualizare și Ajutor sunt standard și nu trebuie descrise în acest articol.

    Acum vom folosi metodologia de proiectare de mai sus și vom dezvolta un program și modelul Rose corespunzător. De exemplu, să luăm un program care umple două matrice numerice de dimensiunea 5 cu 5 cu numere aleatoare și, de asemenea, implementează unele funcții matematice pentru procesarea lor. Programul trebuie să îndeplinească următoarele funcții:

    • Umpleți tablourile cu numere aleatorii cuprinse între 1 și 10;
    • Calculați suma elementelor fiecărui tablou;
    • Determinați media aritmetică a elementelor;
    • Ștergeți matricele (inițializați-le la zero).

    Să începem cu dezvoltarea interfeței cu utilizatorul în Delphi. Ca urmare a unor acțiuni simple cu mouse-ul, am primit următorul program, care nu efectuează încă nicio acțiune (Fig. 4).


    Figura 4. Interfața programului dezvoltat

    Să salvăm acest proiect cu numele implicite ale modulelor oferite de Delphi, să deschidem un nou proiect Rational Rose și să lansăm Delphi Rose Link. Să selectăm elementul de meniu Deschidere proiect și să deschidem proiectul pe care tocmai l-am salvat în Delphi. Fereastra RDL va afișa arborii de obiecte ai modelului Rose și a proiectului Delphi (Fig. 5).


    Figura 5. Proiectul Delphi deschis în RDL

    Arborele de obiecte din stânga sunt obiectele model Rose, arborele din dreapta sunt obiectele declarate în codul sursă Delphi. Observați semnele de exclamare roșii din stânga pictogramelor reprezentând obiecte. Ele indică diferențele dintre codul Delphi și modelul Rose. Toate pictogramele sunt bifate acum, deoarece modelul nu există încă în Rose.
    Următorul pas este generarea modelului Rose din codul sursă. Pentru a începe generarea, trebuie să faceți clic pe butonul Actualizare tot. Dacă generarea are succes, semnele exclamării de pe obiecte dispar, ceea ce înseamnă că modelul Rose pentru fiecare obiect se potrivește cu codul sursă Delphi. Pentru a vizualiza istoricul mesajelor generate, selectați elementul de meniu Vizualizare -> Mesaje. Fereastra care se deschide va afișa un jurnal destul de detaliat al mesajelor RDL ieșite atunci când se generează un model sau un cod sursă.
    Să minimizăm Rose Delphi Link și să selectăm ramura Logical View din Rose Object Browser. Vedem că apar două pachete:<>Unit1, care conține modelul obiect al codului din modulul Unit1.pas, și Referințe externe, care conține obiecte Delphi care sunt declarate în module din afara proiectului curent (obiecte bibliotecă VCL).
    Acum să deschidem diagrama de clasă corespunzătoare modulului Unit1 din mediul Rose (Vizualizare logică -> Unit1 -> Prezentare generală). În forma ei inițială, diagrama prezintă un model de obiecte ușor confuz, pe care îl vom pune în ordine prin aranjarea atentă a obiectelor în funcție de ierarhia lor (Fig. 6).


    Figura 6. Modelul obiect al modulului Unit1

    Atunci când interfața programului în curs de dezvoltare este destul de complexă și include mai mult de o duzină de elemente, modelul obiect devine oarecum supraîncărcat. Pentru a descărca modelul, puteți elimina unele elemente neesențiale din model. Trebuie doar să ștergeți elemente din diagramă, deoarece în acest caz sunt eliminate doar vizual. Atunci când obiectele sunt șterse din browser, acestea sunt șterse definitiv, iar acest lucru implică o modificare a codului RDL generat.
    Acum să trecem la pasul următor: dezvoltarea unui model obiect care implementează funcționalitatea programului specificată mai sus. Vom implementa clasele, atributele și metodele acestora într-un modul separat; în modulul principal vom crea instanțe ale claselor, iar în handlerul de evenimente de apăsare a butonului vom scrie apeluri la metodele acestor clase.

    Să creăm un nou modul. Acest lucru se poate face în Delphi, și în Rose și în RDL, dar pentru puritatea experimentului vom crea totul numai în RDL. În Rose, activați fereastra RDL și faceți clic dreapta pe elementul rădăcină din arborele obiect model Rose - în cazul nostru este Model1.mdl. În meniul contextual, selectați Nou -> Unitate. Se va deschide fereastra Editor de componente (Fig. 7). În fila General, sunt indicate numele modulului (Unitatea 2) și un comentariu pentru modulul creat, care va fi inserat în modul ca comentariu în timpul generării codului. În fila Detaliu, sunt indicate tipul componentei și calea către fișierul sursă. Pe fila Previzualizare cod puteți vedea codul care va fi generat de RDL pentru acest modul. Dezactivarea comutatorului Permite actualizări de cod/model împiedică generarea de cod și actualizările modelului pentru elementul selectat.


    Figura 7. Editor de componente

    După ce facem clic pe butonul Ok, vedem că în fereastra RDL a apărut o pictogramă care indică un nou modul, iar lângă ea este un semn de exclamare, care semnalează că modelul Rose și codul Delphi nu sunt sincronizate. Să actualizăm codul Delphi făcând clic pe butonul Actualizare tot->. Acum trebuie să treceți la Delphi. Vedem o fereastră care avertizează că modulul a fost schimbat (Fig. 8). Pentru a descărca modulul actualizat, faceți clic pe Ok.


    Figura 8. mesaj Delphi despre modificarea fișierului de proiect

    Acum să deschidem modulul nou generat Unit2.pas. Vă puteți asigura că generarea codului a avut succes - toate cuvintele cheie necesare sunt declarate și este inserat un comentariu. Următorul pas este modelarea claselor și a metodelor acestora în acest modul. Să mergem la Rose și să activăm fereastra RDL. În arborele de obiecte, afișați un meniu contextual pe obiectul Unit2 și selectați New -> Class. Apare fereastra Class Editor (Fig. 9). În fila General, trebuie să specificați numele clasei (Nume), felul (Kind), vizibilitatea (Vizibilitatea) și comentariul pentru clasă (Documentație). În cazul nostru, clasa se va numi TMassiv, domeniul de aplicare va fi Public.


    Figura 9. Editor de clasă

    Pentru a crea toate metodele și atributele unei clase, vom folosi elementul de meniu Nou din meniul contextual al clasei din arborele de obiecte RDL. Editorii de atribute și metode sunt practic similare cu editorul de clasă, așa că vom omite detaliile de creare. Să creăm următoarele atribute și metode (toate metodele cu directive de vizibilitate publică, atributul M are vizibilitate privată):
    M: matrice de numere întregi; procedura Init; // Inițializarea procedurii matrice FillMassiv; // Umplerea matricei cu numere aleatoare procedura CalcSum; // Calculați suma elementelor matricei procedura CalcSr; // Calculați valoarea medie a elementelor matricei funcția GetElement(X, Y: integer): Integer; // Obținerea unui element de matrice (x,y) Vom crea și o metodă pentru clasa TForm1, care va umple componentele TMemo situate pe formular cu elemente din matrice:

    Procedura GetMassiv;

    Există ceva special în crearea de metode cu parametri. Mai întâi, metoda este creată în mod obișnuit, apoi, în arborele de obiecte RDL, în meniul contextual al metodei pentru care vi se cere să specificați un parametru, selectați Nou -> Parametru și specificați numele parametrului, acesta tastați și un comentariu pentru el. După crearea clasei, aruncați o privire la diagrama de clasă pentru modulul Unit2 din Rose - clasa noastră este afișată conform specificației UML (Figura 10).


    Figura 10. Diagrama de clasă cu clasa creată

    Deci, clasa a fost creată, sau mai degrabă shell-ul ei, fără implementare încă. Acum, în modulul principal Unit1, vom crea două instanțe ale acestei clase. Să le declarăm ca M1 și M2 în secțiunea Public a clasei TForm1. Acest lucru se face prin selectarea elementelor necesare în meniul contextual al arborelui de obiecte și prin specificarea parametrilor în editorul de atribute. Diagrama modificată, în care instanțele declarate ale clasei sunt afișate în clasa TForm1, este prezentată în Fig. unsprezece.


    Figura 11. Instanțele de clasă declarate în secțiunea publică a clasei TForm1

    Deci, modelul este construit și acum trebuie să generăm codul final. În fereastra RDL, faceți clic pe Refresh, Update All-> și accesați mediul Delphi. Acum trebuie să scriem cod care implementează funcționalitatea și să compilam programul. Când populați metode cu cod, uneori trebuie să adăugați variabile locale sau globale. Acest lucru se poate face în RDL, dar este mai bine să implementați aceste variabile în cod și apoi să actualizați modelul Rose din codul sursă Delphi (Update All). Dacă unele elemente au fost șterse în model, dar sunt deja implementate în cod, acest cod este conținut între directivele compilatorului ($IFDEF DELETED) și ($ENDIF). După implementarea întregului cod sursă în Delphi, să revenim la RDL și să-l facem din nou de inginerie inversă făcând clic pe Reîmprospătare și Actualizare tot. Clasa TForm1 s-a schimbat - acum are metode - handlere de evenimente buton (Fig. 12). În cazul nostru, aceasta este versiunea finală a diagramei de clasă și a întregului model în ansamblu.


    Figura 12. Diagrama finală de clasă pentru Unitatea 1

    Codul sursă final al programului și modelul Rose construit sunt disponibile.

    În acest exemplu, am urmat metodologia de dezvoltare a aplicației propusă de dezvoltatorul Rose Delphi Link și, ca urmare, am primit un model obiect al sistemului. Toate clasele și diagramele care descriu activitățile sistemului au fost concepute în Rational Rose folosind programul Rose Delphi Link. Deci, să evidențiem principalele avantaje ale utilizării RDL și Rational Rose împreună:

    • crearea rapidă și convenabilă a unui prototip de interfață cu utilizatorul;
    • capacitatea de a obține un model detaliat al claselor de interfață și, pe baza acestuia, de a evidenția caracteristicile arhitecturale fundamentale ale sistemului;
    • capacitatea de a compara clasele cu cerințele funcționale ale sistemului;
    • capacitatea de a crea clase de control în modelele Rational Rose cu generarea ulterioară a codului în Delphi;
    • Suport complet pentru ciclul de viață al sistemului software dezvoltat atunci când utilizați alte produse Rational.

    Astfel, cu reconcilierea periodică bazată pe tehnologia de inginerie inversă, modelul Rose și codul Delphi sunt consistente, permițând proiectantului să se asigure că deciziile arhitecturale nu au suferit modificări semnificative și, de asemenea, să aibă modele documentate actualizate care reflectă starea actuală. a dezvoltării proiectului.

    Literatură:

    1. Vendrov A.M. Proiectare de software pentru sisteme informatice economice. - M.: Finanțe și Statistică, 2000.
    2. Trofimov S.A. Tehnologii CASE: lucrări practice în Rational Rose - Editura BINOM, 2001
    3. Butch G., Rumbaugh D., Jacobson A. Limbajul UML. Ghidul utilizatorului: Per. din engleza - M.
    Acțiune