Yazılım Süreçleri

Neden Farklı Yazılım Geliştirme Modelleri Var?

Bu yazıda Yazılım Geliştirme Modellerinin Neden tek bir tane olmadığını, farklı farklı yazılım türlerinin neler olduğunu anlatmaya çalışacağım.

--

Yazılım geliştirme her ne kadar kod parçası ve bunun bir uygulama olarak kullanılması gibi gözüksede aslında içerisinde bundan fazlasını barındırır.

Farklı farklı yazılım nedir ? Eninde sonunda hepsi kod parçası değil mi ? Bu konuyu iyi anlamanız/kavramanız gerekiyor ki Yazılım Geliştirme Modellerinin nereden çıkmış olduğunu ve neden bir tane olmadığını anlayabilin.

Nasıl mı ? Bunu uzun yıllar çalıştığım sektör içerisinden örnekler vererek anlatmak istiyorum.

  • 2002 yılında Havelsan Şirketinde askerler için Komuta Kontrol Bilgi Sistemi Uyuşum Projesi geliştiriyorduk. NATO ortak projesi olan bu proje NATO diğer unsurlar ile bizim unsurlarımızın ortak tatbikat ve ortak harekat yapabilmesini sağlacak bir yazılımdı. Yazılımların sahada komuta kontrol merkezlerinde çalışacağı, 15 yıldır NATO tarafından geliştirilen bir veritabanına entegrasyon yapmamız gerektiği, iletişim hızı, güvenlik ve kritiklik açısından diğer yazılım projelerinden farklılık içerdiğini görebilirsiniz.
  • 2003–2004 yılında hobi olarak oyun programlaması ile uğraşıyorum. Arkadaşlarım İzmir’den aradı TRT1'de telefondan çocukların oynayabileceği basit bir oyun geliştirebilir miyiz şeklinde bir soruları oldu. Basit PC üzerinde çalıştırılabilen bir uygulama geliştirmiştim. Grafiker ve benim çok kısa zamanda müzik ve seslerini açık kaynaklardan temin ederek geliştirdiğimiz bir oyundu. Oyun basitti, kısıtlı kuralları vardı sadece PC Windows çalışıyordu. Çok kısa zamanda 2 kişi tarafından geliştirilmişti.
  • Milsoft ’daki ilk 3 yılımda Müşterek EH Simülasyon ortamı geliştirdik. Bu Elektronik Harp ve Savunma konusunda çalışan askerlerin eğitimi için geliştirilmiş bir projeydi. Kırmızı ve Mavi odalarda Eğitmenleri eşliğinde arkerler gerçek şavaş ortamının simülasyonundaymış gibi yazılım üzerinden sistemleri/araçları kontrol ediyorlardı. Bir nevi Red Alert, Tiberian Sun, C&C oyunlarının daha gerçekçisi(hareket kabiliyeti ve yetenekleri açısından) olan bir oyun olarak düşünebilirsiniz. Daha gerçekçi dememin sebebi altyapısında bulunan High Level Architecture(HLA) dağıtık simülasyon sistemine istediğinde gerçek bir Helikopter , füze veya gemi bilgilerinin aktarılabiliyor olmasıydı. Burda çok büyük ekipler 3 yıllık çalışmanın sonucunda bu uygulamayı ortaya çıkardı. Elektronik Harp ve Savunma Domain bilmek, Yeni sistemleri/araçları sisteme tanıtmak ve bunların simülasyonunu yapıp sisteme eklemenin basit olması, Bir birine takılabilir çıkarılabilir sistemler geliştirebilmek Uçak Gemisi → Uçak, Uçak → Füze, Füze → IVR sistemi vb.
  • Milsoft sonraki 3 yılımda Link11, Link16 sistemleri sonrasında Link11 bir üst versiyonu olan Link22 Sistemi olan bir projede çalıştım. Burada geliştirilen yazılımlar savaş gemilerinde, deniz altında, awacs vb komuta ve iletişim merkezlerinin yönettiği sistemlerde kullanılmakta. Belki belli özellikler 1 veya 2 defa kullanılacak ama kesin ve sorunsuz çalışmalı. Güvenlik çok önemli
  • T2 firmasında Türk Telekom ile birlikte Online Hizmet Merkezleri geliştirdik. Bu sistemlerin hem mobil hemde web uygulamalarını geliştirdik. Bu uygulamalar altyapıda bulunan CRM(Customer Management System), Billing, Ordering, Arıza, Kampanya vb bir çok sistemin önünde bulunan Kurum/Kullanıcı’lara son arayüzü sağlayan uygulamalardı. Estetik ve işlevsel bir UI tasarımı olmalıydı. 7/24 ayakta olması. Diğer sistemlerin stabil bir şekilde çalışması ve bu ortak entegrasyon projesine servis sunması gerekiyordu. Entegrasyon projesiydi.
  • Cybersoft firmasında Gelir İdaresi, TOBB, eFinans gibi büyük firmaların Mobil uygulamalarının geliştirilmesinde çalıştım. Mobil uygulamalar yine arkaplanda bulunan bir çok servisin son kullanıcıya ulaştırılmasıydı. Bir entegrasyon ve ekstradan notification(bildirim) kullanıcıları gerekli konulardan haberdar etmesi önemliydi. Tabi mobil projelerde devreye bu yazılımları AppStore, GooglePlayStore yayınlama izni veren Apple ve Google Politikaları ve süreçleri düzgün işletmekte önemliydi.
  • Cybersoft UNDP(Birleşmiş Milletler Kalkınma Programı) kapsamında tüm Türkiye’nin Enerji Verisini işleyen ve bunu Karar Destek olarak ilgili üst kurumlara raporlayan yazılım projesinin analiz, tasarım ve geliştirme aşamalarında bulundum. Bu projedeki en önemli konu dinamik bir sistem tasarlamak ve bu dinamik sistem üzerinden dinamik raporları performanslı olarak alabilmekti. Dinamiklik (Toplanan verilerin dinamik olarak değiştirilmesi ve bundan toplanan verilerin üzerinde Dinamik Sorgular AdHoc Query çalıştırabilme ve bunları Dinamik Chartlar üzerinden gösterebilmekti.)
  • Cybersoft 1501 Tübitak kapsamında geliştirdiğimiz ARGE projesinden sorumluydum. Bu projede önemli olan Tübitak vadedilen projenin istenen süreçte ilerletilmesi, proje içerisinde ARGE yapılarak akademik makale yazılması ve ara raporların (teknik ve maliyet raporların) düzgün bir şekilde hazırlanıp sunulmasıydı. Bu projede akademik bir hoca ile birlikte çalışarak ARGE araştırmalar ve denemeler yapmak en önemli konulardan bir tanesiydi.
  • Cybersoft şirket içi ARGE kapsamında geliştirttiği iBeacon İşe Giriş/Çıkış uygulaması Bluetooth ve iBeacon teknolojini denerken, Sigortacılıkta Risk Skorlama Motorunda Dinamik Kuralların çalıştırılarak Risk hesaplamasını performanslı yapılmasını sağlayan bir sistem, Mobil’de Native — Web arasında geliştirilen Native-JS bride sayesinde Web ile Native birlikte çalışabilir birbiri ile mesajlaşabilir şekilde projeler geliştirmenin amacı hepsinde öncelikle bir Prototip geliştirmek ve bu prototiplerin şirket içerisinde ekipler tarafından değerlendirilerek gerçek projelerin içerisinde kullanılmasıydı. Amaç teknik olarak problemli ama proje için önemli bir konuda hızlı prototipler üretebilmek ve riskli kısımları önceden farkedip üstesinden gelip, gelemeyeceğini belirleme çalışmasıydı.
  • Thundra şirketi AWS üzerinde serverless ve container alanında uygulama geliştiren firmalara monitoring, güvenlik, debugging vb alanlarda yardımcı araçlar geliştirerek kullanıcıların daha verimli , daha sorunsuz uygulamalar geliştirmesini, canlıdaki oluşan veya oluşacak problemleri daha önceden farketmelerini sağlayan bir servistir. Buradaki amaç bir ürünün müşteri/pazar ihtiyaçlarına göre şekillenecek şekilde en iyi şekilde kullanılabilecek hale getirilmesi. Bu da diğer projelerden farklı olarak ürünün üzerine daha çok odaklanılması, ürünün çok daha kaliteli hale getirilmeye çalışıldığı bir proje

Yukarıda çalıştığım farklı farklı projelerden bahsetmemin sebebi projelerin birbirinden ne kadar farklı olduğunu göstermek istememden kaynaklanıyor. Bu farklılıklar sizin projenizde kullanacağınız Yazılım Geliştirme Modelini belirlemenizde etken oluşturur.

Projenin Büyüklüğü (Bütçesi, Uzunluğu, Adam Ay Maliyeti) :

  • Askeri Projeler çok büyük projeler iken,
  • Enterprise(Telekom, TSE, Enerji Bakanlığı) ve Tübitak projeler orta ölçekli
  • Mobil projeler. küçük ölçekli
  • Prototip projeler tek kişinin olduğu projeler.

Bu Bütçeyi Nasıl Alacağınız :

  • Sözleşme imzalamışsanız. Belirlenen fazlar üzerinden paranızı alırsınız. Askeri ve Birleşmiş Milletler Kalkınma Projelerinde genelde Planlama, Analiz, Tasarım, Kodlama/Test, Entegrasyon, Kurulum ve Bakım aşamalarının sonundaki çıktılar doğrultusunda paranızı alırsınız.
  • Veya Sözleşmenizi projenizi belli modüllere bölmüşseniz. Bu modüllerin gerçekleştirimi ve canlıya alındıkça paranızı alabilirsiniz.
  • Tübitak kapsamında projenin ilgili adımlarını ve bunlara yaptığına dair harcamalarını muhasebe ve teknik raporlarını tamamlayıp, jüriye kabul ettirmen gerekiyor.
  • SaaS projesinde ürününüz geliştirerek , kullanıldıkça müşterilerinizden ay sonunda veya yıllık para alırsınız. Spotify, Netflix modeli gibi.

Projeyi Finanse Eden Kişi/Kurum ve Kullanıcısı

  • Askeri projelerde projeyi finanse eden SSM olurken projenin kullanıcısı Askeriye’nin herhangi bir birimi olabilir.
  • UNDP , Tübitak Projelerinde destek finansmanını bu kurum ve kuruluşlar sağlarken amacı ülkeye fayda sağlayacak yazılımların geliştirilmesi dolayısıyla kullanıcıları çok farklı olabilir.
  • Telekom, Gelir İdaresi, TOBB, TSE vb kendi servisleri için finanse ettiği yazılımlarda kendi müşterileri ve çalışanlarının kullanacağı yazılımlar olur.
  • SaaS uygulamalarda ise birebir finanse eden kullanıcının ürünü kullandığı ürünlerdir.

Projeyi Kullanacak Kişilerin Farklılığı, Kullanma Amaçları ve Sıklığı

  • Son kullanıcı , alan uzmanı, vb..
  • Kullanıcı bir Asker ise sadece savaş/tatbikat sırasında kullanacağı ama kullanıldığı zaman hata çıkmaması gereken bir yazılım.
  • Gelir İdaresinde Motorlu Taşıtlar vergisi için bir çok kullanıcının yılda 2 defa kullanması
  • Spotify, Netflix, Word gibi her gün kullanılabilecek uygulamalar.
  • Prototip gibi üretilip sonradan kullanılmadan atılabilecek uygulamalar.

Projenin Farklı Disiplinleri ve Çevreyi İçeriyor Olması

  • Thundra dillere çok bağımlı. Dillere, kütüphanelere ve teknolojik gelişmelere yakından takip etmeli. Bir çok rakibi var, rakiplerinin ürettiklerini takip etmeli.
  • Komuta Kontrol Sistemleri kesin doğruluklar ile çalışmalı
  • GiB Mobil , Telekom Online Hizmet Merkezi gibi sistemler 7/24 çalışmalı ve diğer alt sistemler ile entegre bir şekilde çalışmalı.

Projenin Çalıştırılacağı Ortam Koşulları

  • Projenin Çalıştırılacağı Ortamlar (PC, Web, Mobile Cihaz, Gemi, Uçak vb.)
  • Projenin Güvenliği, Ağ ve Network Hızı vb…

Ve bunun gibi burda belirtmediğim birçok farklılıktan dolayı birbirinden farklı Yazım Geliştirme Modeli bulunur. Siz projenizin özelliklerini ve süreçlerinize göre aşağıdaki fazları hangi uzunlukta, hangi öncelikte, hangi tekrarla yapacağınıza karar verip hangi model size uygunsa o modeli projenizde kullanabilirsiniz. Aşağıdaki fazların ve modellerin detaylarına daha ilerki konularda değineceğim.

Yazılım Geliştirme Yaşam Döngüsü Fazları

  • Planlama
  • Analiz
  • Tasarım
  • Gerçekleştirme
  • Bakım

Bu kısma daha detaylı okumak ve anlamak için Yazılım Geliştirme Fazları yazımı okuyunuz

Yazılım Geliştirme Modelleri

  • Code & Fix
  • Waterfall
  • V Model
  • Evolutionary
  • Prototyping
  • Spiral
  • Incremental
  • UP (UML, Rational Unified Process)
  • Agile (XP, Kanban, Scrum)

Yazılım geliştirme modelleri daha detaylı anlamak için Yazılım Geliştirme Modelleri yazımı okumanızı öneririm

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--