Algoritmeja suunnitellaan kahdella lähestymistavalla, jotka ovat top-down- ja bottom-up-lähestymistapa. Ylhäältä alas -lähestymistavassa monimutkainen moduuli jaetaan alamoduuleihin. Toisaalta bottom-up-lähestymistavassa aloitetaan alkeismoduuleista ja yhdistellään niitä edelleen. Algoritmin ensisijainen tarkoitus on käyttää tietorakenteeseen sisältyviä tietoja. Toisin sanoen algoritmia käytetään suorittamaan operaatioita tietorakenteiden sisällä oleville tiedoille.
Monimutkainen algoritmi jaetaan pieniin osiin, joita kutsutaan moduuleiksi, ja jakoprosessi tunnetaan nimellä modularisointi. Modularisointi vähentää merkittävästi algoritmin suunnittelun monimutkaisuutta ja tekee sen prosessista helpomman suunnitella ja toteuttaa. Modulaarinen ohjelmointi on tekniikka, jossa ohjelma suunnitellaan ja kirjoitetaan funktioiden muodossa, jossa jokainen funktio eroaa toisistaan ja toimii itsenäisesti. Funktioiden sisältö on tavallaan yhtenäinen, ja moduulien välinen kytkentä on vähäistä.
Sisältö: Top-down Approach Vs Bottom-up Approach
-
- Vertailukaavio
- Määritelmä
- Keskeiset erot
- Johtopäätös
Vertailukaavio
Vertailun lähtökohdat | Top-down Approach | Bottom-up Approach |
---|---|---|
Basic | Purkaa massiivinen ongelma pienempiin osaongelmiin. | Ratkaisee perustavanlaatuisen matalan tason ongelman ja integroi ne suuremmaksi ongelmaksi. |
Prosessi | Alamoduulit analysoidaan yksinäisesti. | Tarkastellaan, mitä tietoja on kapseloitava, ja implikoidaan informaation kätkemisen (information hiding) konsepti. |
Kommunikaatio | Ei vaadita ylhäältä-alas-lähestymistavassa. | Tarvitaan tietty määrä kommunikaatiota. |
Redundanssi | Sisältää tarpeetonta tietoa. | Redundanssi voidaan poistaa. |
Ohjelmointikielet | Rakenne/proseduuripainotteiset ohjelmointikielet (esim. C) noudattavat ylhäältä alaspäin suuntautuvaa lähestymistapaa. | Objektipainotteiset ohjelmointikielet (kuten C++, Java, jne.) noudattavat alhaalta ylöspäin suuntautuvaa lähestymistapaa. |
Käytetään pääasiassa | Moduulien dokumentoinnissa, testitapausten luomisessa, koodin toteuttamisessa ja virheenkorjauksessa. | Testauksessa |
Ylhäältä alas -lähestymistavan määritelmä
Ylhäältä alas -lähestymistapa periaatteessa jakaa monimutkaisen ongelman tai algoritmin useisiin pienempiin osiin (moduuleihin). Näitä moduuleja puretaan edelleen, kunnes tuloksena oleva moduuli on olennaisesti ymmärrettävä perusohjelma, jota ei voida edelleen purkaa. Kun tietty modulaarisuuden taso on saavutettu, moduulien purkaminen lopetetaan. Ylhäältä alas -lähestymistapa on vaiheittainen prosessi, jossa suuri ohjelmamoduuli hajotetaan yksinkertaisempiin ja pienempiin moduuleihin ohjelman organisoimiseksi ja koodaamiseksi tehokkaalla tavalla. Ohjausvirta on tässä lähestymistavassa aina alaspäin suuntautuva. Ylhäältä alas -lähestymistapa on toteutettu C-ohjelmointikielessä funktioiden avulla.
Ylhäältä alas -menetelmä alkaa siis abstraktista suunnittelusta, ja sitten tätä suunnittelua tarkennetaan peräkkäin konkreettisempien tasojen luomiseksi, kunnes ei enää tarvita lisäparannuksia.
Alhaalta ylös -lähestymistavan määritelmä
Alhaalta ylös -lähestymistapa toimii juuri päinvastaisella tavalla kuin ylhäältä alas -lähestymistapa. Aluksi siinä suunnitellaan kaikkein perustavanlaatuisimmat osat, jotka sitten yhdistetään korkeamman tason moduulin muodostamiseksi. Tämä osamoduulien ja moduulien yhdistäminen korkeamman tason moduuliin suoritetaan toistuvasti, kunnes saadaan haluttu täydellinen algoritmi.
Alhaalta ylös -lähestymistapa toimii abstraktiotasojen avulla. Alhaalta ylös -lähestymistavan ensisijainen sovellus on testaus, sillä jokainen perusmoduuli testataan ensin ennen sen yhdistämistä suurempaan moduuliin. Testauksessa käytetään tiettyjä matalan tason funktioita.
Top-down- ja Bottom-up-lähestymistavan keskeiset erot
- Top-down-lähestymistapa hajottaa suuren tehtävän pienempiin osatehtäviin, kun taas bottom-up-lähestymistapa valitsee ensin tehtävän eri perusosien suoran ratkaisun, jonka jälkeen yhdistetään nuo osat kokonaiseksi ohjelmaksi.
- Jokaista alamoduulia käsitellään ylhäältä alaspäin suuntautuvassa lähestymistavassa erikseen. Sitä vastoin bottom-up-lähestymistapa toteuttaa tiedon kätkemisen käsitteen tarkastelemalla kapseloitavaa tietoa.
- Top-down-lähestymistavassa eri moduulit eivät vaadi paljoa kommunikointia. Sitä vastoin bottom-up-lähestymistapa tarvitsee vuorovaikutusta erillisten perusmoduulien välillä, jotta ne voidaan yhdistää myöhemmin.
- Top-down-lähestymistapa voi tuottaa redundanssia, kun taas bottom-up-lähestymistapa ei sisällä redundanttia tietoa.
- Proseduraaliset ohjelmointikielet, kuten Fortran, COBOL ja C, noudattavat top-down-lähestymistapaa. Sen sijaan oliokeskeiset ohjelmointikielet, kuten C++, Java, C#, Perl ja Python, noudattavat alhaalta ylös -lähestymistapaa.
- Alhaalta ylös -lähestymistapaa käytetään ennen kaikkea testauksessa. Sitä vastoin ylhäältä alas -lähestymistapaa hyödynnetään moduulin dokumentoinnissa, testitapausten luomisessa, virheenkorjauksessa ja niin edelleen.
Johtopäätös
Ylhäältä alas -lähestymistapa (top-down approach) ja alhaalta ylös -lähestymistapa (bottom-up approach) ovat algoritmisuunnittelumenetelmiä, joissa ylhäältä alas -lähestymistapa (top-down approach) on perinteinen lähestymistapa, jossa järjestelmä puretaan korkean tason spesifikaatioiden pohjalta matalan tason spesifikaatioiden pohjalta. Toisaalta alhaalta ylös -lähestymistapa on tehokkaampi ja toimii käänteisellä tavalla, jossa alkeiskomponentit suunnitellaan ensin ja edetään sitten korkeammalle tasolle.
Ylhäältä alas -lähestymistapa painottaa alamoduulien eristämistä (tarkoittaa vähäistä kytkentää moduulien välillä), kun taas se jättää huomiotta kommunikaation tunnistamisen ja uudelleenkäytettävyyden käsitteen. Kun taas alhaalta ylös -lähestymistavassa tiedon kätkeminen ja uudelleenkäytettävyys ovat keskeisiä tekijöitä.
Vastaa