13/02/2014Bilgisayar Genel

Yazılım Geliştirmede Tasarım

tasarımYazılım geliştirmede analiz süreciyle yapılan şey problemi tanımlamaktır. Sonrasında gelecek olan adımsa, analizden ve müşterinin performans beklentisi, teknolojiye yakınlığı, bütçesi, fiziksel şartları, vb. koşullara bakılarak en uygun çözümün belirlenmesidir.

Yazılım geliştirmede analiz süreciyle yapılan şey “problemi tanımlamak”tır. Sonrasında gelecek olan adımsa, analizden ve müşterinin performans beklentisi, teknolojiye yakınlığı, bütçesi, fiziksel şartları vb. koşullara bakılarak en uygun çözümün belirlenmesidir. Bu aşama, müşterinin isteklerinin hangi tür donanım, işletim sistemi, ağ sistemi, yazılım dil ve teknolojileri kullanarak yapılacağını belirleyeceğimiz aşama olacaktır. Şimdi yavaş yavaş başlayalım tasarımımıza…

 İlk olarak analizden müşterinin yazılım hakkındaki beklentilerini toparlamaya çalışalım.

1. Uygulama bir web uygulaması olacaktır.

2. Uygulamanın arka tarafında verileri saklamak için bir veritabanı kullanılacaktır.

3. Uygulama bir SMS servisi aracılığıyla mesaj gönderecektir.

 Uygulama bir web uygulaması olacaksa, yazılımımız ve veritabanı bir web sunucusu üzerine yüklenecek demektir. Bu durumda diyetisyen ve sekreteri de aynı web uygulaması üzerinden sisteme erişerek işlevlerini yürütmek durumundadırlar. Toplamda bir önceki girdide proje şartnamesi için çıkarttığımız listedeki tüm işlevleri bir web uygulamasıyla yerine getirmek mümkündür. Bu durumda analizimizin doğruluğunu sınamış olduk ve tasarım aşamasında konsepti çatısını da belirledik:

“Önde bir web arayüzüyle arka tarafta ilişkisel veritabanıyla çalışacak olan bir sistem geliştirilecektir.”

 Şimdi kullanılacak teknoloji ve araçları belirleyelim. İlk olarak müşterinin mevcut bir web hostingi olduğu için buradaki teknolojiyi öğrenmemiz gerekir. Diyelim ki müşterinin web sitesi Asp.Net ve MS Sql destekliyor. O zaman yapmamız gereken web uygulamasını Asp.Net ile kodlayıp veritabanı olarak da MS Sql üzerine tablolarımızı oluşturmak olmalıdır. Bu arada eğer müşterinin özellikle bir teknoloji talebi varsa bunu da dikkate almanız gerekecektir. Örneğin bizim diyetisyen amatör olarak Visual Basic ile ilgileniyor ve kodlamada dil olarak Visual Basic’i tercih etmemizi istiyor olabilir.

 Evet, sonuç olarak teknoloji ve araç seçimimizi listeleyecek olursak:

1. Web uygulama tarafı Asp.Net kullanılarak geliştirilecektir.

2. Veritabanı MS Sql 2005 olacaktır.

3. Programlama dili olarak Visual Basic 9 kullanılacaktır.

 Yukarıdaki maddeler için müşterinin onayını aldıktan sonraki adım tasarımı detaylandırma aşamasıdır. Teknoloji belli olduğuna göre şimdi analizi önümüze alıp arayüzleri kâğıt üzerinde karalamak (taslak olarak) , önemli fonksiyonları belirlemek ve veritabanı tablo ve tablolar arası ilişkileri belirlemek olacaktır. Bu aşama hem analizimizi detaylı olarak doğrulamamızı sağlar hem de yazılımı geliştirmeye başlamadan önce yazılım bitince ortaya ne çıkacağı yönünde hem müşteriye hem de bize ipucu verir.

 Tasarımı detaylandırırken ilk olarak hastaların sisteme güvenli girişini atladığımız fark ediyoruz. Hastalar randevu alırken bazı bilgiler giriyorlar ama öncesinde sisteme güvenli girişleri atlanmış durumda. Yani şu an benim cep telefonu numaramı bilen herkes benim randevu durumumu görebilir ya da benim yerime gidip randevumu iptal edebilir. Diyetisyen ve sekreter için bir giriş paneli var ama hastalar için yok. Hemen bir çözüm iletip diyetisyene sunuyoruz…

Hastalarınız için sisteme güvenli bir giriş ortamı sağlamamız gerekiyor. Bunun için çözüme 4 ekran daha eklememiz gerekiyor. Bunların üçü hastalar için; hasta ilk kayıt ekranı, hasta giriş ekranı ve hasta parola değiştirme ekranı. Bir tanesi de sizin tarafınızdan yönetilecek (sekreter de olabilir) hasta parola sıfırlama ekranı. Hastalar parolalarını unutursalar diye…

 Diyetisyenimiz önerimizi onayladı. Şimdi son eksiği tamamlayalım: listeler ve raporlar…

Diyetisyenin, sekreterin ve hastaların sistemden bekledikleri liste ve raporları bilmemiz gerekiyor. Liste ve raporları hem liste ve rapor ekranlarını tasarlamak için hem de tablo ve tablo alanlarımızın doğruluğunu kontrol ederken kullanacağız. Bu noktada liste ve raporların neler olacağını, bunların hangi bilgileri içereceğini ve bilgileri nasıl, hangi biçimde göstermesi gerektiğini sekreter ve diyetisyenden isteyeceğiz. Onlar bu bilgileri hazırlarken biz de elimizdeki bilgilerle web arayüzlerini ve tablo tasarımlarını oluşturmaya başlayacağız.

İlk olarak ekranları tasarlayalım. Her bir ekran için öncelikle ekranı taslak olarak çizip (bir A4 kağıdına kurşun kalemle bile olabilir) ekranı kimlerin kullanacağını, ekranda işleyişin nasıl olacağını, ekran kullanılırken oluşacak istisnai durumlar için neler yapılacağını belirten bir doküman hazırlamalıyız.

Hasta Karışlama Ekranı

Kullanıcı: Herkes

İşlev: Kullanıcı karşılayarak onlara yapabilecekleri işlem seçenekleri link listesi olarak sunar.

YazilimTasirimi_Ekran01

Yeni Hasta Kayıt Ekranı

Kullanıcı: Herkes

İşlev: Daha önce sisteme kayıtlı olmayan, yani ilk kez randevu alacak hasta adayları için sisteme telefon numaralarını girerek kendi parolalarını kayıt etmelerini sağlar.

Normal Akış:

1. Hasta adayı telefon numarasını alan kodu dahil (0 hariç ) “Telefon No” alanına girer.

2. Hasta adayı kendisi için 4-8 karakter uzunluğunda bir parola belirler ve bunu her iki parola alanına da aynı şekilde girer.

3. Hasta adayı “Kaydet” butonuna basar.

4. Sistem hasta adayını kayıt ederek “Randevu Alma” ekranına yönlendirir.

İstisnalar:

1. Hasta telefon numarasını alan kodu dâhil 10 karakterden fazla ya da eksik olarak girerse sistem örnek bir telefon numarası girişi bilgisiyle birlikte bir hata mesajı gösterir.

2. Kullanıcı “parola” ve “parola tekrar” alanlarına aynı bilgiyi girmezse sistem hasta adayına hata mesajı göstererek gerekli düzeltmeyi yapmasını ister.

3. Kullanıcı 4 karakterden az ya da 8 karakterden fazla bir parola girerse sistem hasta adayına hata mesajı göstererek gerekli düzeltmeyi yapmasını ister.

4. Hasta adayının girmiş olduğu telefon numarası daha önceden sistemde kayıtlı ise hasta adayına telefonun daha önceden kayıtlı olduğu bilgisi verilir ve eğer daha önceden sisteme kayıtlı bir hastaysa diyetisyen sekreterini arayarak parolasını sıfırlamasını isteyen bir uyarı mesajı gösterilir.

YazilimTasirimi_Ekran02

Randevu Alma Ekranı

Kullanıcı: Kayıtlı Hasta

İşlev: Sisteme kayıtlı bir hastanın öncelikle telefon ve parolasını girdikten sonra belirleyeceği bir gün ve seans için randevu almasını sağlar.

Normal Akış:

1. Hasta öncelikle ekranın sol tarafındaki takvimden yılı, ayı ve günü seçer.

2. Hastanın seçmiş olduğu tarihteki seanslar listelenir. Hasta bu seans listesinde hangi seansın dolu ve hangi seansın boş olduğu görür.

3. Hasta randevu almak istediği seansın yanındaki “Randevu al” linkine tıklayarak randevu alma işlemini tamamlamış olur.

4. Sistem alınan randevuyu veritabanına kayıt eder.

İstisnalar:

1. Hasta randevusu olduğu aynı güne ikinci bir randevu almak isterse sistem bir uyarı mesajı vererek randevu işleminin gerçekleşmesine izin vermez

YazilimTasirimi_Ekran03

***

Bu şekilde tüm ekranları detaylı olarak belgeledikten sonra sıra bunlarla ilgili veritabanı altyapısını hazırlamaya gelir. Öncelikle tutulacak her türlü bilgiyi listelemek, daha sonra bu bilgileri anlamlı gruplar haline getirerek tabloları belirlemek ve son olarak da tabloları birbirleriyle ilişkilendirmek bu aşamada yapmamız gerekenler arasındadır.

 İlk olarak tutmamız gereken bilgileri yazılım şartnamesi ve ekran tanımları belgelerimizden belirleyelim:

1. Hasta adı, soyadı

2. Hasta telefon numarası

3. Hasta parolası

4. Günlük seans saatleri

5. Haftalık muayene günleri

6. Alınan randevular

İlk çalışmamız sonucu yukarıdaki gibi bir liste oluşturduk. Şimdi bunu biraz daha detaylandıralım ve gruplandırarak tablolarımızı oluşturmaya başlayalım.

Listeye baktığımızda hastayla ilgili bir grup bilgi olduğu ve bunların bir arada tutulmasının anlamlı olacağını görüyoruz. Bana göre “HastaBilgileri” ilk tablomuz.

 ***

 HastaBilgileri

HastaNo (Sistem otomatik artan bir sayı verir)

Ad

Soyad

Telefon

Parola

 Sonra seans takvimini oluşturmak için gerekli altyapı oluşturulmalı.

 Seanslar

Tarih

Seans (1:10-11, 2:11-12, 3:12-13…)

HastaNo(seans boşsa NULL)

Iptal/Gerceklesti

 ***

 Her bir seans, eğer biri tarafından randevu alınmışsa, randevu alanın HastaNo’su ile ilişkilendirilerek randevu işlemi de takip edilmiş olur.

 Tablo tasarımımızı da tamamladıktan sonra, hazırladığımız ekran taslakları üzerinden tablo tasarımımızı doğrulamamız gerekir. Her bir ekran için tüm senaryoları hayali olarak canlandırıp, tabloların bu senaryoların gereksinimleri karşılayıp karşılamadığına bakarız. Her şey yolundaysa son bir kez de müşterinin hazırladığı raporları kontrol edip, oluşturduğumuz veritabanının bu raporlar için gerekli verileri içerip içermediğine bakar, varsa gerekli değişiklikleri yaparız. Ekranlarla ilgili hazırladığımız belgeleri ve tablo tasarımını da eklediğimiz yazılım şartnamemizi müşteriye onaylatıp, uygulamayı geliştirmeye başlayabiliriz.

 Hadi kolay gelsin!

 Kadir Çamoğlu