Ünite 2: Bilgi Sistemlerinin Geliştirilmesi

Giriş

Bilgi sistemleri; yazılım, donanım, veri ve birden fazla kişinin taraf olduğu iletişim ve ağ teknolojileri içeren karmaşık yapılardır. Bu nedenle bilgi sistemlerinin geliştirilmesi için standart hâle getirilmiş yöntemleri içeren modeller (sistem geliştirme modelleri olarak adlandırılır) kullanılmaktadır. Sistem geliştirme modelleri çerçevesinde; bilgi sistemi projelerinin yönetiminin kontrolü sağlanmakta ve uygulanılan yöntemler tanımlanmaktadır. Modeldeki veri ve süreç tanımları ile iş ürünleri (diyagramlar, belgeler, formlar, veri ve raporlar, v.b.) üretilmekte, kilometre taşları belirlenmekte ve kalite yönetimi sağlanmaktadır. Günümüzde işletmeler standartlaştırılmış sistem geliştirme modellerini, artan biçimde projelerine uyumlandırarak kullanmaktadır. Sistem geliştirme modellerinin kullanımı ile farklı projeler arasında aynı kaynakların paylaşılması sağlanmıştır. Ayrıca tutarlı belgeleme ile de, sistemlerin yaşam boyu bakım masrafları azaltılmaktadır. İlave olarak, kamu ya da büyük işletmeler tarafından talep edilen sistemlerin geliştirilmesinde kalite yönetim gereksinimleri de zorunluluk olarak istenmektedir. Sistem geliştirme modelinin tutarlı olarak kullanımı kalite yönetimini de destekleyecektir.

Bilgi Sistemleri Geliştirme

Sistem Geliştirme Yaşam Döngüsü, bilgi sistemi geliştirilirken uygulanan fazların kavramsal bir modelidir. Bu kitapta sistemlerin geliştirilmesinde kullanılan SGYD modeli 6 temel fazdan oluşmaktadır. Bu fazlar; Kapsam ve Planlama, Gereksinim Analizi, Tasarım, Gerçekleştirme ve Test, Kurulum ve Dağıtım, Operasyon ve Bakım biçiminde sıralanır. Farklı sistem geliştirme modellerinde farklı sayıda faz olabilir. Faz sayısı konusunda analistler farklı görüşte olsalar da (tanımlar 3 fazdan 20 faza kadar değişebilmektedir), bu fazlarda ifade edilen genel yaklaşımın kullanılmasının gerekliliği konusunda herkes ortak anlayıştadır. SGYD fazları sıralı olarak verilmiş olmakla beraber sıralı uygulanması gerekli değildir. Bu fazlar projeye bağlı olarak gerektiğinde kullanılabileceğini göstermektedir. Örneğin SGYD’ nin herhangi bir fazında projedeki gerekliliklere göre daha önceki fazlara geri dönülebilir. Benzer biçimde iyi çalışmayan bir ürün kullanımdan geri çekilerek tekrar geliştirilmek üzere başlangıç fazına geri döndürülebilir. SGYD’ de bir fazdaki bazı faaliyetleri diğer fazdaki faaliyetlerle birlikte tamamlamak ta mümkündür. Büyük işletmeler genel olarak kendileri için özel olarak geliştirdikleri SGYD modellerini kullanırlar.

  • Kapsam ve Planlama: Sistem geliştirmenin bu fazında sistem analisti, problemlerin, fırsatların ve amaçların belirlenmesi ile ilgilenir.
  • Gereksinim Analizi: Analistin ilgileneceği bir sonraki görev sistem gereksinimlerinin analizidir. Analist, veri akış diyagramları, faaliyet diyagramları gibi araçları kullanarak geliştirilen sistemdeki tüm verilerin ve özelliklerinin yer aldığı bir sözlük oluşturur.
  • Tasarım: SGYD’nin bu fazında, sistem analisti bilgi sisteminin mantıksal tasarımı için önceden toplanan bilgileri kullanır. Kullanıcıların bilgi sistemine doğru veri girişi yapabilmeleri için yöntemleri tasarlar.
  • Gerçekleştirme ve Test: Tasarım fazında özellikleri belirlenen sistem bu fazda gerçeklenir ve test edilir.
  • Kurulum ve Dağıtım: Bu fazda analist bilgi sisteminin kurulumuna yardım eder. Kullanıcılara yazılım sağlayıcıları tarafından eğitim verilir.
  • Operasyon ve Bakım: Sistem kurulduktan sonra sürdürülmelidir. Diğer bir ifade ile bilgisayar programları uyarlanmalı ve güncel tutulmalıdır. Sistemi sürdürmek için harcanan zamanın, sistem geliştirme için harcanan zamanın %60’ına kadar ulaşabileceği tahmin edilmektedir.

Bilgi Sistemleri Geliştirme Modelleri

Sistem analizi ve tasarım süreçlerini farklı yaklaşımlar ile gerçekleştiren birçok model vardır. Bu modeller ile farklı uygulama alanlarındaki bilgi sistemlerinin uygun sistem analizi ve gerçekleştirme araçları ile geliştirilmesi desteklenmiş olur. Sistem geliştirme yazılım modellerinden Doğrusal Ardışık Model, Prototip Model, Artımlı Model, Spiral Model, Bileşen Tabanlı Geliştirme Modeli ve Çevik Model bu özette ele alınacaktır.

  • Doğrusal Ardışık Model: Sistem analizi ve tasarımında kullanılan Doğrusal ardışık model yaklaşımında fazlar sadece bir defa olmak üzere sıra ile işletilir. Doğrusal ardışık model aynı zamanda Şelale Modeli (WaterFall Model) olarak da isimlendirilir. Bu model yukarıda belirtilen bilgi sistemleri sistem geliştirme yaşam döngüsü modeli ile aynı fazları işlemektedir. Doğrusal ardışık model, her bir fazında gerçekleştirilen faaliyetler ve belgeleme ile yöneticilerin proje planlarına göre ilerlemeyi izlemelerine imkân sağlar. Bununla birlikte projenin esnek olmayan şekilde alt fazlara bölünmüş olması en önemli problemini oluşturur. Bu nedenle Doğrusal ardışık model en eski ve en yaygın kullanılan model olmakla birlikte, verimliliği en aktif destekleyenler tarafından bile sorgulanmaktadır.,
  • Prototip Model: Bazı projelerde müşteri, sistemin genel hedeflerini tanımlar fakat ayrıntılı girdi, iş süreçleri veya çıktı gereksinimlerini belirtmez. Bazı durumlarda da geliştirme ekibi kullanılacak işletim sisteminden, yazılım verimliliğinden ve insan makine arayüzlerinin nasıl olması gerektiğinden emin olmayabilir. Bu ve benzeri durumlarda gereksinim oluşturmada prototip yaklaşımı en uygun yöntem olacaktır. Prototip modelde ilk adım müşteri istekleri doğrultusunda gereksinimlerin belirlenmesidir. Geliştirme ekibi ve müşteri birlikte yazılımın tüm hedeflerini tanımlar, mümkün olabildiği kadarıyla gereksinimleri belirler ve açık kalan alanları kayıt altına alır. Devamında sistemin kullanıcılar tarafından görülür kısımları için hızlı bir tasarım yapılır. Hızlı tasarımın devamında prototip geliştirilir. Prototip, kullanıcılar tarafından değerlendirildikten sonra gereksinimler tekrar gözden geçirilir ve süreç tekrar başlar. Prototip modelde iterasyon (döngü), ürünün gelişimi müşterinin gereksinimlerini oluşturuncaya ve geliştiricilerin ne yapılması gerektiğini anlamasına kadar devam eder. İdealde prototip, sistemin tüm gereksinimlerinin belirlenmesine yardımcı olur. Prototip modelde, başlangıçta müşteri ile geliştirilen prototipin gereksinimleri tanımlamak için bir mekanizma olduğu konusunda anlaşılmalıdır. Gereksinimler açık olarak tanımlandıktan sonra prototip atılmalı ve gerçek yazılım, kalite, bakım ve yapılabilirlik özellikleri ile yeni baştan ele alınmalıdır.
  • Artımlı Model: Artımlı model (Incremental model), ilk uygulamanın oluşturularak kullanıcı görüşüne başvurulması ve istenilen son sistem geliştirilinceye kadar birçok sürüm oluşturulması fikrine dayanır. Tasarım ve Özellikleri oluşturma, Geliştirme ve Testler ayrı ayrı yapılmak yerine her bir ara sürüm için ayrı ayrı ve paralel yapılır. Artımlı model, Doğrusal ardışık model ile Prototip modeldeki iteratif yaklaşımın birleşimidir. İteratif yapısıyla e-ticaret ve masaüstü sistemlerin geliştirilmesinde Doğrusal ardışık modelden daha iyi bir yaklaşımdır. Artımlı model geliştirilen sistemi birçok alt sürümden oluşacak şekilde Doğrusal ardışık modeldeki yaklaşımı kullanarak zaman içinde aşamalı olarak gerçekleştirir. Her bir yeni sürüm müşterinin ihtiyacı olan bir özelliği sistem içine ekler. Genelde sistemin ilk iterasyonları daha önemli ve acil özellikleri içerir. Yazılımın artan şekilde geliştirilmesi tasarım ve geliştirme aşamalarında değişikliklerin daha kolay ve az maliyetli yapılmasını sağlar. Bu iteratif yaklaşım, bir sürümde sisteme eklenilen özellik istenileni sağlamıyorsa izleyen sürümde değişiklik yapma ve ihtiyaçları karşılayan bir sürüm oluşturulmasına imkân verir. Örneğin kelime işlemci yazılımı gerçekleştirilirken ilk sürüm; dosya yönetimi, yazı düzenleme ve belge üretme fonksiyonlarını içerirken, ikinci sürümde; hece sayımı, gramer kontrolü, üçüncü sürümde; gelişmiş sayfa yapısı fonksiyonları vb. gerçeklenmiş olur. Artımlı modelde üretilen ilk sürüm temel özellikleri taşıyan ana üründür.
  • Spiral Model: Spiral model, Prototip modelin iteratif yapısının, Doğrusal ardışık modelin sistematik yaklaşımıyla kontrol edilmesini sağlayan evrimsel bir modeldir. Sistem yazılımının artan sürümlerinin hızlı geliştirilmesine olanak tanır. Bu modelde de yazılım artan sürümler hâlinde geliştirilir. İlk iterasyonlardaki artan sürümler kâğıt üzerindeki gereksinimleri veya prototipi oluştururken ilerleyen iterasyonlarda sistemi tam olarak gerçekleyen artan sürümler geliştirilmiş olur. Spiral modelde sistem geliştirme tipik olarak 3 ile 6 arasında değişen sayıda bölümden oluşan çerçeve faaliyetlerine bölünmüştür. Bu bölümler; müşteri iletişimi, planlama, risk analizi, mühendislik, gerçekleştirme ve kurulum, müşteri değerlendirmesi olarak belirlenmiştir.
  • Bileşen Tabanlı Geliştirme Modeli: Nesne tabanlı teknolojiler Bileşen tabanlı geliştirme modelinin (Component-based development model) teknik çerçevesini oluşturur. Nesne, içinde veri ve bu veriler üzerinde işlem yapacak olan metotları bulunduran yazılım bileşenidir. Nesneler her uygulamada tekrar kullanılabilir. Bir nesne yapısı, bir sınıf (class) içinde tanımlanır. Sınıf içinde nesneyi oluşturan üye değişkenler ve metotlar açıkça tanımlanır. Eğer uygun bir şekilde tasarlanır ve geliştirilirse nesne tabanlı sınıflar farklı uygulamalar arasında ve bileşen tabanlı sistem mimarilerinde kullanılabilir. Bileşen tabanlı geliştirme modeli, Spiral modelin bölümlerini uygular. Bununla birlikte, bileşen tabanlı modelde mühendislik, gerçekleştirme ve kurulum bölümlerinde hazır paketlenmiş yazılım bileşenleri (sınıflar) kullanılır. Mühendislik bölümü çalışmaları aday bileşenlerin tanımlamalarıyla başlar. Çözümde kullanılacak veri ve algoritmalardan bileşenler oluşturulur. Aday bileşenler tanımlandıktan sonra, geçmiş bilgi sistemi geliştirme projelerindeki bileşenlerden oluşturulmuş olan bileşen kütüphanesinden halen mevcut ya da yakın bileşenler bulunur ve yeniden kullanılır. Eğer aday bileşen kütüphanede yoksa nesne tabanlı metotlar ile geliştirilir. Son aşamada da kütüphaneden çıkarılan bileşenler ve uygulama ihtiyaçları doğrultusunda yeni geliştirilmiş bileşenler ile sistem geliştirilerek spiralin ilk iterasyonu tamamlanmış olur. Bileşen tabanlı model tekrar kullanılabilirliği destekleyerek kaynak (maliyet, zamanlama) kullanımında önemli kazanımlar sağlar.
  • Çevik Model: Çevik model (Agile Model) sistemin gereksinimlerini belirleme, tasarım, geliştirme ve kurulumunda artan yaklaşımı kullanır. Geliştirme sürecinde sistem gereksinimleri genelde değiştiği durumlarda Çevik model en uygun yaklaşımlardan biridir. Çevik modelde çalışan yazılım müşteriye hızlıca verilerek, yeni ve değişen gereksinimler ileri iterasyon- larda dâhil edilir. Burada amaçlanan, uzun zaman alan belgelemeyi azaltarak, tüm çabayı sistem geliştirmeye vermektir. Çevik modelin uygulanmasında dört teknik yaklaşım ön plandadır. Bunlar: kısa sürede sürüm teslimi (2 haftada bir), haftada 40 saat uygulama geliştirme (belgeleme yok), müşteri ile içi içe geliştirme ve çift kişi programlamadır. Çevik model kullanan yaklaşımlar, Uç Programlama (eXtreme Programming), Adaptif Yazılım Geliştirme (Adaptive Software Development), Scrum ve Özellik Güdümlü Programlamadır (Feature Driven Development).
  • Scrum: Scrum yaklaşımı çevik yöntemlerin teknik yaklaşımları yerine iteratif geliştirme yöntemine odaklanmış bir çevik metottur. Scrum’ da 3 faz vardır. Birinci fazda proje genel hedefleri ve yazılım mimarisinin tasarımını oluşturmak üzere ana hat planlama yapılır. Bu aşamada oluşturulan projenin ana gereksinimleri önem sırasına göre bir liste (Product Backlog) olarak toplanır (Faz 1). Bu aşamayı her turda sistemde bir artım sağlayan sprint devirleri (sprint cycle) takip eder (Faz 2). Son aşamada da ürün belgeleri (yardım belgeleri, kullanıcı el kitapları) ve projeden elde edilen deneyimlerin değerlendirildiği proje kapanış fazı vardır (Faz 3). Scrum yaklaşımının iteratif yapısını 2’nci fazdaki Scrum sprint devri oluşturur. Sprint devirleri sabit zaman aralıklarında yapılır (tipik olarak 2-4 hafta). Sprint devri plan değerlendirme ünitesiyle başlar. Ardından geliştirilecek özellikler seçilir ve yazılım geliştirilir. Sprint devrinde geliştirilecek özelliklerin seçimine tüm proje ekibi katılır. Yazılım geliştirme sırasında ise geliştirme ekibi müşteriden izole edilerek sadece yazılım ile ilgilenir. Sprint devrinin sonunda, tamamlanmış sürüm sistem paydaşlarına dağıtılarak gözden geçirilmesi sağlanır.

Tüm geliştirme modeli yaklaşımlarında sistem analisti öncelikle organizasyonun yapısını, işleyiş biçimini, süreçleri vb. anlamak zorundadır. Sonra ayrıntılı sorular ile veri toplanır ve işletmedeki iş süreçleri belirlenir. Böylece gerçekleştirilecek uygulamanın tipi ortaya konulur. Farklı uygulama tiplerinde farklı sistem geliştirme teknikleri kullanılmalıdır. Bunun sebepleri; maliyet değişiklik isteklerinin sıklığı, işlevsel olmayan gereksinimlerin önemi, bilgi sistemi ömür ve teslim zamanlamasından kaynaklanmaktadır.

Bilgisayar Destekli Sistem Geliştirme Araçları

Bilgisayar destekli sistem geliştirme araçları, sistem analistlerinin bilgi sistemlerini geliştirmek için kullandığı otomatik yazılım araçlarıdır. Sistem geliştirme modellerindeki faaliyetleri destekleyen bu araçlar ile üretkenlik ve sistem kalitesi artar. Bilgisayar destekli sistem geliştirme araçları dört kategoriye ayrılmaktadır. Bunlar:

  • Bilgisayar Destekli Yazılım Mühendisliği Araçları: CASE (Computer-Aided Software Engineering tools) sistem geliştiricilerinin karmaşık bilgi sistemlerini yüksek kalitede, planlanan zaman ve bütçede tamamlamasını destekleyen araçlardır. CASE araçlarının amacı yazılım geliştirme modellerindeki süreçlerin kontrol edilebilmesi, ölçeklenebilmesi ve kolay yönetilebilmesidir. CASE araçları yazılım geliştirmek için kullanılan yazılımlar olarak özetlenebilir.
  • Süreç Yönetim Araçları: Sistem geliştirme modelindeki fazların yönetilmesi, belgelenmesi, çıktıların yönetilmesi için süreç yönetim araçları kullanılır. Ayrıca geliştirilen sistemler kalite standartlarına uymak zorunda ise kalite yönetim standartlarını yönetmek için yardımcı olur.
  • Proje Yönetim Araçları: Proje yönetim faaliyetleri; planlama, tahmin ve kaynak atama, zaman çizelgesi oluşturma, proje zaman ve bütçesine göre ilerlemeyi izleme ve kontrolünden oluşur. Bu faaliyetler sistem geliştirme modeli fazları ile örtüşür. Proje yönetim araçları, proje yöneticisinin bilgi sistemini verilen gereksinimler, zamanlama ve bütçe ile geliştirmesi için yapılan faaliyetleri destekler, raporlamasında yardımcı olur.
  • Uygulama Geliştirme Ortamları: Hızlı ve kaliteli yazılım geliştirme talebi nedeniyle, program derleyicilerinin kullanımı yerine uygulama geliştirme ortamlarına (ADE – Application Development Environment) geçilmiştir. Bu uygulama geliştirme ortamları sayesinde programlar daha basit ve verimli geliştirilebilir.