Professional Documents
Culture Documents
OOP Week3
OOP Week3
Nesnesel Analiz
ve
Tasarım
24.11.23 1
Bölüm Hedefi (Tümleştirilmiş Yazılım Geliştirme
Süreci (The Unified Process -UP)
Bu bölümde, nesneye dayalı bir yazılım geliştirilirken yazılım
projesinin nasıl planlanması gerektiğini gösteren tümleştirilmiş
yazılım geliştirme süreci (The Unified Process - UP)
anlatılacaktır.
Ayrıca ders boyunca verilecek olan örneklerde kullanılacak olan
problem bu bölümde tanıtılacaktır.
Bu bölümü bitirdiğinizde,
•Tümleştirilmiş yazılım geliştirme sürecinin özelliklerini,
•Yazılım geliştirme projesinin aşamalarını,
•Derste kullanılacak olan örnek problemi,
öğrenmiş olacaksınız.
24.11.23 2
People are more important than any
process.
Grady Booch
24.11.23 3
2.1. Tümleştirilmiş Yazılım Geliştirme Süreci (The Unified
Process - UP) Temel Özellikleri
24.11.23 4
İstekler
İstekler
Çözümleme zaman
Tasarım Çözümleme
Gerçekleme
Sınama Tasarım Her iterasyon
sonunda
Gerçekleme sistem
ürün istenene
Sınama yaklaşır
Bir iterasyon
süresi örneğin 4 İterasyon adımının
hafta süreleri sabit ve eşittir
24.11.23 5
Yinelemeli (iterative): Problemdeki istekler
(requirements) bir bütün olarak yerine getirilmeye
çalışılmaz. Önce problemin (isteklerin) bir kısmı ele
alınır. Problemin bu kısmı bağımsız proje olarak ele
alınır ve hedeflenen istekleri yerine getiren sınanmış
tam bir ürün ortya çıkartılır. Ardından bir sonraki
yinelemye (iterasyon) geçilir ve yeni istekler ele alınır.
Her iterasyon sonunda hedefe daha yakın bir ürün
elde edilir.
24.11.23 6
Arttırmalı ve evrimsel (incremental, evolutionary):
Her iterasyon adımında yeni sitekler ele alındığından
iterasyonlar sonucunda elde edilen ürünlerin
özellikleri artar ve hedeflenen yazılım ürününe
yaklaşılır.
Risk güdümlü: (risk-driven) İlk iterasyonlarda en
riskli kısımlar gerçeklenmelidir. Böylece daha
projenin ilk aşamalarında ortaya çıkabilecek
problemler görülebilir ve gerekli önlemler alınabilir.
Örneğin zaman planı gözden geçirilebilir, ekibe yeni
elemanlar alınabilir, bütçe güncellenebilir.
24.11.23 7
“Yes, that’s what I asked for,
but now that I try it, what I
really want is something
slightly different.”
Or more likely
24.11.23 9
2.2. Yinelemeli Sürecin Yararları (devam..)
Her iterasyonda deneyim kazanılması: Her yineleme adımında yazılım
ekibi o konu ile ilgili deneyim kazanır ve birbirini daha iyi tanır.
24.11.23 10
2.3. UP'nin Kullanılmasına Yönelik Öneriler
•UP' nin kullanılmasına yönelik öneriler şunlardır:2 - 6 haftalık sabit süreli
iterasyonlar uygulanmalı: Deneyimlere göre bir iterasyonun süresinin 3 ya da 4
hafta olarak seçilmesi iyi sonuçlar vermektedir. İterasyon 2 haftadan kısa olursa
bu sürede bir ürün çıkarmak mümkün olmaz. Altı haftadan daha uzun süreli
iterasyonlarda ise erken geri besleme alma olanağı ortadan kalkar ve çok fazla
sayıda istek ile uğraşmak gerekir.
•Yüksek risk taşıyan kısımlar ilk iterasyonlarda gerçeklenmeli: Daha önce de
açıklandığı gibi ortaya çıkabilecek problemleri mümkün olduğu kadar erken fark
edip bunlara karşı önlem alabilmek için zorlu görünen istekler önce ele alınmalı.
•Temel oluşturan yapılar (çekirdek) önce gerçeklenmeli: Yüksek riskli kısımlardan
başka önce ele alınması gereken modüller sistemin temelini (iskeletini) oluşturan
yapılardır.
•Sürekli kullanıcılardan geri besleme alınmalı, isteklere uyulmaya dikkat edilmeli.
•Her iterasyondan sonra ürün tam olarak sınanmalı: Her iterasyonda bir ürün
oluşturulduğu unutulmamalı ve bu ürün tam olarak sınanmalıdır. Aksi durumda
hatalar geç fark edilir ve bunları düzeltme maliyeti yüksek olur.
•Kullanım senaryoları yöntemi (use case) uygulanmalı: Bu yöntem Bölüm 3'te
ayrıntılı olarak açıklanacaktır.
•Görsel modelleme (UML) kullanılmalı. UML tasarımların ifade edilmesini ve takım
elemanları arasında iletişimi kolaylaştırır.
•Bir iterasyonda elde edilen deneyim diğer iterasyonda kullanılmalı.
24.11.23 11
2.4. Tümleştirilmiş Süreçte (UP) Yazılım Projesi Aşamaları
24.11.23 12
24.11.23 13
24.11.23 14
2.5. Derste Kullanılacak Örnek Sistem
24.11.23 15
24.11.23 16
Bölüm 3
Bölüm Hedefi
Bir yazılım geliştirme çalışmasının ilk bölümünü istekleri anlamak
oluşturur. İstekleri doğru olarak anlamak ve kesin olarak
belirleyebilmek yazılımın kalitesi açısından çok önemlidir. Çünkü bu
aşamada yapılacak bir hata ya da yanlış anlama yazılımın tümünü
olumsuz yönde etkileyecektir.
Bu bölümü bitirdiğinizde,
•Bir yazılım sisteminden beklenenlerin nasıl kategorize
edileceğini,
•İstekleri belirlemek için kullanılan kullanım senaryoları (use-
case) yöntemini,
•Senaryoların metin (text) ve UML diyagramı şeklinde nasıl
ifade edileceğini,
•Senaryoların temel unsurları olan aktörler ve onların
işlemlerinin nasıl belirleneceğini
öğrenmiş olacaksınız.
24.11.23 17
3.1. İsteklerin Kategorileri
F Functionality
U Usability
R Reliability
P Performance
S Supportability
+ Diğer ikinci faktörler
24.11.23 18
3.1. İsteklerin Kategorileri
24.11.23 19
3.2. Kullanım Senaryolarının (Use-Cases) Tanımı
24.11.23 20
3.2.1. Senaryo
Anlamlı bir sonuca (amaca) ulaşmak için aktör ile sistem arasında
gerçekleşen olayların belli bir zinciridir. Bir sistemin çalışması sırasında
birden fazla senaryo gerçekleşebilir.
Olası tüm senaryolar kullanım senaryolarını (use case) oluştururlar.
Örnek :
Bir otomatik para çekme makinesinde (ATM) müşteri ile sistem arasında
gerçekleşebilecek olan olayların oluşturduğu senaryolar şunlar olabilir.
Müşteri kartını makineye takar.
Sistem şifreyi sorar.
Müşteri şifreyi girer.
Sistem şifreyi onaylar.
Müşteri para çekme işlemini seçer.
Müşteri çekeceği para miktarını seçer.
Sistem parayı, makbuzu ve kartı verir.
24.11.23 21
Yukarıdaki akış bu sistemdeki olası senaryolardan sadece biridir. Aynı sistemde
geçerli olan diğer bir senaryo:
Müşteri kartını makineye takar.
Sistem şifreyi sorar.
Müşteri şifreyi girer.
Sistem şifrenin yanlış olduğunu bildirir ve şifreyi tekrar ister.
Müşteri şifreyi girer
Sistem şifrenin yanlış olduğunu bildirir, kartı alıkoyar ve işlemi sonlandırır.
Aynı sistemdeki başka bir senaryo da müşterinin bakiyesinin yeterli olmaması
durumuyla ilgili olabilir.
Yazılım dünyasındaki önemli isimleri kullanım senaryoları ile ilgili orijinal tanımları
aşağıda verilmiştir:
(Jacobson, Booch, Rumbaugh 1999):
"A use case specifies a sequence of actions, including variants, that a
system performs and that yields an observable result of value to a
particular actor."
(Cockburn 2000):
"A use case is a collection of possible sequences of interactions between
the system under discussion and its external actors, related to a particular goal.”
24.11.23 22
3.2.2. Aktör
Sistemin kullanıcılarını tanımlamak için kullanılan mekanizmadır.
24.11.23 24
3.2.3. Birincil Aktör ve Sistemin Sınırları
Üzerinde çalıştığımız sistemi hangi düzeyde incelediğimize ve sınırlarını
ne şekilde çizdiğimize bağlı olarak birincil aktörler değişiklik gösterir.
Kullanım senaryolarını yazarken sistemin sınırlarını doğru olarak
belirlemek, nelerin dışarıda nelerin içeride olacağına doğru karar
vermek gerekir.
Şekil 3.1' de sistemin hangi düzeyde incelendiğine bağlı olarak
aktörlerin nasıl değiştiği gösterilmiştir.
Terminal
(Kasa)
Vergi Dairesi
Kasa Görevlisi
Satış İnceleme
Sistemi
Müşteri Dükkan
24.11.23 25
Şekil 3.1' de görüldüğü gibi o anda tasarlamakta
olduğumuz sistem sadece
terminal (kasa) programı ise bu durumda sistemin
birincil aktörü (kullanıcısı) kasa görevlisidir.
24.11.23 26
3.3. Kullanım Senaryolarının Yazılması
Hasta Gözetle
Hemşire
Veri Topla
Hasta
Bilgisayar
Teknik Ayarla
Eleman
Yazılım Güncelle
24.11.23 27
3.3.1. Kullanım Senaryolarının İfade Edilmesi
24.11.23 28
3.3.2. Kullanım Senaryolarında Yer Alan Bölümler
Her kullanım senaryoları grubunun (use case) bir adı ve numarası
vardır. İsimden sonra aşağıdaki bölümler gelir.
* Önsöz (Preface) Bölümü
24.11.23 29
3.3.2.1. Önsöz (Preface) Bölümü
24.11.23 30
3.3.2.2. Ana Başarılı Senaryo (Temel Akış) Bölümü
(Main Success Scenario or Basic Flow)
24.11.23 31
3.3.2.3. Uzantılar (Alternatif Akışlar) Bölümü
(Extensions or Alternate Flows)
Ana senaryonun dışında kalan başarılı/başarısız sonuçlara götüren tüm senaryolar sıralanır.
Ana senaryodan (temel akış) dallanmalar şeklinde yazılırlar. Ana senaryoda hangi adımdan
buraya gelinecekse o adımın numarası kullanılır.
Alternatif akışa (dallanma) neden olan koşullar aktörler ya da sistem tarafından fark edilecek
şekilde yazılmalı. Alternatif senaryolar ile aktörlerin tüm amaçları sağlanmış olmalı.
Örnek:
Ana senaryoda 2. Müşteri şifresini girer satırı varsa, temel akışta şifrenin doğru olduğu durum
ele alınır. Şifrenin yanlış girilmesi durumu ise aşağıda gösterildiği gibi uzantılarda incelenir.
Uzantılar:
24.11.23 32
3.3.2.4. Diğer Bölümler
24.11.23 33
3.3.2.5. Örnek
24.11.23 34
3.3.2.5.1. Senaryo Grubu (Use Case) SG1: Satış İşlemleri
24.11.23 35
3.3.2.5.2. Ana Başarılı Senaryo (Doğal Akış)
24.11.23 36
Uzantılar (Alternatif Akışlar - Extensions or Alternate
Flows):
*a. Herhangi bir anda müdür yetkili bir işlem yapmak ister ve
şifresini girer:
1.Sistem müdür-yetkisi konumuna geçer.
2.Müdür yetkili bir işlem gerçekleştirir. Örneğin satışı iptal eder,
bir ürünün fiyatını indirir vs.
3.Müdür sistemden çıkar.
4.Sistem normal konuma (kasa görevlisi yetkisi) geçer.
24.11.23 37
Uzantılar (Alternatif Akışlar - Extensions or Alternate Flows) Devamı:
*b. Herhangi bir anda sistemde bir hata oluşur:
Bu durumlarda bilgilerin kayıt edilmesi ve sistemin kaldığı yerden devam edebilmesi istenir.
1. Kasa görevlisi sistemi yeniden başlatır, sisteme giriş yapar ve sistemin önceki durumdan
devam etmesini ister.
2. Sistem önceki durumu oluşturur.
2a. Sistem önceki durumu oluştururken anormallik sezer.
1. Sistem hata uyarısı verir, hatayı kayıt eder ve temiz (başlangıç) duruma geçer.
2. Kasa görevlisi yeni bir satış başlatır.
3a. Geçersiz bir ürün kodu (Sistemde bulunamadı):
1. Sistem hata uyarısı verir, ürünü reddeder.
2. Kasa görevlisi hataya tepki verir:
2a. Ürünün üstünde okunabilir bir kod vardır:
1. Kasa görevlisi kodu sisteme elle (manual) girer.
2. Sistem ürünün tanıtıcı bilgisini ve fiyatını gösterir.
2b. Ürünün üstünde kod yoktur, ama fiyatı yazılıdır:
1. Kasa görevlisi müdürden yetkili bir işlem yapmasını ister.
2. Müdür şifresini girer.
3. Kasa görevlisi fiyatı elle girer.
3b. Aynı üründen bir taneden fazla alınmıştır (5 şişe içecek):
1. Kasa görevlisi ürün kodunu ve adetini sisteme girer.
3-6a. Müşteri kasa görevlisine bir ürünü almaktan vazgeçtiğini söyler:
1. Kasa görevlisi satıştan çıkarılacak ürünün kodunu sisteme girer.
2. Sistem ürünü satıştan çıkarır ve geçerli toplamı gösterir.
3-6b. Müşteri alışverişten vazgeçtiğini söyler:
1. Kasa görevlisi satışı iptal eder.
24.11.23 38
Uzantılar (Alternatif Akışlar - Extensions or Alternate
Flows) Devamı:
5. Müşteri indirim hakkı olduğunu söyler (müşteri kartına sahiptir):
1. Kasa görevlisi müşteri kodunu sisteme girer.
2. Sistem indirimi uygular ve yeni toplamı gösterir.
7a. Nakit ödeme:
1. Kasa görevlisi ödenen nakit miktarı sisteme girer.
2. Sistem para üstünü gösterir ve para çekmecesini açar.
3. Kasa görevlisi müşteriden ödemeyi alır ve para üstünü verir.
4. Sistem nakit ödemeyi kayıt eder.
7b. Kredi kartı ile ödeme:
1. ....
7c. Çek ile ödeme:
1. ....
24.11.23 39
Özel İstekler (Special Requirements):
•Düz kare monitör. Yazılar 1 metre uzaklıktan okunabilmeli.
•Kredi kartı sorgulamasının cevabı en geç 30 saniyede gelmeli.
•....
Teknolojik Beklentiler (Technology Variations List):
*a. Müdür kendisini sisteme bir kart okutarak ya da tuş takımından
şifresini girerek tanıtır.
3a. Ürün kodları bir barkod okuyucu ile veya tuş takımından elle
girilebilir.
7b. Kredi kartı bilgiler kart okuyucu ile veya tuş takımından elle
girilebilir.
....
Açık noktalar (Open Issues):
•Vergi kanunlarındaki değişim sistemi nasıl etkiler?
•Kasa görevlisi mesaisi bittiğinde sistemden çıkarken para çekmecesini
de almalı mı?
•Müşteri kart okuyucuları doğrudan kendisi kullanabilir mi, yoksa kasa
görevlisi ile mi sisteme erişmeli?
•....
24.11.23 40
24.11.23 41
24.11.23 42
24.11.23 43
Tüm arkadaşalarıma
katılımlarından dolayı teşekkür
ediyorum.
24.11.23 44