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

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

1
บางคนสามารถอธิบายขั้นตอน V Model ได้หรือไม่ ทำไมมันถึงแตกต่างจากรุ่น Waterfall?
ดูเหมือนว่ารูปแบบ V เป็นเพียงรูปแบบของน้ำตกที่มีครึ่งล่างของน้ำตกงอขึ้นไปเป็นรูปแบบ V ฉันไม่เห็นว่ามันจะเพิ่มอะไรใหม่ จากแผนภาพฉันไม่เข้าใจการไหล มีลูกศรชี้ไปทุกทิศทุกทางและฉันไม่เข้าใจสิ่งที่เกิดขึ้นก่อน เราติดตาม V จากด้านซ้ายบนลงไปที่กึ่งกลางด้านล่างจากนั้นกลับสู่ด้านบนขวาหรือไม่? หรือว่าเราจะก้าวหน้าไปในทางที่ V ทำทุกอย่างให้สูงขึ้นก่อนที่สินค้าจะต่ำลง อินเทอร์เน็ตขาดคำอธิบายที่เพียงพอของรุ่นนี้ มันจะยอดเยี่ยมถ้ามีใครสามารถอธิบายได้ในรูปแบบ StackExchange จริง :)

4
ทำให้วิธีการที่ไม่ขึ้นอยู่กับเขตข้อมูลอินสแตนซ์คงที่?
เมื่อเร็ว ๆ นี้ฉันเริ่มเขียนโปรแกรมใน Groovy สำหรับกรอบการทดสอบการรวมสำหรับโครงการ Java ฉันใช้ Intellij IDEA กับปลั๊กอิน Groovy และฉันรู้สึกประหลาดใจที่เห็นว่าเป็นคำเตือนสำหรับวิธีการทั้งหมดที่ไม่คงที่และไม่ต้องพึ่งพาฟิลด์อินสแตนซ์ใด ๆ ใน Java อย่างไรก็ตามนี่ไม่ใช่ปัญหา (อย่างน้อยจากมุมมองของ IDE) วิธีการทั้งหมดที่ไม่ได้ขึ้นอยู่กับเขตข้อมูลอินสแตนซ์ใด ๆ ควรถูกเปลี่ยนเป็นฟังก์ชันแบบคงที่หรือไม่? ถ้าเป็นจริงจะมีเฉพาะกับ Groovy หรือเป็น OOP โดยทั่วไปหรือไม่ และทำไม?

2
วิธีที่ดีที่สุดในการจัดโครงสร้างที่เก็บ Git สำหรับ Maven
ฉันต้องการคำแนะนำเกี่ยวกับวิธีการจัดโครงสร้างโครงการของเราใน Git เราใช้ Java และ Maven เป็นเครื่องมือสร้างของเรา Maven kinda ถือว่าโครงการทั้งหมดของคุณมีบรรพบุรุษร่วมกันในที่สุด Maven ยังสามารถเป็นราชินีละครจริงเมื่อสิ่งที่ไม่ติดตั้งตรงทาง Apache ชุดมูลนิธิโครงการของพวกเขา (ทุกคนที่ใช้ปล่อยปลั๊กอินอาจจะรู้ว่าสิ่งที่ผมพูดถึง) เราต้องการ pom พาเรนต์ระดับบนสุดที่ควบคุมเวอร์ชันของปลั๊กอินและสร้างการกำหนดค่า (การกำหนดค่า repo สิ่งที่จะสร้างการตั้งชื่ออนุสัญญารุ่นของปลั๊กอิน ฯลฯ ) Maven ต้องการให้โครงการไอทีทั้งหมดของเราอยู่ในโฟลเดอร์ย่อยของโครงการหลักนั้น นี่หมายถึง repo Git ขนาดใหญ่หนึ่งรายการสำหรับองค์กร สิ่งนี้จะทำให้สภาพแวดล้อมที่มีเสียงดังมาก หากมีสองทีมที่ทำงานในโครงการที่ไม่เกี่ยวข้องพวกเขาจะต้องดึงการรวมตัวของทีมอื่นอย่างต่อเนื่อง ฉันอยากได้ repo หนึ่งต่อโครงการ แต่การปะทะแบบนั้นกับโมเดลลำดับขั้นสุดยอดของ Maven ซึ่งต้องการโครงการย่อยเป็นโฟลเดอร์ย่อย ฉันต้องการคำแนะนำเกี่ยวกับวิธีที่ผู้คนคืนดีแบบจำลองทั้งสองนี้ ... ขอบคุณ!

4
ทำความเข้าใจกับกรอบสแต็คของการเรียกใช้ฟังก์ชันใน C / C ++ หรือไม่
ฉันกำลังพยายามที่จะเข้าใจว่าสแต็คเฟรมถูกสร้างขึ้นและตัวแปรใด (params) ถูกผลักไปยังสแต็กตามลำดับ ผลลัพธ์การค้นหาบางรายการแสดงว่าคอมไพเลอร์ C / C ++ ตัดสินใจตามการดำเนินการที่ดำเนินการภายในฟังก์ชั่น ตัวอย่างเช่นถ้าฟังก์ชั่นควรจะเพิ่มค่าการส่งผ่านโดย 1 (คล้ายกับตัวดำเนินการ ++) และส่งกลับมันจะทำให้พารามิเตอร์ทั้งหมดของฟังก์ชั่นและตัวแปรท้องถิ่นในการลงทะเบียน ฉันสงสัยว่าจะใช้รีจิสเตอร์ใดสำหรับพารามิเตอร์ส่งคืนหรือส่งผ่านตามค่า การอ้างอิงถูกส่งคืนอย่างไร คอมไพเลอร์เลือกระหว่าง eax, ebx, ecx และ edx อย่างไร ฉันต้องทราบอะไรบ้างในการทำความเข้าใจวิธีการลงทะเบียนการอ้างอิงสแต็คและฮีปที่ใช้สร้างและทำลายระหว่างการเรียกใช้ฟังก์ชัน
19 c++  c  compiler  stack 

4
ทำไมเราต้องการคำหลัก async
ฉันเพิ่งเริ่มเล่นกับ async / คอยใน. Net 4.5 สิ่งหนึ่งที่ฉันอยากรู้ในตอนแรกว่าทำไมคำหลัก async จึงจำเป็น คำอธิบายที่ฉันอ่านคือมันเป็นเครื่องหมายเพื่อให้คอมไพเลอร์รู้วิธีการรอบางสิ่งบางอย่าง แต่ดูเหมือนว่าคอมไพเลอร์ควรจะสามารถเข้าใจสิ่งนี้ได้โดยไม่มีคำ แล้วมันทำอะไรได้อีก?
19 c#  .net 

7
ฉันควรสร้างอินเตอร์เฟสสำหรับวัตถุการถ่ายโอนข้อมูลหรือไม่
มันเป็นความคิดที่ดีหรือเป็นความคิดที่ดีที่จะสร้างส่วนต่อประสานสำหรับการถ่ายโอนข้อมูลวัตถุ? สมมติว่าวัตถุนั้นมักจะไม่แน่นอน แม้ว่าตัวอย่างของฉันจะเป็นภาษาจาวา แต่ก็ควรใช้กับภาษาอื่นที่มีแนวคิดคล้ายกัน interface DataTransferObject { String getName(); void setName(String name); } class RealDataTransferObject implements DataTransferObject { String name; String getName() { return name; } void setName(String name) { this.name = name; } } แน่นอนว่านี่เป็นตัวอย่างที่ง่ายในชีวิตจริงอาจมีหลายสาขา

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

6
ฉันต้องการกรอบการทดสอบหน่วยจริงหรือไม่?
ปัจจุบันที่งานของฉันเรามีชุดทดสอบหน่วยใหญ่สำหรับแอปพลิเคชัน C ++ ของเรา อย่างไรก็ตามเราไม่ใช้กรอบการทดสอบหน่วย พวกเขาใช้ประโยชน์จากแมโคร C ซึ่งโดยทั่วไปแล้วจะเป็นการห่อคำยืนยันและหมวก สิ่งที่ต้องการ: VERIFY(cond) if (!(cond)) {std::cout << "unit test failed at " << __FILE__ << "," << __LINE__; asserst(false)} จากนั้นเราก็สร้างฟังก์ชั่นสำหรับการทดสอบแต่ละแบบของเราเช่น void CheckBehaviorYWhenXHappens() { // a bunch of code to run the test // VERIFY(blah != blah2); // more VERIFY's as needed } เซิร์ฟเวอร์ …

8
C ++ ให้เพื่อนหรือไม่ให้เพื่อน
ฉันมีการเขียนโปรแกรมเชิงวัตถุด้วยหลักสูตร c ++ ภาคการศึกษานี้ที่วิทยาลัยและเราได้เรียนรู้เกี่ยวกับฟังก์ชั่นเพื่อน ฉันไม่ชอบพวกเขาโดยสัญชาตญาณเพราะความสามารถในการหลีกเลี่ยงความปลอดภัยที่ Encapsulation และ Data ซ่อนไว้ฉันอ่านบทความสองสามเรื่องบนอินเทอร์เน็ตและบางคนคิดว่ามันเป็นความคิดที่ดีที่มีการใช้งานที่ถูกกฎหมาย ผู้เชี่ยวชาญ OOP จะพูดอย่างไรเกี่ยวกับเพื่อน fucntions ใน C ++ ฉันควรอ่านอย่างคร่าวๆหรือควรเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้หรือไม่

4
ทำไมภาษาส่วนใหญ่จึงให้ min-heap แทนที่จะใช้ max-heap
ฉันเพิ่งสังเกตเห็นบางสิ่งบางอย่างและฉันสงสัยว่ามีเหตุผลใดที่ ยกเว้น C ++ (std :: priority_queue เป็น max heap) ฉันไม่รู้ภาษาอื่นที่ให้ heap สูงสุด โมดูล heapq ของ Python ใช้ min-heap แบบไบนารีที่ด้านบนของรายการ ไลบรารีของ Java มีคลาส PriorityQueue ซึ่งใช้ขั้นต่ำลำดับความสำคัญคิว ไลบรารีของ Go ประกอบด้วยโมดูล container / heap ซึ่งใช้ min-heap ที่อยู่ด้านบนของโครงสร้างข้อมูลที่เข้ากันได้ เฟรมเวิร์กหลักของ Apple ประกอบด้วยโครงสร้าง CFBinaryHeap ซึ่งใช้ min-heap ฉันพบว่า max-heap ใช้งานง่ายกว่า min-heap และฉันเชื่อว่าในทางเทคนิคแล้วความแตกต่างในการใช้งานเป็นเพียงคำถามของการเปลี่ยนโอเปอเรเตอร์เปรียบเทียบ มีเหตุผลจริงหรือไม่? แอปพลิเคชันส่วนใหญ่ต้องการนาทีแทนที่จะเป็นฮีปสูงสุดหรือไม่ ขอบคุณล่วงหน้า

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

6
เราจะเขียนใบอนุญาต 'No Evil' ใหม่เพื่อให้เป็น 'ฟรี' ได้อย่างไร
ฉันไม่พบเว็บไซต์ SE ของนักกฎหมายดังนั้นฉันคิดว่าควรโพสต์ที่นี่ /* * ...subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * The Software shall be used for Good, not Evil. * * THE SOFTWARE IS PROVIDED …

17
ทำไมเราทุกคนถึงไม่พัฒนาแบบจำลองที่ขับเคลื่อนด้วยล่ะ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันเป็นผู้ศรัทธาอย่างแท้จริงในการพัฒนาแบบขับเคลื่อนฉันคิดว่ามันมีความเป็นไปได้ที่จะเพิ่มผลผลิตคุณภาพและการคาดการณ์ได้ เมื่อดูที่MetaEditผลลัพธ์นั้นน่าทึ่ง Mendixในเนเธอร์แลนด์เติบโตเร็วมากและให้ผลลัพธ์ที่ยอดเยี่ยม ฉันก็รู้ว่ามีปัญหามากมาย การกำหนดเวอร์ชันของเครื่องกำเนิดแม่แบบและกรอบงาน โครงการที่ไม่เหมาะสมสำหรับการพัฒนาแบบจำลอง (การทำซ้ำไม่เพียงพอ) ความเสี่ยงที่สูงขึ้น (เมื่อโครงการแรกล้มเหลวคุณมีผลลัพธ์น้อยกว่าที่คุณมีกับการพัฒนาแบบดั้งเดิมมากขึ้น) ฯลฯ แต่ถึงกระนั้นปัญหาเหล่านี้ก็ดูเหมือนจะแก้ไขได้และผลประโยชน์ควรมีมากกว่าความพยายามที่จำเป็น คำถาม : อะไรที่คุณเห็นว่าเป็นปัญหาที่ใหญ่ที่สุดที่ทำให้คุณไม่ได้พิจารณาการพัฒนาแบบจำลอง? ฉันต้องการใช้คำตอบเหล่านี้ไม่เพียง แต่เพื่อความเข้าใจของตัวเอง แต่ยังเป็นแหล่งข้อมูลที่เป็นไปได้สำหรับชุดบทความภายในที่ฉันวางแผนจะเขียน

4
มีการใช้พอยน์เตอร์ใน C # จริงหรือไม่ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา สถานการณ์ในขณะที่เขียนโค้ดใน C # เมื่อใช้พอยน์เตอร์เป็นตัวเลือกที่ดีหรือจำเป็นคืออะไร ฉันกำลังพูดถึงพอยน์เตอร์ที่ไม่ปลอดภัย
19 c#  pointers 

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

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