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

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

3
จะไปเกี่ยวกับ "รับช่วง" โครงการโอเพนซอร์สได้อย่างไร
มีโครงการโอเพนซอร์ซที่ฉันสนใจและใช้เป็นประจำ มันได้รับอนุญาตภายใต้ Apache License 2.0 และโดยทั่วไปจะไม่มีกิจกรรมอีกต่อไป มันโฮสต์บน Google Code และฉันสนใจที่จะพัฒนามันต่อไป ฉันยังใหม่กับกระบวนการโอเพนซอร์ซและฉันพยายามหาวิธีที่เหมาะสมในการทำสิ่งนี้ ฉันสามารถตรวจสอบและผลักดันให้ GitHub เพื่อให้ฉันสามารถดำเนินการต่อในการพัฒนาที่มีอยู่หรือไม่ ฉันควรติดต่อโครงการ "เจ้าของ" ก่อนหรือไม่ นอกจากนี้ฉันจะปล่อยให้ข้อมูลผู้เขียนทั้งหมดอยู่ด้านบนของชั้นเรียน ฯลฯ แม้ว่าฉันจะทำการเปลี่ยนแปลง .. (ฉันคิดว่าคำตอบคือใช่)? นอกจากนี้ฉันจะปฏิบัติตามข้อกำหนดสิทธิการใช้งานของ "การแก้ไขทั้งหมดมีการระบุไว้อย่างชัดเจนว่าเป็นงานของตัวปรับเปลี่ยน" ได้อย่างไร? ฉันจะแสดงความคิดเห็นทุกการเปลี่ยนแปลงที่ฉันทำหรือไม่? คำแนะนำใด ๆ เกี่ยวกับหลักสูตร / มาตรฐานปกติที่นี่จะได้รับการชื่นชมอย่างมากคืออะไร?

7
การใช้รหัสส่วนตัวในที่ทำงานเป็นเรื่องจริยธรรมหรือไม่
ฉันทำงานเกี่ยวกับโปรเจ็กต์ด้านที่ทำงานซึ่งฉันคิดว่ามันมีประโยชน์ในการใช้โค้ดบางส่วนที่ฉันได้พัฒนาขึ้นเป็นการส่วนตัว (นอกที่ทำงาน) เพื่อเร่งการพัฒนาของฉัน โปรเจคด้านของฉันคือการพัฒนาแอปพลิเคชัน C ++ GUI เพื่อให้ผู้ใช้ขั้นสูงของเราสามารถรันการสืบค้น (สร้างโดยฉัน) กับฐานข้อมูลบนแพลตฟอร์มที่แตกต่างกัน ( DB2 , Oracle, SQL ServerและMySQL ) ในอดีตฉันมักจะเรียกใช้ตัวเองตามคำขอหรือสร้างแอปพลิเคชันExcel VBAสำหรับพวกเขา ตอนนี้ฉันได้สร้างแอปพลิเคชั่น VBA หลายตัวสำหรับคนที่แตกต่างกันหลายคนฉันต้องการสร้างแอพพลิเคชั่นส่วนกลางที่เพิ่งอ่านในไฟล์. sql ที่กำหนดเองและดำเนินการกับฐานข้อมูลต่างๆ แอปพลิเคชันที่ฉันกำลังสร้างอยู่ใน C ++ และใช้ชุดเครื่องมือ GUI ข้ามแพลตฟอร์มLGPL อย่างไรก็ตามฉันมีรหัสจำนวนมากที่อยู่ในห้องสมุดของตัวเองที่ฉันได้สร้างขึ้นในช่วงหลายปีที่ผ่านมาเกี่ยวกับโครงการที่ไม่เกี่ยวข้องกับงานสันทนาการ การใช้รหัสนี้ในที่ทำงานช่วยประหยัดเวลา (และ บริษัท ) ได้ไหม ถ้าเป็นเช่นนั้นฉันจะพอร์ตแก้ไขข้อผิดพลาดและการปรับปรุงกลับไปที่ห้องสมุดส่วนตัวของฉันได้หรือไม่? ดูเหมือนจะมีเส้นที่ฉันไม่รู้เมื่อฉันจะข้ามมัน ฉันแค่ต้องการเพิ่มว่าไม่มีรหัสส่วนตัวใดที่เกี่ยวข้องกับตรรกะทางธุรกิจใด ๆ พวกเขาเป็นเพียงชั้นเรียนพื้นฐานยูทิลิตี้ / wrappers

3
Entity Framework Code เป็นอันดับแรกที่ไร้ความหมาย / ไร้ประโยชน์ในการผลิตและกลยุทธ์ EF ที่ดีสำหรับการผลิตคืออะไร?
ฉันเพิ่งเขียนโปรแกรมด้วย Entity Framework 4.1 Code แรกและฉันชอบการพัฒนา แต่มีเพียงแผนสุดท้ายและรายการคุณลักษณะที่เปลี่ยนแปลงอย่างรวดเร็วฉันกำลังปรับเปลี่ยน Class / Database อย่างต่อเนื่องเพื่อตอบสนองความต้องการของแอปพลิเคชัน ในการพัฒนาไม่มีข้อมูลอยู่และฉันสามารถลบฐานข้อมูลทั้งหมดได้อย่างง่ายดายดังนั้นมันจึงถูกสร้างขึ้นใหม่ด้วยสคีมาใหม่ แต่เห็นได้ชัดเมื่อมีชีวิต - นี่แย่มาก! วิธีแก้ปัญหาเดียวที่ฉันเห็นคือการวางตารางเมทาดาทาและทำให้ฐานข้อมูลซิงค์ด้วยตนเองหรือโดยทั่วไปแล้วปล่อยและทำใหม่ ฉันชอบวิธีแรกเป็นการส่วนตัวเพราะฉันคิดว่าการเพิ่มคอลัมน์ / ตารางจะง่ายกว่าการสร้างและย้ายข้อมูล แต่ถ้าฉันไม่ได้พลาดสิ่งนี้จะย้ายออกไปจาก Code First อย่างสมบูรณ์ ดังนั้นคำถามคือ Code First เป็นเพียงการพัฒนาครั้งแรกและกลยุทธ์ที่ดีในการจัดการ EF สำหรับสภาพแวดล้อมการผลิตคืออะไร

9
การตั้งชื่ออินเทอร์เฟซ: คำนำหน้า 'Can-' เทียบกับคำต่อท้าย 'สามารถ'
เป็นเรื่องปกติที่จะใช้ '-able' เป็นคำต่อท้ายสำหรับอินเทอร์เฟซเช่น สามารถยิงได้แบบหมุนได้ ฉันคิดว่า 'Can-' อาจจะดีกว่าเพราะอาจเป็นคำอธิบายที่มากกว่า ใช่มันเป็นถ้อยคำมากขึ้นและเพิ่มเสียงให้กับชื่ออินเตอร์เฟส โดยเฉพาะอย่างยิ่งคำกริยาแฝงสามารถนำมาใช้ เช่น 1หมายถึง Shootable หมายความว่าวัตถุสามารถยิงได้ (ปืนอาจใช้สิ่งนี้) หรือหมายความว่าสามารถยิงได้ (บอร์ดเป้าหมายอาจใช้สิ่งนี้) ด้วยคำนำหน้า 'Can-' อดีตจะเป็น "CanShoot" และส่วนหลังจะเป็น "CanBeShotAt" หรือ "CanShootAt" เช่น 2เอกสาร 'CanBePrinted' และเครื่องพิมพ์ 'CanPrint' หรือเราควรใช้ '-Able' และให้เอกสารอธิบายบริบทหรือไม่ ความคิดเห็นใด ๆ
29 api  interfaces 

14
เหตุใดการจัดรูปแบบโค้ดที่ไม่สมบูรณ์จึงเป็นเรื่องธรรมดามากกว่า
ฉันกำลังอ่านCode Completeและในบทเกี่ยวกับเลย์เอาต์และสไตล์เขาคาดการณ์ว่าผู้แก้ไขโค้ดจะใช้การจัดรูปแบบ Rich Text บางประเภท นั่นหมายความว่าแทนที่จะเป็นรหัสที่มีลักษณะเช่นนี้ Procedure ResolveCollisions { Performs a posteriori collision resolution through spatial partitioning algoritm } ( CurrentMap : SpriteContext, PotentialColliders: SpriteList ) var Collider : Sprite, Collidee : Sprite, Collision : SpriteCollision begin DoStuff(); end. มันอาจมีลักษณะเช่นนี้: ขั้นตอน ResolveCollisions ดำเนินการแก้ไขการชนด้านหลังผ่านอัลกอริทึมการแบ่งพาร์ติชัน พารามิเตอร์ CurrentMap : SpriteContext PotentialColliders : SpriteList …

6
การทดสอบหน่วยที่ควรคาดว่าผลลัพธ์จะ hardcoded?
ผลลัพธ์ที่คาดหวังจากการทดสอบหน่วยควรจะ hardcoded หรือพวกเขาสามารถขึ้นอยู่กับตัวแปรเริ่มต้น? ผลที่ได้จากฮาร์ดโค้ดหรือจากการคำนวณเพิ่มความเสี่ยงในการแนะนำข้อผิดพลาดในการทดสอบหน่วยหรือไม่? มีปัจจัยอื่น ๆ ที่ฉันไม่ได้พิจารณาหรือไม่? ตัวอย่างเช่นรูปแบบใดในสองรูปแบบที่เชื่อถือได้มากขึ้น [TestMethod] public void GetPath_Hardcoded() { MyClass target = new MyClass("fields", "that later", "determine", "a folder"); string expected = "C:\\Output Folder\\fields\\that later\\determine\\a folder"; string actual = target.GetPath(); Assert.AreEqual(expected, actual, "GetPath should return a full directory path based on its fields."); } [TestMethod] public …
29 c#  unit-testing 

10
By-Design“ Bugs” เป็นสัญญาณที่ไม่ดีหรือไม่?
มันเป็นสัญญาณที่ไม่ดีถ้าผู้ใช้ส่งรายงานข้อผิดพลาดสำหรับสิ่งที่ออกแบบ โดยทั่วไปหมายความว่าแอปพลิเคชันสับสนหรือไม่ชัดเจนหรือฉันควรจะชอล์กให้มากถึงความผิดพลาดของผู้ใช้ที่ใช้ครั้งเดียวนอกเสียจากว่าจะระบุไว้เป็นพิเศษ (จริง ๆ แล้วฉันไม่มีรายงานใด ๆ เลยนี่เป็นคำถามที่สมมุติอย่างถี่ถ้วนว่าการมี "บั๊ก" โดยการออกแบบนั้นเป็นสิ่งที่ไม่ดีหรือไม่)
29 bug  users 

1
จาวาสคริปต์ทางฝั่งไคลเอ็นต์ครอบคลุมโดย GPL อย่างไร?
หากฉันใช้ไลบรารี่ Javascript ที่มีลิขสิทธิ์ GPL ในเว็บแอปพลิเคชันฉันจะต้องเสนอซอร์สโค้ดของทั้งไซต์ให้กับทุกคนที่ดาวน์โหลดและดำเนินการ Javascript lib หรือไม่

7
มีเหตุผลที่ดีที่จะหลีกเลี่ยง node.js สำหรับเว็บแอปที่ไม่ใช่เรียลไทม์หรือไม่?
ฉันได้เห็นการพูดคุยมากมายเกี่ยวกับ Node.js ที่ยอดเยี่ยมสำหรับเว็บแอปแบบเรียลไทม์ - สิ่งที่ต้องการซ็อกเก็ต, Comet, การสื่อสาร AJAX ที่หนักหน่วงและอื่น ๆ ฉันรู้ว่าโมเดลที่ทำงานโดยอิงเหตุการณ์แบบอะซิงโครนัสและเป็นเธรดนั้นดีสำหรับการทำงานพร้อมกันที่มีค่าใช้จ่ายต่ำ ฉันยังได้เห็นแบบฝึกหัด Node.js สำหรับแอปที่ 'ดั้งเดิม' ที่ไม่ใช่เรียลไทม์ (เช่นตัวอย่างบล็อกมาตรฐานซึ่งดูเหมือนจะเป็นมาตรฐาน 'Hello World' สำหรับผู้ที่เรียนรู้การพัฒนาแอป) และฉันก็รู้ว่าโหนดคงที่ช่วยให้คุณให้บริการสินทรัพย์คงที่ คำถามของฉันคือมีเหตุผลที่ดีที่จะหลีกเลี่ยง Node.js สำหรับเว็บแอปแบบดั้งเดิมเช่นคลาสสิฟายด์ฟอรัมตัวอย่างบล็อกดังกล่าวหรือแอพ CRUD ที่คุณสร้างขึ้นสำหรับแอปพลิเคชันธุรกิจภายในหรือไม่ เพียงเพราะมันเก่งในทุกเวลาที่เป็นเรื่องขี้ขลาดมันห้ามใช้มันเพื่อการใช้ที่มีพลังมากกว่าหรือไม่? สิ่งเดียวที่ฉันนึกได้ก็คือการขาดห้องสมุดผู้ใหญ่ (แม้ว่ามันจะเปลี่ยนไป) (เหตุผลที่ฉันถามคือฉันกำลังพิจารณาการทิ้ง PHP สำหรับ Node.js ส่วนใหญ่เพื่อให้เกินความต้านทานไม่ตรงกันของการสลับระหว่างภาษา แต่ยังเพื่อให้ฉันสามารถนำมาใช้รหัสตรวจสอบและ whatnot superego ของฉัน admonishes ให้ฉันเลือก เครื่องมือที่ดีที่สุดสำหรับงานนี้ แต่ฉันไม่มีเวลามากพอที่จะเรียนรู้ภาษาต่าง ๆ สิบห้าภาษาและห้องสมุด userland ทั้งหมดของพวกเขาเพื่อให้มีคลังแสงที่ครอบคลุมนอกจากนี้ยังให้ความมั่นใจว่า Node.js อาจมอบเส้นทางการเพิ่มประสิทธิภาพที่ง่ายกว่า PHP / …

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

20
คุณจะรับมือกับข้อผิดพลาดที่แปลกประหลาดจริงๆที่ทำให้คุณงงมานานกว่า 10 ชั่วโมงได้อย่างไร? [ปิด]
คุณรู้ว่าพวกเขาข้อผิดพลาดที่ไม่เหมาะสม ในที่ที่มันดูเหมือนว่าเครมลินเพิ่งกระโดดเข้าไปในชิปของคุณและทำบางสิ่งบางอย่างให้เลอะ คุณเดินเล่นเขียนเรื่องเรียกลุงหรือเปล่า

6
การใช้ภาษาโปรแกรมที่ Google [ปิด]
ฉันเคยได้ยินว่า Google ใช้ Python, Java และ C ++ แต่สิ่งที่ฉันไม่รู้ก็คือวิธีการใช้ภาษาการเขียนโปรแกรมแต่ละภาษา ฉันหมายถึง Python, Java และ C ++ ที่ใช้กับ Google ทำไมพวกเขาถึงไม่เกิน 3 ภาษาการเขียนโปรแกรมเมื่อ 1 ภาษาเพียงพอ มีใครรู้บ้าง

3
วิธีการโปรโมตโครงการโอเพนซอร์ซ
ก่อนอื่นฉันต้องขออภัยถ้านี่เป็นส่วนที่ผิดของเครือข่ายที่จะโพสต์คำถามนี้ ถ้าเป็นโปรดย้ายไปยังตำแหน่งที่เหมาะสมกว่า ... คำถาม: ฉันต้องการฟังความคิดเห็นของคุณเกี่ยวกับวิธีการที่โครงการเริ่มต้นและเปิดใช้งาน ฉันมีโครงการระบบจัดการเนื้อหาโอเพนซอร์ซและมีคำถามเกิดขึ้นที่นี่: ฉันควรทำอย่างไร ฉันจะมาพร้อมกับ pre-alpha edition ที่ทำงานได้กับ front-end-back-end ก่อนแล้วประกาศโครงการต่อสาธารณะหรือไม่ หรือฉันจะประกาศทันทีจากศูนย์ ในฐานะนักพัฒนาฉันรู้ว่าควรใช้ระบบการกำหนดเวอร์ชันเช่น Git หรือ SVN ซึ่งฉันทำได้ไม่มีปัญหา และข้อดีของการทดสอบหน่วยก็เป็นสิ่งที่ต้องจดจำซึ่งตรงไปตรงมาฉันไม่ได้เข้าร่วมเลย ... การบริหารจัดการโครงการ - ฉันเป็นผู้เริ่มต้นที่ดีที่สุด เทคนิคการเขียนโค้ดและประสบการณ์เช่นการพัฒนา Agile เป็นสิ่งที่ฉันต้องการสำรวจ ... ในระยะสั้นความคิดใด ๆ สำหรับนักพัฒนาที่ยังใหม่กับโลกโอเพนซอร์สก็ยินดีต้อนรับมากที่สุด

12
ทำไมคุณต้องลอย / สองครั้ง?
ฉันดูhttp://www.joelonsoftware.com/items/2011/06/27.htmlและหัวเราะเยาะจอน Skeet ตลก ๆ ประมาณ 0.3 ไม่ใช่ 0.3 ฉันเองไม่เคยมีปัญหากับการลอย / ทศนิยม / คู่ แต่ฉันจำได้ว่าฉันเรียนรู้ 6502 เร็วมากและไม่จำเป็นต้องลอยในโปรแกรมส่วนใหญ่ของฉัน ครั้งเดียวที่ฉันใช้มันสำหรับกราฟิกและคณิตศาสตร์ที่ตัวเลขไม่ถูกต้องก็โอเคและผลลัพธ์สำหรับหน้าจอและไม่ถูกเก็บไว้ (ในฐานข้อมูลไฟล์) หรือขึ้นอยู่กับ คำถามของฉันคือสถานที่ที่คุณมักจะใช้ทุ่น / ทศนิยม / สองครั้งที่ไหน? ดังนั้นฉันรู้ที่จะระวัง gotchas เหล่านี้ ด้วยเงินฉันใช้ longs และเก็บค่าเป็นเปอร์เซ็นต์สำหรับความเร็วของวัตถุในเกมที่ฉันเพิ่ม ints และหาร (หรือ bithift) ค่าเพื่อทราบว่าฉันต้องการย้ายพิกเซลหรือไม่ (ฉันทำการเคลื่อนที่วัตถุใน 6502 วันเราไม่มีการหารหรือลอย แต่มีการเปลี่ยนแปลง) ดังนั้นฉันส่วนใหญ่อยากรู้อยากเห็น

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

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