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

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

8
ในสภาพแวดล้อมที่คล่องตัวผู้รับผิดชอบสถาปัตยกรรมซอฟต์แวร์
ในทีมที่มีความคล่องตัวใครเป็นผู้รับผิดชอบในการตัดสินใจออกแบบสถาปัตยกรรมระดับสูงและการออกแบบที่ส่งผลกระทบต่อทั้งระบบไม่ใช่แค่งานที่ทำในการวิ่งปัจจุบัน อาจจะเป็นเจ้าของผลิตภัณฑ์อาจารย์ต่อสู้ทีมต่อสู้หรือคนอื่น?
19 agile  scrum 

4
คุณระบุปัญหาว่าเหมาะสำหรับการเขียนโปรแกรมแบบไดนามิกอย่างไร
ฉันได้อ่านการเขียนโปรแกรมแบบไดนามิกเมื่อเร็ว ๆ นี้ อยากได้ยินจากคนที่เริ่มต้นจากศูนย์และตอนนี้ก็ค่อนข้างดีในการระบุและแก้ไขปัญหา DP ฉันกำลังดิ้นรนในการระบุปัญหาเหล่านี้เป็น DP และกำหนดวิธีการแก้ปัญหาที่รัดกุม ฉันได้ผ่านปัญหา DP ส่วนใหญ่สำหรับผู้เริ่มต้นและทรัพยากร MIT แล้ว

1
ฉันจะดึงดูดผู้ใช้ที่ติดดาวโครงการของฉันบน GitHub ได้อย่างไร
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ฉันเพิ่งวางโครงการเรียกว่าHebelซึ่งฉันทำงานให้กับ GitHub มันเป็นกรอบสำหรับ GPU ที่เร่งการเรียนรู้อย่างลึกซึ้งที่เขียนใน Python และ Nvidia CUDA ฉันโพสต์เกี่ยวกับเรื่องนี้ใน Google+ และหลังจากนั้นไม่นานมันก็ถูกหยิบขึ้นมาในHacker Newsและมีไวรัสเล็กน้อยในสองสามวัน ภายหลังฉันโพสต์เกี่ยวกับเรื่องนี้อีกครั้งในsubreddit การเรียนรู้ของเครื่องจักรเช่นกันและโครงการของฉันก็หยิบขึ้นมา 822 ดาวและ 47 ส้อมบน GitHub ซึ่งมันทำให้ดีอกดีใจจริงๆ 822 ดาวหมายความว่าโครงการของฉันอยู่ใน 200 อันดับแรกของโครงการ Python บน GitHub และในความเป็นจริงแล้วมีดาวมากกว่าโปรไฟล์สูงบางโครงการที่ใช้กันอย่างแพร่หลายเช่น Python virtualenv แม้จะมีความสนใจเป็นอย่างมากสำหรับโครงการของฉัน แต่ฉันก็ผิดหวังกับการมีส่วนร่วมจริงที่ฉันได้เห็น ไม่มีส้อมจาก 47 โครงการของฉันที่เคยทำมาฉันไม่ได้รับการร้องขอใด ๆ และมีคนสองคนส่งปัญหาเพียงสามเรื่องเท่านั้น ดูเหมือนว่าโครงการของฉันอาจจะน่าสนใจสำหรับคนจำนวนมาก แต่พวกเขาเพียงติดดาวหรือแยกมันครั้งเดียวแล้วไม่กลับไปใช้มันอีกหรือใช้มันอย่างต่อเนื่อง ฉันจะปรับปรุงการมีส่วนร่วมเพื่อให้ผู้ใช้ส่งข้อผิดพลาดหรือร้องขอการปรับปรุงหรือให้ผู้สนับสนุนส่งการเปลี่ยนแปลงได้อย่างไร

2
เหตุใดจึงมีข้อ จำกัด () ใหม่ใน C # แต่ไม่มีข้อ จำกัด อื่นที่คล้ายคลึงกัน
ใน C # generics เราสามารถประกาศข้อ จำกัด สำหรับพารามิเตอร์ชนิดจะมีคอนสตรัคเริ่มต้นด้วยการพูดว่าT where T : new()อย่างไรก็ตามไม่มีข้อ จำกัด อื่น ๆ เช่นนี้ที่ถูกต้อง - new(string)ตัวอย่างเช่น ฯลฯ จากมุมมองของการออกแบบภาษาและ / หรือการนำไปใช้งานอะไรคือสาเหตุของสิ่งนี้? มีบางอย่างในการทำงานของคอนสตรัคเตอร์หรือวิธีการใช้งานระบบพิมพ์ที่ห้ามสิ่งนี้ (หรืออย่างน้อยก็ทำให้ยากขึ้น)? ถ้าเป็นเช่นนั้นมันคืออะไร? ผมจำได้อ่านบางที่default(T)จริงคอมไพล์สำหรับnew T() T : structมันเกี่ยวข้องกับสิ่งนี้หรือเปล่า? หรือเป็นเพียงการตัดสินใจออกแบบเพื่อหลีกเลี่ยงการทำให้ภาษาซับซ้อนเกินไป?

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

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

8
ประโยชน์ของการสลับใช้ Strings ใน Java 7 คืออะไร
เมื่อฉันเริ่มโปรแกรมใน Java ความจริงที่ว่างบ switch ไม่ได้ทำให้สายผิดหวัง จากนั้นในการใช้ Enums ฉันตระหนักถึงประโยชน์ที่คุณได้รับกับพวกเขาแทนที่จะส่งผ่านค่าดิบ - ความปลอดภัยของประเภท ฉันกำลังดิ้นรนที่จะนึกถึงสถานการณ์ที่มี SE7 ตอนนี้ฉันตัดสินใจที่จะใช้สวิตช์ที่มีสตริงเป็นอินพุตแทนที่จะเป็น Enums หากพวกเขาจะดำเนินการผ่านการเปลี่ยนสตริงทั้งหมด (เช่นมากกว่าการแข่งขันบางส่วนหรือ regex) ก็ดูเหมือนจะไม่ให้เหตุผลน้อยกว่ารหัสที่จะเปลี่ยน และด้วยเครื่องมือ IDE และอัตราส่วนการอ่าน - เขียนของการเขียนโค้ดฉันจะมีความสุขมากขึ้นในการสร้าง Enum พิเศษโดยอัตโนมัติมากกว่าการส่งผ่านค่าสตริง พวกเขานำประโยชน์อะไรมาให้เราในฐานะโปรแกรมเมอร์ จานหม้อไอน้ำน้อยลงหรือไม่ ไม่รู้สึกว่าภาษากำลังใช้งานคุณสมบัตินี้ แม้ว่าอาจจะมีกรณีการใช้งานที่ฉันมองเห็น

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

4
การแก้ไขปัญหาการรั่วไหลของหน่วยความจำมีความสำคัญอย่างไร
ฉันพบโดย Valgring ว่าบางโปรแกรม GTK + รั่วหน่วยความจำ การแก้ไขรอยรั่วนั้นสำคัญขนาดไหน? ฉันหมายถึงบ่อยครั้งที่โปรแกรมเหล่านั้นทำงานได้ดีมาก แต่ในทางกลับกันเราไม่สามารถมั่นใจได้ว่าหากต้องการคัดลอกส่วนหนึ่งของรหัสที่รั่วไปยังโปรแกรมอื่น และฉันไม่แน่ใจว่าแนวคิดของ GTK + - โปรแกรมทำงานเร็วหรือไม่ดังนั้นจึงมีการรั่วไหล ดังนั้นหากบางครั้งฉันพบว่าหน่วยความจำรั่วในโปรแกรมโอเพนซอร์ซฉันควรแก้ไขหรือมีปัญหาเรื่องประสิทธิภาพตัวอย่างดังนั้นความคิดดั้งเดิมของโปรแกรมเมอร์คือการเขียนโค้ดรั่วเล็ก ๆ
19 c  memory 

1
เหตุใดจึงต้องใช้คลาสเมื่อตั้งโปรแกรม tkinter gui ใน python
ฉันเขียนโปรแกรมใน python เป็นหลักและตั้งโปรแกรม GUI สองตัวด้วย Tkinter การสอนทุกครั้งที่ฉันเคยเห็นได้แนะนำให้กำหนดและใช้คลาสสำหรับ GUI แต่ GUI ของฉันทำงานได้อย่างไร้ที่ติโดยใช้เพียงโพรซีเดอร์เท่านั้น ทำไมต้องใช้คลาส ดูเหมือนว่าจากมุมมองของฉันเพียงแค่เพิ่มเลเยอร์ความซับซ้อนและโค้ดที่ไม่จำเป็นออกไป
19 python  gui  class 

1
ฉันจะทดสอบโปรแกรมอ่านไฟล์ได้อย่างไร
ฉันกำลังทำงานในโครงการที่มีรูปแบบไฟล์ไม่กี่รูปแบบ รูปแบบบางรูปแบบถูกระบุโดย. xsds รูปแบบอื่น ๆ โดยใช้เอกสารประกอบในเว็บไซต์ที่เกี่ยวข้องและบางรูปแบบเป็นรูปแบบภายในที่กำหนดเองที่ไม่มีเอกสารประกอบ Mwahahahaha มีปัญหาอะไร? ฉันต้องการทดสอบตัวอ่านไฟล์ของฉัน แต่ฉันไม่แน่ใจว่าจะทำสิ่งนี้ได้อย่างไร การไหลของแอพลิเคชันเป็นเช่นนี้: file.___ ===> read by FileReader.java ===> which creates a Model object ที่FileReaderอินเตอร์เฟซอยู่ public interface FileReader { public Model read(String filename); } กระบวนการModelมีจำนวนของคุณสมบัติที่บรรจุเมื่ออ่านไฟล์ มันดูเหมือนอะไร public class Model { List<String> as; List<String> bs; boolean isAPain = true; // ... } ฉันลองทำอะไร …

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

11
คอมไพเลอร์ C ++ เอาวงเล็บที่ไม่มีประโยชน์ออกหรือไม่
รหัสจะ int a = ((1 + 2) + 3); // Easy to read ทำงานช้ากว่า int a = 1 + 2 + 3; // (Barely) Not quite so easy to read หรือคอมไพเลอร์สมัยใหม่ฉลาดพอที่จะลบ / ปรับวงเล็บ "ไร้ประโยชน์" ดูเหมือนว่าจะเป็นข้อกังวลในการเพิ่มประสิทธิภาพเล็ก ๆ น้อย ๆ แต่การเลือก C ++ มากกว่า C # / Java / ... นั้นเกี่ยวกับการปรับให้เหมาะสมที่สุด (IMHO)

5
อัลกอริทึมในการค้นหามวลรวมของ“ Granola Bar” - โครงสร้างที่เหมือนกันไหม?
ฉันเป็นนักวิจัยวิทยาศาสตร์ดาวเคราะห์และอีกหนึ่งโครงการที่ฉันกำลังทำอยู่คือการจำลองแบบN -body เกี่ยวกับวงแหวนของดาวเสาร์ เป้าหมายของการศึกษาครั้งนี้คือการจับก้อนกอเข้าด้วยกันภายใต้แรงโน้มถ่วงของตัวเองและวัดมวลรวมของกลุ่มกับความเร็วเฉลี่ยของอนุภาคทั้งหมดในเซลล์ เรากำลังพยายามหาว่าสิ่งนี้สามารถอธิบายการสังเกตการณ์บางอย่างที่ทำโดยยานแคสสินีในช่วงฤดูร้อนดาวเสาร์เมื่อสิ่งมีชีวิตขนาดใหญ่เห็นโครงสร้างเงาขนาดใหญ่บนวงแหวนที่เกือบจะเป็นขอบ ด้านล่างนี้เป็นภาพหน้าจอของเวลาที่กำหนดใด ๆ ที่ดูเหมือน (แต่ละอนุภาคมีเส้นผ่านศูนย์กลาง 2 เมตรและเซลล์จำลองเองนั้นมีความยาวประมาณ 700 เมตร) รหัสที่ฉันใช้อยู่นั้นได้กระจายความเร็วเฉลี่ยในทุกการประทับเวลาแล้ว สิ่งที่ฉันต้องทำคือหาวิธีที่จะกำหนดมวลของอนุภาคในกอและไม่ใช่อนุภาคที่หลงทางระหว่างพวกมัน ฉันรู้ว่าทุกตำแหน่งของอนุภาคมวลขนาดและอื่น ๆ แต่ฉันไม่รู้ว่ามันง่ายขนาดนั้นอนุภาค 30,000-40,000 พร้อมกับ 102,000-105,000 ประกอบเป็นเส้นเดียวต่อสายตามนุษย์ชัดเจน ดังนั้นอัลกอริทึมที่ฉันต้องเขียนจะต้องเป็นรหัสที่มีพารามิเตอร์ที่ผู้ใช้ป้อนน้อยที่สุดเท่าที่จะเป็นไปได้ (สำหรับการทำซ้ำและความเที่ยงธรรม) ที่จะผ่านตำแหน่งอนุภาคทั้งหมดแล้วคำนวณว่าอนุภาคใดเป็นกระจุก มวล. มันจะดีถ้ามันสามารถทำได้สำหรับ "แต่ละ" กลุ่ม / สาระเมื่อเทียบกับทุกสิ่งที่อยู่ในเซลล์ แต่ฉันไม่คิดว่าจริง ๆ แล้วฉันต้องการแยกมันออก สิ่งเดียวที่ฉันคิดคือทำการคำนวณระยะทางN 2โดยที่ฉันคำนวณระยะห่างระหว่างทุกอนุภาคและถ้าบอกว่า 100 อนุภาคที่อยู่ใกล้ที่สุดนั้นอยู่ในระยะทางที่กำหนดจากนั้นอนุภาคนั้นจะถูกพิจารณาเป็นส่วนหนึ่งของ กลุ่ม แต่ดูเหมือนว่าจะเลอะเทอะมากและฉันหวังว่าคุณ CS คนและโปรแกรมเมอร์อาจจะรู้วิธีการแก้ปัญหาที่สง่างามมากขึ้น? แก้ไขได้ด้วยโซลูชั่นของฉัน: อะไรที่ฉันไม่ได้ที่จะใช้การจัดเรียงของที่ใกล้ที่สุดเพื่อนบ้าน / วิธีการคลัสเตอร์และทำอย่างรวดเร็ว-N-สกปรกN 2ดำเนินการครั้งแรก ดังนั้นเอาทุกอนุภาคคำนวณระยะทางไปยังอนุภาคอื่นทั้งหมดและเกณฑ์สำหรับในกลุ่มหรือไม่ก็คือว่ามีอนุภาคNอยู่ภายในระยะทางdหรือไม่(พารามิเตอร์สองตัวที่ต้องตั้งค่านิรนัยโชคไม่ดี คำตอบ / …

1
การเขียนโปรแกรม Erlang และ Go พร้อมกันความแตกต่างระหว่าง CSP และนักแสดง?
ฉันกำลังดูการเขียนโปรแกรมพร้อมกันในภาษาโปรแกรม Erlang และ Go ตามการค้นพบของฉันพวกเขาใช้โมเดลนักแสดงและ CSP ตามลำดับ แต่ฉันก็ยังสับสนกับ CSP และนักแสดงต่างกันอย่างไร มันแตกต่างทางทฤษฎีเพียงอย่างเดียว แต่เป็นแนวคิดเดียวกันหรือไม่

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