Özellik Odaklı Geliştirme Nedir?
- 23 February 2021
- 388 Görüntülenme
- 0 Yorum
Bu makale Sistem Geliştirme Yaşam Döngüsünü açıklamaktadır. Bu makaleyi okuduktan sonra, bu güçlü internet teknolojisinin temellerini anlayacaksınız.
Proje yönetiminde Özellik Odaklı Geliştirme (FDD) nedir?
Özellik Odaklı Geliştirme (FDD), yinelemeli ve artımlı yazılım geliştirme için bir çerçevedir. Çevik yöntem, sık ve verimli bir şekilde sonuç üretmeyi amaçlayan yazılım geliştirmek için kullanılır. FDD, ilerlemeyi ve sonuçları takip etmeye yardımcı olan tüm seviyelerde raporları harekete geçirir. Diğer yazılım geliştirme yöntemlerinden farklı olarak, ekipler hataları ve hataları düzenli ve hızlı bir şekilde belirleyip düzeltebilir. Ek olarak müşteriye herhangi bir zamanda güncellemeler ve ara sonuçlar sağlamaya odaklanır. FDD, yazılım geliştirmede en sevilen yaklaşımlardan biridir çünkü genellikle mücadele edilen iki yönü hedefler: kafa karışıklığı ve revizyon.
FDD, geliştirme için aşamalı bir araçtır, yani halihazırda mevcut yazılımın üzerine inşa edilir. Büyük ve her şeyi kapsayan bir güncelleme uygulamak yerine, FDD, yeni işlevleri adım adım yayınlamak için kullanılır. Bu şekilde müşterinin talepleri her zaman önceliklendirilebilir ve memnuniyetleri korunur.
FDD, proje sektörünün tanınmış en iyi uygulamalarının birkaçını tutarlı bir bütün halinde birleştirir. Tüm uygulamalar müşterinin bakış açısından yönlendirilir. En önemli hedef, Çevik Manifesto’nun kurallarına uyarak hızlı çalışan ve somut bir yazılım sunmaktır.
Özellik Odaklı Geliştirme (FDD) nereden çıktı?
Feature Driven Development (FDD), 1997 yılında Jeff De Luca tarafından 15 ay boyunca bir yazılım geliştirme projesi üzerinde ve elliden fazla çalışanıyla çalışırken tasarlandı. Bu deneyim, genel bir modelin geliştirilmesini gerektiren bir dizi beş süreç yaratılmasına yol açtı. Bu açıklama ilk olarak 1999 yılında ‘Java Modeling in Color with UML’ kitabında dünyaya tanıtıldı. Bu kitap Peter Coad, Eric Lefebvre ve Jeff De Luca tarafından yazılmıştır. Daha sonra 2002’de Stephen Palmer ve Mac Fesling’in kitabı Java dışında FDD’nin daha genel bir tanımını yaptı.
Özellik Odaklı Geliştirme (FDD) süreci nasıl çalışır?
FDD, beş temel faaliyetten oluşan modele dayalı bir yineleme sürecidir. Bu faaliyetler aşağıdaki şekilde gösterilmektedir. İlk iki etkinlik sırasında, model için genel bir form oluşturulur. Son üç etkinlik her işlev için tekrarlanır.
İlk ana faaliyet, genel bir model geliştirmekten ibarettir. Bu ilk etkinliğin sonucu, geliştirme, işlevler ve taleplerle ilgili notlarla birlikte yüksek düzeyde bir nesne modelidir. İkinci adım, farklı işlevleri ilgili işlevlere ve alanlara gruplayarak bir işlev listesinin derlenmesidir. Sürecin en büyük kısmı dördüncü ve beşinci adımlardan oluşur. Bu iki faaliyet, modelleme, programlama, test etme ve hazırlama gibi görevleri gerektirir.
FDD sürecinden farklı faaliyetler nelerdir?
Tüm Çevik yöntemlerde olduğu gibi, Özellik Odaklı Geliştirme sürecindeki ilk adım, projenin içeriği ve bağlamı hakkında iyi bir genel bakış elde etmektir. Ayrıca hedef grup ve ihtiyaçları hakkında açık ve ortak bir anlayış oluşturulmalıdır. Bu hazırlık aşamasında, ekiplerin proje ve motifler hakkında her şeyi öğrenmek için çaba göstermesi gerekir. Bu hazırlık aşaması 0 aşaması olarak düşünülebilir. Resmi modelin bir parçası olmasa da bu aşama atlanamaz.
Etkinlik 1: genel model geliştirme
FDD’nin ilk gerçek aşamasında, önceki araştırma aşamasının sonuçları üzerinde çalışılır. İlk gerçek eskiz oluşturuldu. Ekip, tezi (kılavuz) kullanarak ayrıntılı bir alan modeli geliştirecek ve bu model, sistem için bir plan olarak işlev görecek yeni bir genel modele birleştirilecektir. Geliştirme sırasında ve ekip öğrenip gelişirken ayrıntılar eklenir.
Etkinlik 2: işlev listeleri geliştirme
Özellik Odaklı Geliştirmenin (FDD) ikinci aşaması, kullanıcının veya müşterinin talep ettiği ve takdir ettiği özelliklerin belirlenmesinden oluşur. Bir fonksiyonun müşteri tarafından takdir edilen bir çıktı olduğunu hatırlamak önemlidir. İki hafta içinde tamamlanabilecek işlevlerin bir listesini yapın ve bu işlevlerin görevler yerine hedefler olduğunu anlayın.
Etkinlik 3: işlev planlama
Üçüncü aşama, tüm işlevlerin ve bunların uygulanma yollarının yönetilmesinden oluşur. Ekibin iş yükü, çeşitli riskler ve sorunların ortaya çıkmasını engelleyen diğer önemli hususlar gibi dikkate alınır.
Ekip şimdi esas olarak her işlevin karmaşıklığının analizine ve bunların yürütülmesiyle ilgili görevlerin planlanmasına odaklanıyor. Planlama aşamasında, modelin veya sistemin işlevlerini müşterinin talep ve istekleriyle uyumlu hale getirmek için yapılacak çeşitli değerlendirme anlarına projenin tüm üyeleri katılmalıdır.
Ayrıca sınıf sahipleri oluşturulacak. Bunlar, belirli sınıf işlevlerine atanan bireysel geliştiricilerdir. İşlevin her sınıfı belirli bir geliştiriciye ait olduğu için, her zaman tüm sınıflardan sorumlu biri vardır. Değişiklikler gerekliyse, sınıf sahiplerinin birlikte çalışması çok önemlidir.
Etkinlik 4: Özelliğe göre tasarım
Baş programcı, önceden edindiği bilgileri kullanarak bir takımın geliştirmesi gereken tüm işlevleri seçer. Ayrıca alan sınıflarını da tanımlar. Ekip çalışmaya başladıktan sonra, alan uzmanı her fonksiyon için çözümlerin analizi ve geliştirilmesine odaklanır.
Etkinlik 5: Özelliğe göre derleme
Özellik Odaklı Geliştirme’nin (FDD) son faaliyeti, tasarımı destekleyen tüm gerekli faktörlerin uygulanmasından oluşur. Bu aşamada, örneğin, bir kullanıcı arayüzü veya teknik tasarım sırasında kurulan sistemin bileşenleri oluşturulabilir. Daha sonra fonksiyonun bir prototipi yapılacaktır. Bu test edilecek, incelenecek ve onaylanacaktır. Onay alındıktan sonra işlev, sistemin ana sürümüne eklenebilir. İki haftadan fazla gerektiren her işlev, işlev başına en fazla iki hafta kuralına uymaları için öğelere ayrılacaktır.
Özellik Odaklı Geliştirmenin (FDD) temel ilkeleri?
FDD, birkaç temel ilkeye veya en iyi uygulamaya dayanmaktadır. Bunlardan yedi tanesi aşağıda açıklanmıştır.
Muayeneler
FDD ekipleri kaliteyi sağlamak için düzenli olarak teftiş yapar. Sistemin tasarımı ve kodu vurgulanmaktadır. Bu denetim sırasında, aksi takdirde çok daha sonra ortaya çıkacak olan kusurların belirlenmesi önemlidir.
Özellik ekipleri
Özellik ekibi, küçük bir özellik geliştiren dinamik ve küçük bir ekiptir. Her karar verme anına birden çok açıdan bakıldığından ve çeşitli tasarım seçeneklerinin değerlendirildiğinden emin olurlar. Sunumlardan ve bir fonksiyonun kalitesinden tek bir kişi sorumlu olsa da, tasarım ve uygulama kararlarına herkes katkıda bulunur.
Konfigürasyon yönetimi
Yapılandırma yönetimi, zaman içinde bir noktaya kadar tamamlanmış tüm işlevler için kaynak kodunun tanımlanmasını içerir. Ek olarak konfigürasyon yönetimi, proje ilerledikçe sistemdeki değişikliklerin geçmişini farklı sınıflarda tutmakla ilgilidir.
Bireysel sınıflar
Bireysel sahiplik, farklı iş parçalarının veya bir kod parçasının bir sahibe atanması anlamına gelir. Yürütmeden sorumludur ve kaliteyi ve performansı garanti etmesi gerekir.
Etki alanı modelleme
Etki alanı nesne modellemesi, sorunların çözülmesinden oluşur. Ekipler, bir alandaki nesneleri ve nesneler arasındaki ilişkiyi tanımlamak için farklı diyagramlar geliştirir. Bu süreç, sonraki faaliyetlerin yürütülmesi sırasında zamandan tasarruf edilmesini sağlar.
Fonksiyon geliştirme
Geliştirilmesi iki haftadan fazla süren karmaşık bir işlev veya araç, her bir alt problem iki hafta içinde çözülebilecek kadar küçük olana kadar daha küçük işlevlere ayrılır. Bu durum doğru işlevleri sunmayı ve sistemi ayarlamayı kolaylaştırır.
İlerleme raporları
Yöneticiler, proje içindeki ve dışındaki tüm seviyelerden düzenli ilerleme raporları kullanarak bir projeye liderlik ederler.
Özellik Odaklı Geliştirme ekibinin üyeleri
FDD kullanan bir modelleme ekibi en azından aşağıdaki rolleri kapsar:
Proje Müdürü
Proje yöneticisi tüm projelerde olduğu gibi tüm projeyi denetler. Proje yöneticisi aynı zamanda sponsor ve takımın sahibi arasındaki bağlantıdır. FDD, müşteri ile yakın teması teşvik etmesiyle bilinir. Bu durum proje yöneticisi için önemli bir sorumluluktur.
Baş mimar
Yeni sistemin genel tasarımından ve modellemesinden baş mimar sorumludur. Geliştirme aşamasında, baş mimar diğer geliştiricilerle yakın çalışır.
Geliştirme yöneticisi
Geliştirme yöneticisi, tüm geliştirme ekibine liderlik eder ve rehberlik eder. Ayrıca günlük programlama faaliyetlerini denetler ve ekip üyeleri için iletişim noktasıdır.
Baş programcı
Baş programcı tasarım ve analize yardımcı olur ve bazen daha küçük geliştirme ekiplerini denetlemek ve yönetmek için de atanır.
Sınıf sahibi
Sınıf sahibi, baş programcı tarafından yönetilen daha küçük bir geliştirme ekibinin üyesidir. Sınıf sahibinin sorumlulukları, işlevlerin tasarımını, kodlanmasını, test edilmesini ve belgelenmesini gerektirir.
Alan uzmanı
Alan uzmanı, sorunu analiz ve müşteri ile iletişim yoluyla çözen bir ekibin parçasıdır. Geliştiriciler, alan uzmanının bilgi ve becerilerine güvenir ve işlevlerin çalışıp müşterinin beklentilerini karşılamasını sağlar.
Özellik Odaklı Geliştirme’nin (FDD) artıları ve eksileri?
FDD’nin kullanımı hem artıları hem de eksileri içerir. Aşağıda, her iki kategorinin en önemli yönlerine genel bir bakış bulunmaktadır.
Artıları
- FDD’nin yapılandırılmış kullanımı, ekibe projenin kapsamı ve bağlamı ve hedefleri hakkında sağlam bir anlayış sağlar.
- FDD, Scrum tabanlı alternatiflere göre daha az uzun toplantılar gerektirir. FDD, iletişim kurmak için dokümantasyon kullanımını teşvik eder
- FDD, yazılım/sistem geliştirmeye yönelik kullanıcı dostu bir yaklaşımdır
- FDD büyük, küçük, kısa ve uzun projelerle uyumludur
- Beş etkinlik, yeni ekip üyelerinin projenin hedeflerini hızlı bir şekilde öğrenmesini kolaylaştırır
- FDD, büyük miktarlarda çalışmayı daha küçük setlere bölerek hataları bulmayı ve onarmayı kolaylaştırır.
- Bu yüzden gecikme riski daha azdır ve daha hızlı teslimat süresi garanti edilebilir
Eksileri
- Özellik Odaklı Geliştirme (FDD), çok küçük projeler için daha az uygundur ve tek bir geliştiriciye sahip projeler için çalışmaz
- FDD, baş programcıya güçlü bir bağımlılık yaratır
- FDD, grup üyeleri arasındaki belge miktarına rağmen tüketiciye çok az yazılı belge sunar
- Kolektivizm yerine bireyciliği uyarır
Özellik Odaklı Geliştirme (FDD) ve Scrum
FDD’nin Scrum ile pek çok benzerliği vardır ama FDD teslim odaklı olmak yerine işlev odaklıdır. Fonksiyonlar, FDD’de önemli bir bileşendir. FDD için işlevler, Scrum geliştiricileri için kullanıcı hikayeleridir. Kullanıcı hikayeleri ayrıca müşteri tarafından takdir edilen küçük işlevlerdir.
FDD işlemi sırasında, her iki ila on günde bir bir işlev sunulmalıdır. Scrum’da sprintler genellikle birkaç haftadır. FDD yaklaşımı ayrıca, Extreme Programming (XP) ve Scrum gibi diğer yöntemlere göre dahili kullanım için dokümantasyona daha fazla değer verir. Bu durum toplantılarda kullanışlılık ve rollerde farklılıklar yaratır. Scrum ile takımlar her gün buluşur. FDD ile ekipler, proje stratejisinin bir parçası olarak değiş tokuş edilen dahili belgelere güvenir. Özellik Odaklı Geliştirme (FDD) kullanılırken gerekli olan çok sayıda toplantı yoktur.
İki yöntem arasındaki bir diğer önemli fark, FDD ile sonunda sistemi kullanacak kişinin son kullanıcı olarak kabul edilmesidir. Scrum ile ürün sahibi son kullanıcı olarak kabul edilir.
Ne düşünüyorsunuz?
Özellik Odaklı Geliştirme (FDD) açıklamasına aşina mısınız? Yazılım çözümlerini veya diğer işlevleri başarıyla uygulamak için kişisel başarı faktörleriniz nelerdir? FDD çevrenizdeki projelerde kullanılıyor mu? Scrum’ı mı yoksa diğer Çevik yöntemleri mi tercih edersiniz? Herhangi bir ipucu veya yorumunuz var mı?
Düşüncelerinizi ve bilginizi aşağıdaki yorum kutusunda paylaşabilirsiniz.
Bu makaleyi beğendiyseniz, lütfen abone olun…
Yorumunuzu bırakın