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

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


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

10
เราควรฝากรายละเอียดการติดต่อไว้ในซอร์สโค้ดหรือไม่?
ฉันมักจะปล่อยให้ที่อยู่อีเมลของฉันเป็นมารยาทในกรณีที่มีคนต้องการถามฉันเกี่ยวกับเรื่องนี้ในภายหลัง คนอื่น ๆ ปล่อยให้ข้อมูลมากไปหรือน้อยไปกว่านั้น? ไม่มีใครฝากหมายเลขโทรศัพท์หรือไม่?

9
อารัมภบทมีประโยชน์อย่างมืออาชีพหรือไม่?
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันเรียน Prolog เมื่อหลายปีก่อนในมหาวิทยาลัย ในช่วงชีวิตการงานของฉันฉันไม่จำเป็นต้องใช้ Prolog ฉันพลาดอะไรเป็นพิเศษไหม? เท่าที่ฉันจำได้ว่า Prolog ต้องการความคิดที่แตกต่างอย่างสิ้นเชิงเมื่อเทียบกับภาษาการเขียนโปรแกรมที่โดดเด่น Prolog เคยใช้บางสิ่งบางอย่างที่มีประโยชน์อย่างมืออาชีพหรือไม่?

1
Microsoft ทำงานกับ. NET นานแค่ไหนก่อนที่จะเผยแพร่
ด้วยทั้ง CLI, CTS, CLS และอื่น ๆ ไม่เพียง แต่พวกเขาจะปล่อยแพลตฟอร์ม / โครงสร้างพื้นฐานที่ทรงพลัง แต่พวกเขาก็ปล่อยสเปคทั้งหมดที่อธิบายไว้ ฯลฯ มันรองรับภาษาที่ไม่มีที่สิ้นสุดจำนวนมากแพลตฟอร์มและอื่น ๆ ปริมาณงานแม้กระทั่งพฤติกรรมเช่น Microsoft - โดยเฉพาะอย่างยิ่งเมื่อปรากฎว่าพวกเขาทำได้ดีมาก นานแค่ไหนที่พวกเขาทำงานเกี่ยวกับเรื่องนี้ก่อนที่จะปล่อย (. NET 1.0)?

13
เป็นความจริงหรือไม่ที่คอมไพเลอร์ C เวอร์ชันแรกใช้เวลาหลายสิบนาทีและต้องการฟล็อปปี้ดิสก์ในระหว่างขั้นตอนต่างๆ
แรงบันดาลใจจากคำถามนี้ ฉันได้ยินมาว่าคอมไพเลอร์รุ่นแรก ๆ ของ C สำหรับคอมพิวเตอร์ส่วนบุคคล (ฉันเดาว่ามันประมาณปี 1980) อาศัยอยู่ในฟลอปปีดิสก์สองหรือสามแผ่นและเพื่อรวบรวมโปรแกรมที่ต้องแทรกดิสก์ด้วย "First Pass" "การผ่านครั้งแรก" จากนั้นเปลี่ยนเป็นดิสก์ด้วย "การผ่านครั้งที่สอง" เรียกใช้จากนั้นทำเช่นเดียวกันสำหรับ "การผ่านครั้งที่สาม" แต่ละรอบวิ่งเป็นเวลาหลายสิบนาทีดังนั้นนักพัฒนาจึงเสียเวลามากในกรณีที่พิมพ์ผิด การเรียกร้องนั้นเป็นจริงมากแค่ไหน? ตัวเลขและรายละเอียดที่แท้จริงคืออะไร
15 history  compiler 

10
สิ่งที่ดีที่สุดสำหรับการเข้ารหัสในสภาพแวดล้อมการรวบรวมช้า
ฉันเคยเขียนโค้ดใน C # ในรูปแบบ TDD - เขียน / หรือเปลี่ยนรหัสเล็ก ๆ ของคอมไพล์อีกครั้งใน 10 วินาทีของการแก้ปัญหาทั้งหมดเรียกใช้การทดสอบอีกครั้งและอีกครั้ง ง่าย... วิธีการพัฒนานั้นใช้งานได้ดีมากสำหรับฉันสองสามปีจนกระทั่งเมื่อปีที่แล้วเมื่อฉันต้องกลับไปที่การเข้ารหัส C ++ และรู้สึกว่าผลผลิตของฉันลดลงอย่างมากตั้งแต่นั้นมา ภาษา C ++ ไม่ใช่ปัญหา - ฉันมีประสบการณ์การพัฒนา C ++ ค่อนข้างมาก แต่ในอดีต ผลผลิตของฉันยังคงโอเคสำหรับโครงการขนาดเล็ก แต่มันแย่ลงเมื่อการเพิ่มขนาดของโครงการและเมื่อรวมเวลาในการรวบรวม 10+ นาทีมันแย่มาก และถ้าฉันพบข้อผิดพลาดฉันต้องเริ่มต้นการรวบรวมอีกครั้ง ฯลฯ นั่นเป็นเพียงการทำลายอย่างหมดจด ดังนั้นฉันจึงสรุปว่าในชิ้นเล็ก ๆ (เหมือนก่อน) ไม่เป็นที่ยอมรับ - คำแนะนำใด ๆ ที่ฉันจะทำให้ตัวเองกลายเป็นนิสัยเก่าของการเข้ารหัสเป็นเวลาหนึ่งชั่วโมงหรือมากกว่านั้นเมื่อตรวจสอบโค้ดด้วยตนเอง (โดยไม่ต้องพึ่งพาคอมไพเลอร์ C # ที่รวดเร็ว) และทำการทดสอบหน่วย / การเรียกใช้ซ้ำอีกครั้งหนึ่งครั้งในสองสามชั่วโมง …

7
บริษัท ขนาดใหญ่ของนักพัฒนาซอฟต์แวร์ตรวจสอบข้อบกพร่องในโปรแกรมของพวกเขาอย่างไร
ฉันสงสัยว่า บริษัท ผู้พัฒนาซอฟต์แวร์รายใหญ่ตรวจสอบข้อบกพร่องในโปรแกรมของพวกเขาอย่างไร พวกเขาแค่ทดสอบในคอมพิวเตอร์หลายเครื่องหรือไม่

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

3
เสมือนจริงหรือนามธรรมสิ่งที่อยู่ในชื่อ?
ในขณะที่พูดคุยเกี่ยวกับคำถามเกี่ยวกับฟังก์ชั่นเสมือนจริงบน Stack Overflow ฉันสงสัยว่ามีการตั้งชื่ออย่างเป็นทางการสำหรับฟังก์ชั่นเสมือนจริง (นามธรรม) และไม่ใช่บริสุทธิ์หรือไม่ ฉันใช้วิกิพีเดียเป็นประจำสำหรับข้อมูลของฉันซึ่งระบุว่าฟังก์ชั่นเสมือนที่บริสุทธิ์และไม่บริสุทธิ์เป็นคำทั่วไป น่าเสียดายที่บทความไม่ได้สำรองไว้พร้อมกับที่มาหรือข้อมูลอ้างอิง เพื่ออ้างอิงคำตอบของ Jon Skeet กับคำตอบของฉันว่าบริสุทธิ์และไม่บริสุทธิ์เป็นคำทั่วไปที่ใช้: @ สตีเว่น: อืม ... เป็นไปได้ แต่ข้าเคยเห็นมันในบริบทของซีพลัสพลัสมาก่อน ฉันสงสัยว่าทุกคนที่พูดถึงพวกเขาน่าจะมีพื้นหลังเป็น C ++ :) คำนี้มาจากภาษา C ++ หรือเป็นคำนิยามหรือนำไปใช้เป็นภาษาแรกและเป็นศัพท์ทางวิทยาศาสตร์ที่ 'เป็นทางการ' หรือไม่ UPDATE: Frank Shearar ให้ลิงก์ไปยังคำอธิบายของSIMULA 67 Common Base Language (1970) อย่างเป็นประโยชน์ ภาษานี้ดูเหมือนว่าจะเป็นภาษาแรกที่จะแนะนำคำหลัก OO เป็นระดับ , วัตถุและยังเสมือนเป็นแนวคิดที่เป็นทางการ มันไม่ได้กำหนดบริสุทธิ์ / ไม่ใช่บริสุทธิ์หรือนามธรรมแต่มันไม่สนับสนุนแนวคิด ใครเป็นคนกำหนด

2
วิธีการโอเพนซอร์สโครงการที่มีที่เก็บ git มีสื่อที่มีลิขสิทธิ์ในประวัติศาสตร์?
ฉันต้องการเผยแพร่โครงการซอฟต์แวร์บันทึกข้อมูลเสียงด้วยลายนิ้วมือภายใต้ลิขสิทธิ์ฟรี แต่พื้นที่เก็บข้อมูลมีไฟล์เสียงที่มีลิขสิทธิ์ กรณีทดสอบยังใช้ไฟล์เหล่านี้ในปัจจุบัน ฉันจะปล่อยรหัสต่อสาธารณะด้วยประวัติเวอร์ชันสูงสุด แต่ไม่ละเมิดลิขสิทธิ์ได้อย่างไร รายละเอียด: รหัสเป็นรุ่นภายใต้คอมไพล์ เราจะยุบมันทั้งหมดกลับเป็นสาขาเดียวก่อนที่จะปล่อย มีข้อมูลเสียง 400 MB ไฟล์บางไฟล์เป็นเพลงที่ได้รับอนุญาตฟรีจาก Jamendo ส่วนไฟล์อื่น ๆ เป็น MP3 จากคอลเล็กชันส่วนตัวของเรา ไม่ว่าเราจะใช้วิธีใดเราจะเก็บสำเนา repo ดั้งเดิมที่ไม่เปลี่ยนรูปเสมอเพื่อไม่ให้ทำลายประวัติโครงการ คำถามหลัก: วิธีจัดการกับการเปิดตัวสาธารณะ? ลบล้างประวัติทั้งหมดของไฟล์ที่เป็นปัญหาจากที่เก็บ git และปล่อย repo ที่แก้ไข (v64 ชี้วิธีการทำเช่นนี้) อีกทางเลือกหนึ่งให้จับภาพสถานะปัจจุบันของรหัสและไม่ต้องกังวลว่าจะมีประวัติสาธารณะของรหัสเผยแพร่ล่วงหน้า คำถามด้าน: เราจะหลีกเลี่ยงภาวะที่กลืนไม่เข้าคายไม่ออกนี้ได้อย่างไรในตอนแรกเนื่องจากบางครั้งจำเป็นต้องใช้รหัสหรือสื่อส่วนตัวสำหรับช่วงแรก ๆ ของโครงการ

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

4
มันเป็น "ผิด" / การออกแบบที่ไม่ดีที่จะนำคนงานกระทู้ / พื้นหลังในชั้นเรียนหรือไม่?
ฉันมีชั้นเรียนที่จะอ่านจาก Excel (C # และ. Net 4) และในชั้นเรียนนั้นฉันมีผู้ทำงานเบื้องหลังที่จะโหลดข้อมูลจาก Excel ในขณะที่ UI สามารถตอบสนองได้ คำถามของฉันมีดังต่อไปนี้: การออกแบบที่ไม่ดีที่จะมีคนทำงานเบื้องหลังในชั้นเรียนหรือไม่? ฉันควรสร้างชั้นเรียนโดยไม่มีมันและใช้ผู้ทำงานเบื้องหลังเพื่อทำงานในชั้นเรียนนั้นหรือไม่? ฉันไม่เห็นปัญหาใด ๆ ในการสร้างชั้นเรียนของฉันด้วยวิธีนี้ แต่จากนั้นอีกครั้งฉันเป็นมือใหม่ดังนั้นฉันจึงคิดว่าฉันจะทำให้แน่ใจก่อนที่ฉันจะดำเนินการต่อ ฉันหวังว่าคำถามนี้เกี่ยวข้องกับที่นี่เพราะฉันไม่คิดว่ามันควรจะเป็นแบบ stackoverflow เนื่องจากรหัสของฉันทำงานได้นี่เป็นเพียงปัญหาการออกแบบ

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

4
งานคอมไพเลอร์ - จำเป็นต้องมีการศึกษาเท่าไหร่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามดังนั้นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันได้รับแรงบันดาลใจจากการก่อสร้างคอมไพเลอร์เป็นวิชาคำถามและคิดว่าฉันจะถามคำถามนี้ ฉันได้ยินจากคนไม่กี่คนที่พวกเขามี "ทีมคอมไพเลอร์" ที่ดี (อย่าถามที่ฉันได้ยินฉันจำไม่ได้) ดังนั้นทำให้ฉันสงสัยว่าทำไมคนถึงได้ทำงานในทีมเช่นนี้ ? ฉันรู้ว่ามีชั้นเรียนในหลักสูตรปริญญาตรีและเป็นเช่นนั้น แต่เป็นสิ่งที่การศึกษาระดับปริญญาโทจะต่ำสุด (เช่นปริญญาโทอย่างน้อย)? ฉันเริ่มต้นปริญญาโทสาขาวิทยาการคอมพิวเตอร์ในอีกสองเดือนและโรงเรียนที่ฉันกำลังจะมีสองชั้นเรียนคอมไพเลอร์ซึ่งจะเพียงพอที่จะได้งานพัฒนาคอมไพเลอร์หรือจะต้องใช้เวลามากขึ้นหรือไม่

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