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

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

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

11
การควบคุมแหล่งฐานข้อมูล
ไฟล์ฐานข้อมูล (สคริปต์ ฯลฯ ) ควรอยู่ในการควบคุมแหล่งที่มาหรือไม่ ถ้าอย่างนั้นเป็นวิธีที่ดีที่สุดในการเก็บไว้และอัปเดตที่นั่น? มีความจำเป็นที่จะต้องใช้ไฟล์ฐานข้อมูลในการควบคุมซอร์สหรือไม่เนื่องจากเราสามารถวางไว้บนเซิร์ฟเวอร์การพัฒนาที่ทุกคนสามารถใช้งานได้และทำการเปลี่ยนแปลงหากจำเป็น แต่ถ้าอย่างนั้นเราก็ไม่สามารถเอามันกลับมาได้ วิธีใดที่ใช้ดีที่สุดสำหรับฐานข้อมูลในการควบคุมแหล่งที่มา?

16
เหตุใดภาษาเช่น C และ C ++ จึงไม่มีการรวบรวมขยะในขณะที่ Java ทำ [ปิด]
ฉันรู้ว่ามีหลายอย่างเช่น malloc / free สำหรับ C และใหม่ / using-a-destructor สำหรับการจัดการหน่วยความจำใน C ++ แต่ฉันสงสัยว่าทำไมไม่มี "การอัพเดทใหม่" สำหรับภาษาเหล่านี้ที่ทำให้ผู้ใช้ มีตัวเลือกในการจัดการหน่วยความจำด้วยตนเองหรือสำหรับระบบที่จะทำโดยอัตโนมัติ (เก็บขยะ)? ค่อนข้างเป็นคำถามที่แปลกใหม่ แต่อยู่ใน CS ประมาณ 1 ปีเท่านั้น

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

16
ย้ายจาก Windows เป็น Linux [ปิด]
ฉันต้องตรวจสอบข้อเท็จจริง 2 ข้อต่อไปนี้: ฉันรู้สึกไม่สะดวกใจที่จะทำงานกับ Linux ฉันต้องการพัฒนาซอฟต์แวร์สำหรับ Linux พื้นหลังบางอย่าง: ฉันมีประสบการณ์การเขียนโปรแกรม 10 ปีขึ้นไปบน Windows (เกือบจะเฉพาะ C / C ++ แต่บางอย่างเช่น. NET) ฉันเป็นผู้ใช้ FreeBSD ที่บ้านประมาณ 3 ปีหรือมากกว่านั้น (ต้องกลับไปที่ Windows) และฉันไม่เคยโชคดีกับ Linux มาก่อน และตอนนี้ฉันต้องพัฒนาซอฟต์แวร์สำหรับ Linux ฉันต้องการแผน ใน Windows คุณสามารถรู้ได้ด้วยภาษาการเขียนโปรแกรม API ที่คุณเข้ารหัส IDE (VisualStudio) และเครื่องมือพื้นฐานบางอย่างสำหรับการแก้ไขปัญหา (ขึ้นอยู่กับ ProcessExplorer, DebugView, WinDbg) ทุกอย่างมาจากธรรมชาติ บน Linux มันเป็นเรื่องที่แตกต่างกันมาก ฉันจะรู้ได้อย่างไรว่า DLL …

17
ฉันจะสร้างการจัดลำดับความสำคัญใหม่ให้กับทีมของฉันได้อย่างไร
codebase ที่ฉันทำงานประจำวันไม่มีการทดสอบอัตโนมัติตั้งชื่อไม่สอดคล้องกันและมีความคิดเห็นมากมายเช่น "ทำไมที่นี่ถึงที่นี่", "ไม่แน่ใจว่าจำเป็นหรือไม่" หรือ "วิธีนี้ไม่มีชื่อที่ถูกต้อง" และรหัสถูกทิ้ง "การเปลี่ยนแปลง" แม้ว่าเราจะใช้การควบคุมแหล่งที่มา เพียงแค่บอกว่า codebase ของเราสามารถใช้ refactoring ได้ เรามีงานที่จะแก้ไขข้อบกพร่องหรือเพิ่มคุณสมบัติใหม่ ๆ อยู่เสมอดังนั้นจึงไม่มีเวลาที่จะวางโค้ด refactor ให้ดีขึ้นและแยกส่วนมากขึ้นและดูเหมือนจะไม่ได้รับความสำคัญสูง ฉันจะแสดงให้เห็นถึงคุณค่าของการปรับสภาพที่มันจะถูกเพิ่มเข้าไปในรายการงานของเราได้อย่างไร? มันคุ้มค่าหรือไม่ที่จะต้องปรับโครงสร้างเมื่อฉันไปขอการให้อภัยมากกว่าการอนุญาต

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

23
เหตุใดจึงไม่มีภาษาการเขียนโปรแกรม“ สากล” ที่ตอบสนองทุกวัตถุประสงค์ [ปิด]
ทำไมไม่รวมคุณสมบัติที่ดีที่สุดของภาษาการเขียนโปรแกรมที่มีอยู่ทั้งหมดเข้าด้วยกันในภาษาสากล

30
เมื่อใดที่คน ๆ หนึ่งจะถูกพิจารณาว่าเป็นโปรแกรมเมอร์ที่ไม่ดี? [ปิด]
คุณจะพิจารณาได้อย่างไรว่าโปรแกรมเมอร์ไม่ดีกับสิ่งที่เขาหรือเธอทำอยู่ ถ้าเป็นไปได้ ... เขา / เธอควรปรับปรุงอย่างไร?

30
การออกแบบที่น่าเศร้าหรือการตัดสินใจเขียนโปรแกรมที่คุณทำ [ปิด]
ฉันอยากได้ยินว่าคุณตัดสินใจออกแบบแบบไหนและพวกเขาย้อนกลับมาอย่างไร เนื่องจากการตัดสินใจออกแบบที่ไม่ดีฉันจึงต้องสนับสนุนการตัดสินใจที่ไม่ดีนั้นตลอดไป (ฉันมีส่วนร่วมด้วย) ทำให้ฉันรู้ว่าการออกแบบผิดพลาดเพียงครั้งเดียวสามารถหลอกหลอนคุณตลอดไป ฉันต้องการเรียนรู้จากคนที่มีประสบการณ์มากกว่าพวกเขามีประสบการณ์แบบผิดพลาดอะไรบ้างและพวกเขาเรียนรู้อะไรจากพวกเขา ฉันแน่ใจว่านี่จะเป็นประโยชน์อย่างมากสำหรับโปรแกรมเมอร์คนอื่น ๆ โดยช่วยพวกเขาไม่ให้ตัดสินใจซ้ำ ๆ ขอบคุณที่แบ่งปันประสบการณ์ของคุณ
57 mistakes 

6
เราควรสร้าง HttpClient อินสแตนซ์ใหม่สำหรับคำขอทั้งหมดหรือไม่
เมื่อเร็ว ๆ นี้ฉันได้พบกับบล็อกโพสต์นี้จากอสุรกาย asp.net ซึ่งพูดถึงปัญหาเกี่ยวกับการใช้HttpClientในวิธีต่อไปนี้: using(var client = new HttpClient()) { } ตามโพสต์ในบล็อกถ้าเรากำจัดHttpClientหลังจากทุกคำขอมันสามารถเปิดการเชื่อมต่อ TCP ได้ System.Net.Sockets.SocketExceptionนี้อาจจะนำไปสู่การ วิธีที่ถูกต้องตามโพสต์คือการสร้างอินสแตนซ์เดียวHttpClientซึ่งจะช่วยลดการสิ้นเปลืองซ็อกเก็ต จากโพสต์: หากเราแบ่งปัน HttpClient อินสแตนซ์เดียวเราสามารถลดการใช้ซ็อกเก็ตได้โดยการใช้ซ้ำ: namespace ConsoleApplication { public class Program { private static HttpClient Client = new HttpClient(); public static void Main(string[] args) { Console.WriteLine("Starting connections"); for(int i = 0; i<10; i++) { …
57 c#  http-request 

1
มีความแตกต่างระหว่างเส้นใย coroutines และหัวข้อสีเขียวและถ้าเป็นเช่นนั้นมันคืออะไร?
วันนี้ฉันกำลังอ่านบทความเกี่ยวกับเส้นใยเกี่ยวกับเส้นใย coroutines และหัวข้อสีเขียวบนอินเทอร์เน็ตและดูเหมือนว่าแนวคิดเหล่านี้มีเหมือนกันมาก แต่มีความแตกต่างกันเล็กน้อยโดยเฉพาะอย่างยิ่งเมื่อเราพูดถึงเส้นใยและ coroutines มีการสรุปย่อที่ถูกต้องและกระชับในสิ่งที่ทำให้พวกเขาแตกต่างจากกันหรือไม่? อัปเดต: ฉันพบเอกสารการแยกความแตกต่างcoroutines และเส้นใย (N4024 C ++)ดีโดยเฉพาะอย่างยิ่งที่แตกต่างระหว่างเส้นใยและ coroutines

4
กำลังสำรองฐานข้อมูล MySQL ใน Git เป็นความคิดที่ดีหรือไม่
ฉันพยายามปรับปรุงสถานการณ์การสำรองข้อมูลสำหรับแอปพลิเคชันของฉัน ฉันมีแอพพลิเคชั่น Django และฐานข้อมูล MySQL ฉันอ่านบทความแนะนำการสำรองฐานข้อมูลใน Git ในมือข้างหนึ่งฉันชอบมันจะเก็บสำเนาของข้อมูลและรหัสในการซิงค์ แต่ Git นั้นออกแบบมาสำหรับรหัสไม่ใช่สำหรับข้อมูล เช่นนี้มันจะทำงานพิเศษมากมายซึ่งต่างจากการถ่ายโอนข้อมูล MySQL ทุกการกระทำซึ่งไม่จำเป็นจริงๆ หากฉันบีบอัดไฟล์ก่อนจัดเก็บไฟล์ git จะยังคงแตกต่างกันหรือไม่? (ปัจจุบันไฟล์การถ่ายโอนข้อมูลถูกยกเลิกการบีบอัด 100MB, 5.7MB เมื่อบีบอัดไฟล์) แก้ไข: คำจำกัดความสคีมาของรหัสและฐานข้อมูลมีอยู่แล้วใน Git จริง ๆ แล้วเป็นข้อมูลที่ฉันกังวลเกี่ยวกับการสำรองตอนนี้
57 database  git  mysql  django 

7
สิ่งประดิษฐ์หมายถึงอะไร
พจนานุกรมกำหนดสิ่งประดิษฐ์เป็น: สิ่งประดิษฐ์, สิ่งประดิษฐ์ [ˈɑːtɪˌfækt] n สิ่งที่ทำหรือให้รูปร่างโดยมนุษย์เช่นเครื่องมือหรืองานศิลปะโดยเฉพาะอย่างยิ่งวัตถุที่น่าสนใจทางโบราณคดี สิ่งที่มนุษย์สร้างขึ้นเช่นผลการทดลองปลอม (วิทยาศาสตร์สิ่งมีชีวิตและการประยุกต์ใช้งาน / ชีววิทยา) เซลล์วิทยาโครงสร้างที่เห็นในเนื้อเยื่อหลังการตายการตรึงการย้อมสีและอื่น ๆ ที่ไม่ปกติมีอยู่ในเนื้อเยื่อที่มีชีวิต คำที่artifactมักปรากฏในการพัฒนาซอฟต์แวร์รอบการพัฒนาซอฟต์แวร์การประมาณความพยายาม ฯลฯ แต่คำจำกัดความข้างต้นไม่สมเหตุสมผลสำหรับฉันในบริบทนั้น ใครช่วยอธิบายคำนี้ได้ด้วยการยกตัวอย่างเฉพาะจากอุตสาหกรรมซอฟต์แวร์?

3
คุณสามารถเปลี่ยนรหัสที่แจกจ่ายภายใต้ใบอนุญาต MIT และแจกจ่ายอีกครั้งภายใต้ใบอนุญาต GPL ได้หรือไม่ [ปิด]
เป็นไปได้หรือไม่ที่จะเปลี่ยนรหัสของปลั๊กอิน Chiliซึ่งมีการวางจำหน่ายล่าสุดในเดือนกรกฎาคม 2008 และได้รับใบอนุญาตภายใต้ใบอนุญาต MIT แล้วจะอนุญาตภายใต้ GPL หรือไม่ เท่าที่ฉันเห็นไม่มีข้อ จำกัด เกี่ยวกับรหัสใหม่ที่ได้รับใบอนุญาตภายใต้ใบอนุญาตเดียวกัน เป็นเช่นนั้นจริง ๆ หรือมีการเปลี่ยนแปลงจำนวนน้อยที่สุด ในกรณีของฉันฉันจะเปลี่ยนปลั๊กอิน jQuery ในรหัส Javascript ปกติที่เรียกใช้ใน CMS สิ่งนี้หมายความว่าเหนือสิ่งอื่นใด: รหัสจะไม่ใช้เนมสเปซ "ChiliBook" ฟังก์ชั่นจะไม่ถูกเรียกใช้เป็น$($element).chili()แต่เป็นGlobalObject.ChiliHighlighter.process($jquery_element)โดยที่ "GlobalObject" เป็นวัตถุ JavaScript ที่ใช้จาก CMS รหัสจะช่วยให้โมดูลอื่น ๆ ในการเปลี่ยนแปลงGlobalObject.ChiliHighlighterวัตถุเพื่อเพิ่มฟังก์ชั่นที่เรียกว่าเป็นทางเลือกจากGlobalObject.ChiliHighlighter.process()เมื่อพวกเขาถูกกำหนดไว้ เป็นทางเลือกเนื่องจากพื้นที่เก็บข้อมูลที่ฉันใช้อนุญาตให้ฉันรวมรหัสที่ไม่ได้รับอนุญาตภายใต้ GPL 2 หรือใบอนุญาตที่สูงกว่าเมื่อไม่ได้รับการบำรุงรักษารหัสอีกต่อไปจึงจะถือว่าปลั๊กอินไม่ได้รับการบำรุงรักษาอีกต่อไป

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