Yazılım Projelerini Yakından Tanımaya Ne Dersiniz ?

yazılım projeleri

Bugün sizlerle birlikte biraz daha iş hayatına yönelerek teknik detaylardan çıkıp yazılım projelerini planlama sürecine gireceğiz. Sıfırdan böyle bir projenin plan ve yönetim sürecini birlikte ele alacağız. 

Süpermarket dağıtım sisteminin mimarisini hazırlayıp yazılım mühendisliği süreçlerini inceleyeceğiz. Bir projenin doğru yönetilmesi için gerekli adımlar sırasıyla planlama (planning), kontrol (control), monitoring (izleme) olarak belirlenmiştir.

yazılım projeleri planlama süreci

Bu yazımda bahsedeceğim veri tabanı tasarımı için seçilen konu, elektronik ortamda müşterilerin verdiği siparişleri evlere götüren bir süpermarket dağıtım sistemidir. 

Bu sistem içerisinde müşteri sisteminde müşteri id, ad, soyad, adres bilgileri tutularak veri tabanına kayıt olma sağlanmaktadır. Kayıt işlemi tamamlandıktan sonra müşteri sisteme giriş yapabilmekte ve sipariş sırasında seçtiği ürün stokta var ise siparişi tamamlayabilmektedir. 

Ardından market görevlisi, seçilen ürünü hazırlayarak teslim edilmek üzere ürünü sürücüye vermektedir. Sürücü, müşteri bilgilerine sahip olduğu için siparişi müşteriye teslim etmektedir.

Müşteri ürünü teslim aldıktan sonra sisteme ürün teslim edildi olarak geri bildirim dönmektedir.

Görüldüğü üzere tüm işlemler aşamalı bir şekilde kaydedilmektedir. Şayet bir adım atlanılsa bir sonraki adım gerçekleşememektedir. Bu sebeplerden dolayı öngörülen süreç modeli şelale model (waterfall) olarak seçilmiştir. 

Şelale modelde, bu sistemde yapıldığı gibi gereksinimlerin tanımlanması gerekmektedir. Toplamda bu sistem için 14 adet gereksinim belirlenmiştir. 

Gereksinimler, bir hizmetin veya sistem kısıtlamasının üst düzey bir özet ifadesinden ayrıntılı bir işlevsel matematik tarife kadar değişebilir.

Sistem gereksinimleri ise sistem işlevlerinin ve hizmetlerinin ayrıntılı açıklamalarını gösteren yapılandırılmış bir belgedir. 

Şimdi bu teknik cümlelerden biraz olsun uzaklaşalım ve hikayemize başlayalım, ne dersiniz?

Gereksinimler

  1. Kayıt Olma : Eğer müşterinin kayıtlı bir hesabı yok ise üye olabilmelidir.
  2. Giriş Yapma : Müşterinin siparişi verebilmesi için sisteme giriş yapması gerekmektedir. Bu sayede hangi siparişin hangi müşteriden geldiği takibi yapılacaktır.
  3. Ürün Arama : Müşterilerin istedikleri ürüne kolay bir şekilde ulaşabilmesi için arama yaparak istediği ürünü seçmelidir.
  4. Sepete Ekleme : Ürünler eğer stokta var ise adet girerek ürünü sepete eklemesi gerekmektedir.
  5. Ödeme Yöntemi Sunma : Müşterinin nasıl ödeme yapmak istediğini sorarak ona göre hareket edilmelidir. Örneğin, kartla ödeme yapmak istiyorsa pos cihazı da götürülmelidir.
  6. Kapıda Ödemeyi Sağlama : Eğer müşteri kapıda ödeme yapacak ise bunu yapabilmesi için ortam sağlanmalıdır.
  7. Online Ödeme Sağlama : Eğer müşteri ödemeyi uygulama üzerinden yapacak ise müşteriye online ödeme ortamı sağlanmalıdır.
  8. Stok Takibi : Eğer bir ürünün stok sayısı belirli bir sayının altına düşerse market görevlisine bildirim gitmelidir.
  9. Ürün Satışını Durdurma : Bir ürün stokta yok ise o ürünün satışı durdurulmalıdır. Eğer ürün stokta yok ise müşterinin o ürünü sepetine eklemesi uygulama üzerinde engellenmelidir.
  10. Paket Hazırlanması : Siparişler ürünün özelliklerine göre paketlenmelidir. (öncelikli, hassas, acil, bozulabilir ürün, ezilebilir ürün, kırılabilir ürün vs.)
  11. Fatura Oluşturulması: Ürün satışı gerçekleştiyse müşteriye gönderilmek üzere fatura oluşturulmalıdır.
  12. Sürücüye Sipariş Bilgileri Verilmesi : Siparişin müşteriye teslim edilebilmesi için, müşteri bilgileri siparişi teslim edecek sürücüye verilmelidir.
  13. Siparişin Teslim Edilmesi : Müşteri verilen adreste ise sipariş müşteriye teslim edilmelidir.
  14. Sipariş Teslim Durumunun Görevliye Bildirilmesi : Siparişin müşteriye teslim edilip edilmeme durumunu görevliye bildirilmelidir.

proje planı-şelale modeli

Yukarıdaki şekilde proje planımızın şelale modeline göre süreci oluşmuştur. Şekilde bahsedilen aşamalardan herhangi bir tanesi yapılmadan geçilmek istenirse sistem hata verecektir. Bu sebepten dolayı şelale model seçilmiştir. Tüm adımlar sırasıyla gerçekleştirilmektedir.

Sistem modelini tasarlarken kullanacak olduğumuz UML diyagram çeşitini seçmeden önce sizlere UML Diyagramları hakkında ufak bilgi vermek istiyorum.

Sistemdeki çerçeve etkinlikleri kapsamındaki UML diyagramları; use-case (kullanım durumu) diyagramları, sequence (sıra) diyagramları, class (sınıf) diyagramları ve state (durum) diyagramları olacak şekilde 4 ana başlıktan oluşmaktadır.

UML Diyagramları

🔸 1. Use-case (Kullanım Durumu) Diyagramı

Use-case diyagramı göre sistemde 3 adet aktör bulunmaktadır ve bu diyagram sayesinde verinin takibi yapılarak hangi aktörün ne iş ile meşgul olduğu çıkarımı yapılmaktadır.

Amaç kullanıcının ne yaptığı ile ilgilenmektir. Müşteri süpermarket veri tabanına kayıt olabilir, giriş yapabilir, ürün araması gerçekleştirebilir, seçtiği ürünü sepete ekleyebilir veya bu sipariş için bir ödeme gerçekleştirebilmektedir.Ödemeyi online ödeme veya kapıda ödeme olarak gerçekleştirebilmektedir.

Diğer bir aktörü incelemek gerekirse görevli (market görevlisi); sipariş hazırlar, görev oluşumu yapar ve fatura oluşturmaktadır.

Son aktör olan sürücü ise siparişlerin bulunduğu kutuları araca yükler, siparişleri müşterilere teslim eder ve ardından ödemeyi teslim alır.

Sözel olarak anlatılan bu senaryoya use-case diyagramı ile oldukça pratik bir tasarıma dökülerek aşağıda yer verilmiştir.

use-case diyagramı

🔸 2. Sequence (Sıra) Diyagramı

Sıra diyagramları, aktörler ile sistem içerisinde bulunan nesneler arasındaki etkileşimi modellemek için kullanılır. Nesneler ve aktörler arasındaki bu ilişkiler ise oklar ile temsil edilmektedir. 

Bu diyagramda 3 adet aktör kullanılmış olup bu aktörler sırasıyla Müşteri, Görevli ve Sürücü’den oluşmaktadır.

Bu diyagrama bakıldığında sırası ile müşteri marketin veri tabanına (MarketDB) id, ad, soyad ve adres bilgileri ile kayıt olmaktadır. MarketDB ise kayıt başarılı ile KayıtBaşarılı olarak cevap vermektedir.

Giriş yapan müşteri istediği ürün stokta var ise sipariş vermektedir. Eğer stokta ürün yok ise ürünün sepete eklenmesi gerçekleşememektedir ve sipariş tamamlanamadığı için bilgilendirilir.

Görevli seçilen ürünü ya da ürünleri hazırlayıp teslim edilmek üzere kargoyu sürücüye vermektedir (PaketHazırla). Daha sonra sürücü, aldığı kargoyu müşteriye teslim etmektedir (PaketTeslimEt).

Teslim sırasında eğer müşteri evde değil ise teslimEdilemedi mesajı gönderilir eğer evde ise siparisiTamamla fonksiyonu devreye girer.

Sequence diyagramı

🔸 3. Class (Sınıf) Diyagramı

Class (sınıf) diyagramı, sistemdeki sınıfların içerdiği özellikleri ve birbirleri arasındaki ilişkilerin gösterilmesi için kullanılmaktadır.

Bu örnekte de classlar arasındaki ilişki tipleri şekildeki gibi gösterilmiştir. Association ve Aggregation ilişki türleri seçilmiştir.

Müşteri ve sipariş sınıfları arasında Aggregation ilişki türü bulunmaktadır. Çünkü müşteri sipariş verebilmekte sipariş ise müşterinin içerisinde barınmaktadır.

Veya sürücü ve görev arasında da aynı ilişki türü bulunmaktadır.Sürücünün ya hiç görevi olmayabilir ya da birden fazla göreve sahip olabilir. (0…*) Aynı şekilde bir görev en az bir sürücüye ait olmaktadır.

Başka bir ilişkiyi ele alacak olursak müşteri ve sepet sınıfları arasında Aggregation (kümeleme, toplama) ilişki türü bulunmaktadır.  Müşterinin ya hiç sepeti olmayabilir ya da 1 adet sepeti olabilir.

Bir sepetin en az 1 adet müşterisi olmak zorundadır. Ve müşteri sepeti içerisinde barındırmaktadır bu sebeple Aggregation ilişki türü seçilmektedir. Ürün ve tür sınıfları arasında ise Association ilişki türü seçilmiştir. 

Çünkü ürünler türlere sahiptir. Bir ürünün en az 1 adet türü ya da birden fazla türü olmalıdır.  Sınıflar bu ilişki türleri ile yukarıdaki gibi ilişkilendirilmiştir.

class diyagramı

🔸 4. State (Durum) Diyagramı

Durum diyagramları, sistemin iç ve dış olaylara nasıl tepki verdiğini gösterir, sistemin davranışlarını modeller ve bir olay gerçekleştiğinde olası tüm durumları tanımlar. 

Elemanlar objenin durumunu belirleyecek şekilde tasarlanır ve ilişkilendirilir. Bu sistem müşteri, sürücü ve görevli olmak üzere 3 adet aktörden oluşmaktadır.

4.1. Müşteri Durum Diyagramı

Müşteri durum diyagramında müşteri uygulamaya girmektedir. Müşteri ya ürün arayabilir ya da ürünleri seçmiş bir şekilde sepete gitmektedir. Müşteri eğer aradığı ürünü bulursa bu ürünü inceleyerek stokta var ise sepete eklemektedir.

Ürünler sepete gittikten sonra müşteri kendi sepetindeki ürünleri inceleyebilmektedir. Ayrıca müşteri sepetindeki bir ürünü silebilir veya ödeme kısmına yönelerek işlemi bitirebilmektedir.

Müşteri durum diyagramı

4.2. Görevli Durum Diyagramı

Görevli durum diyagramına, görevli müşterinin siparişini hazırlamaktadır. Eğer görevli siparişi hazırladı ise ürünün stokunu veri tabanından azaltabilmektedir. Görevli siparişe ait faturayı müşteriye temsil etmek üzere hazırlamaktadır.

Görevli paketi hazırlamakta iken siparişi ve faturayı aynı pakete koymaktadır. Bu süreçten sonra görev oluşturulmaktadır. Sürücü, araç ve görev süresi (başlangıç ve bitiş zamanı) hakkında bilgilendirme yapmaktadır.

Görevli durum diyagramı

4.3. Sürücü Görev Diyagramı

Sürücü durum diyagramında, sürücü görevliden paketi ve sipariş bilgilerini almaktadır. Daha sonra paketi teslim etmek üzere sipariş adresine götürmektedir.

Eğer müşteri evde ise ve ödeme şekli kapıda ödeme olarak seçilmişse ödeme tamamlanmaktadır. Böylelikle sürücü, siparişi teslim eder. Eğer müşteri evde değil ise paketi geri getirmektedir.

Sürücü görev diyagramı

Proje Değerlendirilmesi ve Maliyet Hesabı

Süpermarket sisteminin projeye dönüştürülme aşamasında öncelikle bu veri tabanı sistemi için gereksinimler belirlenmiştir.

Süreç modellenmesinden sonra nesneye yönelik analizler yapılarak gerekli UML diyagramları tasarlanmıştır.

Bu UML diyagramlarına örnek olarak bu projede use-case diyagramı, sequence diyagramı, class diyagramı ve state diyagramları kullanılmıştır. Bu diyagram çizimlerinde nesneler ve özellikler tanımlanarak sınıflar arası ilişkiler tanımlanmıştır.

Maliyet Hesabı

Bu sistem için maliyet hesaplaması olarak CoCoMo modeli kullanılmıştır. CoCoMo modellemesi üç ayrı türden oluşmaktadır:

  1. Organic CoCoMo : Bu CoCoMo modelinde küçük işletmeler bulunmaktadır. Bu sistem için gereksinimler kesin olarak belirlenmektedir.
  2. Semi-detached CoCoMo (Yarı Müstakil) : Bu modelde çalışanların deneyim seviyeleri karışık şekilde belirlenmiştir. Gereksinimler organik CoCoMo modelindeki kadar kesin gereksinimler mevcut değildir.
  3. Embedded System: Bu sistem modelinde yazılım projeleri bir dizi sıkı donanım içerisinde geliştirilmelidir.

Bu sistem modelleri incelendiğinde süpermarket yazılımı için CoCoMo modelini Organic olarak tespit ettik.

Maliyet hesaplaması formülü

Baz Alınan Organic CoCoMo Değerleri

Sonuç olarak ortaya çıkan efor, zamanlama ve ortalama personel sayısı şu şekilde hesaplanmıştır : (Ortalama değerler üzerinde hesaplama yapıldığı varsayılmıştır.)

KLOC = 20K (ortalama kod satırı)

MM = 2.4 * (20)1.05 = 55.75

TDEV = 2.5 * (55.7)0.38 = 11.51 (zamanlama)

Verimlilik = 20.000 DSI / 55.7 = 359

Ortalama Personel = 55.7 / 11.51 = 4.8 FSP (projede çalışacak ortalama personel : 5

PROJE PLANLAMA SÜRECİ

Proje planlama süreci

Planlama, projenin hayata geçirilmesi açısından önem arz etmektedir. Bu sebepten dolayı planlamaya uyularak aşağıdaki gibi proje iş-zaman planı olan örnek bir Gantt Diyagramı göstereceğim.

Gantt diyagramı

CoCoMo hesaplamasındaki TDEV sonucu 11.51 çıktığı için bu proje toplamda 12 ayda bitecek şekilde planlanmıştır.

Umarım örneklerim sizler için faydalı olmuştur.

Diğer yazılarıma buradan ulaşabilirsiniz. Esen kalın ✨

REFERANSLAR

Leave a Reply

Your email address will not be published. Required fields are marked *