ฉันต้องการอธิบายว่าเพราะเหตุใดข้อกำหนดจึงต้องไม่เปลี่ยนแปลงในระหว่างการพัฒนา


11

ฉันต้องการอธิบายว่าเพราะเหตุใดจึงไม่มีการเปลี่ยนแปลงข้อกำหนดในระหว่างช่วงเวลาการพัฒนากับพนักงานฝ่ายวางแผนใหม่


4
การเขียนโปรแกรมกับเป้าหมายที่เคลื่อนที่นั้นสนุกไปแล้วครึ่งหนึ่ง!
Anthony Pegram

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

7
"การเดินบนน้ำและการพัฒนาซอฟต์แวร์จากสเปคนั้นง่ายถ้าทั้งคู่ถูกแช่แข็ง" - Edward V Berard
Jason Hall

1
การเปลี่ยนแปลงรายละเอียดส่วนใหญ่เพียงแจ้งให้พวกเขาทราบว่าการเปลี่ยนแปลงของพวกเขาส่วนใหญ่จะมีผลต่อกำหนดเวลา ที่ทำงานของฉันเมื่อเราให้ข้อมูลจำเพาะและจำเป็นต้องมีการเปลี่ยนแปลงพวกเขาจะต้องให้ข้อมูลคร่าว ๆ เกี่ยวกับการเปลี่ยนแปลงและเราส่งเวลาที่ใช้และพวกเขายอมรับการเปลี่ยนแปลงหรือไม่ (หรือทำให้เรา อยู่ดึก)
Johnny Quest

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

คำตอบ:


18

สเปคเปลี่ยนแปลงเกือบตลอดเวลาในระหว่างการพัฒนา แต่สิ่งที่ง่ายที่สุดของโครงการ

เหตุผลคือ:

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

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

  • แรงกดดันกำหนดเวลาส่งผลให้มีการตัดคุณสมบัติ

  • มีการค้นพบผู้มีส่วนได้ส่วนเสียเพิ่มเติมในโครงการ (เช่นตรงกลางผ่านโครงการพบโครงการที่คล้ายกันในพื้นที่ต่าง ๆ และระบบย่อยทั่วไปต้องถูกรวมศูนย์ / แชร์ - สิ่งนี้เกิดขึ้นกับฉันตรงกลางผ่านโครงการยาว 2 ปี architeching)

  • สปอนเซอร์เพิ่มเติมของโครงการมีข้อกำหนดสเปคใหม่ (ตัวอย่างที่มีชื่อเสียงที่สุดคือประวัติศาสตร์ของการพัฒนายานต่อสู้แบรดลีย์)

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

  • การเปลี่ยนแปลงข้อมูลจำเพาะส่งผลให้เกิดการเปลี่ยนแปลงรหัสทำให้คุณไม่สนใจส่วนของโครงการที่ยังไม่ได้เขียน (อย่างที่เราทุกคนรู้จักและประกาศโดย Joel Spolsky การเปลี่ยนแปลงที่มุ่งเน้นนั้นแย่มากสำหรับนักพัฒนา)

  • การเปลี่ยนแปลงบางอย่างสเป็ค (บางครั้งดูเหมือนจะมากรองลงมา) อาจส่งผลให้เกิดความต้องการที่จะสมบูรณ์อีกวิศวกร / ใหม่สถาปนิกระบบตั้งแต่การเลือกระหว่าง 2 สถาปัตยกรรมที่ถูกสร้างขึ้นบนพื้นฐานของสมมติฐานที่นำมาจากข้อมูลจำเพาะ

  • ในกรณีของ TDD ชิ้นงานขนาดใหญ่ที่นำไปทดสอบอาจถือเป็นโมฆะ

  • หากการเปลี่ยนแปลงข้อมูลจำเพาะมาจากผู้มีส่วนได้เสียเพิ่มเติมตามที่ระบุไว้ข้างต้นพวกเขาอาจขัดแย้งกับข้อมูลจำเพาะที่มีอยู่ส่งผลให้คุณภาพของผลิตภัณฑ์ลดลงอย่างมีนัยสำคัญ (ดู Fighting Vehicle, Bradley)

  • การเปลี่ยนแปลงข้อมูลจำเพาะอาจละเมิดข้อกำหนดทางธุรกิจที่มีอยู่ซึ่งผู้เปลี่ยน / ผู้ร้องขออาจไม่ได้รับทราบหรือได้รับการดูแล

แน่นอนว่าจำนวนเงินทั้งหมดนี้มีการขยายเวลาส่งมอบของโครงการ (บางครั้งอย่างมีนัยสำคัญ) และอาจเพิ่มโอกาสในการเกิดข้อบกพร่อง

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

Y2K

ทั้งหมดที่พวกเขาทำคือเปลี่ยนข้อมูลจำเพาะเพื่อพูดว่า " ต้องทำงานหลังจากปี 2000 "

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

  • ส่วนหนึ่งของสเป็คคือ (หรือขึ้นอยู่กับ) สเปคของระบบภายนอกที่จะต้องมีการเชื่อมต่อกับ

  • ส่วนหนึ่งของข้อมูลจำเพาะคือ (หรือขึ้นอยู่กับ) ฮาร์ดแวร์ที่ใช้กับระบบ

  • ข้อกำหนดของสัญญากับลูกค้า (แม้ว่าข้อ จำกัด จะพูดอย่างเคร่งครัดเกี่ยวกับการเปลี่ยนข้อมูลจำเพาะโดยไม่ต้องทำงานผ่านการเปลี่ยนแปลงกับลูกค้าก่อนและเปลี่ยนแปลงสัญญาเมื่อเทียบกับความจริงของการเปลี่ยนแปลง)

  • ระบบอาจต้องปฏิบัติตามข้อกำหนดทางกฎหมายหรือข้อบังคับเฉพาะโดยไม่คำนึงถึงความต้องการของลูกค้า ตัวอย่าง: การเข้ารหัสบัตรเครดิต, การป้องกันข้อมูลภาษี


ไม่เป็นไร ฉันติดมันกลับมา

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

9

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

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

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

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

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

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


6

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

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


3

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

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

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


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