Flowdiagram for softwareudviklingsproces

Flowdiagram for softwareudviklingsproces: Symboler, typer og eksempler

Et flowdiagram for en softwareudviklingsproces konverterer en række trin, beslutninger og resultater til et diagram, som alle kan læse på få sekunder. Hvor et tekstafsnit kræver omhyggelig læsning for at forstå rækkefølgen af ​​operationer og de betingelser, der ændrer stien, viser et flowdiagram det rumligt: ​​start her, gør dette, tjek den betingelse, forgren dig til venstre eller højre, fortsæt til slutningen. Denne rumlige repræsentation er grunden til, at flowdiagrammer fortsat er et af de mest anvendte diagramværktøjer inden for softwareudvikling, mere end halvfjerds år efter, at de først blev introduceret.

Denne guide dækker alt, hvad der er nødvendigt for at læse, oprette og anvende flowdiagrammer i en softwareudviklingskontekst: standardsymbolerne og deres betydning, de forskellige typer flowdiagrammer og hvornår de skal bruges, eksempler i et format, du kan kopiere og gengive med det samme, og hvordan flowdiagrammer forbinder sig til den faktiske kode, de repræsenterer, herunder hvordan denne forbindelse kan genereres automatisk i stedet for at blive tegnet i hånden.

Flowcharts, der opdaterer sig selv

SMART TS XL genererer nøjagtige flowdiagrammer direkte fra din kildekode — ingen manuel tegning nødvendig.

Lær mere

Hvad er et flowdiagram i softwareudvikling?

Et flowdiagram er et diagram, der repræsenterer en proces, algoritme eller arbejdsgang ved hjælp af standardiserede symboler forbundet med pile, der angiver flowretningen. I softwareudvikling kortlægger flowdiagrammer logikken i et program eller en proces: rækkefølgen af ​​operationer, de punkter, hvor programmet træffer beslutninger, og de forskellige veje, udførelsen kan tage afhængigt af disse beslutninger.

Flowcharts stammer fra 1920'erne inden for industriel ingeniørvidenskab, hvor de blev brugt til at dokumentere fremstillingsprocesser. Teknikken blev formaliseret til databehandling i 1940'erne og 1950'erne, og da struktureret programmering blev standardpraksis i 1970'erne, var flowcharts blevet en central del af dokumentation af softwaredesign. I dag er flowcharts stadig i aktiv brug til algoritmedesign, onboarding-dokumentation, kortlægning af forretningsprocesser og kommunikation af logik til ikke-tekniske interessenter, selvom mere specialiserede diagramtyper (UML, sekvensdiagrammer, tilstandsdiagrammer) har overtaget nogle af de roller, som flowcharts oprindeligt udfyldte.

Hvad er forskellen mellem et flowdiagram og et procesflowdiagram?

Disse udtryk bruges ofte i flæng, og i de fleste sammenhænge er det harmløst. Hvor der nogle gange drages en sondring: et flowdiagram repræsenterer typisk logikken i en enkelt algoritme eller et program, beslutninger, løkker, forgreninger i kode. Et procesflowdiagram (eller procesflowdiagram) repræsenterer oftere en forretningsproces, rækkefølgen af ​​aktiviteter på tværs af personer, afdelinger eller systemer, ofte uden den finkornede beslutningslogik fra et flowdiagram på kodeniveau. I praksis deles symbolerne og konventionerne mellem begge, og det udtryk, du bruger, bestemmes i høj grad af din målgruppe og branchekonventioner snarere end en streng teknisk grænse.

Flowchart-symboler: Den komplette reference

Symboler for flowdiagrammer er standardiserede, så enhver læser, uanset sprog eller baggrund, kan fortolke et flowdiagram korrekt. Tabellen nedenfor dækker alle symboler, der bruges i standard flowdiagrammer for softwareudvikling:

SymbolShapeNavnBetydning
Oval / Afrundet rektangelTerminator (Start/Slut)Markerer begyndelsen eller slutningen af ​​processen
rektangelProcesRepræsenterer et enkelt trin, en handling eller en operation
DiamantBeslutningEt forgreningspunkt med to eller flere mulige udfald (Ja/Nej, Sandt/Falsk)
parallelogramInput / OutputRepræsenterer data, der kommer ind i eller forlader processen
HexagonForberedelseRepræsenterer et opsætningstrin, såsom initialisering af en løkketæller
▭ (med dobbelt kant)Foruddefineret procesEt kald til en separat, allerede defineret proces eller subrutine
DokumentRepræsenterer et udskrevet eller genereret dokument
Lille cirkelStikForbinder to punkter i flowdiagrammet, ofte brugt til at undgå krydsende linjer
Trekant (peger nedad)FletKombinerer flere stier til én
Trekant (peger opad)UddragOpdeler én sti i flere
ArrowFlowledningAngiver retningen af ​​procesflowet
Off-page-forbindelseAngiver, at flowet fortsætter på en anden side

De to symboler, som enhver læser skal genkende med det samme, er rektanglet (et procestrin) og diamanten (et beslutningspunkt med flere udgange). Disse to alene dækker størstedelen af ​​indholdet af et flowdiagram. Den ovale/afrundede terminator, der markerer start og slut, fuldender det minimale ordforråd, der er nødvendigt for at læse de fleste flowdiagrammer korrekt.

Typer af flowdiagrammer brugt i softwareudvikling

Forskellige typer flowdiagrammer tjener forskellige formål. Hvis man vælger den forkerte type til situationen, får man et diagram, der er teknisk korrekt, men sværere at læse end nødvendigt.

FlowcharttypeHvad det viserBedst brugt til
Process flowchartSekventielle trin i en enkelt procesDokumentation af en algoritme, en funktions logik eller en forretningsprocedure
SystemflowdiagramHvordan data bevæger sig gennem hardware- og softwarekomponenterDokumentation af arkitektur på højt niveau, kortlægning af ældre systemer
Flowchart for svømmebane (tværfunktionelt)Trin grupperet efter den ansvarlige person, team eller systemProcesser, der spænder over flere roller eller afdelinger
Dataflowdiagram (DFD)Hvordan data flyttes mellem processer, butikker og eksterne enhederDokumentation af datatransformationer i stedet for kontrollogik
Workflow diagramOpgaveoverdragelser og godkendelseskæder i en forretningsprocesProjektstyring, godkendelsesworkflows, ticketrouting
UML-aktivitetsdiagramSamtidige og sekventielle aktiviteter med formel UML-notationDokumentation af objektorienteret softwaredesign

Dataflowdiagram vs. flowdiagram: Hvad er forskellen?

Dette er et af de mest almindelige forvirringspunkter, og det fortjener et direkte svar. Et flowdiagram viser kontrolflow : den rækkefølge, hvori trin udføres, og de betingelser, der bestemmer, hvilken vej der tages. Et dataflowdiagram (DFD) viser dataflow : hvor data stammer fra, hvilke processer der transformerer dem, hvor de gemmes, og hvor de i sidste ende går hen, uden nødvendigvis at vise den sekventielle rækkefølge af operationer eller beslutningslogik.

Et flowdiagram svarer på "hvad sker der, i hvilken rækkefølge, under hvilke betingelser?". Et dataflowdiagram svarer på "hvor kommer disse data fra, hvad ændrer dem, og hvor ender de?". Mange virkelige systemer drager fordel af begge dele: et flowdiagram til at dokumentere behandlingslogikken og et DFD til at dokumentere, hvordan information bevæger sig gennem denne logik.

Eksempler på flowdiagrammer i softwareudvikling

Mermaid-syntaksen nedenfor gengives direkte i GitHub, GitLab, Notion og de fleste moderne dokumentationsplatforme, hvilket gør det til standardmåden at holde flowdiagrammer versioneret sammen med kode i stedet for at vedligeholdes som separate statiske billeder.

Grundlæggende procesflowdiagram

Dette flowdiagram viser det kanoniske mønster, som enhver udvikler genkender: en terminator til at starte, et procestrin, en beslutningsdiamant med to resultater og konvergens tilbage til et enkelt slutpunkt. Hvert flowdiagram, uanset hvor komplekst det er, er bygget op af gentagne forekomster af det samme mønster.

Flowchart med en løkke

Løkker i flowdiagrammer er repræsenteret af en pil, der vender tilbage til et tidligere beslutningspunkt i stedet for at fortsætte fremad. Dette er flowdiagrammets svar på en for or while En løkke i kode, og det er et af de mønstre, der oftest testes i introduktionskurser i programmering, "tegn et flowdiagram for at finde det største af tre tal" og lignende øvelser kræver næsten altid en løkke eller en indlejret beslutningsstruktur.

Eksempel på flowdiagram for svømmebane

Swimlanes (også kaldet tværfunktionelle flowdiagrammer) grupperer procestrin efter, hvem der udfører dem, hvilket gør overdragelser mellem teams eller systemer øjeblikkeligt synlige. Dette format er standarden for dokumentation af forretningsprocesser, der involverer flere afdelinger eller eksterne parter.

Sådan opretter du et flowdiagram for softwareudviklingsprocesser

Trin 1: Definer start- og slutpunkter. Hvert flowdiagram skal have præcis ét klart startpunkt og et eller flere klare slutpunkter. Hvis den proces, du dokumenterer, ikke har en tydelig start og slut, er omfanget endnu ikke veldefineret nok til at kunne lave et effektivt flowdiagram.

Trin 2: Angiv hvert trin i rækkefølge. Skriv trinnene ned i et letforståeligt sprog, før du tildeler symboler. Dette adskiller den logiske definition fra diagramarbejdet og gør det lettere at opdage fejl. Det er meget hurtigere at rette et manglende trin i en tekstliste end i et halvtegnet diagram.

Trin 3: Identificer hvert beslutningspunkt. Gennemgå trinlisten og marker hvert sted, hvor den næste handling afhænger af en betingelse. Hvert beslutningspunkt bliver en diamant med mindst to udgående stier, og hver sti skal mærkes (Ja/Nej, Sandt/Falsk eller den specifikke betingelse).

Trin 4: Tildel de korrekte symboler. Knyt hvert trin til dets symbol: rektangler for handlinger, diamanter for beslutninger, parallelogrammer for input/output og ovaler for start og slut. Konsekvent symbolbrug er det, der gør et flowdiagram læseligt for en person, der ikke er bekendt med den specifikke proces.

Trin 5: Forbind med retningspile. Hvert symbol skal have en tydelig indgående og udgående forbindelse (undtagen starten, som ikke har nogen indgående forbindelse, og slutningen, som ikke har nogen udgående forbindelse). Pilene skal gå i en ensartet generel retning, typisk fra top til bund eller fra venstre til højre, for at undgå visuel forvirring.

Trin 6: Valider ved at spore hver sti. Gennemgå flowdiagrammet manuelt, og følg alle mulige stier fra start til slut. Bekræft, at hver beslutningsgren fører et sted hen, at ingen stier ender i blindgyder uden at nå en slutterminator, og at løkker har en defineret slutbetingelse.

Flowchartværktøjer til softwareudvikling

Til manuelt oprettede flowdiagrammer er flere værktøjer standard i softwareudviklingsworkflows:

Mermaid og PlantUML er diagram-som-kode-værktøjer: Flowchartet defineres som tekst og gengives automatisk, hvilket holder det versionskontrolleret sammen med den kildekode, det dokumenterer. Dette er den anbefalede tilgang til ethvert flowchart, der dokumenterer kodelogik, fordi det kan opdateres i samme commit som den kodeændring, det beskriver.

Lucidchart , Microsoft Visio og draw.io er generelle diagramværktøjer med træk-og-slip-grænseflader, der er velegnede til dokumentation af forretningsprocesser, præsentationer og diagrammer, der vedligeholdes uden for versionskontrol.

Whiteboardværktøjer (fysiske whiteboards, Miro, FigJam) er velegnede til kollaborative designsessioner, hvor flowdiagrammet er et fungerende artefakt under en diskussion snarere end et permanent dokument.

Afvejningen mellem disse kategorier er synkronisering: manuelt vedligeholdte diagrammer i Lucidchart eller Visio forældes, når den underliggende proces eller kode ændres, fordi opdatering af diagrammet kræver et separat, manuelt trin, der er let at glemme. Diagrammer-som-kode og automatiseret generering løser begge dette ved at knytte diagrammets nøjagtighed til en automatiseret proces snarere end menneskelig hukommelse.

Generering af flowdiagrammer automatisk fra eksisterende kode

Manuel tegning af et flowdiagram til et nyt design fungerer godt. Manuel tegning af et flowdiagram for at dokumentere et eksisterende, komplekst, udokumenteret system skalerer ikke, og det producerer et diagram, der allerede er forældet, når det er færdigt, hvis den underliggende kode ændres under dokumentationsarbejdet.

For eksisterende kodebaser, især store eller ældre systemer, analyserer automatiseret generering af flowdiagrammer den faktiske kildekode og producerer flowdiagrammet direkte fra dets kontrolflow, hver gang if, hvert loop, hvert funktionskald gengives som det tilsvarende flowdiagramsymbol, uden at et menneske først skal spore logikken manuelt.

Denne sondring er vigtigst for ældre systemer. Et COBOL-program, der er blevet modificeret af et dusin udviklere over tyve år, har akkumuleret betinget logik, som ingen enkelt person fuldt ud forstår. Et manuelt tegnet flowdiagram af det program ville kræve, at nogen læser og korrekt fortolker hver linje først, det præcise problem, som flowdiagrammet skal løse. Automatiseret generering fra den faktiske kildekode producerer et nøjagtigt flowdiagram, uanset hvor godt nogen i øjeblikket forstår programmet, fordi det er afledt af, hvad koden rent faktisk gør, snarere end hvad nogen tror, ​​den gør.

Hvordan SMART TS XL Genererer flowdiagrammer fra din kodebase

SMART TS XL producerer flowdiagrammer, kaldgrafer og afhængighedsdiagrammer direkte fra kildekodeanalyse, COBOL, JCL, Java, Python, RPG og andre sprog, i stedet for at kræve, at udviklere tegner dem manuelt. Dette er en fundamentalt anderledes tilgang end generelle diagramværktøjer som Lucidchart eller Visio, der leverer tegneunderlag, men ikke har nogen bevidsthed om, hvad din kode rent faktisk gør.

Kodevisualiseringsfunktionen analyserer et programs kontrolflow og producerer automatisk et nøjagtigt flowdiagram over dets beslutningslogik, forgreninger og løkker. For et ældre COBOL-program med årtiers akkumuleret betinget logik betyder det, at et komplet og præcist flowdiagram kan genereres på få øjeblikke i stedet for at kræve dages manuel kodelæsning og diagramtegning.

Da flowdiagrammet genereres direkte fra kildekoden, kan det ikke komme ud af synkronisering, sådan som et manuelt vedligeholdt diagram gør. Hver gang det underliggende program ændres, producerer regenerering af flowdiagrammet et opdateret diagram, der afspejler den faktiske, aktuelle logik, og løser dermed synkroniseringsproblemet, der påvirker alle teams, der er afhængige af manuelt tegnet procesdokumentation.

For teams, der dokumenterer komplekse systemer, udvider applikationsafhængighedskortlægningsfunktionen dette ud over flowdiagrammer for enkeltprogrammer for at vise, hvordan flere programmer, jobstrømme og datakilder forbinder på tværs af en hel applikationsportefølje, og besvarer ikke blot "hvad gør dette program?", men "hvad forbinder dette program til, og hvad forbinder til det?". Som beskrevet i forbindelse med kodevisualiseringsteknikker løser automatisk genererede diagrammer problemet med forældet dokumentation, der gør manuelt vedligeholdt dokumentation upålidelig i ethvert aktivt udviklet system.

Flowcharts er et kommunikationsværktøj, ikke blot et dokumentationsartefak

Værdien af ​​et flowdiagram ligger ikke i selve diagrammet, men i den fælles forståelse, diagrammet skaber mellem alle, der ser på det. Et flowdiagram, der præcist repræsenterer en proces, men som ingen refererer til under udvikling, kodegennemgang eller onboarding, har produceret dokumentation uden at skabe værdi. Et flowdiagram, som teamet rent faktisk bruger til at diskutere edge cases, til at onboarde en ny udvikler til et ukendt modul eller til at identificere en manglende fejlhåndteringsgren, har gjort sit job.

Den praktiske værdi afhænger af, at flowdiagrammet forbliver aktuelt. Et diagram, der tegnes én gang under det indledende design og aldrig opdateres, bliver aktivt misvisende, når koden afviger fra det. Det er værre end slet ikke at have et diagram, fordi det giver falsk tillid. Uanset om det er gennem diagram-som-kode-praksisser, der holder flowdiagrammet i samme arkiv som koden, eller gennem automatiseret generering, der udleder flowdiagrammet fra kodens faktiske nuværende tilstand, er disciplinen med at holde diagrammet nøjagtigt det, der adskiller flowdiagrammer, der virkelig hjælper et team, fra flowdiagrammer, der bliver forældede artefakter, som ingen stoler på.