İçeriğe atla

Yukarıdan aşağıya ve aşağıdan yukarıya tasarım

Yazılım, hümanistik (insani), bilimsel teoriler, yönetim ve organizasyon gibi çeşitli alanlarda kullanılan, yukarıdan aşağıya ve aşağıdan yukarıyanın her ikisi de bilgi işleme ve bilgi sıralama stratejisidir. Pratikte, bir düşünce, öğretim veya liderlik biçimi olarak görülebilirler.

Basamaklı (aşamalı) tasarım olarak da bilinen ve bazı durumlarda dekompozisyonun eşanlamlısı olarak kullanılan yukarıdan aşağıya doğru yaklaşım, temel olarak bir sistem hakkında fikir edinmek için sistemin ters mühendislik tarzına uygun olarak bilişimsel (düzensel) alt sistemlere parçalanmasıdır (ayrılmasıdır).

Yukarıdan aşağıya doğru bir yaklaşımda, birinci seviye alt sistemler detayına girmeden belirtilerek sisteme genel bir bakış oluşturulur. Ardından, tüm belirtimler temel öğelerine indirilinceye kadar her alt sistem daha ayrıntılı olarak ve bazen daha çok ek alt sistem seviyesinde işlenir.

Yukarıdan aşağıya bir model genellikle "kara kutular" yardımıyla belirtilir ve bu da daha kolay işlenmesini sağlar. Bununla birlikte, kara kutular temel mekanizmaları açıklığa kavuşturmada başarısız olabilir veya modeli gerçekçi bir şekilde doğrulamak için yeterince detaylı olmayabilir. Yukarıdan aşağıya yaklaşımı, büyük resimle başlar, buradan daha küçük parçalara bölünür.

Aşağıdan yukarıya doğru yaklaşım, sistemlerin birbirine eklenmesiyle daha karmaşık sistemlerin ortaya çıkmasını sağlar. Aşağıdan yukarıya işleme, bir algı oluşturması için ortamdan gelen verilere dayanan bir bilgi işleme türüdür. Bilişsel psikoloji perspektifinden bakıldığında, bilgiler bir yönden göze girer (duyusal girdi ve aşağı) ve daha sonra beyin tarafından yorumlanır ve algılanabilen bir görüntü haline dönüşür (işlemeden nihai kavramaya kadar oluşturulmuş çıktı).

Aşağıdan yukarıya doğru bir yaklaşımda, sistemin temel unsurları ilk önce ayrıntılı olarak belirtilir. Daha sonra bu elemanlar, büyük alt sistemler oluşturmak üzere bir araya getirilir ve bu alt sistemler tam bir üst düzey sistem oluşturulana kadar, bazen birçok seviyede bağlanır. Bu strateji, genellikle başlangıçların küçük olduğu ancak sonunda karmaşıklık ve bütünlük içinde büyüyen bir tohum modelini andırıyor. Bununla birlikte, organik stratejiler, global bir amacı karşılamak yerine yalıtılmış olarak geliştirilen ve yerel optimizasyona tabi tutulan öğelerin ve alt sistemlerin birbirine karışmasına neden olabilir.

Bilgisayar bilimi

Yazılım geliştirimi

Yazılım geliştirme sürecinde yukarıdan aşağıya ve aşağıdan yukarıya yaklaşımları önemli bir rol oynamaktadır.

Yukarıdan aşağıya yaklaşımlar, planlamayı ve sistemin tam bir anlayışını vurgular. Sistemin en azından bir bölümünün tasarımında yeterli bir detay seviyesine ulaşılıncaya dek hiçbir kodlamanın başlamaması doğası gereğidir. Yukarıdan aşağıya yaklaşımlar, modül yerine koçanlar eklenerek gerçekleştirilir. Ancak bu, kayda değer tasarım tamamlanıncaya kadar bir sistemin nihai işlevsel birimlerinin testini geciktirir.

Aşağıdan yukarıya yaklaşımda, kodlama ve ilk modül belirtilir belirtilmez başlanabilecek erken testi vurgular. Bununla birlikte, bu yaklaşım, modüllerin, modüllerin sistemin diğer bölümlerine nasıl bağlanacağı hakkında net bir fikir olmadan kodlanabilme ve bu bağlantıların ilk düşünüldüğü kadar kolay olmama riskini taşır. Kodun yeniden kullanılabilirliği, aşağıdan yukarıya yaklaşımın en önemli yararlarından biridir.

Yukarıdan aşağıya tasarım, 1970'lerde IBM araştırmacıları Harlan Mills ve Niklaus Wirth tarafından duyuruldu (yaygınlaştırıldı). Mills, pratik kullanım için yapılandırılmış programlama kavramları geliştirdi ve bunları New York Times morg indeksini otomatikleştiren 1969'daki bir projede test etti. Bu projenin mühendislik ve yönetim başarısı, yukarıdan aşağıya doğru yaklaşımın IBM ve bilgisayar endüstrisinin geri kalanı aracılığıyla yayılmasına yol açtı. Diğer başarılar arasında, Pascal programlama dilinin geliştiricisi Niklaus Wirth'in yazdığı etkili makale Program Development by Stepwise Refinement yazması gösterilebilir. Niklaus Wirth, (programın tüm özelliklerini bilmeden bir modül tanımlayabilmesine izin veren) Modula ve Oberon gibi dilleri geliştirme yoluna gittiği için tam olarak desteklediği şeyin yukarıdan aşağıya programlama olduğu söylenemez. Yukarıdan aşağıya yöntemler, 1980'lerin sonuna kadar yazılım mühendisliğinde tercih edilmiştir ve nesneye dayalı programlama, yukarıdan aşağıya ve aşağıdan yukarıya programlama bakış açılarının her ikisinin de kullanılabileceği fikrini göstermeye yardımcı olmuştur.

Modern yazılım tasarımı yaklaşımları genellikle yukarıdan aşağıya ve aşağıdan yukarıya yaklaşımlarını birleştirir. İyi bir tasarım için komple sistemin anlaşılması genellikle gerekli olmakla birlikte ve bu da teorik olarak yukarıdan aşağıya doğru bir yaklaşıma yönlendirse de çoğu yazılım projesi mevcut kodu bir dereceye kadar kullanmaya çalışır. Önceden var olan modüller, tasarımlara aşağıdan yukarıya bir tat katar. Bazı tasarım yaklaşımlarıysa kısmen işlevsel bir sistemin tamamlanması için tasarlanmış ve kodlanmış bir yaklaşım kullanıyor ve bu sistem daha sonra projenin tüm gereksinimlerini karşılayacak şekilde genişletiliyor.

Programlama

Yukarıdan aşağıya, tasarımın karmaşık parçaların belirlenip daha sonra daha küçük parçalara bölünerek başladığı geleneksel prosedürel dillerin temelini oluşturan bir programlama stilidir. Yukarıdan aşağıya yöntemini kullanarak bir program yazmak, ihtiyaç duyulan tüm önemli işlevleri tanımlayan bir ana yordam yazmaktır. Daha sonra programlama ekibi bu işlevlerin her birinin gereksinimlerine bakar ve süreç tekrarlanır. Kolayca ve öz bir şekilde kodlanmış bu bölümlendirilmiş alt rutinler sonunda basitçe işlemleri gerçekleştirecektir. Tüm alt rutinler kodlandığında program test için hazırdır. Uygulamanın yüksek seviyede nasıl bir araya geldiği tanımlanarak alt seviye işin kendi kendine yeterli olması sağlanabilir. Alt seviye soyutlamaların daha üst seviyedeki soyutlamalara nasıl entegre edileceği tanımlanarak arayüzler net bir şekilde belirtilir.

Aşağıdan yukarıya doğru bir yaklaşımda, sistemin temel unsurları ilk önce ayrıntılı olarak belirtilir. Daha sonra bu öğeler, daha büyük alt sistemler oluşturmak üzere bir araya getirilir ve alt sistemler tam bir üst düzey sistem oluşturulana kadar birçok seviyede bağlanır. Nesne yönelimli programlama, uygulama ve bilgisayar programlarını tasarlamak için nesneler kullanan bir paradigmadır. Makine mühendisliğinde Pro/ENGINEER, Solidworks ve Autodesk Inventor gibi yazılımlarla kullanıcılar ürünlerin tamamını bir seferde değil parça parça tasarlayabilir ve daha sonra bu parçaları bir araya getirerek LEGO'larla inşa eder gibi montajlarını oluşturabilir. Mühendisler buna küçük parça tasarımı der.

Aşağıdan yukarıya doğru yaklaşımda, modül tarafından sağlanacak işlevselliği belirlemek için iyi sezgiler gereklidir. Eğer bir sistem mevcut bir sistemden kurulacaksa bazı var olan modüllerden yola çıkıldığı için bu yaklaşım daha uygundur.

Ayrıştırma

Ayrıştırma, gramer yapısını belirlemek için (dosyadan veya klavyeden okunan) bir girdi sırasını çözümleme sürecidir. Bu yöntem, bir derleyicide olduğu gibi hem doğal dillerin hem de bilgisayar dillerinin analizinde kullanılır. Aşağıdan yukarıya ayrıştırma, ilk önce en temel birimleri tanımlamaya ve daha sonra üst düzey yapıları onlardan çıkarmaya çalışan bilinmeyen veri ilişkilerini analiz etme stratejisidir. Diğer taraftan yukarıdan aşağıya doğru ayrıştırıcılar, genel ayrıştırma ağacı yapılarını varsayar ve ardından bilinen temel yapıların hipotezle uyumlu olup olmadığını değerlendirir.

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Pascal (programlama dili)</span> yüksek seviyeli programlama dili

Pascal bilgisayar programlama dili pek çok öğrenciye bilgisayar programlamayı öğreten ve çeşitli versiyonları bugün hâlâ yaygın olarak kullanılmaya devam eden en önemli programlama dillerinden biridir. İlk Macintosh işletim sisteminin çoğu ve TeX Pascal ile yazılmıştır.

Bilişim, bilişim bilimi ya da bilgisayar bilimi, bilgi ve hesaplamanın kuramsal temellerini ve bunların bilgisayar sistemlerinde uygulanabilmeleri sağlayan pratik teknikleri araştıran bir yapısal bilim dalıdır. Bilişimciler ya da bilgisayar bilimcileri bilgi oluşturan, tanımlayan ve dönüştüren algoritmik süreçler icat edip, kompleks sistemleri tasarlamak ve modellemek için uygun soyutlamalar formüle ederler. Bilişim Dünya'da hızla gelişmeye devam eden önemli bir teknolojidir.

<span class="mw-page-title-main">Yazılım</span> bilgisayarın somut olmayan çalıştırılabilir bileşeni

Yazılım, değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik aygıtların birbirleriyle haberleşebilmesini ve uyumunu sağlayarak görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan makine komutlarıdır.

<span class="mw-page-title-main">Kurumsal kaynak planlaması</span> kurumun kaynaklarını verimli şekilde kullanacak şekilde planlaması

Kurumsal kaynak planlaması ya da işletme kaynak planlaması, işletmelerde mal ve hizmet üretimi için gereken işgücü, makine, malzeme gibi kaynakların verimli bir şekilde kullanılmasını sağlayan bütünleşik yönetim sistemlerine verilen genel addır. Kurumsal kaynak planlaması (KKP) sistemleri, bir işletmenin tüm veri ve işlemlerini bir araya getirmeye veya bir araya getirilmesine yardımcı olmaya çalışan ve genelde kullanımı kolay olan sistemlerdir. Klasik bir KKP yazılımı işlem yapabilmek için bilgisayarın çeşitli yazılım ve donanımlarını kullanır. KKP sistemleri temel olarak değişik verilerin saklanabildiği bütünleşik bir veritabanı kullanırlar.

Objective-C, C'nin üzerine yazılmış, yansımalı, nesne yönelimli bir programlama dilidir. ObjC, Objective C ve Obj-C olarak da anılır.

<span class="mw-page-title-main">Nesne yönelimli programlama</span> nesne kavramına dayalı programlama paradigması

Nesne yönelimli programlama veya kısaca NYP, Her işlevin nesneler olarak soyutlandığı bir programlama yaklaşımıdır. NYP destekleyen programlama dilleri yüksek seviye diller olarak adlandırılır.

Paralel hesaplama ya da Koşut hesaplama, aynı görevin, sonuçları daha hızlı elde etmek için çoklu işlemcilerde eş zamanlı olarak işletilmesidir. Bu fikir, problemlerin çözümünün ufak görev parçalarına bölünmesi ve bunların eş zamanlı olarak koordine edilmesine dayanır. Paralel hesaplama ile performans artar, büyük sorunlar daha az sürede çözülür ve bilimdeki gelişmeler paralel hesaplamaya gereksinim duyar.

<span class="mw-page-title-main">Endüstri mühendisliği</span> Mühendislik

Endüstri mühendisliği ya da sanayi mühendisliği, insan, malzeme ve makineden oluşan bütünleşik sistemlerin kuruluş ve devamlılığının yönetimi ile ilgilenen mühendislik dalıdır. Endüstri mühendisleri, diğer mühendislik dallarının birçoğunun derslerini de alıp, üzerine işletme, yönetim, üretim, ekonomi ve endüstri mühendisliğine özel derslerle birlikte diğer mühendislik alanlarının yöneticilik yetkisine sahip mühendislik dalı.

Nesne Yönelimli Çözümleme ve Tasarım, bir sistemin/sistem modülleri setinin/organizasyonun/işletme biriminin gereksinimlerinin çözümlenmesinde ve uygun bir çözümün tasarımında nesne ile modelleme tekniklerini kullanır. Modern nesne yönelimli çözümleme ve tasarım yöntemlerinin çoğu, gereksinim, tasarım, uygulama, test ve dağıtım süreçleri boyunca kullanım senaryoları üzerine kuruludur. Kullanım Senaryoları, nesne yönelimli programlama ile birlikte ortaya çıkmış olmasına rağmen yordamsal programlanan sistemlerde de işe yaramaktadır.

<span class="mw-page-title-main">Assembly</span> uygulanan işlemlerle programlama dilinin birbirine çok yakın olduğu düşük seviye programlama dilleri

Assembly dili, bir işlemcinin komut kümesi üzerine tanımlanmış alt seviye bir dildir. Assembly dili kolay hatırlanabilir semboller tanımlar ve böylece işlemcinin makina koduna karşılık gelen sayı dizilerinin bilinmesine gerek kalmaz. Assembly dili, platformdan bağımsız yüksek seviyeli programlama dillerinin aksine, işlemci mimarisine bağımlıdır. Tipik uygulamaları; cihaz sürücüleri, alt seviyeli dahili (embedded) ve gerçek zamanlı sistemlerdir. Bır assembly programı assembler kullanılarak makine koduna çevrilir.

<span class="mw-page-title-main">Bilgisayar mimarisi</span>

Bilgisayar mimarisi, en küçüğe ve en başarılıya ulaşmayı hedeflerken aynı zamanda maliyeti de göz önünde bulundurduğu için sanat ve bilimin ortak buluştuğu nokta olarak da tanımlanır. Bilgisayar Mimarisi, bilgisayar parçalarının iç yapıları ve aralarındaki haberleşme bağlantıları ile ilgilidir.

<span class="mw-page-title-main">Çekirdek (bilgisayar bilimi)</span>

İşletim sistemi çekirdeği, kısaca çekirdek (kernel), işletim sistemindeki her şeyin üzerinde denetimi olan merkezi bileşenidir. Uygulamalar ve donanım seviyesindeki bilgi işlemleri arasında bir köprü görevi görür. Çekirdeğin görevleri sistemin kaynaklarını yönetmeyi de kapsamaktadır. Genellikle çekirdek, işletim sisteminin temel bir elemanı olarak, yazılımın fonksiyonunu yerine getirebilmesi için kontrol etmesi gereken kaynaklar için düşük seviye soyutlama katmanı sağlayabilir. İşletim sistemi görevleri, tasarımları ve uygulanmalarına göre farklı çekirdekler tarafından farklı şekillerde yapılır. Sistem açılırken belleğe yüklenir ve sistem kapatılıncaya kadar ana bellekte kalır.

Bölüm, Karadeniz Teknik Üniversitesi Kanuni Kampüsü içinde yer alan kendi bölüm binasındaki derslik ve laboratuvarları ile her yıl 600 civarında lisans öğrencisine hizmet vermektedir. Her yıl 85-100 arasında öğrenci alınan bölümde 6 profesör, 6 doçent, 12 yardımcı doçent, 1 öğretim görevlisi ve bir uzman bulunmaktadır. Ayrıca 20 araştırma görevlisi de eğitim-öğretimin değişik kademelerinde yardımcı elemanlar olarak hizmet vermektedir.

Bilgisayar bilimci, bilgisayar bilimi, bilgi ve hesaplamanın teorik temellerinin incelenmesi ve bunların uygulamaları hakkında uzmanlaşmış bir kişidir.

Güvenilirlik mühendisliği, güvenilirlik öğrenimi, gelişimi ve Ömür Devri Yönetimi ile ilgilenen bir mühendislik dalıdır. Güvenilirlik, bir sistem veya parçanın, belirlenen süre ve şartlar altında, istenen fonksiyonları gerçekleştirebilme yeteneği olarak tanımlanır. Kavram çoğu zaman, sistemin hata verme olasılığı şeklinde algılanır. Güvenilirlik, ayrıca belirli bir zaman aralığında işlevsellik yeteneğini tanımlama için de kullanılabilir. Güvenilirlik mühendisliği Sistem Mühendisliği alt-disiplini olarak kabul edilir ve Entegre Lojistik Destek disiplinine sürekli girdi teşkil eder. Güvenilirlik mühendisliği, hatalar arasındaki ortalama sürenin hesaplanması ile sistem güvenilirliğini ve sürekliliğini sağlar.

<span class="mw-page-title-main">Yazılım testi</span>

Yazılım testi, test altında hizmetlerin veya ürünlerin kalitesi hakkında paydaşlara bilgi sağlamak için yürütülen bir araştırmadır. Yazılım testi aynı zamanda, yazılım uygulamalarının risklerini anlamak için yazılımı bağımsız ve nesnel olarak incelemektir. Test teknikleri yazılım böceklerini bulma niyetiyle uygulama veya bir programı çalıştırma süreçlerini kapsar.

<span class="mw-page-title-main">V-Model (Yazılım geliştirme)</span>

V-model şelale (waterfall) modelinin gelişmiş hali olarak düşünülebilecek bir yazılım geliştirme süreci sunar. Doğrusal bir yönde ilerlemek yerine, süreç adımları kodlama evresinden sonra yukarıya doğru eğim alır ve tipik V şeklini oluşturur. V-Model geliştirme yaşam çevriminin her bir evresi arasındaki ilişkileri gösterir. Yatay ve dikey açılar zaman veya projenin tamamlanabilirliğini ve soyut seviyeyi gösterir.

<span class="mw-page-title-main">İşlev modeli</span>

Sistem ve yazılım mühendisliğindeki işlev modeli modellenen sistem veya konu alanının işlevlerinin yapısal temsilidir.

Bir sistem mimarisi veya çoklu sistemlerin mimarisi; sistemin yapısını, davranışını ve biçimselliğini tanımlayan kavramsal modeldir. Bir mimari tanımı; sistemin yapıları ve davranışları hakkında mantıksallığı destekleyecek şekilde organize edilen ilişkiselliğin standart bir açıklaması veya temsilidir.

Eşzamanlılık denetimi, eşzamanlı işlemler için doğru sonuçların elde edilmesini sağlarken, bu sonuçları da olabildiğince çabuk almayı sağlayan uğraşı alanıdır.Bilgisayar bilimleri, bilgi teknolojileri ve özellikle bilgisayar programlama, işletim sistemleri, çoklu işlemciler ve veritabanı alanlarında önemlidir.