Chapter 7 Tasarım ve Gerçekleştirim. Lecture 1. Chapter 7 Design and implementation

Benzer belgeler
Yazılım Mühendisliği 1

Özgür Yazılım Lisansları

Chapter 5 Sistem Modelleme. Lecture 1. Chapter 5 System modeling

Java Temel Özellikleri

BİLİŞİM SİSTEMLERİNİN PRENSİPLERİ

Chapter 8 Yazılım Testi. Lecture 1. Chapter 8 Software testing

BM208- Nesneye Dayalı Analiz ve Tasarım. Sunum 7

TÜMLEŞİK MODELLEME DİLİ. UML (Unified Modeling Language)

Chapter 6 Mimari Tasarım. Lecture 1. Chapter 6 Architectural design

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Sınıf Diyagramları Amaç: Sınıf Diyagramları Nasıl Çizilir?

UNICASE.... kapsamlı bir CASE* aracı. *

Öğretim planındaki AKTS Ulusal Kredi

Sistem Geliştirme Yaşam Döngüsü (The Systems Development Life Cycle) (SDLC)


Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

ÖZGÜR YAZILIMLAR İLE J2EE

Bölüm 2 Yazılım Süreçleri. Ders 1

NESNEYE YÖNELİK PROGRAMLAMA Unified Modelling Language (UML) Bütünleşik Modelleme Dili

Android e Giriş. Öğr.Gör. Utku SOBUTAY

BİLİŞİM SİSTEMLERİ GÜVENLİĞİNDE YENİ EĞİLİMLER

Veritabanı Uygulamaları Tasarımı

NESNEYE YÖNELİK PROGRAMLAMA. Yrd.Doç.Dr. Zeynep ORMAN

License. Veri Tabanı Sistemleri. Konular büyük miktarda verinin etkin biçimde tutulması ve işlenmesi. Problem Kayıt Dosyaları

Bir yazılım geliştirme metodolojisi aşağıdaki adımlardan meydana gelir; Yazılım geliştirme sürecine destek verecek araçlar, modeller ve yöntemler.

Ders Adı : Nesne Tabanlı Programlama-I Ders No : Teorik : 3 Pratik : 1 Kredi : 3.5 ECTS : 4. Ders Bilgileri.

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Açık Kaynak Kodlu Yazılım

NESNEYE YÖNELİK TASARIM SÜRECİ

Öğr. Gör. Serkan AKSU 1

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır.

İçindekiler. Okuma lisansı info acar, için verilmiştir. Çoğaltılması ve dağıtılması yasaktır.

İŞLETİM SİSTEMLERİ. (Operating Systems)

Veritabanı. Ders 2 VERİTABANI

MVP, Observer ve Mediator Örüntüleri ile Yeniden Kullanılabilir Uygulama Bileşenleri Geliştirme

IOT NEDİR? Bölüm 1. Internet of Things ekosistemi altında donanım, programlama, veri tabanı, veri analizi gibi alt yapılar yer almaktadır.

Client Server Database

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

WINDESKCONCENTO. sıgnum. Kurumsal İş Süreçleri Uygulamaları. windesk.com.tr

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

İnternet Programcılığı

LKD Kendi İlacını Kullanıyor

5. PROGRAMLA DİLLERİ. 5.1 Giriş

ESİS Projesi. Kaynaklar Bakanlığı

OPC Data Access (DA) Temelleri

Ben Sine CANBOLAT Türk Hava Kurumu Üniverstesi nde araştırma görevlisi olarak çalışmaktayım. Sizlere «E-Devlet Yazılım Çerçevesi: Sektörel Kazanımlar

YAZILIM MODELLEME VE TASARIM

TEMEL BİLGİ TEKNOLOJİLERİ KULLANIMI

Kullanım Durumu Diyagramları (Use-case Diyagramları)

Yaz.Müh.Ders Notları #6 1

ARDIŞIL DİYAGRAM YAPI DİYAGRAMI. Sistem Analizi ve Tasarımı Dersi

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Model Güdümlü Geliştirme ile Gömülü Kaynakların Yönetimi

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

PAPERWORK TEKNİK MİMARİ

VERİ TABANI YÖNETİM SİSTEMLERİ

Kurumsal Yönetim Sistemleri Sistemleri

I. Oturum: GNU/LINUX A GİRİŞ

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Özgür Yazılım ve GNU/Linux'a Giriş

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

ANKARA ÜNİVERSİTESİ ELMADAĞ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS İÇERİKLERİ

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Üst Düzey Programlama

Hızlı Uygulama Geliştirme (SE 340) Ders Detayları

SİSTEM VE YAZILIM. o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur.

Inovasyonu Hızlandırın

ALGORİTMA VE PROGRAMLAMA I

Özgür Yazılım Proje Yönetimi

SİSTEM MÜHENDİSLİĞİ TASARIMIN SENTEZLENMESİ II

Model Tabanlı Geliştirmede Çevik Süreç Uygulanması

1.Yazılım Geliştirme Metotları 1

COĞRAFİ BİLGİ SİSTEMLERİ SERVER MİMARİSİ SERVER UYGULAMA GELİŞTİRME EĞİTİMİ

Finans Dünyasında Linux ve Özgür Yazılımlar

Yazılım Mimari Tasarımından Yazılım Geliştirme Çatısının Üretilmesinde Model Güdümlü Bir Yaklaşım

VERİ TABANI YÖNETİM SİSTEMLERİ

Hızlı Sistem Kurulumu ve Yönetimi İçin Yeni Bir Yaklaşım: SUSE Stüdyo

Bilgisayarda Programlama. Temel Kavramlar

YZM 2108 Yazılım Mimarisi ve Tasarımı

1.1 Metodolojiyi Gerçeklemek Üzere Geliştirilen Altyapı

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

1.1. Yazılım Geliştirme Süreci

BSM 532 KABLOSUZ AĞLARIN MODELLEMESİ VE ANALİZİ OPNET MODELER

SEKTÖREL ÇÖZÜM GELİŞTİRME YÖNTEMLERİ

BİLİŞİM SİSTEMLERİNİN PRENSİPLERİ

EYLÜL 2012 İŞLETİM SİSTEMLERİ. Enformatik Bölümü

PHP ile İnternet Programlama

Film Arşiv Sistemi. Yazılım Tasarım Belgesi

BİL-141 Bilgisayar Programlama I (Java)

YRD. DOÇ. DR. AGÂH TUĞRUL KORUCU

1.PROGRAMLAMAYA GİRİŞ

Spring Ekosisteminde Kurumsal Yazılım Geliştirme. Kenan Sevindik Harezmi Bilişim Çözümleri A.Ş.

Servis olarak Altyapı

Amaç. Octopus Program, InoTec Akademi uzmanlarının on yılı aşan tecrübesi ile hazırladığı, bir uzmanlık seviyesi belirleme ve geliştirme programıdır.

SİSTEM ANALİZİ VE TASARIMI

Transkript:

Chapter 7 Tasarım ve Gerçekleştirim Lecture 1 1

Konular UML ile nesneye dayalı tasarım Tasarım Desenleri Gerçekleştirim konuları Açık kaynak gerçekleştirim 2

Tasarım ve Gerçekleştirim Yazılım tasarımı ve geliştirme, yazılım mühendisliğinin çalıştırılabilir bir yazılım sistemi geliştirme aşamasıdır. Tasarım ve gerçekleştirim aşamaları iç içe geçmiş aşamalardır Tasarım aşaması, müşterinin gereksinimleri doğrultusunda yazılım bileşenlerinin belirlendiği ve bu bileşenlerin ilişkilerinin tanımlandığı yaratıcı bir aşamadır. Gerçekleştirim aşaması, tasarımın bir program olarak gerçekleştirilmesi aşamasıdır. 3

Geliştirmek mi? Satın almak mı? Bir çok alan için, raf ürünü haline gelmiş hazır yazılım sistemlerini satın alıp kullanıcının ihtiyacına uygun hale getirmek mümkün. Örneğin, bir hastane bilgi sistemi geliştirmek istiyorsanız, hali hazırda hastanelerde kullanılan bir sistemi satın almak, bir programlama dili ile bu sistemi baştan geliştirmekten daha ucuz ve hızlı olacaktır. Eğer uygulamanızı bu yaklaşımla geliştiriyorsanız tasarım aşaması, kullanıcı gereksinimlerini karşılayacak biçimde sistemi nasıl ayarlarım sorusuna indirgenebilir. 4

Nesneye Dayalı Bir Tasarım Süreci Yapısal nesneye dayalı tasarım süreçleri birkaç farklı sistem modeli geliştirilmesini içerir Bu süreçler, modellerin geliştirilmesi ve bakımı için oldukça fazla efor gerektirirler. Bu durum, küçük sistemler için maliyet-etkin olmaz. Ancak, farklı gruplar tarafından geliştirilen büyük sistemler için bu modeller iyi birer haberleşme mekanizması görevi görürler. 5

Sürecin aşamaları Sürecin nasıl organize edildiğine bağlı olarak birçok tipte farklı nesneye dayalı tasarım süreçleri vardır. Bu süreçlerin ortak olarak bulundurdukları aşamalar: Sistemin bağlamının ve kullanım biçimlerinin tanımlanması Sistemin mimarisinin tanımlanması Sistemin temel nesnelerinin belirlenmesi Tasarım modellerinin geliştirilmesi Nesne arayüzlerinin tanımlanması Bu sunumum devamında hava durumu tahmin istasyonu örneğini kullanacağız. 6

Sistemin bağlamı ve etkileşimleri Geliştirilmekte olan sistemin ve bu sistemin kullanılacağı çevrenin arasındaki ilişkilerin anlaşılması, gereksinim duyulan sistem fonksiyonelliklerinin nasıl sağlanacağı ve sistemin çevresi ile nasıl iletişimde olacağı konusuna temel teşkil eder. Sistemin bağlamının anlaşılması aynı zamanda sistemin sınırlarının belirlenmesinde kullanılır. Bu da, hangi fonksiyonelliklerin sistemde yer alacağı ve hangilerinin almayacağı sorusuna cevap bulmakta yardımcı olur. 7

Bağlam ve Etkileşim Modelleri Bir içerik modeli, geliştirilmekte olan sistemin çevresinde bulunan diğer sistemleri gösteren yapısal bir modeldir. Bir etkileşim modeli, geliştirilmekte olan sistemin çevresindeki sistemlerle nasıl etkileşeceğini gösteren dinamik bir modeldir. 8

Hava tahmin istasyonu için sistem bağlamı 9

Hava tahmin istasyonu kullanım durumları 10

Kullanım durumu tanımı Hava tahminini raporla Sistem Kullanım Durumu Aktörler Tanım Uyarıcılar Yanıt Yorumlar Hava tahmin istasyonu Hava tahminini raporla Hava durumu bilgi sistemi, hava tahmin istasyonu Hava tahmin istasyonu, veri toplama periyodunda cihazlardan topladığı bilgilerin bir özetini Hava durumu bilgi sistemine gönderir. Gönderilen veri, toprak ve havanın maksimum, minimum ve ortalama sıcaklıkları; maksimum minimum ve ortalama hava basıncı değerleri; maksimum minimum ve ortalama rüzgar hızı değerleri; toplam yağış miktarı ve 5 dakika aralıklarla ölçülen rüzgar yönü bilgileridir. Hava durumu bilgi sistemi bir uydu bağlantısı üzerinden hava tahmin istasyonu ile bir bağlantı kurar ve ilgili bilgileri ister. Özetlenen bilgiler Hava durumu bilgi sistemine gönderilir. Hava tahmin istasyonlarından genellikle saatte bir veri göndermesi istenir ancak bu sıklık bir istasyondan diğerine değişebilir ve gelecekte bu veri isteme periyodu değiştirilebilir. 11

Mimari tasarım Geliştirilmekte olan sistemin ve çevresinin etkileşimi anlaşıldıktan sonra bu bilgi sistemin mimarisini geliştirirken kullanılabilir. Sistemi oluşturan büyük bileşenler ve bunlar arasındaki ilişkiler belirlenir. Katmanlı mimari, istemci-sunucu modeli gibi mimari desenlerden biriyle bu bileşenler organize edilebilir. Hava durumu istasyonu, ortak bir altyapı üzerinden yayın yaparak birbirleri ile haberleşen bağımsız bileşenlerden oluşmaktadır. 12

Hava tahmin istasyonu için yüksek seviyeli bir mimari model 13

Veri toplama sisteminin mimarisi 14

Nesne sınıflarını belirleme Nesne sınıflarının belirlenmesi aşaması, nesneye dayalı tasarımın zor bir bölümüdür. Nesne sınıflarını belirlemek için sihirli bir formül yoktur. Bu iş biraz yetenek, tecrübe ve saha bilgisi gerektirir. Nesne sınıfı belirleme süreci tekrarlı bir süreçtir. İlk seferinde bütün sınıflar doğru olarak belirlenemeyebilir. 15

Nesne sınıflarını belirleme yaklaşımları Sistemin tanımı için doğal bir dili temel alan kurallı bir yaklaşım kullanılabilir. Uygulama alanındaki somut nesneler temel alınarak sınıflar belirlenebilir. Nesnelerin hangi davranışla nelere müdahil olduklarını belirlemek için davranışsal bir model kullanılabilir. Senaryo tabanlı analizler kullanılabilir. Her bir senaryodaki nesneler, özellikler ve metodlar belirlenebilir. 16

Hava tahmin istasyonu için bir tanım Hava tahmin istasyonu, cihazlardan bazı bilgileri toplayan; bu bilgiler üzerinde bazı başlangıç veri işleme süreçlerini gerçekleştiren ve verileri veri yönetim sistemine ileten bir yazılım paketidir. Cihazlar şunlardır: toprak ve hava termometresi, rüzgar hızı ölçer, rüzgar yönü ölçer, barometre ve yağış ölçer. Veriler periyodik olarak toplanır. Hava durumu bilgisini iletmesi için bir komut aldığı zaman hava tahmin istasyonu, topladığı verileri özetler ve işler. Bir istek alındığı zaman özetlenen veri, daha önceden belirlenen bir bilgisayara iletilir. 17

Hava tahmin istasyonu nesne sınıfları Hava tahmin istasyonu için nesne sınıflarını belirleme işi somut nesneler ve veri üzerinden gerçekleştirilebilir. Toprak termometresi, Rüzgar Hızı Ölçer, Barometre Application domain objects that are hardware objects related to the instruments in the system. Hava tahmin istasyonu Hava tahmin istasyonunun temel arayüzü. Bu arayüz, kullanım durumu modellerindeki etkileşimleri yansıtır. Hava durumu bilgisi Cihazlardan alınan bilgileri kapsar. 18

Hava tahmin istasyonu nesne sınıfları 19

Tasarım modelleri Tasarım modelleri nesneler ve nesne sınıfları ve bunlar arasındaki ilişkileri gösterir. Statik modeller, sistemi nesne sınıfları ve bunların ilişkileri cinsinden statik olarak gösterir. Dinamik modeller, nesneler arasındaki dinamik etkileşimleri gösterir. 20

Tasarım modelleri örnekleri Alt sistem modelleri, nesnelerin mantıksal olarak ilgili alt sistemler altında gruplanmasını gösterir. Sequence modelleri, nesne etkileşimlerinin sırasını gösterir. Durum makinesi modelleri, bireysel nesnelerin olaylara karşın durumlarını nasıl değiştirdiklerini gösterir. Diğer bazı modeller şöyledir: kullanım durumu modelleri, toplanım modelleri, genelleme modelleri vb. 21

Alt sistem modelleri Tasarımın mantıksal olarak birbirleri ile ilgili nesnelerin grupları olarak nasıl organize edildiklerini gösterir. UML de bunlar paketler olarak gösterilir ve bu bir mantıksal modeldir. 22

Sequence modelleri Sequence modelleri, nesne etkileşimlerinin sırasını gösterir. Nesneler en üstte yatay olarak sıralanır. Zaman dikey olarak gösterilir. Etkileşimler etiketlenmiş oklar ile gösterilir. Farklı tip okların farklı anlamları vardır. Bir nesnenin yaşam sürecindeki kalın dikdörtgen çizgi ile gösterilen kısmı, nesnenin kullanıldığı zamanı gösterir. 23

Veri toplama işini tanımlayan sequence diyagramı 24

Durum diyagramları Durum diyagramları, bireysel nesnelerin olaylara karşın durumlarını nasıl değiştirdiklerini gösterir. Bir sistemde her zaman ihtiyaç duyulmaz. Bir sistemdeki çoğu nesne basittir ve durum diyagramı gereksiz karmaşıklık ekler. 25

Hava tahmin istasyonu durum diyagramı 26

Arayüzün belirlenmesi Farklı nesnelerin ve bileşenlerin paralel olarak tasarlanmaları için nesne arayüzlerinin belirlenmesi zorunludur. Arayüz nesnenin içerisine gizlenmiş olarak tasarlanmalıdır. Nesneler farklı metodlara göre farklı arayüzlere sahip olabilirler. UML arayüz belirleme için sınıf diyagramlarını kullanır. Java da kullanılabilir. 27

Hava tahmin istasyonu arayüzleri 28

Chapter 7 Tasarım ve Gerçekleştirim Lecture 2 29

Tasarım desenleri Bir tasarım deseni, bir problem ve çözümü hakkındaki özet bilginin yeniden kullanımı için bir yoldur. Bir desen, bir problemin ve o problemin çözümünün esaslarının tanımıdır. Farklı ayarlarla kullanılabilecek kadar özet olmalıdır. Desen tanımları genellikle kalıtım ve çok biçimlilik gibi nesneye dayalı karakteristikler kullanır. 30

Desen bileşenleri İsim Anlamlı bir tanımlayıcı Problemin tanımı Çözümün tanımı Tam bir tasarımdan ziyade farklı yollarla örneklenebilecek bir çözüm taslağı Sonuçlar Sonuçları ve desenin avantaj/dezavantaj ilişkisi 31

Observer (Gözlemci) deseni İsim Gözlemci. Açıklama Bir nesnenin durumunun gösterimini nesnenin kendisinden ayırır. Problemin tanımı Bir durumun birçok gösterimi gerekli olduğu zaman kullanılır. Çözümün tanımı Takip eden sayfalara bakınız. Sonuçlar Gösterim performansını geliştirecek olan optimizasyonlar pratik değildir. 32

Observer (Gözlemci) deseni (1) Desen adı Açıklama Problemin tanımı Observer (Gözlemci) Separates the display of the state of an object from the object itself and allows alternative displays to be provided. When the object state changes, all displays are automatically notified and updated to reflect the change. In many situations, you have to provide multiple displays of state information, such as a graphical display and a tabular display. Not all of these may be known when the information is specified. All alternative presentations should support interaction and, when the state is changed, all displays must be updated. This pattern may be used in all situations where more than one display format for state information is required and where it is not necessary for the object that maintains the state information to know about the specific display formats used. 33

Observer (Gözlemci) deseni (2) Pattern name Çözümün tanımı Observer This involves two abstract objects, Subject and Observer, and two concrete objects, ConcreteSubject and ConcreteObject, which inherit the attributes of the related abstract objects. The abstract objects include general operations that are applicable in all situations. The state to be displayed is maintained in ConcreteSubject, which inherits operations from Subject allowing it to add and remove Observers (each observer corresponds to a display) and to issue a notification when the state has changed. The ConcreteObserver maintains a copy of the state of ConcreteSubject and implements the Update() interface of Observer that allows these copies to be kept in step. The ConcreteObserver automatically displays the state and reflects changes whenever the state is updated. Sonuçlar The subject only knows the abstract Observer and does not know details of the concrete class. Therefore there is minimal coupling between these objects. Because of this lack of knowledge, optimizations that enhance display performance are impractical. Changes to the subject may cause a set of linked updates to observers to be generated, some of which may not be necessary. 34

Observer (Gözlemci) desenini kullanan çoklu gösterimler 35

Observer (Gözlemci) deseni için bir UML modeli 36

Tasarım Problemleri Bir deseni kullanmak için, karşılaştığınız problemle ilgili hazır bir desenin varlığından haberdar olmanız gerekir. Observer deseni Façade deseni Iterator deseni Decorator deseni 37

Gerçekleştirim konuları Buradaki odak konumu programlama değil. Programlama önemli bir kondur ancak, diğer önemli gerçekleştirim konuları programlama kitaplarında pek yer almaz. Yeniden Kullanım Çoğu modern yazılım, var olan sistemlerin bileşenlerinin yeniden kullanımı ile gerçekleştirilir. Bir sistemi geliştirmeye başlamadan önce var olan kodları kullanıp kullanamayacağınıza bakmalısınız. Konfigürasyon Yönetimi Geliştirme sürecinde, her bir yazılım bileşeninin farklı sürümlerini bir konfigürasyon yönetim sistemi ile takip etmelisiniz. Host (geliştirme ortamı)-target (çalışma ortamı) geliştirme Yazılım ürünleri genellikle geliştirildikleri bilgisayarlardan farklı bilgisayarlarda kullanılırlar. 38

Yeniden kullanım 1960 lardan 1990 lara kadar çoğu yazılım sistemi yüksek seviyeli programlama dilleri ile yazılarak büyük zorluklarla geliştirildi. Uygulanan tek yeniden kullanım yöntemi, programlama dillerinin kütüphanelerinde bulunan nesneleri veya fonksiyonları yeniden kullanmak şeklindeydi. Zaman ve maliyet baskıları bu yöntemi faydasız kıldı. Böylece var olan yazılımların yeniden kullanılması ile geliştirme yaklaşımı ortaya çıktı. 39

Yeniden kullanımın seviyeleri Özetleme seviyesi Bu seviyede bir yazılımın kendisini yeniden kullanmazsınız. Onu geliştirirken elde ettiğiniz tecrübeyi yeniden kullanırsınız. Nesne seviyesi Bu seviyede yeniden yazmak yerine bir kütüphanedeki hazır nesneleri kullanırsınız. Bileşen seviyesi Bileşenler,uygulamalarınızda kullanabileceğiniz nesneler ve nesne sınıfları topluluğudur. Sistem seviyesi Bu seviyede bütün sistemi yeniden kullanırsınız. 40

Yeniden kullanımın maliyetleri Yeniden kullanılabilecek bir yazılımın var olup olmadığına ve uygunluğuna bakmak için harcanan zaman. Eğer mevcutsa, yeniden kullanılabilir yazılımın satın alma maliyeti.büyük satılmaya hazır sistemler için bu maliyet yüksek olabilir. Geliştirmekte olduğunuz sistemin gereksinimlerini karşılayabilmeleri için var olan yeniden kullanılabilir bileşenlerin veya sistemlerin ayarlanması (konfigürasyonu) ve adapte edilmesi. Eğer farklı firmaların bileşenlerini kullanıyorsanız veya kodların bir kısmını kendiniz geliştirdiyseniz, bu bileşenlerin birbirleri ile uyumlu çalışması için bütünleştirme maliyeti. 41

Konfigürasyon Yönetimi Konfigürasyon yönetimi, yazılım sistemindeki değişiklikleri yönetme sürecine verilen isimdir. Konfigürasyon yönetiminin amacı sistemin entegre edilme sürecini desteklemektir. Bu amaçla, bütün geliştiriciler proje kodlarına ve dokümanlarına kontrollü olarak erişim sağlarlar, ne gibi değişikliklerin yapıldığını görürler ve bileşenleri derleyerek sistemi oluştururlar. 42

Konfigürasyon Yönetimi Aktiviteleri Sürüm yönetimi, sistem bileşenlerinin farklı sürümlerinin izlerinin tutulması için destek sağlar. Sürüm yönetim sistemleri, farklı programcıları koordine edebilecek şeyler barındırmalıdır. Sistem entegrasyonu, sistemin hangi sürümü için bileşenlerin hangi sürümlerinin kullanıldığını tanımlamak için destek sağlar. Bu bilgi daha sonra bir sistemin otomatik olarak derlenmesi ve bağlanması için kullanılır. Ör: Microsoft Team Foundation Server Problem izleme, kullancıların program hatalarını ve problemlerini rapor edebilmeleri ve geliştiricilerin bu problemler üzerinde kimlerin çalıştıklarını ve ne zaman düzeltildiklerini görebilmeleri için destek sağlar. Ör: Mozilla Foundation Bugzilla. 43

Host (geliştirme ortamı)-target (çalışma ortamı) geliştirme Çoğu yazılım bir bilgisayarda geliştirilir ancak başka bir bilgisayarda çalışır. Daha genel bir ifadeyle, bir geliştirme platrofmu ve çalışma platformundan bahsedebiliriz. Bir platform donanımdan fazlasıdır. Yüklü olan işletim sistemini, veritabanı yönetim sistemi, geliştirme platformları gibi diğer yardımcı yazılımları içerir. 44

Geliştirme platform araçları Kod oluşturmanızı ve derlemenizi sağlayan bütünleşik bir derleyici barındıran ve söz dizimi kontrolü yapan bir editör. Bir dil hata ayıklama sistemi. UML modelleri gibi modelleri düzenlemeye yarayan bir editör. Programın yeni bir sürümü için otomatik olarak test oluşturulabilecek ve çalıştırılabilecek bir test aracı. Geliştirilen kodları farklı projeler için organize eden proje destek araçları. 45

Integrated development environments (IDEs) Bütünleşik Geliştirme Ortamları Geliştirme araçları genellikle IDE ler içerisinde toplanır. IDE ler belirli bir programlama dilini desteklemek için yaratılabileceği gibi genel amaçlı da olabilir. 46

Açık Kaynak Geliştirme Açık kaynaklı geliştirme, geliştirilen sistemin kaynak kodlarının yayınlandığı ve gönüllülerin geliştirme sürecine dahil olmaları için davet edildiği bir yaklaşımdır. Kökleri Free Software Foundation a (www.fsf.org) dayanır. Bu vakıf, kaynak kodun sahipliğinin olmaması gerektiğini ve kullanıcılar için açık olması gerektiğini savunur. 47

Açık kaynaklı sistemler En iyi bilinen açık kaynaklı ürün Linux işletim sistemidir. Diğer önemli açık kaynaklı ürünler Java, Apache web server ve mysql veritabanı yönetim sistemidir. 48

Açık kaynaktaki problemler Geliştirilmekte olan sistemde açık kaynaklı bileşenler kullanılmalı mı? Geliştirme süreci için açık kaynak yaklaşımı kullanılmalı mı? 49

Açık kaynaklı ürün ticareti Daha fazla sayıda firma açık kaynaklı yaklaşımı benimsemekte. Bunların iş modeli yazılım satma üzerine kurulmamış, yazılıma destek verme üzerine kurulmuştur. Bunlar, açık kaynaklı geliştirme ile yazılımın daha hızlı ve daha ucuza geliştirilebileceğini ve bunun da bir kullanıcı topluluğu yaratacağına inanırlar. 50

Açık kaynağın lisanslanması Açık kaynağın temel prensiplerinden biri herkesin kodlara serbestçe erişebilmesidir ancak bu herkesin her istediğini yapabileceği anlamına gelmez. Hukuken, kodun geliştiricisi kodun sahibidir ve kodun kullanımı ile ilgili kısıtlamalar belirleyebilir. Bir kısım geliştiriciler, eğer bir sistemde açık kaynaklı bir bileşen kullanılmışsa sistemin tamamının açık kaynaklı olması gerektiğine inanırlar. Diğer bir kısım geliştiriciler ise, bu kısıtlama olmadan kodlarının kullanılabilmesine izin verirler. Geliştirilen sistem tamamen kapalı kaynak kodlu olarak satılabilir. 51

Lisanslama modelleri GNU General Public License (GPL). Aynı zamanda iki taraflı lisanslama olarak da bilinir. Eğer GPL lisansı altındaki bir açık kaynaklı yazılımı kullanırsanız, geliştirdiğiniz yazılım da açık kaynak kodlu olmak zorundadır. GNU Lesser General Public License (LGPL), GPL lisansının bir türüdür. GPL lisansı kullanan açık kaynaklı bileşenlere bağlantı yapan ancak kodlarını yayınlamadığınız bileşenler geliştirebilirsiniz. Berkley Standard Distribution (BSD) License. Bu, iki taraflı olmayan bir lisans türüdür. Açık kaynak üzerinde yaptığınız hiçbir değişikliği yayınlamak zorunda değilsinizdir. Bu lisans altındaki kodları, tescillenen ve satılan sistemlerde kullanabilirsiniz. 52

Lisans yönetimi İndirilen ve kullanılan açık kaynaklı bileşenlerin bilgilerini tutmak için bir yöntem kullan. Değişik lisanslama tiplerinin farkında ol ve bir bileşeni kullanmadan önce lisansı hakkında bilgi edin. Çalışanları açık kaynak hakkında eğit Yerinde denetleme sistemine sahip ol. Açık kaynak topluluklarına katıl. 53