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

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

3
ฉันสามารถใช้ไลบรารีโอเพนซอร์ซอย่างปลอดภัยในโครงการโอเพ่นซอร์สภายในได้หรือไม่
ฉันคิดว่าจะใช้ iTextSharp ซึ่งได้รับอนุญาตภายใต้ Affero GPL ในโครงการ WinForms แบบปิดภายใน ไม่มีใครนอก บริษัท ของฉันจะใช้มัน GPL (และ Affero GPL เช่นกัน) โดยทั่วไปต้องการให้มีการจัดหาแหล่งข้อมูลด้วยไบนารี ระบุว่านี่เป็นโครงการภายในฉันต้องให้รหัสแหล่งที่มาของโครงการแก่พนักงานหรือไม่
21 licensing  gpl  agpl 

7
รหัสฐานขนาดใหญ่ที่ Fortran สามารถบีบอัดให้ทันสมัยได้อย่างไร?
เพื่อนในสถาบันการศึกษาขอคำแนะนำจากฉัน (ฉันเป็นนักพัฒนาแอปพลิเคชันทางธุรกิจ C #) เขามี codebase ดั้งเดิมซึ่งเขาเขียนที่ Fortran ในวงการถ่ายภาพทางการแพทย์ การบีบอัดตัวเลขเป็นจำนวนมากโดยใช้เวกเตอร์ เขาใช้คลัสเตอร์ (30ish cores) และตอนนี้ได้เข้าสู่เวิร์กสเตชันเดียวที่มี 500ish GPUS ในนั้น อย่างไรก็ตามจะไปที่ไหนต่อไปกับ codebase ดังนั้น: คนอื่นสามารถรักษามันไว้ได้ในรอบ 10 ปีถัดไป เร็วขึ้นเมื่อปรับแต่งซอฟต์แวร์ สามารถทำงานบนโครงสร้างพื้นฐานที่แตกต่างกันโดยไม่ต้องคอมไพล์ใหม่ หลังจากการวิจัยจากฉัน (นี่คือพื้นที่ที่น่าสนใจสุด ๆ ) บางตัวเลือกคือ: ใช้ Python และCUDAจากNvidia เขียนซ้ำในภาษาที่ใช้งานได้ ตัวอย่างเช่นF #หรือHaskell ใช้ระบบคลาวด์และใช้บางอย่างเช่นHadoopและ Java เรียนรู้ค ประสบการณ์ของคุณเกี่ยวกับสิ่งนี้คืออะไร? สิ่งที่เพื่อนของฉันควรจะดูเพื่อปรับปรุง codebase ของเขาให้ทันสมัย อัปเดต: ขอบคุณ @ Mark และทุกคนที่ได้ตอบ เหตุผลที่เพื่อนของฉันถามคำถามนี้ก็คือเวลาที่เหมาะสมในระยะเวลาโครงการเพื่อทำการตรวจสอบ การนำผู้ช่วยวิจัยมาให้เร็วขึ้นใน …
21 math  legacy  fortran 

4
พรอมต์ของ JavaScript ยืนยันและแจ้งเตือนว่า“ ล้าสมัย” [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา เมื่อเร็ว ๆ นี้ฉันได้พัฒนาระบบการจัดการผ่านเว็บสำหรับยิม แอพก่อนหน้าของพวกเขาได้รับการพัฒนาใน Visual Basic สำหรับแอพใหม่สคริปต์ส่วนหน้าทั้งหมดใช้ jQuery เซิร์ฟเวอร์กำลังเรียกใช้ PHP และ MySQL ... คุณรู้ไหมว่าสแต็ค el-cheapo linux ทั่วไป อย่างไรก็ตามฉันสงสัยว่าทำไมกล่องโต้ตอบข้อความยืนยันและข้อความแจ้งเตือนของ JavaScript จึงมีการใช้งานอยู่ในปัจจุบัน มีปลั๊กอิน jQuery จำนวนมากสำหรับหน้าต่างโมดัลและข้อความเตือนที่พยายามเลียนแบบบางสิ่งที่ภาษานั้นมีอยู่แล้วและเบราว์เซอร์ทุกตัวจำเป็นต้องสนับสนุนอย่างถูกต้อง การใช้โซลูชันที่ทำด้วยมือหรือใช้ปลั๊กอินนั้นใช้ได้สำหรับรูปแบบที่ซับซ้อนและความต้องการพิเศษ แต่ถ้าคุณเพียงแค่ขอค่าเดียวหรือยืนยันการลบเร็กคอร์ดทำไมคุณถึงเพิ่มค่าใช้จ่ายดังกล่าวลงในเว็บแอปของคุณ นอกจากนี้ iOS และ Android ยังมีกล่องโต้ตอบข้อความที่ปรับเปลี่ยนได้อย่างดีเมื่อคุณใช้พรอมต์, ยืนยันและแจ้งเตือน

2
ความแตกต่างระหว่าง Handler, Manager และ Controller
มีความแตกต่างระหว่างการตั้งชื่อคลาส "Handler", "Manager" หรือ "Controller" หรือไม่? PurchaseManagerIE: PurchaseHandler, PurchaseController, ความพอเพียงเหล่านี้ถ่ายทอดความหมายเดียวกันหรือมีความแตกต่างอย่างชัดเจนระหว่างพวกเขาหรือไม่? หากไม่มีคำตอบที่ไม่เชื่อเรื่องภาษาให้พิจารณา Java เป็นภาษา
21 java  naming 

14
ขาดความสนใจในการเขียนโปรแกรม [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 8 ปีที่ผ่านมา ฉันเป็นนักเรียนวิทยาศาสตร์คอมพิวเตอร์ในปีที่ 2 ของฉันในระดับปริญญาตรี ปัญหาของฉันค่อนข้างตรงไปตรงมา แต่ก็ยังไม่สามารถแก้ไขได้ด้วยตนเอง เป็นเพียงว่าฉันเหนื่อยกับการเขียนโปรแกรม ฉันไม่รู้ว่าทำไม แต่มันเพิ่งเกิดขึ้น เมื่อฉันเริ่มหลักสูตรแรกของฉันใน c ++ ฉันรู้สึกตื่นเต้นมาก ตื่นเต้นมากที่ฉันจบหนังสือ c ++ หนักสองเล่มภายใน 2 เดือนและเป็นวิธีที่นำหน้าชั้นเรียนและความคาดหวังของฉันเอง มันเป็นเหมือนที่ฉันสามารถพัฒนาอัลกอริทึมและรหัสได้อย่างง่ายดาย ฉันสำรวจ C ++ เป็นจำนวนมาก แต่สำหรับ 2 ภาคการศึกษาที่ผ่านมาฉันไม่ค่อยเข้าโปรแกรมและฉันได้สูญเสียความสนใจหรือความหลงใหลในเรื่องนี้ไปมาก ฉันรักการเขียนโปรแกรมเช่นกันระดับ CS ของฉัน แต่ฉันก็ไม่สามารถตั้งค่าได้ กรุณาบอกฉันว่าจะทำอย่างไร? …
21 motivation 

9
เมื่อใดที่คุณควรใช้คลาสส่วนตัว / ชั้นใน
เพื่อชี้แจงสิ่งที่ฉันถามคือ public class A{ private/*or public*/ B b; } เมื่อเทียบกับ public class A{ private/*or public*/ class B{ .... } } ฉันสามารถนึกถึงเหตุผลบางอย่างที่จะใช้อย่างใดอย่างหนึ่ง แต่สิ่งที่ฉันอยากจะเห็นคือตัวอย่างที่น่าเชื่อถือที่แสดงให้เห็นว่าข้อดีและข้อเสียไม่ใช่แค่เรื่องวิชาการ


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

2
การฉีดพึ่งพาและวิธีการแบบคงที่
ฉันมีการสนทนาที่น่าสนใจในวันนี้กับผู้พัฒนารายอื่นเกี่ยวกับวิธีการเข้าเรียนด้วยวิธีการที่ยอมรับสตริงและเอาต์พุตสตริง ลองนึกภาพบางสิ่งเช่นสิ่งต่อไปนี้ซึ่งสร้างขึ้นโดยสมบูรณ์เพื่อเป็นตัวอย่าง public string GetStringPart(string input) { //Some input validation which is removed for clarity if(input.Length > 5) return input.Substring(0,1); if(input.Substring(0,1) == "B") return input.Substring(0,3); return string.empty; } ฟังก์ชั่นที่มีตรรกะบางอย่างตามการป้อนสตริงของมันจะถูกเพิ่มเข้าไปในโครงการโดยใช้ DI และมี DI Container ในสถานที่ คุณจะเพิ่มคลาสใหม่นี้ด้วยอินเทอร์เฟซและฉีดเมื่อจำเป็นหรือคุณจะทำให้คลาสคงที่หรือไม่ ข้อดีและข้อเสียของแต่ละข้อคืออะไร? ทำไมคุณ (หรือไม่) ต้องการที่จะทำให้สิ่งนี้ใช้กับการฉีดคอนสตรัคเตอร์แทนที่จะเข้าถึงเมื่อต้องการได้ทุกที่

1
มีรูปแบบที่เป็นทางการที่ดีในการจัดการสถานะใน MVVM หรือไม่?
ฉันเริ่มเรียนรู้เกี่ยวกับ Redux และ React ในเว็บโลกและยิ่งฉันเรียนรู้มากเท่าไหร่ฉันก็ยิ่งรู้ว่าการจัดการสถานะเจ็บปวดในเดสก์ท็อปโลกด้วยสถาปัตยกรรมสไตล์ MVVM ของ WPF (โดยใช้ Caliburn โดยเฉพาะเพื่อผูกมัด Views ไปยัง ViewModels) Redux มีหลักการง่ายๆสองสามข้อที่บอกให้ทราบว่ารัฐควรจัดการอย่างไรการปรับปรุง UI การจัดการเหตุการณ์และการเปลี่ยนแปลงสถานะสามารถคาดการณ์ได้มากขึ้น หลักการคือ: แหล่งความจริงเดียว (สถานะที่ไม่แน่นอนทั้งหมดจะถูกเก็บไว้ในวัตถุที่ใช้ร่วมกันเดียว) สถานะเป็นแบบอ่านอย่างเดียว มันไม่สามารถแก้ไขได้โดยส่วนประกอบผ่านรหัสซึ่งมักจะเกิดขึ้นใน WPF สถานะสามารถแก้ไขได้โดยฟังก์ชันบริสุทธิ์เท่านั้น สถาปัตยกรรม MVVM ของ WPF ช่วยให้คุณสามารถสร้างมุมมองแบบโต้ตอบได้อย่างรวดเร็ว แต่การดีบักปัญหาเมื่อ viewmodels และเหตุการณ์ต่าง ๆ เปลี่ยนสถานะทั้งหมดเป็นฝันร้าย ตัวอย่างเช่นเหตุการณ์ที่ทำให้เกิดการเปลี่ยนแปลงมุมมองและพยายามตั้งค่าแท็บเริ่มต้น แต่ข้อมูลยังไม่เสร็จสิ้นการโหลดแบบอะซิงโครนัสจากเว็บเซอร์วิสดังนั้นแท็บจึงไม่มีอยู่ (ยัง) จึงไม่มีอะไรเกิดขึ้น ฉันใช้เวลาหลายชั่วโมงในการวาดไดอะแกรมเพื่อลองและทำความเข้าใจกับการโต้ตอบที่ซับซ้อนระหว่างองค์ประกอบ viewModels ที่เกี่ยวกับอินเตอร์ที่อัปเดตกัน ฉันเข้าใจว่า Redux ตั้งเป้าหมายที่จะแก้ปัญหาความไม่แน่นอนในเรื่องนี้ มีบางอย่างที่คล้ายกันหรือรูปแบบสถาปัตยกรรมที่เหมาะกับ WPF เพื่อช่วยจัดการสถานะให้ดีขึ้นหรือไม่? ฉันไม่แน่ใจว่าหลักการ Redux …
21 wpf  mvvm  state  redux 

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

2
เหตุใดแพ็คเกจและโมดูลจึงเป็นแนวคิดแยกต่างหากใน Java 9
Java 9 จะมีโมดูลเพิ่มเติมจากแพ็คเกจ ภาษามักจะมีอย่างใดอย่างหนึ่ง และโปรแกรมเมอร์ส่วนใหญ่รับรู้ศัพท์สองคำว่าเป็นคำพ้องความหมาย โมดูลถูกสร้างขึ้นบนบรรจุภัณฑ์โดยถือเป็นโมดูลดั้งเดิม รูปแบบคอมโพสิตแนะนำให้รักษาแบบดั้งเดิมและคอมโพสิตอย่างสม่ำเสมอ สิ่งที่ไม่ดีจะเกิดขึ้น ตัวอย่างเช่นดูโครงการ Valhalla ที่พวกเขาพยายามติดตั้ง supertype ทั่วไปสำหรับประเภทดั้งเดิม (ค่า) และประเภทการอ้างอิง โมดูลและแพคเกจเป็นตัวแทนของความคิดแยกความหมายหรือไม่ หมายความว่ามีเหตุผลที่จะต้องมีทั้งภาษาใด ๆ (แยกความกังวล) หรือ Java จะต้องมีทั้งคู่เป็นส่วยให้เข้ากันได้ย้อนหลัง? ทำไมแนะนำแนวคิดใหม่แทนที่จะเพิ่มแนวคิดที่มีอยู่ JSR 376 : "Java ระบบโมดูลแพลตฟอร์ม" ดำเนินการภายในโครงการจิ๊กซอว์ ตามSOTMS โมดูลคือชุดของโค้ดและข้อมูลที่อธิบายตนเอง รหัสของมันถูกจัดระเบียบเป็นชุดของแพคเกจที่ประกอบด้วยชนิดเช่นคลาส Java และอินเตอร์เฟส ข้อมูลรวมถึงทรัพยากรและข้อมูลคงที่ประเภทอื่น ๆ JLS ระมัดระวังหลีกเลี่ยงการกำหนดสิ่งที่เป็นแพคเกจ จากวิกิพีเดีย : แพคเกจ Java เป็นเทคนิคสำหรับการจัดคลาส Java เป็นเนมสเปซที่คล้ายกับโมดูลของ Modula โดยให้การเขียนโปรแกรมแบบแยกส่วนใน Java ฉันรู้ว่าการอ้างถึงวิกิพีเดียเป็นการปฏิบัติที่ไม่ดี แต่สะท้อนถึงความเข้าใจร่วมกัน …

3
Decoupling คืออะไรและสามารถใช้กับการพัฒนาด้านใดได้บ้าง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเพิ่งสังเกตเห็น decoupling เป็นหัวข้อในคำถามและต้องการทราบว่ามันคืออะไรและสามารถนำไปใช้ได้ที่ไหน โดย "สามารถใช้งานได้ที่ไหน" ฉันหมายถึง: มันเกี่ยวข้องเฉพาะกับภาษาที่คอมไพล์เช่น C และ Java หรือไม่ ฉันควรรู้เกี่ยวกับ / ศึกษามันในฐานะนักพัฒนาเว็บไซต์หรือไม่?

3
@ staticmethod เทียบกับฟังก์ชั่นระดับโมดูล
นี่ไม่เกี่ยวกับ@staticmethodและ@classmethod! ฉันรู้ว่าstaticmethodทำงานอย่างไร สิ่งที่ฉันต้องการทราบคือกรณีการใช้งานที่เหมาะสมสำหรับ@staticmethodvs. ฟังก์ชันระดับโมดูล ฉันได้ลองคำถามนี้และดูเหมือนว่ามีข้อตกลงทั่วไปที่ต้องการฟังก์ชั่นโมดูลในระดับมากกว่าวิธีคงที่เพราะมันเป็นแบบ pythonic วิธีการแบบสแตติกมีข้อได้เปรียบของการถูกผูกไว้กับคลาสของมันซึ่งอาจสมเหตุสมผลถ้าคลาสนั้นใช้เท่านั้น อย่างไรก็ตามในฟังก์ชั่น Python มักจะจัดระเบียบโดยโมดูลไม่ได้เรียนดังนั้นมักจะทำให้ฟังก์ชั่นโมดูลทำให้รู้สึกเกินไป วิธีการแบบสแตติกสามารถแทนที่ได้ด้วยคลาสย่อยซึ่งเป็นข้อดีหรือข้อเสียขึ้นอยู่กับว่าคุณมองอย่างไร แม้ว่าวิธีการแบบสแตติกมักจะ "บริสุทธิ์ตามหน้าที่" ดังนั้นการเอาชนะมันอาจไม่ฉลาด แต่บางครั้งก็สะดวก (แม้ว่านี่อาจเป็นหนึ่งใน "สะดวก แต่ไม่เคยทำ" สิ่งที่มี แต่ประสบการณ์เท่านั้นที่สามารถสอนคุณได้) มีกฎทั่วไปหรือไม่สำหรับการใช้ฟังก์ชั่นสแตติกวิธีการหรือโมดูลระดับ? พวกเขามีข้อดีหรือข้อเสียที่เป็นรูปธรรมใดบ้าง (เช่นส่วนขยายในอนาคตส่วนขยายภายนอกความสามารถในการอ่าน) ถ้าเป็นไปได้ก็ให้ตัวอย่างกรณี
21 python 

1
อะไรคือความแตกต่างระหว่าง I / O ตามแชนเนลและ I / O ตามกระแสในจาวา?
อะไรคือความแตกต่างระหว่างอินพุตตามสตรีมและอินพุตจากแชแนล java API จัดเตรียมทั้งสตรีมในแพ็คเกจ "java.io" และอิงตามแชนเนลในแพ็คเกจ "java.nio" ตัวใดตัวหนึ่งในสองที่มีประสิทธิภาพดีกว่าและลดข้อผิดพลาดในการทำงาน
21 java 

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