Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, UML ile Modelleme, B ölüm 1.

Benzer bir sunumlar


... konulu sunumlar: "Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, UML ile Modelleme, B ölüm 1."— Sunum transkripti:

1 Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, UML ile Modelleme, B ölüm 1

2 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2 Ders Özeti Karmaşıklıkla başa çıkmanın üç yolu Soyutlama ve Modelleme Parçalara Ayırma (Decomposition) Hiyerarşi UML notasyonuna giriş İlk bakış: Senaryo diyagramları (Use case diagrams) Sınıf diyagramları (Class diagrams) Sıralama diyagramları (Sequence diagrams) Durum diyagramları (Statechart diagrams) Aktivite diyagramları (Activity diagrams)

3 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3 Aşağıdaki figürün problemi nedir?

4 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4 Soyutlama - Abstraction Karmaşık sistemleri anlamak zordur fenomeni Kısa hafızamız aynı anda 7+-2 parçadan daha fazlasını aynı anda tutamaz -> beynin sınırları Telefon numaram:

5 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5 Soyutlama - Abstraction Gruplama: Objeleri gruplamak karmaşıklığı azaltıyor 4 grup: Ülke-kodu, Alan-kodu, Local-Prefix, İç hat-Nr Karmaşık sistemleri anlamak zordur fenomeni Kısa hafızamız aynı anda 7+-2 parçadan daha fazlasını aynı anda tutamaz -> beynin sınırları Telefon numaram:

6 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6 Soyutlama - Abstraction Telefon Numarası Ülke - kodu Alan - kodu Local-Prefix İç Hat-Nr Karmaşık sistemleri anlamak zordur fenomeni Kısa hafızamız aynı anda 7+-2 parçadan daha fazlasını aynı anda tutamaz -> beynin sınırları Telefon numaram: Gruplama: Objeleri gruplamak karmaşıklığı azaltıyor 4 grup: Ülke-kodu, Alan-kodu, Local-Prefix, İç hat-Nr

7 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7 Soyutlama - Abstraction Soyutlama gereksiz detayları ihmal etmemizi sağlar Soyutlamanın iki tanımı: Soyutlama fikirlerin objelerden uzaklaştırıldığı düşünce prosesleridir Soyutlama bir aktivite Soyutlama bir düşünce prosesi sonucunda objelerden uzaklaşmış sonuç fikirdir Soyutlama bir entite Fikirler modellerle ifade edilebilir

8 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8 Modeller Model bir sistemin soyutlanmış halidir Artık var olmayan sistemler Var olan sistemler Geleceğe ait sistemler

9 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9 Yazılım Sistemlerini Tarif Etmek İçin Modeller Kullanılır Nesne Modeli (Object model): Sistemin yapısı (structure) nasıl? Fonksiyonel Modeli (Functional model): Sistemin fonksiyonları nedir? Dinamik Model (Dynamic model): Sistem dış etkilere karşı nasıl davranıyor? Sistem Modeli: Nesne Modeli + Fonksiyonel Model + Dinamik Model

10 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10 Yazılım Geliştirme Sistemlerini Tarif Eden Modeller Görev Modeli (Task Model): PERT Chart: Görevler arasındaki bağlantılar nasıl? Program (Schedule): Zaman sınırlaması içinde bu işler nasıl yapılacak? Organizasyon Şeması : Projedeki roller nelerdir? Meseleler Modeli: Açık ve kapalı meseleler nelerdir ? Bana engel olan durum nedir? Müşteri ne gibi sınırlamalar getirmiştir? Ne gibi çözümler önerilmiş? Buna bağlı olarak şimdi hangi aksiyon yapılmalı ?

11 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java Karmaşıklıkla Başa Çıkmak İçin Teknikler: Parçalara Ayırmak Karmaşıklığı anlamak için kullanılan bir teknik (“böl ve yönet”) Parçalamın iki çeşidi Fonksiyonel Parçalama Nesne-Tabanlı Parçalama Fonksiyonel Parçalama Sistem modülere ayrılır Her modül uygulama alanında ana bir fonsksiyondur Modüler daha küçük modüllere ayrılabilir.

12 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12 Parçalama Nesne-Tabanlı Parçalama Sistem sınıflara parçalanır (“objects”) Her sınıf uygulama alanında önemli bir entitidir Sınıflar daha küçük sınıflara ayrılabilir Nesne-Tabanlı veya Fonksiyonel Parçalama Hangisi daha iyi ?

13 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13 Fonksiyonel Parçalama Top Level functions Level 1 functions Level 2 functions Machine instructions System Function Load R10 Add R1, R10 Read Input Transform Produce Output Transform Produce Output Read Input

14 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14 Fonksiyonel Parçalama Fonksiyonalite bütün sisteme dağılmış durumdadır Sistem üzerinde değişiklik yapmak için bütün sistemi anlamak gerekli Sonuç: Kaynak kodu anlamak zordur Kaynak kod karmaşıktır Genelde kullanıcı arayüzü kullanışlı değildir.

15 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15 Fonksiyonel Parçalama Örnek: Microsoft Powerpoint’s Autoshapes Kareyi nasıl çembere çevirelim ? ? Fonksiyonalite bütün sisteme dağılmış durumdadır Sistem üzerinde değişiklik yapmak için bütün sistemi anlamak gerekli Sonuç: Kaynak kodu anlamak zordur Kaynak kod karmaşıktır Genelde kullanıcı arayüzü kullanışlı değildir.

16 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16 Kareyi nasıl çembere çevirelim ? İlk deneme: Check the Format Menu: Autoshape ?

17 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17 Change one AutoShape to another: 1. Select the AutoShape you want to change. 2. On the Drawing toolbar, click Draw, click Change AutoShape, point to a category, and then click the shape you want. İkinci deneme: Help Assistant’a soralım

18 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18 Autoshape Fonksiyonel Parçalama : Autoshape Draw Rectangle Draw Oval Draw Circle Change Draw Change Rectangle Change Oval Change Circle

19 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19 Object-Oriented View Autoshape Draw() Change()

20 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20 Bu nedir? Neck Glove Coat Pocket Cave Ellbow Bir Eskimo!

21 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21 Nose Eye Ear Chin Mouth Hair Bir Yüz!

22 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22 Nose Eye Ear Chin Mouth Hair Ellbow Neck Glove Coat Pocket Cave Yüz!Eskimo!

23 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23 Sınıf Tanımlaması Temel Varsayımlar: Yeni bir yazılım sistemi için sınıfları bulabiliriz: Greenfield Engineering Var olan bir yazılımdaki sınıfları bulabiliriz: Yeniden Mühendislik : Reengineering Eski bir sisteme sınıf tabanlı yeni bir arayüz tasarlayabiliriz: Arayüz Mühendisliği : Interface Engineering.

24 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java Hiyerarşi Şimdiye kadar soyutlamalara odaklandık Bu bizi sınıf ve objelere götürür “Parçalar” Karmaşıklık ile başa çıkmanın bir yolu bu parçacıklar arasında hiyerarşi ilişkiler oluşturmaktır 2 özel hiyerarşi "Parçasıdır" hiyerarşisi (“Part-of”) “Türüdür" hiyerarşisi ("Is-kind-of").

25 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25 I/O Devices CPU Memory Parçasıdır Hiyeraşisi (Aggregation) Computer Cache ALU Program Counter

26 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26 Türüdür Hiyerarşisi (Taxonomy) Hücre Kas Hücresi Kan Hücresi Sinir Hücresi Striate Smooth Kır- mızı Be- yaz Cortical Pyramidal

27 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27 Konunun Neresindeyiz? Karmaşıklıkla başa çıkmanın üç yolu : Soyutlama, Parçalara Ayırma (Decomposition), Hiyerarşi Nesne-tabanlı parçalama iyi Maalesef sistemin amaçına bağlı olarak değişik objeler bulunabilir Doğrusunu nasıl yapabiliriz? Sistemin fonksiyonalitesini tarif ederek başlayabiliriz Ondan sonra sistemin yapısını tarif ederek devam edebiliriz Geliştirme aktivitelerinin düzenlenmesi Yazılım yaşam döngüsü

28 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28 Modeller Yanlışlanabilir Olmalı Karl Popper (“Objektif Bilgi”): Gerçeği anlamaya çalıştığınızda mutlak doğru yoktur Bizler teoriler oluşturabiliriz. Birisi gelip teorinin çalışmadığı bir örnek getirene kadar teorimiz “doğrudur”. Yanlışlama: Bir teoriyi veya hipotezi çürütmek Bir teorinin doğruluğu kesin değildir. Teoriden bahsederken : “bize göre”, “en son bilgilere göre” gibi cümleler kullanılmalı. Yazılım mühendiliğinde her model bir teoremdir: Modeller inşa edip çürütmeye çalışabiliriz: Gereksinim doğrulaması, arayüz testi, tasarımın kontrol edilmesi, kodun testi, sistem testi, vs. Test: Modeli yanlışlamaya çalışması.

29 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29 Konseptler ve Fenomenler Fenomen Bir alandaki gözlenebilir, anlaşılabilir olay vaya obje Örnekler: Bu ders saat 9:35’da, benim siyah saatim Konsept Fenomenlerin genel özelliklerini tarif eder Örnek: Bütün Yazılım Mühendisliği Dersleri Örnek: Bütün siyah saatler Konsept 3’lü bir yapıdır: Isim: Konseptin ismi konsepti diğerlerinden ayırır Amaç: Fenomenin koseptin parçası olup olmadığını belirleyen özellikler Üyeler: Konseptin parçası olan fenomen seti.

30 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30 Soyutlamanın Tanımı: Fenomenlerin konseptlere sınıflanması Modellemenin Tanımı: Bir fenomen seti hakkındaki sorulara cevaplar verebilmek için detayları ihmal ederek soyutlamalar geliştirmek. ÜyelerIsim Saat Amaç Zamanı ölçen bir alet. Konseptler, Fenomen, Soyutlama ve Modelleme

31 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31 Soyut Veri Tipleri & Sınıflar Soyut Veri Tipi İmplementasyonu sistemin gerisinden saklı bir tip Sınıf: Nesne-Tabanlı kontext içinde bir soyutlama Bir sınıf bir durumu ve davranışı kapsar Örnek: Watch Watch time date SetDate(d) CalculatorWatch EnterCalcMode() InputNumber(n) calculatorState Unlike abstract data types, subclasses can be defined in terms of other classes using inheritanc e State Behavior Miras (Inheritance) Subclass Example: CalculatorWatch Superclass

32 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32 Tip ve Durum (Instance) Tip: Programlama dilli koncepti İsim: int Amaç: integral number Üyeler: 0, -1, 1, 2, -2,… Durum: Belirli bir tipin üyesi Bir değişkenin tipi bütün mümkün olan duruları temsil eder Aşağıdaki ilişkiler benzerdir: Tip (Type) Değişken (Variable) Knsept (Concept) (Fenomen) Phenomenon Sınıf (Class) Obje (Object)

33 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33 Sistemler B ir sistem birbiri ile haberleşen organize parçalardan oluşur Doğal s i stem: bütün amaçlarını bilemediğimiz, hazır çevremizde bulduğumuz sistem Mühendislik sistemi : Mühendisler tarafından belli bir amaç için kurulmuş bir sistem Sistemin parçaları da sistem olabilir Bu durumda onlara alt sistemler denebilir ( subsystems ) Örnek mühendislik sistemleri : Uçak, saat, GPS Örnek alt sistemler : Jet motoru, pil, uydu. Örnek doğal sistemler : Evren, dünya, okyanus

34 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34 Sistemler, Model ler ve Görünümler Model bir sistemi veya alt sistemi tarif eden bir soyutlamadır S istem : Uçak Model ler : Uçuş simulat örü Prototip modeli Görünümler : Uçak parçalarının planları Elektrik aksamı, Yakıt sistemi Uçak tarafından üretilen ses dalgası Görünüm (View) bir sistemi belirli bir bakış açısından gösterir Notasyon bir sistemi veya görünümü anlatmak için kullanılan grafiksel veya metinsel kurallardır : formal nota syonlar

35 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35 Aircraft Flightsimulator Scale Model Blueprints Electrical Wiring Fuel System Karmaşık bir sistemin görünümleri ve modelleri genelde kesişir Sistemler, Model ler ve Görünümler

36 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36 Sistemler, Model ler ve Görünümler System View * Model * Depicted by Described by Airplane: System Scale Model:Model Flight Simulator:Model Fuel System: View Electrical Wiring: View Blueprints: View (UML N otasyonu ) Sınıf Diyagramı Obje Diyagramı

37 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37 Model Tabanlı Geliştirme 1.Bir uygulamanın fonksiyonalitesini veya davranışını gösteren platform bağımsız modelini geliştir a) Modeli belirli bir modeleme notasyonu ile tarif et (UML) b) Modeli platform bağımlı hale dönüştür 2.Platform bağımlı modelden “executable” oluştur Avantajlar: Kod modelden geliştirilir (“genellikle”) Taşınabilirlik (portabilitiy) ve platformlar arası uygunluk (interoperability) Model Driven Architecture effort: OMG: Object Management Group

38 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38 Gerçek: stock exchange birçok şirketi listeler. Her şirket bir ticker symbol ile ifade edilir Analiz analiz obje modelini oluşturur (UML Sınıf Diyagramı): StockExchange Company tickerSymbol Lists * * Implementasyon kaynak kodu oluşturur (Java): public class StockExchange { public m_Company = new Vector(); }; public class Company { public int m_tickerSymbol; public Vector m_StockExchange = new Vector(); }; Model Tabanlı Yazılım Geliştirme

39 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39 Uygulama ve Çözüm Alanları Uygulama Alanı (Analiz): Sistemin çalıştığı ortam Çözüm Alanı (Tasarım, Implementasyon): Sistemi gerçekleştirmek için kullanılan teknolojiler Her iki alan da bir sistem modeli oluşturmak için soyutlamalar içerir.

40 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40 Object-oriented Modeling Application Domain (Phenomena) Solution Domain (Phenomena) System Model (Concepts) Aircraft TrafficController FlightPlan Airport MapDisplay FlightPlanDatabase Summary Display TrafficControl UML Package (Analysis) (Design)

41 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41 UML nedir? UML (Unified Modeling Language) Nonproprietary standard for modeling software systems, OMG Convergence of notations used in object-oriented methods OMT (James Rumbaugh and collegues) Booch (Grady Booch) OOSE (Ivar Jacobson) Current Version: UML 2.2 Information at the OMG portal Commercial tools: Rational (IBM),Together (Borland), Visual Architect (business processes, BCD) Open Source tools: ArgoUML, StarUML, Umbrello Commercial and Opensource: PoseidonUML (Gentleware)

42 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42 UML: İlk Bakış Modeleme problemlerinizin % 80 UML notasyonun %20 ile çözebilirsiniz Bu derste % 20 UML öğretilecek Kuralı: Pareto prensibi Vilfredo Pareto, Introduced the concept of Pareto Efficiency, Founder of the field of microeconomics.

43 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43 UML: İlk Bakış Senaryo diyagramları(Use case) Sistemin fonksiyonel davranışını kullanıcının gördüğü gibi tarif eder Sınıf Diyagramları (Class diagrams) Sistemin statik yapısını tarif eder: Objeler, attributes, bağlantılar Sıralı Diyagramlar (Sequence diagrams) Sistemin objeler arasındaki dinamik davranışını tarif eder Durum Diyagramları (Statechart diagrams) Tek bir objenin dinamik davranışını tarif eder Aktivite Diyagramları (Activity diagrams) Sistemin dinamik davranışını tarif eder, özelde iş akışını tarif eder.

44 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44 UML Temel Konvensiyonlar Bütün UML diyagramları düğüm ve kenarlardan oluşan graflardan oluşur Nodes are entities and drawn as rectangles or ovals Dikdörtgenler sınıfları veya durumları gösterir Oval şekiller fonksiyonları gösterir Sınıfların isimlerinde alt çizgi yoktur SimpleWatch Firefighter Durumların alt çizgisi vardır myWatch:SimpleWatch Joe:Firefighter İki düğüm arasındaki kenar onların arasındaki ilişkiyi belirtir

45 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45 UML İlk Bakış : Senaryo diyagramları Senaryo diyagarmları sistemin fonksiyonalitesini kullanıcının görüş acısı ile tarif eder Actor. Use Case System boundary Classifier

46 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46 UML İlk Bakış : Sınıf Diyagramları Class Association Multiplicity Sınıf diyagramları sistemin statik yapısını tarif eder SimpleWatch DisplayBatteryTime PushButton

47 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47 UML İlk Bakış : Sınıf Diyagramları 1 2 push() release() 1 1 blinkIdx blinkSeconds() blinkMinutes() blinkHours() stopBlinking() referesh() LCDDisplay Battery Load Time Now 1 Watch Operations state PushButton Attribute Class diagrams represent the structure of the system Class Association Multiplicity

48 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 48 Message UML İlk Bakış : Sıralama Diyagramları :Time :Watch :WatchUser Object Activation Sistemin objeler arasındaki dinamik davranışını mesaj olarak tarif eder Actor pressButton1() Lifeline blinkHours() pressButton2() incrementMinutes() :LCDDisplay pressButton1and2() commitNewTime() stopBlinking() refresh() pressButton1() blinkMinutes()

49 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 49 UML İlk Bakış : Durum Diyagramları State Initial state Final state Transition Event Tek bir objenin dinamik davranışını tarif eder button1&2Pressed button1Pressed button2Pressed button1Pressed button1&2Pressed Increment Minutes Increment Hours Blink Hours Blink Seconds Blink Minutes Increment Seconds Stop Blinking

50 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 50 UML Temel Notasyon Özeti UML yazılım sistemlerinin değişik yönlerini modellemek için geniş bir notasyon zenginliği içerir Bugün birkaç notasyon üzerinde odaklandık: Fonksiyonel model: Senaryo diyagramı Obje modeli: Sınıf diyagramı Dinamik model: Sıralı diyagramlar, durum diyagramı.

51 Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 51 Ek Referanslar Martin Fowler UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3rd ed., Addison-Wesley, 2003 Grady Booch,James Rumbaugh,Ivar Jacobson The Unified Modeling Language User Guide, Addison Wesley, 2 nd edition, 2005 Open Source UML tools


"Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, UML ile Modelleme, B ölüm 1." indir ppt

Benzer bir sunumlar


Google Reklamları