FRI:UNI:Vodenje projektov:Načrtovanje

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

<==Nazaj

Vsebina

Načrtovanje

  • cilj je izdelava načrta programske opreme - izhodišče za kodiranje
  • izrednega pomena za nadaljni razvoj
  • slabo načrtovano programsko oprema je težko testirati in načrtovati - na dolgi rok je taka oprema veliko dražja

Sestavine načrta programske opreme

Arhitektura programske opreme

  • rezultat delitve problemskega področja na podprobleme (module)
  • prikazuje podrejenost/nadrejenost
  • programsko arhitekturo lahko opišemo z izrazi: globina in širina grafa, razvejitev in združitev modulov
  • grafi so lahko ciklični ali aciklični
  • zaželene so drevesne strukture


Načrt podatkovnih struktur

  • ponazarja logična razmerja med posameznimi podatkovnimi elementi


Načrt postopkov

  • nedvoumno določeni: naravni jezik ni primeren
  • psevdokoda, grafični in tabelarni zapisi
  • strukturirano programiranje: zaporedje, pogoj, ponavljanje
  • kodiranje na osnovi psevdokode je enostavno
  • opcija so tudi diagrami poteka - pri večjih programih lahko postanejo nepregledni
  • kadar je veliko začetnih pogojev in možnih odločitev je najpreglednejši način prikaza s pomočjo tabel

Načrtovalska načela

Postopna izboljšava

  • primerno za načrtovanje majhnih programov
  • arhitekturo naj bi definirali s postopnim razkrivanjem podrobnosti

Abstrakcija

  • osredotočenje na tiste lastnosti, ki so za trenutno raven obravnave bistvene
  • Postopkovna abtrakcija
    • kakšne korake moramo storiti, da pridemo do cilja
    • hirarhična struktura, na vrhu katere je problem, na nižjih ravneh pa posamezne ravni abstrakcije
  • Podatkovna abstrakcija
    • razgraditev problema na način, ki pripelje do neodvisnih modulov
    • podrobnosti o dejanski podatkovi strukturi skrijemo v poseben modul
    • drugi moduli morajo vedeti le to, kako se do podatkov dostopa, ostalo jih ne zanima
    • to načelo je vodilo objektno usperjenega programiranja

Modularnost

  • velja, da določen problem lažje (in hitreje) rešimo, če ga razdelimo na podprobleme (module)
  • modulov mora biti ravno prav, saj nas tudi povezovanje stane nekaj časa in denarja
  • module delimo glede na:
    1. Čas inkorporacije
    2. Aktivacijski mehanizem
    3. Obliko kontrole: sekvenčni, inkrementalni, vzporedni
  • Notranja enotnost modulov: bolj kot je notranje enoten, boljši je
  • stopnje notranje enotnosti:
    1. Naključna
    2. Logična
    3. Časovna
    4. Komunikacijska
    5. Zaporedna
    6. Funkcijska
  • enotnost modula preizkusimo tako, da njegov namen opišemo z enim stavkom (imamo več glagolov, nekaj naštevamo, ipd. modul ne služi eni funkciji)
  • Soodvisnot modulov: povezava med moduli, mora biti čim manjša
    1. Podatkovna
    2. Referenčna
    3. Kontrolna
    4. Zunanja
    5. Skupna
    6. Vsebinska
  • Določemim vrstam soodvisnoti ni mogoče ubežati, a jih je dobro čim bolj omejiti
  • Nizko soodvisnost in visoko notranjo enotnost dosežemo tako, da zasnujemo čim bolj preproste vmesnike
  • Med moduli naj bi prišlo do izmenjve podatkov le kot posledica ustreznega klica
  • Taki moduli imajo prednosti:
    • sodelovanje programerjev je lažje
    • manj verjetno je, da bi spremembe v enem vplivale na drugega
    • delovanje je lažje razumeti
    • taki moduli imajo manj napak

Skrivnanje informacij

  • Modul naj skriva vse informacije, ki jih drugi moduli ne potrebujejo
  • tak sistem je lažje testirati in vzdrževati

Načrtovalske metode

Funkcijska dekompozicija

  • bolj filozofija kot metoda
  • vsako funkcijo razdelimo na podfunkcije
  • to nadaljujemo dokler ne pridemo do osnovnih operacij in struktur izbranega jezika
  • povezati moramo funkcije določene med analizo in osnovne gradnike programske opreme
  • dva načina:
    • Načrtovanje od zgoraj navzdol
    • Načrtovanje od spodaj navzgor

Načrtovanje na osnovi pretoka podatkov

  • načrtovanje nadaljujemo tam, kjer se je končala analiza pretoka podatkov
  • ima enega od dveh možnih značajev:
    • transformacijski:
      1. razmejimo vhodne/izhodne transformacije od osrednjih
      2. Diagram pretoka podatkov preslikamo v programsko strukturo (na vrhu je glavni modul, podrejeni so mu: vhod, transakcija, izhod)
      3. vsaki transakciji pripišemo ustrezen modul
      4. tako izpeljano arhitekturo izboljšamo z uporabo načrtovalskih načel
    • transakcijski:
      1. Poiščemo transakcijski center in ločimo poti, ki izvirajo iz njega
      2. Diagram pretoka preslikamo v programsko strukturo. Na vrhu je glavni modul, podrejena sta mu: modul za koordiniranje vhoda/izhoda in za koordiniranje transakcijskega centra
      3. Vsaki transakciji pripišemo ustrezen programski modul
      4. Po potrebi izboljšamo

Načrtovanje na osnovi strukture podatkov

  • metoda LCP
    • Vhodno/izhodne podatke predstavimo z Warnierovimi diagrami
    • Procesiranje predstavimo z Warnierovimi diagrami
  • metoda JSD
    • vsebuje tri korake
      1. Modeliranje: problem opišemo tako, da identificiramo osnovne enote in akcije
      2. Povezovanje: model, ki celoten sistem prikazuje kot omrežje sočasnih procesov in enot
      3. Implementacija: komunikacije med enotami spremenimo v podprogramske klice

Objektno orientirano načrtovanje

  • zagotavlja modularizacijo procesiranja in informacij
  • kreiranje abstraktnih podatkovnih struktur
  • objekti, atributi, stanje objekta, obnašanje objekta, operacije
  • objektna analiza:
    1. Identifikacija objektov
    2. Določanje njihovih atributov in operacij
    3. Določanje hierarhije objektov
  • da preidemo do končnega načrta, je potrebne vse tri korake nekajkrat ponoviti, saj so med seboj tesno povezani
  • prednosti:
    • bolj naraven pristop
    • bolj se osredotoči na strukturo sistema
    • olajša prehod med analizo, načrtovanjem in kodiranjem
    • vodi do bolj fleksibilnih sistemov
    • omogoča ponovno uporabo programske opreme
    • nove objekte lahko definiramo kot posebne primere obstoječih
    • naj bi utelešal vse zaželene principe dobrega načrtovanja
  • objektno orientiran pristop še ne zagotavlja dobrega sistema

Izbiranje načrtovalske metode

  • vse metode imajo prednosti in slabosti
  • za vsak primer poizkušamo na podlagi izkušenj izbrati najboljšo rešitev problema
  • na izbiro vplivajo tudi: izkušnje na uporabniškem področju, izkušnje s posamezno metodo, razpoložljiva orodja in celostna filozofija pristopa k razvoju programske opreme
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja