เรื่องราวของผู้ใช้กับความต้องการ


33

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


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

คำตอบ:


52

ความจริงแล้วหลังจากใช้เวลาเกือบสองปีในการพัฒนา Agile ฉันยังคงคิดว่า "เรื่องราวของผู้ใช้" เป็นเพียงคำศัพท์แฟนซีสำหรับ "ข้อกำหนดด้านหน้าที่"

มันแตกต่างกันในระดับผิวเผินเช่นมันมักจะมีรูปแบบที่แน่นอน ( "เป็น X ฉันต้องการ Y เพื่อให้ Z ... " ) แต่องค์ประกอบที่สำคัญ - การระบุผู้มีส่วนได้เสียและเหตุผล - ก็มีอยู่ใน - ฟังก์ชั่นข้อกำหนดการเขียน มันง่ายมากที่จะเขียนเรื่องราวของผู้ใช้ที่ไม่ดีเหมือนกับการเขียนข้อกำหนดที่ไม่ดี ( "[ชื่อ บริษัท ของเรา]] ฉันต้องการ [คุณสมบัติที่คลุมเครือ] เพื่อที่ฉันจะได้ [ทำบางสิ่งที่เป็นส่วนหนึ่งของงานของฉันอย่างเห็นได้ชัดเช่น 'ขายให้ลูกค้ามากขึ้น'] " )

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

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

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

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


คำตอบทั้งหมดช่วยให้ความเข้าใจของฉันอยากจะทำเครื่องหมายทั้งหมดว่าถูกต้อง :)
ม้าวิกกี้

5
ฉันไม่เห็นด้วย: ความต้องการมุ่งเน้นไปที่วิธีที่ผู้ใช้โต้ตอบกับระบบเรื่องราวในสิ่งที่วัตถุประสงค์มีคุณสมบัติอย่างไร พวกมันต่างกันอย่างสิ้นเชิง
Sklivvz

1
@Sklivvz: ฉันไม่คิดว่าฉันเคยอ่านเรื่องราวของผู้ใช้ที่ไม่ได้พูดอะไรเกี่ยวกับวิธีที่ผู้ใช้โต้ตอบกับระบบและอย่างที่ฉันพูดความต้องการที่ดีมาพร้อมกับคำแถลงจุดประสงค์เพื่อให้พวกเขาเข้าใจได้ บริบท. ด้วยเหตุผลบางอย่างผู้คนจำนวนมากดูเหมือนจะคิดว่า "ข้อกำหนดแบบดั้งเดิม = ข้อกำหนดที่ไม่ดี" และ "เรื่องราวของผู้ใช้ = ข้อกำหนดที่ดี" โดยอัตโนมัติ ไม่จำเป็นต้องเป็นเรื่องจริง ยกตัวอย่างเช่น"EVO"ซึ่งเชื่อมโยงทุกความต้องการไม่เพียง แต่กับเป้าหมายทางธุรกิจ แต่ยังรวมถึงตัวชี้วัดที่แท้จริง
Aaronaught

1
@hanzolo: ตอนนี้มันก็โง่ งานเป็นวิธีที่ละเอียดเกินไปที่จะใช้งานตามข้อกำหนดการใช้งานใด ๆ งานมักมีการระบุไว้ในระดับเทคนิคสูงเช่นเดียวกับใน "ใช้งานตัวแยกวิเคราะห์ผลเดี่ยวโดยใช้ไลบรารี jibbler" คุณอาจจะทำกรณีสำหรับงานที่มีคุณสมบัติคล้ายกันเกือบทุกอย่างแต่สิ่งเหล่านี้มาตามข้อกำหนด เรื่องที่ผู้ใช้ควรจะมาพร้อมกับเกณฑ์การยอมรับ - ผู้ที่มีจำนวนมากขึ้นเช่นความต้องการการทำงานที่มีรายละเอียดที่ใช้ในน้ำตก / ประเภทโฟโต้รุ่น
Aaronaught

2
@Sklivvz: "อะไร" โดยทั่วไปมีปฏิสัมพันธ์ระหว่างผู้ใช้และระบบ "ฉันต้องการเห็นคะแนนรวมของคำตอบ" เป็นตัวอย่างทั่วไปของส่วนตรงกลางของเรื่องราวของผู้ใช้และเป็นคำที่เกือบจะเหมือนกันกับข้อกำหนดในการใช้งาน ("ผู้ใช้ควรเห็นคะแนนทั้งหมดบนคำตอบ") . "การที่" และ "ทำไม" เป็นเพียงบางส่วนที่เห็นได้ชัดที่แตกต่างกันและความต้องการของหลาย ๆ ระบบการติดตาม / วิธีการอื่น ๆกว่าเรื่องที่ผู้ใช้คาดหวังว่าผู้ที่จะให้เป็นอย่างดี
Aaronaught

16

Ron Jeffries เขียนเมื่อนานมาแล้วเกี่ยวกับเรื่องราวของผู้ใช้ 3Cs ( http://xprogramming.com/articles/expcardconversationconfirmation/ ) โดยเน้นที่การ์ด (คำอธิบายสั้น ๆ ) การสนทนาระหว่างลูกค้าและทีมจัดส่งเมื่อเรื่องราวของผู้ใช้ ดำเนินการได้และการยืนยันที่ตกลงกันของเรื่องราวหลังจากการสนทนานั้น

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

วันนี้ความหมายของ "เรื่องราวของผู้ใช้" ดูเหมือนจะแคบลงเหลือเพียง "การ์ด" ส่วนหนึ่งของเจฟฟรีส์ '3C ในกรณีนั้นเรื่องราวของผู้ใช้ไม่ใช่ข้อกำหนด แต่สัญญาว่าจะระงับการสนทนาเกี่ยวกับข้อกำหนด

คุณสามารถค้นหานักเก็ตทองคำแห่งภูมิปัญญาเกี่ยวกับเรื่องราวของผู้ใช้บน c2 wiki ( http://xp.c2.com/UserStory.html )


7

เรื่องราวและความต้องการของผู้ใช้เป็นสัตว์ที่แตกต่างกันมาก

ความต้องการ

ข้อกำหนดที่ระบุไว้ล่วงหน้าว่าการออกแบบแอปพลิเคชันเสร็จสิ้นแล้วและการพัฒนานั้นเป็นการดำเนินการตามการออกแบบนั้น ความต้องการจึงมุ่งเน้นไปที่วิธีการใช้ฟังก์ชั่น

ตัวอย่างข้อกำหนด:

  • สร้างแบบฟอร์มติดต่อผู้ใช้ด้วยฟิลด์ต่อไปนี้: ชื่อนามสกุลอีเมลข้อความอิสระและปุ่มส่ง เมื่อกดปุ่มส่งอีเมลจะถูกส่งไปยังทีมสนับสนุนของเรา

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

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

ตัวอย่างของเรื่อง:

  • ในฐานะผู้ใช้ Jimmy ฉันต้องการติดต่อทีมสนับสนุนของคุณเมื่อฉันไม่สามารถใช้เว็บไซต์ได้อย่างถูกต้องเพื่อให้พวกเขาสามารถช่วยฉันได้

อะไรคือความแตกต่าง?

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

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

ต้นทุนของโอกาส

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

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

ความว่องไว

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

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

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


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

2
ฉันค่อนข้างแน่ใจว่าฉันไม่ได้เข้าใจผิด
Sklivvz


15
"ความต้องการจึงมุ่งเน้นไปที่วิธีการใช้ฟังก์ชั่น" - นี่มันผิดมาก หากความต้องการบอกว่าจะทำอะไรมันไม่ใช่ความต้องการที่ดี ข้อกำหนดจะไม่รวมถึงรายละเอียดการออกแบบหรือการนำไปปฏิบัติ ถ้าฉันเห็นตัวอย่าง "ข้อกำหนด" ของคุณฉันจะปฏิเสธทันที - มันระบุรายละเอียดการใช้งาน
Thomas Owens

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

6

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

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

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

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

ดังนั้นฉันจะบอกว่าเป็นเรื่องที่ดีไม่ควรมีรายละเอียดเฉพาะเกี่ยวกับวิธีการใช้งานระบบ มันควรจะพูดว่า "เดือนละครั้งระบบ A จะต้องได้รับการอัพเดตด้วยข้อมูลใหม่จากระบบ B ข้อมูลนั้นอาจต้องมีการแก้ไขลูกค้ามีประวัติของการป้อนข้อมูลที่ไม่ถูกต้องและไม่ทราบปัญหาเป็นเวลาหลายสัปดาห์" ไม่ควรพูดว่า "ระบบต้องยอมรับไฟล์ latin1 CSV อย่างน้อยเดือนละครั้งและโยน NumberFormatException หากคอลัมน์ 3 ไม่ใช่ตัวเลข" คุณเห็นความแตกต่างหรือไม่ สถานการณ์อธิบายถึงความต้องการไม่ใช่วิธีแก้ปัญหาเฉพาะ จากนั้นในการทดสอบคุณวนกลับไปที่สถานการณ์เพื่อให้แน่ใจว่าโซลูชันเหมาะสมกับความต้องการ ข้อกำหนดอาจผสมความต้องการบางอย่างเข้ากับโซลูชันบางอย่างหรือแม้แต่มุ่งเน้นที่โซลูชัน


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

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

3

เจอสิ่งนี้ในระหว่างการค้นหา google และคิดว่าฉันจะแสดงความคิดเห็น

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

ความแตกต่างเพียงอย่างเดียวคือวิธีวิเคราะห์เป้าหมายหรือผลลัพธ์นี้โดยนักวิเคราะห์ธุรกิจ ในกรณีนี้มันอยู่ในถ้อยคำ

ตัวอย่าง:

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

วิธีการแก้ปัญหาจะแสดงสมาชิกในทีมที่ทำงานเกี่ยวกับคดีจำนอง

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

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

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

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


3

ฉันคิดว่ามีความไม่สอดคล้องกันมากมายกับสิ่งที่ข้อกำหนดของคำหมายถึงแม้จะอยู่ในหนังสือแบบคลาสสิกก็ตาม ความไม่ลงรอยกันแบบเดียวกันนี้ใช้กับเรื่องราวของผู้ใช้ องค์กรและตำราต่าง ๆ ปฏิบัติตามข้อกำหนดเหล่านี้ต่างกัน ตัวอย่างเช่นตำราวิศวกรรมซอฟต์แวร์คลาสสิกของ Roger Pressman พูดถึงความต้องการแตกต่างจากหนังสือ Agile Software ข้อกำหนดของ Dean Leffingwell อย่างไร ฉันเคารพพวกเขาทั้งสองและพวกเขาทั้งสองสามารถใช้ได้

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

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

ในองค์กรของเราเรากำลังมุ่งหน้าสู่โมเดลของ Leffingwell ในเรื่องของ Epics, Feature and Stories ไม่ใช่ความต้องการ แต่เป็นความล้มเหลวในการทำงานและการจัดลำดับความสำคัญ ความต้องการเป็นสิ่งที่แตกต่าง มีการจัดการข้อกำหนดแยกต่างหากเพราะเราจำเป็นต้องดำเนินการกับหน่วยงานกำกับดูแล และยังมีบางทีมที่พัฒนาข้อกำหนดในเรื่องราวของผู้ใช้ในระหว่างการเพิ่มโปรแกรมและการวางแผนการวิ่ง


2

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

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

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

ในทีมของฉันเราใช้สิ่งต่อไปนี้:

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

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

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

ที่เหลือนี่คือความเห็นของฉัน: เรื่องราวของผู้ใช้จะไม่สามารถประสบความสำเร็จได้ในทางเดียว คุณต้องการให้ลูกค้าทำงานกับมัน Water-scrum-fall จะถึงวาระที่จะเป็นระเบียบที่แปลก แต่ไม่ต้องการ หากคุณมีการทำสัญญาการเสนอราคาคงที่ที่มีความต้องการที่เฉพาะเจาะจงไม่ได้ใช้ซ้ำและเรื่องที่ผู้ใช้มีจุดใด ใช้ชุดเครื่องมือ Agile ที่เหลืออยู่: การทดสอบหน่วย / การทำงานอัตโนมัติ, การตรวจสอบโค้ด, การรวมอย่างต่อเนื่อง, การปรับโครงสร้างใหม่และอื่น ๆ ให้แน่ใจว่าซอฟต์แวร์ของคุณทำงานได้อย่างต่อเนื่องและคุณสามารถจัดส่งได้ทันที ทำให้พร้อมใช้งานในรูปแบบที่ยังไม่เสร็จให้กับลูกค้าเพื่อให้เขาสามารถให้ข้อเสนอแนะได้มากที่สุด หากคุณทำอย่างนั้นกับเพื่อนของฉันแม้ว่าคุณจะไม่ได้ทำ "เรื่องราวของผู้ใช้" และ "การต่อสู้" คุณจะมีความคล่องตัวมากกว่าร้านที่เรียกว่า "เปรียว"


2

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

อย่างไรก็ตาม IMO เรื่องราวของผู้ใช้เป็นไปตามแนวทางของ Agile เรื่อง "ลูกค้าในอาคารหรือลูกค้าพร้อมใช้งานทันที" โดยไม่จำเป็นต้องใช้เอกสารเพราะรายละเอียดอยู่ในส่วนหัวของลูกค้าและพร้อมใช้งานดังนั้น SRS อย่างเป็นทางการอาจ ไม่จำเป็น ตอนนี้ "งาน" ของ "เรื่องราวของผู้ใช้" เป็นวิธีที่นักพัฒนาจะสร้างเรื่องราวของผู้ใช้ที่ย่อยได้

ตัวอย่างเรื่องราวของผู้ใช้อาจเป็น:

ในฐานะผู้ใช้ที่เป็นผู้ดูแลระบบฉันต้องการดูข้อมูลลูกค้าของฉันที่อยู่ในตาราง

และ "งาน" อาจเป็น:

  1. สร้างกริดซึ่งแสดงรายการข้อมูลที่จะแสดง

  2. เปิดใช้งานการเรียงลำดับบนกริดซึ่งจะเรียงลำดับคอลัมน์ที่เลือก

ขณะนี้งานแต่ละงานได้รับการประเมินและเสร็จสิ้นในการวิ่งตามลำดับ

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

ในกรณีนี้ "ข้อกำหนดการใช้งาน" คือรายละเอียดเล็ก ๆ น้อย ๆ ของ SRS และเป็นส่วนหนึ่งของแนวคิดขนาดใหญ่ ดังนั้นในความคิดของฉันเรื่องราวของผู้ใช้อาจถูกมองว่าเป็น "ข้อกำหนด" อย่างเป็นทางการและงานของเรื่องราวของผู้ใช้นั้นคือ (หรือหนึ่งในหลาย ๆ หน้าที่) ที่ต้องการ

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

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

และฉันเชื่อว่าทุกวันนี้คำศัพท์ต่าง ๆ มั่วสุมและมั่ว .. ซึ่งไม่สำคัญเลย


2
ความคิดที่ว่า "ลูกค้าพร้อมใช้งานดังนั้นเราจึงไม่จำเป็นต้องทำอย่างละเอียด" เป็นส่วนหนึ่งของสิ่งที่ฉันเรียกว่า "Bad Agile" สาระสำคัญที่แท้จริงของ Agile คือคุณวางแผนในการวิ่งและส่งมอบฟังก์ชันการทำงานที่เพิ่มขึ้นเมื่อเทียบกับการทำทุกอย่างใน "บิ๊กแบง" แต่เพื่อให้คล่องแคล่วว่องไวในระยะยาวคุณต้องทำการทดสอบและเพื่อที่จะเขียนหรือทำการทดสอบที่คุณต้องการข้อมูลจำเพาะซึ่งใน Agile-Land นั้นมาในรูปแบบของเกณฑ์การยอมรับซึ่งเหมือนกับข้อกำหนดที่เพิ่งจัดโดย sprint มากกว่าระบบหรือโครงการ แนวคิดที่ว่า "ข้อกำหนด" เป็นเอกสารเก่าที่มีฝุ่นมากเป็นเพียง FUD
Aaronaught

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

@Aaraught - คุณพูดถูก .. แต่ Agile นั้นเกิดจากวิธีการของ XP และกระบวนการที่คุณกล่าวมานั้นเป็นลูกผสมที่ยืมมาจากส่วนที่ดีที่สุดของโลกทั้งสอง .. หนึ่งในมือหนึ่งคุณมี คุณมี "เอกสารหนัก" การหาสมดุลจะถูกกำหนดโดย บริษัท กำหนดกระบวนการของพวกเขา ..
hanzolo

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

1
@ ชาวบริสตอลมันไม่ได้เป็นเพียงแค่การ จำกัด ขอบเขต แต่มันเกี่ยวกับความสามารถในการพูดเมื่อเรื่องจริงเสร็จแล้ว หากคุณไม่สามารถตัดสินใจได้โดยไม่ต้องโบกมือจากธุรกิจคุณก็ไม่มีโอกาสที่จะเปลี่ยนผลิตภัณฑ์ที่มีคุณภาพสม่ำเสมอหรือทำการวัดอย่างแม่นยำเช่นความเร็ว เราต้องการที่เกณฑ์การยอมรับที่จะถูกบันทึกไว้ในการยอมรับการทดสอบ - แต่พวกเขายังคงเขียนลง
Aaronaught
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.