SATRANÇ SİTESİ 

 Ebru YAZICI

Tasarım Belgesi

Yazılım Geliştirme Projesi

Bilgi Teknolojileri Sertifika Programı

İDEA: ODTÜ Sanal Kampüsü
  

14 Haziran 1999


 

 

 

 


Öz :

Bu belge, satranç kurallarını öğretme, geçmiş satranç maçlarını izleme, satranç bulmacası, anket, e-ticaret gibi bölümleri kapsayacak bir Satranç Sitesi oluşturma projesinin gerçekleştirilmesi için hazırlanan tasarım raporuna aittir.

Proje tasarımı, yapısal bir yaklaşım kullanılarak, üst bir sistemden başlanıp alt ve ayrıntılı parçalara doğru sistemin parçalanması yöntemiyle oluşturulmuştur.

Kapsam :

Satranç sitesinin hedefleri:

-Satranç öğrenme sayfasında, temel satranç kuralları bir satranç tahtası şeması üzerinde gösterilecektir.

-Maç sorgulama sayfasında, geçmiş oyunlar sorgulanacak, veritabanından çağrılan oyunlar izlenebilecektir.

-Bulmaca sayfasında haftalık satranç bulmacası olacak ve bulmaca için verilen yanıtlar değerlendirilip doğru yanıtlardan bir dosya oluşturulacaktır.

-Satranç pazarı sayfasında, satranç sporu ile ilgili satranç saati, takımı vb. malzeme tanıtılacak, buradan e-posta aracılığıyla sipariş edilebilecektir.

-Anket sayfasında satrançseverlerin siteyle ve satrançla ilgili görüşleri alınacak, görüşler derlenecek ve istatistik sonucu ziyaretçiye gösterilecektir.

Müşteri gereksinimleri: Satrançseverler olarak tanımlayabileceğimiz müşteriler sitede içerik olarak ilginç satranç maçlarını, sürekli başvurabilecekleri satranç kurallarını bulmak istemektedirler. Yapısal olarak ise aradıklarını kolay bulabilecekleri, görsel olarak tatmin edici bir siteye gereksinim duymaktadırlar.

Tasarım Sınırlamaları: Sitenin proje süresince geliştirilecek bölümünde, zaman ve parasal sınırlamalar nedeniyle e-ticarette güvenlik konusuna girilmemiştir. Bir veritabanı programı üzerinde çalıştırılması düşünülen site uygulamaları veritabanı programı bulunamaması nedeniyle metin dosyaları üzerinde çalışacaktır. Bu nedenle program kodlamalarında SQL kullanılamamıştır ve veri miktarı sınırlı tutulmuştur.

Mimari Tasarım

Aşağıda sistemin modülleri gösterilmektedir.modülleri birbirinden bağımsız çalışmaktadır.

 

Veri Tasarımı

Analiz evresindeki tanımlamalardan sistemi oluşturan nesneler belirlenir: Satranç Sitesi, Satranç Bulmacası,Site Ziyaretçisi, Maç Verisi Dosyası, Maç Kayıt Dosyası,Sipariş Bilgisi, Anket Bilgisi, CGI uygulaması, Java uygulaması

Bu nesnelerin birbirleriyle ilişkileri ER (Entity-Relationship) şemasında verilmiştir: ER şeması

Veri nesne tarifleri:

Anket verisi: Ziyaretçi tarafından HTML dosyasına girilen anket sorularına verilen metin biçiminde yanıtlar.

Anket Dosyası: Tüm ziyaretçilerin anket yanıtlarının toplandığı metin dosyası. Bu dosya bir düz-dosya veritabanıdır. (flat-file database)

Sipariş verisi: Ziyaretçi tarafından HTML dosyasına girilen sipariş edilen ürünün kodu ve ödeme bilgilerinden oluşan metin biçimindeki veri.

Maç sorgulama verisi: Ziyaretçi tarafından girilen turnuva adı, oyuncu adı, açılış gibi sorgulama ölçütlerinden oluşan metin biçiminde sorgulama verisi.

Maç Verisi Dosyası: Maç dosyalarına ait Turnuva Adı, Tarih, Maç Sonucu, Dosya Adı, Birinci oyuncu, İkinci Oyuncu, Açılış bilgilerini içeren bir başlık ve satranç notasyonuna göre yazılmış maç bilgisini içerir.Bu dosya satranç maçları için veritabanı uygulamaları konusunda standart olan PGN dosyası biçimindedir.

Maç Kayıt Dosyası:  Maç dosyalarına ait Turnuva Adı, Tarih, Maç Sonucu, Dosya Adı, Birinci oyuncu, İkinci Oyuncu, Açılış bilgilerinden oluşan kayıtları tutan metin biçiminde düz-dosya veritabanı.

Bulmaca verisi: Bulmaca yanıtı olarak satranç notasyonuna uygun olarak gönderilen metin biçimindeki bilgi.

CGI dosyaları: Web sayfalarının çalıştırdığı Perl dilinde yazılmış dosyalar: Macsorgu.cgi, Anket.cgi, Bulmaca.cgi, Siparis.cgi

Java Applet dosyası: PGN dosyasını açıp içindeki satranç hamlelerini taşları tek tek hareket ettirerek gösteren applet. Internette bulunan Chess Tutor adında hazır bir araçtır.

 

Siteye gönderilen bilgi Web sayfasındaki formlar aracılığıyla alınacak, ilgili CGI programı çalıştırılacaktır.

CGI için PERL ile program yazılacaktır. Perl dilindeki üç veri yapısı kullanılacaktır:

Scalar : Tek değer tutan değişken

Array: Değerler listesi içeren değişken

Hash: Değer çiftlerinden oluşan listeyi içeren değişken.

Dosya okuma ve dosyaya yazma için Perl'deki INF ve OUTF yapıları kullanılır.

Macsorgu.html'de bulunan form metin biçimindeki veriyi alır. Macsorgu.cgi programını çalıştırır. Maçsorgu.cgi programı girdiyi "scalar variable" içine atar ve Maç Kayıt Dosyası içindeki uygun alanla kıyaslayarak, bulunan kayıtları Web sayfasında gösterir. Maç Kayıt Dosyasındaki verinin okunması için bir "array" içine atılması gerekir.

Anket.html içindeki form metin biçimindeki veriyi alır. Anket.cgi programını çalıştırır. Anket.cgi programı girdiyi "scalar variable" olarak alır. Her ziyaretçinin girdisini dosyaya ayrı bir satır ve form alanlarına göre ayrılmış olarak yazar. Aynı dosyayı okuma amaçlı olarak açar. Dosyadaki bilgileri "hash" değişkeni kullanarak sayar ve gruplandırır.Sonucu bir Web sayfası ile gösterir.

Bulmaca.html içindeki form metin biçimindeki veriyi alır. Bulmaca.cgi programı çalıştırılır. Bulmaca.cgi girdiyi "scalar" değişken içine atar. Bu değişkendeki bilgiyi yanıtla kıyaslar. Bilgi doğruysa metin biçimindeki Yanıt dosyasına ziyaretçinin e-posta adresini metin olarak bir satıra yazar.

Pazar.html içindeki form veriyi metin biçiminde alır. Sipariş.cgi programı çalıştırılır. Sipariş.cgi programı girdiyi "scalar" değişkenler içine atar. Form alanları ve yanıt bilgisini içeren bir "hash" oluşturur. E-posta göndermek için sistemdeki sendmail programı ve Perl'deki MAIL yapısı kullanılır. Hash'ten diziler içine okunan bilgi oluşturulan e-posta içine yazdırılır.

 

Arayüz Tasarımı

Analiz raporunda da yer alan ve sistemde verinin süreçler arasında akışını ve değişimini gösteren ikinci seviye Veri Akış Şemaları:

Maç görüntüleme modülü için:

DFD 21

 

Anket değerlendirme modülü için:

DFD 22

 

Bulmaca yanıtı değerlendirme modülü için:

DFD 23

Sipariş değerlendirme modülü için:

DFD 24

 

 

Sistemdeki kontrol bilgisinin gösterilmesi için Kontrol Akış Şemaları aşağıda yer almaktadır. Sadece DFD21 ve DFD23te koşula bağlı süreçler vardır::

CFD21

 

CFD23

 

Proje konusu bir Web sitesi olduğundan kullanıcı arayüzü tanımlaması Web sayfalarının tasarımını içerecektir:

Anasayfa.html :Site adını anasayfadan ulaşılabilecek sayfalara (anket.html, macsorgu.html,bulmaca.html,pazar.html,satranc_ogren.html) bağlantıları içerir.

Anket.html: Anasayfadaki bağlantısına tıklandığında açılır. Ziyaretçiye siteye nasıl ulaştığı, siteye vereceği değerlendirme puanı, satrançla kaç yıldır uğraştığı, günde kaç saatini satranca ayırdığı gibi sorular sorulur.Anket sorularına yanıtlar, kontrol kutuları, çoktan seçmeli maddeler, metin kutuları aracılığıyla verilir. Gönder düğmesi ile İstatistik.html açılır, Sil düğmesi bilgileri siler, Anasayfa bağlantısı anasayfaya döndürür.

İstatistik.html: Anket soruları ve verilen yanıtların ortalamalarını ve dağılımını metin olarak gösterir. Anasayfa bağlantısı ana sayfaya döndürür.

Macsorgu.html: Anasayfadaki bağlantısına tıklandığında açılır. Maç sorgulaması, Turnuva Adı ve Oyuncu Adı'na göre yapılır. Turnuva Adı sayfada yer alan listeden seçilir. Oyuncu adı ise metin kutusuna yazılır. Ada Göre Arama ve Turnuvaya Göre Arama etiketli iki düğme bulunur. Bu düğmelere tıklandığında arama sonuçlarını içeren AramaSonuc.html sayfası gelir.Sil düğmesi bilgileri siler. Anasayfa bağlantısı ana sayfaya döndürür.

AramaSonuc.html: Arama sonuçları numaralandırılmış olarak gelir.Sonuçlar, Turnuva adı, Oyuncu Adı, Tarih,Açılış bilgisini içerir ve üzerine tıklandığında ilgili maçı gösteren MacGoster.html sayfası açılır.Anasayfa bağlantısı ana sayfaya döndürür.

MacGoster.html: Chess Tutor appleti çalışır. Seçilen maç oynatılır. Anasayfa bağlantısı anasayfaya döndürür.

Bulmaca.html: Anasayfadaki bağlantısına tıklandığında açılır.Bulmaca sorusu metin şeklinde yazılmıştır.Altında Yanıt yazmak için metin kutusu yer alır. Metin kutusuna satranç notasyonuna uygun yanıt yazılması için ziyaretçiye örnek girdi gösterilir. Gönder düğmesi ile yanıt postalanırve Sil düğmesi girdiyi siler.Anasayfa bağlantısı ana sayfaya döndürür.

Prosedürel Tasarım

 

MacSorgu.cgi için

Sonuc[N] yarat
i=0
Girdi=Form_Girdi_Al
IF (Girdi_Alanı= =Turnuva_Adı) {
WHILE NOT EOF {
WHILE (MacKayıtDosyasi (Turnuva_Adı)<>Girdi)
MacKayıtDosyasi_ Ara(Girdi) / / İlk alanda girdi ara, gostergeci sonraki alana gecir
IF (MacKayıtDosyasi (Turnuva_Adı)= =Girdi)
{ SONUC[i]=MacKayıtDosyasi(No)
i=i+1
FOUND=TRUE}
}
}
ELSE {
WHILE NOT EOF {
WHILE (MacKayitDosyasi (Oyuncu_Adı)<>Girdi)
MacKayitDosyasi_ Ara(Girdi) / / İlk alanda girdi ara, gostergeci sonraki alana gecir
IF (MacKayitDosyasi (Oyuncu_Adı)= =Girdi)
{ SONUC[i]=MacKayitDosyasi(No)
i=i+1
FOUND=TRUE}
}
}
IF (FOUND = = TRUE)
FOR k=0 to i
Listele (MacKayitDosyasi(SONUC[k])
ELSE
Ekrana_Yaz( Uygun Kayıt Bulunamadı)

 

Bulmaca.cgi

Girdi1 = Form_Girdi_Al(yanit)
Girdi2= Form_Girdi_Al(eposta)
If (Girdi(yanit) = = Yanit)
BulmacaDosyasi_Yaz(eposta)

 

Anket.cgi

Girdi =Form_Girdi_Al(anket yanıtı)
AnketDosyasına_Yaz(Girdi)
//İstatistik için
veri=AnketDosyası_Oku
(siteulaşım,sitepuan,satrançyıl,satrançsaat)=veri_alanlara_ayır
sayac_anketsayısı=0
sayac_sitepuan=0
sayac_satrançyıl=0
sayac_satrançsaat=0
foreach veri_satırı
{ sayac_anketsayısı=sayac_anketsayısı+1;
  sayac_siteulaşım=sayac_siteulaşım +siteulaşım
  sayac_sitepuan=sayac_sitepuan +sitepuan
  sayac_satrançyıl=sayac_satrançyıl +satrançyıl
  sayac_satrançsaat=sayac_satrançsaat +satrançsaat
}
ortalama_siteulaşım=sayac_siteulaşım/sayac_anketsayısı
ortalama_sitepuan=sayac_sitepuan/sayac_anketsayısı
ortalama_satrançyıl=sayac_satrançyıl/sayac_anketsayısı
ortalama_satrançsaat=sayac_satrançsaat/sayaç_anketsayısı
Ekrana_yaz(Ortalama_siteulaşım)
Ekrana_yaz(Ortalama_sitepuan)
Ekrana_yaz(Ortalama_satrançyıl)
Ekrana_yaz(Ortalama_satrançsaat)
 

Siparis.cgi

Girdi =Form_girdi_Al(sipariş bilgisi)
(Siparis_kodu,eposta)=Girdi_alanlara_ayır
MAIL programını aç
MAIL'e yazdır (Gidecegi_adres=eposta)
MAIL'e yazdır (iletinin içeriği)
MAIL programını kapat
Ekrana_yaz (Sipariş bilgisi e-posta ile teyit edilecektir)
 

Proje Planı ve Uygulama Takvimi

Gerçekleştirim (14 Haziran- 5 Temmuz)

Görev 1 : Site sayfalarının HTML kodunda hazırlanması.Gerekli Java appletlerinin eklenmesi (14 Haziran-2 Temmuz)

Görev 2: Veritabanı sorgulama, bilgi girişi vb. için CGI programlarının ve veri dosyalarının oluşturulması. (14 Haziran-2 Temmuz)

Görev 3: Tasarımdan sapmalar ve karşılaşılan sorunların yer aldığı gerçekleştirim raporunun hazırlanması (2 Temmuz-5 Temmuz)

Test Süreci (05-16 Temmuz)

Görev 4: Test planı hazırlanması, plana göre beklenen işlevlerin denenmesi, hataların giderilmesi. (05 Temmuz- 12 Temmuz)

Görev 5: Test planını da içeren, test sonuç belgesinin hazırlanması (12 Temmuz-16 Temmuz)

Sunum (16 Temmuz)

 

Gannt Şeması

Görev/Hafta 1.hafta 2.hafta 3.hafta 4.hafta 5.hafta
Görev1 -------- -------- ----- . .
Görev2 -------- -------- ----- . .
Görev3 . .

--

. .
Gerçekleştirim

Belgesi

Teslimi

. . . X 5Temmuz .
Görev4 . . . -------- .
Görev5 . . . . --------
Test Sonuç

Belgesi

Teslimi

. . . .

 16Temmuz X

 

 

Kaynakça:

HTML,Perl,CGI ve appletler konusundaki siteler:

http://www.cgi101.com/

http://www.cgiresources.com/

http://www.xs4all.nl/~verhelst/chess/sources.html

http://www.chessclub.com/chessviewer/about.html

 

Satrançla ilgili  siteler:

http://www.chessclub.com/

http://www.chess.com/

http://www.uschess.org/

http://www.chess.net/

 

Kitaplar:

Software Engineering, Ian Somerville

CGI Developer's Guide, Eugene Eric Kim

Sam's Teach Yourself CGI Programming with Perl 5 in a week,  Eric Herrman

SE Using HTML 4