วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

3
การทดสอบหน่วยเปราะเนื่องจากต้องการการเยาะเย้ยมากเกินไป
ฉันดิ้นรนกับปัญหาที่น่ารำคาญมากขึ้นเกี่ยวกับการทดสอบหน่วยของเราที่เรากำลังนำไปใช้ในทีมของฉัน เรากำลังพยายามเพิ่มการทดสอบหน่วยในรหัสดั้งเดิมที่ไม่ได้ออกแบบมาอย่างดีและในขณะที่เราไม่ได้มีปัญหาใด ๆ กับการเพิ่มการทดสอบจริง ๆ เราเริ่มที่จะต่อสู้กับการทดสอบที่เกิดขึ้น เป็นตัวอย่างของปัญหาสมมติว่าคุณมีวิธีการที่เรียก 5 วิธีอื่น ๆ เป็นส่วนหนึ่งของการดำเนินการ การทดสอบสำหรับวิธีนี้อาจเป็นการยืนยันว่าลักษณะการทำงานที่เกิดขึ้นเป็นผลมาจากวิธีการหนึ่งใน 5 วิธีการอื่นที่เรียกว่า ดังนั้นเนื่องจากการทดสอบหน่วยควรล้มเหลวด้วยเหตุผลเดียวและเหตุผลเดียวเท่านั้นคุณต้องการกำจัดปัญหาที่อาจเกิดขึ้นจากการเรียก 4 วิธีการอื่น ๆ เหล่านี้และเยาะเย้ยพวกเขาออก ที่ดี! การทดสอบหน่วยดำเนินการวิธีการเยาะเย้ยจะถูกละเว้น (และพฤติกรรมของพวกเขาสามารถยืนยันได้ว่าเป็นส่วนหนึ่งของการทดสอบหน่วยอื่น ๆ ) และการตรวจสอบใช้งานได้ แต่มีปัญหาใหม่ - การทดสอบหน่วยมีความรู้อย่างใกล้ชิดว่าคุณยืนยันพฤติกรรมและการเปลี่ยนแปลงลายเซ็นใด ๆ ของ 4 วิธีอื่น ๆ ในอนาคตหรือวิธีการใหม่ใด ๆ ที่จำเป็นต้องเพิ่มใน 'วิธีการหลัก' จะ ส่งผลให้ต้องเปลี่ยนการทดสอบหน่วยเพื่อหลีกเลี่ยงความล้มเหลวที่เป็นไปได้ โดยธรรมชาติแล้วปัญหาสามารถลดลงได้บ้างเพียงแค่มีวิธีการมากขึ้นที่จะทำให้พฤติกรรมน้อยลง แต่ฉันหวังว่าอาจจะมีวิธีการแก้ปัญหาที่หรูหรากว่านี้ นี่คือตัวอย่างการทดสอบหน่วยที่จับปัญหา ในฐานะที่เป็นโน้ตย่อ 'MergeTests' เป็นคลาสการทดสอบหน่วยที่สืบทอดจากคลาสที่เรากำลังทดสอบและแทนที่พฤติกรรมตามต้องการ นี่คือ 'รูปแบบ' ที่เราใช้ในการทดสอบของเราเพื่อให้เราสามารถแทนที่การโทรไปยังคลาส / การอ้างอิงภายนอก …

4
ตกลงเปลี่ยนบางส่วนของคอลเลกชันด้วย PUT หรือ DELETE หรือไม่?
ฉันมีชุดผลิตภัณฑ์ในกลุ่มผลิตภัณฑ์เช่น: product-groups/123/products ถ้าฉันต้องการเพิ่มลงในคอลเลกชันฉันจะส่งผลิตภัณฑ์บางอย่างที่มี PUT ได้หรือไม่ หากฉันต้องการลบผลิตภัณฑ์บางอย่างออกจากคอลเลกชันฉันจะส่งข้อมูลตัวกรอง (อาร์เรย์ของ ID) ด้วย DELETE ได้หรือไม่ เป็นวิธีที่ดีที่สุดในการใช้งานฟังก์ชันในจิตวิญญาณของ ReST อะไร แก้ไข: รายการเหล่านี้เป็นลิงค์ไปยังเอนทิตีที่แยกจากกันโดยทั่วไปเป็น ID ของผลิตภัณฑ์
21 rest  collections 

8
ความมั่นใจในการกลับมาของโปรแกรมเมอร์อาวุโส [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา เจ้านายของฉันพบว่าฉันไม่ฉลาดเท่าที่เขาคิด ตัวอย่างจากประสบการณ์ของฉัน: ฉันเป็นโปรแกรมเมอร์รุ่นพี่และฉันทำงานเป็นทีมสองคนเจ้านายของฉัน (โปรแกรมเมอร์อาวุโส) และตัวฉันเอง ฉันได้รับมอบหมายให้พัฒนาเว็บแอปพลิเคชันภายในสำหรับ บริษัท ที่เราทำงานด้วย ฉันเขียนแบ็คเอนด์ไปยังส่วนหน้า (การออกแบบฐานข้อมูลอยู่ในสถานที่แล้วและเลือกเทคโนโลยีเซิร์ฟเวอร์แล้ว) เขาจะตรวจสอบความคืบหน้าของฉันเป็นระยะโดยการสังเกตการทำงานของเว็บแอ็พพลิเคชันและมีความสุขกับที่มันเข้ามา เมื่อฉันทำเว็บแอพเสร็จเขาก็พอใจกับการใช้งานผลิตภัณฑ์ ไม่กี่วันที่ผ่านมาเขาเริ่มสนใจโค้ดดังนั้นฉันจึงบอกเขาว่าเทคโนโลยีที่ฉันใช้ (สำหรับส่วนหน้า) และนี่คือที่ที่มันไปทางใต้ สำหรับส่วนหน้าของเว็บแอพฉันใช้เฟรมเวิร์ก Javascript (Backbone.js) เมื่อถูกถามว่าทำไมฉันถึงทำสิ่งนั้น การตอบสนองของฉันเป็นเพราะฉันรู้สึกว่ากรอบที่พอดีกับแอพนี้ค่อนข้างดีและจะช่วยฉันจัดโครงสร้างรหัสได้ดีกว่าถ้าฉันเขียนมันตั้งแต่ต้น .... ดังนั้นในตัวอย่างนี้คำถามของฉันคือ: หากโปรแกรมเมอร์อาวุโสของคุณและสูญเสียความมั่นใจในความสามารถของโปรแกรมเมอร์รุ่นเยาว์คุณต้องการเห็นอะไรจากรุ่นน้องเพื่อรับความมั่นใจกลับคืนมา? แก้ไข : ขอบคุณทุกคนสำหรับคำตอบที่ยอดเยี่ยมและข้อเสนอแนะที่สนับสนุน!

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

2
วิธีที่ดีที่สุดในการปรับใช้การรับรองความถูกต้องสำหรับ REST API
เราพัฒนาแอพพลิเคชั่นบนเครือข่ายสังคมสำหรับมือถือ ทุกแอปพลิเคชันจะใช้ RESTful API สำหรับบริการทางเว็บ เมื่อฉันใช้การเข้าสู่ระบบฉันมักจะเก็บชื่อผู้ใช้และรหัสผ่านที่ใดที่หนึ่งบนอุปกรณ์ จากนั้นฉันก็ส่งพวกเขาและเพื่อเป็นการตอบกลับฉันจะสามารถเข้าถึงโปรไฟล์ของฉันได้ แต่ฉันก็รู้ว่ามีวิธีอื่นในการทำเช่นนี้ อย่างใดอย่างหนึ่งสร้างโทเค็นด้วยอัลกอริทึมเฉพาะแล้วส่งแทนชื่อผู้ใช้และรหัสผ่านเพื่อเข้าถึง ฉันควรนำไปใช้อย่างไร ฉันควรส่งโทเค็นนี้พร้อมกับคำขออื่นนอกเหนือจากการเข้าสู่ระบบหรือไม่
21 mobile  rest  login 

5
ฉันจะโน้มน้าวให้หัวหน้าของฉัน (และผู้พัฒนารายอื่น) ใช้ / พิจารณา JavaScript ที่ไม่สร้างความรำคาญได้อย่างไร
ฉันค่อนข้างใหม่ในทีมผู้พัฒนาของเรา ฉันต้องการข้อโต้แย้งที่รัดกุมและ / หรือตัวอย่าง "หลุมพราง" ดังนั้นในที่สุดเจ้านายของฉันจะเข้าใจถึงข้อดีของ Unobtrusive JavaScript เพื่อให้เขาและคนอื่น ๆ ในทีมหยุดทำสิ่งนี้: <input type="button" class="bow-chicka-wow-wow" onclick="send_some_ajax(); return false;" value="click me..." /> และ <script type="text/javascript"> function send_some_ajax() { // bunch of code ... BUT using jQuery !!! } </script> ฉันแนะนำให้ใช้ลวดลายธรรมดา: <button id="ajaxer" type="button">click me...</button> และ <script type="text/javascript"> // since #ajaxer is also …

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

1
มารยาทที่เหมาะสมคืออะไรและแนะนำเวิร์กโฟลว์ GitHub สำหรับการมีส่วนร่วมและเบี่ยงเบนไปจาก repo ต้นน้ำพร้อมกันหรือไม่
ฉันใหม่กับ GitHub และ VCS โดยทั่วไป ฉันเขียนโปรแกรมในหลายภาษามาหลายปีแล้ว แต่ฉันก็ทำงานเดี่ยวในโครงการที่กำหนดเอง (ไม่มีการเผยแพร่สาธารณะ) ฉันเพิ่งเริ่มใช้วิดเจ็ต jQuery UI ที่ฉันดาวน์โหลดจาก GitHub ในโครงการที่ฉันกำลังทำงานอยู่ repo ไม่ได้รับการบำรุงรักษาโดยผู้เขียนดั้งเดิมอีกต่อไป ส้อมอื่นได้รวมคำขอดึงต้นฉบับไว้บางส่วน นี่คือสิ่งที่ฉันแยกออกมา ฉันพบข้อผิดพลาดสองสามข้อและเกิดขึ้นกับการแก้ไขสำหรับพวกเขา ฉันต้องการสนับสนุนการแก้ไขเหล่านี้ แต่ฉันยังมีการเปลี่ยนแปลงอื่น ๆ อีกมากมายที่ฉันต้องการสำหรับการใช้งานของเราเองซึ่งจะทำให้คุณสมบัติที่มีอยู่บางส่วนเสียหาย นอกจากนี้ฉันต้องการรวมแนวคิดจากทางแยกอื่น ฉันยังคงเรียนรู้ GIT และ GitHub และฉันพยายามหาวิธีที่ดีที่สุดในการทำทุกสิ่ง ฉันได้อ่านมาก (ที่นี่, SO, GitHub หน้าช่วยเหลือ, Pro Git) เกี่ยวกับแนวคิด / ภารกิจต่าง ๆ : เวิร์กโฟลว์, การรวม, ดึงคำขอ, การเลือกเชอร์รี่, การรีบูต, การแตกแขนง สสารสีเทาของฉันคือว่ายน้ำและฉันต้องเริ่มทำเพื่อให้ฉันสามารถเข้าใจสิ่งที่ฉันได้อ่าน ประเด็นหลัก: ฉันคิดว่าฉันอ่าน …

3
คนจะกำหนดข้อกำหนดขั้นต่ำของฮาร์ดแวร์สำหรับซอฟต์แวร์ได้อย่างไร
คนจะกำหนดข้อกำหนดขั้นต่ำของฮาร์ดแวร์สำหรับซอฟต์แวร์ได้อย่างไร ตัวอย่างเช่น บริษัท พัฒนาซอฟต์แวร์จะบอกลูกค้าได้อย่างไรว่าพวกเขาจะต้องใช้ RAM 8 GB ในการรันโปรแกรมอย่างถูกต้อง

5
ทุกหมายเลขในรหัสถือเป็น“ หมายเลขวิเศษ” หรือไม่
ดังนั้นทุกหมายเลขในรหัสที่เราส่งไปยังเมธอดในขณะที่อาร์กิวเมนต์ถือเป็น Magic Number? สำหรับฉันมันไม่ควร ฉันคิดว่าถ้ามีบางหมายเลขสมมติว่ามันเป็นความยาวขั้นต่ำของชื่อผู้ใช้และเราเริ่มใช้ "6" ในรหัส ... ใช่แล้วเรามีปัญหาการบำรุงรักษาและที่นี่ "6" เป็นหมายเลขมายากล .... แต่ ถ้าเรากำลังเรียกใช้เมธอดที่หนึ่งในข้อโต้แย้งยอมรับจำนวนเต็มเช่นสมาชิก ith ของคอลเลกชันและจากนั้นเราจะส่ง "0" ไปยังการเรียกเมธอดนั้นในกรณีนี้ฉันไม่เห็นว่า "0" เป็นเวทย์มนตร์ จำนวน. คุณคิดอย่างไร?

5
มีใบอนุญาต LGPL ที่แก้ไขแล้วซึ่งอนุญาตให้มีการเชื่อมโยงแบบสแตติก
LGPLต้องการให้ใช้หากโปรแกรมใช้ไลบรารี LGPL-ed ผู้ใช้จะต้องสามารถเชื่อมโยงโปรแกรมกับไลบรารีเวอร์ชันอื่น: ... d) ทำสิ่งใดสิ่งหนึ่งต่อไปนี้: 0) สื่อความหมายแหล่งที่มาที่น้อยที่สุดภายใต้เงื่อนไขของใบอนุญาตนี้และรหัสแอปพลิเคชันที่สอดคล้องกันในรูปแบบที่เหมาะสมสำหรับและภายใต้ข้อกำหนดที่อนุญาตให้ผู้ใช้สามารถรวมกันอีกครั้งหรือเชื่อมโยงแอปพลิเคชัน Combined Work ในลักษณะที่ระบุไว้ในส่วนที่ 6 ของ GNU GPL สำหรับถ่ายทอดแหล่งที่เกี่ยวข้อง 1) ใช้กลไกไลบรารีแบบแบ่งใช้ที่เหมาะสมสำหรับการลิงก์กับไลบรารี กลไกที่เหมาะสมคือกลไกหนึ่งที่ (a) ใช้งาน ณ เวลาที่สำเนาของ Library มีอยู่แล้วในระบบคอมพิวเตอร์ของผู้ใช้และ (b) จะทำงานอย่างถูกต้องกับ Library รุ่นที่แก้ไขซึ่งสามารถใช้งานร่วมกับรุ่นที่เชื่อมโยงได้ ... อย่างไรก็ตามในบางกรณีอาจทำให้เกิดปัญหาได้ โดยเฉพาะอย่างยิ่งโปรแกรม Haskell จะถูกรวบรวมแบบคงที่เกือบตลอดเวลา ยิ่งไปกว่านั้นคอมไพเลอร์ทำการปรับข้ามโมดูลให้เหมาะสมดังนั้นจึงเป็นไปไม่ได้ที่จะมีส่วนร่วมของโค้ดและแทนที่ด้วยโค้ดอื่น ดังนั้นจึงเป็นเรื่องยากมากที่จะตอบสนองเงื่อนไขนี้ (ดูลิงค์นี้ที่ Haskell Wiki) การเชื่อมโยงแบบไดนามิกจะเป็นวิธีแก้ปัญหา แต่ในหลายกรณีไม่สามารถทำได้ ตัวอย่างเช่น: บางแพลตฟอร์มอาจไม่มีการเชื่อมโยงแบบไดนามิกเลย บางภาษาไม่มีความเป็นไปได้ของการเชื่อมโยงแบบไดนามิก หรือไม่สามารถสร้างโมดูลหลายแพลตฟอร์มได้ ในบางกรณีการเชื่อมโยงแบบไดนามิกจะป้องกันการเพิ่มประสิทธิภาพที่สำคัญ แม้ว่าฉันจะบอกว่านี่เป็นปัญหาร้ายแรง แต่ในภาษาอย่าง Haskell การสูญเสียประสิทธิภาพอาจมีความสำคัญ …

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

6
ใช้คลาสสาธารณะที่ซ้อนกันเพื่อจัดระเบียบค่าคงที่
ฉันกำลังทำงานกับแอปพลิเคชันที่มีค่าคงที่จำนวนมาก ในการตรวจสอบโค้ดครั้งล่าสุดพบว่าค่าคงที่กระจัดกระจายเกินไปและควรจัดเป็นไฟล์ค่าคงที่ "มาสเตอร์" ไฟล์เดียว ความขัดแย้งเกี่ยวกับวิธีการจัดระเบียบพวกเขา คนส่วนใหญ่รู้สึกว่าการใช้ชื่อคงที่ควรจะดีพอ แต่สิ่งนี้จะนำไปสู่โค้ดที่มีลักษณะดังนี้: public static final String CREDITCARD_ACTION_SUBMITDATA = "6767"; public static final String CREDITCARD_UIFIELDID_CARDHOLDER_NAME = "3959854"; public static final String CREDITCARD_UIFIELDID_EXPIRY_MONTH = "3524"; public static final String CREDITCARD_UIFIELDID_ACCOUNT_ID = "3524"; ... public static final String BANKPAYMENT_UIFIELDID_ACCOUNT_ID = "9987"; ฉันพบว่าการตั้งชื่อประเภทนี้ยุ่งยาก ฉันคิดว่าการใช้คลาสที่ซ้อนกันในที่สาธารณะอาจทำได้ง่ายกว่าและมีบางอย่างเช่นนี้: public class IntegrationSystemConstants { public …

7
เว็บแอปพลิเคชันเป็นไคลเอนต์ REST API: วิธีจัดการตัวระบุทรัพยากร
แนวคิดหลายอย่างที่เกี่ยวข้องกับความขัดแย้ง REST ในหัวของฉันเมื่อฉันลองใช้มัน ฉันมี REST-ful back-end API ระบบที่เก็บตรรกะทางธุรกิจและเว็บแอปพลิเคชันที่มี UI จากแหล่งข้อมูลต่างๆเกี่ยวกับ REST (โดยเฉพาะอย่างยิ่งส่วนที่เหลือในการปฏิบัติ: Hypermedia และระบบสถาปัตยกรรม ) ฉันรู้ว่าฉันไม่ควรเปิดเผยตัวระบุดิบของหน่วยงานของฉัน rel="self"แต่กลับเชื่อมโยงหลายมิติด้วย พิจารณาตัวอย่าง REST api มีทรัพยากรที่ส่งคืนบุคคล: <Person> <Links> <Link rel="self" href="http://my.rest.api/api/person/1234"/> </Links> <Pets> <Link rel="pet" href="http://my.rest.api/api/pet/678"/> </Pets> </Person> ปัญหาเกิดขึ้นกับเว็บแอปพลิเคชัน สมมติว่ามันส่งคืนหน้าเว็บที่มีไฮเปอร์ลิงก์ไปยังเบราว์เซอร์: <body class="person"> <p> <a href="http://my.web.app/pet/???????" /> </p> </body> ฉันควรใส่hrefคุณลักษณะอะไร ฉันจะเก็บ URL เอนทิตี API ไว้ในเว็บแอปพลิเคชันเพื่อให้สามารถรับเอนทิตีได้เมื่อผู้ใช้เปิดหน้าเป้าหมายได้อย่างไร ข้อกำหนดดูเหมือนขัดแย้งกัน: …

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

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