Kullanıcı öyküleri (kartta yazıldığında) gereksinimleri nasıl içermez ve yine de uygulanabilir


18

"Kullanıcı Öyküleri şart değil, sadece müşterinin ne istediğini hatırlatıyor, bir hikayeye gereksinimleri koyamazsınız". Ancak, bir müşterinin farklı kredi kartları için farklı bir işlem istediği örneğini ele alalım. Test senaryolarının yazılabilmesi için uygulanması ve bilinmesi gereken katı gereklilikler vardır. Kullanıcı hikayesinde değilse şartlar nereye gitmeli?

Daha düşük gereksinimler yoksa geliştiriciler bir hikayeden nasıl gelişebilir? Test kullanıcıları bir kullanıcı hikayesine dayalı olarak test senaryolarını (ayrıntılı olanlar) nasıl yazabilir? DB kısıtlamaları, alan doğrulama vb. Gereksinimler kullanıcı hikayesinin dışında nerede bulunur?


6
Kullanıcı öyküleri sadece budur - kullanıcı seviyesi gereksinimleri. Daha düşük seviyeli 'yazılım gereksinimleri' (genellikle hangi sınırlamaların kabul edilebilir olduğu kabul edilir) daima ayrı ayrı toplanmalı ve uygun bir referansla ayrı olarak belgelenmelidir.
Gusdor

7
Kullanıcı hikayelerini edinmenin amacı, programınızın çoğu kullanıcısının nasıl çalıştığını asla bilemeyeceği veya umursamayacağıdır . Veritabanı yapısı, endişelerin ayrılması, sınıf yapıları vb. stabilite, hız ve kullanım kolaylığını önemsiyorlar. Bu nedenle, programı ne için kullanacaklarını öğrenmek için hikayelerini yakalarsınız. Daha sonra bunu nasıl uyguladığınız tamamen ayrı bir gereksinim seviyesidir, kullanıcılar genellikle bu süreci bilgilendiremez veya istemez.
jonrsharpe

2
tatarcık: Aslında hayır. Sordum, çünkü SCRUM'un yaygın kullanımı göz önüne alındığında, bunun emin olduğum gibi nasıl doğru bir şekilde yapılabileceğiyle gerçekten ilgileniyorum, bu birçok takım için bir sorun olmalı.
user144171

4
@maple_shaft "rantish" unsurlarıyla ilgili sorun, bunların rantish cevapları çekme eğilimindedir. İçinde mantıklı bir çekirdek olduğunu kabul ediyorum , sadece o çekirdeği tutmak ve sıralı cevaplara davet silmek için düzenlenip düzenlenemeyeceğini merak ediyorum
gnat

2
Burada iyi bir soru var, ama bir rant olarak yazılmış. Bir düzenleme girişiminde bulundum.
DA01

Yanıtlar:


28

Bu cevap Kullanıcı Öyküleri ile nasıl çalışılacağına ve daha düşük seviye gereksinimlerine odaklanacaktır. Scrum veya Agile'ın erdemlerini veya eksikliğini tartışmayacağım. Ben de gurulardan bahsetmeyeceğim.

Bu cevap Scrum'da olduğunuzu varsayar, ancak henüz sizin için çalışmanın bir yolunu bulamadı.

Diğerleri de söylediğim gibi, Kullanıcı Öyküleri nasıl kapak içindir Kullanıcılar yazılım olmak istiyorum. Kullanıcılar veritabanı tabloları, kısıtlamalar, mimari desenler gibi düşük düzeyli uygulamalarla ilgilenmediğinden, bu tür ayrıntıları Kullanıcı Öyküsünde bulamazsınız.

Ancak bu, bu detayların hiçbir yere kaydedilmemesi gerektiği anlamına gelmez.

Geliştiriciler Kullanıcı Öyküleri uyguladığında, tipik Kullanıcıların bilmeyeceği daha düşük düzey ayrıntıların farkında olmaları gerekir. Bu bilgiler KOBİ'lerden, BA'lardan, Ürün Sahibinden, mimarınızdan veya diğer uzman veya teknik olarak düşünülmüş kişilerden gelebilir.

Bu, Kullanıcı Öyküleri'ne düşük düzeyli ayrıntıların kaydedilmesi gerektiği anlamına mı geliyor? Hayır ve evet).

Hikayenin yaratıldığı ve uygulandığı zaman arasındaki bir noktada, birisinin onu nasıl uygulayacağı üzerinde çalışması gerekecektir . Bu genellikle Hikayede yer alan kişilerle (Kullanıcı, mimar, geliştirici vb.) Yapılan görüşmeler şeklini alır. Bu görüşmeler , Kullanıcı Hikayesi'nin uygulanmasının kapsamını açıkça belirleyen kesin Kabul Kriterleri ile sonuçlanmalıdır. Bu ayrıntıların bir yere ve bunun size bağlı olduğu bir yere kaydedilmesi gerekecektir. Buradaki anahtar, bu ayrıntıların Kullanıcı Hikayesi oluşturulduktan sonra ortaya çıkmasıdır . Gurunun vurgulamaya çalıştığını düşünüyorum .

Bir geliştirici olarak, daha spesifik gereksinimleri Kullanıcı Hikayenizle ilişkilendirmenin bir yoluna ihtiyacınız olduğu açıktır. Bunu nasıl yapacağınız tamamen ekibinize bağlıdır.

Ekibinizdeki kişiler bu ayrıntıları Kullanıcı Öyküleri dışında tutmak istiyorsa buna saygı göstermeniz gerekebilir. Üst düzey Kullanıcı Öykülerinizi uygulama ayrıntılarından uzak tutmanın faydaları vardır. Onları yalın tutar ve birikiminiz Kullanıcılarınızın ve Ürün Sahibinizin istediği bir geçmiş olarak okunabilir. İhtiyaçlarınızı da bir geliştirici olarak bilin. Kullanıcı Hikayesi'ne bağlanmanın herkesi mutlu ettiği bir uzlaşma yapabilmelisiniz .


3
+1 Kabul Kriterleri daha fazla ayrıntı ekliyor
Kesirli

3

Yup, BS. Ve Scrum Çevik değil.

Çevik yapmanın bir yolu olduğunu ve hangi 'çevik' metodolojinin kutsal metinlerinde belirtilen tüm kuralları izlemeniz gerektiğini size telkin eden çevik uygulayıcıların katılığından nefret ediyorum. Hepsi BS.

Çevik çevik olmakla ilgilidir.

Agile, işleri en az ek yük ile yapmakla ilgilidir. Bu, "daha fazla dokümantasyon" anlamına gelmez, çünkü genellikle çevik bir rolle daha fazla dokümantasyon elde edersiniz, dokümantasyonu yapmak için bir süreç planlamak zorunda kalmadan dokümantasyona devam edersiniz. Kodlama, test ve gereksinimlerin yakalanması gibi. Çevik bir süreçte önemli olan tek şey, herhangi bir BS olmadan işinizi hızlı ve verimli bir şekilde yapmanıza yardımcı olanlardır.

Bu durumda, kullanıcı gereksinimlerini kartlara koymak, gerekli kodu yazmanıza, test etmenize, belgelemenize ve göstermenize yardımcı oluyorsa ... gereksinimleri karta koyun ve gurulara ekibin her zaman haklı olduğunu söyleyin.

Geliştirici ekibinizin geri kalanı ne düşünüyor? Gerçek bir çevik metodolojide, eğer gereksinimlerin herhangi bir 'kullanıcı konuşması' olmadan önceden yazılması gerektiğini düşünüyorlarsa, o zaman öyle olmalı, ekibin işlerini yapmaları için en iyi şekilde çalıştığını düşündüğü şeyi yaparsınız. Ekip, kullanıcı konuşmalarının iyi bir şey olduğunu düşünüyorsa, onları dinleyin ve neden bunu düşündüklerini anlayın ve kendinizi çalışma yollarına getirin.


4
Bunu daha az (yani, aşağılayıcı olmayan) bir şekilde ifade etmeyi düşünür müsünüz? Bu konuda sana katılıyorum, ama insanların farklı fikirleri var ve bu şekilde davranışlarını kaybetmenin bir gerekçesi yok.
Frank

Aslında, önceden yazılmayan gereksinimleri hayal edemiyorum - sayısal alanlar gibi en basit şeyler için bile uzunluğu, veri tipini, doğrulamaları bilmeniz gerekir. Bu gurulara göre, bu şeyler hikayede olmak için gereksizdir. Ancak kodu yazarken, yüksek seviyeli ABD işe yaramaz, kısıtlamaları, akışları vb. Bilmeniz gerekir. ABD'de uygulama ve test için etkili olan saf iki cümlelik bir proje görmedim.
user144171

3
İstemci 8 bitlik bir tamsayı kabul etti, bu yüzden benim hatam değil.
JeffO

2
@gbjbaanb: Agile, "sağduyuyu kullanmak", yani açık analiz / tasarım arasında doğru dengeyi bulmak ve geri bildirim toplamak için hızlı bir şekilde kısmi bir çözüm sunmak için yeni ve süslü bir kelimedir. Çevik terimini oldukça rahatsız edici buluyorum çünkü bu fikirlerde isim dışında çok az yeni var. Daha da kötüsü, SCRUM gibi oldukça esnek olmayan bir çerçeve çevik olarak uygulandığında olur . IMO gerçekten çevik olmak , çevik dalga başlamadan önce her zaman yaptığımız gibi çevik ve SCRUM kelimelerini bırakmak ve sürecinizi ihtiyaçlarınıza uyarlamak anlamına gelir .
Giorgio

1
@Alex, SCRUM ve çevik süreçler bağlamında çok şey istiyor.
gbjbaanb

3

Sadece buna Kullanıcı Hikayesi demeyin ve herkes mutlu olacak.

Bence cevap, bunu istediğiniz yere yazabilirsiniz.

Genel olarak, belirli uygulamalar birkaç nedenden ötürü bir kullanıcı hikayesine dahil edilmez:

  1. Müşterinin ne istediğini biliyorsunuz, ancak bunun nasıl uygulanacağını bilmiyorsunuz.
  2. Müşteri, daha spesifik gerekliliklerin olduğunun farkındadır, ancak bunları zaten umursamıyor ve / veya anlamıyor.
  3. Herkes şu anda belirli uygulamaların tamamen farkında olduklarını düşünüyor, ancak kimse bunları yazmak istemiyor çünkü deneyimlerinde, her şey yine de değişecek ve kimse bunu yeniden yazmak istemeyecek.

Gerektiğinde ek belgeleri atlayan kurallar yoktur. Belki müşterinin buna erişimi olması gerekir, belki de yoktur. Eğer belirli bir uygulama üzerinde sizinle müşteri arasında takip edebiliyormuş gibi bir tür sözleşme üretmeyi umuyorsanız ve işe yaramadığı zaman müşteriyi kabul ettiği için suçlayın, yanılıyorsunuz. Müşteri, kredi kartı işlemenin teknik ayrıntılarını anlıyorsa, bu belgeleri onlarla paylaşmalı ve muhtemelen konuşmanın bir parçası yapmalısınız.


1
Ama sorun şu, bazı klan ABD ihtiyacınız olan şey ama hikayenin "ne" ile ilgili olduğu ve "nasıl" ile ilgili olmadığı zaman mümkün olmadığını söylüyorum. Eğer bir giriş ekranı istiyorlarsa, tarlada hangi uzunluklar olacak? Hangi karakterlere izin verilecek? vs ... kullanıcılar umursamıyor, ancak geliştiriciler ve test kullanıcıları bu nedenle bir yere yazılmalıdır.
user144171

4
Öyleyse yaz! Eğer işi tamamlamak için gereken buysa, ek belgelerde yanlış bir şey yoktur. Sadece birçok durumda, bunu bir tür müşteri sözleşmesi gibi ele alamayacağınızı anlayın. İstemci aslında giriş ekranınızı kullanır ve belgelerinizin ne söylediğinden bağımsız olarak daha fazla karaktere ihtiyaç duyduğunu söyler. Şimdi kodunuzu, dokümantasyonunuzu veya her ikisini de değiştirmek isteyip istemediğinize karar vereceksiniz.
JeffO

Ve bir girişin uzunluğunu ayarlamak büyük bir girişimse, kodunuz zaten çok çevik değildir, bu nedenle çok az veya hiç belge çok fazla fark yaratmayacaktır.
JeffO

2
@ user144171 Bir proje veya bir özellik için TÜM gereksinimleri, en üstte ve mümkün olan en ayrıntılı şekilde, son bitene kadar yazmaya çalışmak, hiçbir gereksinim duymamak kadar kötü. Aynı şey tasarım için de geçerli.
AK_

@AK_ Tüm bunların önceden yapılması gerektiğini söylediğini düşünmüyorum, ancak büyük bir birikimin olduğu yerde sprint yapmadan önce kesinlikle yeterince yapılması gerekiyor.
maple_shaft

2

Scrum danışmanlarınızın size söylediği şey, Scrum'ın gereksinimler gerektirmediğidir, o zaman çok zayıf danışmanlarınız var demektir. Bir kullanıcı hikayesinin aslında bir gereklilik olmadığını söylemek yanlıştır, sadece bir tür gereksinimdir.

Farklı yazılım gereksinimleri nelerdir?

İş gereksinimleri

Bunlar genellikle yüksek düzeyde bir iş gereksinimidir, genellikle bir sistem hakkında bir tür yönetici tarzı ifadesi anlamına gelecektir. Kasten üst düzey ve geniştir ve kendi başına çok daha fazla ayrıntı olmadan uygulanamaz.

Kullanıcı gereksinimleri

Bunlar, aşina olduğunuz Kullanıcı Öyküsü gereksinimleridir. Genellikle yapışkan bir nota sığabilirler.

  • Aktör - Genellikle bir kullanıcı veya paydaştır.
  • İhtiyaç - Kullanıcı tarafından ihtiyaç duyulan bazı öğeler veya genel işlevler
  • Sebep - Bu ihtiyacın var olmasının ardındaki neden veya bağlam
  • Kabul Kriterleri - Bu, kullanıcı kabul testi için ve Sprint Demo sırasında Ürün Sahibinin bir kullanıcı hikayesinin Kabul edilip edilmediğine nasıl karar verebileceğidir.

İşlevsel veya Sistem Gereksinimleri

Bu, bulmacanızdaki eksik parça gibi görünüyor. Kullanıcı seviyesi gerekliliklerinden hareketle, fonksiyonel bir gereklilik sistem seviyesi aktörlerini ve bir sistemin özelliklerini, bir sistemin davranışlarını ve işlevlerini tanımlar. Bu, bir hikaye biçiminde de yapılabilir ve birikiminize eklenebilir. Bu öğeler bağımsız olmalı ve herhangi bir kullanıcı gereksiniminden bağımsız olarak uygulanabilir.

  • Aktör - Bir tür sistem veya bileşen.
  • İhtiyaç - Var olması gereken bir sistemin ihtiyacı veya özelliği veya davranış beyanı.
  • Sebep - Sistemde bunun neden gerekli olduğuna dair bir bağlam
  • Kabul Kriterleri - Sistem ve Entegrasyon testinin nasıl yapılması gerektiğini bildirmek için gerekli senaryolar, davranışlar, işlevler ve akışlar. Bu tür testler gereksinim için geçtiğinde, bu fonksiyonel gereksinimin tamamlandığını biliyoruz. Bunlar, kullanıcı öykülerinizdeki harici belgelerde bulunabilir, ancak bu öykülerin bir sprint'e atanmadan önce tamamlanması gerekir.

İşlevsel gereksinimler, çözümünüzdeki boşluk olarak tanımladığınız gibi görünen çözümünüzü tanımlar.

Belirtilmesi gereken, ancak sorunuz için önemsiz olan önemli gereksinim türleri: İşlevsel Olmayan Gereksinimler, Teknik Gereksinimler, vb.


Kullanıcı gereksinimleri ve işlevsel gereksinimler arasındaki farkınızdan emin değilim. ABD'de olduğu gibi kullanıcı gereksinimleri işlevsel gereksinimler olmalı ve işlevsel gereksinimler sistem gereksinimlerinden oldukça farklıdır.
Alex

@Alex: Kullanıcı hikayesi / gereksinimi => ATM'den para çekmek istiyorum, fonksiyonel gereksinim => faturaları dağıtmak için toplam süre 30 saniyeyi aşamaz. Kullanıcı gereksinimi, işlevsel gereksinimi kapsamaz.
jmoreno

@jmoreno Örneğinizdeki "kullanıcı hikayesi" bir kullanıcı hikayesi değil, bir kullanıcı hikayesinin başlangıç ​​noktasıdır. Ve yürütme süresi ile ilgili "fonksiyonel gereksinim" gri bir bölgede, ana fonksiyonel gereksinim faturaları dağıtmak için, zaman kısıtlaması birçok kökenleri olabilir.
Alex

2
@jmoreno Aslında böyle bir performans ölçütü İşlevsel Olmayan Bir Gereksinim olarak kabul edilir a non-functional requirement is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviors. Davranışların kendileri bir sistemin işlevleridir . Kullanıcı hikayesi, bir kullanıcının ihtiyacını tanımlayarak her ikisini de karşılaştırır. Kullanıcının işlevi, işlevsel bir gereklilik değil, Kullanım Durumu olarak bildiğimiz şeydir .
maple_shaft

@Alex Yukarıdaki yorumuma bakın. Bence ikiniz de fonksiyonel bir gereksinimin ne olduğu konusunda kafanız karıştı.
maple_shaft

1

Bir Kullanıcı Hikayesi, kullanıcının sistemden beklediği arayüzü tanımlamak amacıyla belirli bir tür eserdir ve bu nedenle düşük düzeyli ayrıntılar sadece oraya ait değildir. Onları oraya koyarsanız, eserin amacını değiştirirsiniz ve artık ABD'nin tanımına uymuyor.

Daha düşük düzeydeki gereksinimleri yakalamak ve kararları tasarlamak için diğer spesifikasyon formlarını kullanın. Bu diğer formların tam olarak ne olması gerektiği, kuruluşunuzda çözülmesi ve özel ortamınıza göre özelleştirilmesi gereken bir şeydir.

Sorunuz benzer bir şeye çok benziyor

Ben bu CarFactory var ve ben de Bisiklet yapmak gerekir, ama OOD "Guru" bunu yapmak için izin verilmiyor diyor. Bu BS nedir!?!

Hem kodlarınızdakiler hem de süreçlerinizdekiler arasındaki endişelerin ayrılmasına ve eserlerin uyumuna saygı gösterin.


1

Bu yaklaşımın amacının kullanıcı hikayelerini kısıtlamak değil, kötü gereksinimleri önlemek olduğunu düşünüyorum.

Deneyimlerime göre, kullanıcılar genellikle yazma gereksinimlerini karşılayamamaktadır. Geliştiriciler genellikle yazma gereksinimlerini karşılayamazlar. Heck, hadi itiraf edelim: şartlar yazmak zor!

Bir kullanıcı için bir kullanım hikayesinin bir parçası olarak lingo gereksinimleri bir şey yazmak için geçerli olacağını düşünüyorum. Ancak, bunu otomatik olarak bir gereklilik haline getirmemelidir. İki çelişkili kullanım öyküsüne sahip olmak küçük bir sorundur; çelişkili iki gerekliliğe sahip olmak, önemli bir sözleşme kırma sorunudur. Zamanından önce birini diğerine tanıtmanın bir anlamı yok.

Acımasız bakış açısının insan doğasının tanınmasından geldiğini düşünüyorum. Kullanıcılar kullanıcı hikayelerini gereksinimleri koyabilecekleri bir yer olarak düşünmeye başlarsa, buna başlayacaklardır. Kullanım öykülerinin bilgi gibi diğer toplama gereksinimlerine göre gerçek avantajı, kullanıcının doğal ifadelerinde ve gösterimlerinde ifade edilmiş olmalarıdır. Bu, geliştiricilerin müşteri açısından düşünmesini daha olası hale getirir. Mükemmel bir dünyada, soğuk ihtiyaçlar da oraya gidebilirdi. Gerçekte, bu tür sözler geliştiricilerin anlaşılması kolay gereksinimlere kilitlenmesine ve çevik gelişimin kullanım hikayeleri kullanarak ortaya çıkarmak istediği ince ifadeleri ve nüansları kaçırmasına neden olma eğilimindedir.


1
Bu düşünce çizgisi ile ilgili sorun, kullanıcının ihtiyaçlarının net olduğu ancak zor özelliklerin sınırlı olduğu yaratıcı bir projede iyi çalışmasıdır. Karmaşık sistem etkileşimleri ve özellikle düzenleyici kısıtlamalar ve zor tanımlanmış sistem parametrelerine yönelik iş ihtiyacı hakkında konuşmaya başladığımızda, yalnızca kullanıcı öyküleri genellikle önemli ayrıntıları yakalamakta yetersiz kalır. Bu yüzden konuşmayı hızlandırıyorlar, ancak 20 sayfalık zorlayıcı spesifikasyonlar ve kurallara sahip olduğumda, bu bir "konuşmada" absorbe etmek için çok fazla. Burada fonksiyonel gereksinimler de gereklidir.
maple_shaft

1
Gereksinimlerin gerekli olduğunu kabul ediyorum, sadece başka bir yere gitmeleri gerektiğini düşünüyorum. Dünyanın geri kalanı için konuşamam, ancak kullanıcı hikayelerinin amacını gasp etmenin ve onları gereksinimlerle dolu kitapçıklara dönüştürmenin olağanüstü kolay olduğunu gördüm. Bu durumda, kullanıcı hikayelerinin gideceği yer yok. Mükemmel bir dünyada her ikisini de kullanıcı hikayelerine koyabilirsiniz, ancak geliştiriciler insandır ve kültür kararsızdır. Bir ekip gereksinimler için kullanıcı hikayelerini kullanma alışkanlığına sahip olursa, birincil hedefi olduğuna inandığım şeye geri dönmek kültürel olarak imkansız olabilir.
Cort Ammon - Monica'yı

1

Kendi kararlarınızı verin

'Peki, daha düşük gereksinimler yoksa geliştiriciler nasıl bir hikaye geliştirebilirler?' çok basittir - son kullanıcının ihtiyaçlarına göre dik olan ayrıntılı gereksinimler (örn. DB kısıtlamaları, alanların doğrulanması, vb.) aslında kullanıcı için önemli değildir. Kullanıcı ihtiyaçları çok farklı alanların doğrulanması, çok farklı DB yapıları veya belki de geleneksel DB ile karşılanamazsa, kullanıcıların bu tür bilgileri akılda tutarak belirli bir uygulama göz önünde bulundurarak verimsiz olması gerekir. sistemin sonunda nasıl uygulandığından farklı.

Profesyonel geliştiricilersiniz, bu yüzden uygulama ayrıntıları hakkında mümkün olan en iyi şekilde profesyonel kararlar verin. Bir masa isteyen bir kullanıcı marangoza ne tür bir odun istediklerini söyleyebilir, ancak marangozun masa ayaklarının makul yükleri işlemek için ne kadar kalın olması gerektiğine karar vermesi beklenir. Anlamlı bir karar vermek için bazı bilgileriniz yoksa, bunun kullanıcıyla tartışılması gerekir, ancak ayrıntılı gereksinimler belgesi için içeriğin yaklaşık% 90'ının, belirsiz kullanıcı hikayeleri sağduyu ve sektördeki en iyi uygulamalar dışında herhangi bir bilgiye ihtiyacı yoktur. .

Tüm bu ayrıntılar keyfi değildir - kötü seçimler ve daha iyi seçimler vardır ve uygulamanın diğer bölümlerini etkilediği için belgelenmelidirler, ancak sonunda yine de uygulama ekibi tarafından karar verilebilen ve kararlaştırılması gereken uygulama ayrıntılarıdır. kullanıcı ihtiyaçları ve en iyi uygulamalar.

Standart bir araba benzetmesi - bir müşteri otomobilin kırmızıya boyanmasını istiyorsa, kullanıcı hikayesi için uygun bir açıklama, hangi kırmızı gölgenin daha iyi olacağını sormak olacaktır, ancak boyanın kimyasal bileşimi değil; yine de, yağmurda yıkanacak suluboya ile arabayı boyamayı tercih etmemeleri beklenirdi, çünkü bunu yapmamak en iyi uygulamadır.


1

TL; DR

Kullanıcı hikayeleri, ürüne hangi değerin eklenmesi gerektiğini ve nedenini belgelemek içindir. Uygulama ayrıntıları (örneğin , değerin nasıl eklenmesi, test edilmesi, ölçülmesi veya doğrulanması gerektiği) hikaye tarafından kısıtlanır, ancak bunlar içinde yer almaz. Çerçeve içinde esneklik ve çevikliği korumak için kasten ayrı eserler olarak bırakılırlar.

Spesifikasyonlar ve uygulama ayrıntıları çoğunlukla Kabul Testine Dayalı Geliştirme (ATDD), Teste Dayalı Geliştirme (TDD) ve Davranışa Dayalı Geliştirme (BDD) komut dosyaları ve senaryoları gibi diğer eserlerde yakalanır. Bu özel eserler Scrum çerçevesi tarafından zorunlu kılınmaz, ancak başka etkili süreç kontrolleriniz yoksa kesinlikle size iyi bir başlangıç ​​noktası verecektir.

Kullanıcı Öyküleri Teknik Özellik Değildir

Orijinal poster (OP) şu soruyu sordu :

[A] müşteri farklı kredi kartları için farklı bir işlem istiyor, uygulanması ve bilinmesi gereken sıkı şartlar vardır, böylece test vakaları yazılabilir ... HİKAYEDE NEREDE PAY YAPMALIYIM?

Bir kullanıcı hikayesi, değer sağlayan , uygulama hakkındaki konuşmaları yönlendirmek için bir bağlam sağlayan ve değer tüketicisine bağlı bir bakış açısı sağlayan bir özelliktir özelliği tarafından teslim değerden yararlanacaktır.

Bütün noktası , bir kullanıcı hikayenin uygulama ayrıntıları kuralcı değil olmasıdır. Ekip, özelliği, belirlenen değeri değer tüketicisine uygun bağlamda iletecek şekilde uygulamakta serbesttir.

Çalışılmış Bir Örnek

Örnek Bir Kullanıcı Hikayesi

Bu, daha az belirsiz bir kullanıcı öyküsü kümesiyle başlarsanız bunu açıklamak daha kolaydır. OP, INVEST anımsatıcısını izleyen eyleme geçirilebilir bir kullanıcı hikayesi sağlamadığından , bir örnek uğruna bir tane icat edeceğim. Aşağıdaki hikayeyi düşünün:

Discover kartı ile ödeme yapmayı tercih eden bir kullanıcı olarak, Visa, Mastercard veya American Express ile sınırlı olmamam
için Discover kartla alışverişlerimi yapma seçeneğini istiyorum
.

Bu somut bir özellik sağlar, ekibin alması gereken uygulama kararlarına rehberlik edebilecek bir bağlam sağlar ve değer tüketicisini Discover-card sahibi bir müşteri olarak tanımlar. Bu bir dizi özellik değil, ancak geliştirme ve yineleme sırasında hikayeyi en iyi şekilde nasıl uygulayacağınız konusunda müşteriyle ve ekiple doğru görüşmeler yapmanız gerekiyor.

Analiz ve Uygulama

Gerçek uygulama ekibe bağlıdır. Ekibin şunları belirlemek için bazı analizler yapması gerekecek:

  • Yeni bir özellik uygulamanın en kolay yolu.
  • Çeşitli uygulama seçeneklerinden hangisi, teknik borç tahakkuk etmeden, ilerlemeyi desteklemenin en kolay yolu olacaktır.
  • Yeni özelliğinizin aşırı mühendislik yapılmadan sağlam olmasını sağlamak için açık-kapalı ve YAGNI ilkelerini uygulama.

Agile Manifesto'nun temel ilkelerinden biri müşteri işbirliğidir. Çok işlevli, kendi kendini düzenleyen bir ekibin, kullanıcı hikayesinin sağladığı yönergeler dahilindeki uygulama ayrıntılarını çözmek için müşteriyle işbirliği yapabilmesi beklenmektedir .

Kullanıcı öyküleriniz iyi yazılmamışsa veya takımın çevik çerçevelerinin gerektirdiği yeterli analizi yapmak için gerekli beceri veya süreç olgunluğuna sahip olmaması durumunda, bu açıkça olması gerekenden çok daha zor olacaktır. Uygun düzeyde ayrıntı düzeyinde iyi kullanıcı hikayelerinin nasıl oluşturulacağı konusunda tüm kitaplar yazılmıştır; ne yazık ki gümüş kurşun yok, ama çevik takımlar için öğrenilebilir bir yetenek.

Test Odaklı ve Davranış Odaklı Tasarım

Analizin sağlam olmasını ve uygulamanın hem akılcı hem de desteklenebilir olmasını sağlamanın en iyi yolu TDD ve BDD uygulamalarının kullanılmasıdır. Örneğin, yukarıdaki hikaye göz önüne alındığında, ekip planlanan uygulamayı aşağıdaki gibi eserler aracılığıyla yakalamalıdır:

  • Test edilebilir senaryolara sahip salatalık özellikleri.

    Bu en çok kabul testlerinin geliştirilmesinde ve kullanıcının uygulama davranışı beklentilerinin belgelenmesinde yararlıdır . Örneğin, kullanıcı hikayesinde, kullanıcının bir Discover kartıyla nasıl kontrol edebileceğini ve bu sürecin kullanıcıya nasıl göründüğünü açıklayan bir veya daha fazla ilişkili Salatalık özelliği bulunmalıdır.

  • Yeni kod özelliklerinin davranışını (dahili uygulama ayrıntılarını değil) doğrulayan RSpec testleri .

    Bu, özelliğin uygulama içindeki amaçlanan davranışını belgelemek ve doğrulamak için en kullanışlıdır. Örneğin, kullanıcı hikayesi, bir Discover kartı kullanmanın, uygulamanın ödeme ağ geçidi üzerinden bir satışı yetkilendirmek için ihtiyaç duyduğu her karta özgü davranışı başlatmasını sağlayan birim ve entegrasyon testlerinin oluşturulmasını teşvik edecektir.

Belirli araçlar önemli değil. Salatalık veya RSpec'i sevmiyorsanız, ekibiniz için en uygun araçları veya yöntemleri kullanın. Bununla birlikte, mesele, uygulama ayrıntılarının kullanıcı hikayesine dayandığı , ancak bunun tarafından reçete edilmediğidir . Bunun yerine, uygulama (veya tercih ederseniz spesifikasyonlar), özelliğin işbirliğine dayalı bir şekilde geliştirilmesi sırasında üzerinde çalışılacak ayrıntılardır.


0

Burada çok iyi cevaplar var. Umarım başka bir değer katarım ...

Bence ekibinizin telefonu kapatması, Çevik olmayan bir metodolojiden geçiyor.

Bu genellikle bir tür şelale metodolojisi ve pratikte, genellikle bir kod satırı yazılmadan önce tüm teknik gereksinimleri belgelemeye çalışmayı içerir.

Ama bu her zaman işe yaramıyor. Genellikle işe yaramaz. Sebep? Çünkü gereksinimler nadiren gerçeklikle uyumludur. İşler değişir. Böylece Çevik'e doğru hareket.

Agile ile Kullanıcı Hikayesi kullanıcının önem verdiği her şeydir. A noktasının B noktasına gelmesini istiyorlar . Uygulama açısından oraya nasıl gideceğiniz sizin elinizde. Birinin size teknik gereksinimleri söylemesini bekliyorsanız, bu gerçekten Çevik değildir. Sorularınız varsa sorun. Belgelere, belgeye ihtiyacınız varsa, ancak müşterinin tüm bu kararları sizin için almasını istemiyorsanız. Görüşleri olabilir, ancak Çevik bir ortamda bu görüşlerin (gurunuzun önerdiği gibi) bir konuşmada tartışılması gerekir.

Bunun ekibiniz için bir yük olduğunu düşünebilir, ancak bunu bir lüks olarak kabul edin. Takımınızın artık çözümde çok fazla söz hakkı var - bu şelale modelinde olması gerekmiyordu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.