340 likes | 820 Views
Yazılım Tasarım ve Mimarisi. Hafta 1. Yazılım Tasarımı Nedir?. Yazılım tasarımı , bir sorunun yazılım çözümü için, sorun giderme ve planlama aşamasıdır . Yazılımın özellikleri kararlaştırıldıktan sonra yazılım geliştiricileri sorun için bir çözüm geliştirir.
E N D
Yazılım Tasarım ve Mimarisi Hafta 1
Yazılım Tasarımı Nedir? • Yazılım tasarımı, bir sorunun yazılım çözümü için, sorun giderme ve planlama aşamasıdır. • Yazılımın özellikleri kararlaştırıldıktan sonra yazılım geliştiricileri sorun için bir çözüm geliştirir.
Yazılım Tasarımı Niçin Gereklidir? • Bir yazılım tasarımının ilk hedefi gereksinimleri karşılamak için yeterli olmalıdır. • Genellikle yazılım tasarımlarında gereksinimleri ve değişiklikleri önceden tahmin etmek gerekir • Yazılım tasarımının bir diğer hedefi sağlamlık: Ürünün geniş bir çeşitliliği olan girişi tahmin etmek.
Yazılım Tasarımı Niçin Gereklidir? • Tasarım bir iletişim şeklidir. • En basit haliyle tasarımcıların bir düşüncenin sonucu bu belgeler o ne tasarlamış bilmesi gerektiğinde ve bundan sonra kendine tekrar iletişim kurmak için kullanılır. • Bu tasarımcı iyi ise ihtiyaç duyulan tek kişi olabilir. • Ama bir proje genellikle ömür boyunca birkaç kişi gerektirir.
İyi bir yazılım mimarı ve tasarımcısı uygulama genel bir düzeyde nasıl çalışacağını gösteren net bir zihinsel model oluşturur, daha sonra bu zihinsel modelle uygun bir ayrışma geliştirir.
UML Nedir? • Yazılım mühendisliği tasarımı açıklayan bir temel araç olarak UnifiedModeling Language(UML) kullanır. • UML endüstriyel olarak geliştirilmiş ve standartlaşmış bir evrensel modelleme biçimi ve dilidir. • Fakat UML asla bir programlama dili değildir!
UML ye Neden Gerek Vardır? • Günümüzde büyük ölçekli yazılımlar deneme yanılma yöntemiyle yazılacak boyutu çoktan aşmış durumda • Yazılım üretiminde başarı %16 seviyelerinde… • İhtiyaçların , kaynakların , proje planının paylaşılması lazım
UML ye Neden Gerek Vardır? • Görsel ve metinselnotasyonlar kullanarak sistemi tüm boyutlarıyla modelleyebileceğimiz ve tasarımını gerçekleştirebileceğimiz bir araç gerekli... • Modellenmiş ve dokümante edilmiş bir yazılımı her yerde ve ortamda tanıtabilir ve kolayca anlatabiliriz.
UML nin Faydaları Nelerdir? • Tasarım ve analizi yapılmış olduğu için daha kolay kodlama yapılır. • Hatalar minimuma indirilir • Tekrar kullanılabilir kod sayısı epey artabilir • Bellek kullanımı daha verimli olur • Programın kararlılığı artar(Senaryoların yardımıyla) • Takım çalışması için harika bir yardımcıdır
UML Tasarlanan sistemin 3 önemli yönünü modeller • Fonksiyonel (işlevsel) model * Kullanıcının bakışı ile sistem (kullanım şekilleri) UML Use Case Diagrams • Nesne modeli * Sistemin yapısı: nesneler, özellikleri, işlemler, yapısal ilişkiler UML Class Diagrams • Dinamik model * Sistemin iç işleyişi UML Sequence, Activity, State-Chart Diagrams
Use Case Diyagramları • Sınıfların ve sistemin zamanla değişimini gösteren diyagramlara ‘USE CASE’ diyagramları denmektedir. • Bu diyagramlar Actors ve Use Case 'lerarasındakiilişkilerdenoluşmaktadır.
Use Case modelinioluşturandiğerönemlibiryapıisesenaryolardır. • Senaryolarkullanıcıtarafındanbaşlatılançeşitliolaylardizisidir.
Aktör yani kullanıcı Use Case modelinde bir Use Case 'i başlatır ve sonuç olarak bir değeri başka bir kullanıcıya verir. • Use Case 'ler elips şeklinde gösterilir. • Kullanıcıların altında kullanıcıların adı bulunur. • Kullanıcı ve Use Case arasındaki ilişkiyi belirtmek için ise düz bir çizgi çizilir.
Örnek • Bir web sayfasına gelen bir kullanıcının neler yapabileceğini usecase diyagramlarıyla göstermeye çalışalım. • Siteye gelen bir kullanıcı kayıtsız şartsız makale başlıklarını görebilmektedir. • Online olan kullanıcı Siteyi tavsiye edebilir, siteye üye olabilir , kitapları inceleyebilir. • Ancak makale okuması ve kaynak kod indirebilmesi için siteye üye olup sisteme giriş yapmalıdır. • Siteye bağlanan bir kullanıcının site üzerindeki hareketlerini belirtir diyagram şekildeki gibidir.
Class Diyagramları • UML’de sınıflar OOP mantığından yola çıkılarak düşünülmüştür • Sınıfların bir adı , özellikleri (attributes) ve işlevleri(functions) vardır.
Örnek • Öğrenci • Alanlar (fields) • String ad • StringöğrenciNo • int yıl • Metotlar (methods) • booleandersEkle(StringdersKodu,Stringdönem) • booleandersSil(StringdersKodu, String dönem) • booleandanışmanAta(Danışman yeniDanışman)
Erişim • Public: diğer sınıflar erişebilir • Protected: aynı paketteki diğer sınıflar ve bütün alt sınıflar tarafında erişilebilir • Package: aynı paketteki diğer sınıflar tarafında erişilebilir • Private: yalnızca içinde bulunduğu sınıf tarafından erişilebilir (diğer sınıflar erişemezler)
UML Paket (package) gösterimi • Birbirleriyle ilişkili sınıflar bir paket (package) içine yerleştirilirler. • Paket isimler küçük harflerle yazılır.
İlişkilerin ve YapılarınModellenmesi • Inheritance (kalıtım) • Association(ilişkili) • Aggregationve Composition (agregasyonve kompozisyon) • Dependency(bağımlılık)
Inheritance (kalıtım-miras) • UML notasyonu Ara yüzlerin uygulanması Ara yüzlerin Genişletilmesi Sınıfların Genişletilmesi
Association (ilişkili) • Sınıflar arası ikili (binary) ilişkiler
Aggregation ve Composition(agregasyonve kompozisyon) • Association’ının(birleşmenin )özelbirhali • Parça-Bütün (part-whole)ilişkisini temsil eder • Parça veya bütün’ün hayat süresi konusunda bir yaptırımı yoktur
Aggregation ve Composition • Aggregasyonun daha güçlü bir hali komposizyon (composition) dur. • Kompozisyonda, parçalar bütün olmadan olmazlar (ortadan kalkarlar)
Aggregation/Composition : Örnek • Fakülte olmadan bölümler olamaz (kompozisyon) • Üniversite olmazsa fakülteler de olamaz (kompozisyon) • Bölüm olmadan öğretim üyeleri ve öğrenciler olabilir (agregasyon)
Bağımlılık (dependency) • Bir sınıfın diğer bir sınıfa bağlı olması • Örneğin: bir sınıfın diğer bir sınıfı “kullanması” (use) (sınıfın diğer sınıfın metotlarını çağırması gibi, yada o sınıftan bir nesneyi döndürmesi gibi..