เรื่องราวของผู้ใช้จะไม่มีความต้องการได้อย่างไร (เมื่อเขียนบนการ์ด) และยังสามารถนำไปใช้ได้


18

ฉันได้รับการบอกว่า "เรื่องราวของผู้ใช้ไม่ใช่ข้อกำหนดมันเป็นเพียงการแจ้งเตือนว่าลูกค้าต้องการอะไรคุณไม่สามารถวางข้อกำหนดในเรื่อง" แต่ลองมาตัวอย่างที่ลูกค้าต้องการการประมวลผลที่แตกต่างกันสำหรับบัตรเครดิตที่แตกต่างกัน มีข้อกำหนดที่เข้มงวดที่ต้องดำเนินการและเป็นที่รู้จักเพื่อให้กรณีทดสอบสามารถเขียนได้ ข้อกำหนดควรจะไปที่ไหนหากไม่ได้อยู่ในเรื่องราวของผู้ใช้

นักพัฒนาสามารถพัฒนาจากเรื่องราวได้อย่างไรหากไม่มีข้อกำหนดที่ต่ำกว่านี้? ผู้ทดสอบสามารถเขียนกรณีทดสอบ (รายละเอียด) ตามเรื่องราวของผู้ใช้ได้อย่างไร ความต้องการเช่นข้อ จำกัด ของฐานข้อมูลการตรวจสอบความถูกต้องของข้อมูลและอื่น ๆ อยู่นอกเรื่องของผู้ใช้หรือไม่


6
เรื่องราวของผู้ใช้เป็นเพียง - ข้อกำหนดระดับผู้ใช้ 'ข้อกำหนดของซอฟต์แวร์' ระดับต่ำกว่า (มักเป็นข้อ จำกัด ที่ยอมรับได้) ควรทำการเก็บเกี่ยวแยกต่างหากและจัดทำเป็นเอกสารแยกต่างหากพร้อมการอ้างอิงที่เหมาะสม
Gusdor

7
จุดรับเรื่องที่ผู้ใช้ที่เป็นที่ผู้ใช้ส่วนใหญ่ของโปรแกรมของคุณจะไม่เคยรู้หรือการดูแลวิธีการทำงาน พวกเขาไม่สนใจเกี่ยวกับโครงสร้างฐานข้อมูลการแยกข้อกังวลโครงสร้างคลาส ฯลฯ พวกเขาดูแลเกี่ยวกับความเสถียรความเร็วและความสะดวกในการใช้งาน นั่นเป็นเหตุผลที่คุณจับภาพเรื่องราวของพวกเขาเพื่อค้นหาว่าพวกเขากำลังจะใช้โปรแกรมสำหรับ วิธีที่คุณนำมาใช้นั้นเป็นข้อกำหนดระดับแยกต่างหากโดยทั่วไปผู้ใช้จะไม่สามารถหรือยินดีแจ้งกระบวนการนั้น
jonrsharpe

2
ริ้น: ไม่จริง ฉันถามเพราะฉันสนใจอย่างแท้จริงว่าวิธีนี้สามารถทำได้อย่างถูกต้องตามที่ฉันแน่ใจว่าเนื่องจากมีการใช้ SCRUM อย่างกว้างขวางสิ่งนี้จะต้องเป็นปัญหาสำหรับหลาย ๆ ทีม
user144171

4
@maple_shaft ปัญหาเกี่ยวกับองค์ประกอบ "อาละวาด" เหล่านี้มักจะดึงดูดคำตอบอาละวาด ฉันยอมรับว่ามีแกนกลางที่เหมาะสมอยู่ในนั้นสงสัยว่ามันจะสามารถแก้ไข ed เพื่อเก็บแกนนั้นไว้และลบคำเชิญเพื่อตอบคำถามที่ไม่สมบูรณ์
gnat

2
มีคำถามที่ดีอยู่ที่นี่ แต่มันเขียนเป็นคำโม้ ฉันพยายามแก้ไข
DA01

คำตอบ:


28

คำตอบนี้จะมุ่งเน้นไปที่วิธีการทำงานกับเรื่องราวของผู้ใช้และข้อกำหนดระดับล่าง ฉันจะไม่พูดคุยเกี่ยวกับคุณธรรมหรือขาดของการต่อสู้หรือเปรียว ฉันจะไม่พูดเกี่ยวกับกูรูเช่นกัน

คำตอบนี้ถือว่าคุณอยู่บนเรือพร้อมกับ Scrum แต่ยังไม่พบวิธีที่จะทำให้มันใช้ได้สำหรับคุณ

ดังที่ผู้อื่นได้กล่าวถึงเรื่องราวของผู้ใช้มีวัตถุประสงค์เพื่อให้ครอบคลุมว่าผู้ใช้ต้องการซอฟต์แวร์อย่างไร เนื่องจากผู้ใช้ไม่สนใจเกี่ยวกับการใช้งานในระดับต่ำเช่นตารางฐานข้อมูลข้อ จำกัด รูปแบบสถาปัตยกรรมเป็นต้นคุณจะไม่พบรายละเอียดดังกล่าวในเรื่องราวของผู้ใช้

อย่างไรก็ตามนั่นไม่ได้หมายความว่ารายละเอียดเหล่านี้ไม่ควรถูกบันทึกไว้ทุกที่

เมื่อนักพัฒนาใช้เรื่องราวของผู้ใช้พวกเขาจำเป็นต้องระวังรายละเอียดในระดับต่ำกว่าผู้ใช้ทั่วไปจะไม่รู้ ข้อมูลนี้อาจมาจาก SMEs, BAs, เจ้าของผลิตภัณฑ์สถาปนิกของคุณหรือผู้เชี่ยวชาญอื่น ๆ หรือบุคคลที่มีความรู้ด้านเทคนิค

นี่หมายถึงรายละเอียดระดับต่ำควรบันทึกไว้ในเรื่องราวของผู้ใช้หรือไม่ ไม่ (และใช่)

ในบางช่วงเวลาที่เรื่องราวถูกสร้างขึ้นและนำไปใช้งานบางคนจะต้องคิดออกว่าจะนำไปใช้อย่างไร โดยปกติจะใช้รูปแบบของการสนทนากับผู้ที่เกี่ยวข้องในเรื่องราว (ผู้ใช้สถาปนิกผู้พัฒนา ฯลฯ ) การสนทนาเหล่านี้ควรส่งผลให้เกิดเกณฑ์การยอมรับที่ชัดเจนซึ่งกำหนดขอบเขตการใช้เรื่องราวของผู้ใช้อย่างชัดเจน รายละเอียดเหล่านี้จะต้องถูกบันทึกไว้ที่ไหนสักแห่งและเป็นที่ขึ้นอยู่กับคุณจริงๆ กุญแจสำคัญในที่นี้คือรายละเอียดเหล่านี้นำออกมาหลังจากสร้างเรื่องราวของผู้ใช้แล้ว ฉันคิดว่านี่คือสิ่งที่ปราชญ์ของคุณพยายามเน้น

ในฐานะนักพัฒนาเป็นที่ชัดเจนว่าคุณจะต้องมีวิธีการเชื่อมโยงข้อกำหนดที่เฉพาะเจาะจงมากขึ้นกับเรื่องราวของผู้ใช้ของคุณ เพียงแค่ว่าคุณทำอย่างนั้นจะขึ้นอยู่กับทีมงานของคุณ

หากคนในทีมของคุณต้องการเก็บรายละเอียดเหล่านี้ออกจากเรื่องราวของผู้ใช้คุณอาจต้องเคารพสิ่งนั้น มีประโยชน์ที่จะทำให้เรื่องราวของผู้ใช้ระดับสูงของคุณปราศจากรายละเอียดการใช้งาน มันทำให้พวกเขาผอมและงานในมือของคุณสามารถอ่านได้ตามประวัติของสิ่งที่ผู้ใช้และเจ้าของผลิตภัณฑ์ของคุณต้องการ เพียงทำให้ความต้องการของคุณเป็นนักพัฒนาที่รู้จักเช่นกัน คุณควรจะสามารถประนีประนอมกับการเชื่อมโยงไปยังเรื่องราวของผู้ใช้ที่ทำให้ทุกคนมีความสุข


3
+1 เกณฑ์การยอมรับเพิ่มรายละเอียดเพิ่มเติม
เศษส่วน

3

ใช่ BS ของมัน และการต่อสู้ไม่ใช่ความคล่องแคล่ว

ฉันเกลียดความแข็งแกร่งของผู้ฝึกที่คล่องแคล่วที่เรียกคุณว่ามีวิธีหนึ่งในการทำเปรียวและคุณต้องปฏิบัติตามกฎทั้งหมดที่วางไว้ในพระคัมภีร์ศักดิ์สิทธิ์ของวิธีการ 'เปรียว' ที่พวกเขาใช้ มันคือ BS ทั้งหมด

เปรียวเป็นเรื่องของความว่องไว

Agile เป็นเรื่องเกี่ยวกับการทำสิ่งต่าง ๆ ด้วยค่าใช้จ่ายขั้นต่ำ นี่ไม่ได้หมายความว่า "ไม่มีเอกสารประกอบ" เนื่องจากคุณมักจะทำเอกสารให้มากขึ้นในบทบาทที่คล่องตัวคุณเพียงแค่เริ่มทำเอกสารโดยไม่ต้องวางแผนกระบวนการในการทำเอกสาร ในทำนองเดียวกันกับการเข้ารหัสการทดสอบและการจับความต้องการ สิ่งเดียวที่สำคัญในกระบวนการที่คล่องตัวนั้นคือสิ่งที่ช่วยให้คุณทำงานของคุณได้อย่างรวดเร็วและมีประสิทธิภาพโดยไม่ต้องมี BS ใด ๆ

ดังนั้นในกรณีนี้ถ้าการใส่ความต้องการของผู้ใช้ในการ์ดช่วยให้คุณเขียนทดสอบเอกสารและแสดงรหัสที่จำเป็น ... ใส่ข้อกำหนดลงบนการ์ดและบอกปรมาจารย์ว่าทีมงานถูกต้องเสมอ

ทีม dev ที่เหลือของคุณคิดอย่างไร? ในวิธีการแบบเปรียวจริงหากพวกเขาคิดว่าข้อกำหนดควรถูกเขียนขึ้นด้านหน้าโดยไม่ต้องมี 'การสนทนาของผู้ใช้' คุณควรทำในสิ่งที่ทีมคิดว่าดีที่สุดสำหรับพวกเขาในการทำงาน หากทีมคิดว่าการสนทนาของผู้ใช้เป็นสิ่งที่ดีลองฟังพวกเขาและเข้าใจว่าทำไมพวกเขาถึงคิดและนำตัวเองไปสู่การทำงาน


4
คุณช่วยกรุณาใช้วลีนี้ในวิธีที่เลวลง (เช่นไม่ใช่ -) ได้หรือไม่? ฉันเห็นด้วยกับคุณในหัวข้อ แต่ผู้คนมีความคิดเห็นที่แตกต่างกันและนั่นคือเหตุผลสำหรับการสูญเสียมารยาทของคุณในลักษณะที่ไม่มี
แฟรงก์

ที่จริงแล้วฉันไม่สามารถจินตนาการความต้องการที่ไม่ได้เขียนไว้ล่วงหน้าได้ - สำหรับสิ่งที่ง่ายที่สุดเช่นเขตข้อมูลตัวเลขที่คุณต้องทราบความยาวประเภทข้อมูลการตรวจสอบความถูกต้อง ตามปรมาจารย์เหล่านั้นสิ่งเหล่านี้ไม่จำเป็นต้องอยู่ในเรื่องราว แต่เมื่อคุณเขียนรหัสระดับสูงของสหรัฐไม่มีประโยชน์คุณต้องรู้ถึงข้อ จำกัด กระแสและอื่น ๆ ฉันไม่เคยเห็นโครงการที่มีประโยคสองประโยคที่บริสุทธิ์ซึ่งมีประสิทธิภาพสำหรับการดำเนินงานและการทดสอบ
user144171

3
ลูกค้าตกลงที่จะเป็นจำนวนเต็ม 8 บิตดังนั้นจึงไม่ใช่ความผิดของฉัน
JeffO

2
@gbjbaanb: Agile เป็นเพียงคำศัพท์ใหม่สำหรับ "การใช้สามัญสำนึก" นั่นคือการค้นหาความสมดุลที่เหมาะสมระหว่างการวิเคราะห์ / ออกแบบล่วงหน้าและการส่งมอบโซลูชันที่รวดเร็วเพื่อรวบรวมความคิดเห็น ผมพบคำเปรียวค่อนข้างระคายเคืองเพราะมีน้อยมากใหม่เพื่อความคิดเหล่านี้นอกเหนือจากชื่อ ที่เลวร้ายที่เกิดขึ้นเมื่อกรอบค่อนข้างยืดหยุ่นเช่นการแย่งชิงกันจะเรียกเก็บเป็นเปรียว IMO การมีความคล่องแคล่วอย่างแท้จริงนั้นหมายถึงการทิ้งคำที่ว่องไวและSCRUMและปรับกระบวนการของคุณให้ตรงกับความต้องการของคุณอย่างที่เราเคยทำมาก่อนที่จะเริ่มมีคลื่นเปรียว
Giorgio

1
@Alex เขาถามมากในบริบทของ SCRUM และกระบวนการเปรียว
gbjbaanb

3

อย่าเรียกสิ่งนี้ว่าเรื่องผู้ใช้และทุกคนจะมีความสุข

ฉันคิดว่าคำตอบคือคุณสามารถเขียนมันได้ทุกที่ที่คุณต้องการ

โดยทั่วไปการใช้งานเฉพาะไม่รวมอยู่ในเรื่องราวของผู้ใช้ด้วยเหตุผลบางประการ:

  1. คุณรู้ว่าลูกค้าต้องการอะไร แต่คุณไม่รู้ว่าจะนำไปใช้อย่างไร
  2. ลูกค้าทราบว่ามีข้อกำหนดเฉพาะที่เกี่ยวข้องมากกว่า แต่ไม่สนใจและ / หรือเข้าใจพวกเขาอยู่ดี
  3. ทุกคนคิดว่าพวกเขาตระหนักดีถึงการใช้งานที่เฉพาะเจาะจงในเวลานี้ แต่ไม่มีใครต้องการจดบันทึกเพราะในประสบการณ์ของพวกเขาทุกอย่างจะเปลี่ยนไปและไม่มีใครอยากจะเขียนมันซ้ำอีก

ไม่มีกฎที่ละเว้นเอกสารเพิ่มเติมเมื่อจำเป็น บางทีลูกค้าต้องการเข้าถึงและอาจไม่ หากคุณหวังว่าจะสร้างสัญญาบางประเภทระหว่างคุณและลูกค้าเกี่ยวกับการใช้งานที่เฉพาะเจาะจงราวกับว่าคุณสามารถปฏิบัติตามได้และเมื่อมันไม่ได้ตำหนิลูกค้าที่เห็นด้วยคุณก็เข้าใจผิด หากลูกค้าเข้าใจรายละเอียดทางเทคนิคของการประมวลผลบัตรเครดิตคุณควรแบ่งปันเอกสารเหล่านี้กับพวกเขาและอาจทำให้มันเป็นส่วนหนึ่งของการสนทนา


1
แต่นี่คือปัญหาบางกลุ่มสหรัฐเป็นสิ่งที่คุณต้องการ แต่ฉันบอกว่ามันเป็นไปไม่ได้เมื่อเรื่องราวเกี่ยวกับ "อะไร" และไม่เกี่ยวกับ "อย่างไร" หากพวกเขาต้องการหน้าจอเข้าสู่ระบบฟิลด์จะมีความยาวเท่าใด ตัวละครใดที่จะได้รับอนุญาต ผู้ใช้ ฯลฯ ไม่สนใจ แต่ผู้พัฒนาและผู้ทดสอบจะทำเช่นนี้ดังนั้นจึงต้องเขียนที่ใดที่หนึ่ง
user144171

4
ดังนั้นเขียนมันลงไป! ไม่มีอะไรผิดปกติกับเอกสารเสริมถ้านั่นคือสิ่งที่จะทำให้งานเสร็จ เพิ่งเข้าใจว่าในหลายกรณีคุณไม่สามารถปฏิบัติเช่นนี้เหมือนสัญญาของลูกค้า ไคลเอนต์จะใช้หน้าจอเข้าสู่ระบบของคุณแล้วบอกคุณว่าพวกเขาต้องการตัวอักษรมากขึ้น ตอนนี้คุณต้องตัดสินใจว่าคุณต้องการเปลี่ยนรหัสเอกสารหรือทั้งสองอย่าง
JeffO

และถ้าเป็นเรื่องใหญ่ที่จะต้องปรับความยาวของอินพุทรหัสของคุณก็ยังไม่คล่องแคล่วดังนั้นเอกสารน้อยมากหรือไม่มีเลยจะไม่สร้างความแตกต่างมากนัก
JeffO

2
@ user144171 การพยายามเขียนข้อกำหนดทั้งหมดสำหรับโครงการหรือคุณลักษณะล่วงหน้าและในรายละเอียดมากที่สุดเท่าที่จะทำได้ลงไปจนถึงบิตสุดท้ายนั้นไม่ดีเท่าที่ไม่มีข้อกำหนดเลย สิ่งเดียวกันสำหรับการออกแบบ
AK_

@AK_ ฉันไม่คิดว่าเขาจะระบุว่าสิ่งเหล่านี้ต้องทำล่วงหน้า แต่ก็ต้องทำล่วงหน้าอย่างเพียงพอก่อนที่จะมีงานค้างจำนวนมาก
maple_shaft

2

ฉันคิดว่าถ้าสิ่งที่ผู้ให้คำปรึกษาการต่อสู้ของคุณกำลังบอกคุณคือการที่การต่อสู้ไม่ต้องการข้อกำหนดคุณก็มีที่ปรึกษาที่แย่มาก พวกเขาผิดที่จะบอกคุณว่าเรื่องราวของผู้ใช้นั้นไม่ได้เป็นข้อกำหนดจริง ๆ เลยพวกเขาเพิ่งกลายเป็นข้อกำหนดชนิดหนึ่ง

ข้อกำหนดต่าง ๆ ของซอฟต์แวร์มีอะไรบ้าง

ข้อกำหนดทางธุรกิจ

โดยทั่วไปแล้วสิ่งเหล่านี้เป็นความต้องการทางธุรกิจระดับสูงซึ่งเป็นสิ่งที่โดยทั่วไปแล้วจะต้องคำนึงถึงลักษณะของผู้บริหารเกี่ยวกับระบบ มันอยู่ในระดับสูงและกว้างโดยมีจุดประสงค์และไม่สามารถดำเนินการได้เองหากไม่มีรายละเอียดเพิ่มเติมอย่างมากมาย

ความต้องการของผู้ใช้

นี่คือข้อกำหนดเรื่องผู้ใช้ที่คุณคุ้นเคย โดยทั่วไปแล้วพวกเขาสามารถพอดีกับโน้ต

  • นักแสดง -โดยทั่วไปแล้วผู้ใช้หรือผู้มีส่วนได้เสีย
  • ต้องการ -บางรายการหรือฟังก์ชั่นทั่วไปที่ผู้ใช้ต้องการ
  • เหตุผล -เหตุผลหรือบริบทที่อยู่เบื้องหลังว่าทำไมความต้องการนี้จึงมีอยู่
  • เกณฑ์การยอมรับ -นี่คือกรอบการทำงานสำหรับการทดสอบการยอมรับของผู้ใช้และในระหว่างการสาธิต Sprint ว่าเจ้าของผลิตภัณฑ์จะสามารถตัดสินใจได้อย่างไรว่าเรื่องราวของผู้ใช้ได้รับการยอมรับหรือไม่

ฟังก์ชั่นหรือข้อกำหนดของระบบ

ดูเหมือนว่าจะเป็นชิ้นส่วนที่ขาดหายไปในปริศนาของคุณ ขับเคลื่อนจากข้อกำหนดระดับผู้ใช้ข้อกำหนดการใช้งานจะกำหนดตัวแสดงระดับระบบและคุณสมบัติของระบบรวมถึงพฤติกรรมและฟังก์ชั่นของระบบ สิ่งนี้สามารถทำได้ในรูปแบบเรื่องราวและรวมอยู่ในงานในมือของคุณ รายการเหล่านี้ควรอยู่คนเดียวและสามารถนำไปปฏิบัติได้อย่างอิสระตามความต้องการของผู้ใช้

  • นักแสดง -ระบบหรือส่วนประกอบบางชนิด
  • Need -ความต้องการหรือทรัพย์สินหรือคำแถลงพฤติกรรมของระบบที่ควรมีอยู่
  • เหตุผล -บริบทเบื้องหลังว่าทำไมจึงมีความจำเป็นในระบบ
  • เกณฑ์การยอมรับ -สถานการณ์, พฤติกรรม, หน้าที่และกระแสที่จำเป็นต่อการสื่อสารว่าควรทำการทดสอบระบบและบูรณาการอย่างไร เมื่อการทดสอบประเภทนี้ผ่านการทดสอบแล้วเราทราบว่าความต้องการการใช้งานนี้เสร็จสมบูรณ์แล้ว สิ่งเหล่านี้สามารถมีอยู่ในเอกสารภายนอกจากเรื่องราวของผู้ใช้ของคุณ แต่ควรจะแล้วเสร็จก่อนที่เรื่องราวเหล่านี้จะถูกกำหนดในการวิ่ง

ข้อกำหนดด้านการใช้งานกำหนดโซลูชันของคุณซึ่งดูเหมือนกับสิ่งที่คุณกำลังอธิบายว่าเป็นช่องว่างในกระบวนการของคุณ

ประเภทความต้องการที่โดดเด่นที่ต้องการกล่าวถึง แต่ไม่สำคัญกับคำถามของคุณ: ข้อกำหนดที่ไม่สามารถใช้งานได้, ข้อกำหนดทางเทคนิค ฯลฯ ...


ฉันไม่แน่ใจเกี่ยวกับความแตกต่างระหว่างข้อกำหนดของผู้ใช้และข้อกำหนดการใช้งาน ข้อกำหนดของผู้ใช้เช่นเดียวกับในสหรัฐอเมริกาควรเป็นข้อกำหนดในการใช้งานและข้อกำหนดของฟังก์ชันนั้นแตกต่างจากข้อกำหนดของระบบ
อเล็กซ์

@Alex: เรื่องราวของผู้ใช้ / ความต้องการ => ต้องการถอนเงินจาก ATM ความต้องการในการใช้งาน => เวลาทั้งหมดในการจ่ายบิลไม่เกิน 30 วินาที ความต้องการของผู้ใช้ไม่รวมถึงข้อกำหนดการใช้งาน
jmoreno

@jmoreno นั่น "เรื่องราวของผู้ใช้" ในตัวอย่างของคุณไม่ใช่เรื่องราวของผู้ใช้มันเป็นจุดเริ่มต้นในเรื่องราวของผู้ใช้ และ "ข้อกำหนดด้านหน้าที่" เกี่ยวกับเวลาดำเนินการอยู่ในโซนสีเทาความต้องการใช้งานหลักที่มีในการจ่ายบิลนั้นข้อ จำกัด เวลาอาจมีต้นกำเนิดมากมาย
อเล็กซ์

2
@jmoreno จริงตัวชี้วัดประสิทธิภาพการทำงานเช่นนั้นถือว่าเป็นความต้องการที่ไม่ใช่หน้าที่ 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พฤติกรรมของตัวเองที่มีฟังก์ชั่นของระบบ เรื่องราวของผู้ใช้ตัดกันทั้งสองสิ่งนี้โดยกำหนดความต้องการของผู้ใช้ การทำงานของผู้ใช้แทนสิ่งที่เรารู้ว่าเป็นกรณีที่ใช้และไม่ต้องการทำงาน
maple_shaft

@Alex ดูความคิดเห็นของฉันด้านบน ฉันคิดว่าคุณทั้งคู่สับสนว่าข้อกำหนดการทำงานคืออะไร
maple_shaft

1

เรื่องราวของผู้ใช้เป็นสิ่งประดิษฐ์ประเภทหนึ่งโดยมีเป้าหมายในการอธิบายส่วนต่อประสานที่ผู้ใช้คาดหวังจากระบบและนั่นคือสาเหตุที่รายละเอียดระดับต่ำไม่ได้อยู่ในนั้น หากคุณวางไว้ที่นั่นคุณกำลังเปลี่ยนเจตนาของสิ่งประดิษฐ์และมันไม่เหมาะกับคำจำกัดความของสหรัฐอเมริกาอีกต่อไป

ใช้ข้อกำหนดในรูปแบบอื่นเพื่อจับความต้องการระดับต่ำลงและตัดสินใจออกแบบ รูปแบบอื่น ๆ เหล่านี้ควรเป็นสิ่งที่ต้องแก้ไขในองค์กรของคุณและปรับแต่งให้เข้ากับสภาพแวดล้อมเฉพาะของคุณ

คำถามของคุณฟังดูเหมือนคล้ายกันมาก

ฉันมีCarFactoryนี้และฉันต้องทำให้มันเป็นรถจักรยานด้วย แต่ OOD "ปราชญ์" ของเราบอกว่าฉันไม่ได้รับอนุญาตให้ทำเช่นนั้น BS นี้คืออะไร!

เคารพการแยกความกังวลและการรวมกันของสิ่งประดิษฐ์ของคุณทั้งที่อยู่ในรหัสของคุณและสิ่งที่อยู่ในกระบวนการของคุณ


1

ฉันคิดว่าวัตถุประสงค์ของวิธีการนี้ไม่ได้ จำกัด เรื่องราวของผู้ใช้ แต่เพื่อป้องกันความต้องการที่ไม่ดี

จากประสบการณ์ของฉันผู้ใช้มักไม่สามารถเขียนข้อกำหนดได้ นักพัฒนามักไม่สามารถเขียนข้อกำหนดได้ เฮ้เราแค่ยอมรับมันออกมา: ข้อกำหนดยากที่จะเขียน!

ฉันคิดว่ามันจะถูกต้องสำหรับผู้ใช้ที่จะเขียนบางสิ่งบางอย่างในความต้องการศัพท์แสงเป็นส่วนหนึ่งของเรื่องราวการใช้งาน อย่างไรก็ตามการทำเช่นนั้นไม่ควรทำให้เป็นข้อกำหนดโดยอัตโนมัติ การมีเรื่องราวการใช้ที่ขัดแย้งกันสองเรื่องเป็นปัญหาเล็กน้อย การมีข้อกำหนดที่ขัดแย้งกันสองข้อเป็นปัญหาสำคัญในการทำลายสัญญา ไม่มีเหตุผลในการส่งเสริมหนึ่งไปยังอีกก่อนเวลา

ฉันคิดว่ามุมมองที่โหดเหี้ยมมาจากการรับรู้ถึงธรรมชาติของมนุษย์ หากผู้คนเริ่มนึกถึงเรื่องราวของผู้ใช้เป็นสถานที่สำหรับวางข้อกำหนดพวกเขาจะเริ่มทำเช่นนั้น ข้อได้เปรียบที่แท้จริงของเรื่องราวการใช้งานมากกว่าวิธีการอื่น ๆ ในการรวบรวมความต้องการเช่นข้อมูลคือพวกเขาได้รับการใช้คำพูดในการใช้ถ้อยคำและข้อความตามธรรมชาติของผู้ใช้ สิ่งนี้ทำให้มีโอกาสมากขึ้นที่นักพัฒนากำลังคิดจากมุมมองของลูกค้า ในโลกที่สมบูรณ์แบบศัพท์แสงเย็นชาสามารถไปที่นั่นเช่นกัน ในความเป็นจริงคำดังกล่าวมีแนวโน้มที่จะทำให้นักพัฒนายึดมั่นกับข้อกำหนดที่เข้าใจง่ายและพลาดการใช้คำพูดที่ละเอียดอ่อนและการพัฒนาที่คล่องตัวแตกต่างต้องการที่จะค้นพบการใช้เรื่องราวการใช้งาน


1
ปัญหาเกี่ยวกับแนวความคิดนี้คือมันทำงานได้ดีในโครงการสร้างสรรค์ที่ผู้ใช้ต้องการมีความชัดเจน แต่ข้อมูลจำเพาะที่ จำกัด นั้นมี จำกัด เมื่อเราเริ่มพูดคุยเกี่ยวกับการโต้ตอบของระบบที่ซับซ้อนและโดยเฉพาะอย่างยิ่งข้อ จำกัด ด้านกฎระเบียบและความต้องการทางธุรกิจสำหรับพารามิเตอร์ระบบที่กำหนดอย่างยากลำบากแล้วเรื่องราวของผู้ใช้เพียงอย่างเดียวมักจะขาดรายละเอียดที่สำคัญ ดังนั้นเมื่อพวกเขาคุยกันเรื่องนี้ แต่เมื่อฉันมี 20 หน้าของข้อกำหนดและกฎที่ไม่ยอมลดลงอย่างหนักนั่นก็มากเกินกว่าที่จะดูดซับใน "บทสนทนา" ความต้องการด้านการใช้งานมีความจำเป็นเช่นกัน
maple_shaft

1
ฉันเห็นด้วยจำเป็นต้องมีข้อกำหนดฉันแค่คิดว่าพวกเขาควรจะไปที่อื่น ฉันไม่สามารถพูดได้สำหรับส่วนที่เหลือของโลก แต่ฉันพบว่ามันง่ายมากที่จะแย่งชิงจุดประสงค์ของเรื่องราวของผู้ใช้และทำให้พวกเขากลายเป็นหนังสือเล่มเล็ก ๆ ที่เต็มไปด้วยข้อกำหนด ถ้าเป็นเช่นนั้นฉันก็ไม่มีเรื่องให้ผู้ใช้ไป ในโลกที่สมบูรณ์แบบคุณสามารถใส่เรื่องราวของผู้ใช้ทั้งสองได้ แต่นักพัฒนาเป็นมนุษย์และวัฒนธรรมไม่แน่นอน หากทีมมีนิสัยชอบใช้เรื่องราวของผู้ใช้ตามความต้องการอาจเป็นไปไม่ได้ที่จะกลับไปใช้สิ่งที่ฉันเชื่อว่าเป็นเป้าหมายหลักของพวกเขา
Cort Ammon - Reinstate Monica

1

ตัดสินใจด้วยตัวเอง

คำตอบของ 'ดังนั้นนักพัฒนาจะสามารถพัฒนาเรื่องราวได้อย่างไรหากไม่มีข้อกำหนดที่ต่ำกว่านี้?' ง่ายมาก - ข้อกำหนดรายละเอียดที่ตั้งฉากกับความต้องการของผู้ใช้ปลายทาง (เช่นข้อ จำกัด ของฐานข้อมูลการตรวจสอบความถูกต้องของเขตข้อมูลและอื่น ๆ ) ไม่ได้มีความสำคัญต่อผู้ใช้ หากความต้องการของผู้ใช้สามารถพบได้โดยการตรวจสอบความถูกต้องของเขตข้อมูลที่แตกต่างกันมาก, โครงสร้างฐานข้อมูลที่แตกต่างกันมากหรืออาจไม่มีฐานข้อมูลแบบดั้งเดิมเลยก็จะเป็นการต่อต้านการให้ผู้ใช้สร้างข้อมูลดังกล่าว แตกต่างจากวิธีการใช้ระบบในที่สุด

คุณเป็นนักพัฒนามืออาชีพดังนั้นตัดสินใจอย่างมืออาชีพเพื่อให้ได้ความสามารถสูงสุดของคุณเกี่ยวกับรายละเอียดการใช้งาน ผู้ใช้ที่ต้องการโต๊ะสามารถบอกช่างไม้ว่าต้องการไม้ประเภทใด แต่ช่างไม้คาดว่าจะตัดสินใจได้ว่าขาโต๊ะหนาแค่ไหนที่จะรองรับน้ำหนักที่เหมาะสม หากคุณขาดข้อมูลบางอย่างเพื่อทำการตัดสินใจที่มีความหมายคุณจำเป็นต้องพูดคุยกับผู้ใช้ แต่เนื้อหา 90% สำหรับเอกสารข้อกำหนดที่มีรายละเอียดจริง ๆ แล้วไม่ต้องการข้อมูลใด ๆ นอกเหนือจากเรื่องราวที่คลุมเครือของผู้ใช้สามัญสำนึก .

รายละเอียดทั้งหมดนั้นไม่ได้มีอยู่โดยพลการ - มีตัวเลือกที่ไม่ดีและตัวเลือกที่ดีกว่าและควรมีการบันทึกไว้เนื่องจากมีผลกระทบต่อส่วนอื่น ๆ ของการนำไปใช้ แต่ท้ายที่สุดพวกเขายังคงมีรายละเอียดของการปฏิบัติ ตามความต้องการของผู้ใช้และแนวทางปฏิบัติที่ดีที่สุด

การเปรียบเทียบรถมาตรฐาน - หากลูกค้าต้องการให้รถทาสีแดงแล้วการชี้แจงที่เหมาะสมสำหรับเรื่องราวของผู้ใช้จะถามว่าเฉดสีแดงจะดีกว่า แต่ไม่ใช่องค์ประกอบทางเคมีของสี อย่างไรก็ตามคาดว่าพวกเขาจะไม่เลือกที่จะทาสีรถยนต์ด้วยสีน้ำที่จะล้างออกท่ามกลางสายฝนเนื่องจากเป็นแนวปฏิบัติที่ดีที่สุดที่จะไม่ทำเช่นนั้น


1

TL; DR

เรื่องราวของผู้ใช้สำหรับการบันทึกสิ่งที่ควรเพิ่มมูลค่าให้กับผลิตภัณฑ์และทำไม รายละเอียดการนำไปใช้ (เช่นวิธีเพิ่มมูลค่าทดสอบวัดหรือตรวจสอบ) จะถูก จำกัด โดยเนื้อเรื่อง แต่ไม่มีอยู่ในนั้น พวกเขาจะถูกทิ้งไว้โดยเจตนาเป็นสิ่งประดิษฐ์แยกต่างหากเพื่อรักษาความยืดหยุ่นและความคล่องตัวภายในกรอบ

ข้อมูลจำเพาะและรายละเอียดการใช้งานมักถูกบันทึกไว้ในสิ่งประดิษฐ์อื่น ๆ เช่นการพัฒนาแบบทดสอบการยอมรับขับเคลื่อน (ATDD) การพัฒนาแบบทดสอบด้วยการขับเคลื่อน (TDD) และสคริปต์และสถานการณ์การพัฒนาพฤติกรรมขับเคลื่อน (BDD) สิ่งประดิษฐ์เฉพาะเหล่านี้ไม่ได้รับคำสั่งจากเฟรมเวิร์ก Scrum แต่แน่นอนว่ามันจะเป็นจุดเริ่มต้นที่ดีหากคุณยังไม่มีการควบคุมกระบวนการที่มีประสิทธิภาพอื่น ๆ

เรื่องราวของผู้ใช้ไม่ใช่ข้อมูลจำเพาะ

โปสเตอร์ต้นฉบับ (OP) ถามคำถามต่อไปนี้ :

[A] ลูกค้าต้องการการประมวลผลที่แตกต่างกันสำหรับบัตรเครดิตที่แตกต่างกันมีข้อกำหนดที่เข้มงวดที่จะต้องดำเนินการและเป็นที่รู้จักเพื่อให้กรณีทดสอบสามารถเขียนได้ ... ที่ใดที่ฉันควรใส่มันหากไม่ได้อยู่ในเรื่องราว?

เรื่องราวของผู้ใช้เป็นคุณลักษณะที่ให้คุณค่ามีบริบทบางอย่างเพื่อเป็นแนวทางในการสนทนาเกี่ยวกับการใช้งานและมุมมองที่เชื่อมโยงกับผู้บริโภคที่มีคุณค่าซึ่งจะได้รับประโยชน์จากมูลค่าที่ส่งมอบโดยคุณลักษณะ

ประเด็นทั้งหมดของเรื่องราวของผู้ใช้คือรายละเอียดการใช้งานไม่ได้กำหนดไว้ล่วงหน้า ทีมมีอิสระที่จะใช้คุณลักษณะนี้ในทุกวิถีทางที่ส่งมอบคุณค่าที่ระบุให้แก่ผู้บริโภคที่มีคุณค่าภายในบริบทที่เหมาะสม

ตัวอย่างการทำงาน

ตัวอย่างเรื่องราวของผู้ใช้

วิธีนี้จะอธิบายได้ง่ายขึ้นหากคุณเริ่มต้นด้วยเรื่องราวที่ไม่ชัดเจนของผู้ใช้ เนื่องจาก OP ไม่ได้ให้เรื่องราวของผู้ใช้ที่สามารถดำเนินการได้ซึ่งตามมาจากโปรแกรมช่วยจำ INVESTฉันจะสร้างเรื่องราวขึ้นมาเพื่อเป็นตัวอย่าง พิจารณาเรื่องต่อไปนี้:

ในฐานะผู้ใช้ที่ต้องการชำระเงินด้วยบัตร Discover
ฉันต้องการตัวเลือกในการซื้อของฉันด้วยบัตร Discover
เพื่อที่ฉันจะได้ไม่ จำกัด Visa, Mastercard หรือ American Express

นี่เป็นคุณลักษณะที่เป็นรูปธรรมนำเสนอบริบทที่สามารถเป็นแนวทางในการตัดสินใจในการนำไปปฏิบัติที่ทีมต้องทำและระบุผู้บริโภคที่มีคุณค่าในฐานะลูกค้าของ Discover-card ที่เป็นเจ้าของ นั่นไม่ใช่ชุดของข้อกำหนด แต่เป็นสิ่งที่คุณต้องมีการสนทนาที่ถูกต้องกับลูกค้าและกับทีมเกี่ยวกับวิธีการใช้เรื่องราวที่ดีที่สุดในระหว่างการพัฒนาซ้ำ

การวิเคราะห์และการนำไปใช้

การใช้งานจริงขึ้นอยู่กับทีม ทีมจะต้องทำการวิเคราะห์เพื่อพิจารณา:

  • วิธีที่ง่ายที่สุดในการปรับใช้คุณสมบัติใหม่
  • ตัวเลือกการดำเนินการใดบ้างที่จะง่ายที่สุดในการสนับสนุนการดำเนินการต่อไปโดยไม่ต้องมีหนี้สินทางเทคนิค
  • วิธีการใช้หลักการแบบเปิดปิดและ YAGNI เพื่อให้แน่ใจว่าคุณสมบัติใหม่ของคุณมีความแข็งแกร่งโดยไม่ต้องมีวิศวกรรมมากเกินไป

หนึ่งในหลักการสำคัญของAgile Manifestoคือการทำงานร่วมกันของลูกค้า คาดว่าจะมีทีมงานที่จัดระเบียบเองและทำงานร่วมกันได้เพื่อทำงานร่วมกับลูกค้าเพื่อกำหนดรายละเอียดการใช้งานภายในแนวทางที่ได้รับจากเรื่องราวของผู้ใช้

หากเรื่องราวของผู้ใช้ของคุณเขียนไม่ดีหรือหากทีมไม่มีทักษะหรือวุฒิภาวะของกระบวนการในการทำการวิเคราะห์อย่างพอเพียงที่ต้องการโดยกรอบความคล่องตัวของพวกเขาสิ่งนี้จะยากกว่าที่ควรจะเป็น มีการเขียนหนังสือทั้งเล่มเกี่ยวกับวิธีการสร้างเรื่องราวของผู้ใช้ที่ดีในระดับที่เหมาะสม โชคไม่ดีที่ไม่มีกระสุนเงิน แต่เป็นทักษะที่เรียนรู้ได้สำหรับทีมที่คล่องตัว

การทดสอบขับเคลื่อนและการออกแบบที่ขับเคลื่อนด้วยพฤติกรรม

วิธีที่ดีที่สุดเพื่อให้แน่ใจว่าการวิเคราะห์นั้นเป็นไปอย่างราบรื่นและการใช้งานนั้นมีทั้งสติและการสนับสนุนคือการใช้แนวทางปฏิบัติของ TDD และ BDD ตัวอย่างเช่นจากเรื่องราวข้างต้นทีมควรจับภาพการใช้งานตามแผนผ่านสิ่งประดิษฐ์เช่น:

  • คุณสมบัติของแตงกวากับสถานการณ์ที่ทดสอบได้

    สิ่งนี้มีประโยชน์มากที่สุดสำหรับการผลักดันการพัฒนาการทดสอบการยอมรับและสำหรับการจัดทำเอกสารความคาดหวังของผู้ใช้เกี่ยวกับพฤติกรรมการใช้งาน ตัวอย่างเช่นเรื่องราวของผู้ใช้ควรมีคุณสมบัติแตงกวาที่เกี่ยวข้องอย่างน้อยหนึ่งอย่างที่อธิบายถึงวิธีการที่ผู้ใช้สามารถเช็คเอาต์ด้วยบัตร Discover และกระบวนการนั้นมีลักษณะอย่างไรต่อผู้ใช้

  • การทดสอบ RSpec ที่ตรวจสอบพฤติกรรม (ไม่ใช่รายละเอียดการนำไปใช้ภายใน) ของคุณลักษณะโค้ดใหม่

    สิ่งนี้มีประโยชน์มากที่สุดสำหรับการจัดทำเอกสารและตรวจสอบพฤติกรรมที่ต้องการของคุณสมบัติภายในแอปพลิเคชัน ตัวอย่างเช่นเรื่องราวของผู้ใช้จะผลักดันการสร้างหน่วยทดสอบและบูรณาการเพื่อให้แน่ใจว่าการใช้บัตร Discover จะเรียกใช้พฤติกรรมเฉพาะบัตรที่แอปพลิเคชันต้องการให้อนุญาตการขายผ่านเกตเวย์การชำระเงิน

เครื่องมือเฉพาะไม่สำคัญ หากคุณไม่ชอบ Cucumber หรือ RSpec ให้ใช้เครื่องมือหรือวิธีการใดก็ได้ที่ดีที่สุดสำหรับทีมของคุณ แต่ประเด็นก็คือว่ารายละเอียดการปฏิบัติที่มีพื้นฐานอยู่บนเรื่องการใช้แต่ยังไม่ได้กำหนดโดยมัน แต่การใช้งาน (หรือข้อกำหนดเฉพาะ) เป็นรายละเอียดที่จะต้องดำเนินการในระหว่างการพัฒนาคุณลักษณะในรูปแบบการทำงานร่วมกัน


0

คำตอบที่ดีมากมายที่นี่ หวังว่าฉันจะสามารถเพิ่มมูลค่ากับอีกหนึ่ง ...

ฉันคิดว่าทีมของคุณอาจมีปัญหาคือการย้ายจากวิธีที่ไม่ใช่แบบ Agile

โดยปกติแล้วจะมีวิธีน้ำตกบางรูปแบบและในทางปฏิบัติมักจะเกี่ยวข้องกับการพยายามจัดทำเอกสารข้อกำหนดทางเทคนิคทั้งหมดก่อนที่จะเขียนบรรทัดของโค้ด

แต่นั่นไม่ได้ผลเสมอไป บ่อยครั้งที่มันไม่ทำงาน เหตุผล? เพราะความต้องการไม่ค่อยสอดคล้องกับความเป็นจริง สิ่งต่าง ๆ เปลี่ยนไป ดังนั้นการย้ายไปสู่เปรียว

ด้วย Agile เรื่องราวของผู้ใช้คือทั้งหมดที่ผู้ใช้ให้ความสำคัญ พวกเขาต้องการได้รับแบบฟอร์มจุด A ถึงจุด B วิธีที่จะได้รับในแง่ของการดำเนินการอยู่ในมือของคุณ หากคุณกำลังรอใครสักคนที่จะบอกคุณเกี่ยวกับข้อกำหนดทางเทคนิคนั่นไม่ใช่ความคล่องตัวจริงๆ หากคุณมีคำถามให้ถาม หากคุณต้องการเอกสารเอกสาร แต่คุณไม่ต้องการให้ลูกค้าทำการตัดสินใจทั้งหมดเหล่านี้ให้คุณ พวกเขาอาจมีความคิดเห็น แต่ในสภาพแวดล้อมที่คล่องตัวความคิดเห็นเหล่านั้นควรเป็น (ตามที่กูรูของคุณแนะนำ) พูดคุยในการสนทนา

อาจรู้สึกว่านี่เป็นภาระให้กับทีมของคุณ แต่ให้พิจารณาถึงความหรูหรา ตอนนี้ทีมของคุณมีคำพูดมากมายในการแก้ปัญหา - ซึ่งไม่จำเป็นต้องเป็นกรณีในโมเดลน้ำตก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.