Tarkvara plokkskeem. Arendatava tarkvara plokkskeem. Kvaliteedi hindamise kriteeriumid

KURSUSE PROJEKT

erialal "Programmeerimine kõrgetasemelises keeles"

Info pikaajaliseks säilitamiseks ja töötlemiseks mõeldud tarkvara väljatöötamine mängu “Hobused” näitel

Selgitav märkus

OSU 27.03.03.0316.000PZ

Juhendaja

õpetaja

V. V. Chekrygina “___”_____ 2016

14. rühma õpilaneSAU(ba)SAUIT _______ _____________I.O. Perekonnanimi

"___"_________________ 2016

Orenburg 2016


annotatsioon

Kursusetöö sisaldab 18 lehekülge, sealhulgas 4 joonist, 5 allikat ja programmide loetelu.

Selles kursusetöös uuritakse üksikasjalikult tarkvaratoote loomise tehnoloogiat Delphi objektorienteeritud programmeerimissüsteemi abil. Olemasolevad objektorienteeritud programmeerimiskeeled on lühidalt üle vaadatud. Tehniliste kirjelduste ja algoritmiprogrammi enda kirjeldus on tehtud. Töö lõpus esitatakse tarkvaratoote testimine ja selle loetelu.


Sissejuhatus. 5

1 Tehnilised andmed. 6

2 Programmi kirjeldus... 7

3 Kasutusjuhend... 9

4 Programmi testimine... 10

Järeldus. üksteist

Kasutatud allikate loetelu. 12

Lisa A... 13


Sissejuhatus

Praegu on paljude kasutajate seas populaarne objektorienteeritud programmeerimissüsteem Delphi, mille aluseks on Object Pascal keel, mille algselt töötas välja N. Wirth eelmise sajandi 60. aastate alguses spetsiaalselt õppekeelena. programmeerimine. Delphi võimaldab kiiresti luua visuaalse programmeerimise tehnoloogial põhinevaid erineva keerukusega rakendusi.



Delphi süsteem kehastab kaasaegse programmeerimise teooria parimaid saavutusi. See integreeritud keskkond ühendab endas palju kasulikke tööriistu ja valmiskomponente, millest kasutajaprogrammid – projektid – kokku pannakse. Delphi on visuaalne tarkvara arenduskeskkond. See tähendab, et iga programmi välimus (liides) luuakse lihtsalt komponentide liigutamisega.

Põhiline programmeerimiskeel on Object Pascal – objektorienteeritud Pascal. Põhiline erinevus Delphi ja Turbo Pascali programmeerimissüsteemide vahel (Turbo on süsteemiarendaja Borland International, Inc. (USA) kaubamärk) seisneb monitori ekraanirežiimi kasutamises: Turbo Pascal on keskendunud ekraani tekstirežiimile. DOS-süsteem ja Delphi, nagu Windows, on keskendunud graafikale. Seetõttu saab Delphi 7 üks uusimaid versioone juba luua uusima .NET keskkonna jaoks rakendusi. Lisaks võimaldavad uusimad versioonid programmeerida Linuxi operatsioonisüsteemi jaoks.

Delphi süsteem rakendab objektorienteeritud virtuaalse programmeerimise (OOP) tehnoloogiat. Seda eristab kõigist teistest programmeerimiskeeltest selle rangus kõigi muutujate ja konstantide määratlemisel, modulaarne programmeerimine, rohked võimalused oma andmestruktuuride loomiseks, objektorienteeritud programmeerimise kasutamine ja masinorienteeritud konstruktsioonide puudumine. Borland Corporation, mis on Delphi asutaja, tugines algusest peale visuaalsele objektorienteeritud programmeerimisele, mis on võimeline töötama mis tahes andmebaasiga. Praegu ei jää Delphi programmeerimissüsteem oma võimaluste poolest kuidagi alla sellistele programmeerimiskeeltele nagu C++, C#, Visual C++, C–Builder, Visual Basic jne.


1 Lähteülesanne

Ülesanne püstitati: arendada organiseeritud panustamissüsteemiga Delphi keskkonnas hipodroomil hobuste võiduajamise teemaline mäng.

Selle probleemi lahendamise käigus saime järgmise taotluse:

Seal on 5 hobust, kes peavad jooksma sirgjooneliselt, organiseeritud liikumisanimatsiooniga, mis koosneb 2 pildist, samuti peab olema kihlveoautomaat. Hobused peavad võitma erinevates järjekordades.

Mängija ülesanne on võita ennustuslauas võimalikult palju “raha”.

Miinimumnõuded programmi kasutamiseks: IBM-iga ühilduv 486dx või kõrgem, 5 MB. vaba kõvakettaruumi, OS Win9x/Me, Win2000/XP/Vista/Seven.

Programm pakub:

Võimalus nulljäägiga, saab võlga välja võtta;

Hobused liiguvad erineva kiirusega ja võitjat on võimatu ette teada.


2 Programmi kirjeldus

Programmi plokkskeem

Joonis 1 näitab peamiste programmielementide asukohta, selline näeb välja tarkvaratoote peaaken.

Joonis 1 – programmi põhiaken

Kontseptsioonis programmi struktuur (programm struktuur) sisaldab kõigi programmi iseseisvaid funktsioone rakendavate moodulite ühenduste koostist ja kirjeldust ning sisend- ja väljundandmete kandjate kirjeldust, samuti üksikute alamprogrammide vahelises vahetuses osalevaid andmeid.

Suurte ja keeruliste programmide arendamiseks peab programmeerija valdama spetsiaalseid tehnikaid ratsionaalse programmistruktuuri saamiseks, mis tagab programmeerimismahu peaaegu kahekordse vähenemise ja mitmekordse vähendamise.

Programmimoodulite alluvus kajastub hierarhia diagrammil. Viimane aga ei kajasta nende kutsumise järjekorda ega programmi toimimist. Hierarhia diagramm võib välja näha selline, nagu on näidatud joonisel fig. 5. Tavaliselt täiendatakse seda moodulite poolt täidetavate funktsioonide dekodeerimisega.

Enne hierarhia diagrammi koostamist on soovitatav koostada programmi välised spetsifikatsioonid ja kirjutada programmi funktsionaalsed kirjeldused koos andmekandja muutujate kirjeldusega. Erilist tähelepanu tuleks pöörata struktureeritud andmetüüpide hierarhiale ja nende kommenteerimisele.

Programmi jagamine alamprogrammideks toimub põhimõttel üldisest konkreetseni, detailsemaks. Funktsionaalkirjelduse koostamise ja hierarhia diagrammi koostamise protsess on iteratiivne ning parima variandi valimine on mitme kriteeriumi järgi. Dissektsioon peaks andma osade kasutuselevõtuks mugava järjekorra.

Hierarhia diagrammile võib anda mis tahes topoloogilise kujunduse. Vertikaalsete kõnedega killud saab teisendada ühe taseme kõnedeks lisamooduli sisseviimisega, mis ei pruugi täita programmi algoritmi seisukohalt kasulikke funktsioone. Uue mooduli funktsioon saab olla ainult monitooring ehk siis teiste moodulite kutsumine kindlas järjekorras.

Horisontaalsete kõnedega fragmendidühel tasemel saab teisendada vertikaalseteks väljakutseteks erinevatel tasanditel moodulitele, lisades lisamuutujaid, mida ei olnud võimalik saada funktsioonikirjelduse alamfunktsioonideks lammutamisel. Need lisamuutujad on tavaliselt täisarvu või tõeväärtuse tüüpi ja neid nimetatakse lippudeks, semaforideks või sündmusevõtmeteks. Nende tähendust iseloomustab tavaliselt fraas: olenevalt järgmisest tegevuste ajaloost tehke selliseid ja selliseid toiminguid.

Kujundusprotsessi käigus peate tegema mitu disaini iteratsiooni, genereerides iga kord uue hierarhia diagrammi, ja võrdlema neid hierarhiaid nende kriteeriumide alusel, et valida parim valik.

Võti - muutuja väärtus, mida kasutatakse teatud teabele või rutiinile juurdepääsu volituse kinnitamiseks.

Lipp- muutuja, mille väärtus näitab, et mõni riist- või tarkvarakomponent on teatud olekus või selle jaoks on teatud tingimus täidetud. Lippu kasutatakse tingimusliku hargnemise ja muude otsustusprotsesside rakendamiseks.

Semafor - eriotstarbeline andmetüüp, mis on vahend kriitilisele ressursile juurdepääsu kontrollimiseks samaaegsete järjestikuste protsesside kaudu.

Semaforiga saab teha ainult kaks toimingut (loomist ja tühistamist arvestamata): oodake operatsiooni(klassid) ja alarmi töö(vabanemine). Semafor aktsepteerib täisarvu, mis ei saa olla negatiivne. Ooteoperatsioon vähendab semafoori väärtust ühe võrra, kui seda saab teha ilma negatiivset väärtust andmata, mis tähendab, et vaba ressurssi kasutatakse. Signaalioperatsioon suurendab semafori väärtust ühe võrra, mis tähendab, et ressurss vabastatakse.

Kriitiline ressurss- ressurss, mida ei kasuta korraga rohkem kui üks protsess. Kui kriitilisele ressursile juurdepääsu koordineerimiseks on vaja mitut asünkroonset protsessi, kasutatakse semafori kaudu kontrollitud juurdepääsu.

Programmide komplekti, mis on loodud arvutiprobleemide lahendamiseks, nimetatakse tarkvaraks. Arvutitarkvara koostist nimetatakse tarkvara konfiguratsiooniks. Tarkvara võib jagada kolme kategooriasse (joonis 1):

Joonis 1. Tarkvara klassifikatsioon

    süsteemitarkvara (üldkasutatavad programmid), mis täidavad erinevaid abifunktsioone, nagu kasutatud infost koopiate loomine, arvuti kohta abiinfo andmine, arvutiseadmete funktsionaalsuse kontrollimine jne.

    rakendustarkvara, mis tagab vajaliku töö arvutis: tekstidokumentide toimetamine, jooniste või piltide loomine, infomassiivide töötlemine jne.

    tööriistatarkvara (programmeerimissüsteemid), mis tagab programmeerimiskeeles uute arvutiprogrammide väljatöötamise.

Süsteemi tarkvara on programmide komplekt, mis võimaldab tõhusalt hallata arvutisüsteemi komponente, nagu protsessor, RAM, sisend-/väljundseadmed, võrguseadmed, mis toimivad "kihtidevahelise liidesena", mille ühel küljel on riistvara ja teisel pool, kasutajarakendused. Erinevalt rakendustarkvarast ei lahenda süsteemitarkvara spetsiifilisi rakendusprobleeme, vaid tagab ainult teiste programmide töö, haldab arvutisüsteemi riistvararessursse jne.

Need üldkasutatavad programmid ei ole seotud konkreetse arvutirakendusega ja täidavad traditsioonilisi funktsioone: ajakava ja ülesannete haldamine, I/O haldus jne. Ehk siis süsteemiprogrammid täidavad erinevaid abifunktsioone, näiteks loovad kasutatud infost koopiaid, annavad arvuti kohta abiinfot, kontrollivad arvutiseadmete funktsionaalsust jne. Süsteemitarkvara sisaldab:

    operatsioonisüsteemid (see programm laaditakse RAM-i, kui arvuti on sisse lülitatud)

    shell-programmid (pakkuvad mugavamat ja visuaalsemat viisi arvutiga suhtlemiseks kui DOS-i käsurea kasutamine, näiteks Norton Commander)

    operatsioonikestad on liidesesüsteemid, mida kasutatakse graafiliste liideste loomiseks, multiprogrammeerimiseks jne.

    Draiverid (programmid, mis on loodud välisseadmete portide juhtimiseks, laaditakse tavaliselt arvuti käivitumisel RAM-i)

    utiliidid (abi- või utiliidiprogrammid, mis pakuvad kasutajale mitmeid lisateenuseid)

Kommunaalteenuste hulka kuuluvad:

    failihaldurid või failihaldurid

    dünaamilised andmete tihendamise tööriistad (võimaldavad dünaamilise tihendamise tõttu suurendada kettal oleva teabe hulka)

    vaatamise ja taasesituse tööriistad

    diagnostikavahendid; juhtimistööriistad võimaldavad kontrollida arvuti konfiguratsiooni ja arvutiseadmete, eelkõige kõvaketaste funktsionaalsust

    sidevahendid (kommunikatsiooniprogrammid) on mõeldud arvutitevahelise infovahetuse korraldamiseks

    Arvutiturbevahendid (varundus, viirusetõrje).

Utiliidid on programmid, mis on loodud kitsa hulga abiülesannete lahendamiseks.

Mõnikord liigitatakse utiliidid teenindustarkvaraks

Utiliite kasutatakse:

    Andurite indikaatorite ja seadmete jõudluse jälgimine - protsessori ja videoadapteri temperatuuride jälgimine; lugedes S.M.A.R.T. kõvakettad;

    Seadme parameetrite haldamine - CD-draivi maksimaalse pöörlemiskiiruse piiramine; ventilaatori kiiruse muutmine.

    Seireindikaatorid - viite terviklikkuse kontrollimine; andmete salvestamise õigsus.

    Laiendatud võimalused – ketta vormindamine ja/või ümberpartitsioonid andmete salvestamise ajal, kustutamine ilma taastamise võimaluseta.

Kommunaalteenuste tüübid:

Ketta utiliidid

      Defragmentijad

      Ketta skaneerimine – valesti salvestatud või mitmel viisil kahjustatud failide ja kettaalade otsimine ning nende hilisem eemaldamine kettaruumi tõhusaks kasutamiseks.

      Kettapuhastus – ajutiste failide, mittevajalike failide kustutamine, prügikasti tühjendamine.

      Ketta jagamine on ketta jagamine loogilisteks ketasteks, millel võivad olla erinevad failisüsteemid ja mida operatsioonisüsteem tajub mitme erineva kettana.

      Varundamine – tervetest ketastest ja üksikutest failidest varukoopiate loomine, samuti nendest koopiatest taastamine.

      Ketta tihendamine - kettadel oleva teabe tihendamine kõvaketaste mahu suurendamiseks.

      • Registri utiliidid

        Seadmete jälgimise kommunaalteenused

        Seadmete testid

Joonis 2. Avatud lähtekoodiga tarkvara koht arvuti mitmetasandilises struktuuris

Tuleb märkida, et mõned utiliidid on operatsioonisüsteemi kaasatud, samas kui teine ​​​​osa töötab autonoomselt. Suurem osa üldisest (süsteemi)tarkvarast on OS-is kaasas (joonis 2). Osa üldisest tarkvarast on arvutis endas kaasas (osad OS-i programmid ja kontrolltestid on kirjutatud emaplaadile installitud ROM-i või PROM-i). Osa levinud tarkvarast on eraldiseisvad programmid ja tarnitakse eraldi.

          Rakendustarkvara.

    MS OFFICE kontorirakenduste komplekt

    Raamatupidamissüsteemid

    Finantsanalüütilised süsteemid

    Integreeritud kontorihalduspaketid

    CAD – süsteemid (arvutipõhised projekteerimissüsteemid)

    HTML- või veebiredaktorid

    Brauserid – vahendid veebilehtede vaatamiseks

    Graafiline redaktor

    Ekspertsüsteemid.

          Tööriista tarkvara. Tööriistatarkvara ehk programmeerimissüsteemid on süsteemid uute programmide väljatöötamise automatiseerimiseks programmeerimiskeeles. Kõige üldisemal juhul peavad valitud programmeerimiskeeles (süsteemi programmeerimiskeeles) programmi loomiseks olema järgmised komponendid: 1. Tekstiredaktor programmi lähtetekstiga faili loomiseks. 2. Koostaja või tõlk. Lähtetekst tõlgitakse kompilaatorprogrammi abil vaheobjekti koodiks. Suure programmi lähtekood koosneb mitmest moodulid(lähtefailid). Iga moodul kompileeritakse objektikoodiga eraldi failiks, mis siis tuleb ühendada üheks tervikuks.3. Lingiredaktor või assembler, mis teostab objektimoodulite linkimist ja genereerib töötava rakenduse väljundina - käivitatava koodina. Käivitav kood on terviklik programm, mida saab käivitada igas arvutis, millel on operatsioonisüsteem, mille jaoks programm loodi. Reeglina on saadud faili laiend .EXE või .COM.4. Viimasel ajal on laialt levinud visuaalsed programmeerimismeetodid (kasutades skriptikeeli), mille eesmärk on luua Windowsi rakendusi. See protsess on kiiretes projekteerimiskeskkondades automatiseeritud. Sel juhul kasutatakse valmis visuaalseid komponente, mis konfigureeritakse spetsiaalsete redaktorite abil. Kõige populaarsemad visuaalse disaini redaktorid (programmi programmeerimissüsteemid, mis kasutavad visuaalseid tööriistu):

    Borland Delphi – mõeldud peaaegu kõigi rakenduste programmeerimise probleemide lahendamiseks

    Borland C++ Builder on suurepärane tööriist DOS-i ja Windowsi rakenduste arendamiseks

    Microsoft Visual Basic on populaarne tööriist Windowsi programmide loomiseks

    Microsoft Visual C++ – see tööriist võimaldab teil arendada mis tahes rakendusi, mis töötavad OS-i keskkonnas (nt Microsoft Windows).

Kontrollküsimused:

    Määratlege operatsioonisüsteem.

    Millist tarkvara peetakse süsteemitarkvaraks?

    Nimetage utiliidi tarkvara.

    Millist tarkvara loetakse rakendustarkvaraks?

    Mis on tarkvara eesmärk?

    Millised on programmide peamised klassid? Tooge näiteid iga klassi programmide kohta vastavalt nende eesmärgile.

Pärast andmete sisestamist on vaja anda kasutajale võimalus sertifikaadi blankett ja kliendi koopia välja printida. See toiming tuleb läbi viia veatult. Printida saab kahte tüüpi printeritega: löökprinteritega (maatriks) ja tindiprinteritega. Sertifikaadi printimine laserprinteritel ei ole võimalik paberikvaliteedi kõrgendatud nõuete tõttu. Maatriksprinteriga sertifikaadi printimisel saab kopeerpaberit kasutades printida kaks eksemplari (sertifikaat + koopia). Tindiprinteri puhul peate printima iga koopia eraldi. Seega on vaja printeritüübi jaoks ette näha kasutaja poolt muudetav koopialoendur või spetsiaalne seadistusfunktsioon.

Joonis 2 Interaktsiooni ja andmeside skeem

Programmi funktsionaalse diagrammi väljatöötamine.

Programmi funktsionaalne koosseis peaks maksimaalselt pakkuma OP kassale vajalike võimaluste komplekti andmete sisestamise, tehingute registreerimise ja aruandlusdokumentide täitmisega seotud töökohustuste täitmiseks. Selleks koostame ligikaudse loendi funktsioonidest, mida tuleks meie süsteemis rakendada.

Süsteemi funktsioonide ligikaudne loend.

1) Vahetustehingu registreerimine

· Andmete sisestamine valuutaostude kohta

· Andmesisestus valuuta müügiks

· Valuuta konverteerimise andmete sisestamine

· Prindi kliendiabi

2) Vaadake dokumente

· Vaadake päeva dokumentide loendit

· Vaadake arhiveeritud dokumentide loendit

3) kataloogide pidamine

· Andmete sisestamine väärtuskoodide järgi

· Andmete sisestamine dokumenditüüpide kaupa

· Andmete sisestamine valuutakoodide järgi

· Vahetuskursside sisestamine kuupäeva järgi

4) Aruandlusdokumentide genereerimine

· Sularaha rubla eest ostetud sularaha välisvaluuta registri trükkimine;

· Sularaha rubla eest müüdud sularaha välisvaluuta registri trükkimine;

· Sularaha välisvaluuta vahetamise (konverteerimise) registri trükkimine;

5) Muud funktsioonid

· Andmete sisestamine kataloogist sisestusväljale

· Arvu teisendamine digitaalsest väiketähtedeks (summa sõnades)

· Kursori välimuse muutmine

· Andmete salvestamine arhiivifailidesse

Ülaltoodud loetelu hõlmab kõiki RA tehnoloogilise protsessi peatükis kirjeldatud protseduure ning seda on täiendatud mõningate andmete sisestamise ja parandamise protsessis vajalike funktsioonidega.

Programmi struktuurskeemi väljatöötamine.

Tarkvarapaketi struktuurskeem määrab põhiliselt nii kavandatava süsteemi välimuse kui ka kasutajaga suhtlemise põhimõtted. Kavandatud süsteemi diagramm saab olema hierarhiline puustruktuur, mis kirjeldab andmete sisestamise, töötlemise ja väljastamise protseduure. Info- ja referentsklassiprogrammide koostamine selle põhimõtte järgi teeb süsteemi kui terviku muutmise üsna lihtsaks ning hõlbustab programmi tööpõhimõtte tajumist ja mõistmist. Struktuurskeemi koostamiseks on vaja määrata ülaltoodud andmetöötlusprotseduuride hierarhia ja seos. Loomulik on kehtestada protseduuride hierarhia sellisel kujul, nagu neid eelmises peatükis kirjeldati, kuna selline skeem vastab protseduuride “olulisuse” ja “kasutatavuse” skeemile. Programmi plokkskeem, võttes arvesse kõike eelnevat, on toodud joonisel 2.

Programmi ekraaniliidese arendamine

Olemasolevad lähenemisviisid ekraaniliidese kujundamisele

Programmi ekraaniliides määrab suuresti kasutaja mugavuse ja on üks olulisi tegureid, mis mõjutab tema töö efektiivsust. Programm, mis täidab kõiki talle määratud funktsioone ja on suure jõudlusega, võib vastuvõetamatu kasutajaliidese tõttu olla tööks täiesti sobimatu. Vaid paar aastat tagasi oli tekstiredaktor, mis illustreerib seda lähenemist tarkvara kujundamisele. On ebatõenäoline, et kellelegi meeldib tekstiredaktor, kus märgi reale sisestamiseks peate sisestama ühetähelise koodi sisestamise käsu jaoks, töödeldava rea ​​numbri (õnneks mitte kahendkoodina), numbri märgist, mille järel uus märk lisatakse, ja see märk ise. Loomulikult on selline lähenemine täiesti vastuvõetamatu.

Kõige praktilisemateks ja kasutajasõbralikumateks süsteemideks võib pidada neid, millel on hüpikmenüüsüsteemi alusel üles ehitatud ekraaniliides. Praegu on kõige levinumad kaks ideoloogiat (tähendab DOS-i rakendusi), mis hõlmavad teatud kujuga ekraaniakende ja värviskeemi ning hüpikloendite tüüpi. Need on Borlandi tööriistakeskkonnad ja Symanteci Nortoni operatsioonikesta. Mõlemad ideoloogiad näevad ette ekraaniruumi teatud jaotuse aladeks või tsoonideks, mis on mõeldud konkreetsete infoobjektide ja tegevuste jaoks. Tsoone saab kasutaja soovil teatud määral ümber seadistada: muudetakse nende suurust ja asukohta ekraanil. Andmetöötluskäsud kutsutakse välja pidevalt ekraanil olevast menüüsüsteemist (Borland) või funktsiooniklahviga (Symantec).

Mõlemal juhul jaotatakse kõik süsteemikäsud vastavalt funktsionaalsusele rühmadesse ja asuvad peamenüüs

käsurühmade tegelikud nimed. Valides rühma, pääseb kasutaja ligi rühmakäskude loendile, mis võib sisaldada ka teise taseme rühmadesse rühmitatud käske jne.

See loob mitmetasandilise hüpikmenüüsüsteemi. Sellise ideoloogia kasutamine tagab navigeerimise lihtsuse süsteemis, millel on üsna keeruline, mitmetasandiline ja paljude valikutega menüü. Loomulikult peaks pesastumise ja valikunimekirjade suuruse suurendamisel olema mõistlikud piirid, mis on õnneks olemas piiratud ekraaniruumi näol monitoril. Enamikul süsteemidel on ka võimalus kohandada värvipaletti vastavalt kasutaja soovidele. Nortoni töökest pakub värvivalikut mitmete standardvalikute hulgast. Mõnede ekraaniobjektide ligikaudne vaade on näidatud joonisel 4,5.

Ekraanil kuvatava liidese ideoloogia valimine

Tarkvara kujundamine algab selle struktuuri määratlemisest.

5. 1. Struktuuri- ja funktsionaaldiagrammide väljatöötamine.

Komplekstarkvara kujundamise protsess algab selle struktuuri selgitamisest, st struktuurikomponentide ja nendevaheliste seoste määratlemisest. Struktuuri selgitamise tulemuse saab esitada struktuursete ja/või funktsionaalsete diagrammide ning komponentide kirjelduste (spetsifikatsioonide) kujul.

Arendatava tarkvara plokkskeem

Struktuurskeem on diagramm, mis kajastab arendatava tarkvara osade haldamise koostist ja koostoimet.

Struktuuriskeemid tarkvarapaketid ei ole informatiivsed, kuna programmide pakettidesse organiseerimine ei näe ette nendevahelise kontrolli üleandmist. Seetõttu töötatakse välja iga paketis oleva programmi jaoks plokkskeemid ning tehnilistes kirjeldustes määratud funktsioone analüüsides määratakse paketis olevate programmide loetelu.

Lihtsaim tarkvaratüüp on programm, mis saab struktuurikomponentidena sisaldada ainult alamprogramme ja ressursiteeke.

Programmi plokkskeemi väljatöötamine toimub tavaliselt samm-sammult üksikasjaliku meetodi abil.

Tarkvarasüsteemi või tarkvarakompleksi struktuurikomponentideks võivad olla programmid, alamsüsteemid, andmebaasid, ressursiteegid jne.

Struktuurne skeem tarkvarapakett demonstreerib juhtimise üleandmist dispetšerprogrammilt vastavale programmile (joonis 1.1).

Riis. 5.1. Tarkvarapaketi plokkskeemi näide.

Struktuurne skeem tarkvarasüsteem, näitab reeglina alamsüsteemide või muude struktuurikomponentide olemasolu. Erinevalt tarkvarakompleksist vahetavad tarkvarasüsteemi üksikud osad (allsüsteemid) intensiivselt andmeid omavahel ja võimalusel ka põhiprogrammiga. Tarkvarasüsteemi plokkskeem seda tavaliselt ei näita (joonis 1.2).


Riis. 5.2. Tarkvarasüsteemi plokkskeemi näide.

Täielikuma pildi projekteeritavast tarkvarast selle komponentide vastastikuse ja väliskeskkonnaga suhtlemise osas annab funktsionaalne diagramm.

Funktsionaalne diagramm

Funktsionaalne diagramm või andmediagramm (GOST 19.701-90) - tarkvarakomponentide koostoime diagramm koos teabevoogude kirjeldusega, voogudes olevate andmete koostise ja kasutatavate failide ja seadmete tähisega. Funktsionaalsete diagrammide kujutamiseks kasutatakse standardiga kehtestatud spetsiaalseid sümboleid.

Funktsionaalsed diagrammid on informatiivsemad kui struktuuriskeemid. Joonisel fig. 1.3 näitab võrdluseks tarkvarapakettide ja süsteemide funktsionaalskeeme.



Riis. 5.3. Funktsionaalsete diagrammide näited: a - programmide komplekt, b - tarkvarasüsteem.

Kõik struktuursete ja funktsionaalsete diagrammide komponendid peavad olema kirjeldatud. Struktuurse lähenemise korral on eriti vajalik välja töötada programmidevaheliste liideste spetsifikatsioonid, kuna kõige kulukamate vigade arv sõltub nende kirjelduse kvaliteedist. Kõige kallimad vead on need, mis avastati põhjaliku testimise käigus, kuna nende kõrvaldamine võib nõuda suuri muudatusi juba silutud tekstides.

5.2. Lisadetailide meetodi kasutamine tarkvara struktuuri kujundamiseks.

Struktuurne lähenemine programmeerimisele 20. sajandi 70ndatel sõnastatud kujul pakkus välja programmide lammutamise, kasutades samm-sammulise detailistamise meetodit. Dekompositsiooni tulemuseks on programmi plokkskeem, mis kujutab endast mitmetasandilist hierarhilist diagrammi juhtimisalamprogrammide interaktsioonist. Selline diagramm näitab vähemalt kahte hierarhia taset, st see näitab programmi üldist struktuuri. Sama meetod võimaldab aga saada suure hulga tasemetega struktuurskeeme.

Samm-sammuline meetod rakendab ülalt-alla lähenemist ja põhineb struktureeritud programmeerimise põhikonstruktsioonidel. See hõlmab algoritmi samm-sammult väljatöötamist. Iga samm hõlmab funktsiooni jagamist alamfunktsioonideks. Seega kirjeldavad nad esimeses etapis probleemi lahendust, tuues välja üldised alamülesanded, kirjeldavad sarnaselt alamülesannete lahendust, sõnastades samal ajal järgmise taseme alamülesandeid. Seega tehakse igal etapil selgeks kavandatava tarkvara funktsioonid. Protsess jätkub, kuni nad jõuavad alamülesanneteni, algoritmideni, mille lahendused on ilmsed.

Programmi samm-sammult detailistamise meetodil dekomponeerides tuleks kinni pidada vertikaalse haldamise põhimõttest tulenevast struktuuride lammutamise põhireeglist: esiteks detailiseerida lagundatava komponendi juhtimisprotsessid, jättes selguse. andmetoimingutest kuni viimase ajani. See on tingitud asjaolust, et juhtimisprotsesside prioriteetne täpsustamine lihtsustab oluliselt komponentide struktuuri kõigil hierarhia tasanditel ja võimaldab mitte eraldada otsustusprotsessi selle täitmisest: seega, olles kindlaks määranud, millist tingimust valitakse teatud alternatiivi korral helistavad nad kohe moodulile, mis seda rakendab.

Struktuuridega tehtavate operatsioonide detaileerimine võimaldab nende spetsifikatsioonide täpsustamist edasi lükata ja annab võimaluse neid struktuure suhteliselt valutult muuta, vähendades nendest andmetest sõltuvate moodulite arvu.

Lisaks on soovitatav järgida järgmisi soovitusi:

Ärge eraldage lähtestamis- ja lõpetamistoiminguid vastavast töötlemisest, kuna lähtestamis- ja lõpetamismoodulitel on halb side (ajaline) ja tugev sidestus (juhtimine);

Ärge kavandage liiga spetsialiseeritud või liiga üldotstarbelisi mooduleid, kuna liiga spetsialiseerunud moodulite kavandamine suurendab nende arvu ja liiga üldotstarbeliste moodulite kujundamine nende keerukust;

Vältige toimingute dubleerimist erinevates moodulites, kuna nende muutumisel tuleb parandused teha kõigis programmifragmentides, kus neid tehakse – sel juhul on soovitatav need toimingud lihtsalt eraldi moodulis rakendada;

Veateadete rühmitamine ühte moodulisse ressursiteegi tüübi järgi hõlbustab sõnastuses kokkuleppimist, väldib topeltsõnumeid ja tõlgib sõnumeid teise keelde.

Samal ajal on iga probleemi lahenduse kirjeldamisel soovitatav kasutada mitte rohkem kui 1-2 struktuurset juhtimisstruktuuri, näiteks while-loop või hargnemine, mis võimaldab selgemalt ette kujutada organiseeritud arvutusliku struktuuri struktuuri. protsessi.

Mooduliteks jagamine seda tüüpi konstruktsiooni puhul toimub heuristlikult, lähtudes soovitatud mooduli suurustest (20–60 rida) ja struktuuri keerukusest (kaks või kolm pesastatud juhtstruktuuri). Põhimõtteliselt on moodulina (alamprogrammina) võimalik realiseerida lahendust alamülesannetele, mis on sõnastatud detaileerimisprotsessi mis tahes etapis, kuid programmi mooduliteks jagamisel on määrav roll moodulite valmistatavuse tagamise põhimõtetel. .

Saadud moodulite hierarhia valmistatavuse analüüsimiseks on soovitatav kasutada Constantine'i või Jacksoni struktuurikaarte.

5. 3. Constantine struktuurkaardid.

Struktuurikaardil on moodulitevahelised seosed kujutatud graafiku kujul, mille tipud vastavad moodulitele ja ühistele andmealadele ning kaared moodulitevahelistele väljakutsetele ja ligipääsudele ühistele andmealadele.

Tipusid on nelja tüüpi (joonis 1.4.):

Moodul – alamprogramm,

Alamsüsteem – programm,

Teek - alamprogrammide komplekt, mis asub eraldi moodulis,

Andmeala on spetsiaalselt loodud andmete kogum, millele pääseb juurde väljastpoolt.

A). b). V). G).

Riis. 5.4. Tipude tähistamine vastavalt IBM, ISO ja ANSI standarditele:

a – moodul; b – allsüsteem; c – raamatukogu; d – andmeala.

Sel juhul saab tarkvarasüsteemi üksikuid osi (programme, alamprogramme) kutsuda järjestikku, paralleelselt või korutiinidena (joonis 1.5.).


Riis. 5.5. Kõne tüübi tähistus:

a – järjestikune kõne; b – paralleelkõne; c – korutiini kutsumine.

Kõige sagedamini kasutatav järjekindel kõne, mille käigus moodulid pärast juhtimise üle andmist ootavad, kuni väljakutsutud programm või alamprogramm on täitmise lõpetanud, et jätkata katkestatud töötlemist.

Under paralleelselt väljakutse all mõeldakse arvutuste paralleelstamist mitmes arvutis, kui teise protsessi aktiveerimisel see protsess jätkab tööd . Ühe protsessoriga arvutites mitmeprogrammilistes keskkondades algab sel juhul vastavate programmide alternatiivne täitmine. Paralleelsed protsessid võivad olla sünkroonsed või asünkroonsed. Sünkroonsete protsesside jaoks määratakse sünkroniseerimispunktid – ajapunktid, mil protsesside vahel infot vahetatakse. Asünkroonsed protsessid vahetavad teavet ainult siis, kui paralleelprotsess on aktiveeritud.

Under korutiini kutsumine mõista kahe samaaegselt töötava programmi alternatiivse täitmise võimalust, näiteks kui üks programm on andmepaketi väljastamiseks ette valmistanud, saab teine ​​selle väljastada ja seejärel minna järgmise paketi ootamise olekusse. Veelgi enam, mitmeprogrammilistes süsteemides jätkab põhiprogramm pärast andmete edastamist tööd ega lähe ooteolekusse.

Constantine'i struktuurikaardid võimaldavad teil visuaalselt esitleda programmi mooduliteks jagamise tulemust ja hinnata selle kvaliteeti, st vastavust struktureeritud programmeerimise soovitustele (ühtekuuluvus ja sidusus).

5.4. Andmestruktuuride kujundamine.

Andmestruktuuride kujundamine viitab nende esitusviiside arendamisele mälus. Peamised parameetrid, mida tuleb andmestruktuuride kujundamisel arvesse võtta, on järgmised:

Iga andmeelemendi kohta salvestatud teabe tüüp;

Andmeelementide ja pesastatud struktuuride vahelised seosed;

Struktuuriandmete säilitamise aeg (eluiga);

Andmeelementide, pesastatud struktuuride ja struktuuride kui terviku toimingute komplekt

Salvestatud teabe tüüp määrab vastava mäluvälja tüübi. Sõltuvalt kasutatavast programmeerimiskeelest võib andmeelementideks lugeda järgmist:

Erinevas vormingus täis- ja reaalarvud;

Sümbolid;

Boole'i ​​väärtused: tõene ja väär;

samuti mõned struktuursed andmetüübid, näiteks:

Spetsiaalselt deklareeritud klassid.

Samal ajal on numbriväljade jaoks väga oluline võimalike väärtuste vahemik õigesti määrata ja stringiandmete puhul - maksimaalne võimalik stringi pikkus.

Elementide ja pesastatud struktuuride vahelised seosed, samuti nende stabiilsus ning elementidega ja pesastatud struktuuridega tehtavate toimingute kogum määravad andmete esitamiseks kasutatavad mälustruktuurid. Eluiga võetakse arvesse andmete paigutamisel staatilisse või dünaamilisse mällu, samuti välismällu.

Vaatleme üksikasjalikumalt olemasolevaid andmete sisemise esituse võimalusi, nende elemente ja nendevahelisi seoseid.

Andmete esitamine RAM-is

Andmete korraldamiseks RAM-is on kaks põhistruktuuri: vektor ja loend.

Vektori struktuur on mälubaitide jada, mida kasutatakse andmeväljade mahutamiseks (joonis 1.6.).

Riis. 5.6. Vektormälu struktuur.

Organiseeritud andmestruktuuride järjestikune paigutus võimaldab otsest juurdepääsu elementidele: indeksi (indeksite komplekti) järgi - massiivides või stringides või välja nime järgi - kirjetes või objektides.

Elementide lisamine ja eemaldamine vektorstruktuuride kasutamisel massiivi elementide paigutamiseks võib aga nõuda mitut elemendi nihutamist.

Andmestruktuure vektoresituses saab paigutada nii staatilisse kui ka dünaamilisse mällu. Vektoresitluste paigutamine dünaamilisse mällu võib mõnikord oluliselt suurendada RAM-i kasutamise efektiivsust. Dünaamilisse mällu on soovitatav paigutada ajutised struktuurid, mis salvestavad vahetulemusi, ja struktuurid, mille suurus sõltub tugevalt sisendandmetest.

Loendi struktuurid on üles ehitatud spetsiaalsetest elementidest, mis lisaks teabeosale sisaldavad ka üht või mitut osutit – antud elemendiga seotud elementide või pesastatud struktuuride aadresse. Selliseid elemente dünaamilisse mällu paigutades saab organiseerida erinevaid sisemisi struktuure (joonis 1.7.).


Riis. 5.7. Loendi mälustruktuuride näited:

a - lineaarne üksikult seotud loend; b - puude loend; c on n-lingitud loend.

Loendistruktuuride kasutamisel pidage aga meeles järgmist.

Osutajate salvestamiseks on vaja lisamälu;

Info otsimine toimub lineaarsetest loenditest järjestikku, ja nõuab seetõttu rohkem aega;

Loendite koostamine ja loenditesse salvestatud andmeelementidega toimingute sooritamine nõuab osavamaid programmeerijaid, on töömahukam ning vastavad rutiinid sisaldavad rohkem vigu ja nõuavad seetõttu põhjalikumat testimist.

Tavaliselt kasutatakse vektoresitlust staatiliste komplektide, tabelite (ühe- ja mitmemõõtmeliste), näiteks maatriksite, ridade, kirjete, aga ka naabrusmaatriksi, esinemismaatriksiga või analüütiliselt esitatud graafikute salvestamiseks. Loendiesitus on mugav dünaamiliste (muutavate) struktuuride ja keerukate seostega struktuuride salvestamiseks.

Kõige kriitilisematel juhtudel on sisemise esituse valikul soovitav määrata erinevate valikute puhul andmestruktuuri või selle elementidega enamlevinud toimingute sooritamise arvutuslik keerukus. Ja hinnake ka nende mahtuvuslikku keerukust.

Andmete esitus välismälus

Kaasaegsed operatsioonisüsteemid toetavad kahte võimalust andmete korraldamiseks välismälus: järjestikust ja otsejuurdepääsu.

Andmetele järjestiku juurdepääsuga on võimalik teostada ainult andmeelementide järjestikust lugemist või järjestikust kirjutamist. Seda suvandit kasutatakse loogiliste seadmetega, nagu klaviatuur või ekraan, töötamisel tekstifailide või failide töötlemisel, mille salvestusvorming töö käigus muutub.

Otsene juurdepääs on võimalik ainult kettafailidele, mis vahetavad teavet fikseeritud pikkusega kirjetega (C-binaarfailid või Pascal-tüüpi failid). Sellise faili salvestusaadressi saab määrata selle järgi number, mis võimaldab teil soovitud kirjele otse juurde pääseda.

Andmestruktuuride mahutamiseks mälutüübi valimisel pidage meeles, et:

RAM salvestab andmeid, mis nõuavad kiiret juurdepääsu nii lugemiseks kui muutmiseks;

Välises - andmed, mis tuleb pärast programmi lõppu salvestada.

Võimalik, et töö ajal on soovitatav salvestada andmed RAM-i, et neile juurdepääsu kiirendada, ja kui see on lõpetatud, kirjutada need pikaajaliseks salvestamiseks ümber välismällu. See on meetod, mida enamik tekstiredaktoreid kasutab: tekstiga töötades paigutatakse see kogu või osa sellest RAM-i, kust see vastavalt vajadusele välismällu kopeeritakse. Sellistel juhtudel töötatakse välja kaks andmete esitust: RAM-is ja välismälus.

Struktuuride õige valik määrab suuresti arendatava tarkvara efektiivsuse ja selle tehnoloogilised omadused, mistõttu tuleks sellele küsimusele pöörata piisavalt tähelepanu olenemata kasutatavast lähenemisviisist.

5.5. Andmete dekomponeerimisel põhinev tarkvara disain.

Peaaegu samaaegselt pakuti välja Jacksoni ja Warnier-Orri tarkvara kujundamise meetodid, mis põhinevad andmete lagunemisel. Mõlemad tehnikad on loodud "lihtsate" programmide loomiseks, mis töötavad keerukate, kuid hierarhiliselt organiseeritud andmestruktuuridega. Kui on vaja tarkvarasüsteeme arendada, siis mõlemal juhul tehakse ettepanek kõigepealt süsteem eraldi programmideks jaotada ja seejärel neid tehnikaid kasutada.

Jacksoni tehnika

Oma metoodikat luues lähtus M. Jackson sellest, et lähteandmete ja tulemuste struktuurid määravad programmi struktuuri.

Tehnika põhineb lähteandmete struktuuride ja tulemuste vahelise vastavuse otsimisel. Selle kasutamisel on aga võimalikud olukorrad, kus mõnel tasemel vastavusi pole. Näiteks lähtefailis olevaid kirjeid ei sorteerita selles järjekorras, milles vastavad read aruandes peaksid ilmuma. Selliseid olukordi nimetati kokkupõrgeteks. Kokkupõrkeid on mitut tüüpi, mis lahendatakse erineval viisil. Kui kirjete järjestus on erinev, sorteeritakse need enne töötlemist lihtsalt ära.

Programmi struktuuride väljatöötamine vastavalt metoodikale toimub järgmiselt:

Ehitada pilt sisend- ja väljundandmete struktuuridest;

Tuvastatakse nende andmete vahelised töötlemise seosed (vastavused);

kujundada andmestruktuuride ja tuvastatud vastavuste põhjal programmi struktuur;

lisada töötlemisplokke elementidele, millele vasteid ei leitud;

Analüüsige ja töötlege ebakõlasid, st lahendage "kokkupõrked";

Lisa vajalikud toimingud (sisend, väljund, failide avamine/sulgemine jne); kirjutada programm struktuursete tähistusega (pseudokood).

Warnier-Orri tehnika.

Varnier-Orri meetod põhineb Jacksoni meetodiga samal põhimõttel, kuid diagrammi koostamisel on peamised väljundandmete struktuurid ja kui sisendandmete struktuurid ei vasta väljundi struktuuridele, siis saab neid muuta. Seega on kokkupõrgete peamine põhjus kõrvaldatud.

Praktikas ei ole aga alati võimalik sisendandmete struktuure ümber korraldada: neid struktuure saab juba rangelt täpsustada, näiteks kui kasutatakse programmi täitmisel saadud andmeid, seega kasutatakse seda tehnikat harvemini.

Nagu eeltoodust järeldub, saab Jacksoni ja Varnier-Orri meetodeid kasutada ainult siis, kui arendatavate programmide andmeid saab esitada hierarhia või hierarhiate komplektina.

5.6. Juhtumitehnoloogiad, mis põhinevad analüüsi ja disaini struktuursetel metoodikatel.

Tänaseks on kogunenud kogemus enamiku tuntumate struktuurianalüüsi ja projekteerimismetoodikate edukaks kasutamiseks vastavates CASE tööriistades. Enimlevinud metoodikad on: SADT (3,3%), Gain-Sarsoni struktuurisüsteemide analüüs (20,2%), Jordan-De struktuurianalüüs ja disain (36,5%), Jacksoni süsteemide arendus (7,7%), struktuurse DSSD (Data Structured) arendus. Süsteemiarendus) Varnier-Orr (5,8%), Ward-Mellori ja Hutley reaalajasüsteemide disaini analüüs, Martini infomodelleerimine (22,1%).

Nagu ülaltoodud statistikast näha, on enim kasutatud metoodikaid, mis kasutavad andmevoo diagramme. See on tingitud kahest põhjusest:

Andmevoo diagrammid, täpsemalt võrreldes funktsionaalsete diagrammidega, kajastavad praegu arvukate spetsiifikat teavet süsteemid: ei nõua töödeldava teabe ranget tippimist, näevad ette andmete salvestamise võimaluse, täpsustavad suhtlemist välismaailmaga, näevad ette tervikliku tarkvaramudeli hankimise jne;

P(Jacksoni või Costantine'i struktuurikaartide) koostamiseks andmevooskeemide abil on välja töötatud meetod, mis võimaldab selliseid spetsifikatsioone automaatselt luua.