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

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

10
RDBMS จะถูกพิจารณาว่าเป็นแฟชั่นได้อย่างไร?
ทำให้คอมพิวเตอร์ A-level ของฉันเสร็จในปี 2003 และได้รับปริญญาทางคอมพิวเตอร์ในปี 2007 และเรียนรู้การค้าของฉันใน บริษัท ที่มีการใช้งาน SQL จำนวนมากฉันถูกนำเสนอแนวคิดของฐานข้อมูลเชิงสัมพันธ์ที่ใช้สำหรับการจัดเก็บ ดังนั้นแม้จะค่อนข้างใหม่ในการพัฒนาฉันก็ประหลาดใจที่จะอ่านความคิดเห็น (บนhttps://softwareengineering.stackexchange.com/q/89994/12436 ) ที่กล่าวว่า: [บาง devs] ดูถูก [SQL] และคิดว่ามันและ RDBMS เป็นแฟชั่น เห็นได้ชัดว่า dev ที่มีความสามารถจะใช้เครื่องมือที่เหมาะสมสำหรับงานที่เหมาะสมและจะไม่สร้างฐานข้อมูลเชิงสัมพันธ์เมื่อเช่นไฟล์ flat หรือโซลูชันอื่นสำหรับการจัดเก็บมีความเหมาะสม แต่ RDBMs มีประโยชน์ในสถานการณ์จำนวนมากดังนั้นพวกเขาจะเป็นอย่างไร ถือว่าเป็นแฟชั่น?

4
เหตุใดเราจึงยังใช้ DOM ในเบราว์เซอร์มากกว่ากระบวนทัศน์เดสก์ท็อป
จากความเข้าใจของฉันเว็บอินเตอร์เฟสได้รับการพัฒนาให้ใช้ HTML เพราะในเวลานั้นมันเป็นไปไม่ได้ที่จะจำลองแอปพลิเคชันสไตล์เดสก์ท็อปในเบราว์เซอร์เช่นวิธีการทำงานของ Silverlight และ Flash เนื่องจากข้อ จำกัด แบนด์วิดท์ ทำไมไม่เคยมีในอดีตและปัจจุบันได้รับการยอมรับมากขึ้นและผลักดันให้เทคโนโลยีเช่น Flash / Silverlight? จากประสบการณ์ของฉันพวกเขายินดีที่จะพัฒนาด้วย (แน่นอนความคิดเห็นของฉัน) และคุณไม่ต้องจัดการกับการปฏิบัติตามเบราว์เซอร์ข้ามและเบราว์เซอร์รุ่นเก่า (ส่วนใหญ่) การจัดการกับ postbacks, AJAX และอื่น ๆ ดูเหมือนจะเป็นความพยายามที่ไม่จำเป็นเป็นพิเศษเมื่อเทียบกับกระบวนทัศน์การพัฒนาของแอปพลิเคชันบนเดสก์ท็อป เทคโนโลยี DOM และคำชมเชยยังคงเติบโตอย่างต่อเนื่องโดยเฉพาะอย่างยิ่งในความจริงที่ว่า Silverlight / Flash ต้องการการติดตั้งปลั๊กอินและโทรศัพท์มือถือบางรุ่นไม่รองรับปลั๊กอินหรือไม่

4
โครงการโอเพ่นซอร์สจะประสบความสำเร็จได้อย่างไรหากไม่มีเอกสารเกี่ยวกับการออกแบบหรือสถาปัตยกรรม
ฉันต้องการพัฒนาทักษะการเขียนโปรแกรมของฉันโดยการศึกษาโครงการโอเพ่นซอร์สที่มีชื่อเสียง แต่ฉันคิดว่ามันง่ายที่จะหลงทางโดยเพียงแค่กระโดดลงไปในซอร์สโค้ดของพวกเขา ดังนั้นฉันจึงตัดสินใจที่จะอ่านเอกสารเกี่ยวกับการออกแบบหรือสถาปัตยกรรมของพวกเขา (เช่นแผนภาพ UML) เพื่อให้ได้แนวคิดทั่วไปเกี่ยวกับการจัดระเบียบโค้ดของพวกเขาก่อน ฉันประหลาดใจ แต่ฉันไม่สามารถหาเอกสารทางสถาปัตยกรรมสำหรับโครงการโอเพ่นซอร์สขนาดใหญ่เช่น Hibernate, Spring, ASP.NET MVC, Rails และอื่น ๆ ดังนั้นฉันจึงเริ่มสงสัยว่า: โครงการโอเพ่นซอร์สจะประสบความสำเร็จได้อย่างไรหากนักพัฒนาผู้มาใหม่ไม่มีเอกสารทางสถาปัตยกรรม / การออกแบบที่จะอ่านหรือถ้าผู้จัดการโครงการเพิ่งเปิดซอร์สโค้ด แต่ปิดเอกสาร?

4
สร้างระบบตามพฤติกรรม / ส่วนประกอบสำหรับเกม
พื้นหลัง ฉันพัฒนาเกมเป็นงานอดิเรกและกำลังมองหาวิธีที่ดีกว่าในการออกแบบพวกเขา ปัจจุบันฉันใช้วิธีมาตรฐาน OOP (ฉันได้ทำการพัฒนาองค์กรเป็นเวลา 8 ปีแล้ว ยกตัวอย่างเช่น "baddie" public class Baddie:AnimatedSprite //(or StaticSprite if needed, which inherit Sprite) { //sprite base will have things like what texture to use, //what the current position is, the base Update/Draw/GetInput methods, etc.. //an AnimatedSprite contains helpers to animated the player while //a …

3
เหตุใดรุ่นซ้ำ ๆ จึงใช้เวลานานกว่า
ฉันดูที่http://programming.lispdream.com/blog/2011/06/recursion-vs-iteration/และฉันเห็นว่าการใช้งานแบบเรียกซ้ำและทำซ้ำของฟังก์ชันแฟคทอเรียลซ้ำแล้วซ้ำอีกจะใช้เวลานานกว่า รับ n = 1,000 ฉันไม่สามารถหาสาเหตุ (เขาไม่ได้อธิบาย แต่บอกว่ามันเป็นแบบฝึกหัดสำหรับผู้อ่าน) ขออภัยสำหรับความแปลกใหม่ของฉันทั้งหมดนี้

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

3
การวางแผนพัฒนาเมื่อมีการวิจัยเชิงวิชาการ
เรียนเพื่อนโปรแกรมเมอร์ คุณจะทำอย่างไร "การวางแผนซอฟต์แวร์" เมื่อมีการวิจัยเชิงวิชาการ และในบันทึกข้างอย่างไรคุณโน้มน้าวให้เจ้านายของคุณว่าการเขียนซอฟแวร์จะไม่เหมือนการสร้างบ้านและก็มากขึ้นเช่นการเขียนนวนิยาย ? รายละเอียดเลือดอยู่ด้านล่าง ฉันรับผิดชอบทีม dev เล็ก ๆ ที่ทำงานในห้องปฏิบัติการวิจัย เราเริ่มพัฒนาซอฟต์แวร์โดยมีวัตถุประสงค์เพื่อเผยแพร่ต่อสาธารณชนในวันหนึ่ง (เช่นขายและทำเงินจากสิ่งนั้น) ซอฟต์แวร์ดังกล่าวขึ้นอยู่กับสิ่งอื่น ๆ อย่างน้อยสองบรรทัดการวิจัยอิสระ: นั่นคือมีอย่างน้อยสองปริญญาเอก ผู้สมัครที่หวังว่าสักวันหนึ่งจะออกมาพร้อมกับการใช้งานในสิ่งที่เราต้องการ ซอฟต์แวร์หลักยังขึ้นอยู่กับทรัพยากรอื่น ๆ ที่เป็นรูปธรรมมากกว่าที่เราในฐานะนักพัฒนาสามารถดูแลได้: การเรนเดอร์กราฟิก, การเปลี่ยนรูปแบบซอฟต์บอดี้ ฯลฯ เจ้านายของฉันขอให้ฉันเขียนข้อกำหนดข้อกำหนดและแผนภูมิ GANTT ที่เป็นเลือดของโครงการทั้งหมด เผชิญกับความจริงที่ว่าฉันไม่มีเบาะแสเกี่ยวกับส่วนการวิจัยและการวิจัยดังกล่าวเป็นพื้นฐานสำหรับซอฟต์แวร์เขากล่าวว่า "ตั้งสมมติฐาน" เพื่อความชัดเจนของการโต้แย้งเขาเป็นศาสตราจารย์ที่มีปริญญาเอก นักเรียนควรมากับการวิจัยที่เราต้องการ และเขามาจากภูมิหลังทางวิศวกรรมที่เข้มงวด: วางแผนทุกอย่างก่อนเขียนรายละเอียดและจากนั้นจดรหัสที่ "เป็นส่วนสุดท้าย" สิ่งที่ฉันทำตอนนี้: ฉันทำลายผลิตภัณฑ์ด้วยคุณสมบัติ แต่ละ 'คุณสมบัติ' คือพฤตินัยผลิตภัณฑ์แยกต่างหาก คุณลักษณะแต่ละอย่างถูกสร้างขึ้นบนคุณลักษณะก่อนหน้า เมื่อฟีเจอร์ (A) มีต้นแบบการทำงานทีมสามารถเริ่มทำงานในฟีเจอร์ถัดไป (B) ในขณะที่การทำประกันคุณภาพสำหรับ A (ถ้าเงินอนุญาตจะมีคนนำเข้ามา ฯลฯ ); …

4
เราควรจะป้องกันได้อย่างไร
เราใช้งานPexมากับโค้ดบางตัวและมันก็แสดงให้เห็นถึงสิ่งที่ดี (สิ่งเลวร้าย แต่แสดงให้พวกเขาเห็นก่อนที่มันจะเริ่มผลิต!) อย่างไรก็ตามหนึ่งในสิ่งที่ดีเกี่ยวกับ Pex คือมันไม่จำเป็นต้องหยุดพยายามค้นหาปัญหา สิ่งหนึ่งที่เราพบคือเมื่อผ่านสตริงเราไม่ได้ตรวจสอบสตริงว่าง ดังนั้นเราจึงเปลี่ยน: if (inputString == null) ถึง if (string.IsNullOrEmpty(inputString)) // *** ที่แก้ไขปัญหาเบื้องต้น แต่เมื่อเราวิ่ง Pex อีกครั้งก็ตัดสินใจว่า inputString = "\0"; ก่อให้เกิดปัญหา และจากนั้น inputString = "\u0001"; สิ่งที่เราได้ตัดสินใจคือสามารถใช้ค่าเริ่มต้นได้หากเราพบ// ***และเรายินดีที่จะเห็นข้อยกเว้นที่เกิดจากข้อมูลแปลก ๆ อื่น ๆ (และจัดการกับมัน) เพียงพอหรือไม่

4
วิธีเริ่มเรียนรู้ J2EE โดยเฉพาะ JPA [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันพยายามที่จะเริ่มต้นการเรียนรู้เป็นส่วนหนึ่งของJ2EE Javaแต่ฉันไม่รู้ว่าจะเริ่มจากตรงไหน ผม Familier ด้วยCore Javaและส่วนใหญ่ผมต้องการที่จะเรียนรู้JPAและพื้นฐานของและHibernate Spring Frameworkเหตุผลหลักสำหรับเรื่องนี้คือฉันกำลังทำงานในโครงการที่ใช้สิ่งเหล่านี้ทั้งหมด และโค้ดส่วนใหญ่นั้นพัฒนาโดยผู้อาวุโสบางคนและฉันต้องทำการแก้ไขบางอย่าง ดังนั้นโดยทั่วไปฉันต้องเข้าใจรหัสของพวกเขา ใครสามารถให้แผนการทำงานแก่ฉันได้บ้างเช่นสิ่งที่ฉันต้องรู้ล่วงหน้าและฉันควรไปในลำดับใด เอกสารอ้างอิงใด ๆ เช่นลิงก์หนังสือหรือไม่

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

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

4
ใช้การฉีดพึ่งพาสำหรับวัตถุข้อมูลหรือไม่
ฉันแค่เรียนรู้เกี่ยวกับการฉีดพึ่งพาและติดอยู่กับบางสิ่ง การพึ่งพาการฉีดแนะนำให้ส่งคลาสที่ต้องพึ่งพาผ่านตัวสร้าง แต่ฉันสงสัยว่านี่เป็นสิ่งจำเป็นสำหรับวัตถุข้อมูลหรือไม่ เนื่องจาก Unit-Testability เป็นหนึ่งในประโยชน์หลักของ DI จะเป็น data data ที่เก็บข้อมูลเท่านั้นไม่ใช่โพรซีเดอร์ใด ๆ ที่เคยถูกทดสอบโดยหน่วยทำให้ DI เป็นเลเยอร์ที่ซับซ้อนโดยไม่จำเป็นหรือยังช่วยแสดงการพึ่งพา กับวัตถุข้อมูล? Class DO{ DO(){ DataObject2List = new List<DO2>(); } public string Field1; public string Field2; public List<DO2> DataObject2List; } Class DO2{ public DateTime Date; public double Value; }

7
จากมุมมองการออกแบบแนวทางปฏิบัติที่ดีที่สุดสำหรับการบันทึกคืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันต้องการเพิ่มการบันทึกลงในแอปพลิเคชันที่ฉันกำลังทำงานอยู่ ฉันได้เพิ่มการบันทึกก่อนหน้านี้ไม่ใช่ปัญหาที่นี่ แต่จากมุมมองการออกแบบในภาษาเชิงวัตถุอะไรคือวิธีปฏิบัติที่ดีที่สุดสำหรับการบันทึกที่เป็นไปตาม OOP และรูปแบบ หมายเหตุ:ฉันกำลังทำสิ่งนี้ใน C # ดังนั้นตัวอย่างใน C # ยินดีต้อนรับอย่างชัดเจน ฉันต้องการเห็นตัวอย่างใน Java และ Ruby แก้ไข:ฉันใช้ log4net ฉันไม่รู้ว่าวิธีที่ดีที่สุดในการเสียบคืออะไร

10
โปรแกรมเมอร์มีวิธีการผลิตหรือไม่?
ผมได้รับฟังการปั้นรัฐโดยHilare เบล์เช้านี้และขบคิดหรือไม่ว่าฉันครอบครองปัจจัยการผลิตเช่นเดียวกับชาวนาในยุคกลางนั้น เช่นเดียวกับที่ไม่ได้เป็นลูกหลานของเขาหลังจาก oligarchs ของอังกฤษบังคับให้เขาเป็นทาส วิธีการผลิตเป็นที่ดินที่เหมาะแก่การเพาะปลูกซึ่งเป็นที่ตั้งของข้าศึกซึ่งแม้ว่าจะไม่ใช่กฎหมายของเขาก็ตาม ดังนั้นในฐานะโปรแกรมเมอร์ที่มีเครื่องมือและทรัพยากรฟรีที่ไม่ทราบมาก่อนเราได้เรียกคืนเป็นชนชั้นแรงงานซึ่งแตกต่างจากวิธีการผลิตอื่น ๆ หรือไม่? เมื่อได้รับโอกาสพีซีระดับกลางและการเชื่อมต่ออินเทอร์เน็ตที่เสถียรเราทุกคนไม่สามารถพึ่งพาตนเองได้อย่างเต็มที่และไม่เพียงแค่ผู้มีรายได้เท่านั้น
11 economics 

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

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