|
SANAL ARABA PAZARI
M. Attila ALKOÇ
S02012
Tasarım Raporu
Yazılım
Geliştirme Projesi
Bilgi Teknolojileri Sertifika
Programı
İDEA: ODTÜ Sanal Kampüsü
8 Mayıs 2000
Öz
Bu rapor Yazılım Geliştirme Projesi(YGP) dersi için geliştirilmekte olan internete dayalı bir
veritabanı uygulaması olan Sanal Araba Pazarı projesinin tasarım safhasını
belgelemek amacıyla düzenlenmektedir.
Daha önce hazırlanan Teklif ve Analiz belgeleri başlangıç noktası olarak alınmıştır.
Çeşitli seviyelerde detaylandırma ile bu belgeye ulaşılmış olup, daha önce analiz belgesinde
sorulan NE yapılacak sorusuna cevap teşkil eden isteklerin NASIL gerçekleştirileceği esas odak noktası
olarak kabul edilmiştir.
Proje Tanımı
Yazılımın Hedefleri
Gelişen bilgi teknolojileri vasıtasıyla gazete ilanları, semtlerde kurulan araba pazarları
ve oto galerileri(komisyoncular) ile gerçekleştirilen ikinci el araba alış-veriş ortamın
tek bir sanal ortamda toplanması esas hedeftir. Bu ortamın güvenilir olması, yeterli sayıda
kayıta sahip olması, etkileşime açık olması ve kullanıcının aradığı fonksiyonelliği
bulması başlıca alt hedefler arasında sayılabilinir.
Müşteri İsterleri
- Araba bilgilerine istenildiği zaman istenilen yerden ulaşabilmeli,
- Elde edilen bilgiler güvenilir olmalı,
- Cevap süresi kısa olmalı,
- Verilecek ilanlar doğal formatında sergilenmeli,
- Girdilerin ve Çıktıların tekrarlanması önlenmeli,
- Tüm otomobil tiplerine hitap edebilmeli,
- Bilgilerin silinmesi, değişiklik yapılması ve güncellenmesi sağlanmalı,
- Çeşitli kriterlere göre sıralama yapılabilmeli,
- Bilgiler özet veya kapsamlı olarak verilebilmeli,
- Mümkün olduğu kadar ucuz ve ekonomik bir servis sağlamalı,
- Sisteme interneten erişilebilmeli,
- Sistemde yer alan bilgiler 3. şahıslara hiç bir amaçla verilmemeli ve
- Kullanıcılar karşılaştıkları sorunları sistem yöneticisine bildirebilmelidir.
Tasarım Sınırlamaları
Grafik tasarımcısına kullanılacak arayüzlerde ve resimlerde renk uyumu ve
formatı konusunda bilgi danışılması şu an mümkün değildir.
Sayfaların mümkün olduğu kadar sade ama fonksiyonel olmasına özen gösterilecektir.
Veritabanı büyüklüğü konusunda kesin bir karar verilmemiş olup şimdilik 1000 civarında
ilanı tahsis edebilecek bir yapı uygun görülmüştür. Veritabanında kullanılacak ilanlar
mümkün olduğunca gerçek değerlerde olması sağlanacaktır.E-ticaret ile ilgili güvenlik
konusu şu an konu dışında bırakılmıştır. Ticaret modülü daha sonra eklenebilecek sekilde
tasarlanacaktır.
Mimari Tasarım
Sanal Araba Pazarı (SAP) sistemi anlaşılabilirliği arttırmak vasıtasıyla bir çok modüle
ayrılmıştır. Bu işlem yapılırken modüllerin işlevsel olarak bağımsız olmasına,
modüller arasındaki bağlantılığın az olmasına ve modülün yalnızca bir ana işlevi
gerçekleştirmesine çalışılmıştır. Sistem en üst seviyede üç ana modüle bölünmüştür.
Bunlar araba ilanının sağlandığı modül(İlanVer), ilanın işlendiği modül(İlanİşle) ve
ilanın ulaştırıldığı(İlanUlaş) modülüdür. Şekil 1 de sistem ve modülleri gösterilmiştir.
İlanVer Modülü: Bu modül ilan envanterinin sağlanması için gerekli bilgilerin
toplanmasını sağlar. Satıcı rölündeki kişi sistemle bu modül vasıtasıyla iletişime geçer.
Esas görev satılacak araba ile ilgili detayların sağlanması olup satıcı ile alakalı
bilgilerin tedarikinde de işlev görmektedir. Bu modül 2 alt mödüle bölünmektedir.
Bunlardan birincisi satıcı ile irtibatın sağlanacağı ve üyelik fonksiyonlarının
yürütüleceği üyelik modülüdür.
- Üyelik Alt Modülü:
Esas fonksiyonu araba satan kişilerin bilgilerin sağlanması
amacıyla düşünülmüştür. Alan kişi yerine satan kişinin bilgileri daha çok önem kazanmaktadır.
Verilen ilanların tutarlılığı için kısmi bir kontrol mekanizması olarakta kullanılabilecektir
Üye kabul ve üye ara ve bul alt modüllerinden oluşmaktadır.
- İlan Giriş Alt Modülü:
Sistemi ayakta tutacak olan ilan sayısının artırımında önemli rol üstlenmektedir.
Satılmak istenilen araç ile ilgili olarak satıcının doğru bilgileri
girmesini sağlayan, bazı kontrolleri yapan ve mümkün olduğunca kullanıcı ile etkileşimli
ve anlaşılabilir şekilde fonksiyonelliğini yerine getiren kritik bir modüldür.
Özetle ilan formunun kullanıcıya sunulması, bu forumdan bilgilerin alınması ve kayıtın
ilgili kısımlarının konu ile alakalı modüllere aktarılmasıdır.
İlan formu hazırla, ilan kontrolü ve ilan kabul alt modüllerinden oluşmaktadır.
İlanİşle Modülü: Çekirdek modüldür. Esas görevi ilan veritabının yönetimin sorumludur.
Silme, düzeltme, arama, sınıflandırma gibi görevleri vardır. Bir veritabanı sistemi
ile irtibata geçer yukardaki işlevlerin sağlanması için gerekli düzenlemeleri yapar.
İlanUlaş Modülü: İlanın alıcılar tarafından bulunmasını sağlar. Alıcının kafasında
kimi zaman kesin sınırları belli olmayan hayali bir araç ile ilgili bilgilerin elde edilmesi
esas fonksiyonudur. Alıcıyı yönlendirebilir. Etkileşimli olması sistemin başarısında
anahtardır. Alıcıdan elde edilen bilgiler ile mevcut veritabanından en yakın karşılık gelen
hatta mümkünse 1-1 çakışan ilanların getirilmesi için İlanİşle modülü ile temasa geçer sonuçları
düzgün bir şekilde sunar. Kriter girme ve sonuçları sunma alt modüllerinden oluşur.
Veri Tasarımı
Sistemin temeli internette veritabanı uygulamasıdır. Bu veritabanında yer alan nesneler ve
aralarında bulunan ilişkiler Nesne-İlişki(E-R) diyagramında ifade edilmiştir.
Nesne ilişki diyagramı(ER) aşağıda
şekil 2 te gösterilmiştir.
Veri Nesne Tarifleri ve Veri Sözlüğü
İsim |
Tür |
Veri yapısı |
Tanım |
Kişi |
Nesne |
tlf + email + adres + isim |
Kalıtım mevcut |
Alıcı |
Nesne |
. |
. |
Satıcı |
Nesne |
üye_no(key) + şifre |
. |
tlf |
özellik |
string |
telefon numarası |
email |
özellik |
string |
elektronik posta |
adres
|
özellik |
string |
. |
İsim |
özellik |
string |
. |
Satar |
ilişki 1:N |
. |
Satıcı Araba arasında. |
Alır |
İlişki 1:N |
. |
Alıcı Araba arasında |
Araba |
Nesne |
kayıt_no(key) + renk + marka + model + model yılı + fiyatı + km_de |
. |
kayıt_no |
özellik(key) |
integer |
. |
marka |
özellik |
string |
. |
model |
özellik |
string |
. |
fiyatı |
özellik |
real |
. |
km_de |
özellik |
real |
. |
İlan |
Nesne |
ilan_no(key) + tarih + slogan + veren |
. |
ilan_no |
özellik(key) |
integer |
. |
tarih |
özellik |
date |
. |
slogan |
özellik |
string |
. |
veren |
özellik |
string |
. |
Kişi: Alıcı veya Satıcı rolünde olabilir. Satıcı rolünde ise fazladan üyelik ile
ilgili bilgilerde eklenmektedir.
Satıcı: İlan veren kişidir. Alıcının irtibat kurması için Satıcı bilgileri gereklidir.
Satıcı bilgileri Alıcı bilgilerine göre daha önemlidir. Satıcı özel şahış olabileceği
gibi araba galerisinde çalışan bir kişide olabilir. Bu durumda galeri ile ilgili
detaylar önem kazanır. Üye veritabanının bir parçasıdır.
Alıcı: Genelde bu bilgilerin önceliği azdır. Uygulamanın doğasına göre kişi bu bilgileri
girmekte zorlanmayacaktır. Çoğu veri NULL değerde olabilir. İstatiksel amaçlı
düşünülmektedir.
Araba: En önemli nesnedir. İlanın esas bilgileri buradan alınır. İlanın sınıflandırılması
için tüm araba özellikleri kullanabilicektir. İlan veritabanının bir parçasıdır.
İlan: Araba bilgilerinden alınan anahtar bilgilere, ilan tarihi ve numarası gibi
bilgiler dahil edilir.İlan veritabanının bir parçasıdır.
Üye dosyası: Bu dosya bir veritabanı dosyası olarak tasarlanmıştır. SQL komutları
vasıtasıyla, ekleme, silme, arama, değişiklik işlemleri yapılacaktır. Zaman yetmezse
basit dosya yapısı kullanılabilecektir.
İlan dosyası: İlan sayısı üye sayısınına göre kat kat fazla olacağından ve kayıt sayısının
kimi zaman binlerle ifade edileceği düşünülürse hızlı sorgulama yapmaya imkan tanıyacak
bir yapı gerekmektedir.
Ayrıca CGI protokolü kullanacağından çeşitli cgi scriptlerinin olacağı dosyalar olacaktır.
Bu dosyalar ASCII karakterleri içeren Perl ve C dilinde yazılmış programlardır.
İlanAl, İlanDeğiştir, İlanGöster, ÜyeYap yazılacak CGI program
dosyaları arasında sayılabilinir.
Perl dilinin imkan tanıdğı çeşitli veri yapıları mevcuttur. Bunlar arasında basit değişkenlerin saklandığı
Scalar değişkenler. Buna örnek olarak, $Motor_Hacmi = 1600; veya $Üye_İsmi = "Raif Durak"
verilebilinir. İkinci önemli veri yapısı dizilerdir. Diziler aynı türden fakat bellekte ardışıl
bulunan veri yapılarıdırlar. Örnek olarak @araba_renkleri = {"kırmızı", "beyaz", "siyah", "yeşil"};
verilebilinir. Üçüncü önemli veri yapısı ise Hash'lerdir. Hash'ler dizilere benzerler fakat
eleman çiftlerinden oluşurlar. Örnek olarak,
%linkler = {"ford", "http://www.ford.com.tr",
"bmw", "http://www.bmw.com",
"nissan", "http://www.nissan.co.uk" };
verilebilinir.
SAP İnternet uygulaması olduğundan dolayı bir çok web sayfası kullanılacaktır. HTML dili ile
hazırlanacak olan site özellikle Arayüz tasarımı kısmında detaylı olarak verilmektedir.
Arayüz Tasarımı
Daha önce analiz belgesinde ifade edilen veri akış diyagramı yenilenmiş ve detaylandırılmıştır.
Seviye 1 Veri Akış Diyagramı:
Araba Sat Prosesi Seviye 2 VAD:
İlan İşleme Prosesi Seviye 2 VAD:
Araba Al Prosesi Seviye 2 VAD:
Bu uygulama internet uygulaması olduğundan HTML dili yoğun olarak kullanılmaktadır.
HTML sayfası bir internet tarayıcısı tarafından belli bir formata dönüştürülür.
Kullanıcıların çoğunun Windows gibi grafik kullanıcı arayüzleri (GUI) destekleyen
tarayıcılar kullandığından bu formatta sayfalar hazırlanılacaktır.
En çok kullanılacak olan ve bilgi girişinde sınıflandırmaya ve farklı tipte bilgilerin
kullanıcıdan alınmasına imkan tanıyan FORM takısıdır. Formlar çeşitli form elemanları ile inşa edilirler.
Bunlar arasında yazı kutuları, şifre kutuları,
birden fazla satıra imkan tanıyan yazı kutuları, birden fazla seçeneğin bir seferde
tek bir tanesinin seçilmesini sağlayan radyo tuşları, kontrol kutucukları, menüler,
ve çeşitli düğmeler(teslim ve temizleme) sayılabilinir. Genelde formlar bunların çeşitli
sayılarda ve kombinasyonları şeklinde olmaktadır.
Sayfalar tasarlanırken bazı kriterlere dikkat edilmiştir. Bunlardan bazıları;
önemli silme ve değişiklik işlemleride onay istemek, yapılan hataların geri alınabilmesi
(kısmi olarak), kullanılan resimlerde en-boy oranının korunması(aspect ratio), komutların
kısa ve basit olması(ara, temizle gibi), uygun renkler, olabilecek hatalara karşı yol gösterici mesajlar,
yazma yerine listeden seçmek (mesela ford yazmak yerine listeden fordun seçilmesi gibi), gruplandırmadır.
En büyük kolaylık fare - imleç te sağlanmıştır. Bu tür fonksiyonlar kütüphanelerde mevcuttur.
Tasarlanan web sayfalarının tanımları aşağıda verilmiştir.
index.html: Sitenin ana sayfasıdır. Kapsamlı olarak site hakkında bilgi içerir. Diğer önemli
kısımlara linkler ile bağlantılar kurulmuştır. Statik bir sayfadır.
ilangir.html: Araba ilanının girileceği ve form dan oluşan bir sayfadır. Veri kontrolü yapılacaktır.
Sayfanın biçimi bellidir. Dinamik olarak bilgiler elde edilebilecektir.
ilanbul.html: Arabaların aranacağı bir sayfadır. Çeşitli kriterlere göre arama yapılmasına
imkan tanıyacaktır. Bir formdan ve yönlendirmelerden oluşacaktır.
üyeyap.html: Satıcıların bilgilerinin sağlanması için kullanılır. Üyelik bilgileri kullanıcıya
email ile bildirilir.
onay.html: Verilen ilanın son halinin teyiti için kullanılır.
ilansonuç.html: İlan aranması sonuçlarının bildirildiği sayfadır. çeşitli kriterlere göre
sonuçları sergileyebilmelidir. İlgili CGI programı tarafından üretilir. Dinamik olarak üretilir.
Prosedürel Tasarım
Yapısal analiz ve tasarım yapıldığından dolayı programlamaya yapısal devam etmek uygun görülmüştür.
Yapısal programlamada üç temel yapı kullanılmaktadır. Bunlar, ardışıl(sequence),
şartlı(selection) ve tekrarlı(repetition) yapılardır. Herşey bunların birbirlerine içiçe
geçmeleri ve kombinasyonları ile ifade edilmektedir. Program akışında yönlendirme if, switch
vb. yapılarla sağlanacaktır goto'nun kullanıldığı ifadelerden kaçınılacaktır.
fonk UyeKontrol(void)
{
INT Uye Numarası
Uye Numarası iste
IF (Üye Numarası geçerli değil ise)
UyeYap()
ELSE
Aktif_Uye = Üye Numarası
}
STRUCT KISI {
char isim[15]
char soyad[20]
char Adres[50]
char Tlf[10]
char Faks[10]
char email[35]
}
fonk UyeYap(void)
{
STRUCT KİŞİ temp_kişi;
İsim, Soyad, Yaş iste
Adres, Telefon, Faks iste
Email iste
Yapıyı temp_kişi ye yaz
Degerleri kontrol et,
IF (DegerKontrol(temp_kisi))
Dosyaya yaz
ELSE
Hata Bildir()
}
INT fonk DegerKontrol(STRUCT kisiyapı)
{
IF (kisiyapi.isim özel karakter ileriyor)
return hata_mesaj1
ELSE IF(kişi.yapı.email @ ilermiyorsa)
return hata_mesaj2
ELSE IF(kisi.yapı.telefon alan kodu yok veya 7 haneden fazla)
return hata_mesaj3
}
STRUCT ilan {
int no
date tarih
char veren[15]
char model[20]
char marka[30]
int FLAG motor_tipi[1]
ENUM ozellikler
int km
}
INT fonk ilanal(void)
{
STRUCT İLAN temp_ilan
FORM OLUŞTUR
ALANLARI OKU
ALAN KONTROLU YAP
IF (ALANLAR GEÇERLİ)
ilan dosyasına yaz
ELSE
ILANFORMU HATA bildir
}
INT fonk ilanara(kriter)
{
STRUCT İLAN temp_ilan
Kriter sec
Aranacak Degeri al
Dosyadan blok olarak oku
FOR (!EOF) {
IF (temp_ilan.kriter == blok.kriter)
Kayıtı YAZ
ELSE
Kayıt bulunamadı YAZ
}
INT fonk satıcıbildir(ilan_no)
{
Dosya al
ilanara(ilan_no)
Dosyadan satıcı detaylarını al
mesajı al
email(satıcı, mesaj)
email(alıcı, teyit)
}
Yöntemler, Yazılım Araçları ve
Platform
Çağlayan Süreç Modeli ve yapısal yani işlevsel yaklaşım uygunlanılmaya devam edilmektedir.
Analiz ve Tasarım safhaları tamamlanmıştır. Gerçekleştirim ve kodlama safhasına geçilmiştir.
Gerçekleştirimde eğer ihtiyaç görülürse tasarım raporu için geri besleme yolları açık tutulacak gerekli görüldüğü takdirde tasarım
raporunda gerekli yenilikler eklenecek ve ikinci versiyonu hazırlanacaktır.
Gerçekleştirim safhası ile test ve hata giderme safhaları paralel olarak yapılacaktır.
Tasarım esnasında mevcut sistem test edilmiştir. Bu amaçla
CGI protokolünün çalışıp çalışmadığını anlamak için bazı küçük cgi programcıkları sistemde
denenmiş ve herhangi bir sorunla karşılaşılmamıştır. Bu amaçla öğrenilen bazı
konular arasında sunucuda cgi programcığı nereye konmalı, erişim hakları nasıl düzenlenmeli, nasıl çağrılmalı sayılabilinir.
İkinci yaptığım hazırlık ise kullanacağım porgramlama dili ilgili olaraktı.
Bunun için tercihim Perl, bu yüzden bazı kodları idea ya telnet ile bağlanıp derliyordum.
Ama bu çok zaman alıcı bir durum ve riskleri çok fazla. Hızlı, kolay ve alınan hata mesajlarının daha çabuk
anlaşılması için Win32 için shareware bir Perl derleyicisi www.perl.org ve www.perl.com
adreslerinden sağlanmıştır. Üçüncü adım kullanacak olan veritabanı programını tetkik edilmesidir.
Bunun gerçekleştirim aşamasında yapılması planlanmaktadır. Web sayfalarının tasarımları ile ilgili olan
HTML takıları(tag) ler öğrenilmiş ve çeşitli uygulamalar yapılmıştır. Perl dilinin semantik yapısı
incelenmiştir. Güvenlik açısından C programlama dili ile ufak rutinlerin yazılması olasıdır.
SQL için VTYS ders notlarından faydalanılacaktır.
Internet Veritabanı Sunucusu olarak IDEA'nın sağlayacağı imkanlar
gözönünde bulundurulmaktadır, dolayısıyla ile işletim sistemi olarak
UNIX seçilmiştir. Sistem temel olarak Web tarayıcısı ile internet veritabanı
sunucu arasında etkileşimi CGI vasıtasıyla sağlayacak ve
bir veritabanı programı olan MiniSQL kullanılacaktır. Web sayfasının inşasında HTML
ve JavaScript kullanılmaktadır.
Önemli Kilometre Taşları
4. KM Taşı: Gerçekleştirim, 5 Haziran 2000
Programın kodlanması esnasında karşılaşılan sorunlar ve uygulanan çözümler, varsa sapmalar, GUI ekran çıktıları, kullanıcı kılavuzu, programın kaynak kodlarından çeşitli kesitler sunulacak.
5. KM Taşı: Test, 19 Haziran 2000
Test planlaması, test tekniklerinin belirlenmesi, test sonuç belgesi hazırlanması.
6. KM Taşı: Sunum, 1-2 Temmuz 2000
ODTÜ Bilgisayar Mühendisliği Bölümünde 4.dönem sonu
itibariyle projenin MS PowerPoint kullanılarak sunumu yapılacak, imkanlar ölçüsünde projenin demosu gösterilecek.
Kaba Proje Planı ve Uygulama
Takvimi
G a n t t Ş e m a s ı
HAFTA
/
GÖREV |
1 28 Sbt |
2 6 Mrt |
3 13 Mrt |
4 20 Mrt |
5 27 Mrt |
6 3 Nsn |
7 10 Nsn |
8 17 Nsn |
9 24 Nsn |
10 1 Mys |
11 8 Mys |
12 15 Mys |
13 22 Mys |
14 29 Mys |
15 5 Hzr |
16 12 Hzr |
17 19 Hzr |
18 26 Hzr |
19 1 Tem |
Proje Teklifi |
X |
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Analiz |
|
|
X |
X |
X |
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
Tasarım |
|
|
|
|
|
|
X |
X |
X |
X |
|
|
|
|
|
|
|
|
|
Gerçekleştirim |
|
|
|
|
|
|
|
X |
X |
X |
X |
|
|
|
|
|
|
|
|
Test |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sunum |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yararlanılan Kaynaklar
(*) Yazılım Mühendisliği Ders notları (ODTÜ, İDEA, BTSP),
(*) Software Engineering Roger S. PRESSMAN, 4.Baskı, 1997,
(*) YGP DFD, E-R,YM linkler listesi,
(*) 1. ve 2. grup YGP projeleri arşivi.
|
|