Verktyg för att rita UML-diagram. Modellering i UML. Allmänna diagram Exempel på diagram på uml-språk

UML är ett enhetligt grafiskt modelleringsspråk för att beskriva, visualisera, designa och dokumentera OO-system. UML är designat för att stödja processen att modellera programvara baserad på OO-metoden, organisera förhållandet mellan konceptuella och programkoncept och återspegla problemen med att skala komplexa system. UML-modeller används i alla stadier av mjukvarans livscykel, från affärsanalys till systemunderhåll. Olika organisationer kan använda UML som de tycker är lämpligt, beroende på deras problemområden och vilken teknik de använder.

En kort historia av UML

I mitten av 90-talet hade olika författare föreslagit flera dussin OO-modelleringsmetoder, som var och en använde sin egen grafiska notation. Dessutom hade var och en av dessa metoder sin egen styrkor, men tillät inte bygga tillräckligt full modell PS, visa det "från alla sidor", det vill säga alla nödvändiga projektioner (se artikel 1). Dessutom gjorde avsaknaden av en OO-modelleringsstandard det svårt för utvecklare att välja den mest lämpliga metoden, vilket förhindrade en utbredd användning av OO-metoden för mjukvaruutveckling.

På begäran av Object Management Group (OMG), organisationen som ansvarar för antagandet av standarder inom området objektteknologi och databaser, löstes det akuta problemet med enande och standardisering av författarna till de tre mest populära OO-metoderna - G Butch, D. Rambo och A. Jacobson, som tillsammans skapade version UML 1.1, godkänd av OMG 1997 som standard.

UML är ett språk

Alla språk består av ett ordförråd och regler för att kombinera ord för att skapa meningsfulla konstruktioner. Det är i synnerhet hur programmeringsspråk är uppbyggda, såsom UML. Dess särdrag är att språklexikonet är format av grafiska element. Varje grafisk symbol har en specifik semantik, så en modell skapad av en utvecklare kan tydligt förstås av en annan, och även programvara, tolka UML. Härifrån följer i synnerhet att en mjukvarumodell som presenteras i UML automatiskt kan översättas till ett OO-programmeringsspråk (som Java, C++, VisualBasic), det vill säga om det finns ett bra visuellt modelleringsverktyg som stöder UML, med byggde modellen kommer vi också att få ett exempel på programkod som motsvarar denna modell.

Det bör betonas att UML är ett språk, inte en metod. Den förklarar vilka element man ska skapa modeller av och hur man läser dem, men säger ingenting om vilka modeller som ska utvecklas och i vilka fall. För att skapa en metod baserad på UML är det nödvändigt att komplettera den med en beskrivning av mjukvaruutvecklingsprocessen. Ett exempel på en sådan process är Rational Unified Process, som kommer att diskuteras i efterföljande artiklar.

UML ordbok

Modellen är representerad i form av entiteter och relationer mellan dem, vilka visas i diagram.

Entiteterär abstraktioner som är huvudelementen i modeller. Det finns fyra typer av entiteter - strukturella (klass, gränssnitt, komponent, användningsfall, samarbete, nod), beteendemässiga (interaktion, tillstånd), gruppering (paket) och anteckning (kommentarer). Varje typ av enhet har sin egen grafiska representation. Entiteter kommer att diskuteras i detalj när man studerar diagrammen.

Relation visa olika kopplingar mellan enheter. UML definierar följande relationstyper:

  • Missbruk visar ett sådant samband mellan två entiteter när en förändring i en av dem - oberoende - kan påverka semantiken hos den andra - beroende. Beroende representeras av en prickad pil riktad från den beroende enheten till den oberoende enheten.
  • Föreningär ett strukturellt förhållande som visar att objekten i en enhet är relaterade till objekten i en annan. Grafiskt visas en association som en linje som förbinder de associerade enheterna. Associationer tjänar till att navigera mellan objekt. Till exempel kan kopplingen mellan klasserna "Order" och "Produkt" användas för att hitta alla produkter som anges i en specifik beställning - å ena sidan, eller för att hitta alla beställningar som har den här produkten, - med en annan. Det är tydligt att motsvarande program måste implementera en mekanism som tillhandahåller sådan navigering. Om navigering endast i en riktning krävs indikeras det med en pil i slutet av kopplingen. Ett speciellt fall av association är aggregering - ett förhållande av formen "hela" - "del". Grafiskt är det markerat med en diamant i slutet nära essensen.
  • Generaliseringär förhållandet mellan en överordnad enhet och en underordnad enhet. I huvudsak återspeglar detta förhållande egenskapen arv för klasser och objekt. Generaliseringen visas som en linje som slutar med en triangel riktad mot den överordnade enheten. Barnet ärver förälderns struktur (attribut) och beteende (metoder), men det kan samtidigt få nya strukturelement och nya metoder. UML tillåter multipelt arv, där en enhet är relaterad till mer än en överordnad enhet.
  • Genomförande– förhållandet mellan en entitet som definierar en specifikation av beteende (gränssnitt) med en entitet som definierar implementeringen av detta beteende (klass, komponent). Detta förhållande används ofta vid modellering av komponenter och kommer att beskrivas mer i detalj i efterföljande artiklar.

Diagram. UML tillhandahåller följande diagram:

  • Diagram som beskriver systemets beteende:
    • Tillståndsdiagram
    • Aktivitetsdiagram,
    • Objektdiagram,
    • Sekvensdiagram,
    • Samarbetsdiagram;
  • Diagram som beskriver den fysiska implementeringen av systemet:
    • Komponentdiagram;
    • Implementeringsdiagram.

Modellkontrollvy. Paket.

Vi har redan sagt att för att en modell ska kunna förstås väl av människor är det nödvändigt att organisera den hierarkiskt, vilket lämnar ett litet antal enheter på varje nivå i hierarkin. UML inkluderar ett sätt att organisera en hierarkisk representation av en modell - paket. Alla modeller består av en uppsättning paket som kan innehålla klasser, användningsfall och andra entiteter och diagram. Ett paket kan innehålla andra paket, vilket möjliggör skapandet av hierarkier. UML tillhandahåller inga separata paketdiagram, men de kan förekomma i andra diagram. Paketet är avbildat som en rektangel med ett bokmärke.

Vad UML ger.

  • hierarkisk beskrivning av ett komplext system genom att identifiera paket;
  • formalisering av funktionella krav för systemet med hjälp av apparaten för användningsfall;
  • detaljera systemkrav genom att konstruera aktivitetsdiagram och scenarier;
  • identifiera dataklasser och konstruera en konceptuell datamodell i form av klassdiagram;
  • identifiera klasser som beskriver användargränssnitt och skapa ett skärmnavigeringsschema;
  • beskrivning av processerna för interaktion mellan objekt när man utför systemfunktioner;
  • beskrivning av objektbeteende i form av aktivitets- och tillståndsdiagram;
  • beskrivning av programvarukomponenter och deras interaktion genom gränssnitt;
  • beskrivning av systemets fysiska arkitektur.

Och det sista...

Trots all attraktivitet med UML skulle det vara svårt att använda i riktig mjukvarumodellering utan visuella modelleringsverktyg. Sådana verktyg låter dig snabbt presentera diagram på bildskärmen, dokumentera dem, generera programkodmallar i olika OO-programmeringsspråk och skapa databasscheman. De flesta av dem inkluderar möjligheten att omarbeta programkoder - återställa vissa projektioner av mjukvarumodellen genom att automatiskt analysera källkoder för program, vilket är mycket viktigt för att säkerställa överensstämmelse mellan modellen och koder och när man designar system som ärver funktionaliteten hos föregångare.

10.4. UML-DIAGRAM

10.4.1. Typer av visuella UML-diagram

UML låter dig skapa flera typer av visuella diagram:

Använd falldiagram;

Sekvensdiagram;

Kooperativa diagram;

Klassdiagram;

Tillståndsdiagram;

Komponentdiagram;

Placeringsdiagram.

Diagram illustrerar olika aspekter av systemet. Till exempel visar ett kooperativt diagram hur objekt måste interagera för att implementera någon funktionalitet i ett system. Varje diagram har sitt eget syfte.

10.4.2. Använd falldiagram

Användningsfallsdiagram visar interaktionerna mellan användningsfall, som representerar ett systems funktioner, och aktörer, som representerar de personer eller system som tar emot eller överför information till detta system. Ett exempel på användningsfallsdiagram för en uttagsautomat (ATM) visas i fig. 10.1.

Ris. 10.1. Använd falldiagram

Diagrammet representerar interaktionerna mellan användningsfall och aktörer. Det speglar systemkraven ur användarens synvinkel. Användningsfall är alltså de funktioner som systemet utför, och aktörer är intressenter i förhållande till det system som skapas. Diagram visar vilka aktörer som initierar användningsfall. De visar också när en aktör får information från ett användningsfall. I huvudsak kan ett användningsfallsdiagram illustrera systemkrav. I vårt exempel initierar bankklienten olika användningsfall: "Ta ut pengar från konto", "Överför pengar", "Sätt in pengar på konto", "Visa saldo", "Ändra ID-nummer", "Gör betalning". Bankanställda kan initiera användningsfallet för att ändra identifikationsnummer. Från användningsfallet "Gör betalning" finns en pil till Kreditsystemet. Skådespelare kan vara externa system, i det här fallet visas Kreditsystemet exakt som en aktör - det är externt till ATM-systemet. En pil som pekar från ett användningsfall till en aktör indikerar att användningsfallet ger viss information till aktören. I det här fallet ger användningsfallet Gör betalning kreditsystemet information om kreditkortsbetalningen.

Användningsdiagram kan ge en hel del information om systemet. Denna typ av diagram beskriver systemets övergripande funktionalitet. Användare, projektledare, analytiker, utvecklare, kvalitetssäkringsspecialister och alla som är intresserade av systemet som helhet kan titta på användningsfallsdiagram för att förstå vad systemet ska göra.

10.4.3. Sekvensdiagram

Sekvensdiagram visar flödet av händelser som inträffar inom ett användningsfall. Användningsfallet "Ta ut pengar" ger till exempel flera möjliga sekvenser: ta ut pengar, försök att ta ut pengar när det inte finns tillräckligt med pengar på kontot, försök att ta ut pengar med ett felaktigt identifikationsnummer och några andra. Ett normalt scenario för att ta ut $20 från ett konto (i avsaknad av problem som ett felaktigt identifikationsnummer eller otillräckliga medel på kontot) visas i Fig. 10.2.

Figur 10.2. Sekvensdiagram för Joes klient som tar ut $20 från hans konto

Överst i diagrammet visar alla aktörer och objekt som krävs av systemet för att utföra användningsfallet med Dra ut pengar. Pilarna motsvarar meddelanden som skickas mellan en aktör och ett objekt eller mellan objekt för att utföra nödvändiga funktioner. Det bör också noteras att sekvensdiagrammet visar objekt, inte klasser. Klasser är typer av objekt. Objekt är konkreta; istället för klass Klient Sekvensdiagrammet representerar en specifik kund, Joe.

Användningsfallet börjar när kunden sätter in sitt kort i läsaren - detta objekt visas i rektangeln överst i diagrammet. Den läser kortnumret, öppnar Joe Account-objektet och initierar ATM-skärmen. Skärmen frågar Joe om hans registreringsnummer. Kunden anger numret 1234. Skärmen kontrollerar numret mot Joe Account-objektet och finner att det är korrekt. Skärmen visar sedan Joe med en meny att välja mellan, och han väljer "Ta ut pengar." Skärmen frågar hur mycket han vill ta ut, och Joe anger $20. Skärmen tar ut pengar från kontot. Genom att göra det initierar den en serie processer som utförs av objektet "Joes konto". Samtidigt verifieras att detta konto innehåller, enl minst, $20 och det nödvändiga beloppet dras från räkningen. Kassaregistret instrueras sedan att "utfärda en check och $20 i kontanter." Slutligen instruerar samma "Joes konto"-objekt kortläsaren att lämna tillbaka kortet.

Så, detta diagram Sekvensen illustrerar en sekvens av åtgärder som implementerar användningsfallet "Ta ut pengar från ett konto" med det specifika exemplet på Joes klient som tar ut $20. Genom att titta på det här diagrammet blir användarna bekanta med detaljerna i deras arbete. Analytiker ser sekvensen (flödet) av åtgärder, utvecklare ser objekten som behöver skapas och deras verksamhet. Kvalitetskontrollspecialister kommer att förstå detaljerna i processen och kan utveckla tester för att verifiera dem. Således är sekvensdiagram användbara för alla som är involverade i ett projekt.

10.4.4. Kooperativa diagram

Kooperativa diagram återspeglar samma information som sekvensdiagram. Däremot gör de det annorlunda och med andra mål. Visat i fig. 10.2 sekvensdiagram visas i fig. 10.3 i form av ett kooperativt diagram.

Liksom tidigare är föremål avbildade som rektanglar och karaktärer som figurer. Medan ett sekvensdiagram visar interaktionen mellan aktörer och objekt över tid, visar ett kooperativt diagram inget samband över tid. Således kan du se att kortläsaren instruerar "Joes konto" att öppna, och "Joes konto" gör att enheten returnerar kortet till ägaren. Direkt interagerande objekt är sammankopplade med linjer. Om till exempel kortläsaren kommunicerar direkt med ATM-skärmen ska en linje dras mellan dem. Frånvaron av en linje innebär att det inte finns någon direkt kommunikation mellan objekt.

Ris. 10.3. Kooperativt diagram som beskriver processen att ta ut pengar från ett konto

Så, ett kooperativt diagram visar samma information som ett sekvensdiagram, men det behövs för ett annat syfte. Kvalitetssäkringsspecialister och systemarkitekter kommer att kunna förstå fördelningen av processer mellan objekt. Låt oss säga att något slags kooperativt diagram liknar en stjärna, där flera objekt är associerade med ett centralt objekt. Systemarkitekten kan dra slutsatsen att systemet är alltför beroende av en central enhet och behöver designas om för att fördela processer jämnare. I ett sekvensdiagram skulle denna typ av interaktion vara svår att se.

10.4.5. Klassdiagram

Klassdiagram återspeglar interaktionerna mellan klasser i ett system. Till exempel är "Joes konto" ett objekt. Typen av ett sådant objekt kan betraktas som ett konto i allmänhet, det vill säga "Konto" är en klass. Klasser innehåller data och beteende (åtgärder) som påverkar dessa data. Kontoklassen innehåller således klientens identifieringsnummer och de åtgärder som verifierar det. I ett klassdiagram skapas en klass för varje typ av objekt från Sequence Diagrams eller Cooperative Diagrams. Klassdiagrammet för användningsfallet för uttag av pengar visas i fig. 10.4.

Diagrammet visar relationerna mellan klasserna som implementerar användningsfallet Uttag av pengar. Det finns fyra klasser involverade i denna process: kortläsare, konto, bankomatskärm och kassaautomat. Varje klass i ett klassdiagram avbildas som en rektangel uppdelad i tre delar. Den första delen anger namnet på klassen, den andra - dess attribut. Ett attribut är viss information som kännetecknar en klass. Till exempel har kontoklassen tre attribut: kontonummer, PIN-kod och saldo. Den sista delen innehåller klassens operationer, vilket återspeglar dess beteende(åtgärder utförda av klassen). Linjer som förbinder klasser visar interaktioner mellan klasser.

Ris. 10.4. Klassdiagram

Utvecklare använder klassdiagram för att faktiskt skapa klasser. Verktyg som Rose genererar en kärna av klasskod som programmerare fyller i med detaljerna på det språk de väljer. Med hjälp av dessa diagram kan analytiker visa detaljerna i ett system och arkitekter kan förstå dess design. Om till exempel en klass har för mycket funktionell belastning kommer detta att synas i klassdiagrammet och arkitekten kan omfördela det bland andra klasser. Diagrammet kan också hjälpa till att identifiera fall där inga relationer definieras mellan kommunicerande klasser. Klassdiagram bör skapas för att visa de interagerande klasserna i varje användningsfall. Du kan också bygga mer generella diagram som täcker alla system eller delsystem.

10.4.6. Tillståndsdiagram

Tillståndsdiagram är utformade för att modellera de olika tillstånden som ett objekt kan vara i. Medan ett klassdiagram visar en statisk bild av klasser och deras relationer, används tillståndsdiagram för att beskriva dynamiken i ett systems beteende.

Tillståndsdiagram visar beteendet hos ett objekt. Ett bankkonto kan alltså ha flera olika tillstånd. Den kan vara öppen, stängd eller överdragen. Kontots beteende ändras beroende på i vilket tillstånd det är beläget. Tillståndsdiagrammet visar exakt denna information. I fig. Figur 10.5 visar ett exempel på ett tillståndsdiagram för ett bankkonto.

Ris. 10.5. Statusdiagram för kontoklassen

Detta diagram visar kontots möjliga tillstånd, såväl som processen för övergången av kontot från en stat till en annan. Till exempel, om en klient begär att stänga ett öppet konto, går det senare till "Stängt" tillstånd. Klientens krav kallas händelse, det är händelser som orsakar övergången från ett tillstånd till ett annat.

När en kund tar ut pengar från ett öppet konto, kan kontot gå in i en Övertrassering. Detta händer bara om kontosaldot är mindre än noll, vilket återspeglas av villkoret [negativt saldo] i vårt diagram. Omges av hakparenteser skick bestämmer när en övergång från ett tillstånd till ett annat kan eller inte kan ske.

Det finns två specialtillstånd i diagrammet - första Och slutlig. Det ursprungliga tillståndet är markerat med en svart prick: det motsvarar objektets tillstånd vid tidpunkten för dess skapelse. Det slutliga tillståndet indikeras av en svart prick i en vit cirkel: det motsvarar objektets tillstånd omedelbart före dess förstörelse. Det kan finnas ett och endast ett initialtillstånd i ett tillståndsdiagram. Samtidigt kan det finnas så många sluttillstånd som du behöver, eller så kanske det inte finns några alls.

När ett objekt är i ett visst tillstånd kan vissa processer exekveras. I vårt exempel, om krediten överskrids, skickas ett motsvarande meddelande till kunden. Processer som uppstår när ett objekt är i ett visst tillstånd anropas handlingar.

Statecharts behöver inte skapas för varje klass, de används endast i mycket komplexa fall. Om ett objekt i en klass kan existera i flera tillstånd och beter sig olika i varje tillstånd, kommer det sannolikt att behöva ett sådant diagram. Men många projekt använder dem inte alls. Om tillståndsdiagram har byggts kan utvecklare använda dem när de skapar klasser.

Statskartor behövs främst för dokumentation.

10.4.7. Komponentdiagram

Komponentdiagram visar hur modellen ser ut i fysisk nivå. Den visar komponenterna programvara ditt system och kopplingarna mellan dem. Det finns två typer av komponenter: körbara komponenter och kodbibliotek.

I fig. Figur 10.6 visar ett av komponentdiagrammen för ett ATM-system. Detta diagram visar komponenterna i en ATM-systemklient. I det här fallet beslutade utvecklingsteamet att bygga systemet med C++-språket. Varje klass har sin egen rubrikfil och tilläggsfil. CPP, så att varje klass omvandlas till sina egna komponenter i diagrammet. Den valda mörka komponenten anropas paketspecifikation och motsvarar ATM-klassens kroppsfil i C++ (fil med tillägg. CPP). En ovald komponent kallas också en paketspecifikation, men motsvarar en C++-språkklasshuvudfil (fil med filändelsen .H). ATM-komponent. EXE är en uppgiftsspecifikation och representerar informationsbearbetningsflödet. I det här fallet är bearbetningstråden det körbara programmet.

Komponenterna är sammankopplade med en streckad linje, som representerar beroenden mellan dem. Ett system kan ha flera komponentdiagram beroende på antalet delsystem eller körbara filer. Varje delsystem är ett paket med komponenter.

Komponentdiagram används av de projektdeltagare som ansvarar för att sammanställa systemet. Komponentdiagrammet ger en uppfattning om i vilken ordning komponenter ska kompileras, samt vilka körbara komponenter som kommer att skapas av systemet. Diagrammet visar mappningen av klasser till implementerade komponenter. Så det behövs där kodgenerering börjar.

Ris. 10.6. Komponentdiagram

10.4.8. Placeringsdiagram

Layoutdiagram visar den fysiska placeringen av olika systemkomponenter i ett nätverk. I vårt exempel består ATM-systemet av ett stort antal delsystem som körs på separata fysiska enheter eller noder. Placeringsdiagrammet för ATM-systemet visas i fig. 10.7.

Från detta diagram kan du lära dig om systemets fysiska layout. ATM-klientprogram kommer att köras på flera platser på flera platser. Klienter kommer att kommunicera med den regionala ATM-servern genom slutna nätverk. Den kommer att köra ATM-serverns programvara. I sin tur genom lokalt nätverk regional server kommer att interagera med en bankdatabasserver som kör Oracle. Slutligen ansluts en skrivare till den regionala ATM-servern.

Så, detta diagram visar den fysiska layouten av systemet. Till exempel följer vårt ATM-system en arkitektur i tre nivåer, med databasen på det första lagret, den regionala servern på det andra och klienten på det tredje.

10.7. Placeringsdiagram

Ett layoutdiagram används av projektledaren, användarna, systemarkitekten och driftpersonalen för att klargöra den fysiska layouten av systemet och platsen för dess individuella delsystem. Projektledaren kommer att förklara för användarna hur den färdiga produkten kommer att se ut. Driftpersonal kommer att kunna planera systemets installationsarbete.

Från bok Microsoft Office författare Leontyev Vitaly Petrovich

Diagram Siffrorna i tabellen tillåter dig inte alltid att få ett komplett intryck, även om de är sorterade på det för dig mest bekväma sättet. Använder de som är tillgängliga från Microsoft Excel mallar diagram, kan du få en tydlig bild av data i din tabell, och inte

Från boken Dator för 100. Låt oss börja med Windows Vista författaren Zozulya Yuri

Diagram Diagram används för att presentera tabelldata i grafisk form, som avsevärt kan förbättra synligheten av information, visar sambandet mellan olika parametrar eller dynamiken i deras förändring. För att infoga diagram i Word, använd verktygen

Från boken Effektivt kontorsarbete författare Ptashinsky Vladimir Sergeevich

Diagram Den mest visuella Excel-förmågaär presentationen av beräkningsresultat eller ackumulerade data i form av grafer (diagram): ibland kan de mest imponerande siffrorna inte övertyga på det sätt som kan göras med ens enkel grafik. Excel har

Från en Excel-arbetsbok. Multimediakurs författaren Medinov Oleg

Kapitel 8 Diagram Ofta Excel-program används för att skapa dokument som representerar olika statistiska och analytiska rapporter. Det kan vara försäljningsrapporter, tabeller över lufttemperaturmätningar, data från sociologiska undersökningar etc. Siffror är inte alltid

Från boken Word 2007. Populär handledning författaren Krainsky I

Bygga ett diagram För det första exemplet måste du skapa tabellen som visas i fig. 8.1. Ris. 8.1. TemperaturmätningstabellVi kommer att konstruera en enkel graf över temperaturförändringar baserat på data i denna tabell.1. Välj det ifyllda området i tabellen.2. Gå till

Från boken Självinstruktionsmanual för att arbeta på en dator författare Kolisnichenko Denis Nikolaevich

6.6. Diagram Utom grafiska filer, V Word-dokument du kan infoga diagram. Med hjälp av diagram kan du visuellt presentera numerisk data, till exempel spåra hur data förändras, se utvecklingen av ett visst projekt över tid. Diagram blir liknande

Från boken Objektorienterad analys och design med exempel på applikationer i C++ av Butch Grady

14.9. Diagram Kanske är det dags att förvandla torra siffror till grafik, vilket gör vårt bord vackrare och mer informativt? Diagram används för detta. Vad du än säger så uppfattas ett diagram bättre än en tabell. För att konstruera ett diagram måste du välja de värden som

Från boken Programming Technologies författaren Kamaev V A

5.2. Klassdiagram Viktigt: Klasser och deras relationer Ett klassdiagram visar klasser och deras relationer, och representerar därmed den logiska aspekten av en design. Ett separat klassdiagram representerar en specifik vy av klassstrukturen. På analysstadiet vi

Från boken Business Process Modeling med BPwin 4.0 författare Maklakov Sergey Vladimirovich

5.4. Objektdiagram Essential: Objekt och deras relationer Ett objektdiagram visar befintliga objekt och deras relationer i den logiska designen av ett system. Med andra ord är ett objektdiagram en ögonblicksbild av flödet av händelser i någon konfiguration

Från OrCAD PSpice-boken. Analys elektriska kretsar av Keown J.

5.7. Processdiagram. Viktigt: Processorer, enheter och anslutningar Processdiagram används för att visa fördelningen av processer över processorer i en fysisk systemdesign. Ett separat processdiagram visar en vy av processstrukturen

Från boken VBA for Dummies av Steve Cummings

10.4. UML-DIAGRAM 10.4.1. Typer av visuella diagram UMLUML låter dig skapa flera typer av visuella diagram: använd falldiagram; sekvensdiagram; kooperativa diagram; klassdiagram; tillståndsdiagram; diagram

Från boken Självinstruktionsmanual för att arbeta på Macintosh författare Sofia Skrylina

1.2.6. Diagramram I fig. Figur 1.2.26 visar ett typiskt exempel på ett nedbrytningsdiagram med begränsningsrutor som kallas diagramramen. Ris. 1.2.26. Exempel på ett nedbrytningsdiagram med en trådram. Trådramen innehåller en titel ( övre del ramar) och källare (nedre delen).

Från författarens bok

Tidsdiagram För att erhålla tidsdiagram för in- och utgångsspänningarna måste du ändra ingångsfilen något. Som i föregående exempel kommer en sinusformad inspänning att användas: Vi 1 0 sin (0 0, 5V 5kHz) Tillsammans med transientanalys

Från författarens bok

Diagram och grafer Endast en expert kan urskilja innebörden bakom ändlösa rader av siffror, men vem som helst kan förstå (eller åtminstone påstå sig förstå) ett histogram eller ett cirkeldiagram. VBA har inga inbyggda verktyg för att skapa diagram, men sådana

Från författarens bok

5.1.14. Diagram Diagram är grafiska representationer av numeriska data i en tabell. Pages erbjuder flera typer av diagram: kolumn, staplad kolumn, stapeldiagram, staplad stapeldiagram, linje, area, staplad area

Från författarens bok

5.2.8. Diagram Ett diagram är en grafisk representation av data från ett valt område. För att bygga ett diagram, följ följande algoritm1. Skapa en tabell med beräknade värden.2. Välj önskat område (det kan bestå av icke-intilliggande rektangulära

Jag tror att alla i barndomen har hört ett talesätt som " Sju gånger mäta klippa en gång". Det är samma sak i programmering. Det är alltid bättre att tänka på implementeringen innan du lägger tid på att utföra den. När du implementerar den måste du ofta skapa klasser och komma på deras interaktion. Och ofta kan en visuell representation av detta hjälpa till lösa problemet på det mest korrekta sättet. Det är här vi hjälper UML.

Vad är UML?

Om du tittar på bilderna i sökmotorer, då blir det klart att UML– det är något med diagram, pilar och rutor. Det som är viktigt är att UML översätts som Unified Modeling Language. Ordet Unified är viktigt här. Det vill säga att våra bilder kommer att förstås inte bara av oss, utan också av andra som kan UML. Det visar sig att detta är ett internationellt språk för att rita diagram.

Som Wikipedia säger

UML är ett grafiskt beskrivningsspråk för objektmodellering inom mjukvaruutveckling, affärsprocessmodellering, systemdesign och visning av organisationsstrukturer.
Det mest intressanta som inte alla tänker på eller inser är att UML har specifikationer. Dessutom finns det till och med en UML2-specifikation. Mer information om specifikationen finns på Object Management Groups webbplats. Egentligen håller den här gruppen på att utveckla UML-specifikationer. Det är också intressant att UML inte begränsar sig till att beskriva klassernas struktur. Det finns många typer av UML-diagram. En kort beskrivning av typerna av UML-diagram kan ses i samma Wikipedia: UML - diagram eller i videon av Timur Batyrshinov Översikt över UML-diagram. UML används också flitigt för att beskriva olika processer, till exempel här: Single sign-on med JWT. För att återgå till användningen av UML-klassdiagram är det värt att notera boken Head First: Design Patterns, där mönstren illustreras av samma UML-diagram. Det visar sig att UML verkligen används. Och det visar sig att kunskap och förståelse för dess tillämpning är en ganska användbar färdighet.

Ansökan

Låt oss titta på hur du kan arbeta med samma UML från IDE. Låt oss ta som IDE IntelliJ idé. Om du använder IntelliJ Idea Ultimate, då kommer vi att ha plugin installerat "out of the box" UML-stöd". Det låter dig automatiskt generera vackra klassdiagram. Till exempel genom Ctrl+N eller menyalternativet "Navigera" -> "Klass" går vi till klassen ArrayList. Nu, genom snabbmenyn för klassnamnet, välj "Diagram" -> "Visa diagram popup". Som ett resultat får vi ett vackert diagram:

Men tänk om du vill rita det själv, och även om du inte gör det Ultimat version Aning? Om vi ​​använder IntelliJ Idea Community Edition har vi inget annat val. För att göra detta måste du förstå hur ett sådant UML-diagram är uppbyggt. Först måste vi installera Graphviz. Detta är en uppsättning verktyg för att visualisera grafer. Det används av plugin som vi kommer att använda. Efter installationen måste du lägga till en katalog bin från den installerade katalogen Graphviz till miljövariabeln VÄG. Efter det, i IntelliJ Idea, välj Arkiv -> Inställningar från menyn. I fönstret "Inställningar", välj kategorin "Plugins", klicka på knappen "Bläddra i arkiv" och installera PlantUML-integrationsplugin. Varför är den här så bra? PlantUML? Den använder ett grafbeskrivningsspråk som heter " punkt"och detta gör att det kan vara mer universellt, eftersom... givet språk Inte bara PlantUML används. Dessutom kan allt vi gör nedan göras inte bara i IDE, utan också i onlinetjänst planttext.com. Efter att ha installerat PlantUML-pluginen kommer vi att kunna skapa UML-diagram genom "File" -> "New". Låt oss skapa ett diagram av typen "UML-klass". Under denna process genereras automatiskt en mall med ett exempel. Låt oss ta bort innehållet och skapa vårt eget, beväpnat med en artikel från Habr: Klassrelationer - från UML till kod. Och för att förstå hur man skildrar detta i texten, låt oss ta PlantUML-manualen: plantuml class-diagram. Allra i början finns en tabell som visar hur anslutningar ska beskrivas:

Vi kan också titta på själva sambanden här: "Relationer mellan klasser i UML. Exempel." Baserat på dessa material, låt oss börja skapa vårt UML-diagram. Låt oss lägga till följande innehåll som beskriver de två klasserna: @startuml class ArrayList ( ) class LinkedList ( ) @enduml För att se resultatet i Idea, välj "Visa" -> " Verktyg Windows" -> "PlantUML". Vi får helt enkelt två rutor som betecknar klasser. Som vi vet implementerar båda dessa klasser List-gränssnittet. Denna klassrelation kallas implementering. För att avbilda en sådan relation, använd en pil med prickad linje. Låt oss skildra det: gränssnitt List List< | . . ArrayList List < | . . LinkedList List - один из дочерних классов Collection . То есть он наследуется от Collection. Эта связь называется обобщением (generalization). Выглядит как стрелка с обычной непрерывной линией. Изобразим её: interface Collection Collection < | -- List Для следующего типа связи добавим в описание класса ArrayList запись о paket privat array av element: ~ Object elementData Nu vill vi visa att ArrayList innehåller några objekt. I det här fallet kommer anslutningstypen att vara - aggregering(aggregation). Aggregatet i det här fallet är ArrayList, eftersom den innehåller andra objekt. Vi väljer aggregering eftersom objekt i listan kan leva utan listan: de är inte integrerade delar av den. Deras livstid är inte bunden till listans livstid. Aggregat översätts från latin som "sammansatt", det vill säga något som består av något. Till exempel, i livet, finns det en pumpenhet, som består av en pump och en motor. Själva enheten kan demonteras och lämnar en del kvar komponenter. Till exempel att sälja eller lägga in i en annan enhet. Så är listan. Och detta uttrycks i form av en tom diamant nära enheten och en kontinuerlig linje. Låt oss skildra det så här: class Object ( ) ArrayList o- Object Nu vill vi visa att, till skillnad från ArrayList, innehåller LinkedList-klassen Node - behållare som refererar till lagrad data. I det här fallet är noder en del av själva LinkedList och kan inte leva separat. Node lagrar inte innehållet direkt, utan innehåller bara en länk till det. Till exempel, när vi lägger till en rad i en länkad lista, lägger vi till en ny nod som innehåller en länk till den raden, såväl som en länk till föregående och nästa nod. Denna typ av anslutning kallas sammansättning(Sammansättning). För att visa en komposit (en som består av delar) ritas en färgad diamant, med en kontinuerlig linje som leder till den. Låt oss nu skriva detta i form av en textvisning av anslutningen: class Node ( ) LinkedList * -- Node Och nu måste vi lära oss hur man visar en annan viktig typ kommunikation - missbruk(beroendeförhållande). Den används när en klass använder en annan och klassen inte innehåller klassen som används och är inte dess avkomling. Till exempel kan LinkedList och ArrayList skapa en ListIterator. Låt oss visa detta som pilar med en prickad linje: klass ListIterator ListIterator< . . . ArrayList : create ListIterator < . . . LinkedList : create Выглядеть после всего это будет следующим образом:

Du kan gå in på så mycket detaljer som behövs. Alla beteckningar anges här: "PlantUML - Klassdiagram". Dessutom finns det inget övernaturligt i att rita ett sådant diagram, och när du arbetar med dina uppgifter kan du snabbt rita det för hand. Detta kommer att utveckla dina färdigheter i att tänka igenom applikationsarkitektur och hjälpa dig att identifiera klassstrukturfel tidigt, snarare än efter att du har ägnat dagen åt att implementera fel modell. Jag tror att det är en bra anledning att prova?)

Automatisering

Äta olika sätt automatisk generering av PlantUML-diagram. Till exempel i Aning Det finns ett SketchIT-plugin, men det ritar dem inte riktigt korrekt. Till exempel är implementeringen av gränssnitt ritad felaktigt (visas som arv). Det finns även exempel på internet på hur man bygger in detta livscykel bygga ditt projekt. Låt oss säga för Maven det finns ett exempel på hur man använder uml-java-docklet. För att visa hur detta görs kommer vi att använda Maven Archetype för att snabbt skapande Maven projekt. Låt oss köra kommandot: mvn archetype:generate På frågan om att välja ett filter ( Välj ett nummer eller använd filter) lämna standard genom att helt enkelt trycka på Enter. Det kommer alltid att vara" maven-arketyp-snabbstart". Välj den senaste versionen. Svara sedan på frågorna och slutför skapandet av projektet:

Eftersom Maven inte är i fokus i den här artikeln kan svar på dina Maven-frågor hittas i Maven Users Center. I det genererade projektet öppnar du projektbeskrivningsfilen för redigering, pom.xml. Låt oss kopiera innehållet från beskrivningen av uml-java-docklet som installeras i den. Artefakten som användes i beskrivningen kunde inte hittas i Maven Central-förvaret. Men det fungerade för mig med detta: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. Det vill säga, du behöver bara byta ut i den beskrivningen grupp-ID Med " info.leadinglight"på" com.chfourie"och installera versionen" 1.0.0 ". Efter detta kan vi köra i katalogen där filen finns pom.xml dessa kommandon: mvn clean install och mvn javadoc:javadoc . Om vi ​​nu öppnar den genererade dokumentationen (explorer target\site\apidocs\index.html), kommer vi att se UML-diagrammen. Förresten, implementeringen visas redan korrekt här)

Slutsats

Som du kan se låter UML dig visualisera strukturen i din applikation. Dessutom är UML inte begränsad till just detta. Med UML kan du beskriva olika processer inom ditt företag eller beskriva den affärsprocess inom vilken funktionen du skriver fungerar. Hur användbar UML är för dig personligen är upp till dig att bestämma, men att ta dig tid att läsa den mer detaljerat kommer att vara användbart i alla fall. #Viacheslav Engelsk version av detta inlägg: UML-diagram Java på CodeGym

Anteckning: Ämnet för denna kurs är The UML - the Unified Modeling Language. Förra föreläsningen talade om vad UML är, dess historia, syfte, sätt att använda språket, strukturen på dess definition, terminologi och notation. Det har noterats att en UML-modell är en uppsättning diagram. I denna föreläsning kommer vi att överväga följande frågor: varför behövs flera typer av diagram; typer av diagram; OOP och diagramsekvens

Innan vi går vidare till att diskutera huvudmaterialet i denna föreläsning, låt oss prata om varför vi behöver bygga några diagram överhuvudtaget. Utvecklingen av en modell av vilket system som helst (inte bara programvara) föregår alltid skapandet eller uppdateringen. Detta är nödvändigt åtminstone för att tydligare föreställa sig att problemet löses. Genomtänkta modeller är mycket viktiga både för interaktion inom utvecklingsteamet och för ömsesidig förståelse med kunden. I slutändan säkerställer detta att designen är "arkitektoniskt konsekvent" innan den implementeras i kod.

Vi bygger modeller av komplexa system eftersom vi inte kan beskriva dem helt, "ta en blick på dem." Därför lyfter vi bara fram de egenskaper hos systemet som är väsentliga för en specifik uppgift och bygger dess modell som visar dessa egenskaper. Metoden för objektorienterad analys gör att vi kan beskriva verkliga komplexa system på det mest adekvata sättet. Men i takt med att systemens komplexitet ökar uppstår behovet av bra modelleringsteknik. Som vi redan sa i föregående föreläsning, en enhetlig modelleringsspråk(Unified Modeling Language, UML), som är ett grafiskt språk för att specificera, visualisera, designa och dokumentera system. Med hjälp av UML kan du utveckla en detaljerad modell av systemet som skapas, som inte bara speglar dess koncept utan också specifika egenskaper för dess implementering. Inom UML-modellen registreras alla idéer om systemet i form av speciella grafiska strukturer som kallas diagram.

Notera. Vi kommer inte att överväga alla, utan bara några av typerna av diagram. Till exempel behandlas inte komponentdiagrammet i denna föreläsning, vilket endast är det en kort översikt typer av diagram. Antal diagramtyper för specifik modell applikationer är inte begränsade på något sätt. För enkla applikationer det finns inget behov av att bygga diagram av alla typer utan undantag. Vissa av dem kan helt enkelt saknas, och detta faktum kommer inte att betraktas som ett fel. Det är viktigt att förstå att tillgängligheten för vissa typer av diagram beror på detaljerna i ett visst projekt. Information om andra typer av diagram (som inte diskuteras här) finns i UML-standarden.

Varför du behöver flera typer av diagram

Låt oss först definiera terminologin. I inledningen till denna föreläsning har vi upprepade gånger använt begreppen system, modell och diagram. Författaren är säker på att var och en av oss intuitivt förstår innebörden av dessa begrepp, men för att göra det helt klart, låt oss titta på ordlistan igen och läsa följande:

Systemet- En uppsättning sammankopplade kontrollerade delsystem förenade av ett gemensamt driftsyfte.

Ja, inte särskilt informativt. Vad är då ett delsystem? För att klargöra situationen, låt oss vända oss till klassikerna:

Systemet hänvisar till en uppsättning delsystem organiserade för att uppnå ett specifikt mål och beskrivna med hjälp av en uppsättning modeller, möjligen från olika synvinklar.

Tja, det finns inget du kan göra, du måste leta efter en definition av ett delsystem. Där står det också delsystemär en samling element, av vilka några specificerar beteendet hos andra element. Ian Sommerville förklarar detta koncept så här:

Delsystemär ett system vars funktion inte är beroende av andra delsystems tjänster. Mjukvarusystemet är uppbyggt som en samling relativt oberoende delsystem. Samspelet mellan delsystem definieras också.

Det är inte heller särskilt tydligt, men det är bättre. På ett ”mänskligt” språk representeras systemet som en uppsättning enklare enheter som är relativt självförsörjande. Detta kan jämföras med hur vi i färd med att utveckla ett program bygger GUI från vanliga "kuber" - visuella komponenter, eller hur själva programtexten också är uppdelad i moduler som innehåller subrutiner, förenade av funktionalitet, och de kan återanvändas i efterföljande program.

Vi förstår konceptet med ett system. Under designprocessen beaktas systemet ur olika synvinklar med hjälp av modeller, vars olika representationer framträder i form av diagram. Återigen kan läsaren ha frågor om innebörden av begreppen modeller Och diagram. Vi tycker att det är en vacker, men inte särskilt tydlig definition modeller som en semantiskt sluten abstraktion av systemet Det är osannolikt att klargöra situationen, så vi ska försöka förklara "med våra egna ord."

Modell- detta är ett visst (materiellt eller inte) objekt som endast uppvisar de viktigaste egenskaperna hos systemet för en given uppgift. Modeller är olika - material och immateriella, konstgjorda och naturliga, dekorativa och matematiska...

Låt oss ge några exempel. De plastleksaksbilar som vi alla känner till, som vi lekte med sådan spänning i barndomen, är inget annat än material konstgjord dekorativ modell av en riktig bil. Naturligtvis har en sådan "bil" ingen motor, vi fyller inte tanken med bensin och växellådan fungerar inte (det finns faktiskt ingen växellåda alls), men som modell uppfyller denna leksak helt sina funktioner : det ger barnet en uppfattning om bilen, eftersom den visar sina karakteristiska egenskaper är närvaron av fyra hjul, en kaross, dörrar, fönster, förmåga att köra, etc.

Inom medicinsk forskning föregår djurförsök ofta kliniska prövningar på människor. I det här fallet fungerar djuret som naturligt material mänskliga modeller.

Ekvationen som avbildas ovan är också en modell, men det är en matematisk modell, och den beskriver rörelsen av en materiell punkt under påverkan av gravitationen.

Allt som återstår är att säga vad ett diagram är. Diagramär en grafisk representation av många element. Avbildas vanligtvis som en graf med hörn (entiteter) och kanter (relationer). Det finns många exempel på diagram. Detta är ett blockschema som vi alla känner till från skolåren, och installationsdiagram för olika utrustningar, som vi kan se i användarmanualer, och ett träd med filer och kataloger på disken, som vi kan se genom att köra Windows-konsol trädkommando och mycket, mycket mer. I vardagen omger diagram oss på alla sidor, eftersom vi uppfattar ritningar lättare än text...

Men låt oss gå tillbaka till mjukvarudesign (och mer). I den här branschen med Diagram kan användas för att visualisera ett system från olika perspektiv. Ett av diagrammen kan till exempel beskriva användarens interaktion med systemet, ett annat kan beskriva förändringen i systemets tillstånd under dess drift, det tredje kan beskriva interaktionen av systemelement med varandra, etc. Ett komplext system kan och bör representeras som en uppsättning små och nästan oberoende modeller - diagram, och ingen av dem är tillräcklig för att beskriva systemet och få en fullständig bild av det, eftersom var och en av dem fokuserar på en specifik aspekt av systemets funktion och uttrycker en annorlunda abstraktionsnivå. Med andra ord, varje modell motsvarar en viss, speciell syn på det designade systemet.

Trots det faktum att vi i föregående stycke behandlade konceptet med en modell mycket fritt, bör det förstås att i samband med ovanstående definitioner inget individuellt diagram är en modell. Diagram är bara ett sätt att visualisera en modell, och de två begreppen måste särskiljas. Endast en uppsättning diagram utgör en systemmodell och beskriver det mest fullständigt, men inte bara ett diagram taget ur sitt sammanhang.

Typer av diagram

UML 1.5 definierad tolv diagramtyper, uppdelad i tre grupper:

  • fyra typer av diagram representerar applikationens statiska struktur;
  • fem representerar beteendeaspekter av systemet;
  • tre representerar de fysiska aspekterna av systemets drift (implementeringsdiagram).

Den nuvarande versionen av UML 2.1 har inte gjort alltför många ändringar. Diagrammen har ändrats något i utseende (ramar och andra visuella förbättringar har dykt upp), notationen har förbättrats något och vissa diagram har fått nya namn.

Men det exakta antalet kanoniska diagram för oss är det absolut oviktigt, eftersom vi inte kommer att överväga dem alla, utan bara några - av den anledningen att antalet diagramtyper för en specifik modell av en specifik applikation inte är strikt fast. För enkla applikationer behöver du inte bygga varje enskilt diagram. Till exempel, för en lokal applikation är det inte nödvändigt att bygga ett distributionsdiagram. Det är viktigt att förstå att listan över diagram beror på detaljerna i projektet som utvecklas och bestäms av utvecklaren själv. Om den nyfikna läsaren fortfarande vill veta om alla UML-diagrammen kommer vi att hänvisa honom till UML-standarden (http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML). Låt oss påminna dig om att syftet med denna kurs inte är att beskriva absolut alla funktioner i UML, utan bara att introducera detta språk och ge en första uppfattning om denna teknik.

Så vi kommer kort att titta på sådana typer av diagram som:

  • diagram för användningsfall;
  • klassdiagram;
  • objektdiagram;
  • sekvensdiagram;
  • interaktionsdiagram;
  • tillståndsdiagram;
  • aktivitetsdiagram;
  • distributionsdiagram.

Vi kommer att prata mer om några av dessa diagram i kommande föreläsningar. För närvarande kommer vi inte att fokusera på detaljerna, utan kommer att sätta oss som mål att lära läsaren att åtminstone visuellt skilja mellan typerna av diagram och att ge en första uppfattning om syftet med huvudtyperna av diagram. Så, låt oss börja.

Använd falldiagram

Alla system (inklusive mjukvara) är utformade med hänsyn till att de under drift kommer att användas av människor och/eller interagera med andra system. Entiteterna som systemet interagerar med under dess drift kallas skådespelare, och varje aktör förväntar sig att systemet ska bete sig på ett strikt definierat, förutsägbart sätt. Låt oss försöka ge en mer strikt definition av en aktör. För att göra detta kommer vi att använda en underbar visuell ordbok för UML Zicom mentor:

Ector (skådespelare)- detta är en uppsättning logiskt relaterade roller som utförs när de interagerar med prejudikat eller entiteter (system, undersystem eller klass). En aktör kan vara en person eller ett annat system, delsystem eller klass som representerar något utanför entiteten.

Grafiskt avbildas ektorn antingen " liten man", liknande de som vi ritade som barn, föreställande medlemmar av vår familj, eller klasssymbol med motsvarande stereotyp, som det visas på bilden. Båda representationsformerna har samma betydelse och kan användas i diagram. Den ”stereotypa” formen används oftare för att representera systemaktörer eller i fall där en aktör har egenskaper och de behöver visas (Fig. 2.1).

En uppmärksam läsare kan omedelbart fråga: varför en skådespelare och inte en skådespelare? Vi är överens, ordet "ektor" är lite hårt i det ryska folkets öron. Anledningen till att vi säger detta är enkel - ector kommer från ordet handling, vilket översatt betyder handling. Den bokstavliga översättningen av ordet "ector" är skådespelare- för lång och obekväm att använda. Därför kommer vi att fortsätta prata på det här sättet.


Ris. 2.1.

Samma uppmärksamma läsare kanske har märkt att ordet "prejudikat" blinkar genom ektorns definition. Vad är det? Denna fråga kommer att intressera oss ännu mer om vi kommer ihåg att vi nu talar om diagram för användningsfall. Så,

Användningsfall- beskrivning av en separat aspekt av systemets beteende ur användarens synvinkel (Butch).

Definitionen är ganska tydlig och heltäckande, men den kan förtydligas ytterligare med densamma Zicom mentor"om:

Användningsfall- en beskrivning av en uppsättning sekventiella händelser (inklusive alternativ) utförda av systemet som leder till resultatet som observerats av aktören. Ett användningsfall representerar beteendet hos en entitet, som beskriver interaktionen mellan aktörer och systemet. Ett användningsfall visar inte "hur" ett visst resultat uppnås, bara "vad" som uppnås.

Prejudikat betecknas på ett mycket enkelt sätt - i form av en ellips, inuti vilken dess namn anges. Användningsfall och skådespelare kopplas ihop med hjälp av linjer. Ofta ritas en figur i ena änden av linjen. 2.3

  • bildning av allmänna krav för beteendet hos det designade systemet;
  • utveckling av en konceptuell modell av systemet för dess efterföljande detaljering;
  • upprättande av dokumentation för interaktion med kunder och systemanvändare.
  • 11.1. Strukturen för Unified Modeling Language

    Unified Modeling Language (UML) är för närvarande den de facto standard för att beskriva (dokumentera) resultaten av design och utveckling av objektorienterade system. Utvecklingen av UML började 1994 av Grady Booch och James Rumbaugh, som arbetade på Rational Software. Hösten 1995 anslöt sig Ivar Jacobson till dem och i oktober samma år släpptes en preliminär version 0.8 av Unified Method. Sedan dess har flera versioner av UML-specifikationen släppts, varav två har internationell standardstatus:

    UML 1.4.2 – "ISO/IEC 19501:2005. Informationsteknologi. Öppen distributionsbehandling. Unified Modeling Language (UML). Version 1.4.2" (engelska "Informationsteknologi. Öppen distribuerad bearbetning. Unified modeling language (UML). Version 1.4.2");

    UML 2.4.1 - "ISO/IEC 19505-1:2012. Informationsteknologi. Object Management Group Unified Modeling Language (OMG UML). Del 1. Infrastructure" (eng. "Information technology -- Object Management Group Unified Modeling Language ( OMG UML) - Del 1: Infrastruktur") och "ISO/IEC 19505-2:2012. Informationsteknologi. Object Management Group Unified Modeling Language (OMG UML). Del 2. Superstructure" (eng. "Information technology -- Object Management Group Unified Modeling Language (OMG UML) - Del 2: Överbyggnad").

    Den senaste officiella språkspecifikationen finns på www.omg.org.

    Den allmänna strukturen för UML visas i följande figur.

    Ris. 11.1. UML struktur

    11.2. UML semantik och syntax

    Semantik - en gren av lingvistik som studerar betydelsen av språkenheter, i första hand dess ord och fraser.

    Syntax – sätt att kombinera ord och deras former till fraser och meningar, kombinera meningar till komplexa meningar, sätt att skapa påståenden som en del av en text.

    Sålunda, i förhållande till UML, bestämmer semantik och syntax presentationsstilen (modellbyggnad), som kombinerar naturliga och formella språk för att representera grundläggande begrepp (modellelement) och mekanismer för deras förlängning.

    11.3. UML-notation

    Notation är en grafisk tolkning av semantik för dess visuella representation.

    UML definierar tre Entitetstyp :

    Strukturell - en abstraktion som är en reflektion av ett konceptuellt eller fysiskt objekt;

    Gruppering – ett element som används för någon semantisk kombination av diagramelement;

    Förklarande (annotativ) – en kommentar till ett diagramelement.

    Följande tabell visar kort beskrivning de huvudsakliga enheterna som används i grafisk notation och de huvudsakliga sätten att visa dem.

    Tabell 11.1. Entiteter

    Typ namn Beteckning Definition (semantik)
    Strukturell
    (klass)
    Många föremål som har allmän struktur och beteende

    (objekt)
    En abstraktion av en verklig eller föreställd varelse med tydligt definierade konceptuella gränser, personlighet, tillstånd och beteende. Ur UML-synpunkt är objekt instanser av en klass (instanser av en entitet)

    (skådespelare)

    Ingenjör
    vägtjänster
    En enhet utanför systemet som interagerar med och använder systemet funktionalitet att uppnå vissa mål eller lösa särskilda problem. Så en skådespelare är det extern källa eller informationsmottagare

    (användningsfall)
    Beskrivning av de åtgärder som utförs av systemet, vilket leder till ett betydande resultat för aktören

    (stat)
    En beskrivning av ett ögonblick i en entitets liv när den uppfyller något villkor, utför någon aktivitet eller väntar på att någon händelse ska inträffa.
    Samarbete
    (samarbete)
    Beskrivning av en uppsättning instanser av aktörer, objekt och deras interaktion i processen att lösa ett visst problem

    (komponent)
    Den fysiska delen av systemet (filen), inklusive systemmoduler som tillhandahåller implementeringen av en konsekvent uppsättning gränssnitt

    (gränssnitt)

    iCalculation
    En uppsättning operationer som definierar en tjänst (uppsättning tjänster) som tillhandahålls av en klass eller komponent

    (nod)
    Den fysiska delen av systemet (dator, skrivare etc.) som tillhandahåller resurser för att lösa ett problem
    Gruppering
    (paket)
    Allmän mekanism för att gruppera element.
    Till skillnad från en komponent är ett paket ett rent konceptuellt (abstrakt) koncept. Specialfall av ett paket är system och modell

    (fragment)
    Området för specifik interaktion mellan skådespelarinstanser och objekt

    (aktivitetspartition)
    En grupp av operationer (ansvarsområde) som utförs av en enhet (aktör, objekt, komponent, nod, etc.)

    (avbrottsbar aktivitetsregion)
    En grupp av operationer, vars normala sekvens av utförande kan avbrytas till följd av att en ovanlig situation inträffar
    Förklarande Notera
    (kommentar)
    Kommentar för elementet. Bifogas till det kommenterade elementet med en streckad linje

    Vissa källor, särskilt [,], identifierar också beteendemässiga enheter interaktioner Och ändliga tillståndsmaskiner, men ur en logisk synvinkel bör de klassificeras som diagram.

    Några av ovanstående enheter enligt antyder dem detaljerad beskrivning på nedbrytningsdiagram. På toppnivådiagrammet är de markerade med en speciell ikon eller etikett.

    Följande tabell ger en beskrivning av alla typer relationer UML används i diagram för att indikera relationer mellan enheter.

    Tabell 11.3. Relation

    namn Beteckning Definition (semantik)
    Förening Relationsbeskrivande meningsfull koppling mellan två eller flera enheter. Mest allmän form relation
    Aggregation En undertyp av association som beskriver förhållandet "del"–"hela", där "delen" kan existera separat från "helheten". Romben indikeras från "hela" sidan. Relationen anges endast mellan enheter av samma typ
    Sammansättning En undertyp av aggregering där "delarna" inte kan existera separat från "helheten". Som regel skapas och förstörs "delar" samtidigt med "helheten"
    Beroende En relation mellan två enheter där en förändring i en enhet (den oberoende) kan påverka tillståndet eller beteendet hos den andra enheten (den beroende). Pilsidan indikerar en oberoende enhet
    Generalisering Relationen mellan en generaliserad enhet (förfader, förälder) och en specialiserad enhet (ättling, dotter). Triangeln indikeras från förälderns sida. Relationen anges endast mellan enheter av samma typ
    Insikt En relation mellan enheter där en enhet specificerar en åtgärd som en annan enhet åtar sig att utföra. Relationer används i två fall: mellan gränssnitt och klasser (eller komponenter), mellan användningsfall och samarbeten. Pilsidan anger den enhet som definierar åtgärden (gränssnitt eller användningsfall)

    För association kan aggregering och sammansättning anges mångfald (eng. multiplicity), som kännetecknar det totala antalet instanser av enheter som deltar i relationen. Det anges vanligtvis på varje sida av relationen nära motsvarande enhet. Mångfalden kan anges på följande sätt:

    - * - valfritt antal kopior, inklusive inga;

    Icke-negativt heltal – multipliciteten är strikt fast och lika med det angivna talet (till exempel: 1, 2 eller 5);

    Område av icke-negativa heltal "första talet.. andra talet" (till exempel: 1..5, 2..10 eller 0..5);

    Ett intervall av tal från ett specifikt initialvärde till ett godtyckligt slutligt "första nummer.. *" (till exempel: 1..*, 5..* eller 0..*);

    Listar icke-negativa heltal och intervall separerade med kommatecken (till exempel: 1, 3..5, 10, 15..*).

    Om multipliciteten inte specificeras antas dess värde vara 1. Mångfalden av entitetsinstanser som deltar i beroende, generalisering och implementering antas alltid vara 1.

    Följande tabell ger en beskrivning expansionsmekanismer , används för att klargöra semantiken för enheter och relationer. I allmänhet är expansionsmekanismen en textsträng omsluten inom parentes eller citattecken.

    Tabell 11.4. Expansionsmekanismer

    namn Beteckning Definition (semantik)
    Stereotyp
    (stereotyp)
    « » En beteckning som specificerar semantiken för ett notationselement (till exempel: ett beroende med stereotypen "inkludera" anses vara en inklusionsrelation, och en klass med stereotypen "gräns" är en gränsklass)
    Skyddsskick
    (vakttillstånd)
    Booleskt tillstånd (till exempel: eller [identifiering slutförd])
    Begränsning
    (begränsning)
    { } En regel som begränsar semantiken för ett modellelement (till exempel (exekveringstid mindre än 10 ms))
    Flaggat värde
    (taggat värde)
    { } Ny eller förtydligande egenskap för ett notationselement (till exempel: (version = 3.2))

    Förutom stereotyper som anges som en textsträng inom citattecken, kan grafiska stereotyper användas i diagram. Följande bild visar exempel på standard och stereotyp display.

    a) standardbeteckning b) standardbeteckning
    med textstereotyp
    c) grafisk stereotyp

    Ris. 11.2. Exempel på standard och stereotyp klassvisning

    Diagram representerar en gruppering av notationselement för att visa någon aspekt av det utvecklade informationssystem. Diagram är vanligtvis en sammankopplad graf där entiteter är hörn och relationer är bågar. Följande tabell ger en kort beskrivning av UML-diagram.

    Tabell 11.5. Diagram

    Diagram Syfte
    beroende på graden av fysiskt genomförande genom att visa dynamik efter visad aspekt

    (användningsfall)
    Visar systemfunktioner, interaktioner mellan aktörer och funktioner Logisk Statisk Funktionell

    (klass)
    Visar en uppsättning klasser, gränssnitt och relationer mellan dem Logisk eller
    fysisk
    Statisk Funktionell och informativ

    (paket)
    Visar en uppsättning paket och relationerna mellan dem Logisk eller
    fysisk
    Statisk Komponent
    Beteenden
    (beteende)

    (statsmaskin)
    Visar tillstånden för en entitet och övergångar mellan dem under dess livscykel Logisk Dynamisk Beteende

    (aktivitet)
    Visar affärsprocesser i systemet (beskrivning av beteendealgoritmer)
    Interaktioner
    (samspel)

    (sekvens)
    Visar sekvensen av meddelanden som skickas mellan objekt och aktörer

    (kommunikation)
    Liknar ett sekvensdiagram, men tonvikten ligger på strukturen av interaktioner mellan objekt
    Genomföranden
    (genomförande)

    (komponent)
    Visar systemkomponenter (program, bibliotek, tabeller, etc.) och kopplingar mellan dem Fysisk Statisk Komponent

    (spridning)
    Visar placeringen av komponenter på nätverksnoder, såväl som dess konfiguration

    UML 2.x-standarden definierar även ytterligare, högt specialiserade diagram:

    Objektdiagram - liknande, men objekt visas istället för klasser;

    Tidsdiagram - beskriver tillståndet för ett objekt över tiden;

    Sammansatt strukturdiagram - beskriver portarna (inklusive gränssnitt) i en klass för interaktion med andra klasser;

    Profildiagram - liknande med en beskrivning av klasserna som ingår i dem;

    Interaktionsöversiktsdiagram - liknande, men med dolda interaktionsfragment (fragment märkta ref). Representerar en kontextuell (konceptuell), vars element kommer att specificeras på separata nedbrytningsdiagram.

    För syftet med en förstorad konceptuell representation av systemets interna arkitektur tillåter majoriteten av konstruktionen användningen av etablerade grafiska stereotyper för den så kallade. Ett sådant diagram kallas 1, men tillhör inte listan över diagram som definieras av UML-standarden.

    När man utvecklar en separat modell av ett system byggs flera typer av diagram. Dessutom, när man utvecklar en modell av ett komplext system, konstrueras som regel flera diagram av samma typ. Samtidigt behöver du inte skapa separata typer av diagram om det inte är nödvändigt. Till exempel, diagram och är utbytbara; de är byggda endast för objekt med komplext beteende. Följande tabell ger rekommendationer om behovet av att utveckla (förtydliga) diagram för systemmodeller.

    Tabell 11.6. Samband mellan modeller och diagram

    Tabellen nedan visar ingen testmodell, eftersom diagram som en del av dess konstruktion inte utvecklas, utan kontrolleras (testas) för fullständighet och konsistens.

    Vissa av diagrammen efter deras konstruktion kräver utveckling och förtydligande som en del av utvecklingen av nästa modell ( teknisk process). Så de bör till exempel förtydligas under utvecklingen. I modeller.

    4. Definiera begreppet " ".