Verktøy for å tegne UML-diagrammer. Modellering i UML. Generelle diagrammer Eksempel på diagrammer på uml-språk

UML er et enhetlig grafisk modelleringsspråk for å beskrive, visualisere, designe og dokumentere OO-systemer. UML er designet for å støtte prosessen med å modellere programvare basert på OO-tilnærmingen, organisere forholdet mellom konseptuelle og programkonsepter, og reflektere problemene med å skalere komplekse systemer. UML-modeller brukes i alle stadier av programvarens livssyklus, fra forretningsanalyse til systemvedlikehold. Ulike organisasjoner kan bruke UML slik de finner passende, avhengig av deres problemområder og teknologiene de bruker.

En kort historie om UML

På midten av 90-tallet hadde forskjellige forfattere foreslått flere dusin OO-modelleringsmetoder, som hver brukte sin egen grafiske notasjon. Dessuten hadde hver av disse metodene sine egne styrker, men lot ikke bygge nok full modell PS, vis det "fra alle sider", det vil si alle nødvendige fremspring (se artikkel 1). I tillegg gjorde mangelen på en OO-modelleringsstandard det vanskelig for utviklere å velge den mest passende metoden, noe som forhindret den utbredte bruken av OO-tilnærmingen til programvareutvikling.

På forespørsel fra Object Management Group (OMG), organisasjonen som er ansvarlig for vedtakelse av standarder innen objektteknologi og databaser, ble det presserende problemet med forening og standardisering løst av forfatterne av de tre mest populære OO-metodene - G Butch, D. Rambo og A. Jacobson, som sammen skapte versjon UML 1.1, godkjent av OMG i 1997 som standard.

UML er et språk

Ethvert språk består av et vokabular og regler for å kombinere ord for å skape meningsfulle konstruksjoner. Dette er spesielt hvordan programmeringsspråk er strukturert, for eksempel UML. Dens særtrekk er at språkordboken er dannet av grafiske elementer. Hvert grafisk symbol har en spesifikk semantikk, så en modell laget av en utvikler kan tydelig forstås av en annen, og også programvare, tolke UML. Spesielt herfra følger det at en programvaremodell presentert i UML automatisk kan oversettes til et OO-programmeringsspråk (som Java, C++, VisualBasic), det vil si hvis det er et godt visuelt modelleringsverktøy som støtter UML, som har bygget modellen, vil vi også motta en prøveprogramkode som tilsvarer denne modellen.

Det bør understrekes at UML er et språk, ikke en metode. Den forklarer hvilke elementer man skal lage modeller av og hvordan man leser dem, men sier ingenting om hvilke modeller som skal utvikles og i hvilke tilfeller. For å lage en metode basert på UML er det nødvendig å supplere den med en beskrivelse av programvareutviklingsprosessen. Et eksempel på en slik prosess er Rational Unified Process, som vil bli diskutert i påfølgende artikler.

UML-ordbok

Modellen er representert i form av enheter og relasjoner mellom dem, som er vist i diagrammer.

Enheter er abstraksjoner som er hovedelementene i modeller. Det er fire typer entiteter - strukturelle (klasse, grensesnitt, komponent, brukstilfelle, samarbeid, node), atferdsmessig (interaksjon, tilstand), gruppering (pakker) og annotering (kommentarer). Hver type enhet har sin egen grafiske representasjon. Enheter vil bli diskutert i detalj når du studerer diagrammene.

Forhold vise ulike sammenhenger mellom enheter. UML definerer følgende relasjonstyper:

  • Avhengighet viser en slik sammenheng mellom to enheter når en endring i en av dem - uavhengig - kan påvirke semantikken til den andre - avhengige. Avhengighet er representert med en stiplet pil rettet fra den avhengige enheten til den uavhengige.
  • assosiasjon er et strukturelt forhold som viser at objektene til en enhet er relatert til objektene til en annen. Grafisk vises en assosiasjon som en linje som forbinder de tilknyttede enhetene. Assosiasjoner tjener til å navigere mellom objekter. For eksempel kan assosiasjonen mellom klassene "Ordre" og "Produkt" brukes til å finne alle produkter spesifisert i en bestemt bestilling - på den ene siden, eller for å finne alle bestillinger som har dette produktet, - med en annen. Det er klart at de tilsvarende programmene må implementere en mekanisme som gir slik navigering. Hvis navigering i bare én retning er nødvendig, indikeres det med en pil på slutten av tilknytningen. Et spesielt tilfelle av assosiasjon er aggregering - et forhold av formen "hele" - "del". Grafisk er den uthevet med en diamant på slutten nær essensen-helheten.
  • Generalisering er forholdet mellom en overordnet enhet og en underordnet enhet. I hovedsak gjenspeiler dette forholdet arveegenskapen for klasser og objekter. Generaliseringen vises som en linje som slutter med en trekant rettet mot den overordnede enheten. Barnet arver strukturen (attributtene) og atferden (metodene) til forelderen, men samtidig kan det få nye strukturelementer og nye metoder. UML tillater multippel arv, der en enhet er relatert til mer enn én overordnet enhet.
  • Gjennomføring– forholdet mellom en enhet som definerer en spesifikasjon av atferd (grensesnitt) med en enhet som definerer implementeringen av denne atferden (klasse, komponent). Dette forholdet brukes ofte ved modellering av komponenter og vil bli beskrevet mer detaljert i påfølgende artikler.

Diagrammer. UML gir følgende diagrammer:

  • Diagrammer som beskriver oppførselen til systemet:
    • Statlige diagrammer
    • Aktivitetsdiagrammer,
    • Objektdiagrammer,
    • Sekvensdiagrammer,
    • Samarbeidsdiagrammer;
  • Diagrammer som beskriver den fysiske implementeringen av systemet:
    • Komponentdiagrammer;
    • Implementeringsdiagrammer.

Modellkontrollvisning. Pakker.

Vi har allerede sagt at for at en modell skal bli godt forstått av mennesker, er det nødvendig å organisere den hierarkisk, og etterlate et lite antall enheter på hvert nivå i hierarkiet. UML inkluderer et middel for å organisere en hierarkisk representasjon av en modell - pakker. Enhver modell består av et sett med pakker som kan inneholde klasser, brukstilfeller og andre enheter og diagrammer. En pakke kan inneholde andre pakker, slik at det kan lages hierarkier. UML gir ikke separate pakkediagrammer, men de kan vises i andre diagrammer. Pakken er avbildet som et rektangel med et bokmerke.

Hva UML gir.

  • hierarkisk beskrivelse av et komplekst system ved å identifisere pakker;
  • formalisering av funksjonelle krav til systemet ved å bruke apparatet for brukstilfeller;
  • detaljering av systemkrav ved å konstruere aktivitetsdiagrammer og scenarier;
  • identifisere dataklasser og konstruere en konseptuell datamodell i form av klassediagrammer;
  • identifisere klasser som beskriver brukergrensesnitt, og lage et skjermnavigasjonsskjema;
  • beskrivelse av prosessene for interaksjon av objekter når du utfører systemfunksjoner;
  • beskrivelse av objektadferd i form av aktivitets- og tilstandsdiagrammer;
  • beskrivelse av programvarekomponenter og deres interaksjon gjennom grensesnitt;
  • beskrivelse av den fysiske arkitekturen til systemet.

Og det siste...

Til tross for all attraktiviteten til UML, ville det være vanskelig å bruke i ekte programvaremodellering uten visuelle modelleringsverktøy. Slike verktøy lar deg raskt presentere diagrammer på skjermen, dokumentere dem, generere programkodemaler i ulike OO-programmeringsspråk og lage databaseskjemaer. De fleste av dem inkluderer muligheten for å omstrukturere programkoder - gjenopprette visse projeksjoner av programvaremodellen ved automatisk å analysere kildekoder til programmer, noe som er svært viktig for å sikre samsvar mellom modellen og kodene og når man designer systemer som arver funksjonaliteten til forgjengersystemer.

10.4. UML-DIAGRAMMER

10.4.1. Typer visuelle UML-diagrammer

UML lar deg lage flere typer visuelle diagrammer:

Bruk kasusdiagrammer;

Sekvensdiagrammer;

Kooperative diagrammer;

Klassediagrammer;

Statlige diagrammer;

Komponentdiagrammer;

Plasseringsdiagrammer.

Diagrammer illustrerer ulike aspekter ved systemet. For eksempel viser et samarbeidsdiagram hvordan objekter må samhandle for å implementere noen funksjonalitet i et system. Hvert diagram har sitt eget formål.

10.4.2. Bruk case-diagrammer

Use case-diagrammer viser interaksjonene mellom use cases, som representerer funksjonene til et system, og aktører, som representerer personene eller systemene som mottar eller overfører informasjon til dette systemet. Et eksempel på bruksskjema for en automatisert pengeautomat (ATM) er vist i fig. 10.1.

Ris. 10.1. Bruk case-diagram

Diagrammet representerer interaksjonene mellom use cases og aktører. Det gjenspeiler systemkravene fra brukerens synspunkt. Use cases er altså funksjonene som utføres av systemet, og aktører er interessentene i forhold til systemet som lages. Diagrammer viser hvilke aktører som setter i gang brukssaker. De viser også når en aktør mottar informasjon fra en use case. I hovedsak kan et use case-diagram illustrere systemkrav. I vårt eksempel initierer bankklienten ulike brukssaker: «Ta ut penger fra konto», «Overfør penger», «Sett inn penger på konto», «Vis saldo», «Endre ID-nummer», «Foreta betaling». Bankmedarbeideren kan sette i gang brukssaken Change Identification Number. Fra «Foreta betaling»-brukssaken er det en pil til kredittsystemet. Skuespillere kan være det eksterne systemer, i dette tilfellet vises kredittsystemet nøyaktig som en aktør - det er eksternt til minibanksystemet. En pil som peker fra en use case til en aktør indikerer at use casen gir noe informasjon til aktøren. I dette tilfellet gir brukssaken Utfør betaling kredittsystemet informasjon om kredittkortbetalingen.

Use case-diagrammer kan gi ganske mye informasjon om systemet. Denne typen diagram beskriver den generelle funksjonaliteten til systemet. Brukere, prosjektledere, analytikere, utviklere, kvalitetssikringsspesialister og alle som er interessert i systemet som helhet kan se på use case-diagrammer for å forstå hva systemet skal gjøre.

10.4.3. Sekvensdiagrammer

Sekvensdiagrammer viser flyten av hendelser som oppstår i en brukssak. Brukstilfellet "Ta ut penger" gir for eksempel flere mulige sekvenser: ta ut penger, forsøk på å ta ut penger når det ikke er nok penger på kontoen, forsøk på å ta ut penger med feil identifikasjonsnummer og noen andre. Et normalt scenario for å ta ut $20 fra en konto (i fravær av problemer som feil identifikasjonsnummer eller utilstrekkelige midler på kontoen) er vist i fig. 10.2.

Figur 10.2. Sekvensdiagram for Joes klient som tar ut $20 fra kontoen hans

Øverst i diagrammet viser alle aktørene og objektene som kreves av systemet for å utføre uttak av penger. Pilene tilsvarer meldinger som sendes mellom en aktør og et objekt eller mellom objekter for å utføre nødvendige funksjoner. Det bør også bemerkes at sekvensdiagrammet viser objekter, ikke klasser. Klasser er typer objekter. Gjenstander er konkrete; i stedet for klasse Klient Sekvensdiagrammet representerer en spesifikk kunde, Joe.

Brukssaken begynner når kunden setter inn kortet sitt i leseren - dette objektet vises i rektangelet øverst i diagrammet. Den leser kortnummeret, åpner Joe Account-objektet og initialiserer minibankskjermen. Skjermen ber Joe om registreringsnummeret hans. Kunden legger inn nummeret 1234. Skjermen sjekker nummeret mot Joe Account-objektet og finner at det er riktig. Skjermen viser deretter Joe med en meny å velge mellom, og han velger «Ta ut penger». Skjermen spør hvor mye han vil ta ut, og Joe legger inn $20. Skjermen trekker penger fra kontoen. Ved å gjøre det initierer den en rekke prosesser utført av "Joes konto"-objektet. Samtidig er det verifisert at denne kontoen inneholder iht i det minste, $20 og det nødvendige beløpet trekkes fra regningen. Kasseapparatet blir deretter instruert om å "utstede en sjekk og $20 i kontanter." Til slutt instruerer det samme "Joes konto"-objektet kortleseren om å returnere kortet.

Så, dette diagrammet Sekvensen illustrerer en sekvens av handlinger som implementerer brukssaken "Ta ut penger fra en konto" ved å bruke det spesifikke eksemplet med Joes klient som tar ut $20. Ved å se på dette diagrammet blir brukerne kjent med detaljene i arbeidet deres. Analytikere ser sekvensen (flyten) av handlinger, utviklere ser objektene som må opprettes og deres operasjoner. Kvalitetskontrollspesialister vil forstå detaljene i prosessen og kan utvikle tester for å verifisere dem. Dermed er sekvensdiagrammer nyttige for alle som er involvert i et prosjekt.

10.4.4. Kooperative diagrammer

Samarbeidsdiagrammer gjenspeiler den samme informasjonen som sekvensdiagrammer. Imidlertid gjør de det annerledes og med andre mål. Vist i fig. 10.2 sekvensdiagram er vist i fig. 10.3 i form av et samarbeidsdiagram.

Som før er gjenstander avbildet som rektangler, og karakterer som figurer. Mens et sekvensdiagram viser samspillet mellom aktører og objekter over tid, viser et samarbeidsdiagram ingen sammenheng over tid. Dermed kan du se at kortleseren instruerer "Joes konto" for å åpne, og "Joes konto" får enheten til å returnere kortet til eieren. Direkte samvirkende objekter er forbundet med linjer. Hvis for eksempel kortleseren kommuniserer direkte med minibankskjermen, skal det trekkes en strek mellom dem. Fraværet av en linje betyr at det ikke er direkte kommunikasjon mellom objekter.

Ris. 10.3. Samarbeidsdiagram som beskriver prosessen med å ta ut penger fra en konto

Så, et samarbeidsdiagram viser den samme informasjonen som et sekvensdiagram, men det er nødvendig for et annet formål. Kvalitetssikringsspesialister og systemarkitekter vil kunne forstå fordelingen av prosesser mellom objekter. La oss si at et slags samarbeidsdiagram ligner en stjerne, der flere objekter er knyttet til ett sentralt objekt. Systemarkitekten kan konkludere med at systemet er for avhengig av en sentral enhet og må redesignes for å fordele prosesser jevnere. I et sekvensdiagram vil denne typen interaksjon være vanskelig å se.

10.4.5. Klassediagrammer

Klassediagrammer gjenspeiler interaksjonene mellom klasser i et system. For eksempel er "Joes konto" et objekt. Typen av et slikt objekt kan betraktes som en konto generelt, det vil si at "Konto" er en klasse. Klasser inneholder data og atferd (handlinger) som påvirker disse dataene. Kontoklassen inneholder således klientens identifikasjonsnummer og handlingene som bekrefter det. I et klassediagram opprettes det en klasse for hver type objekt fra Sekvensdiagrammer eller Samarbeidsdiagrammer. Klassediagrammet for bruk av uttak av penger er vist i fig. 10.4.

Diagrammet viser relasjonene mellom klassene som implementerer uttak av penger. Det er fire klasser involvert i denne prosessen: kortleser, konto, minibankskjerm og kontantautomat. Hver klasse i et klassediagram er avbildet som et rektangel delt inn i tre deler. Den første delen indikerer navnet på klassen, den andre - dens attributter. Et attributt er noe informasjon som kjennetegner en klasse. For eksempel har kontoklassen tre attributter: kontonummer, PIN-kode og saldo. Den siste delen inneholder operasjonene til klassen, som gjenspeiler dens oppførsel(handlinger utført av klassen). Linjer som forbinder klasser viser interaksjoner mellom klasser.

Ris. 10.4. Klassediagram

Utviklere bruker klassediagrammer for å faktisk lage klasser. Verktøy som Rose genererer en kjerne av klassekode som programmerere fyller ut med detaljene på språket de velger. Ved å bruke disse diagrammene kan analytikere vise detaljene til et system og arkitekter kan forstå dets design. Hvis for eksempel en klasse har for mye funksjonell belastning, vil dette være synlig i klassediagrammet, og arkitekten kan omfordele den blant andre klasser. Diagrammet kan også hjelpe til med å identifisere tilfeller der ingen relasjoner er definert mellom kommuniserende klasser. Klassediagrammer bør lages for å vise de interagerende klassene i hvert brukstilfelle. Du kan også bygge mer generelle diagrammer som dekker alle systemer eller delsystemer.

10.4.6. Statlige diagrammer

Tilstandsdiagrammer er designet for å modellere de forskjellige tilstandene et objekt kan være i. Mens et klassediagram viser et statisk bilde av klasser og deres relasjoner, brukes tilstandsdiagrammer for å beskrive dynamikken i et systems oppførsel.

Tilstandsdiagrammer viser oppførselen til et objekt. Dermed kan en bankkonto ha flere forskjellige tilstander. Den kan være åpen, lukket eller overtrukket. Oppførselen til kontoen endres avhengig av tilstanden den befinner seg i. Tilstandsdiagrammet viser nøyaktig denne informasjonen. I fig. Figur 10.5 viser et eksempel på et tilstandsdiagram for en bankkonto.

Ris. 10.5. Tilstandsdiagram for kontoklassen

Dette diagrammet viser de mulige tilstandene til kontoen, samt prosessen med overgangen til kontoen fra en stat til en annen. For eksempel, hvis en klient ber om å stenge en åpen konto, går sistnevnte inn i "Lukket" tilstand. Klientens krav kalles begivenhet, det er hendelser som forårsaker overgangen fra en tilstand til en annen.

Når en kunde tar ut penger fra en åpen konto, kan kontoen gå inn i en overtrekkstilstand. Dette skjer bare hvis kontosaldoen er mindre enn null, noe som gjenspeiles av tilstanden [negativ saldo] i diagrammet vårt. Innelukket i firkantede parenteser betingelse bestemmer når en overgang fra en tilstand til en annen kan eller ikke kan skje.

Det er to spesielle tilstander i diagrammet - første Og endelig. Starttilstanden er uthevet med en svart prikk: den tilsvarer tilstanden til objektet på tidspunktet for opprettelsen. Den endelige tilstanden er indikert med en svart prikk i en hvit sirkel: den tilsvarer tilstanden til objektet rett før det ble ødelagt. Det kan være én og bare én starttilstand i et tilstandsdiagram. Samtidig kan det være så mange slutttilstander du trenger, eller det kan være ingen i det hele tatt.

Når et objekt er i en bestemt tilstand, kan visse prosesser utføres. I vårt eksempel, hvis kreditten overskrides, sendes en tilsvarende melding til klienten. Prosesser som oppstår når et objekt er i en bestemt tilstand kalles handlinger.

Statskart trenger ikke opprettes for hver klasse, de brukes kun i svært komplekse tilfeller. Hvis et objekt i en klasse kan eksistere i flere tilstander og oppfører seg forskjellig i hver tilstand, vil det sannsynligvis trenge et slikt diagram. Imidlertid bruker mange prosjekter dem ikke i det hele tatt. Hvis tilstandsdiagrammer er bygget, kan utviklere bruke dem når de oppretter klasser.

Statskart er hovedsakelig nødvendig for dokumentasjon.

10.4.7. Komponentdiagrammer

Komponentdiagrammer viser hvordan modellen ser ut i fysisk nivå. Den viser komponentene programvare systemet ditt og forbindelsene mellom dem. Det er to typer komponenter: kjørbare komponenter og kodebiblioteker.

I fig. Figur 10.6 viser et av komponentdiagrammene for et minibanksystem. Dette diagrammet viser komponentene til en ATM-systemklient. I dette tilfellet bestemte utviklingsteamet seg for å bygge systemet ved å bruke C++-språket. Hver klasse har sin egen overskriftsfil og utvidelsesfil. CPP, slik at hver klasse blir transformert til sine egne komponenter i diagrammet. Den valgte mørke komponenten kalles pakkespesifikasjon og tilsvarer ATM-klassens body-fil i C++ (fil med filtypen . CPP). En uvalgt komponent kalles også en pakkespesifikasjon, men tilsvarer en C++-språkklasseoverskriftsfil (fil med filtypen .H). ATM-komponent. EXE er en oppgavespesifikasjon og representerer informasjonsbehandlingsflyten. I dette tilfellet er behandlingstråden det kjørbare programmet.

Komponentene er forbundet med en stiplet linje, som representerer avhengighetene mellom dem. Et system kan ha flere komponentdiagrammer avhengig av antall delsystemer eller kjørbare filer. Hvert delsystem er en pakke med komponenter.

Komponentdiagrammer brukes av de prosjektdeltakerne som er ansvarlige for å sette sammen systemet. Komponentdiagrammet gir en ide om rekkefølgen komponenter skal kompileres i, samt hvilke kjørbare komponenter som vil bli opprettet av systemet. Diagrammet viser tilordningen av klasser til implementerte komponenter. Så det er nødvendig der kodegenerering begynner.

Ris. 10.6. Komponentdiagram

10.4.8. Plasseringsdiagrammer

Layoutdiagrammer viser den fysiske plasseringen av ulike systemkomponenter i et nettverk. I vårt eksempel består ATM-systemet av et stort antall undersystemer som kjører på separate fysiske enheter eller noder. Plasseringsdiagrammet for minibanksystemet er vist i fig. 10.7.

Fra dette diagrammet kan du lære om den fysiske utformingen av systemet. ATM-klientprogrammer vil kjøre på flere steder på flere nettsteder. Klienter vil kommunisere med den regionale ATM-serveren gjennom lukkede nettverk. Den vil kjøre ATM-serverprogramvaren. I sin tur gjennom lokalt nettverk regional server vil samhandle med en bankdatabaseserver som kjører Oracle. Til slutt kobles en skriver til den regionale ATM-serveren.

Så dette diagrammet viser den fysiske utformingen av systemet. For eksempel følger ATM-systemet vårt en trelagsarkitektur, med databasen på det første laget, den regionale serveren på det andre og klienten på det tredje.

10.7. Plasseringsdiagram

Et layoutdiagram brukes av prosjektleder, brukere, systemarkitekt og driftspersonell for å klargjøre den fysiske layouten til systemet og plasseringen av dets individuelle delsystemer. Prosjektlederen vil forklare brukerne hvordan det ferdige produktet vil se ut. Driftspersonell vil kunne planlegge systeminstallasjonsarbeidet.

Fra bok Microsoft Office forfatter Leontyev Vitaly Petrovich

Diagrammer Tallene i tabellen lar deg ikke alltid få et fullstendig inntrykk, selv om de er sortert på den mest praktiske måten for deg. Bruke de tilgjengelige fra Microsoft Excel maler diagrammer, kan du få et klart bilde av dataene i tabellen din, og ikke

Fra boken Datamaskin for 100. La oss begynne med Windows Vista forfatter Zozulya Yuri

Diagrammer Diagrammer brukes til å presentere tabelldata i grafisk form, som kan forbedre synligheten av informasjon betydelig, viser forholdet mellom ulike parametere eller dynamikken i endringen deres. For å sette inn diagrammer i Word, bruk verktøyene

Fra boken Effektivt kontorarbeid forfatter Ptashinsky Vladimir Sergeevich

Diagrammer Den mest visuelle Excel-evne er presentasjon av beregningsresultater eller akkumulerte data i form av grafer (diagrammer): noen ganger er de mest imponerende tallene ikke i stand til å overbevise på den måten som kan gjøres med selv enkel grafikk. Excel har

Fra en Excel-arbeidsbok. Multimediakurs forfatter Medinov Oleg

Kapittel 8 Diagrammer Ofte Excel-program brukes til å lage dokumenter som representerer ulike statistiske og analytiske rapporter. Dette kan være salgsrapporter, tabeller over lufttemperaturmålinger, data fra sosiologiske undersøkelser osv. Tall er ikke alltid.

Fra boken Word 2007. Populær opplæring forfatter Krainsky I

Bygge et diagram For det første eksemplet må du lage tabellen vist i fig. 8.1. Ris. 8.1. TemperaturmåletabellVi skal konstruere en enkel graf over temperaturendringer basert på dataene i denne tabellen.1. Velg det utfylte området i tabellen.2. Gå til

Fra boken Self-instruction manual for arbeid på en datamaskin forfatter Kolisnichenko Denis Nikolaevich

6.6. Diagrammer Unntatt grafiske filer, V Word-dokumenter du kan sette inn diagrammer. Ved hjelp av diagrammer kan du visuelt presentere numeriske data, for eksempel spore hvordan data endres, se utviklingen av et bestemt prosjekt over tid. Diagrammer blir like

Fra boken Objektorientert analyse og design med eksempler på applikasjoner i C++ av Butch Grady

14.9. Diagrammer Kanskje det er på tide å gjøre tørre tall om til grafikk, noe som gjør bordet vårt vakrere og mer informativt? Diagrammer brukes til dette. Uansett hva du sier, oppfattes et diagram bedre enn en tabell. For å konstruere et diagram, må du velge verdiene som

Fra boken Programmeringsteknologier forfatteren Kamaev V A

5.2. Klassediagrammer viktig: Klasser og deres relasjoner Et klassediagram viser klasser og deres relasjoner, og representerer dermed det logiske aspektet ved et design. Et eget klassediagram representerer et spesifikt syn på klassestrukturen. På analysestadiet vi

Fra boken Business Process Modeling with BPwin 4.0 forfatter Maklakov Sergey Vladimirovich

5.4. Objektdiagrammer Essensielt: Objekter og deres relasjoner Et objektdiagram viser eksisterende objekter og deres relasjoner i den logiske utformingen av et system. Med andre ord er et objektdiagram et øyeblikksbilde av flyten av hendelser i en eller annen konfigurasjon

Fra OrCAD PSpice-boken. Analyse elektriske kretser av Keown J.

5.7. Prosessdiagrammer. Viktig: Prosessorer, enheter og tilkoblinger Prosessdiagrammer brukes til å vise fordelingen av prosesser på tvers av prosessorer i en fysisk systemdesign. Et eget prosessdiagram viser ett syn på prosessstrukturen

Fra boken VBA for Dummies av Steve Cummings

10.4. UML-DIAGRAMMER 10.4.1. Typer visuelle diagrammer UMLUML lar deg lage flere typer visuelle diagrammer: bruk kasusdiagrammer; sekvensdiagrammer; samarbeidsdiagrammer; klassediagrammer; tilstandsdiagrammer; diagrammer

Fra boken Self-instruction manual for arbeid på Macintosh forfatter Sofia Skrylina

1.2.6. Diagramramme I fig. Figur 1.2.26 viser et typisk eksempel på et dekomponeringsdiagram med avgrensningsbokser kalt diagramrammen. Ris. 1.2.26. Eksempel på et dekomponeringsdiagram med en wireframe. Trådrammen inneholder en tittel ( øverste del rammer) og kjeller (nedre del).

Fra forfatterens bok

Tidsdiagrammer For å få tak i tidsdiagrammene for inngangs- og utgangsspenningene, må du endre inngangsfilen litt. Som i forrige eksempel vil en sinusformet inngangsspenning brukes: Vi 1 0 sin (0 0. 5V 5kHz) Sammen med transientanalyse

Fra forfatterens bok

Diagrammer og grafer Bare en ekspert kan skjelne meningen bak endeløse rader med tall, men alle kan forstå (eller i det minste hevde å forstå) et histogram eller et sektordiagram. VBA har ikke innebygde kartverktøy, men

Fra forfatterens bok

5.1.14. Diagram Diagrammer er grafiske representasjoner av numeriske data i en tabell. Pages tilbyr flere typer diagrammer: kolonne, stablet kolonne, stolpediagram, stablet stolpediagram, linje, areal, stablet areal

Fra forfatterens bok

5.2.8. Diagrammer Et diagram er en grafisk representasjon av data fra et valgt område. For å bygge et diagram, følg følgende algoritme1. Lag en tabell med beregnede verdier.2. Velg ønsket område (det kan bestå av ikke-tilstøtende rektangulære

Jeg tror alle har hørt i barndommen et ordtak som " Syv ganger måle kuttet en gang". Det er det samme i programmering. Det er alltid bedre å tenke på implementeringen før du bruker tid på å utføre den. Når du implementerer den, må du ofte lage klasser og finne på samspillet deres. Og ofte kan en visuell representasjon av dette hjelpe løse problemet på den mest korrekte måten. Det er her vi hjelper UML.

Hva er UML?

Hvis du ser på bildene i søkemotorer, så blir det klart det UML– det handler om diagrammer, piler og firkanter. Det som er viktig er at UML oversettes som Unified Modeling Language. Ordet Unified er viktig her. Det vil si at bildene våre vil bli forstått ikke bare av oss, men også av andre som kjenner UML. Det viser seg at dette er et internasjonalt språk for å tegne diagrammer.

Som Wikipedia sier

UML er et grafisk beskrivelsesspråk for objektmodellering i programvareutvikling, forretningsprosessmodellering, systemdesign og visning av organisasjonsstrukturer.
Det mest interessante som ikke alle tenker på eller innser er at UML har spesifikasjoner. Dessuten er det til og med en UML2-spesifikasjon. Mer detaljer om spesifikasjonen kan finnes på Object Management Group-nettstedet. Faktisk utvikler denne gruppen UML-spesifikasjoner. Det er også interessant at UML ikke er begrenset til å beskrive strukturen til klasser. Det finnes mange typer UML-diagrammer. En kort beskrivelse av typene UML-diagrammer kan sees i samme Wikipedia: UML - diagrammer eller i videoen til Timur Batyrshinov Oversikt over UML-diagrammer. UML er også mye brukt for å beskrive ulike prosesser, for eksempel her: Single sign-on med JWT. For å gå tilbake til bruken av UML-klassediagrammer, er det verdt å merke seg boken Head First: Design Patterns, der mønstrene er illustrert av de samme UML-diagrammene. Det viser seg at UML faktisk blir brukt. Og det viser seg at kunnskap og forståelse av applikasjonen er ganske nyttig ferdighet.

applikasjon

La oss se på hvordan du kan jobbe med denne samme UML fra IDE. La oss ta som IDE IntelliJ-idé. Hvis du bruker IntelliJ Idea Ultimate, så vil vi ha plugin installert "ut av esken" UML-støtte". Den lar deg automatisk generere vakre klassediagrammer. For eksempel, gjennom Ctrl+N eller menyelementet "Naviger" -> "Klasse" går vi til klassen ArrayList. Nå, gjennom kontekstmenyen for klassenavnet, velg "Diagram" -> "Vis diagram popup". Som et resultat får vi et vakkert diagram:

Men hva om du vil tegne det selv, og selv om du ikke gjør det Ultimate versjon Idé? Hvis vi bruker IntelliJ Idea Community Edition, har vi ikke noe annet valg. For å gjøre dette må du forstå hvordan et slikt UML-diagram er strukturert. Først må vi installere Graphviz. Dette er et sett med verktøy for å visualisere grafer. Den brukes av plugin-en som vi skal bruke. Etter installasjonen må du legge til en katalog bin fra den installerte katalogen Graphviz til miljøvariabelen STI. Etter det, i IntelliJ Idea, velg Fil -> Innstillinger fra menyen. I vinduet "Innstillinger", velg kategorien "Plugins", klikk på "Bla gjennom repositories"-knappen og installer PlantUML-integrasjonsplugin. Hvorfor er denne så bra? PlantUML? Den bruker et grafbeskrivelsesspråk kalt " punktum"og dette gjør at det kan være mer universelt, fordi... gitt språk Ikke bare PlantUML brukes. Dessuten kan alt vi gjør nedenfor gjøres ikke bare i IDE, men også i online tjeneste planttext.com. Etter å ha installert PlantUML-pluginen, vil vi kunne lage UML-diagrammer gjennom "Fil" -> "Ny". La oss lage et diagram av typen "UML-klasse". Under denne prosessen genereres det automatisk en mal med et eksempel. La oss slette innholdet og lage vårt eget, bevæpnet med en artikkel fra Habr: Klasseforhold – fra UML til kode. Og for å forstå hvordan du skildre dette i teksten, la oss ta PlantUML-manualen: plantuml klassediagram. Helt i begynnelsen er det en tabell som viser hvordan forbindelser skal beskrives:

Vi kan også se på selve sammenhengene her: "Relasjoner mellom klasser i UML. Eksempler." Basert på disse materialene, la oss begynne å lage UML-diagrammet vårt. La oss legge til følgende innhold som beskriver de to klassene: @startuml class ArrayList ( ) class LinkedList ( ) @enduml For å se resultatet i Idea, velg "View" -> " Verktøy Windows" -> "PlantUML". Vi vil ganske enkelt få to firkanter som angir klasser. Som vi vet implementerer begge disse klassene List-grensesnittet. Dette klasseforholdet kalles implementering. For å avbilde et slikt forhold, bruk en pil med stiplet linje. La oss skildre det: grensesnitt List List< | . . ArrayList List < | . . LinkedList List - один из дочерних классов Collection . То есть он наследуется от Collection. Эта связь называется обобщением (generalization). Выглядит как стрелка с обычной непрерывной линией. Изобразим её: interface Collection Collection < | -- List Для следующего типа связи добавим в описание класса ArrayList запись о pakke privat array of elements: ~ Object elementData Nå ønsker vi å vise at ArrayList inneholder noen objekter. I dette tilfellet vil tilkoblingstypen være - aggregering(sammenslåing). Aggregatet i dette tilfellet er ArrayList, fordi den inneholder andre objekter. Vi velger aggregering fordi objekter i listen kan leve uten listen: de er ikke integrerte deler av den. Levetiden deres er ikke knyttet til listens levetid. Aggregat er oversatt fra latin som "samlet", det vil si noe som består av noe. For eksempel, i livet, er det en pumpeenhet, som består av en pumpe og en motor. Selve enheten kan demonteres, noe av det blir igjen komponenter. For eksempel å selge eller sette inn i en annen enhet. Det samme er listen. Og dette kommer til uttrykk i form av en tom diamant nær enheten og en kontinuerlig linje. La oss skildre det som følger: klasse Object ( ) ArrayList o- Object Nå ønsker vi å vise at, i motsetning til ArrayList, inneholder LinkedList-klassen Node - containere som refererer til lagrede data. I dette tilfellet er noder en del av selve LinkedList og kan ikke leve separat. Node lagrer ikke innholdet direkte, men inneholder kun en lenke til det. For eksempel, når vi legger til en rad i en LinkedList, legger vi til en ny node som inneholder en lenke til den raden, samt en lenke til forrige og neste node. Denne typen tilkobling kalles komposisjon(Komposisjon). For å vise en kompositt (en som består av deler), tegnes en farget diamant, med en kontinuerlig linje som fører til den. La oss nå skrive dette i form av en tekstvisning av forbindelsen: klasse Node ( ) LinkedList * -- Node Og nå må vi lære å vise en annen viktig type kommunikasjon - avhengighet(avhengighetsforhold). Den brukes når en klasse bruker en annen, og klassen inneholder ikke klassen som brukes og er ikke dens etterkommer. For eksempel kan LinkedList og ArrayList lage en ListIterator. La oss vise dette som piler med en stiplet linje: klasse ListIterator ListIterator< . . . ArrayList : create ListIterator < . . . LinkedList : create Выглядеть после всего это будет следующим образом:

Du kan gå inn i så mange detaljer som nødvendig. Alle betegnelser er angitt her: "PlantUML - Klassediagram". I tillegg er det ikke noe overnaturlig i å tegne et slikt diagram, og når du jobber med oppgavene dine, kan du raskt tegne det for hånd. Dette vil utvikle ferdighetene dine i å tenke gjennom applikasjonsarkitektur og hjelpe deg med å identifisere klassestrukturfeil tidlig, i stedet for etter at du har brukt dagen på å implementere feil modell. Jeg tror det er en god grunn til å prøve det?)

Automasjon

Spise ulike måter automatisk generering av PlantUML-diagrammer. For eksempel i Idé Det er en SketchIT-plugin, men den tegner dem ikke helt riktig. For eksempel er implementeringen av grensesnitt tegnet feil (vises som arv). Det finnes også eksempler på Internett på hvordan man bygger dette inn Livssyklus bygge prosjektet ditt. La oss si for Maven det er et eksempel på bruk av uml-java-docklet. For å vise hvordan dette gjøres, vil vi bruke Maven Archetype til rask opprettelse Maven-prosjektet. La oss kjøre kommandoen: mvn archetype:generate På spørsmålet om å velge et filter ( Velg et tall eller bruk filter) forlate standard ved å trykke på Enter. Det vil alltid være" maven-arketype-hurtigstart". Velg den nyeste versjonen. Svar deretter på spørsmålene og fullfør opprettelsen av prosjektet:

Siden Maven ikke er fokus i denne artikkelen, kan du finne svar på dine Maven-spørsmål i Maven Users Center. I det genererte prosjektet åpner du prosjektbeskrivelsesfilen for redigering, pom.xml. La oss kopiere innholdet fra beskrivelsen av uml-java-docklet som installeres i den. Artefakten som ble brukt i beskrivelsen ble ikke funnet i Maven Central-depotet. Men det fungerte for meg med dette: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0. Det vil si, du trenger bare å erstatte i den beskrivelsen gruppe-ID Med " info.leadinglight"på" com.chfourie"og installer versjonen" 1.0.0 ". Etter dette kan vi kjøre i katalogen der filen ligger pom.xml disse kommandoene: mvn clean install og mvn javadoc:javadoc . Nå, hvis vi åpner den genererte dokumentasjonen (explorer target\site\apidocs\index.html), vil vi se UML-diagrammene. Forresten, implementeringen vises allerede riktig her)

Konklusjon

Som du kan se, lar UML deg visualisere strukturen til applikasjonen din. Dessuten er UML ikke begrenset til nettopp dette. Ved hjelp av UML kan du beskrive ulike prosesser i din bedrift eller beskrive forretningsprosessen som funksjonen du skriver fungerer innenfor. Hvor nyttig UML er for deg personlig er opp til deg å bestemme, men å ta deg tid til å lese den mer detaljert vil uansett være nyttig. #Viacheslav engelsk versjon av dette innlegget: UML diagram Java på CodeGym

Merknad: Emnet for dette kurset er The UML - the Unified Modeling Language. Det forrige foredraget snakket om hva UML er, dets historie, formål, måter å bruke språket på, strukturen i dets definisjon, terminologi og notasjon. Det har blitt lagt merke til at en UML-modell er et sett med diagrammer. I denne forelesningen vil vi vurdere følgende spørsmål: hvorfor trengs det flere typer diagrammer; typer diagrammer; OOP og diagramsekvens

Før vi går videre til å diskutere hovedmaterialet i denne forelesningen, la oss snakke om hvorfor vi trenger å bygge noen diagrammer i det hele tatt. Utviklingen av en modell av et hvilket som helst system (ikke bare programvare) går alltid foran opprettelsen eller oppdateringen. Dette er i det minste nødvendig for å tydeligere forestille seg at problemet blir løst. Gjennomtenkte modeller er svært viktige både for samhandling innad i utviklingsteamet og for gjensidig forståelse med kunden. Til syvende og sist sikrer dette at designet er "arkitektonisk konsistent" før det implementeres i kode.

Vi bygger modeller av komplekse systemer fordi vi ikke kan beskrive dem fullstendig, "ta et blikk på dem." Derfor fremhever vi bare egenskapene til systemet som er essensielle for en spesifikk oppgave og bygger modellen som viser disse egenskapene. Metoden for objektorientert analyse lar oss beskrive virkelige komplekse systemer på den mest adekvate måten. Men etter hvert som kompleksiteten til systemene øker, oppstår behovet for god modelleringsteknologi. Som vi allerede sa i forrige forelesning, en enhetlig modelleringsspråk(Unified Modeling Language, UML), som er et grafisk språk for å spesifisere, visualisere, designe og dokumentere systemer. Ved å bruke UML kan du utvikle en detaljert modell av systemet som opprettes, som gjenspeiler ikke bare konseptet, men også spesifikke funksjoner ved implementeringen. Innenfor UML-modellen er alle ideer om systemet registrert i form av spesielle grafiske strukturer kalt diagrammer.

Merk. Vi vil vurdere ikke alle, men bare noen av typene diagrammer. For eksempel er ikke komponentdiagrammet dekket i denne forelesningen, som kun er det en kort oversikt typer diagrammer. Antall diagramtyper for spesifikk modell applikasjoner er ikke begrenset på noen måte. Til enkle applikasjoner det er ikke nødvendig å bygge diagrammer av alle typer uten unntak. Noen av dem kan rett og slett mangle, og dette faktum vil ikke bli ansett som en feil. Det er viktig å forstå at tilgjengeligheten til visse typer diagrammer avhenger av spesifikasjonene til et bestemt prosjekt. Informasjon om andre typer diagrammer (ikke omtalt her) finnes i UML-standarden.

Hvorfor du trenger flere typer diagrammer

Først, la oss definere terminologien. I innledningen til denne forelesningen har vi gjentatte ganger brukt begrepene system, modell og diagram. Forfatteren er sikker på at hver enkelt av oss intuitivt forstår betydningen av disse konseptene, men for å gjøre det helt klart, la oss se på ordlisten igjen og lese følgende:

System- et sett av sammenkoblede kontrollerte delsystemer forent av et felles formål med driften.

Ja, ikke særlig informativ. Hva er da et delsystem? For å avklare situasjonen, la oss gå til klassikerne:

System refererer til et sett med delsystemer organisert for å oppnå et spesifikt mål og beskrevet ved hjelp av et sett med modeller, muligens fra forskjellige synsvinkler.

Vel, det er ingenting du kan gjøre, du må se etter en definisjon av et undersystem. Det står det også der delsystem er en samling av elementer, hvorav noen spesifiserer oppførselen til andre elementer. Ian Sommerville forklarer dette konseptet på denne måten:

Subsystem er et system hvis funksjon ikke er avhengig av tjenestene til andre delsystemer. Programvaresystemet er strukturert som en samling av relativt uavhengige delsystemer. Samspillet mellom delsystemer er også definert.

Det er heller ikke veldig tydelig, men det er bedre. Når vi snakker på "menneskelig" språk, er systemet representert som et sett med enklere enheter som er relativt selvforsynt. Dette kan sammenlignes med hvordan vi i prosessen med å utvikle et program bygger GUI fra standard "kuber" - visuelle komponenter, eller hvordan selve programteksten også er delt inn i moduler som inneholder subrutiner, forent av funksjonalitet, og de kan gjenbrukes i påfølgende programmer.

Vi forstår konseptet med et system. Under designprosessen vurderes systemet fra ulike synsvinkler ved hjelp av modeller, hvis ulike representasjoner vises i form av diagrammer. Igjen kan leseren ha spørsmål om betydningen av begrepene modeller Og diagrammer. Vi synes det er en vakker, men ikke veldig klar definisjon modeller som en semantisk lukket abstraksjon av systemet Det er usannsynlig å avklare situasjonen, så vi vil prøve å forklare "med våre egne ord."

Modell- dette er et bestemt (materiell eller ikke) objekt som viser bare de viktigste egenskapene til systemet for en gitt oppgave. Modeller er forskjellige - materielle og immaterielle, kunstige og naturlige, dekorative og matematiske...

La oss gi noen eksempler. Plastlekebilene som er kjent for oss alle, som vi lekte med så spenning i barndommen, er ikke annet enn materiale kunstig dekorativ modell av en ekte bil. Selvfølgelig har en slik "bil" ikke en motor, vi fyller ikke tanken med bensin, og girkassen fungerer ikke (det er faktisk ingen girkasse i det hele tatt), men som en modell oppfyller dette leketøyet sine funksjoner. : det gir barnet en ide om bilen, siden den viser sine karakteristiske trekk er tilstedeværelsen av fire hjul, et karosseri, dører, vinduer, evne til å kjøre, etc.

I medisinsk forskning går dyreforsøk ofte før kliniske forsøk på mennesker. I dette tilfellet fungerer dyret som materiale naturlig menneskelige modeller.

Ligningen som er avbildet ovenfor er også en modell, men den er en matematisk modell, og den beskriver bevegelsen til et materiell punkt under påvirkning av tyngdekraften.

Alt som gjenstår er å si hva et diagram er. Diagram er en grafisk representasjon av mange elementer. Vanligvis avbildet som en graf med toppunkter (entiteter) og kanter (relasjoner). Det er mange eksempler på diagrammer. Dette er et blokkdiagram som er kjent for oss alle fra skoleårene, og installasjonsdiagrammer for diverse utstyr, som vi kan se i brukermanualer, og et tre med filer og kataloger på disken, som vi kan se ved å utføre Windows-konsoll trekommando, og mye, mye mer. I hverdagen omgir diagrammer oss på alle kanter, fordi vi oppfatter tegninger lettere enn tekst...

Men la oss gå tilbake til programvaredesign (og mer). I denne bransjen med Diagrammer kan brukes til å visualisere et system fra ulike perspektiver. Et av diagrammene kan for eksempel beskrive brukerens interaksjon med systemet, et annet kan beskrive endringen i systemets tilstander under driften, det tredje kan beskrive samspillet mellom systemelementer med hverandre osv. Et komplekst system kan og bør representeres som et sett med små og nesten uavhengige modeller - diagrammer, og ingen av dem er tilstrekkelig til å beskrive systemet og få et fullstendig bilde av det, siden hver av dem fokuserer på et spesifikt aspekt av systemets funksjon og uttrykker en annen abstraksjonsnivå. Med andre ord tilsvarer hver modell et bestemt, spesielt synspunkt på det utformede systemet.

Til tross for at vi i forrige avsnitt behandlet konseptet med en modell veldig fritt, bør det forstås at i sammenheng med definisjonene ovenfor ingen individuelle diagram er en modell. Diagrammer er kun et middel for å visualisere en modell, og de to begrepene må skilles. Bare et sett med diagrammer utgjør en systemmodell og beskriver det mest fullstendig, men ikke bare ett diagram tatt ut av kontekst.

Typer diagrammer

UML 1.5 definert tolv diagramtyper, delt inn i tre grupper:

  • fire typer diagrammer representerer den statiske strukturen til applikasjonen;
  • fem representerer atferdsaspekter ved systemet;
  • tre representerer de fysiske aspektene ved systemets drift (implementeringsdiagrammer).

Den nåværende versjonen av UML 2.1 har ikke gjort for mange endringer. Diagrammene har endret seg litt i utseende (rammer og andre visuelle forbedringer har dukket opp), notasjonen er litt forbedret, og noen diagrammer har fått nye navn.

Men det nøyaktige antallet kanoniske diagrammer for oss er det helt uviktig, siden vi ikke vil vurdere alle, men bare noen - av den grunn at antall diagramtyper for en spesifikk modell av en spesifikk applikasjon ikke er strengt fastsatt. For enkle applikasjoner er det ikke nødvendig å bygge hvert eneste diagram. For en lokal applikasjon er det for eksempel ikke nødvendig å bygge et distribusjonsdiagram. Det er viktig å forstå at listen over diagrammer avhenger av detaljene i prosjektet som utvikles og bestemmes av utvikleren selv. Hvis den nysgjerrige leser fortsatt ønsker å vite om alle UML-diagrammene, vil vi henvise ham til UML-standarden (http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML). La oss minne deg på at formålet med dette kurset ikke er å beskrive absolutt alle egenskapene til UML, men bare å introdusere dette språket og gi en første idé om denne teknologien.

Så vi vil kort se på slike typer diagrammer som:

  • bruk case diagram;
  • klasse diagram;
  • objektdiagram;
  • sekvensdiagram;
  • interaksjonsdiagram;
  • tilstandsdiagram;
  • aktivitetsdiagram;
  • distribusjonsdiagram.

Vi vil snakke mer om noen av disse diagrammene i fremtidige forelesninger. Foreløpig vil vi ikke fokusere på detaljene, men vil sette oss som mål å lære leseren å i det minste visuelt skille mellom typene diagrammer og gi en innledende idé om formålet med hovedtypene av diagrammer. Så la oss begynne.

Bruk case-diagram

Alle (inkludert programvare) systemer er utformet med tanke på at de under driften vil bli brukt av mennesker og/eller samhandle med andre systemer. Enhetene som systemet samhandler med under driften kalles skuespillere, og hver aktør forventer at systemet oppfører seg på en strengt definert, forutsigbar måte. La oss prøve å gi en mer streng definisjon av en aktør. For å gjøre dette, vil vi bruke en fantastisk visuell ordbok for UML Zicom mentor:

Ector (skuespiller)- dette er et sett med logisk relaterte roller som utføres når du samhandler med presedenser eller enheter (system, undersystem eller klasse). En aktør kan være en person eller et annet system, subsystem eller klasse som representerer noe utenfor enheten.

Grafisk er ektoren avbildet enten " liten mann", lik de vi tegnet som barn, som viser medlemmer av familien vår, eller klassesymbol med tilhørende stereotypi, som vist på bildet. Begge representasjonsformer har samme betydning og kan brukes i diagrammer. Den "stereotype"-formen brukes oftere for å representere systemaktører eller i tilfeller der en aktør har egenskaper og de må vises (fig. 2.1).

En oppmerksom leser kan umiddelbart spørre: hvorfor en skuespiller og ikke en skuespiller? Vi er enige, ordet "ektor" er litt hardt for russiske folks ører. Grunnen til at vi sier dette er enkel - ector er avledet fra ordet handling, som oversatt betyr handling. Den bokstavelige oversettelsen av ordet "ector" er skuespiller- for lang og upraktisk å bruke. Derfor vil vi fortsette å snakke på denne måten.


Ris. 2.1.

Den samme oppmerksomme leseren kan ha lagt merke til at ordet "presedens" blinker gjennom ektorens definisjon. Hva er det? Dette spørsmålet vil interessere oss enda mer hvis vi husker det vi nå snakker om bruk case diagram. Så,

Use-case- beskrivelse av et eget aspekt av systematferd fra brukerens synspunkt (Butch).

Definisjonen er ganske klar og omfattende, men den kan avklares ytterligere ved hjelp av den samme Zicom mentor"om:

Bruk case- en beskrivelse av et sett med sekvensielle hendelser (inkludert alternativer) utført av systemet som fører til resultatet observert av skuespilleren. Et use case representerer oppførselen til en enhet, og beskriver samspillet mellom aktører og systemet. En brukstilfelle viser ikke "hvordan" et bestemt resultat oppnås, bare "hva" som oppnås.

Presedenser er utpekt på en veldig enkel måte - i form av en ellipse, hvor navnet er angitt. Use cases og aktører kobles sammen ved hjelp av linjer. Ofte er en figur tegnet i den ene enden av linjen. 2.3

  • dannelse av generelle krav til oppførselen til det utformede systemet;
  • utvikling av en konseptuell modell av systemet for påfølgende detaljering;
  • utarbeidelse av dokumentasjon for samhandling med kunder og systembrukere.
  • 11.1. Strukturen til Unified Modeling Language

    Unified Modeling Language (UML) er i dag de facto-standarden for å beskrive (dokumentere) resultatene av design og utvikling av objektorienterte systemer. Utviklingen av UML begynte i 1994 av Grady Booch og James Rumbaugh, som jobbet hos Rational Software. Høsten 1995 ble Ivar Jacobson med dem og i oktober samme år ble en foreløpig versjon 0.8 av Unified Method utgitt. Siden den gang har flere versjoner av UML-spesifikasjonen blitt utgitt, hvorav to har internasjonal standardstatus:

    UML 1.4.2 – "ISO/IEC 19501:2005. Informasjonsteknologi. Åpen distribusjonsbehandling. Unified Modeling Language (UML). Versjon 1.4.2" (engelsk "Informasjonsteknologi. Åpen distribuert prosessering. Unified modeling language (UML). Versjon 1.4.2");

    UML 2.4.1 - "ISO/IEC 19505-1:2012. Informasjonsteknologi. 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") og "ISO/IEC 19505-2:2012. Informasjonsteknologi. Object Management Group Unified Modeling Language (OMG UML). Del 2. Superstructure" (eng. "Information technology -- Object Management Group Unified Modeling Language (OMG UML) - Del 2: Overbygning").

    Den siste offisielle språkspesifikasjonen finner du på www.omg.org.

    Den generelle strukturen til UML er vist i følgende figur.

    Ris. 11.1. UML struktur

    11.2. UML semantikk og syntaks

    Semantikk - en gren av lingvistikk som studerer betydningen av språkenheter, først og fremst dens ord og uttrykk.

    Syntaks – måter å kombinere ord og deres former til fraser og setninger, kombinere setninger til komplekse setninger, måter å lage utsagn på som en del av en tekst.

    Derfor, i forhold til UML, bestemmer semantikk og syntaks presentasjonsstilen (modellbygging), som kombinerer naturlige og formelle språk for å representere grunnleggende konsepter (modellelementer) og mekanismer for deres utvidelse.

    11.3. UML-notasjon

    Notasjon er en grafisk tolkning av semantikk for dens visuelle representasjon.

    UML definerer tre enhetstype :

    Strukturell - en abstraksjon som er en refleksjon av et konseptuelt eller fysisk objekt;

    Gruppering – et element som brukes for en semantisk kombinasjon av diagramelementer;

    Forklarende (annotativ) – en kommentar til et diagramelement.

    Følgende tabell viser Kort beskrivelse hovedenhetene som brukes i grafisk notasjon, og de viktigste måtene å vise dem på.

    Tabell 11.1. Enheter

    Type Navn Betegnelse Definisjon (semantikk)
    Strukturell
    (klasse)
    Mange gjenstander som har generell struktur og oppførsel

    (gjenstand)
    En abstraksjon av en ekte eller forestilt enhet med klart definerte konseptuelle grenser, personlighet, tilstand og atferd. Fra et UML-synspunkt er objekter forekomster av en klasse (forekomster av en enhet)

    (skuespiller)

    Ingeniør
    stitjenester
    En enhet utenfor systemet som samhandler med og bruker systemet funksjonalitetå oppnå bestemte mål eller løse spesielle problemer. Så en skuespiller er ekstern kilde eller informasjonsmottaker

    (brukstilfelle)
    Beskrivelse av handlingene utført av systemet, som fører til et betydelig resultat for aktøren

    (stat)
    En beskrivelse av et øyeblikk i livet til en enhet når den oppfyller en betingelse, utfører en aktivitet eller venter på at en hendelse skal inntreffe.
    Samarbeid
    (samarbeid)
    Beskrivelse av et sett med forekomster av aktører, objekter og deres interaksjon i prosessen med å løse et bestemt problem

    (komponent)
    Den fysiske delen av systemet (fil), inkludert systemmoduler som gir implementering av et konsistent sett med grensesnitt

    (grensesnitt)

    iBeregning
    Et sett med operasjoner som definerer en tjeneste (sett med tjenester) levert av en klasse eller komponent

    (node)
    Den fysiske delen av systemet (datamaskin, skriver osv.) som gir ressurser til å løse et problem
    Gruppering
    (pakke)
    Generell mekanisme for gruppering av elementer.
    I motsetning til en komponent er en pakke et rent konseptuelt (abstrakt) konsept. Spesielle tilfeller av en pakke er system og modell

    (fragment)
    Området med spesifikk interaksjon mellom aktørforekomster og objekter

    (aktivitetspartisjon)
    En gruppe operasjoner (ansvarsområde) utført av én enhet (aktør, objekt, komponent, node, etc.)

    (avbrytbar aktivitetsregion)
    En gruppe operasjoner, hvis normale sekvens av utførelse kan avbrytes som et resultat av forekomsten av en uvanlig situasjon
    Forklarende Merk
    (kommentar)
    Kommentar til elementet. Festes til det kommenterte elementet med en stiplet linje

    Noen kilder, spesielt [,], identifiserer også atferdsenheter interaksjon Og endelige tilstandsmaskiner, men fra et logisk synspunkt bør de klassifiseres som diagrammer.

    Noen av enhetene ovenfor antyder dem Detaljert beskrivelse på dekomponeringsdiagrammer. På toppnivådiagrammet er de merket med et spesielt ikon eller etikett.

    Tabellen nedenfor gir en beskrivelse av alle typer relasjoner UML brukt i diagrammer for å indikere forhold mellom enheter.

    Tabell 11.3. Forhold

    Navn Betegnelse Definisjon (semantikk)
    assosiasjon Relasjonsbeskrivende meningsfull forbindelse mellom to eller flere enheter. Mest generell form forhold
    Aggregasjon En undertype av assosiasjon som beskriver forholdet «del»–«hele», der «delen» kan eksistere separat fra «helheten». Romben er indikert fra "hele" siden. Forholdet spesifiseres kun mellom enheter av samme type
    Komposisjon En undertype av aggregering der "delene" ikke kan eksistere atskilt fra "helheten". Som regel blir "deler" opprettet og ødelagt samtidig med "helheten"
    Avhengighet Et forhold mellom to enheter der en endring i en enhet (den uavhengige) kan påvirke tilstanden eller oppførselen til den andre enheten (den avhengige). Pilsiden indikerer en uavhengig enhet
    Generalisering Forholdet mellom en generalisert enhet (forfar, forelder) og en spesialisert enhet (etterkommer, datter). Trekanten er angitt fra foreldrenes side. Forholdet spesifiseres kun mellom enheter av samme type
    Realisering Et forhold mellom enheter der en enhet spesifiserer en handling som en annen enhet påtar seg å utføre. Relasjoner brukes i to tilfeller: mellom grensesnitt og klasser (eller komponenter), mellom brukstilfeller og samarbeid. Pilsiden indikerer enheten som definerer handlingen (grensesnitt eller brukstilfelle)

    For assosiasjon kan aggregering og sammensetning spesifiseres mangfold (eng. multiplicity), som karakteriserer det totale antallet forekomster av enheter som deltar i forholdet. Det er vanligvis indikert på hver side av forholdet nær den tilsvarende enheten. Multiplisiteten kan angis på følgende måter:

    - * - et hvilket som helst antall kopier, inkludert ingen;

    Ikke-negativt heltall – multiplisiteten er strengt tatt fast og lik det angitte tallet (for eksempel: 1, 2 eller 5);

    Område for ikke-negative heltall "første tall.. andre tall" (for eksempel: 1..5, 2..10 eller 0..5);

    Et tallområde fra en spesifikk startverdi til et vilkårlig endelig "første tall.. *" (for eksempel: 1..*, 5..* eller 0..*);

    Viser ikke-negative heltall og områder atskilt med komma (for eksempel: 1, 3..5, 10, 15..*).

    Hvis multiplisiteten ikke er spesifisert, antas dens verdi å være 1. Multiplisiteten av entitetsforekomster som deltar i avhengighet, generalisering og implementering antas alltid å være 1.

    Tabellen nedenfor gir en beskrivelse ekspansjonsmekanismer , brukes til å klargjøre semantikken til enheter og relasjoner. Generelt er ekspansjonsmekanismen en tekststreng omsluttet av parenteser eller anførselstegn.

    Tabell 11.4. Ekspansjonsmekanismer

    Navn Betegnelse Definisjon (semantikk)
    Stereotype
    (stereotype)
    « » En betegnelse som spesifiserer semantikken til et notasjonselement (for eksempel: en avhengighet med "inkluder"-stereotypen betraktes som en inklusjonsrelasjon, og en klasse med "grense"-stereotypen er en grenseklasse)
    Vakttilstand
    (vakttilstand)
    Boolsk tilstand (for eksempel: eller [identifikasjon fullført])
    Begrensning
    (begrensning)
    { } En regel som begrenser semantikken til et modellelement (for eksempel (utførelsestid mindre enn 10 ms))
    Flagget verdi
    (merket verdi)
    { } Ny eller tydeliggjørende egenskap for et notasjonselement (for eksempel: (versjon = 3.2))

    I tillegg til stereotyper angitt som en tekststreng i anførselstegn, kan grafiske stereotyper brukes i diagrammer. Følgende figur viser eksempler på standard og stereotyp visning.

    a) standardbetegnelse b) standardbetegnelse
    med tekststereotypi
    c) grafisk stereotypi

    Ris. 11.2. Eksempler på standard og stereotyp klassevisning

    Diagram representerer en gruppering av notasjonselementer for å vise et aspekt av det utviklede informasjon System. Diagrammer er vanligvis en sammenhengende graf der entiteter er toppunkter og relasjoner er buer. Følgende tabell gir en kort beskrivelse av UML-diagrammer.

    Tabell 11.5. Diagrammer

    Diagram Hensikt
    i henhold til graden av fysisk gjennomføring ved å vise dynamikk etter vist aspekt

    (brukstilfelle)
    Viser systemfunksjoner, interaksjoner mellom aktører og funksjoner Logisk Statisk Funksjonell

    (klasse)
    Viser et sett med klasser, grensesnitt og relasjoner mellom dem Logisk eller
    fysisk
    Statisk Funksjonell og informativ

    (pakke)
    Viser et sett med pakker og relasjonene mellom dem Logisk eller
    fysisk
    Statisk Komponent
    Atferd
    (oppførsel)

    (statsmaskin)
    Viser tilstandene til en enhet og overganger mellom dem i løpet av dens livssyklus Logisk Dynamisk Atferdsmessig

    (aktivitet)
    Viser forretningsprosesser i systemet (beskrivelse av atferdsalgoritmer)
    Interaksjoner
    (interaksjon)

    (sekvens)
    Viser sekvensen av meldinger som går mellom objekter og aktører

    (kommunikasjon)
    Ligner på et sekvensdiagram, men det er lagt vekt på strukturen av interaksjoner mellom objekter
    Implementeringer
    (gjennomføring)

    (komponent)
    Viser systemkomponenter (programmer, biblioteker, tabeller osv.) og forbindelser mellom dem Fysisk Statisk Komponent

    utplassering
    Viser plasseringen av komponenter på nettverksnoder, samt konfigurasjonen

    UML 2.x-standarden definerer også ytterligere, høyt spesialiserte diagrammer:

    Objektdiagram - lignende, men objekter vises i stedet for klasser;

    Tidsdiagram - beskriver tilstanden til et objekt over tid;

    Sammensatt strukturdiagram - beskriver portene (inkludert grensesnitt) til en klasse for interaksjon med andre klasser;

    Profildiagram - lignende med en beskrivelse av klassene som er inkludert i dem;

    Interaksjonsoversiktsdiagram - lignende, men med skjulte interaksjonsfragmenter (fragmenter merket ref). Representerer en kontekstuell (konseptuell), hvis elementer vil bli spesifisert på separate dekomponeringsdiagrammer.

    For formålet med en forstørret konseptuell representasjon av den interne arkitekturen til systemet, tillater flertallet av konstruksjonen bruk av etablerte grafiske stereotyper for den såkalte. Et slikt diagram kalles 1, men tilhører ikke listen over diagrammer definert av UML-standarden.

    Ved utvikling av en egen modell av et system bygges det flere typer diagrammer. Videre, når man utvikler en modell av et komplekst system, er det som regel konstruert flere diagrammer av samme type. Samtidig trenger du ikke lage separate typer diagrammer hvis det ikke er nødvendig. For eksempel er diagrammer og utskiftbare; de ​​er kun bygget for objekter med kompleks oppførsel. Følgende tabell gir anbefalinger om behovet for å utvikle (klargjøre) diagrammer for systemmodeller.

    Tabell 11.6. Sammenheng mellom modeller og diagrammer

    Tabellen nedenfor viser ikke en testmodell, siden som en del av dens konstruksjon utvikles ikke diagrammer, men sjekkes (testes) for fullstendighet og konsistens.

    Noen av diagrammene etter deres konstruksjon krever utvikling og avklaring som en del av utviklingen av neste modell ( teknologisk prosess). Så de bør for eksempel avklares under utviklingen. I modeller.

    4. Definer konseptet " ".