ݺߣ

ݺߣShare a Scribd company logo
UML/UP ile Yazılım Geliştirme

          Bölüm 2 / 7
İçerik
• UML’in Sizin için Anlamı
• UML Şemaları, Semboller ve Semantik İlişkileri
• Şema ve Model Bazlı UML Çalışmaları
  Arasındaki Farklar
• Alternatif Yazılım Geliştirme Süreçlerinde
  UML'in Yeri
• UML ile Gereksinim Yönetimi
• UML ile Nesne Yönelimli Tasarım
İçerik

• Görsel Tasarım
• UML Modeli
• UML Sonrasında Yazılım Dünyası
Görsel Tasarım

      Bir sistemin verdiği bir hizmeti
nasıl gerçekleştirdiğinin görsel olarak ifade
                 edilmesidir.
UML Süreci Yaklaşımları
– use-case driven (kullanıcıya sağlanan fayda
  odaklı),
– architecture centric (esnek, bakımı ve tekrar
  kullanılabilirliği kolay bir sistem mimarisi
  oluşturmaya elverişli),
– iterative (kademeli olarak)
– incremental (birbirinin üzerine inşa ederek).
Rumbaugh Tanımı

           Sipariş           “Bir Model bir Sistemin
                     vazgeçilmez özelliklerini gösterir.”
                                        Dr. James Rumbaugh
 Ürün


 Kargo

İş Akışı


Görsel Tasarım
standartlaşmış sembolleri
kullanarak tasarım                   Bilgi İşlem
yapmaktır
Görsel tasarımın faydaları

 İş Akışı Bilgisi Toplamak
 İletişimi Kolaylaştırmak
 Proje Kontrolünü Artırmak
 Sistem Mimarisini Oluşturmak
 Tekrar Kullanabilmek
İş Akışı Bilgisi Toplamak


                 Use Case’ler ile
                  yazılımın müşteri
                  kullanımı odaklı
                  olması sağlanıyor.
İletişimi Kolaylaştırmak

 Birlikte çalışması gereken bu iki takım çoğu zaman
 farklı kelime hazneleri yüzünden anlaşamıyor.

 Görsel Tasarımda UML kullanımı müşterinin
 dünyasıyla sistemin dünyasını birbirine bağlar




                                 Programcılar bu
Analistler sistemin              gereksinimlere dayanarak
gereksinimlerini belirlerler     sistemi oluştururlar
Proje Kontrolünü Artırmak

                                                 Sistemler yüzlerce
                                                 hatta binlerce
                                                 class’dan oluşabiliyor.

                                                 Bu class grupları sisteme
                                                 bakan kişinin ihtiyacına
                                                 göre organize
                                                 edilebilmeli.




Görsel Tasarım sisteme farklı yönlerden bakabilmeyi sağlar.
Sistem Mimarisi Oluşturmak

                                         Görsel Tasarım
                                         oluşan çözümü
                                         kullanılan
                                         programlama
                                         dilinden bağımsız
                                         hale getirir.




Programlama dili belirlenince tasarım fiziki ortama taşınır.
Tekrar Kullanabilmek
              Farklı Sistemler
                                 Tasarımınızı
                                 bileşenlere bölerek
                                 çözümünüzün
                                 parçalarını tekrar
                                 kullanabilirsiniz.



Bileşenler
UML Öncesi
• 1960 - 70
   – COBOL, FORTRAN, C
   – Yapısal analiz ve tasarım teknikleri
• 1980 – 1990 başları
   – Smalltalk, Ada, C++, Visual Basic
   – İlk NT yöntemlerin ortaya çıkması
• 1990’ların geriye kalanında
   – Java
   – UML
   – Unified Process
UML Öncesi




              Tijuana “shantytown”:
http://www.macalester.edu/~jschatz/residential.html
İçerik

• Görsel Tasarım
• UML Modeli
• UML Sonrasında Yazılım Dünyası
Modeller ve Şemalar
Bir model bir sistemin
Belli bir açıdan eksiksiz olarak
Ifade edilebilmesini
                                                           State
sağlar                                                       State
                                                         Diagrams
                                                              Class
                                                          Diagrams
                                    Use Case                 Şeması
                                     Use Case
                                    Diagrams                                        State
              Use Case                 Use Case
                                     Diagrams                                        State
                                                                                  Diagrams
               Use Case                 Şeması                                         Object
                                                                                   Diagrams
              Diagrams
                 Sequence                                                             Şeması
               Diagrams
                  Şeması


          Scenario                                                                  State
            Scenario
           Collaboration
          Diagrams                                                                   State
                                                                                  Diagrams
            Diagrams                                                                Component
                                                                                   Diagrams
         / Communication
                                                                                      Şeması
               Şeması                              Model


                  Scenario                                            Component
                    Scenario
                     Statechart
                  Diagrams
                                                                        Component
                                                                       Diagrams
                                                                        Deployment
                                                                         Diagrams
                  / Diagrams
                    State Machine                                        Şeması
                       Şeması                     Activity
                                                  Şeması
Modellerin Faydaları
•   Problem Çözme Mekanizması
•   Alternatif Çözümleri Görebilme
•   Sistemin Karmaşıklığını Kontrol Altına Alabilme
•   Ürünleri Daha Hızlı Oluşturabilme
•   Proje Maliyetini Düşürme
•   Hataları Azaltabilme
Model Nedir?

• Gerçeğin basitleştirilmiş bir ifadesi,
• Sistemin veya Sürecin kavramsal düzeyde
  anlaşılmasıdır
Model Kullanımı


                Gereksiz   Zaruri




Kağıttan Uçak                       F-15
Model Kullanımı
• Bilişim Takımları F-15’leri kağıttan uçak
  yaklaşımıyla oluşturabileceklerini
  zannedebiliyor.
  – Gereksinimlerden Kodlamaya geçiş
  – Daha uzun çalışmak, sistem mimarisi odaklı
    olmayan kod yazmak
  – Esnek bir Sistem Mimarisi olmaması
  – Başarısızlık
Modelin Faydası
• Tasarladığımız çözümü anlayabilmek
• Modeller ...
   –   Tasarlamak istediğimiz çözümü düşünebilmemize,
   –   Sistemin yapısını ve davranışını belirleyebilmemize,
   –   Sistemi oluşturabilmemize ve
   –   Yaptıklarımızı dokümante edebilmemize yarıyor.
• Kapsamlı sistemleri modeller olmadan tasavvur
  etmek bile mümkün değil.
4 Model Kuralı
• Model problemi nasıl çözeceğinizi belirler.
• Her model farklı detay seviyelerinde
  kullanılabilir.
• Model çözümün kullanılacağı dünyadan
  kopmamalıdır.
• Çözüme yönelik tek bir model yetersizdir
4 Model Kuralı
  Model problemi nasıl çözeceğinizi belirler.

• Oluşturacağınız model probleme ve çözüme
  yaklaşımınızı belirler.
  – Seçilen model bir anlam dünyası oluşturur
  – Her anlam dünyası sizi başka bir çözüme yöneltir
4 Model Kuralı
  Her model farklı detay seviyelerinde kullanılabilir


• Her model kullanıcısına yönelik olmalıdır.
  – Detay seviyesi modeli kimin ve ne amaçla
    kullandığına göre değişmelidir.
4 Model Kuralı
  Model çözümün kullanılacağı dünyadan kopmamalı


• Model gerçekçi olmalı
  – Gerçek yerine göre bir kullanım senaryosu, yerine
    göre bir sistem kısıtlaması olabilir. Dolayısıyla
    model farklı referansları barındırabilmelidir.
  – Gerçeği basitleştirmeli
  – Riskli unsurları işaret etmeli
4 Model Kuralı
Çözüme yönelik tek bir model yetersizdir
 • Sistemler birbirleri kötü olarak etkilemeyen farklı
   modellerle incelenmeli.
    – Birbirlerinden bağımsız olarak oluşturulabilen,
      incelenebilen fakat birbirleriyle alakalı olan modeller
      oluşturulmalıdır
 • Modellerin farklı referansları, oluşturulma
   nedenleri ve kullanıcıları olmalıdır.
Sisteme 4+1 Bakışı



               Kullanıcı




Performans
İçerik

• Görsel Tasarım
• UML Modeli
• UML Sonrasında Yazılım Dünyası
UML Sonrası




                                                                       Frank Lloyd Wright

                          Fallingwater:

http://www.casas.com/architect/franklloydwright/fallingwater000.html
UML’in Sınırları



       Takım Üyeleri




                  Kullanılan
 Dil
                   Süreç
UML’in Yarattığı İş Fırsatları
• Yetenekli bilişim elemanlarının deneyimlerini
  aktarabilmeleri
• Yeni mezunların ustalarından örnek
  alabilmeleri
• Problem çözümlerinin gereksinim, analiz ve
  tasarım faaliyetlerinin yan ürünlere dönüşmesi
• İşverenlerin en kritik bilgilerini altyapı       Ken Ishiwata
  çalışmalarından ayırabilmeleri
• Müteşebbislerin kendilerini daha çok yeni iş
  fikirlerine adayabilmeleri
Fırsatlara örnekler
•   İnfina: İş bilgisi satma,
•   Anadolu Hayat: Altyapı değerlendirme,
•   Uml öğrenen doktor,
•   Yazılım projesine giren haritacılar,
•   Alman sigorta uygulama referans modeli,
•   Vs. vs.
UML Kehanetleri
•   Teknolojik altyapı kullanımı kolaylaşacak
•   İşe özel nesne tabanlı yaklaşım bilgilerine erişim kolaylaşacak
•   İş mantığı bilgilerine erişim kolaylaşacak
•   Yönetsel yaklaşımların önemi artacak
•   İş mantığını gizleme artacak
•   Kod ve framework paylaşımı artacak
•   İş uzmanlarının yazılım alanına iştirakleri artacak
•   İşe özel framework pazarı kızışacak
•   Yazılım evleri uluslararası çalışmalara daha çok girmeye başlayacak
•   Az sayıda kişiden oluşan ve kısıtlı bütçe sahibi ekiplerin etkinlikleri artacak
•   Tasarımcı ve Sistem Analistlerinin popülerlikleri artacak
•   Programcıların önemleri daha çok algoritmik karmaşıklığa sahip alanlarda
    korunacak
•   Framework bazlı kodlama hangarları oluşmaya devam edecek
•   Yazılım elemanlarının kişisel önemleri artacak
İlham Kaynakları
• Eğitimimizin sonunda açık kaynak kodlu bir projeyi UML
  modelinize çekin ve inceleyin:
   www.sourceforge.net




                               “Zero Dollar Bill”




             Max Goff

More Related Content

What's hot (9)

PDF
Class Diagram
Seyfullah Demir
PPT
006 Uml Modelleri Gereksinimler [120 ݺߣs]
Erol Bozkurt
PPT
005 Alternatif Yazilim Surecleri [99 ݺߣs]
Erol Bozkurt
PPTX
YÖNETİM BİLGİ SİSTEMİ
MUHAMMED ÖMER BULAKÇIBAŞI
PPTX
Analist Eğitimi - Tüm Bölümler - [535 ݺߣs]
Erol Bozkurt
PPTX
Gereksinim Analizi Dokümanı Hazırlama
Cumhuriyet Üniversitesi
PPTX
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
Tuğrul Can Şöllü
PDF
2012 04 mvc_mvp_ve_mediator_ile_tdd_tecrubeleri
Kenan Sevindik
PPT
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz
Class Diagram
Seyfullah Demir
006 Uml Modelleri Gereksinimler [120 ݺߣs]
Erol Bozkurt
005 Alternatif Yazilim Surecleri [99 ݺߣs]
Erol Bozkurt
YÖNETİM BİLGİ SİSTEMİ
MUHAMMED ÖMER BULAKÇIBAŞI
Analist Eğitimi - Tüm Bölümler - [535 ݺߣs]
Erol Bozkurt
Gereksinim Analizi Dokümanı Hazırlama
Cumhuriyet Üniversitesi
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
Tuğrul Can Şöllü
2012 04 mvc_mvp_ve_mediator_ile_tdd_tecrubeleri
Kenan Sevindik
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz

Similar to 002 Uml Sizin Icin Anlami [34 ݺߣs] (20)

DOC
Yazilim Gelistirme Teknikleri Ile Yazilim Uretimi
guest5d73617
PPTX
Implementation.pptx
glkabakc
PDF
6.Uretim Dagitim 16.40 17.10 Urun Gelistirmede
Ermando
PPTX
Design Patterns (Tasarım Kalıpları)
nedirtv
PPT
Eğitim Yazılımları Geliştirme Sürecinde Üretim Yönetimi
Mehmet Emin Mutlu
PDF
Malware Analizi eğitimi,11 15 mart 2013
forensicpeople
PPTX
TeknoLab-IT
Citrix
PPTX
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
Betul Kesimal
PDF
programlama_ve_veriyapilari
guest551d01
PPT
Design Patterns
Fatih Özlü
PPTX
Design Patterns - Tasarım Şablonları Sunumu
Cem Topkaya (MSc)
PPTX
0 btg - urun gelistirme yasam donugusu cozumleri (borland ve embarcadero) ara...
BTGrubu
PPTX
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
Hakan ERDOGAN
PPTX
Bilgi Sistemleri - Ders 3
guest0296675
PDF
Macroersin.pdf
honestman
PDF
Yazilim muhendisligi-zirvesi
sersld90
PDF
Yazilim muhendisligi-2012
sersld90
PDF
Yazilim muhendisligi-2017
sersld90
PDF
Kullanılabilirlik ve Kullanıcı Deneyimi Teknikleri
Userspots
Yazilim Gelistirme Teknikleri Ile Yazilim Uretimi
guest5d73617
Implementation.pptx
glkabakc
6.Uretim Dagitim 16.40 17.10 Urun Gelistirmede
Ermando
Design Patterns (Tasarım Kalıpları)
nedirtv
Eğitim Yazılımları Geliştirme Sürecinde Üretim Yönetimi
Mehmet Emin Mutlu
Malware Analizi eğitimi,11 15 mart 2013
forensicpeople
TeknoLab-IT
Citrix
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
Betul Kesimal
programlama_ve_veriyapilari
guest551d01
Design Patterns
Fatih Özlü
Design Patterns - Tasarım Şablonları Sunumu
Cem Topkaya (MSc)
0 btg - urun gelistirme yasam donugusu cozumleri (borland ve embarcadero) ara...
BTGrubu
E-ticarette Bilgi Teknolojileri - Bilgi Üniversitesi E-ticaret Akademi 2012.0...
Hakan ERDOGAN
Bilgi Sistemleri - Ders 3
guest0296675
Macroersin.pdf
honestman
Yazilim muhendisligi-zirvesi
sersld90
Yazilim muhendisligi-2012
sersld90
Yazilim muhendisligi-2017
sersld90
Kullanılabilirlik ve Kullanıcı Deneyimi Teknikleri
Userspots
Ad

002 Uml Sizin Icin Anlami [34 ݺߣs]

  • 1. UML/UP ile Yazılım Geliştirme Bölüm 2 / 7
  • 2. İçerik • UML’in Sizin için Anlamı • UML Şemaları, Semboller ve Semantik İlişkileri • Şema ve Model Bazlı UML Çalışmaları Arasındaki Farklar • Alternatif Yazılım Geliştirme Süreçlerinde UML'in Yeri • UML ile Gereksinim Yönetimi • UML ile Nesne Yönelimli Tasarım
  • 3. İçerik • Görsel Tasarım • UML Modeli • UML Sonrasında Yazılım Dünyası
  • 4. Görsel Tasarım Bir sistemin verdiği bir hizmeti nasıl gerçekleştirdiğinin görsel olarak ifade edilmesidir.
  • 5. UML Süreci Yaklaşımları – use-case driven (kullanıcıya sağlanan fayda odaklı), – architecture centric (esnek, bakımı ve tekrar kullanılabilirliği kolay bir sistem mimarisi oluşturmaya elverişli), – iterative (kademeli olarak) – incremental (birbirinin üzerine inşa ederek).
  • 6. Rumbaugh Tanımı Sipariş “Bir Model bir Sistemin vazgeçilmez özelliklerini gösterir.” Dr. James Rumbaugh Ürün Kargo İş Akışı Görsel Tasarım standartlaşmış sembolleri kullanarak tasarım Bilgi İşlem yapmaktır
  • 7. Görsel tasarımın faydaları  İş Akışı Bilgisi Toplamak  İletişimi Kolaylaştırmak  Proje Kontrolünü Artırmak  Sistem Mimarisini Oluşturmak  Tekrar Kullanabilmek
  • 8. İş Akışı Bilgisi Toplamak Use Case’ler ile yazılımın müşteri kullanımı odaklı olması sağlanıyor.
  • 9. İletişimi Kolaylaştırmak Birlikte çalışması gereken bu iki takım çoğu zaman farklı kelime hazneleri yüzünden anlaşamıyor. Görsel Tasarımda UML kullanımı müşterinin dünyasıyla sistemin dünyasını birbirine bağlar Programcılar bu Analistler sistemin gereksinimlere dayanarak gereksinimlerini belirlerler sistemi oluştururlar
  • 10. Proje Kontrolünü Artırmak Sistemler yüzlerce hatta binlerce class’dan oluşabiliyor. Bu class grupları sisteme bakan kişinin ihtiyacına göre organize edilebilmeli. Görsel Tasarım sisteme farklı yönlerden bakabilmeyi sağlar.
  • 11. Sistem Mimarisi Oluşturmak Görsel Tasarım oluşan çözümü kullanılan programlama dilinden bağımsız hale getirir. Programlama dili belirlenince tasarım fiziki ortama taşınır.
  • 12. Tekrar Kullanabilmek Farklı Sistemler Tasarımınızı bileşenlere bölerek çözümünüzün parçalarını tekrar kullanabilirsiniz. Bileşenler
  • 13. UML Öncesi • 1960 - 70 – COBOL, FORTRAN, C – Yapısal analiz ve tasarım teknikleri • 1980 – 1990 başları – Smalltalk, Ada, C++, Visual Basic – İlk NT yöntemlerin ortaya çıkması • 1990’ların geriye kalanında – Java – UML – Unified Process
  • 14. UML Öncesi Tijuana “shantytown”: http://www.macalester.edu/~jschatz/residential.html
  • 15. İçerik • Görsel Tasarım • UML Modeli • UML Sonrasında Yazılım Dünyası
  • 16. Modeller ve Şemalar Bir model bir sistemin Belli bir açıdan eksiksiz olarak Ifade edilebilmesini State sağlar State Diagrams Class Diagrams Use Case Şeması Use Case Diagrams State Use Case Use Case Diagrams State Diagrams Use Case Şeması Object Diagrams Diagrams Sequence Şeması Diagrams Şeması Scenario State Scenario Collaboration Diagrams State Diagrams Diagrams Component Diagrams / Communication Şeması Şeması Model Scenario Component Scenario Statechart Diagrams Component Diagrams Deployment Diagrams / Diagrams State Machine Şeması Şeması Activity Şeması
  • 17. Modellerin Faydaları • Problem Çözme Mekanizması • Alternatif Çözümleri Görebilme • Sistemin Karmaşıklığını Kontrol Altına Alabilme • Ürünleri Daha Hızlı Oluşturabilme • Proje Maliyetini Düşürme • Hataları Azaltabilme
  • 18. Model Nedir? • Gerçeğin basitleştirilmiş bir ifadesi, • Sistemin veya Sürecin kavramsal düzeyde anlaşılmasıdır
  • 19. Model Kullanımı Gereksiz Zaruri Kağıttan Uçak F-15
  • 20. Model Kullanımı • Bilişim Takımları F-15’leri kağıttan uçak yaklaşımıyla oluşturabileceklerini zannedebiliyor. – Gereksinimlerden Kodlamaya geçiş – Daha uzun çalışmak, sistem mimarisi odaklı olmayan kod yazmak – Esnek bir Sistem Mimarisi olmaması – Başarısızlık
  • 21. Modelin Faydası • Tasarladığımız çözümü anlayabilmek • Modeller ... – Tasarlamak istediğimiz çözümü düşünebilmemize, – Sistemin yapısını ve davranışını belirleyebilmemize, – Sistemi oluşturabilmemize ve – Yaptıklarımızı dokümante edebilmemize yarıyor. • Kapsamlı sistemleri modeller olmadan tasavvur etmek bile mümkün değil.
  • 22. 4 Model Kuralı • Model problemi nasıl çözeceğinizi belirler. • Her model farklı detay seviyelerinde kullanılabilir. • Model çözümün kullanılacağı dünyadan kopmamalıdır. • Çözüme yönelik tek bir model yetersizdir
  • 23. 4 Model Kuralı Model problemi nasıl çözeceğinizi belirler. • Oluşturacağınız model probleme ve çözüme yaklaşımınızı belirler. – Seçilen model bir anlam dünyası oluşturur – Her anlam dünyası sizi başka bir çözüme yöneltir
  • 24. 4 Model Kuralı Her model farklı detay seviyelerinde kullanılabilir • Her model kullanıcısına yönelik olmalıdır. – Detay seviyesi modeli kimin ve ne amaçla kullandığına göre değişmelidir.
  • 25. 4 Model Kuralı Model çözümün kullanılacağı dünyadan kopmamalı • Model gerçekçi olmalı – Gerçek yerine göre bir kullanım senaryosu, yerine göre bir sistem kısıtlaması olabilir. Dolayısıyla model farklı referansları barındırabilmelidir. – Gerçeği basitleştirmeli – Riskli unsurları işaret etmeli
  • 26. 4 Model Kuralı Çözüme yönelik tek bir model yetersizdir • Sistemler birbirleri kötü olarak etkilemeyen farklı modellerle incelenmeli. – Birbirlerinden bağımsız olarak oluşturulabilen, incelenebilen fakat birbirleriyle alakalı olan modeller oluşturulmalıdır • Modellerin farklı referansları, oluşturulma nedenleri ve kullanıcıları olmalıdır.
  • 27. Sisteme 4+1 Bakışı Kullanıcı Performans
  • 28. İçerik • Görsel Tasarım • UML Modeli • UML Sonrasında Yazılım Dünyası
  • 29. UML Sonrası Frank Lloyd Wright Fallingwater: http://www.casas.com/architect/franklloydwright/fallingwater000.html
  • 30. UML’in Sınırları Takım Üyeleri Kullanılan Dil Süreç
  • 31. UML’in Yarattığı İş Fırsatları • Yetenekli bilişim elemanlarının deneyimlerini aktarabilmeleri • Yeni mezunların ustalarından örnek alabilmeleri • Problem çözümlerinin gereksinim, analiz ve tasarım faaliyetlerinin yan ürünlere dönüşmesi • İşverenlerin en kritik bilgilerini altyapı Ken Ishiwata çalışmalarından ayırabilmeleri • Müteşebbislerin kendilerini daha çok yeni iş fikirlerine adayabilmeleri
  • 32. Fırsatlara örnekler • İnfina: İş bilgisi satma, • Anadolu Hayat: Altyapı değerlendirme, • Uml öğrenen doktor, • Yazılım projesine giren haritacılar, • Alman sigorta uygulama referans modeli, • Vs. vs.
  • 33. UML Kehanetleri • Teknolojik altyapı kullanımı kolaylaşacak • İşe özel nesne tabanlı yaklaşım bilgilerine erişim kolaylaşacak • İş mantığı bilgilerine erişim kolaylaşacak • Yönetsel yaklaşımların önemi artacak • İş mantığını gizleme artacak • Kod ve framework paylaşımı artacak • İş uzmanlarının yazılım alanına iştirakleri artacak • İşe özel framework pazarı kızışacak • Yazılım evleri uluslararası çalışmalara daha çok girmeye başlayacak • Az sayıda kişiden oluşan ve kısıtlı bütçe sahibi ekiplerin etkinlikleri artacak • Tasarımcı ve Sistem Analistlerinin popülerlikleri artacak • Programcıların önemleri daha çok algoritmik karmaşıklığa sahip alanlarda korunacak • Framework bazlı kodlama hangarları oluşmaya devam edecek • Yazılım elemanlarının kişisel önemleri artacak
  • 34. İlham Kaynakları • Eğitimimizin sonunda açık kaynak kodlu bir projeyi UML modelinize çekin ve inceleyin: www.sourceforge.net “Zero Dollar Bill” Max Goff

Editor's Notes

  • #5: Görsel Tasarım (Visual Modeling) geliştirilen bir çözüme yönelik olarak, gereksinim, analiz ve tasarım çalışmalarının büyük oranda yazılı metinlerden ziyade, sembolik bir dil kullanılarak, görsel olarak gerçekleştirilmesine denir. Böylelikle, sistemin karmaşıklıklarının gizlenebilmelerine ve ihtiyaç duyulduğunda (yazılı metinlere başvurularak, vs.) detayların öğrenilmesine imkan verir.
  • #6: Unified Modeling Language yazılım süreci aşağıdaki hedeflere hizmet etmek üzere tanımlanmış ve geliştirilmiştir: Use Case Driven Geliştirilen yazılımın parçalara ayrılması için kullanılan en alt birim, kullanıcıya sağlanan faydalar bazında gruplanmış senaryolardır. Bu senaryolara use case veya kullanım Senaryoları denir. Örneğin, Banka Müşterisi para çekmek için ATM kullanıyorsa: bu işlemle ilgili olarak ATM’den bakiyesini öğrenip, para çekmek istediği hesabı seçerek para çekebiliyorsa, UML kullandığımızda tüm gereksinim, analiz, tasarım ve implementasyon çalışmalarımızı bu çerçevede, yani “Para Çekmek” kapsamında yapacağız demektir. 2. Architecture Centric Geliştirilen yazılımın çeşitli referanslara bağlı olarak (Örneğin, tekrar kullanım, çok katmanlı mimari, middleware kullanımı, vs.) katmanlar halinde oluşturulmasıdır. Tasarım çalışmaları esnasında kesinleşecek bu katmanlar geliştirilen yazılımın modüler yapısı (Örneğin, muhasebe, kredi modülleri gibi) ve kullanıcı faydası odaklı olarak tanımlanan kullanım senaryolarıyla da örtüşeceğinden, çok daha esnek, bakımı ve tekrar kullanılabilirliği kolay bir sistem yapısı oluşturmak mümkündür. 3. Iterative Geliştirilen bir ürüne yönelik olarak kullanılan yazılım mühendisliği süreç tanımı içerisindeki faaliyetlerin (disiplinlerin) tekrar edilmesiyle, yazılımın en riskli parçalarından en önemsiz parçalarına kadar kademe kademe oluşturulmasına imkan veren bir yaklaşımdır. 4. Incremental Iterative yaklaşımla oluşturulan yazılım parçalarının birbirlerini tamamlayarak, sistemin bir bütünlük içerisinde oluşturulmasını sağlayan bir yaklaşımdır.
  • #7: UML’in gelişti ri lmesindeki en önemli üç kişiden biri olan, James Rumbaugh’un model ve görsel tasarım (visual modeling) tanımlarına bakacak olursak, Model: Bir model sistemin tüm detay bilgilerine sahip olarak kullanımı karmaşık olan bir dokümantasyondan ziyade, o sistemin sadece vazgeçilmez özelliklerini gösteren, gerçeğin basitleştirilmiş bir gösterimidir. Görsel Tasarım (Visual Modeling): Anlamı kişiye göre değişmeyen tanımlı ve standartlaşmış sembollerin kullanımıyla yapılan gereksinim, analiz ve tasarım çalışmalarıdır. Bu arada, tekrar vurgulayacak olursak, UML’in gelişimi açısından en önemli üç kişi, diğer bir deyişle “Three Amigos”: Grady Booch, James Rumbaugh ve Ivar Jacobson’dur.
  • #8: Görsel Tasarımın (Visual Modeling) Faydaları: Mevcut veya oluşturulmak istenen iş akışı bilgisini derlemek, değerlendirmek ve Geliştirmek, Farklı rollere kendi önceliklerine göre bilgiyi filtreleyerek göstererek ve bu roller arasındaki bilgi alış verişi standartlarını belirleyerek, iletişimi kolaylaştırmak, Proje kontrolünü geliştirilen sistemi müşteri ihtiyaçlarına ve tasarım kısıtlamalarına direkt olarak bağlayarak ve proje süresince müşteri etkileşimiyle sistemin devamlı test edilmesini sağlayarak artırmak. Sistemin yazılım ekibi rollerine ek olarak teknolojik, yazılım süreç tanımı gereksinimleri veya şirketinizin önceliklerine bağlı olarak tanımlı bir mimari çerçevesinde geliştirilmesine imkan vermek. Mümkün olan en üst düzeyde tekrar kullanımı sağlamak. En uç örnekler olarak Konuya Özel Uygulama Referans Modellerini verebiliriz.
  • #9: Geleneksel yaklaşım altında birbirinden kopuk fonksiyonlar olarak algılanan problem ortamı ve geliştirilen sistem, Use Case (Kullanım Senaryoları) yaklaşımı altında birbiriyle alakalı fonksiyonların gruplanmasına dönüşmüştür. Bu yeni yaklaşım, geliştirilen yazılıma yönelik tüm çalışmaların (Gereksinim Yönetimi, Analiz ve Tasarım, İmplementasyon, Deployment, vs.) müşteri ihtiyaç ve önceliklerine uygun olarak sürdürülebilmelerine imkan vermektedir.
  • #10: Birlikte çalışması gereken bu iki takım çoğu zaman farklı kelime hazneleri yüzünden anlaşamıyor. Görsel Tasarımda UML kullanımı müşterinin dünyasıyla sistemin dünyasını birbirine bağlar . Farklı rolleri canlandıran yazılım ekibi, sahip oldukları çıkar farklılıkları ve çalışma ürünlerini korumalarına rağmen, standart ve anlamı kişilere göre değişmeyen sembolik bir dil kullandıklarından, birbirleriyle anlaşabilirler. Bunun da ötesinde, aynı rolü canlandıran kişiler UML aracılığıyla birbirlerinin yaklaşımlarını değerlendirebilmekte ve daha isabetli yaklaşımı seçebilmektedirler. Herhangi bir konunun deneyimli kadronuzdan daha az deneyimli kadronuza transferi, istenilen bilgi birikimlerinin şirketler arasında el değiştirebilmesi ve hatta satılabilir ürünler haline gelmeleri yine UML sayesinde mümkün olan faydalardan bazılarıdır.
  • #11: Nesne Tabanlı Analiz ve Tasarım doğuşundaki temel nedenlerden biri uzayıp giden kod dosyalarındaki fonksiyonların arasında kaybolmaktan kurtulmak ve yazılımın kavramsal tasarımını daha kolay ve etkili bir şekilde yapabilmekti. Bununla birlikte giderek artan yazılım karmaşıklıkları, yüzlerce hatta binlerce class’dan oluşan sistemleri birer istisna olmaktan çıkarınca, daha üst seviyede tasarım modeline ihtiyaç ortaya çıktı. Buradaki en temel ihtiyaç geliştirilen sisteme farklı yönlerden bakabilmek ve tüketilen bilgilerin detay seviyelerini kontrol altına alabilmek olarak kendini gösterdi. UML’in yardımıyla görsel tasarım bu imkanları sağlayarak proje kontrolümüzü artırmamıza yardımcı olmaktadır.
  • #12: Görsel Tasarımın sağladığı diğer fayda oluşturulan problem çözümünün olabildiğince implementasyon detaylarından arındırılabilmesidir. Böylece tasarımcılar diledikleri teknoloji değişikliklerine daha kolayca adapte olabilirler. Desteği, seçilen UML ürününe göre değişmekle birlikte, yeni yaklaşımlardan bir tanesi Platform Independent Model (PIM) yaklaşımıdır. Bu yaklaşım altında, tanımlanan tasarım herhangi bir teknolojiye uyarlanmamıştır. Dolayısıyla aynı tasarımın ileride istenen bir Platform Specific Model’e (PSM) dönüştürülmesi daha kolayca yapılmaktadır. Geleneksel UML yaklaşımı altında ise Analiz Modeli sonrasında yapılan çalışmalar bir teknolojiye has olarak yapılmak zorundadır. Bu iki yaklaşım arasında pek çok benzerlikler olsa da ilkinde tasarımı dahi bir teknolojiden bağımsız yapmak mümkündür. Dolayısıyla analizi takiben yeni bir soyutlama (abstraction) seviyesi daha mümkündür.
  • #13: UML kullanımının bizlere sağladığı diğer bir fayda da dilenen seviyede Tekrar Kullanım imkanıdır. Kullanmak istediğimiz herhangi bir modülü UML projemize import ederek ve/veya projemizi mevcut bir altyapının üstüne geliştirerek yüksek seviyede tekrar kullanılabilirlik sağlayabiliriz. Bunun da ötesinde, eğer tekrar kullanılabilirlik imkanı tasarımdan ziyade gereksinim ve analiz çalışmaları için mümkünse bunu da UML aracılığıyla kolaylıkla sağlayabiliriz. Ayrıca, ihtiyaç duyduğumuz analiz ve tasarım kalıplarını tanımlayarak onları da tekrar tekrar kullanabiliriz. Yine, UML ürününe bağlı olmakla birlikte, proje yönetimi açısından ihtiyaç duyduğumuz metrikler ve dokümantasyon şablonlarını da tekrar kullanmamız mümkündür.
  • #14: UML öncesi Yazılım Dünyasına baktığımızda, daha çok Yapısal analiz ve tasarım tekniklerinin, Fonksiyon ve Modül bazında yazılım geliştirmenin egemen olduğunu görmekteyiz. Bunun aksine UML sonrasında, Nesne Tabanlı Teknolojilerin, Hızlı Yazılım Geliştirme Ürünlerinin, SDK yazmaktan SDK kullanma eğiliminin ve Standart Yazılım Mühendisliği Süreçlerinin arttığını görürüz.
  • #15: UML öncesinde, Yazılım Geliştirme yöntemleri açısından müşteri istekleri, tasarım kısıtlamaları ve yazılım projesi sürecinde gerçekleştirilen faaliyetlerin birbirleri arasındaki takip zorlukları nedeniyle o günkü yazılım sistemleri için aşağıdaki tanımlama çok sık kullanılmıştır: “ Eğer yazılım projelerini mimari projelerle karşılaştıracak olursak, köpek kulübesi yaparken takındığımız yaklaşımın gökdelen yaparken takındığımızdan farklı olması gerekir. Yazılım dünyasında ise bunun aksini, proje üzerindeki kontrol eksikliğinden dolayı, çok sık olarak görmekteyiz. Genellikle bir gökdelen gibi gözümüzün önünde yükselen yazılım sistemi, sadece pek çok köpek kulübesinin üstüste inşa edilmesinden ibaret. Yazılım projelerinin yüksek başarısızlık oranlarının en önemli nedeni de bu olsa gerek.” Grady Booch – IBM Rational – Chief Scientist
  • #17: Bir UML modeli çeşitli şemaların yazılım süreci içindeki rolerine uygun olarak gruplanması ve ilişkilendirilmesiyle oluşturulur. Gereksinimlerin, Analiz ve Tasarım çalışmalarının, İmplementasyonla (üretilen kod) ilişkilendirilmesini ve Değişikliğin Yönetilmesini oluşturulan bu model yapısıyla sağlayabiliyoruz. Sizin de tahmin edeceğiniz gibi, oluşturulacak model yapısı kurumunuz ve elemanlarınızın özelliklerine, geliştirdiğiniz yazılımın yapısına ve kalite hedeflerinize bağlı olarak değişecektir. Aynı kurum içerisinde farklı amaçlara yönelik, farklı model yapıları (farklı süreçleri) kullanmak mümkündür. Çalışmalarımızda özel bir önem göstereceğimiz UML Şemalarını, göreceli önemlerine göre (Daha önemliler ‘*’ ile işaretlenmiştir), sıralayacak olursak, Davranış Şemaları: Use Case Şeması [*] Activity Şeması [*] Sequence Şeması [*] Collaboration Şeması State Machine Şeması [*] Yapısal Şemalar: Class Şeması [*] Paket Şeması [*] Component Şeması Deployment Şeması
  • #18: Modellerin faydalarına değinecek olursak, Problem Çözme Mekanizması Modelleri kullanarak problem ortamını (problem domain) farklı açılardan inceleyebilir, riskli unsurları saptayabiliriz. Dolayısıyla, UML problem tahlili amaçlı olarak kullanılabilir. Alternatif Çözümleri Görebilme Aynı rolü canlandıran kişilerin yaklaşımlarını karşılaştırabildikleri ve deneyimli kişilerin diğerlerine olası yaklaşımları ifade ettiği çalışma türleridir. Bu tür çalışmalar neticesinde Bugün adlarını çok sık duyduğumuz Design Patterns (GOF) ve Analysis Patterns (Martin Fowler) yaklaşımları geliştirilebilmişlerdir. Birbirine bağlı olarak çalışan, birinin ürettiği bilgileri diğerinin tüketerek yeni çalışmalar yapan kişilerin ilişkileri açısından da önem taşıyan bu imkan, bu tür grupların da birbirlerini etkiyerek toplam verimliliğin artmasını sağlamaktadır. Sistem Karmaşıklığının Kontrolü UML Modelleri sistemin karmaşıklarının kontrol edilebilmesini bilgileri muhatabına göre filtreleyerek ve detay seviyesini yine bu muhataba yönelik olarak belirleyerek sağlar. Çalışma türleri de (Gereksinimler, Analiz ve Tasarım vs.) en seviyede modüller ve kullanım senaryoları aracılığıyla yönetilebildiklerinden, proje yönetim sorunlarının çözümleri büyük ölçüde kolaylaşmaktadır. Proje Maliyetini Düşmesi Maliyetin düşmesindeki en önemli nedenler, risklerin projenin başında tanımlanmaları, önemli tasarım kısıtlamalarının gereksinim aşamasından itibaren değerlendirilmeleri, kısa süreli iterasyonlarla müşteriden kopmayarak manevra kabiliyeti kazanmak ve yine aynı nedenden ötürü devamlı olarak ürünün test edilebilmesidir. Hataları Azaltmak Yukarıda saydığımız tüm imkanlar hataların azaltılmasına katkıda bulunmaktadır. UML hem kişisel olarak, hem de kurumunuzun yeterliliklerini her projenizde tekrar değerlendirebilmenize imkan verir. Yazılım ekibiniz ve müşterileriniz arasındaki haberleşmeyi ve verimliliği artırır. Yazılım ekibiniz arasındaki bilgi alış verişini hızlandırır ve yorum hatalarını ortadan kaldırarak, ekibinizin reaksiyon süre ve kalitesini iyileştirir.
  • #19: Gündelik hayatta bir bina, otomobil veya uçağa ait modeller görebiliriz ancak yazılım dünyasında bu tür bir yaklaşım yakın zamana kadar mevcut değildi. Bugünlerde geliştirilen devasa sistemler ve başarısızlığın yüksek maliyeti yazılım dünyasını da aynı yaklaşımlara zorluyor. Bir sistemi oluşturmadan bir modelini oluşturmak ve olası problemleri büyük ölçüde azaltmak hedeflenmekte. Grady Booch’a göre bir model bir sistemin oluşturulma planını bize sağlamaktadır.
  • #20: Kağıttan bir uçağı yaparken plan yapmayız çünkü işler yolunda gitmezse bir başka kağıt parçası alıp tekrar deneyebiliriz. Buna başarısızlık maliyetinin düşüklüğü diyebiliriz.
  • #21: Eğer uçak mühendisleri hükümetten F-15 uçaklarını üretme isteklerini alsaydı tatmin etmeleri gereken iki merci olacaktı. Bunlardan bir tanesi hava kuvvetlerinin istekleri, diğeriyse havacılık mühendisliği kuralları. Bunun da ötesinde proje ekibinin elemanlarının profesyoneller olarak kabul edilmelerini sağlamak ve onları dayanabileceklerinden kötü iş koşullarına tabii tutmamak da önemli olacaktı. Tuhaf olan pek çok yazılım ekibinin F-15 ciddiyetindeki projelere kağıttan uçak yaklaşımıyla yaklaşıyor olmaları. Günümüzde daha karmaşık sistemlerin daha kısa sürede hazır olması talep ediliyor. Bu durumda yazılım ekipleri geleneksel yaklaşımlarına güvenerek daha uzun süre çalışıp, gereksinim dokümanlarını tek bilgi kaynağı olarak kullanarak daha sık kod üretmeye çalışıyorlar. Ne yazık ki, iyi düşünülmemiş sistem mimarisi yüzünden projeler çoğu zaman başarısızlığa uğramaya mahkümlar.
  • #22: Grady Booch’a göre bir modelin dört temel amacı vardır: Modeller oluşturmak istediğimiz sistemi olası bir çözüm olarak tasavvur edebilmemizi sağlarlar. Bir model geliştirilen sistemin vizyonunun bir yazılım ekipleri arasında paylaşılabilmesini sağlar. Ellerinde sadece spesifikasyon ve gereksinim dokümanları olduğunda bir sistemin herkesçe paylaşılan bir vizyonunu oluşturmak son derece güçtür. Modeller bir sistemi anlaşılabilir kılarlar. Modeller bir sistemin davranışlarını belirleyecek yapısal özelliklerini belirleyebilmemizi sağlarlar. Bir model geliştirilen sistemin davranış ve yapısını kodlamadan önce dokümante etmeye yarar. Modeller sistemi oluştururken bize yol gösterecek birer şablon görevini görürler. Bir programcı için bir model işini yapmak için izleyebileceği bir yoldur. Bir programcını terimleri hatalı anladığı için farklı bir algoritmayı kodladığını düşünün. Modeller yoruma açık olmadığından bu tür hataları gidermeye yöneliktirler. Modeller aldığımız kararları dokümante etmeye yararlar. Uzun vadede bu kararları tekrar incelememiz gerektiğinde kolayca başvurup onları yeniden değerlendirebiliriz.
  • #24: Doğru olarak oluşturulmuş modeller en büyük yazılım problemlerinizi işaret edenlerdir. Hatalı modellerse sizin için önemsiz konulara odaklananlardır. Yazılımda seçilen her model farklı bir dünya görüşüne tekabül eder. Örneğin konuya sadece Veri Tabanı Tasarımcı gibi bakarsak, elimizde entity relationship modelleri olur ve sistemin davranışını stored procedure ve trigger’larla canlandırmaya çalışabiliriz. Öte yandan eğer sisteme nesne tabanlı yazılım geliştiren bir programcı olarak bakarsak, karşımıza daha çok sistem mimarisi odaklı bir yaklaşımla çok sayıda class ve etkileşim senaryoları çıkar. Her modelin geçerlilik durumları ve bize sağlayacakları fayda / zarar oranı amaçlarımıza bağlıdır.
  • #25: Bir GUI sistemi geliştirirken hedeflerinizi ifade edebilmek için tek gereken çabuçak oluşturulabilecek bir kullanıcı arayüzü prototipi olabilir. Diğer durumlarda, iletişim problemlerini inceleyebilmek için sistemler arası interface’lere yönelebilirsiniz. Her iki durumda da en iyi modeller detay seviyesini seçmenize imkan veren ve muhatabına göre şekillendirilebilenlerdir.
  • #26: Model gerçekçiliği pek çok farklı anlama gelebilmektedir: Müşteri odaklılık, müşteriye sağlanacak faydalara ve sağlanma şekillerine duyarlılık Uymamız gereken tasarım kısıtlamaları ve kalite standartları Kullanmak istediğimiz satın alacağımız veya mevcut altyapılar Bizim için özellikle önemli yazılım mühendisliği süreçleri (Analiz, Tasarım vs.) Modelin gereğinden fazla ‘toz pembe’ bir tablo çizmemesi. Riskli unsurları işaret etmesi. Gerçeğin tüm gereksiz detaylarla anlaşılmaz hale gelmemesi. Önemli unsurların işaret edilerek, gerçeğin basitleştirilmesi.
  • #27: Sistemin mimarisiyle ilgilenen pek çok rol var (sistem analisti, programcı, kullanıcı vs.). Bu farklı rollerin birbirleriyle anlaşabilmeleri ve sistemi birlikte değerlendirebilmeleri için hepsinin anlayabileceği bir sistem gösterimine ihtiyacımız var. Paydaşların farklı beklentileri olması ve sistemin karmaşıklığı nedeniyle sistem mimarisine farklı referanslarla bakabileceğimiz modellere ihtiyacımız var (architectural view). Architectural View: Belli bir referansa göre oluşturulan sistemin basitleştirilmiş bir resmidir. Bu basitleştirme referansa uygun olmayan elemanların ayıklanması ile sağlanır. Örnekler: Rational Unified Process tanımında 4+1 standarttır. Logical view: Sistemin fonksiyonel gereksinimlerine karşılık olarak oluşturulur. Tasarım Modeli, Temel Tasarım Paketleri, Modüller ve Class’ları içerir. Implementation view: Koda senkronize olan yazılım modülleri, paketlenmeleri, katmanlara ayrılmaları ve versiyonlanmalarını içerir. Process view: Sistemin run-time esnasındaki eş zamanlı özellklerini resmetmeye yöneliktir (task, thread veya process’ler ve etkileşimleri). Deployment view: Run-time bileşenlerinin platformlara ve donanıma nasıl dağıtıldığını resmetmeye yöneliktir. Use case view: Sistem mimarisini belirleyen senaryoları ve başarı kriterlerini içerir.
  • #28: Modeller birbirlerine ‘tamamen bağımlı değillerdir.’ Ayrıca oluşturulup incelenebilirler fakat hala birbirleriyle ilişkileri vardır. Use Case View : Sistemin gereksinimleri Logical View : Problem ve Çözüm kelime haznesi Process View : Sistem process ve thread’lerinin dağılımları Implementation View : Sistemin fiziki olarak gerçekleştirilmesi Deployment View : Sistem mühendisliği odaklıdır. Unutulmamalıdır ki her sistem aynı sayıda modele ihtiyaç duymaz. Örneğin, tek CPU’lu bir sistem deployment modeline ihtiyaç duymayacaktır.
  • #30: UML’in bahsettiğimiz faydaları sayesinde geliştirebileceğimiz çözümlerin pek çok çelişen ihtiyacı kolaylıkla tatmin edeceği düşüncesiyle, en sık verilen örnek Frank Lloyd Wright’ın “Fallingwater” adlı eseri olmuştur. Bir mimari şaheseri olarak kabul edilen ev, hem modern insanın ihtiyaçlarına hem de insanın doğasına uyarak geliştirilmiştir. Aynı zamanda, eser doğanın içinde bir bitki gibi doğal bir şekilde ‘yeşermiştir.’ Böyle yaklaşıldığında, yazılım terminolojisi kullanacak olursak, Gereksinim Yönetimi müşterinin güncel ve değişmez ihtiyaçlarını karşılamış, Analiz ve Tasarım müşteri istekleri ile tasarım kısıtlamalarına (Doğaya uyum, vs.) bağlı kalınarak gerçekleştirilmiştir. Mimarla ilgili daha detaylı bilgi için aşağıdaki linki kullanabilirsiniz: www.franklloydwright.org
  • #31: UML netice itibariyle sadece sembolik bir dildir. Öğrenmesi ve kullanması kolay bir sembolik dildir. Bununla birlikte, bu dil şirket ihtiyaçlarımıza göre kişiselleştirilmemiş bir süreç tanımıyla birlikte kullanılmadığı zaman eksiktir. UML kullanımı esnasında gözümüzden pek çok şey kaçabilir. Bunlardan en önemlileri, mevcut olduğunu varsaydığı pek çok çalışma türü ve ürünü, yazılım mühendisliği rolleri ve genel olarak yazılım mühendisliğ süreçleri açısından vermemiz gereken stratejik kararlardır. Eğitim esnasında bu konulardan pek çoğuna değineceğiz ve eğitimi takiben verdiğimiz uyarlama çalışmalarında bu kararları gerçek projenize yönelik olarak birlikte vereceğiz.
  • #32: Marantz ( http://www.marantz.com ) elektronik ses ve görüntü sistemlerinde kalitesiyle haklı bir ün kazanmış bir teknoloji şirketidir. Marantz’ın kaliteli tasarımlarının en uç noktasında ise elektronik mühendisi Ken Ishiwata’nın çalışmaları yer almaktadır. Ishiwata iyileştirdiği her Marantz ürününün üzerine imzasını atmakta ve ürün piyasaya bu şekilde verilmektedir. Ishiwata’nın konumuzla ilgisi ise, UML sayesinde yazılım mühendislerinin de altlarına imzalarını atabileceği, ürünün de ötesinde problem çözümü yöntemlerini tanıtıp yayabilecekleri bir ortam söz konusu olmaktadır. Bu düşünce doğrultusunda, UML’i değerlendirecek olursak, Yetenekli bilişim elemanları çalıştıkları şirketlerin ötesinde tanınabilecekler, Yeni mezunların ustaların bilgi edinmek için harcadıkları ‘dirsek çürütme’ süresi azalacak, Problem çözümü öğelerinin kendilerinin birer ürüne dönüşmeleri gerçekleşecek, İşverenler yazılımlarının kritik bölümlerini ayırarak, koruyup geliştirebilecekler ve Müteşebbis bilişim elemanları kendilerini gereksiz teknolojik detaylardan soyutlayarak, yeni iş fikirlerine odaklanabilecekler. Diğer bir deyişle, uzun zamandır anlaşma zorlukları yaşadıkları yönetim, satış ve pazarlama elemanları arasındaki yerlerini alabileceklerdir.
  • #33: UML ile mümkün olan fırsatlara bir kaç örnek verirsek, Menkul Kıymetler yazılımlarında uzman bir şirket olan İnfina, bu iş bilgisini edinmek isteyenlere UML süreci ve ürünleriyle satmıştır, Anadolu Hayat Java/J2EE platformuna geçerken satın almaya karar verdiği altyapıyı UML şemalarıyla incelemiş ve serçmiştir. Kazanan Cybersoft altyapısı olmuştur, İş bilgisini yazılım gereksinimlerine dönüştürmek işteyen ve bu yüzden UML öğrenenler doktorlar ve diğer iş erbabı istisna olmaktan çıkmıştır, Bir Alman şirketi kavramsal olarak zor bir konu olan sigortacılık için bir uygulama referans modeli geliştirmiş ve ücretsiz olarak kullanıma sunmuştur. Bu modeli geliştiren ve eksiksizleştiren IBM, aynı modeli Kore’li bir şirkete 2,500,000 USD’a satmıştır.
  • #35: İlham Kaynakları Max Goff: http://www.maxgoff.com Uzun yıllar Sun kadrosunda Teknoloji Yayıcı (Technological Evangelist) olarak çalışan Goff, bir süre önce Sun'daki görevinden ayrılarak kendi danışmanlık şirketini kurmuştu. Yazılımın insanlar üzerindeki sosyolojik ve ekonomik etkilerini düşüncelerine baz alan Goff'un en akılda kalıcı sözü ise: "If there is hope for humanity, it's in software" olmuştur.