Çevik Metodoloji Nedir?
Çevik Metodoloji Nedir?
Günümüz İşletmeleri Son Derece Rekabetçi ve Hızla Değişen Bir Ortamda Faaliyet Göstermektedir.
Yeni fırsatlara ve pazarlara, ekonomik gelişmelere ve yeni rekabetçi ürün ve hizmetlerin ortaya çıkmasına uygun şekilde yanıt vermelidirler.
Yazılım her sektöre nüfuz eder ve daha az başarılıdır ve tasarım aşamasındaki yazılım yeni teknolojiler kullanır ve rekabetçi pazarda rakiplerini alt etme potansiyeline sahiptir.
Önemli yazılım geliştirme çalışmaları yapan kuruluşların en kritik kaygılarından biri, yazılımların hızlı bir şekilde teslim edilmesi ve piyasaya sürülmesidir. Ancak heyecan verici ve düşündürücü nokta, çevik metodolojilerin yeni başlayanlar, inanılmaz derecede yalın girişimler kavramlarıyla benzersiz etkileşimine ve dizinine geri dönüyor.
Bu makale, aylık ağın 207 numaralı “Metodolojiler, modeller ve yazılım mimarisi” özel dosyasındaki makalelerden biridir. İlgilenenler bu özel dosyanın tamamını ağ sitesinden indirebilirler.
Yazılım dünyasında temel bir ilke, hiçbir zaman tüm kullanıcıların ihtiyaçlarını karşılayan eksiksiz bir yazılım ürünü üretemeyeceğinizi belirtir. Yazılım şirketleri, günümüz müşterilerinin ihtiyaç duydukları ürünü hızlı ve mümkün olan en yüksek kalitede elde etmek istediklerini biliyor. Bunlar sürekli değişen ihtiyaçlardır.
Bugünlerde yazılım şirketlerinin müşterileri, bir ürünün pratik kullanımından önce çalışanların ve tüm kompleksin faaliyetleri üzerindeki etkisini değerlendirmenin imkansız olduğu konusunda genel bir kanıya varmışlardır.
Daha doğrusu, bir ürün siparişi veren müşteriler, topladıkları yeni yazılımın diğer sistemlerle nasıl iletişim kuracağını ve çalışanlarının hangi faaliyetlerinin tamamen en son yazılımın konuşlandırılmasından etkileneceğini bilemezler.
Bir yazılım ürünü, yalnızca tamamen dağıtıldığında ve personel onunla çalışırken eksikliklerini ortaya çıkaracaktır.
Bir web sitesi tasarlamak ve kurmak bu alanda açık bir örnektir.
Yazılım firmalarının dikkat etmesi gereken önemli bir nokta, yazılım geliştirme için uygun bir model kullanmaktır. Müşteri ile ilk karşılaşmanızda ve sunduğu talepte, ürünü yapmak için ideal olan modeli hızlıca anlamalısınız.
Müşterilerinizin sözleşmeyi imzaladıktan sonra ve yazılımın tasarımı veya uygulanması sırasında taleplerini değiştirebileceği veya yeni bir talepte bulunabileceği bu hayati ilkeye her zaman dikkat etmelisiniz; böyle bir durumda sistemin yeniden çalışması ve test edilmesi gerekir.
Bu gibi durumlarda ortalama bir kademeli model veya temel ve sabit özelliklere göre çalışan bir süreç kullanmak pratikte ürün tasarım süresini uzatmakta ve ürün teslim süresini geciktirebilmektedir.
Doğru metodolojiyi seçmek, işinizin başarısının anahtarıdır.
Şirketler, özellikle startuplar, hız kavramının ilk kelime olduğu bir ortamda işlerine başlarlar. Bu konu iki farklı açıdan incelenebilir. Bir önceki paragrafta bahsettiğimiz durum yazılım firmalarının ortak sorunlarından biridir.
Ne yazık ki bir firma bu değişen müşteri isteklerine gerektiği gibi cevap vermez veya görmezden gelirse en kısa sürede müşterisini kaybeder. Çünkü ağızdan ağza pazarlama tekniği (etkili bir başlangıç pazarlama modeli) geri tepecek ve şirketin itibarını zedeleyecektir.
Ancak, özellikle yeni başlayan bir işletme sahibiyseniz, akılda tutulması gereken bir diğer önemli şey, zamanında ürün teslimi ile ilgilidir.
Yeni başlayanların ve yeni başlayan yazılım şirketlerinin başarısızlığına neden olan en önemli faktör gecikmedir. İşletmeniz bir ürün tasarlamıştır ancak yazılım hazır ve kullanıma hazır hale geldiğinde yazılımın üzerine kurulduğu temel sebep ve fikir değişmiş, yazılım işe yaramaz bir ürün haline gelmiştir.
Bazı belirli işletmeler için hızlı yazılım geliştirme ve teslim süreçleri kullanıyoruz. Hızlı yazılım geliştirme için birçok yöntem olmasına rağmen, hepsi bazı temel özellikleri paylaşır.
Bu özellikler aşağıdaki gibidir:
Esas olarak programlama ortamında yazılan belgeler. Tasarım ve uygulama aynı anda yapılır. Bu modellerde, sistemin özellikleri ile ilgili hiçbir detay yoktur ve belge oluşturma tasarımı minimum düzeydedir.
Sistem artımlı geliştirme durumunda tasarlanmıştır. Son kullanıcılar ve diğer sistem paydaşları her adımı belirler ve değerlendirir. Sistemde değişiklikler getirebilir veya daha sonraki geliştirme aşamalarında uygulanması gereken yeni gereksinimler sağlayabilirler.
Sistem kullanıcı arayüzleri, çoğu durumda, arayüz tasarımının simgeler ve resimler kullanılarak hızlı bir şekilde oluşturulmasına izin veren evrimsel bir geliştirme sistemi kullanılarak yapılır. Yöntem, bir tarayıcı için web tabanlı bir arabirim veya Microsoft Windows gibi belirli bir platform için bir arabirim oluşturabilir.
Derginin geçmiş sayılarında (193 ve 189) bahsettiğimiz artımlı ve hızlı geliştirme metodolojileri, yazılımın tek bir ürün yerine artımlı modda üretilmesini ve sunulmasını içerir.
Her yinelemeli süreç, yeni bir artımlı ürün üretir.
Artımlı model, yazılım geliştirme süresinde önemli bir avantaj sağlar: müşteriye hızlı ürün teslimi.
Bir ürünün erken artımlı sürümleri müşterilere daha yüksek önceliğe sahip özellikleri gösterebilir, böylece müşteriler erken sürümler aracılığıyla sistemin gerçek değerini fark edebilir. Müşteriler, ürünü görüntüleyerek geliştirme sırasında ihtiyaçlarının karşılanıp karşılanmadığını ve ürünün sonraki sürümlerinde uygulanması gereken değişikliklere ihtiyaç olup olmadığını görebilir.
Müşterilerin sistem geliştiricilerle etkileşimi artımlı geliştirme sürecinde dikkate alınmalıdır çünkü geri bildirimin müteakip toplam örneklere uygulanabilmesi için geliştirme ekibine geri bildirim sağlamaları gerekir.
Ancak bu kişilerin katılımı, sistemin muhtemelen onların ihtiyaçlarına göre tasarlanacağı anlamına gelmez. Bunun yerine, sistemin hedeflenen pazarlara göre çalışacağını garanti eder. Şekil 1),
Artımlı bir geliştirme sürecinin bir modelini gösterir. Bu süreç modelinin odak noktasının erken aşamalarda mimari tasarım olduğunu unutmayın. Bu süreçlerin başında mimarinin düşünülmediğini varsayalım. Bu durumda, sistemin genel yapısı muhtemelen istikrarsız olacak ve inşa edilen artımlı geliştirme modelleri de sallantılı olacaktır.
Çevik Metodolojiler
1980’lerde ve 1990’ların başında, en yüksek kalitede yazılım oluşturmanın en iyi yolunun CASE araçlarını destekleyen yöntemleri kullanmak olduğu görüşü ortaya çıktı. Geliştirme ekiplerinin yazılım geliştirme süreçleri üzerinde ayrıntılı kontrol sahibi olmasını sağlayan araçlar. Bu görüş, esas olarak büyük projeler tasarlayan ve inşa eden mühendisler topluluğu tarafından sunuldu.
Görevleri, birçok bireysel tasarımı birleştirerek oluşturulan uzun ömürlü sistemler oluşturmak olan insanlar. 2001 yılında, hafif yöntemlere dayalı özellikleri ve göstergeleri tanımlamaya çalışan bir yazılım geliştiricileri ve hafif metodoloji savunucuları topluluğu ortaya çıktı.
Bu dernek, tutarlı ve birleşik bir bakış açısına ulaşmak için bir araya geldi ve sonunda Manifesto adlı ortak bir bildiri yayınladı. Bu açıklama, çevik metodolojinin ilkeleri olarak bilinen yazılımın hızlı gelişimi için bir dizi ilke, değer ve kural getirdi.
Bu ortak bildiride vurgulanan en önemli ilkeler arasında şunlar sayılabilir:
Hızlı ve sürekli yazılım teslimi ile müşteri memnuniyetini sağlıyoruz.
Projeler nihai tasarım aşamasında olsa bile değişikliklere karşı esnekim.
Belirli aralıklarla yazılımın deneme sürümlerini yayınlıyorlar.
Kullanıcılar ve yazılım geliştirme ekibi arasında tutarlı bir iletişim kuruyoruz.
Alıntılanabilir belgeler.
Tekdüze ve istikrarlı bir üretim sürecini destekleyin
Uzman ve kalifiye insan istihdamı
Gereksiz öğeleri ortadan kaldırarak görevleri basitleştirin
Ekibin performansının ve verimliliğinin belirli dönemlerde incelenmesi
Genel olarak, çevik yazılım geliştirme modeli, kademeli ve yinelemeli evrime dayalı bir dizi yazılım geliştirme metodolojisinden oluşur – çözümlerin ekipler arasında kendi kendine organizasyon ve işbirliği yoluyla elde edildiği bir grup.
Daha açık bir ifadeyle çevik metodoloji, geliştirme döngüsü boyunca müşteriler ve geliştirme ekibi arasındaki etkileşimi sürdürmeye çalışan kavramsal bir çerçevedir. Çevik metodolojiye dayalı temel modeller arasında artımlı, işbirlikçi, doğrudan, uyarlanabilir vb. modelleri sayabiliriz. Şekil (2) zarif geliştirme modelini göstermektedir.
Günümüzde, belirli projelerle bağlantılı olarak çeşitli hafif geliştirme modelleri kullanılmaktadır. Aşağıda en ünlü modellerden bazılarını tanıyacaksınız.
ASD Sarnam (Uyarlanabilir Yazılım Geliştirme)
Uyarlanabilir yazılım geliştirme, Jim Highsmith ve Sam Baier‘in tasarladığı yazılım geliştirme süreçlerinden biridir. (Figür 3)
ASD, geleneksel kademeli ağır sıklet geliştirme modeline bir alternatif olarak önerildi. Bu model, karmaşık sistemler ve yazılımlar oluşturmak için kullanılır. Bu model, bileşen tabanlı uyarlamanın doğası ve grup işbirliği olmak üzere iki ana fikre dayanmaktadır. Spekülasyon, işbirliği ve bu modelin üç ana aşamasından öğrenme. Bu modelde, birincil aşamada bir tekrarlama modeli kullanılır.
Çevik Modelleme) AM)
Yazılım sistemlerini belgelemek ve modellemek için kullanılan bir metodolojidir ve her zaman en iyi yöntemleri seçmeyi vurgular. Bu model, çevik bir yazılım geliştirme projesinde kullanılan ilke ve değerlerden oluşur. Bu metodoloji geleneksel yöntemlerden daha esnektir. Sonuç olarak, değişikliklerin hızlı bir şekilde yapıldığı sistemlere daha iyi uyum sağlar. AM, çevik yazılım geliştirme paketinin bir parçası olarak bilinir. (Şekil 4)
kristal aile
Crystal metodolojisi, yazılım geliştirme için en hafif ve çok yönlü metodolojilerden biridir. Crystal Clear, Alistair Cockburn tarafından tasarlanan Crystal yöntem ailesinin bir üyesidir. Crystal, her biri ekip boyutu, proje önceliği ve proje duyarlılığı gibi çeşitli faktörlere bağlı olan kendine has özelliklere sahip olan Clear Crystal, Crystal Yellow, Crystal Orange vb. gibi bir dizi çevik çözümden oluşur.
Farklılıklar var. Bu model genellikle 6 veya 8 kişilik ekipler ve çok hassas olmayan sistemler için uygundur. Crystal’ın ailesi, süreç veya ürünlerden çok insanlara odaklanır. Bu yöntemin olumlu özellikleri arasında, tasarımın temelleri ve projenin büyüklüğüne ve hassasiyetine göre en uygun yöntemi seçebilmesini sayabiliriz. Şekil (5) bu modelin ailesini göstermektedir.
Disiplinli çevik teslimat
DAD çerçevesindeki yaşam döngüsü üç ana aşamadan oluşur: Başlangıç, Yapım ve Geçiş; bu üç fazın her birinin kendi hedefleri vardır ve her birinde bu faaliyetlerin sahip olduğu faaliyetler devam etmektedir. Birkaç kilometre taşı. DAD’nin her adımının üç bölümü vardır: koordinasyon, işbirliği ve sonuç. (Şekil 6)
Çevik yöntemler nasıl çalışır?
Çevik yöntemlerin çalışma temeli, projeyi küçük parçalara ayırmaya ve genellikle bir ila dört hafta içinde her bir parça için planlamaya, tamamlanan parçaları tamamlamaya ve diğer faktörlere eklemeye odaklanır.
Sonuç olarak çevik yöntemlerde genel bir planlamaya ve tüm detayları işin başında düşünmeye gerek yoktur. Bu yöntemde her zaman çerçevesi, planlama, gereksinim analizi, tasarım, kodlama, birim testi ve nihai testi içeren eksiksiz bir yazılım geliştirme döngüsüdür. Bu yöntemin en önemli avantajlarından biri, projenin genel riskini azaltması ve değişikliklere hızlı uyum sağlama yeteneğidir.
Bu yöntem yazının başında da belirttiğimiz gibi yazılımın prezentabl bir parçasını her dönemde minimum problemle üretmeyi amaçlar.
Her dönemde rüçhan hakkına göre işler yapılır.
Adaptasyon süreci iki önemli faktörü içerir: üretim sürecindeki değişiklikler ve yazılımdaki değişiklikler. Müşteriler ve geliştiriciler arasında yapılan toplantılarda öncelikler belirlenir. Çünkü çevik yöntemlerin esnekliğe özel bir vurgusu vardır. Sonuç olarak, çevik yöntemler, uyumluluğun esas olduğu yinelemeli geliştirme ile ilgilidir ve bu, uzun vadeli planlama ile uyumlu olmayan tam olarak aynı şeydir.
Yazılım geliştirme Yaşam Döngüsü
Çevik yöntemler, yazılım geliştirme yaşam döngüsünün farklı yönlerine odaklanır. (Şekil 7)
Bazıları yöntemlere (taşma programlama, fonksiyonel programlama ve çevik modelleme), bazıları yazılım proje yönetimine (Scrum gibi), bazıları tüm yazılım geliştirme yaşam döngüsüne (bir sistemin dinamik geliştirme yöntemleri ve entegre geliştirme süreci) dayanmaktadır. ve bazıları da gereksinimlerin belirlenmesiyle ilgili.
vurguluyorlar. Bu nedenle, çeşitli çevik yazılım geliştirme yöntemleri arasında belirgin bir fark vardır. Bir sistemin dinamik geliştirme yöntemleri ve entegre geliştirme süreci, yazılım geliştirmeyi desteklemek için tamamlayıcı yaklaşımlar gerektirmese de, geri kalanlar bu eklere değişen derecelerde ihtiyaç duyar. Herhangi bir geliştiricinin, bir sistemin dinamik geliştirme yöntemleri gibi karmaşık modelleri bile kullanabileceğini unutmayın.