Ders 4: Sistem Çözümleme Yazılım Mühendisliği Ders 4: Sistem Çözümleme
Giriş Sistem çözümleme çalışması, üretim sürecinin başlangıcıdır. Bu aşamada temel olarak mevcut sistemin nasıl çalıştığı araştırılır. Bu işlemden sonra önerilen sistem için mantıksal modelleme yapılır. Çözümleme çalışmasında mutlaka bir model/yöntem kullanma zorunluluğu vardır. Aksi durumda, çalışma dağınık biçimde sürer, denetlenemez ve başarısız olur. Yöntemler, veri modelleme ve süreç modelleme yöntemleri olarak ikiye ayrılabilir. Örneğin, Veri akış diyagramları ve Nesne ilişki şemaları yaygın olarak kullanılan süreç modelleme ve veri modelleme yöntemleridir. Yazılım Mühendisliği
Gereksinim Nedir? Gereksinim, kullanıcı ve tasarımcı ya da yazılım mühendisi ile ilgili olarak iki amaca yönelik olacak biçimde tanımlanmalıdır: Kullanıcılar, geliştirilecek sistemin amaçları istenilen ölçüde tanımlanmış mı sorusuna yanıt ararken, Tasarımcılar ise gereksinimlerin tasarıma dönüştürülebilme uygunluğunu ararlar. Bu nedenle Gereksinim Çözümleme amacıyla kullanılacak araç ve yöntemler hem kullanıcı hem de tasarımcı tarafından algılanabilir düzeyde olmalıdır. Yazılım Mühendisliği
Gereksinimler kaça ayrılır? Temel olarak, gereksinimler iki ana grupta incelenebilir: İşlevsel Gereksinimler Sistem ile çevresi arasındaki iletişimi belirleyen gereksinimlerdir. Örneğin hangi koşullarda bir kişiye mesai parası ödenmeyeceği gibi. İşlevsel Olmayan Gereksinimler Kullanıcı sorunundan bağımsız olarak çözülmesi gereken sorunlardır. Kullanılacak bilgisayarın türü, yazılım geliştirme ortamı v.b. Yazılım Mühendisliği
Gereksinim Türleri Yazılım Mühendisliği
Gereksinim Türleri Yazılım Mühendisliği
Gereksinim Türleri Yazılım Mühendisliği
Gereksinim Türleri Yazılım Mühendisliği
Gereksinim Özellikleri Gereksinimler üç amaca hizmet eder. Geliştiricilerin, müşterilerin sistemin nasıl çalışmasını istediklerini anlamalarını sağlar. Tasarımcılara, sonuç sistemin ne işlevsellik ve özellikte olacağını söyler. Sınama ekibine, kullanıcıyı, sunulan sistemin istenen sistem olduğuna ikna etmek için neler göstermeleri gerektiğini söyler. Özellikle, gereksinimlerde belirtilen performans özellikleri ölçülebilir birimler olmalıdır ve böylece her sınama için bir hedef sağlanmalıdır. Yazılım Mühendisliği
Gereksinimler geçerli midir? Hem geliştiriciler hem de kullanıcılar gereksinimleri kullandığı için, gereksinimlerin geçerliliğinin doğrulanması gerekir. Gereksinimler doğru oluşturulmuş mudur? Gereksinimler tutarlı mıdır? Gereksinimler tam mıdır? Gereksinimler gerçekçi midir? Her gereksinim kullanıcı tarafından istenen bir şeyi mi tanımlamaktadır? Gereksinimler doğrulanabilir mi? Gereksinimler izlenebilir mi? Yazılım Mühendisliği
Gereksinimler Örnek Bir uzay mekiği sistemi için bir gereksinimin aşağıdaki şekilde öngörüldüğünü varsayalım: Bu gereksinimi karşılayıp karşılamadığını görmek için sistem nasıl sınanabilir? Benzer şekilde, sınanamayacak gereksinimlerden kaçınılmalıdır. "Gerçek-zamanlı yanıtın" tanımı net olarak bilinmelidir. Eğer gereksinim; biçiminde olsaydı, sistemi sorgulama işlevinin nasıl sınanacağı kesin olarak bilinebilirdi. Yazılım Mühendisliği
Sistem Çözümleme Temel olarak sistem çözümleme çalışması: Mevcut Sistemin İncelenmesi Önerilen Sistemin Modellemesi Yazılım Mühendisliği
Mevcut Sistemin İncelenmesi Bu çalışmada temel amaç yazılım geliştirilecek olan sistemin anlaşılması ve tanınmasıdır. Bu amaçla görüşme yapma, gerekirse anket yapma yöntemleri kullanılır. Yapılacak görüşmelerde, mevcut sistemdeki tüm işlemler, girdi, işlev, çıktı ve diğer işlevlerle olan ilişkiler sorgulanır. İlgili yönerge, kanun ve yöntemler kullanıcıdan edinilir. İnceleme işleminin belirtilmesi amacıyla çeşitli yöntemler kullanılır. İnceleme sonucu elde edilen bulgularla ilgili olarak kullanıcıdan geri bildirim alınır. Yazılım Mühendisliği
Önerilen Sistemin Modellemesi Mevcut sistemin modellenmesinden sonra, bilgisayar ortamında işlerin yapılabilmesi amacıyla önerilecek sistemin modeli oluşturulur. Bu model, önerilen sistemin işlevsel yapısı, veri yapısı ve kullanıcı ara yüzünü içerir. Bu model aynı zamanda “mantıksal model” olarak da tanımlanır. Mantıksal model, önerilen sistemin veri yapısını ve süreç yapısını hem genel hem de ayrıntılı olarak tanımlar. Yazılım Mühendisliği
Gereksinim Verisi Toplama Mevcut sistemin incelenmesi sırasında kullanılabilecek temel yöntemler: Soru Sorma Psikolojik Türetme Teknikleri İstatistiksel Teknikler Yazılım Mühendisliği
Soru Sorma Yöntemi İkiye ayrılır: Karşılıklı Görüşme Anket Uygulaması Sorular, dağınık olarak değil, yapısal bir biçimde sorulmalıdır. Bu nedenle aşağıdaki üç tarzdan biri seçilmelidir. Yazılım Mühendisliği
Anket Uygulaması Anket yöntemi, bir başka veri toplama yöntemidir. Kullanıcı sayısının fazla olduğu durumlarda, eğilimleri ve davranış biçimlerini saptamak amacıyla yapılır. Genelde yazılı test biçiminde hazırlanır. Bir anket sorusu temel olarak soru kısmı ve yanıt kısmı olmak üzere iki kısımdan oluşur. Yanıt kısmı da tanımlama ve ölçek kısmı olmak üzere iki bölümden oluşur. Yazılım Mühendisliği
Psikolojik Türetme Teknikleri Özellikle, belirsizliğin fazla olduğu ve zayıf yapılı ortamlarda, bilgi edinebilmek amacıyla insan psikolojisine dayalı teknikler kullanılır. Bu teknikler temelde görüşme ve ankete dayalı tekniklerdir. Diğerlerinden farkı, bilgi üretmek için psikolojide bilinen "üçleme" tekniğini kullanmasıdır. Bazı diğer psikolojik türetme yöntemleri, karar verme ortamlarında bilgi gereksinimlerini saptamak amacıyla algılama haritaları ve neden-etki çizelgeleri kullanmaktadır. Yazılım Mühendisliği
İstatistiksel Teknikler Verinin yoğun ve veri hacminin yüksek olduğu ortamlarda, verinin özelliklerini belirlemek amacıyla istatistiksel teknikler kullanılır. Bu yöntemlerden en çok bilinen ikisi Örnekleme Yöntemi ve PIRA Modelidir. Örnekleme yöntemi, bir topluluk içerisinden, sistematik yolla temsili bir örnek alma olarak tanımlanır. Amaç, veri toplama hızını arttırmak ve verilerdeki çelişkileri önlemektir. PIRA (Personal, Interactive, Report and Analysis) Modeli, bilgi gereksinimlerinin tanımlarını belirli normlara bağlı olarak açıklamayı hedefler. Kişilerin bilgiye dayalı tercihlerini belirlemek amacıyla kullanılır. Yazılım Mühendisliği
Veri Modelleme Yöntemleri Önerilen sistemin mantıksal modelinde veri yapısını açıklamak için “Veri Modelleme” yöntemleri kullanılmaktadır. Bu yöntemler, veri yapısını en soyut düzeyden en ayrıntı düzeye kadar çeşitli düzeylerde tanımlamayı amaçlar. Sistem çözümleme aşamasında en yaygın olarak kullanılan veri modelleme yöntemleri iki tanedir: Nesne İlişki Şemaları: Veri yapısını en soyut düzeyde tanımlamak amacıyla kullanılır. Veri Sözlüğü: Veri yapısına ilişkin ayrıntı bilgileri içerir. Yazılım Mühendisliği
Nesne-İlişki Şemaları Yazılım Mühendisliği
Nesne-İlişki Şemaları Bir veri nesnesi, üç temel özelliği ile bilinir: Veri nesnesi varlığının adı: Veri nesnesi varlığını tanımlayan özelliktir. Veri nesnesi varlığının özellikleri Veri nesnesi varlığının diğer veri nesnesi varlıklarına referansı: Veri nesnesi varlığının diğer veri nesneleri ile olan ilişkisinin belirtilmesi amacıyla kullanılır. Bu amaçla her bir veri nesnesini tek olarak belirleyen bir belirteç (anahtar) kullanılır. Söz konusu anahtar veri nesnesi varlığının ad özellikleri arasında yer alır. Yazılım Mühendisliği
Nesne-İlişki Şeması Örnek Araba ve İnsan adlı iki veri nesnesi ele alalım. Yazılım Mühendisliği
Nesne İlişkileri Veri nesneleri arasındaki ilişkiler bire bir (1-1), bir den çoğa (1-N ya da N-1) ya da çoktan çoka (M-N) tanımlanabilir. Örneğin: 1 - 1 ilişki : Bir İnsan ancak bir Araba sahibi olabilir. 1 - N ilişki: Bir İnsan birden çok Araba sahibi olabilir: M - N ilişki: Birden çok İnsan birden çok Araba sahibi olabilir. Yazılım Mühendisliği
Veri Sözlüğü Nesne ilişki şemalarında belirtilen nesne özelliklerinin ayrıntılı tanımları Veri Sözlüğünde yer alır. Söz konusu ayrıntılı tanımlar genel olarak: Veri Adı Veri Eş-adı (Aynı veri için kullanılan diğer ad) Nerede/nasıl kullanıldığı İçerik tanımı türünde bilgileri içerir. Örnek: Kişi telefon bilgisinin tanımlanması telefon no = [ yer kodu | numara ] yer kodu = [ 212 | 242 | ….. | 312 ] numara = * yedi basamaklı herhangi bir sayı * Yazılım Mühendisliği
Veri Sözlüğü Yazılım Mühendisliği
Süreç/İşlem Modelleme Yöntemleri Süreç/İşlem modelleme yöntemleri, geliştirilecek sistemin süreç ya da işlemlerini ve bu süreçler arasındaki ilişkileri tanımlamak amacıyla kullanılan yöntemlerdir. Veri Akış Diyagramları (VAD) Süreç Tanımlama Dili (STD) Karar Tabloları Karar Ağaçları Nesne Şemaları Yazılım Mühendisliği
Veri Akış Diyagramları Veri Akış Diyagramları kullanılarak geliştirilecek sistemin mantıksal modeli, 'Yukarıdan Aşağıya' bir yaklaşımla oluşturulur. Sistem önce en genel biçimiyle ele alınır, yalnızca dışsal ilişkileri incelenir. Daha sonra, sistemin iç yapısındaki süreçler ve bu süreçler arasındaki ilişkiler belirlenen bir ayrıntı düzeyine kadar modellenir. 4 temel sembol kullanılarak oluşturulur. Yazılım Mühendisliği
Veri Akış Diyagramları Mantıksal veri yığınlarını göstermek amacıyla ucu açık dikdörtgenler kullanılmaktadır. Süreçler arası, süreçler ile veri kaynakları ve veri depoları arasındaki veri akış ilişkileri göstermek amacıyla oklar kullanılır. Temel olarak bir sistemin mantıksal modelinin süreç yapısı, üç tür Veri Akış Diyagramı çizilerek elde edilir. Yazılım Mühendisliği
(DB: Dış birim, BS: Bilgi Sistemi) Kapsam Diyagramı (DB: Dış birim, BS: Bilgi Sistemi) VAD, bilgi sisteminin durağan yapısını gösterir. VAD, bilgi sisteminin süreçlerini, bu süreçler arasındaki veri akış ilişkilerini gösterir. VAD bilgi sistemi süreçlerinin zamana ilişkin durumunu ve bu durumla ilgili bilgileri göstermez. Yazılım Mühendisliği
(S: Süreç, VD: Veri Deposu, a,b,c,d,e,f,g,h,i,k : Veri akışları) Genel Bakış Diyagramı (S: Süreç, VD: Veri Deposu, a,b,c,d,e,f,g,h,i,k : Veri akışları) VAD, bilgi sistemi süreçleri ile ilgili olan kurum birimlerini ya da dış birimleri bilgi kaynakları olarak gösterir. VAD, bilgi sistemi süreçlerinin kendi aralarındaki "karar" ilişkisini göstermez. Yazılım Mühendisliği
Detay Ayrıntı Diyagramı (a,b,c,l,m : Veri akışları) VAD, bilgi sistemi için gerekli olan ana veri depolarının neler olduğunu ve hangi süreçler tarafından kullanıldığını gösterir. VAD, gerek bilgi sistemi süreçleri, gerek veri akışları gerekse bilgi kaynakları ve bilgi depoları için ayrıntı içermez. Yazılım Mühendisliği