1 YMT312 Yazılım Tasarım ve MimarisiMİMARİ TASARIM Bölüm - 9 YMT312 Yazılım Tasarım ve Mimarisi
2 Bu Haftaki Konular Genel Bir Yazılım Mühendislik Tasarımı Süreci….…………………….…...7 Mimari Tasarıma Etki Eden Faktörler……………….…….… Mimari Tasarım Süreci……………………………………………………………….12 Mimari Spesifikasyon Notasyonları………………………………………….…17 Kutu-ve-çizgi diyagramları ………………………………………..…………….…25 Ortak UML Notasyonları………………………………………………………….…28 Sağlanan ve Gereksinilen Arabirimler………………………..…………….…39 Mantıksal ve Fiziksel Mimari…………………………………………..……….…44 Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
3 YMT312 Yazılım Tasarım ve MimarisiGENEL BAKIŞ KISIM 1 – Mimari Tasarım KISIM 2 – Mimari Modelleme Notasyonları Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
4 YMT312 Yazılım Tasarım ve MimarisiKISIM 1 Mimari Tasarım Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
5 YMT312 Yazılım Tasarım ve MimarisiAmaçlar Mimari tasarım, ürün tasarımı ve ayrıntılı tasarım arasındaki ilişkileri tartışmak Mimari tasarıma etki eden faktörleri listelemek Mimari tasarım sürecini gözden geçirmek Mimari Tasarım Dokümanı’nın (SAD) içeriğini sunmak Kalite niteliklerini ve bunların mimari tasarımdaki rolünü açıklamak Mimari tasarım spesifikasyonu notasyonlarını ve özellikle arabirimler (interface) için olanlarını araştırmak Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
6 YMT312 Yazılım Tasarım ve Mimarisiİçerik Mimari tasarım, ürün tasarımı, ve ayrıntılı tasarım Mimari tasarımı etkileyen faktörler Mimari tasarım süreci Kalite nitelikleri Mimari tasarım spesifikasyonları Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
7 Genel Bir Yazılım Mühendislik Tasarımı SüreciDoç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
8 Mimari Tasarım (Architectural Design)Mimari tasarım, programın büyük parçalarının, bunların sorumluluklarının, özelliklerinin, ve arabirimlerinin; ve bu parçalar arasındaki ilişki ve etkileşimlerin belirlenmesi aktivitesidir. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
9 Ürün Tasarımında Mimari TasarımMimariye ürün tasarımı sırasında da gereksinim duyulur Fizibiliteyi değerlendirmek için Paydaşları (stakeholders) gereksinimlerinin karşılanabileceğine ikna etmek için Fayda-maliyet analizi yapmak için Projeyi planlamak için Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
10 Mimari Tasarım ve Ayrıntılı TasarımMimari tasarım ve ayrıntılı tasarım arasındaki ayrım bazen yeterince belirgin olmayabilir. “Büyük” bir program parçası ne demek? Mimari spesifikasyonları ne kadar soyut (abstract) olmalı? Çok küçük bir programın mimarisi nedir/nasıldır? Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
11 Mimari Tasarıma Etki Eden FaktörlerKod kütüphaneleri ve diğer kullanılabilir varlıklar (assets) Kurumsal yapı (Organizational structure) Tasarımcıların bilgi ve deneyimi Mimariler de kişileri ve kurumları etkileyebilir Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
12 YMT312 Yazılım Tasarım ve MimarisiMimari Tasarım Süreci Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
13 Mimari Tasarım Dokümanı (SAD)Ürüne Genel Bakış (Product Overview)—Ürün vizyonu, paydaşlar, hedeflenen pazar, vs. Mimari Modeller (Architectural Models)—Statik ve dinamik çeşitli modellere ilişkin spesifikasyonlar DeSCRIPTR Modellerin Nasıl Eşleştiği (Mapping Between Models)— Modellere ilişkin tablolar ve yazılı bilgiler Mimari Tasarımın Gerekçesi (Architectural Design Rationale)—Zor, çok önemli, kafa karıştıcı, ve değiştirilmesi zor tasarım kararlarına dair açıklamalar Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
14 Kalite Nitelikleri (Quality Attributes)Bir kalite niteliği, müşteri gereksinimlerinin karşılanması bakımından önemli olan işlevlerinden bağımsız olarak, bir yazılım ürününün bir karakteristiği veya özelliğidir. İşlevsel olmayan gereksinimler Mimarilerin kalite nitelikleri üzerinde büyük etkisi vardır Geliştirmeye veya operasyona yönelik nitelikler Kalite niteliklerini kullanmak için teknikler (daha sonra) Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
15 Geliştirme Nitelikleri (Development Attributes)Bakım Yapılabilirlik (Maintainability)—Ürünün hatalarının düzeltilebilme, iyileştirilebilme ve başka platforma taşınabilme (port) kolaylığı Genellikle altbölümlere ayrılır Yeniden Kullanılabilirlik (Reusability)—Ürünün parçalarının başka ürünlerin geliştirilmesinde kullanılabilirliğinin derecesi Diğer Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
16 Operasyonel Nitelikler (Operational Attributes)Performans (Performance)—Ürün işlevlerinin zaman ve kaynak limitleri içerisinde sağlanabilme becerisi Uygunluk (Availability)—Kullanıma hazır bulunma durumu Güvenilirlik (Reliability)—Normal çalışma koşullarında gereksinimlere uygun davranabilme becerisi Güvenlik (Security)—Kötü niyetli uygulamalar ve etkiler karşısında zarar görmeye ya da zarar vermeye karşı koyabilme becerisi Diğer Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
17 Mimari Spesifikasyon NotasyonlarıSpesifikasyon Türü Kullanışlı Notasyonlar Decomposition Box-and-line diagrams, class diagrams, package diagrams, component diagrams, deployment diagrams States State diagrams Collaborations Sequence and communication diagrams, activity diagrams, box-and-line diagrams, use case models Responsibilities Text, box-and-line diagrams, class diagrams Interfaces Text, class diagrams Properties Text Transitions Relationships Box-and-line diagrams, component diagrams, class diagrams, deployment diagrams, text Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
18 Arabirimler (Interfaces)Bir arabirim varlıklar arasındaki iletişim sınırıdır. Bir arabirim spesifikasyonu, bir varlığın içinde bulunduğu ortam ile haberleşmek için kullandığı mekanizmayı tanımlar. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
19 Arabirim SpesifikasyonlarıSözdizim (Syntax)—İletişim ortamının elemanları ve bunların mesaj oluşturmak için nasıl kombine edildiği Semantik (Semantics)—Mesajların anlamları Pragmatik (Pragmatics)—Mesajların ilgili bağlam içerisinde görevleri yerine getirmek için nasıl kullanıldığı Arabirim spesifikasyonları bir modül ve onun içinde bulunduğu ortamla yaptığı iletişimin sözdizim, semantik, ve pragmatiklerini içermelidir. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
20 Arabirim Spesifikasyonu ŞablonuSağlanan Servisler (Services Provided) Sağlanan her bir servis için belirtilmelidir: a) Sözdizim (Syntax) b) Semantik (Semantics) c) Pragmatik (Pragmatics) Gereksinilen Servisler (Services Required) Gereksinilen her bir servis adıyla belirtilmelidir. Servis açıklaması da eklenebilir. Kullanım Kılavuzu (Usage Guide) Tasarım Gerekçesi (Design Rationale) Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
21 Semantik (Semantic) SpesifikasyonuBir önkoşul (precondition) bir aktivite veya operasyonun başlangıcında sağlanması (doğru olması) gereken bir koşuldur. Bir sonkoşul (postcondition) bir aktivite veya operasyonun bitiminde sağlanması (doğru olması) gereken bir koşuldur. Önkoşullar ve sonkoşullar bir operasyon gerçekleştiğinde ne olması gerektiğini yani operasyonun semantiklerini belirtirler. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
22 YMT312 Yazılım Tasarım ve MimarisiKISIM 2 Mimari Modelleme Notasyonları Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
23 YMT312 Yazılım Tasarım ve MimarisiAmaçlar Mimari modellemede kullanılan çeşitli notasyonları göstermek Box-and-line diagrams UML package diagrams UML component diagrams UML deployment diagrams Ortak UML notasyonlarını göstermek Notes Constraints Properties Stereotypes Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
24 YMT312 Yazılım Tasarım ve Mimarisiİçerik Kutu-ve-çizgi diyagramları (Box-and-line diagrams) Ortak UML notasyonları Paketler ve paket diyagramları (Packages and package diagrams) Bileşenler ve bileşen diyagramları (Components and component diagrams) Nodes, artifacts, and deployment diagrams Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
25 Kutu-ve-Çizgi Diyagramları (Box-and-Line)Çizgilerle birleştirilen simgeler (kutular, icon’lar) şeklindedir Oluşuma ilişkin kurallar yoktur Hem statik hem de dinamik modelleme için kullanılırlar Lejant (gösterge) eklenmesi iyi olur Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
26 Kutu-ve-Çizgi Diyagramı ÖrneğiDoç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
27 Kutu-ve-Çizgi Diyagramı KurallarıKutu-ve-çizgi diyagramlarını yalnızca standart notasyonların yetersiz kaldığı durumlarda kullanın. Kutuları ve çizgileri basit ve sade tutun. Farklı şeyler için farklı semboller/simgeler kullanın. Farklı diyagramlarda sembolleri tutarlı bir şekilde kullanın. Elemanları isimlendirirken gramer kurallarına uyun. Statik ve dinamik elemanları birlikte kullanmayın. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
28 UML’de Notlar ve KısıtlarNot (Note)—Model elemanlarına kesik çizgiyle bağlanan, bir köşesi kıvrılmış bir kutu İsteğe bağlı herhangi bir metin içerebilir Yorumlar ve belirtimler için kullanılır Kısıt (Constraint)—Model elemanları tarafından belirtilen varlıklar için sağlanması gereken koşulu belirten bir ifade Küme parantezi içinde yazılır { } Model elemanlarının yanında Çeşitli model elemanlarını bağlayan kesik çizgilerin yanında Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
29 UML’de Özellikler ve StereotiplerÖzellik (Property)—Bir model elemanı tarafından belirtilen bir varlığın karakteristiği Küme parantezi içinde etiketli değerlerin listesi Etiketli değer: etiket = değer True olan Boolean özellikler için değer ve eşittir simgesi yazılmayabilir. Stereotip (Stereotype)—Daha spesifik anlam verilen bir model elemanı Simgeler, renkler, ve grafiklerle gösterilir Stereotip anahtar sözcükleri özel çift tırnaklar arasına yazılır, örneğin «interface» Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
30 Ortak Elemanlara ÖrnekDoç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
31 UML Bağımlılık (Dependency) İlişkileriD ve I iki varlık olmak üzere; I'da (bağımsız - independent) olan bir değişiklik D'yi (bağımlı - dependent) etkiliyorsa, D ve I arasında bir bağımlılık ilişkisi (dependency relation) vardır. Örneğin: D I’yı kullanır, D derlenebilmek için I’ya bağımlıdır, D I’yı import eder. Bağımlılık oklarıyla (dependency arrow) temsil edilir: stereotipli kesik çizgili oklar. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
32 Bağımlılık İlişkisine ÖrnekDoç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
33 UML Paketleri (Packages)Bir UML paketi (package), paket üyeleri (package member) olarak adlandırılan model elemanlarının bir koleksiyonudur. Paket sembolu olarak dosya klasörü kullanılır. Eğer gövde kısmı doluysa paket adı sekmeye, gövde dolu değilse gövde içinde değilse gövdeye yazılır Üyeler gövde içinde ya da bir kapsama sembolü (çember içinde artı işareti) kullanılarak gösterilir Genellikle import veya export bağımlılık oklarıyla bağlanırlar. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
34 YMT312 Yazılım Tasarım ve MimarisiPaket Diyagramları Temel olarak paket sembolleri kullanılarak oluşturulan diyagramlara UML paket diyagramı denir. Kullanım alanı: Modüllerin, parçalarının, ve onların ilişkilerinin statik modellerinin gösterimi Mimari modelleme Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
35 Paket Diyagramı ÖrneğiDoç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
36 Yazılım Bileşenleri (Components)Bir yazılım bileşeni yeniden kullanılabilir ve değiştirilebilir bir yazılım parçasıdır. Bileşen-tabanlı yazılım geliştirme, ürünlerin satınalınabilir ya da özel olarak geliştirilmiş yazılım bileşenleri kullanılarak tasarlandığı ve geliştirildiği bir yaklaşımdır. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
37 UML Bileşen DiyagramlarıBir UML bileşeni, iyi tanımlanmış arabirimlere sahip, modüler, ve başkasıyla değiştirilebilir (replacable) bir birimdir. Bileşen sembolü isim içeren bir dikdörgendir «component» ile stereotipli veya sağ üst köşesinde bileşen sembolü olabilir Bir UML bileşen diyagramı bileşenleri, ortamlarıyla ilişkilerini, ve iç yapılarını gösterir. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
38 UML Arabirimleri (Interfaces)Bir UML arabirimi (interface) public tanımlı özellikler ve soyut (abstract) operasyonların adlandırılmış bir koleksiyonudur. Stereotipli bir sınıf sembolüyle temsil edilir (daha sonra) Özel top ve soket sembolleriyle temsil edilir. Not: arabirim (interface) sözcüğünün buradaki anlamı daha önce gördüğümüz iletişim sınırı anlamından farklıdır. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
39 Sağlanan ve Gereksinilen ArabirimlerBir sınıf veya bileşen bir arabirimin tüm özelliklerini kendine dahil eder ve arabirimin tüm operasyonlarını implemente ederse, bu sınıf veya bileşen bu arabirimi gerçekliyor/gerçekleştiriyor (realize) demektir. Sağlanan (Provided) arabirim—Sınıf veya bileşen tarafından gerçeklenir Bir top veya lolipop sembolüyle temsil edilir Gereksinilen (Required) arabirim—Bir sınıf veya bileşen tarafından ihtiyaç duyulur Bir soket sembolüyle temsil edilir Montaj konnektörü (assembly connector) arabirimleri birbirine bağlar. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
40 Arabirim Sembollerine ÖrneklerDoç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
41 Bileşenlerin İç YapısıBileşenler başka bileşenleri veya sınıfları içerebilirler ve içsel yapılarını gösterebilirler. Bir delegasyon konnektörü (delegation connector), bir bileşen arabirimini bu arabirimi gerçekleyen veya kullanan bir veya daha fazla içsel sınıfa veya bileşene bağlar. Düz çizgili oklar «delegate» ile stereotipli Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
42 Bileşenlerin İç Yapısına ÖrnekDoç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
43 Bileşen Diyagramı KullanımıYazılım bileşenlerinin statik modellerinin gösteriminde (yeniden kullanılabilir ve başkasıyla değiştirilebilir parçalar) Program bileşenlerinin modellenmesinde Mimari modeller Ayrıntılı tasarım modelleri Ortam ile ilişkiler Bileşenlerin içsel yapısının modellenmesinde kullanılır. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
44 Mantıksal ve Fiziksel MimariMantıksal (Logical) mimari—Bir ürünün temel parçalarının ve onların ilişkilerinin çalışan kod halinde gerçek bir makinede implementasyonundan daha soyut bir konfigürasyonu Fiziksel (Physical) mimari—Bir ürünün işlemsel kaynaklar üzerinde kod ve veri dosyaları halinde bulunmasının ve çalışmasının gerçekleştirilmesi UML kurulum (deployment) diyagramı fiziksel mimariyi modeller. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
45 UML Artefaktları (Artifacts)Bir UML artefaktı (artifact) geliştirme veya işletim sırasında kullanılan veya üretilen verinin herhangi bir fiziksel temsilidir. Örneğin: dosyalar, dokümanlar, program kodları, veritabanı tabloları, vb. Artefaktların tipleri ve örnekleri (instance) vardır İsim içeren dikdörtgenle temsil edilir «artifact» ile stereotiplidir veya sağ üst köşesinde artefakt sembolü vardır Örneklerin isimlerinin altı çizgilidir, tiplerin isimlerini altı çizgili değildir Artefaktlar mantıksal varlıkların gerçeklenmiş şekilleridir (sınıflar, bileşenler, vb.) Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
46 YMT312 Yazılım Tasarım ve MimarisiUML Düğümleri (Nodes) Bir UML düğümü (node) işlemsel (computational) bir kaynaktır. Cihaz (Device)—Bir bilgisayar gibi fiziklsel bir işlem birimidir İşletim ortamı (Execution environment)—İşletim sistemi veya bir dil yorumlayıcısı gibi bir sanal makineyi implemente eden bir yazılım sistemidir UML’de kutu veya kütük (slab) sembolüyle temsil edilir «device» veya «execution environment» ile stereotiplidir Tipler ve örnekler (instance) Tiplerin isimleri vardır Örneklerin name : type formunda altı çizgili etiketleri vardır İsim veya tipten biri yazılmayabilir, ama ikisi birden değil Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
47 Düğüm Sembolü ÖrnekleriDoç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
48 Kurulum (Deployment) DiyagramlarıBir UML kurulum diyagramı, işlemsel kaynakları, aralarındaki iletişim yollarını, ve üzerlerinde bulunan ve işletilen artefaktları modeller. Kullanım yeri: Sistemde kullanılan gerçek ve sanal makineleri göstermek Makineler arasındaki iletişim yolunu göstermek Sistemi oluşturan program ve veri dosyalarını göstermek Yerleşim (Residence) İşletim (Execution) Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
49 Kurulum Diyagramı Kurallarıİşlemsel kaynaklar düğümlerdir İletişim yolları düğümler arasındaki düz çizgilerdir Etiketlenebilir Çoklukları ve rol isimleri olabilir Artefakt sembolleri Düğüm sembollerinin içinde görünebilir Düğüm sembollerinin içinde listelenebilir «deploy» stereotipli bağımlılık oklarıyla düğüm sembollerine bağlanabilir Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
50 Kurulum Diyagramı ÖrneğiDoç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
51 YMT312 Yazılım Tasarım ve MimarisiÖzet Mimari tasarım ürünün fizibilitesinin değerlendirilebilmesi amacıyla genellikle ürün tasarımı sırasında başlamalıdır. Mimari tasarımdan ayrıntılı tasarıma doğru soyutlamanın (abstraction) derecesi azalır. Bir mimarı tasarım dokümanı (SAD) ürüne genel bir bakış, mimari spesifikasyonlar, ve tasarım gerekçesi gibi bölümlerden oluşur. Mimari kararların kalite nitelikleri üzerinde büyük etkisi vardır. Mimari modelleme için kullanılan çeşitli notasyonlar mevcuttur. Arabirim spesifikasyonları, iletişim ortamına dair tanımlamalar içermelidir Sözdizim (Syntax), Semantik (Semantics), ve Pragmatik. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
52 YMT312 Yazılım Tasarım ve MimarisiÖzet Kutu-ve-çizgi diyagramları statik ve dinamik mimari model oluşturmak için kullanılır. Notlar, kısıtlar, özellikler, ve stereotipler herhangi bir UML diyagramında kullanılabilir. Paket diyagramları modulleri ve modüllerin parçalarını modellemek için kullanılır. Bileşen diyagramları yazılım bileşenlerini modellemek için kullanılır. Kurulum diyagramları fiziksel mimarileri modellemek için kullanılır. Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
53 YMT312 Yazılım Tasarım ve MimarisiSorular Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
54 YMT312 Yazılım Tasarım ve MimarisiÖdevler Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi
55 YMT312 Yazılım Tasarım ve MimarisiKaynaklar “Software Engineering A Practitioner’s Approach” (7th. Ed.), Roger S. Pressman, 2013. “Software Engineering” (8th. Ed.), Ian Sommerville, 2007. “Guide to the Software Engineering Body of Knowledge”, 2004. ” Yazılım Mühendisliğine Giriş”, TBİL-211, Dr. Ali Arifoğlu. ”Yazılım Mühendisliği” (2. Basım), Dr. M. Erhan Sarıdoğan, 2008, İstanbul: Papatya Yayıncılık. Kalıpsiz, O., Buharalı, A., Biricik, G. (2005). Bilgisayar Bilimlerinde Sistem Analizi ve Tasarımı Nesneye Yönelik Modelleme. İstanbul: Papatya Yayıncılık. Buzluca, F. (2010) Yazılım Modelleme ve Tasarımı ders notları (http://www.buzluca.info/dersler.html) Hacettepe Üniversitesi BBS-651, A. Tarhan, 2010. Yazılım Proje Yönetimi, Yrd. Doç. Dr. Hacer KARACAN YZM211 Yazılım Tasarımı – Yrd. Doç. Dr. Volkan TUNALI Doç. Dr. Resul DAŞ YMT312 Yazılım Tasarım ve Mimarisi