Agile Yazılım Geliştirme Nedir?
Agile yazılım geliştirme metodolojileri, genellikle Agile olarak adlandırılır ve uygulama teslim sürecinde esneklik ve pragmatizmi öne çıkarır. Bu yinelemeli yazılım geliştirme yaklaşımı, kullanıcılara değeri büyük bir lansman yerine küçük parçalarda sunar. Agile ekipleri, gereksinimleri ve sonuçları sürekli olarak değerlendirir, bu da değişimlerin verimli bir şekilde uygulanmasına olanak tanır.
Agile kullanmak, ekiplerin dinamik bir pazar ve hızlı rekabet ortamında hız ve verimliliklerini korurken değer yaratmalarını sağlar. Pan-organizasyonel iş birliğine dayalı bir çalışma kültürü oluşturmak, Agile'ın temel prensiplerinden biridir ve bu, ekiplerin sistem içindeki bireysel rolleri derinlemesine anlayarak birlikte çalışmalarını teşvik eder.
Agile aynı zamanda geliştirme döngüsü boyunca test yapmayı da zorunlu kılar. Bu, ekiplerin gerektiğinde değişiklikler yapmasına, potansiyel sorunlar hakkında birbirlerini uyarmasına ve dolayısıyla yüksek kaliteli uygulamalar oluşturup yayınlama konusunda güven kazanmalarına olanak tanır.
Agile'ın temel değerleri, 2001 yılında bir grup yazılım geliştirme uzmanı tarafından oluşturulan Agile Manifestosu'nda somutlaştırılmıştır. Bu manifesto, hafif bir geliştirme sürecini teşvik eden dört ana konsepti özetler:
* İnsanları, araçlar ve süreçlerden önce tutun. İkincisi şüphesiz önemli olsa da, anlamlı bireysel etkileşimler, yazılım geliştirme sürecinin önemli bir itici gücüdür ve iş ihtiyaçlarına etkili bir şekilde yanıt vermeye yardımcı olur.
* İyi inşa edilmiş uygulama, derinlemesine dokümantasyondan önce gelir. Agile, dokümantasyonu tamamen ortadan kaldırmaz, ancak geliştirme ekibine hedeflerine ulaşmaları için gereken bilgiyi, örneğin kullanıcı hikayeleri gibi, sağlamaya odaklanır.
* Proje yöneticisi ile müşteri arasındaki sözleşme müzakerelerini, sık iş birliği ile değiştirin. Ürün, müşterinin vizyonuna daha etkili bir şekilde şekil alabilir, eğer müşteri geliştirme sürecinin başında ve sonunda değil, sürecin tamamında yer alırsa.
* Değişikliklere hızlı ve etkili bir şekilde yanıt verin. Agile, değişikliği istenmeyen bir maliyet olarak görmez. Aksine, değişime değer verir ve kısa yinelemelerle değişikliklerin hızlı ve kolay bir şekilde yapılmasını teşvik eder.
Bu temel değerlerin yanı sıra, Agile Manifestosu geliştirme ekiplerinin işleyişlerini iyileştirmek için 12 prensip sunar:
* Büyük görevleri, hızlı bir şekilde tamamlanabilecek küçük parçalara bölün.
* Hızlı ve sürekli değer teslimi ile müşteri memnuniyetine odaklanın.
* Sürdürülebilir çabaları teşvik eden süreçlerin oluşturulmasını sağlayın.
* Projenin geç bir aşamasında bile olsa değişen gereksinimleri kabul edin.
* Değişimi, rekabet avantajı sağlamak için bir araç olarak görün.
* Motive olmuş ekip üyelerine, gereksinimleri hızlı bir şekilde tamamlamak için ihtiyaç duydukları çalışma ortamını ve güveni sağlayın.
* Kendi kendini organize eden ekiplerin en iyi işi çıkardığını kabul edin.
* İlerlemenizi tamamlanan işe göre ölçün.
* İşi tutarlı bir hızda tamamlayın.
* Proje süresince proje ve iş ekipleri arasında düzenli iş birliği sağlayın.
* Ekip davranışlarını etkili hale getirmek için düzenli olarak nasıl ayarlama yapabileceğinizi gözden geçirin.
* Son olarak, sürekli mükemmellik için çaba gösterin.
Agile'ı uygulamak, geleneksel şirket kültürlerinde bir değişim gerektirir çünkü bu yaklaşım, tüm bir uygulama yerine izole bileşenlerin temiz bir şekilde teslim edilmesini sağlar. Günümüzde, Agile çoğu şirkette Waterfall yazılım geliştirme modelinin yerini almıştır. Bununla birlikte, DevOps'un küresel olarak popülerlik kazanmasıyla, Agile'ın yerini alabilir veya onunla birleştirilebilir.
Agile Yazılım Geliştirme Yaşam Döngüsü
Agile yaşam döngüsü, geliştiricilerin uygulamayı kavramsallaştırmadan kullanımdan kaldırılmasına kadar stratejik olarak ilerletmesini sağlar.
1. Kavramsallaştırma
Agile yaşam döngüsünün ilk adımında, ürün sahibi proje kapsamını tanımlar. Birden fazla proje olması durumunda, kritik olanlar önceliklendirilir. Organizasyon yapısına bağlı olarak, personel aynı anda birden fazla projeye atanabilir.
Bu aşamada, ürün sahibi ve müşteri, temel gereksinimleri tartışır ve nihai proje hedeflerine dayalı olarak temel bir dokümantasyon oluşturur. Bu dokümantasyon, ürün gereksinimleri belgesi (PRD) şeklinde olabilir ve projenin önerilen amacı ile desteklenen özellikleri içerir. Projenin süresi ve maliyeti de bu aşamada tahmin edilir.
Kavramsallaştırma sırasında yapılan derinlemesine analiz, çalışmalara başlamadan önce fizibiliteyi belirlemeye yardımcı olur. Geliştiriciler, yalnızca en kritik gereksinimleri tamamlamayı hedefleyebilir, çünkü sonraki aşamalarda daha fazlası eklenebilir.
2. Başlangıç
Proje kavramsallaştırıldıktan sonra, bir sonraki adım yazılım geliştirme ekibini oluşturmaktır. Bu aşamada, ürün sahibi ekip üyelerinin uygunluğunu kontrol eder ve projeye en uygun olanları atar. Ürün sahibi, bu ekip üyelerine gerekli kaynakları sağlamakla sorumludur.
Ekip kurulduktan sonra, kullanıcı arayüzünün bir taslağını oluşturma ve belki de birkaç kullanıcı akışı ve UML diyagramı hazırlama ile tasarım sürecine başlar. Proje mimarisi de bu aşamada oluşturulur. Tasarlanan unsurlar daha sonra paydaşlara gösterilir ve onların geri bildirimleri alınır.
Tüm bunlar, ekibin tasarımdaki gereksinimleri tam olarak belirlemesine ve uygulamanın işlevselliğini nasıl gerçekleştireceğini ve mevcut sisteme nasıl uyacağını anlamasına olanak tanır. İş ekibi tarafından yapılan sık kontroller, başlangıç aşamasının planlanan yönde ilerlemesini sağlar.
3. Yapım
Yapım aşaması, yineleme aşaması olarak da bilinir ve en fazla çalışmanın gerçekleştiği yerdir. Bu genellikle en uzun aşamadır ve geliştirme ekibi ile UX tasarımcıları, gereksinimleri ve geri bildirimleri bir araya getirip tasarımı koda dönüştürmek için yakın iş birliği içinde çalışırlar.
Yapımın amacı, ilk yineleme (veya aşağıda belirtildiği gibi "sprint") tamamlanmadan önce uygulamanın temel işlevselliğini oluşturmaktır. Gelecek yinelemelerde ek ikincil özellikler ve küçük değişiklikler yapılabilir. Ana hedef, çalışır bir uygulamayı hızlıca oluşturarak müşteri memnuniyetini artıracak iyileştirmeleri uygulamaktır.
4. Yayınlama
Ekip bu aşamaya girdiğinde, ürün neredeyse yayınlanmaya hazır olmalıdır. Ancak, bu gerçekleşmeden önce, QA (Kalite Güvence) ekibinin uygulamayı test etmesi ve belirlenen proje hedeflerine göre tam işlevselliğini sağlaması gereklidir. Kodda herhangi bir hata ve kusur bulunmadığından emin olmak için testler yapılır; eğer varsa, bunlar hızla rapor edilmeli ve geliştirme ekibi tarafından düzeltilmelidir. Temiz kod, bu aşamanın temel taşlarından biridir.
Bu aşama ayrıca kullanıcı eğitimi, sistem oluşturma ve bunu destekleyecek kullanıcı dokümantasyonunun oluşturulmasını içerir. Kodu görselleştirmek bu noktada faydalıdır. Tüm hatalar giderildikten ve kullanıcı eğitimi tamamlandıktan sonra, ürünün son yinelemesi canlıya alınarak üretime sunulabilir.
5. Üretim ve Bakım
Uygulama başarıyla yayınlanıp son kullanıcılara sunulduktan sonra, ekip bakım moduna geçer. Bu aşamada geliştirme ekibi, sistemin sorunsuz çalışmasını sağlamak ve yeni bulunan hataları gidermek için sürekli destek sağlar.
Ekip ayrıca müşterilere ek eğitim vermek ve ürünün amaçlandığı gibi kullanılmasını sağlamak için canlıya geçiş sonrası soruları çözmek için hazır olacaktır. Geliştiriciler, bu aşamada toplanan geri bildirimleri kullanarak sonraki yinelemelerde yer alacak özellikler ve yükseltmeleri planlayabilirler.
6. Emeklilik
Bir uygulama, iki nedenle emeklilik aşamasına gelebilir: Yeni bir sürümle değiştirilmesi veya eski ve kullanılmaz hale gelmesi.
Bir uygulama bu aşamaya gelirse, ilk adım, yazılımın emekliye ayrılacağına dair kullanıcılara bildirimde bulunmaktır. Ardından, yeni sisteme sorunsuz bir geçiş sağlanmalıdır. Son olarak, geliştirme ekibi tüm bekleyen kullanım ömrü sonu faaliyetlerini tamamlamalı ve mevcut uygulamaya sağlanan desteği sonlandırmalıdır.
Agile'da Sprint Planlaması
Yukarıda belirtilen her bir Agile aşaması, birçok yazılım yinelemesi oluşturulmasına yol açar. Bu yinelemeler, geliştirme ekibinin süreçlerini tekrarlayarak uygulamayı iyileştirmesi ve belirlenen proje gereksinimlerine göre en iyi sürümü oluşturmasıyla meydana gelir. Bu yinelemeler, daha büyük Agile yazılım geliştirme yaşam döngüsü içinde yer alan "alt döngüler"dir.
Agile yaşam döngüsü, bu yinelemeleri tamamlamak için çalışmayı "sprint"lere böler. Her bir sprintin amacı, çalışabilen bir uygulama üretmektir. Tipik bir sprint, 10 iş günü (2 hafta) sürmelidir.
Aşağıda tipik bir sprint iş akışı özetlenmiştir:
* Planlama: Her sprint, bir "sprint planlama toplantısı" ile başlar. Bu toplantıda ekip üyeleri bir araya gelerek, yaklaşan çalışma turu aracılığıyla hangi hedeflerin ele alınacağını kararlaştırırlar. Bu toplantıda ürün yöneticisi, görev birikiminden çalışmaları önceliklendirmeli ve belirli üyeleri görevlendirmelidir.
* Geliştirme: Plan oluşturulduktan sonra ekip, uygulamayı mevcut yönergelere göre tasarlayıp geliştirmek için çalışır.
* QA Testi: Uygulama geliştirildikten sonra, QA ekibi uygulamayı kapsamlı bir şekilde test eder, herhangi bir hata veya eksikliği düzeltir ve sonuçları belgelendirir.
* Teslimat: Test sonrası, uygulama dağıtıma hazır hale gelir ve tüm ilgili paydaşlara ve müşterilere sunulur.
* Değerlendirme: Teslimat sonrası, müşterilerden geri bildirim toplanır ve bir sonraki sprintte uygulanmak üzere diğer ilgili bilgilerle birleştirilir.
Sprint planlama toplantıları faydalıdır, ancak ekip ayrıca düzenli olarak (mümkünse günlük) toplanmalı, sprintin ilerleyişini değerlendirmeli ve olası çatışmaları çözmelidir. İş birliği ve değişime açıklık, Agile yaşam döngüsünün ana bileşenleridir ve sürecin etkili bir şekilde ilerlemesini sağlamanın kanıtlanmış bir yoludur.
Agile Yazılım Geliştirme Metodojileri
1. Scrum
Scrum, belki de en popüler Agile proje yönetim metodolojisidir. Sprintlerle tanımlanır ve uygulama geliştirme süresini en üst düzeye çıkarmayı ve ürün hedefini gerçekleştirmeyi savunur. Bu hedef, her sprint ile biraz daha gerçekleşmeye yakınlaşan, büyük resmi ifade eden bir değer hedefidir.
Scrum metodolojisini izleyen bir ekip, gününe tüm faaliyetleri senkronize etmek ve o gün için en iyi yolu belirlemek amacıyla 15 dakikalık bir toplantı ile başlar. Ürün yöneticisi, bu toplantı sırasında sprintin "sağlığını" ve projenin ilerlemesini kontrol etme fırsatını kullanabilir.
Scrum, yazılım geliştirme ile popüler olarak ilişkilendirilse de, çoğu iş bağlamında başarıyla kullanılabilir.
2. Kanban
Kanban terimi, Japon kökenlidir ve "tam zamanında" (just in time) kavramıyla ilişkilidir. Bu yöntem, bir "Kanban panosunu" (tahta veya tablo) sütunlara böler. Proje içindeki her bir akış, sütunlarda bir "kart" olarak gösterilir ve geliştirmeler ilerledikçe bu kartlardaki bilgiler değişir. Yeni bir görev tanıtıldığında yeni bir kart eklenir.
Kanban, ekipler arası üyelerin proje durumunu her an görmesine olanak tanıyarak şeffaflık ve iletişimi teşvik eder. Kanban'ın temel odak noktası, özellikle birden fazla küçük değişiklik içeren yinelemeler için çok faydalı olan ekip kapasitesidir. Yazılım geliştirmenin yanı sıra, Kanban, tüm ekip görevlerine görünürlük kazandırdığı için IT ve pazarlama gibi iş departmanlarında da kullanışlıdır.
3. Extreme Programming (XP)
Extreme Programming (XP), tipik bir Agile çerçevesi olup, "bunu gerçekleştirmenin en basit yolu"nu keşfetmeye odaklanırken uzun vadeli ürün hedefini öncelik sırasından çıkarır. XP'nin temel değerleri sadelik, iletişim, cesaret, saygı ve geri bildirimdir. XP'nin en yüksek önceliği müşteri memnuniyetidir ve geliştirme sürecinin sonraki aşamalarında bile proje gereksinimlerindeki değişiklikleri kabul etmeyi teşvik eder.
XP'de ekip çalışması da önemli bir bileşendir; müşteriler, yöneticiler ve ekip üyeleri, en iyi uygulamayı oluşturmak için yakından çalışır. XP'de testler ilk günden itibaren başlar ve kaliteyi artırmak için sürekli geri bildirim toplanır. Çift programlama (pair programming) gibi faaliyetler bu mühendislik metodolojisinde teşvik edilir.
4. Lean Development
Lean Development, doğrudan Toyota'nın Yalın Üretim (Lean Manufacturing) yaklaşımından uyarlanmış bir yazılım geliştirme yöntemidir. Bu yöntem, ekibi, ürüne değer katmayan her türlü faaliyeti acımasızca ortadan kaldırmaya teşvik eder.
Yalın Geliştirmenin yedi temel ilkesi şunlardır:
1. Ürün kalitesi için önemi olmayan her şeyi acımasızca ortadan kaldırın.
2. Kaliteli geliştirmeye odaklanın.
3. Değerli dokümantasyon yoluyla bilgi oluşturun.
4. İş gereksinimlerini tamamen anlamadan geliştirme planı yapmayın.
5. Müşteriye mümkün olan en kısa sürede değer teslim edin.
6. Düzenli iletişim kurun, çatışmaları hızla yönetin ve saygı kültürü geliştirin.
7. Son olarak, kısmi optimizasyona odaklanmayın ve tüm uygulamanın yüksek kaliteli olmasını sağlayın.
CyberRulz06 tarafından çevirilmiştir. Asıl makalede bulunan bâzı uzun detayları traşlayıp asıl çözümleri öne taşımaya çalıştım. Anlam bütünlüğü korunması için bazı kelimeler Türkçe de farklı çevirilmiştir ve orijinal görseller kullanılmıştır. İyi okumalar ve iyi forumlar
Agile yazılım geliştirme metodolojileri, genellikle Agile olarak adlandırılır ve uygulama teslim sürecinde esneklik ve pragmatizmi öne çıkarır. Bu yinelemeli yazılım geliştirme yaklaşımı, kullanıcılara değeri büyük bir lansman yerine küçük parçalarda sunar. Agile ekipleri, gereksinimleri ve sonuçları sürekli olarak değerlendirir, bu da değişimlerin verimli bir şekilde uygulanmasına olanak tanır.
Agile kullanmak, ekiplerin dinamik bir pazar ve hızlı rekabet ortamında hız ve verimliliklerini korurken değer yaratmalarını sağlar. Pan-organizasyonel iş birliğine dayalı bir çalışma kültürü oluşturmak, Agile'ın temel prensiplerinden biridir ve bu, ekiplerin sistem içindeki bireysel rolleri derinlemesine anlayarak birlikte çalışmalarını teşvik eder.
Agile aynı zamanda geliştirme döngüsü boyunca test yapmayı da zorunlu kılar. Bu, ekiplerin gerektiğinde değişiklikler yapmasına, potansiyel sorunlar hakkında birbirlerini uyarmasına ve dolayısıyla yüksek kaliteli uygulamalar oluşturup yayınlama konusunda güven kazanmalarına olanak tanır.
Agile'ın temel değerleri, 2001 yılında bir grup yazılım geliştirme uzmanı tarafından oluşturulan Agile Manifestosu'nda somutlaştırılmıştır. Bu manifesto, hafif bir geliştirme sürecini teşvik eden dört ana konsepti özetler:
* İnsanları, araçlar ve süreçlerden önce tutun. İkincisi şüphesiz önemli olsa da, anlamlı bireysel etkileşimler, yazılım geliştirme sürecinin önemli bir itici gücüdür ve iş ihtiyaçlarına etkili bir şekilde yanıt vermeye yardımcı olur.
* İyi inşa edilmiş uygulama, derinlemesine dokümantasyondan önce gelir. Agile, dokümantasyonu tamamen ortadan kaldırmaz, ancak geliştirme ekibine hedeflerine ulaşmaları için gereken bilgiyi, örneğin kullanıcı hikayeleri gibi, sağlamaya odaklanır.
* Proje yöneticisi ile müşteri arasındaki sözleşme müzakerelerini, sık iş birliği ile değiştirin. Ürün, müşterinin vizyonuna daha etkili bir şekilde şekil alabilir, eğer müşteri geliştirme sürecinin başında ve sonunda değil, sürecin tamamında yer alırsa.
* Değişikliklere hızlı ve etkili bir şekilde yanıt verin. Agile, değişikliği istenmeyen bir maliyet olarak görmez. Aksine, değişime değer verir ve kısa yinelemelerle değişikliklerin hızlı ve kolay bir şekilde yapılmasını teşvik eder.
Bu temel değerlerin yanı sıra, Agile Manifestosu geliştirme ekiplerinin işleyişlerini iyileştirmek için 12 prensip sunar:
* Büyük görevleri, hızlı bir şekilde tamamlanabilecek küçük parçalara bölün.
* Hızlı ve sürekli değer teslimi ile müşteri memnuniyetine odaklanın.
* Sürdürülebilir çabaları teşvik eden süreçlerin oluşturulmasını sağlayın.
* Projenin geç bir aşamasında bile olsa değişen gereksinimleri kabul edin.
* Değişimi, rekabet avantajı sağlamak için bir araç olarak görün.
* Motive olmuş ekip üyelerine, gereksinimleri hızlı bir şekilde tamamlamak için ihtiyaç duydukları çalışma ortamını ve güveni sağlayın.
* Kendi kendini organize eden ekiplerin en iyi işi çıkardığını kabul edin.
* İlerlemenizi tamamlanan işe göre ölçün.
* İşi tutarlı bir hızda tamamlayın.
* Proje süresince proje ve iş ekipleri arasında düzenli iş birliği sağlayın.
* Ekip davranışlarını etkili hale getirmek için düzenli olarak nasıl ayarlama yapabileceğinizi gözden geçirin.
* Son olarak, sürekli mükemmellik için çaba gösterin.
Agile'ı uygulamak, geleneksel şirket kültürlerinde bir değişim gerektirir çünkü bu yaklaşım, tüm bir uygulama yerine izole bileşenlerin temiz bir şekilde teslim edilmesini sağlar. Günümüzde, Agile çoğu şirkette Waterfall yazılım geliştirme modelinin yerini almıştır. Bununla birlikte, DevOps'un küresel olarak popülerlik kazanmasıyla, Agile'ın yerini alabilir veya onunla birleştirilebilir.
Agile Yazılım Geliştirme Yaşam Döngüsü
Agile yaşam döngüsü, geliştiricilerin uygulamayı kavramsallaştırmadan kullanımdan kaldırılmasına kadar stratejik olarak ilerletmesini sağlar.
1. Kavramsallaştırma
Agile yaşam döngüsünün ilk adımında, ürün sahibi proje kapsamını tanımlar. Birden fazla proje olması durumunda, kritik olanlar önceliklendirilir. Organizasyon yapısına bağlı olarak, personel aynı anda birden fazla projeye atanabilir.
Bu aşamada, ürün sahibi ve müşteri, temel gereksinimleri tartışır ve nihai proje hedeflerine dayalı olarak temel bir dokümantasyon oluşturur. Bu dokümantasyon, ürün gereksinimleri belgesi (PRD) şeklinde olabilir ve projenin önerilen amacı ile desteklenen özellikleri içerir. Projenin süresi ve maliyeti de bu aşamada tahmin edilir.
Kavramsallaştırma sırasında yapılan derinlemesine analiz, çalışmalara başlamadan önce fizibiliteyi belirlemeye yardımcı olur. Geliştiriciler, yalnızca en kritik gereksinimleri tamamlamayı hedefleyebilir, çünkü sonraki aşamalarda daha fazlası eklenebilir.
2. Başlangıç
Proje kavramsallaştırıldıktan sonra, bir sonraki adım yazılım geliştirme ekibini oluşturmaktır. Bu aşamada, ürün sahibi ekip üyelerinin uygunluğunu kontrol eder ve projeye en uygun olanları atar. Ürün sahibi, bu ekip üyelerine gerekli kaynakları sağlamakla sorumludur.
Ekip kurulduktan sonra, kullanıcı arayüzünün bir taslağını oluşturma ve belki de birkaç kullanıcı akışı ve UML diyagramı hazırlama ile tasarım sürecine başlar. Proje mimarisi de bu aşamada oluşturulur. Tasarlanan unsurlar daha sonra paydaşlara gösterilir ve onların geri bildirimleri alınır.
Tüm bunlar, ekibin tasarımdaki gereksinimleri tam olarak belirlemesine ve uygulamanın işlevselliğini nasıl gerçekleştireceğini ve mevcut sisteme nasıl uyacağını anlamasına olanak tanır. İş ekibi tarafından yapılan sık kontroller, başlangıç aşamasının planlanan yönde ilerlemesini sağlar.
3. Yapım
Yapım aşaması, yineleme aşaması olarak da bilinir ve en fazla çalışmanın gerçekleştiği yerdir. Bu genellikle en uzun aşamadır ve geliştirme ekibi ile UX tasarımcıları, gereksinimleri ve geri bildirimleri bir araya getirip tasarımı koda dönüştürmek için yakın iş birliği içinde çalışırlar.
Yapımın amacı, ilk yineleme (veya aşağıda belirtildiği gibi "sprint") tamamlanmadan önce uygulamanın temel işlevselliğini oluşturmaktır. Gelecek yinelemelerde ek ikincil özellikler ve küçük değişiklikler yapılabilir. Ana hedef, çalışır bir uygulamayı hızlıca oluşturarak müşteri memnuniyetini artıracak iyileştirmeleri uygulamaktır.
4. Yayınlama
Ekip bu aşamaya girdiğinde, ürün neredeyse yayınlanmaya hazır olmalıdır. Ancak, bu gerçekleşmeden önce, QA (Kalite Güvence) ekibinin uygulamayı test etmesi ve belirlenen proje hedeflerine göre tam işlevselliğini sağlaması gereklidir. Kodda herhangi bir hata ve kusur bulunmadığından emin olmak için testler yapılır; eğer varsa, bunlar hızla rapor edilmeli ve geliştirme ekibi tarafından düzeltilmelidir. Temiz kod, bu aşamanın temel taşlarından biridir.
Bu aşama ayrıca kullanıcı eğitimi, sistem oluşturma ve bunu destekleyecek kullanıcı dokümantasyonunun oluşturulmasını içerir. Kodu görselleştirmek bu noktada faydalıdır. Tüm hatalar giderildikten ve kullanıcı eğitimi tamamlandıktan sonra, ürünün son yinelemesi canlıya alınarak üretime sunulabilir.
5. Üretim ve Bakım
Uygulama başarıyla yayınlanıp son kullanıcılara sunulduktan sonra, ekip bakım moduna geçer. Bu aşamada geliştirme ekibi, sistemin sorunsuz çalışmasını sağlamak ve yeni bulunan hataları gidermek için sürekli destek sağlar.
Ekip ayrıca müşterilere ek eğitim vermek ve ürünün amaçlandığı gibi kullanılmasını sağlamak için canlıya geçiş sonrası soruları çözmek için hazır olacaktır. Geliştiriciler, bu aşamada toplanan geri bildirimleri kullanarak sonraki yinelemelerde yer alacak özellikler ve yükseltmeleri planlayabilirler.
6. Emeklilik
Bir uygulama, iki nedenle emeklilik aşamasına gelebilir: Yeni bir sürümle değiştirilmesi veya eski ve kullanılmaz hale gelmesi.
Bir uygulama bu aşamaya gelirse, ilk adım, yazılımın emekliye ayrılacağına dair kullanıcılara bildirimde bulunmaktır. Ardından, yeni sisteme sorunsuz bir geçiş sağlanmalıdır. Son olarak, geliştirme ekibi tüm bekleyen kullanım ömrü sonu faaliyetlerini tamamlamalı ve mevcut uygulamaya sağlanan desteği sonlandırmalıdır.
Agile'da Sprint Planlaması
Yukarıda belirtilen her bir Agile aşaması, birçok yazılım yinelemesi oluşturulmasına yol açar. Bu yinelemeler, geliştirme ekibinin süreçlerini tekrarlayarak uygulamayı iyileştirmesi ve belirlenen proje gereksinimlerine göre en iyi sürümü oluşturmasıyla meydana gelir. Bu yinelemeler, daha büyük Agile yazılım geliştirme yaşam döngüsü içinde yer alan "alt döngüler"dir.
Agile yaşam döngüsü, bu yinelemeleri tamamlamak için çalışmayı "sprint"lere böler. Her bir sprintin amacı, çalışabilen bir uygulama üretmektir. Tipik bir sprint, 10 iş günü (2 hafta) sürmelidir.
Aşağıda tipik bir sprint iş akışı özetlenmiştir:
* Planlama: Her sprint, bir "sprint planlama toplantısı" ile başlar. Bu toplantıda ekip üyeleri bir araya gelerek, yaklaşan çalışma turu aracılığıyla hangi hedeflerin ele alınacağını kararlaştırırlar. Bu toplantıda ürün yöneticisi, görev birikiminden çalışmaları önceliklendirmeli ve belirli üyeleri görevlendirmelidir.
* Geliştirme: Plan oluşturulduktan sonra ekip, uygulamayı mevcut yönergelere göre tasarlayıp geliştirmek için çalışır.
* QA Testi: Uygulama geliştirildikten sonra, QA ekibi uygulamayı kapsamlı bir şekilde test eder, herhangi bir hata veya eksikliği düzeltir ve sonuçları belgelendirir.
* Teslimat: Test sonrası, uygulama dağıtıma hazır hale gelir ve tüm ilgili paydaşlara ve müşterilere sunulur.
* Değerlendirme: Teslimat sonrası, müşterilerden geri bildirim toplanır ve bir sonraki sprintte uygulanmak üzere diğer ilgili bilgilerle birleştirilir.
Sprint planlama toplantıları faydalıdır, ancak ekip ayrıca düzenli olarak (mümkünse günlük) toplanmalı, sprintin ilerleyişini değerlendirmeli ve olası çatışmaları çözmelidir. İş birliği ve değişime açıklık, Agile yaşam döngüsünün ana bileşenleridir ve sürecin etkili bir şekilde ilerlemesini sağlamanın kanıtlanmış bir yoludur.
Agile Yazılım Geliştirme Metodojileri
1. Scrum
Scrum, belki de en popüler Agile proje yönetim metodolojisidir. Sprintlerle tanımlanır ve uygulama geliştirme süresini en üst düzeye çıkarmayı ve ürün hedefini gerçekleştirmeyi savunur. Bu hedef, her sprint ile biraz daha gerçekleşmeye yakınlaşan, büyük resmi ifade eden bir değer hedefidir.
Scrum metodolojisini izleyen bir ekip, gününe tüm faaliyetleri senkronize etmek ve o gün için en iyi yolu belirlemek amacıyla 15 dakikalık bir toplantı ile başlar. Ürün yöneticisi, bu toplantı sırasında sprintin "sağlığını" ve projenin ilerlemesini kontrol etme fırsatını kullanabilir.
Scrum, yazılım geliştirme ile popüler olarak ilişkilendirilse de, çoğu iş bağlamında başarıyla kullanılabilir.
2. Kanban
Kanban terimi, Japon kökenlidir ve "tam zamanında" (just in time) kavramıyla ilişkilidir. Bu yöntem, bir "Kanban panosunu" (tahta veya tablo) sütunlara böler. Proje içindeki her bir akış, sütunlarda bir "kart" olarak gösterilir ve geliştirmeler ilerledikçe bu kartlardaki bilgiler değişir. Yeni bir görev tanıtıldığında yeni bir kart eklenir.
Kanban, ekipler arası üyelerin proje durumunu her an görmesine olanak tanıyarak şeffaflık ve iletişimi teşvik eder. Kanban'ın temel odak noktası, özellikle birden fazla küçük değişiklik içeren yinelemeler için çok faydalı olan ekip kapasitesidir. Yazılım geliştirmenin yanı sıra, Kanban, tüm ekip görevlerine görünürlük kazandırdığı için IT ve pazarlama gibi iş departmanlarında da kullanışlıdır.
3. Extreme Programming (XP)
Extreme Programming (XP), tipik bir Agile çerçevesi olup, "bunu gerçekleştirmenin en basit yolu"nu keşfetmeye odaklanırken uzun vadeli ürün hedefini öncelik sırasından çıkarır. XP'nin temel değerleri sadelik, iletişim, cesaret, saygı ve geri bildirimdir. XP'nin en yüksek önceliği müşteri memnuniyetidir ve geliştirme sürecinin sonraki aşamalarında bile proje gereksinimlerindeki değişiklikleri kabul etmeyi teşvik eder.
XP'de ekip çalışması da önemli bir bileşendir; müşteriler, yöneticiler ve ekip üyeleri, en iyi uygulamayı oluşturmak için yakından çalışır. XP'de testler ilk günden itibaren başlar ve kaliteyi artırmak için sürekli geri bildirim toplanır. Çift programlama (pair programming) gibi faaliyetler bu mühendislik metodolojisinde teşvik edilir.
4. Lean Development
Lean Development, doğrudan Toyota'nın Yalın Üretim (Lean Manufacturing) yaklaşımından uyarlanmış bir yazılım geliştirme yöntemidir. Bu yöntem, ekibi, ürüne değer katmayan her türlü faaliyeti acımasızca ortadan kaldırmaya teşvik eder.
Yalın Geliştirmenin yedi temel ilkesi şunlardır:
1. Ürün kalitesi için önemi olmayan her şeyi acımasızca ortadan kaldırın.
2. Kaliteli geliştirmeye odaklanın.
3. Değerli dokümantasyon yoluyla bilgi oluşturun.
4. İş gereksinimlerini tamamen anlamadan geliştirme planı yapmayın.
5. Müşteriye mümkün olan en kısa sürede değer teslim edin.
6. Düzenli iletişim kurun, çatışmaları hızla yönetin ve saygı kültürü geliştirin.
7. Son olarak, kısmi optimizasyona odaklanmayın ve tüm uygulamanın yüksek kaliteli olmasını sağlayın.
CyberRulz06 tarafından çevirilmiştir. Asıl makalede bulunan bâzı uzun detayları traşlayıp asıl çözümleri öne taşımaya çalıştım. Anlam bütünlüğü korunması için bazı kelimeler Türkçe de farklı çevirilmiştir ve orijinal görseller kullanılmıştır. İyi okumalar ve iyi forumlar


