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

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

10
การแปลงรหัส Fortran 77 เป็น C #
ฉันพยายามแปลงโปรแกรม Fortan77 เป็น C # ฉันมีรูทีนย่อยที่มีโค้ดประมาณ 650 บรรทัดและคำสั่ง GOTO ที่น่ากลัวทั่วทุกที่ ฉันมีปัญหามากมายแม้กระทั่งเริ่มเห็นภาพการไหลของรูทีนย่อยเพื่อหาว่ามันทำอะไร มีใครบ้างไหมที่มีประสบการณ์ในสิ่งนี้ที่สามารถให้คำแนะนำกับฉันเกี่ยวกับวิธีรับภาพรวมของรูทีนย่อยนี้ มีเครื่องมือบางอย่างที่สามารถเพิ่มความเร็วหรืออำนวยความสะดวกในการแปลงประเภทนี้หรือไม่?
14 c#  fortran 

13
M ใน MVC อยู่ที่ไหน
ฉันพยายาม refactor ใบสมัครของฉันเป็น MVC แต่ฉันติดอยู่ที่ส่วน M ในแอปที่มีฐานข้อมูลสำรองโมเดลจะถูกนำไปใช้ในรหัสแอปใช่ไหม แต่แล้วอะไรคือสิ่งที่อยู่ในฐานข้อมูล - นั่นไม่ใช่แบบจำลองหรือไม่ (ฉันไม่ได้ใช้ฐานข้อมูลเป็นที่เก็บวัตถุแบบง่าย - ข้อมูลในฐานข้อมูลเป็นสินทรัพย์ขององค์กร)

3
วิธีเขียนโค้ดที่จัดการได้ด้วยฟังก์ชั่นการเขียนโปรแกรม?
ฉันเพิ่งเริ่มต้นด้วยฟังก์ชั่นการเขียนโปรแกรม (กับ JavaScript และ Node.js) และจากลักษณะของสิ่งที่ดูเหมือนว่ารหัสที่ฉันเขียนจะกลายเป็นนรกหนึ่งของรหัสฐานในการจัดการเมื่อเทียบกับภาษาโปรแกรมที่มี ประเภทของกระบวนทัศน์เชิงวัตถุ ด้วย OOP ฉันคุ้นเคยกับแนวทางปฏิบัติที่จะช่วยให้มั่นใจว่าโค้ดของคุณได้รับการจัดการและขยายได้อย่างง่ายดาย แต่ฉันไม่แน่ใจว่าของการประชุมที่คล้ายกันกับการเขียนโปรแกรมการทำงาน

4
การกำหนดความสำคัญมาก่อนในตัวชี้ C คืออะไร
ฉันเจอข้อความประกาศสองฉบับที่ฉันมีปัญหาในการทำความเข้าใจ ความเข้าใจของฉันเกี่ยวกับกฎสำคัญกว่ามีดังนี้: Operator Precedence Associativity (), [ ] 1 Left to Right *, identifier 2 Right to Left Data type 3 แต่แม้จะได้รับสิ่งนี้ฉันไม่สามารถหาวิธีประเมินตัวอย่างต่อไปนี้ได้อย่างถูกต้อง: ตัวอย่างแรก float * (* (*ptr)(int))(double **,char c) การประเมินของฉัน: *(ptr) (int) *(*ptr)(int) *(*(*ptr)(int)) จากนั้น double ** char c ตัวอย่างที่สอง unsigned **( * (*ptr) [5] ) (char const *,int *) …
14 c  pointers 

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

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

5
Ant ยังอยู่ใน“ กระแสหลัก” สำหรับ Java หรือไม่?
เราได้เปลี่ยนไฟล์คำสั่งแบทช์อย่างช้า ๆ (windows .bat) ซึ่งเป็นคลาสที่รวบรวมใน IDE สำหรับนักพัฒนาพร้อมกับ Ant builds ที่ครอบคลุมมากขึ้น (เช่นได้รับจาก CVS, คอมไพล์สะอาด, เก็บถาวร, อีเมล, ฯลฯ ) ฉันใช้เวลาเรียนรู้มากมาย (และแก้จุดบกพร่องปัญหา) กับ Ant ดังนั้นฉันจึงสบายใจที่จะใช้มันสำหรับงานเหล่านี้ แต่ฉันสงสัยว่ามดยังคงใช้งานได้อย่างกว้างขวางเหมือนเดิมเมื่อฉันเริ่มเรียนรู้หรือไม่ว่า "โลกได้ก้าวต่อไป" กับสิ่งใหม่กว่า (และอาจสั่นไหว) (ฉันเริ่มเห็น Maven build สิ่งของกระจายมากขึ้นซึ่งฉันไม่เคยใช้มาก่อน) การนำเข้าคำถามนี้จริง ๆ แล้วฉันจะผลักนักพัฒนาใหม่เพื่อเรียนรู้ Antหรือไม่หรือพวกเขาควรจะเรียนรู้สิ่งอื่นเพื่อการสร้างหรือไม่ ฉันไม่เคยอยู่บนแนวโน้มเช่นกันดังนั้นจึงเป็นเรื่องดีที่จะได้ยินจากนักพัฒนา Java คนอื่น ๆ สิ่งที่พวกเขาคิดว่าเป็นเครื่องมือสร้างที่ดีที่สุดและสิ่งที่พวกเขาคิดว่านักพัฒนาใหม่ควรเรียนรู้
14 java  training  maven  builds  ant 

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

1
Windows เป็น“ พลเมืองชั้นสอง” ในชุมชน Django หรือไม่?
ขณะนี้ฉันกำลังทำ R&D สำหรับเว็บแอปพลิเคชันซึ่งเราวางแผนที่จะโฮสต์ในตอนแรกและจากนั้นให้ลูกค้าโฮสต์ด้วยตัวเอง งานของฉันได้รับการประเมินกรอบเว็บเพื่อดูว่าจะให้ผลผลิตที่ใหญ่ที่สุดในตอนแรกและความง่ายในการบำรุงรักษาในขณะที่ช่วยให้เราสามารถสนับสนุนการปรับใช้กับสภาพแวดล้อมที่ควบคุมโดยลูกค้าได้อย่างง่ายดาย ทีมงานของเรามีประสบการณ์กับ ASP.NET (MVC และ Webforms) และ Ruby on Rails ประสบการณ์ของเรากับ Rails คือการปรับใช้ Windows เป็นเรื่องต้องห้ามอย่างมากและคำถามใด ๆ เกี่ยวกับ IRC หรือ StackOverflow จะได้รับการตอบสนองด้วยการกระตุกเข่า อย่างไรก็ตามในกรณีนี้ตลาดเป้าหมายของเราอาจใช้เซิร์ฟเวอร์ windows หรือ Linux นี่เป็นกรณีในดินแดน Django หรือไม่? เป็นไปได้หรือไม่กับสมรรถนะขยะ? เป็นไปได้ไหมที่จะสูญเสียความเจ็บปวด? เห็นว่าสมเหตุสมผลและไม่ถือเป็นความคิดที่โง่อย่างสิ้นเชิงที่ไม่ต้องการรัน Linux หรือไม่?

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

5
เหตุใดฉันจึงเห็นโครงสร้าง (;;) มากมาย [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา สำหรับวิธีคิดของฉัน a สำหรับลูปถูกใช้เพื่อวนซ้ำในช่วงที่รู้จักหรือกำหนดได้ String[] names = //something; for ( int i = 0; i < names.length; i++ ) { //do stuff } ซึ่งเทียบเท่า (การกำหนดขอบเขตของฉันออกไป) เพื่อ: String[] names = //something; int i = 0; while (i < names.length ) { // do stuff …

3
มันเป็นวิธีปฏิบัติที่ดีตั้งค่าสตริงการเชื่อมต่อในการตั้งค่าเว็บ?
เมื่อเร็ว ๆ นี้ฉันได้พูดคุยกับเพื่อนร่วมงานบางคนในที่ทำงานของฉันเพราะพวกเขาบอกว่าควรมีการเข้ารหัสการเชื่อมต่อสตริงที่ดีกว่า และฉันบอกว่าทำไมไม่ใช้การเชื่อมต่อสตริงที่กำหนดไว้ใน web.config เข้ารหัส? มันเหมือนกันและดีกว่าเพราะเอนทิตี้ของเฟรมเวิร์กตัวอย่างเช่นค้นหาชื่อของการเชื่อมต่อในเว็บ config ของแอพพลิเคชั่นตอนนี้ฉันอยากรู้จากจุดรักษาความปลอดภัยว่าอะไรดีกว่า

3
จุดประสงค์ของการตั้งชื่อแพ็คเกจของ Java คืออะไร?
ฉันไม่เข้าใจว่าทำไม Java จึงใช้ชื่อโดเมน (อาจเป็นสมมุติฐาน) กลับด้านในขณะที่ส่วนใหญ่ไม่มีการเชื่อมต่อระหว่างชื่อโดเมนที่บางคนใช้และผลิตภัณฑ์ที่พวกเขามี นักพัฒนาจำนวนมากไม่มีแม้แต่โดเมนใด ๆ อะไรคือสาเหตุของอนุสัญญาการตั้งชื่อนี้ถ้ามี?
14 java  packages 

3
ความแตกต่างระหว่างไวยากรณ์และไวยากรณ์คืออะไร?
ฉันเข้าใจความแตกต่างระหว่างไวยากรณ์และความหมาย - ไวยากรณ์ : วิธีรวมสัญลักษณ์ต่างๆเพื่อสร้างนิพจน์หรือคำสั่งที่ถูกต้อง ซีแมนทิกส์ : ความหมายของสัญลักษณ์เหล่านั้นที่มีการแสดงออก แต่ไวยากรณ์คืออะไร ตัวอย่างเช่น: บางครั้งฉันได้ยินคนพูดว่าโครงสร้างบางอย่างนั้น "ไม่ถูกต้องตามหลักไวยากรณ์ แต่ syntactically มันถูกต้อง" มันหมายความว่าอะไร?

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

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