YAZILIM SÜREÇLERI
Yazılım Geliştirme Fazları
Hangi yazılım geliştirme yaşam döngüsünü kullanırsak kullanalım bu temel fazları ya üzerinden 1 kere geçecek şekilde yada 1 den fazla bu fazların üzerinden geçecek şekilde proje geliştirmeyi sürdürürüz. Aşağıda bu fazların ne anlama geldiğinden kısaca bahsedeceğim.
Bir önceki yazımda Neden Farklı farklı Yazılım Geliştirme Yaşam Döngü Modellerinin olduğunu sorgulamıştım. Bu yazıda da bu modellerin ana yapı taşlarını oluşturan fazlardan bahsedeceğim.
Fazlar
Yaşam döngüsü üzerindeki fazlar Planlama, Analiz, Tasarım, Gerçekleştirme, Kullanım için Yükleme ve Bakım olarak sınıflandırabiliriz.
Her faz kendi içerisinde birçok farklı disiplin içerir. Her disiplin üzerine derinlemesine akademik araştırmalar ve birçok yazılmış kitap bulunuyor. Bunu şundan dolayı belirtiyorum. Burda her bir fazı kısaca anlatıyoruz ama her biri devasa deneyim gerektiriyor. Planlama’da Risk Analizi, Analiz Paydaşlardan Gereksinimlerin Alınması, Tasarım Design System vb…. bir çok konu üzerinde yazılmış birçok kitap bulunmaktadır. Burda anlattığımız gibi basit kavramlar olarak algılamayın.
Planlama: Projenin maliyeti, risk analizi, iş kırılımları, bu iş kırılımlarının hangi sırada, ne kadar sürede, hangi kalitede yapılacağı, bu işlerde hangi yeteneklerde kimlerin çalışacağı, müşteri ile iletişimi, eğitimi, uygulamanın kullanılması ve çıkan hataların giderilmesi , yeni özelliklerin nasıl ekleneceği vb… birçok konunun planlaması çalışmasıdır.
Planlama yapacağınız proje için önceden tahminlemeler yaparak işlerin gidişatının düzgün olmasını sağlama çalışmanızdır.
Analiz: Projenin bir uygulamaya dönüşebilmesi için geliştirme ekibinin ne yapacağınızı biliyor olması gerekiyor. Peki ne yapacağınızı nasıl bileceksiniz. İşte bu analiz safhası ne yapacaklarınızı öğrenme safhasıdır.
- Sözleşmenin üzerinde çalışma
- Alan uzmanları ile birlikte çalışma
- Paydaşlar ile iletişim halinde olup ne istediklerini anlama (İşi yaptıran, Projeyi kullanacaklar ve Entegre olunacak sistem uzmanları)
- Sistem Analizi ve Yazılım Gereksinim Dokümanının Oluşturulması
Tasarım: Ne yapacağınızı anladıktan sonra nasıl yapacağınız konusunda tasarım yapmanız gerekir. Bu aşamada analizleri görselleştirmekten biraz bahsetmek istiyorum. Modelleme, Prototipleme
Mühendislik Görselleştirme UML (Unified Modeling Language) kullanarak;
- Behavioral Diagram → Activity, State Machine, Use Case, Timing, Sequence, Communication, Interaction Overview Diagrams
- Structural Diagrams → Class, Composite Structure, Component, Deployment, Object, Package, Profile Diagrams
Ürün UI Görselleştirme ve Kullanabilirliğin Modellenmesi açısından;
- Design System , Pattern Library, Style Guiding
- Sketch, Wireframe, Mockup, Prototype
Gerçekleştirme: Ürünün kodlanması, Testlerinin yazılması. Bu aşama oldukça farklı yöntemler ve disiplinler içerir.
- Procedural, Structural, Imperative, Declarative
- Functional Programming, Object Oriented Programming
- SOLID, KISS, DRY, YAGNI
- Design Patterns, Architectural Patterns, Integration Patterns
- Unit, Integration, Regression, Smoke, Beta, System, Stress, Performance Testing
Canlı Ortama Deploy: Bu faz projeden projeye çok farklılık içeren bir durum.
- Askeri uygulamada bir Gemiye, Uçağa deploy ediyorsanız bu aracında görev zamanına uygun bir zamanda deploy etmeniz
- Mobil uygulamayı AppStore ve GooglePlay Store atma sürecinden geçmeniz gerekiyor bu ilk uygulama atma sırasında bazen 1 haftayı bulabiliyor ama güncelleme daha kısa sürüyor genelde.
- Web uygulamalarını canlı ortama deploy sunucular ekibin kontrolünde olduğu CI (Continuous integration) ve CD (Continuous Delivery). canlı ortama hızlı bir şekilde gönderilebilir. Ama farklı şekilde deployment yöntemleri geliştirilmiştir. (Bing Bang, Rolling, Blue-Green, RedBlack, A/B Canary Deployment)
Bakım: Ürün canlıya alındıktan sonra çıkan hatalar , müşterinin yeni istekleri, regülasyon dan dolayı değişiklikler, entegrasyon api değişiklikler, kullanılan kütüphanelerin yeni versiyonları , güvenlik açıklarının kapatılması vs. vs nedenlerle canlıdaki ürün üzerinde geliştirmeler yapılıp, canlıya bu geliştirilmelerin gönderilmesi çalışmasıdır.
Okumaya Devam Et 😃
Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.