PTasarım Belgesi

 

KOD BANKASI

 

DİLEK BAŞARAN
Özgeçmis

 

Tasarım Belgesi

 

Yazılım Geliştirme Projesi

Bilgi Teknolojileri Sertifika Programı

IDEA: ODTÜ Sanal Kampüsü
  

 

29.05.2008



Öz

Tasarım belgesinin amacı, proje teklif raporunda anlatılan Kod Bankası Projesi'nin mimari, veri ve arayüz tasarımlarını sunmaktır. Bu belge hazırlanırken, Kod Bankası Projesi'nin Analiz Raporu'nda sunulmuş olan Genel Durum Mimari Şeması'na bağlı kalınmıştır. Ayrıca proje gelişmelerine uygun olarak Proje Takvimi tekrar gözden geçirilmiştir.

Kapsam

Kod Bankası Projesi kapsamında, geliştirilecek yazılımın hedefleri, başlıca müşteri isterleri ve tasarım sınırlamaları aşağıda ilgili başlıklar altında verilmiştir:

Yazılım Hedefleri

Kod Bankası Projesi’nin en önde gelen hedefi, kod aramalarında en çok ziyaret edilen; kodlara hızlı erişim sağlayan ve güvenilir içeriği ile yazılım sektöründeki kullanıcıların vazgeçemeyeceği bir web kaynak sayfası oluşturmaktır. Bu hedefin sağlanabilmesi için Kod Bankası web sitesinin, kullanıcı tarafından kolay anlaşılabilir ve kullanılabilir şekilde tasarlanması gerekmektedir. Kullanıcı ve kod veri tabanlarının sağlam bir zemine oturtulması ve bir o kadar da esnek bir yapıya sahip olması amaçlanmaktadır. Ayrıca, müşteri istek ve gereksinimlerini (bknz. aşağıda belirtilen ilgili başlıklar) en iyi şekilde, eksiksiz karşılamak Kod Bankası Projesi’nin başlıca hedefidir.

Müşteri İsterleri (Gereksinimleri)

Arayüz Gereksinimi

Kullanıcı dostu bir arayüz sağlamak için kullanıcılar ilgili kısımlara kolay ve çabuk ulaşabilmeli, işlemler kolay anlaşılır ve kullanılabilir bir içerikte olmalıdır.

Veri Tabanı Gereksinimi

Müşterinin Veri Tabanı Yönetimi Açısından Gereksinimleri:
Veri Tabanına kod giren ve üye olan kullanıcılara ait bilgilere hızlı erişim, güvenilir ve sağlam bir veri tabanı ile Kod Bankası Projesi'nin oluşturulması.

Müşterinin Kullanıcılar Açısından Gereksinimleri:
Kod aramalarında olabildiğince kolay ve kısa anahtar kelimeler ile ve gerekiyor ise geliştirilmiş veri tabanı arama seçenekleri ile tarama yapabilme özelliği;
İstenmesi durumunda veri tabanı aramalarına yönelik yardım menüsü
(Veri tabanında herhangi bir anahtar kelime ile kullanıcıya örnek arama gösterimi!)

İşlevsel Gereksinimler

Müşteri,
  • Kullanıcı adı, isim ve soyad, e-mail adresi ve şifre ile kullanıcıların oturuma girmesini ister,
  • Kullanıcıların, farklı programlama dillerinde kod yükleyebilmesini ister;
  • Kullanıcıların yükledikleri kodları çalıştırabilmelerini (ing. Compile) ister;
  • Kullanıcıların veri tabanında kolay ve hızlı bir şekilde tarama yapabilmelerini ister;
  • Kullanıcıların diledikleri kodları indirebilmelerini ister;
  • Kullanıcıların, Kod Bankası ve içeriği ile ilgili her türlü görüşünü bildirebileceği forum özelliğinin program tarafından desteklemesini ister.

    Diğer Gereksinimler

    Kod Bankası Program Büyüklüğü ve Taşınabilirlik:
    Kod Bankası Programının olabildiğince az yer kaplaması ve farklı işletim sistemleri tarafından (Windows, Linux, Unix) çalıştırılabilmesi istenmektedir.

    Not: Müşteri istekleri asla bitmez, ancak ve ancak zaman kavramı ile önüne geçilebilir!... :)

    Tasarım Sınırlamaları

    Kod Bankası Projesi, WAMP Server üzerinde geliştirilmiştir. WAMP Server’ın ücretsiz ve açık kaynak kodlu olması; farklı işletim sistemleri ile uyumluluğu; bunun yanı sıra, MySQL ile ortaya koyduğu yüksek performans ve PHP (Hypertext Preprocessor) dilini desteklemesi tercih edilmesindeki başlıca nedenlerdir. PHP, sunucu tarafında çalışan (ing. server side) ve HTML içine yerleştirme prensibine dayanan bir betik (ing. script) dilidir.

    Ancak, PHP ile görsel tasarım sadece kodlama ile mümkün olabilmektedir. Bu nedenle, gerçekleştirim (kodlama) aşamasına gelinmeden görsel taslak bir tasarım mümkün olamamıştır.Bu dilin özellikleri ve WAMP Server kullanımının getirdiği kısıtlamalar (varsa!), bir tasarım kısıtı olarak kabul edilebilir.

  • Mimari Tasarım

    Kod Bankası'nın yazılım modülleri arasındaki hiyerarşik ilişki ve bu modüller arasındaki etkileşim şekli, projenin mimari tasarımını oluşturacaktır.

    Projede, nesne yönelimli bir yaklaşım benimsendiği için UML'in İşbirliği (ing. Collaboration) Diagramı, sınıflar ve aralarındaki mesaj yapılarını tespit etmek amacı ile kullanılmıştır.

    Proje Analiz Raporu'nda verilmiş olan Kullanım Örnekleri Diyagramı'ndaki kullanım örneklerini kapsayacak biçimde, Kod Bankası işbirliği diyagramı aşağıda belirtildiği şekilde çizilmiştir:

    KOD BANKASI İŞBİRLİĞİ DİYAGRAMI (ing. COLLABORATION DIAGRAM)

    İşbirliği Diyagramı


    Veri Tasarımı

    Kod Bankası Projesi'nde nesne yönelimli bir strateji kullanılması nedeni ile veri tasarımı gerçekleştirim evresinde değişkenler, veri nesneleri, veri yapıları, dosya ve veri tabanı yapıları bu kısımda kesin bir biçimde tanımlanmıştır. Bu stratejiye göre, ayrıca sınıf ve nesne tasarımları yapılmıştır. Bu amaçla UML'in İlişki Diyagramı (ing. Class Diagram) aşağıda belirtildiği şekilde kullanılmıştır.

    KOD BANKASI İLİŞKİ DİYAGRAMI (ing. CLASS or RELATION DIAGRAM)

    İlişki Diyagramı


    Veri tasarımında nesne yönelimli strateji benimsenmiş ve Linux uyumlu olması nedeni ile MySQL Veri Tabanı Sunucusu kullanılması uygun bulunmuştur. Veri tabanı tasarımındaki ilk adım, Nesne-İlişki Diyagramlarının (ing. Entity-Relation Diagrams) oluşturulması ile başlamaktadır. Bu nedenle, Kod Bankası Nesne-İlişki Diyagramı aşağıdaki şekilde verilmiştir:

    KOD BANKASI NESNE-İLİŞKİ DİYAGRAMI (ing. ENTITY-RELATION ER DIAGRAM)
    (Detaylı incelemek için resmin üzerine 2 defa tıklayınız!)

    Nesne-İlişki


    KOD BANKASI VERİ SÖZLÜĞÜ
    (Detaylı incelemek için resmin üzerine 2 defa tıklayınız!)

    Veri Sözlüğü



    Veri tabanı yapısına yönelik ilişki diyagramı aşağıdaki şekilde belirtilmiştir:


    VERİ TABANI İLİŞKİ DİYAGRAMI

    İlişki Diyagramı


    Arayüz Tasarımı

    Kod Bankası'nın kullanıcı arayüzüne eklenmesi planlanan programlama dilleri aşağıda belirtilmiştir.


    Kullanıcı Arayüzü Programlama Dilleri

    Programlama Dilleri


    Bu diller, kullanıcı arayüzünden bir pull-down menu ile seçilecektir. İlk aşamada bütün diller aktif olamayacaktır, sadece C ve C++ üzerinden proje programı tamamlanacaktır. Fakat projenin ileriki aşamalarında (IDE-A Programı dışında), diğer dillerin de aşama aşama sisteme entegre edilmesi düşünülmektedir.

    Arayüz tasarımında kullanılacak nesne ve modüller şunlardır:

  • Kullanıcı girişi arayüzü -- "index.php"
    o Değişkenler
     $heading: object (başlık nesnesi)
     $navigation: object (menü nesnesi)
     username
     fullname
     email
     password
     submit

  • Kullanıcı girişi işleme ve oturum belirleme (eski & yeni kullanıcı oturumları) modülü -- "process_index.php"
    o Değişkenler
     $db: object (veritabanı nesnesi)
     $heading: object (başlık nesnesi)
     $navigation: object (menü nesnesi)
     SüperGloballer
     $_POST [username]
     $_POST [fullname]
     $_SESSION [password]
     $_SESSION [level (eski-yeni)]

  • Kullanıcı kayıt arayüzü -- "user.php"
    o Değişkenler
     $heading: object (başlık nesnesi)
     $navigation: object (menü nesnesi)
     user_id
     username
     fullname
     email
     password
     submit

  • "Kullanıcı kayıt arayüzü" modülü-- "user_register.php"
    o Değişkenler
     $heading: object (başlık nesnesi)
     $navigation: object (menü nesnesi)
     user_id
     username
     fullname
     email
     password
     submit

  • "Kullanıcı kayıt arayüzü" işleme modülü -- "process_register.php"
    o Değişkenler
     $db: object (veritabanı nesnesi)
     $heading: object (başlık nesnesi)
     $navigation: object (menü nesnesi)
     SüperGloballer
     $_SESSION [user]
     $_SESSION [level]
     $POST [kullanıcı bilgilerine ilişkin değişkenler kodlama esnasında belirlenecektir]

  • "Kod" modülü-- "kod_register.php"
    o Değişkenler
     $heading: object (başlık nesnesi)
     $navigation: object (menü nesnesi)
     code_id
     language
     code_category
     add_date
     score
     search_word

  • "Kod" işleme modülü -- "process_kod_register.php"
    o Değişkenler
     $db: object (veritabanı nesnesi)
     $heading: object (başlık nesnesi)
     $navigation: object (menü nesnesi)
     SüperGloballer
     $_SESSION [kod]
     $_SESSION [category]
     $POST [kod bilgilerine ilişkin değişkenler kodlama esnasında belirlenecektir]

  • Veritabanı nesnesi " Code_DB.php; User_DB.php ve DB_Manage.php,"
    o Değişkenler:
     $host: stirng (MySQL sunucu adı)
     $user: string (MySQL kullanıcı adı)
     $password: string (kullanıcı şifresi)
     $connection no: int (bağlantı numarası)
     $database: string (veritabanı adı)
     $query: string (sorgu dizgisi)
     $query no: int (sorgu no-- birden fazla sorguyu ayırabilmek için gerekli)

    o Fonksiyonlar
     function database(): constructor
     function SelectHost($v_host), veritabanı seçilmesi
     fuction SelectUser($username, $password), kullanıcı seçilmesi
     function SelectDatabase ($database), veritabanı seçilmesi
     function Connect(), veritabanına bağlantı kurulması
     fuction Close(), bağlantının kesilmesi
     function Query ($query), SQL sorgusu
     function TotalRows(), toplam sıra sayısının alınması
     function Get_Res(), sorgu sonuçlarının object formunda sıralar halinde alınması
     function rec_no(), INSERT ile yapılan kayıt numarasının alınması
     function stop($error_message), hata durumunda işlemin durdurulması

  • "Forum" modülü-- "forum.php"
    o Değişkenler
     $heading: object (başlık nesnesi)
     $navigation: object (menü nesnesi)
     comments
     forum_category
     forum_date
     code_id
     user_id

  • "Forum" işleme modülü -- "forum_process.php"
    o Değişkenler
     $db: object (veritabanı nesnesi)
     $heading: object (başlık nesnesi)
     $navigation: object (menü nesnesi)
     SüperGloballer
     $_SESSION [forum]
     $_SESSION [category]
     $POST [forum bilgilerine ilişkin değişkenler kodlama esnasında belirlenecektir]

  • "Sunucu" modülü-- "sunucu.php","compile.php"
    o Değişkenler
     $heading: object (başlık nesnesi)
     $navigation: object (menü nesnesi)
     compile
     code_category

  • "Sunucu" işleme modülü -- "sunucu_process.php"
    o Değişkenler
     $db: object (veritabanı nesnesi)
     $heading: object (başlık nesnesi)
     $navigation: object (menü nesnesi)
     SüperGloballer
     $_SESSION [derleme]
     $_SESSION [code_category]
     $POST [sunucu ve derleme bilgilerine ilişkin değişkenler kodlama esnasında belirlenecektir]

    Proje Planı ve Uygulama Takvimi

    Kod Bankası Projesi'nin planlarını içeren uygulama takvimi aşağıda detaylı olarak verilmiştir:

    Gerçekleştirim (26 Mayıs 2008 - 18 Haziran 2008)
    • Kod Bankası kullanıcı arayüzü programlaması,
    • Kullanıcı arayüzü ve derleyici entegrasyon programlaması,
    • MySQL ile kullanıcı veri tabanı programlaması,
    • MySQL ile kod veritabanı programlaması,
    • Kullanıcı arayüzü ve veri tabanı iletişim ve etkileşim programlaması,
    • Kullanıcı arayüzü ve sunucu iletişim ve etkileşim programlaması,
    • Sunucu ve veri tabanı iletişim ve etkileşim programlaması.

    Test (18 Haziran 2008 - 27 Haziran 2008)
    Testlerin Belirlenmesi ve Gerçekleştirilmesi
    • Kullanıcı Arayüz Testleri,
    • Kullanıcı Veri Tabanı Testleri,
    • Kod Veri Tabanı Testleri,
    • Kullanıcı Arayüzü ve Veri Tabanı İletişim ve Etkileşim Testleri,
    • Kullanıcı Arayüzü ve Sunucu İletişim ve Etkileşim Testleri,
    • Sunucu ve Veri Tabanı İletişim ve Etkileşim Testleri,
    • Kod Bankası Genel Sistem Testleri.

    Sunum (5-6 Temmuz 2008)
    • Proje Sunumunun Hazırlanması,
    • Proje Sunumu.

    Proje Planı ve Uygulama Takvimi
    (Detaylı incelemek için resmin üzerine tıklayınız!)

    Plan


    Kaynakça


    IDEA YGP Sayfaları
    ODTÜ IDE_A