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

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

11
การทำงานพร้อมกัน: คุณเข้าใกล้การออกแบบและดีบักการใช้งานได้อย่างไร
ฉันได้พัฒนาระบบที่เกิดขึ้นพร้อมกันมาหลายปีแล้วและฉันก็เข้าใจดีในเรื่องนี้แม้จะขาดการฝึกอบรมอย่างเป็นทางการ (เช่นไม่มีระดับ) มีภาษาใหม่ไม่กี่ภาษาที่ได้รับความนิยมอย่างน้อยพูดถึงเมื่อเร็ว ๆ นี้ซึ่งได้รับการออกแบบมาเพื่อทำให้การทำงานพร้อมกันง่ายขึ้นเช่น Erlang และ Go ดูเหมือนว่าวิธีการของพวกเขาในการทำงานพร้อมกันนั้นสะท้อนถึงประสบการณ์ของฉันเองว่าจะทำให้ระบบปรับขนาดได้และใช้ประโยชน์จากหลายคอร์ / โปรเซสเซอร์ / เครื่อง อย่างไรก็ตามฉันพบว่ามีเครื่องมือน้อยมากที่จะช่วยให้เห็นภาพสิ่งที่คุณตั้งใจจะทำและยืนยันว่าอย่างน้อยคุณก็ใกล้เคียงกับวิสัยทัศน์ดั้งเดิมของคุณ การดีบักโค้ดที่เกิดขึ้นพร้อมกันอาจเป็นฝันร้ายที่มีภาษาที่ไม่ได้ออกแบบมาสำหรับการทำงานพร้อมกัน (เช่น C / C ++, C #, Java, ฯลฯ ) โดยเฉพาะอย่างยิ่งมันเป็นไปไม่ได้ที่จะสร้างเงื่อนไขที่เกิดขึ้นใหม่ในระบบเดียวในสภาพแวดล้อมการพัฒนาของคุณ ดังนั้นอะไรคือแนวทางของคุณในการออกแบบระบบเพื่อจัดการกับการทำงานพร้อมกันและการประมวลผลแบบขนาน? ตัวอย่าง: คุณคิดได้อย่างไรว่าอะไรจะเกิดขึ้นพร้อมกันกับสิ่งที่ต้องเรียงตามลำดับ? คุณจะสร้างเงื่อนไขข้อผิดพลาดและดูว่าเกิดอะไรขึ้นเมื่อแอปพลิเคชันดำเนินการอย่างไร คุณเห็นภาพปฏิสัมพันธ์ระหว่างส่วนต่าง ๆ ที่เกิดขึ้นพร้อมกันของแอปพลิเคชันอย่างไร ฉันมีคำตอบของตัวเองสำหรับสิ่งเหล่านี้ แต่ฉันก็ต้องการที่จะเรียนรู้เพิ่มเติมอีกเล็กน้อย แก้ไข จนถึงตอนนี้เรามีข้อมูลที่ดีมากมาย บทความหลายบทความที่เชื่อมโยงนั้นดีมากและฉันได้อ่านมาแล้วบางส่วน ประสบการณ์ส่วนตัวของฉันกับการเขียนโปรแกรมพร้อมกันทำให้ฉันเชื่อว่าคุณต้องการความคิดที่แตกต่างจากการเขียนโปรแกรมตามลำดับ ความแตกแยกทางจิตใจนั้นกว้างพอ ๆ กับความแตกต่างระหว่างการเขียนโปรแกรมเชิงวัตถุและการโปรแกรมเชิงกระบวนวิธี ฉันต้องการชุดคำถามนี้เพื่อมุ่งเน้นที่กระบวนการคิดที่จำเป็น (เช่นทฤษฎี) เพื่อเข้าหาคำตอบอย่างเป็นระบบ เมื่อให้คำตอบที่เป็นรูปธรรมมากขึ้นมันจะช่วยยกตัวอย่าง - สิ่งที่คุณต้องผ่านเป็นการส่วนตัว เป้าหมายสำหรับค่าหัว อย่าบอกฉันว่าฉันควรทำอย่างไร …

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

19
การสัมภาษณ์ทางเทคนิค 10 นาที [ปิด]
ฉันต้องประเมินนักเรียนใหม่หลายสิบคนอย่างรวดเร็วอย่างรวดเร็ว ฉันมีเวลา 30 นาทีในการพบปะกับแต่ละคน (ในสองหรือสามวัน) ฉันต้องการใช้เวลาส่วนใหญ่เพื่อหารือเกี่ยวกับด้านที่ไม่ใช่ด้านเทคนิค ดังนั้นฉันวางแผนที่จะใช้เวลา 10 นาทีสำหรับคำถามทางเทคนิค คำถามเดียวกันสำหรับพวกเขาทั้งหมด พวกเขาทั้งหมดได้รับการว่าจ้างแล้ว (เป็นนักเรียน) สิ่งที่ฉันต้องรู้คือระดับเฉลี่ยเพื่อเตรียมการฝึกอบรม เป็นการยากที่must be progressiveจะกำหนดระดับสำหรับแต่ละระดับ ระดับที่ฉันจะเฉลี่ยและฉันจะทำค่าเฉลี่ยในแต่ละคำถามด้วย หากคุณมีเพียง 10 นาทีและ 10 คำถามในการถามผู้สมัคร 10 อันดับแรกของคุณคืออะไร
37 interview 

5
มารยาทที่ดีในการถามนายจ้างว่าพวกเขาให้คะแนนอย่างไรกับการทดสอบ Joel? [ปิด]
การสัมภาษณ์นักพัฒนานั้นแตกต่างจากที่อื่น ๆ ส่วนใหญ่เพราะคุณไม่เพียง แต่กังวลเกี่ยวกับคนที่คุณทำงานผลประโยชน์คำบรรยายลักษณะงาน ฯลฯ คุณยังมี EXTRA ที่ต้องกังวลหลังจากได้งาน การเขียนสองแอปพลิเคชันที่มีข้อกำหนดที่แน่นอนอาจแตกต่างกันอย่างมากหากคุณทำงานในสภาพแวดล้อมที่มีเสียงดังและเงียบโดยใช้ VS2003 / .NET 2.0 เทียบกับ VS210 / .NET 4.0. โดยใช้ SVN กับ VSS การให้ Joel Test แบบตรงขึ้นเป็นเรื่องที่เหมาะสมหรือไม่ ฉันพยายามถามคำถามเป็นจำนวนมากเพื่อให้ได้สภาพแวดล้อมที่ฉันจะทำงานซึ่งเป็นสิ่งสำคัญอย่างยิ่งจากมุมมองของฉัน แต่สิ่งที่ดีที่สุดในการตัดการไล่ล่าและถามคำถามที่ยากลำบาก (เช่นพวกเขาถามคุณในช่วง บทสัมภาษณ์เดียวกัน) หมายเหตุ: จาก "การทดสอบ Joel" ฉันหมายถึงรายการเฉพาะของสิ่งที่จัดการเบรกเกอร์ที่สำคัญสำหรับคุณ (ไม่จำเป็นต้องโจเอล) แต่คุณอาจไม่มีเวลาที่จะออกไปใช้วิธี "สนทนา" แบบสบาย ๆ แบบดั้งเดิมในการถามพวกเขา ดังนั้นคุณตัดสินใจว่าจะส่งอีเมลหรือกำหนดเวลาการประชุมอีกครั้งหรือถามคนอื่น ๆ
37 joel-test 

12
เจ้านายขอทำงานล่วงเวลา แต่ภายใต้เรดาร์ [ปิด]
เมื่อวันก่อนเจ้านายของฉัน (เรียกเขาว่า Colfax) ขอให้ฉันทำงานในโครงการ แต่ฉันไม่ควรพูดคุยกับใคร (รวมถึงโปรแกรมเมอร์คนอื่นในทีมของฉัน) และต้องทำนอกเวลางานปกติ ชั่วโมง ในการแลกเปลี่ยน Colfax เสนอวันหยุดพักร้อน "off-the-book" ให้ฉันเท่ากับชั่วโมงที่ใช้ในโครงการ เมื่อฉันถาม Colfax ว่าเจ้านายของเขา (ลองเรียกเขาว่า Schuyler) รู้ว่าเขาเสนออะไร Colfax บอกว่า Schuyler ไม่รู้และบอกเป็นนัยว่าเขา (Colfax) จะมีปัญหาหาก Schuyler ค้นพบ เจ้านายของฉันยังบอกด้วยว่าถ้าฉันจะไปพร้อมกับสิ่งนี้ความพยายามของฉันจะถูกจดจำสำหรับ "การพิจารณาในอนาคต" งานนี้มีไว้สำหรับนายจ้างของเราดังนั้นทุกสิ่งที่มีในการขึ้นและ - up อย่างไรก็ตามฉันมีความรู้สึกไม่สบายใจเกี่ยวกับเรื่องทั้งหมด ส่วนหนึ่งของฉันต้องการทำงานในโครงการ - อย่างที่คุณรู้ - การเขียนโค้ดและการเขียนโค้ดบางอย่างเจ๋งและเรียบง่ายพอสมควร ในทางกลับกันสิ่งทั้งปวงนั้นดูหยาบคายและแฝงอยู่ ฉันจะเป็น "พนักงานที่ไม่ดี" เพื่อปฏิเสธงานพิเศษหรือไม่? หรือฉันถูกต้องตามหลักจริยธรรมที่จะไม่ทำงาน? UPDATE ฉันรู้มานานแล้วตั้งแต่ฉันโพสต์คำถามนี้ แต่ฉันคิดว่าคนที่เข้าร่วมในการสนทนาอาจสนใจที่จะรู้ว่า Colfax เลิกไปสองสามเดือนหลังจากการสนทนานี้ ดังนั้นถ้าฉันได้ติดตามไปด้วยมันคงไม่มีประโยชน์อะไร ขอบคุณสำหรับความคิดเห็นทุกคน

8
ทำงานเป็นโปรแกรมเมอร์ แต่เพียงผู้เดียวใน บริษัท ที่ไม่ใช้เทคโนโลยี [ปิด]
ฉันทำงานเป็นนักพัฒนาส่วนหลังผู้พัฒนาส่วนหน้าผู้ดูแลระบบผู้ให้ความช่วยเหลือและผู้ที่รู้จักคอมพิวเตอร์ทุกคนใน บริษัท การตลาดขนาดเล็กประมาณ 15 คน ฉันสงสัยว่าคนอื่น ๆ จะสามารถแบ่งปันประสบการณ์การบินเดี่ยวกับ บริษัท ที่ไม่จำเป็นต้องโน้มเอียงไปทางอุตสาหกรรมเทคโนโลยีหรือไม่ เดิมทีฉันรับงานเพื่อเปลี่ยนจากผู้พัฒนา / ผู้ออกแบบ Front-end ไปเป็น coder เต็มเวลา มันเป็นประสบการณ์ที่ดีจนถึงจุดหนึ่ง แน่นอนฉันจะได้รับบทบาทของโปรแกรมเมอร์ 'Rock Star' - เพราะตรงไปตรงมาไม่มีใครเข้าใจงานของฉันจริงๆ เมื่อเร็ว ๆ นี้มันให้ความรู้สึกเหมือนอยู่คนเดียว ฉันไม่ค่อยได้ความคิดจากผู้คนและทุกคนก็มองฉันเหมือนฉันมีพลังเวทย์มนตร์ที่จะทำให้คอมพิวเตอร์ทุกเครื่องใช้งานได้ ฉันยังรู้สึกว่ามีการตัดการเชื่อมต่อที่แข็งแกร่งเมื่อเทียบกับสิ่งที่เราพูดว่าเราต้องการ (โครงการที่มีตารางเวลาการพัฒนาขนาดใหญ่เดือนยาว) กับสิ่งที่เราทำจริง ๆ (คัดลอกแก้ไขเว็บไซต์ของเราซ้ำแล้วซ้ำอีก) ดังนั้นใครอีกคนที่คิดว่าตัวเองเป็น 'คนที่มีเทคโนโลยี' ใน บริษัท ที่คิดว่าเทคโนโลยีนั้นมีความมหัศจรรย์และสิ่งที่คุณนำมาใช้กับสถานการณ์ของคุณคืออะไร?

19
คุณจะป้องกันการละเมิดลิขสิทธิ์ซอฟต์แวร์ของคุณได้อย่างไร [ปิด]
มันยังคุ้มกับการปกป้องซอฟต์แวร์ของเราจากการละเมิดลิขสิทธิ์หรือไม่? มีวิธีที่มีประสิทธิภาพพอสมควรในการป้องกันหรืออย่างน้อยทำให้การละเมิดลิขสิทธิ์ทำได้ยากหรือไม่?
37 security 

8
มีเครื่องมือในการกำหนดรหัสที่คล้ายคลึงกันหรือไม่ [ปิด]
ฉันไม่ได้พูดถึงเครื่องมือต่าง ๆ ฉันต้องการตรวจสอบว่าโครงการมีรหัสที่อาจได้รับ "refactored" จากโครงการอื่นหรือไม่ อาจเป็นไปได้ว่าชื่อฟังก์ชันชื่อตัวแปรและอะไรที่จะเปลี่ยนไป เงื่อนไขอาจถูกย้อนกลับเป็นต้น
37 tools  comparison 

11
คุณตอบคำถาม“ บอกตัวเองเกี่ยวกับตัวคุณหน่อย” ในการสัมภาษณ์อย่างไร? [ปิด]
ฉันถูกถามเรื่องนี้ในการสัมภาษณ์ไม่กี่ครั้ง และมันทำให้ฉันไม่ทันตั้งตัวประวัติความเป็นมืออาชีพและวิชาการของฉันอยู่ในประวัติย่อแล้วซึ่งผู้สัมภาษณ์มองอย่างชัดเจน มีอะไรอีกที่จะบอกเขา / เธอ? ฉันควรเริ่มต้นด้วยงานอดิเรกของฉันไหม ฉันชอบทำสวนหรือดูรูปภาพของ NSFW ที่ reddit ในเวลาว่างหรือไม่? คุณจะตอบคำถามนี้อย่างไรและอย่างไร? คุณมีคำตอบที่เตรียมไว้หรือไม่? ฉันผิดหรือเปล่าถ้าฉันคิดว่าคำถามนี้โง่ไปหน่อย อัปเดตมีคำตอบที่ดีมากมายสำหรับคำถามนี้ ฉันตกหลุมที่จะเลือกเป็นคำตอบที่ 'ถูกต้อง' เพราะส่วนใหญ่มีความฉลาดมาก ฉันพบการเขียนที่ดีในเรื่องนี้ มันบ้าไปหน่อยสำหรับรสนิยมของฉัน แต่มันน่าสนใจ: วิธีการแนะนำตัวเอง ... ฉันหมายถึงในทางปฏิบัติ
37 interview 

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

12
ความครอบคลุมของรหัส“ เพียงพอ” คือเท่าใด
เรากำลังเริ่มต้นผลักดันการครอบคลุมโค้ดในที่ทำงานของฉันและทำให้ฉันคิดว่า .... การครอบคลุมโค้ดมีมากพอเพียงใด เมื่อไหร่ที่คุณจะไปถึงจุดที่จะได้รับผลตอบแทนจากการครอบคลุมโค้ด? อะไรคือจุดหวานระหว่างความครอบคลุมที่ดีและไม่เพียงพอ มันแตกต่างกันไปตามประเภทของโครงการที่คุณทำ (เช่น WPF, WCF, มือถือ, ASP.NET) (นี่คือคลาส C # ที่เรากำลังเขียน)

23
การศึกษาในมหาวิทยาลัยนั้นคุ้มค่ากับโปรแกรมเมอร์ที่ดีหรือไม่? [ปิด]
ฉันได้ทำการออกแบบและเขียนโปรแกรมมานานเท่าที่ฉันจำได้ หากมีปัญหาการเขียนโปรแกรมฉันสามารถคิดออก (แม้ว่าจะเป็นที่ยอมรับอย่างแพร่หลายของ Stack Overflow ทำให้ฉันสามารถข้ามการหาและทำสิ่งต่าง ๆ ได้ในหลาย ๆ กรณี) ฉันได้สร้างเกมภาษาโปรแกรมที่ลึกลับและวิดเจ็ตและ Gizmos มากมาย ฉันกำลังทำงานกับภาษาการเขียนโปรแกรมทั่วไป ไม่มีอะไรที่ฉันทำได้ดีกว่าการเขียนโปรแกรม การศึกษาในมหาวิทยาลัยเป็นมากกว่าแค่พิธีการจริง ๆ หรือ?
37 education 

8
การใช้การแปลงซอร์สโค้ดเป็น Java bytecode คืออะไร
ถ้าใครต้องการ JVM ที่แตกต่างกันสำหรับสถาปัตยกรรมที่แตกต่างกันฉันไม่สามารถเข้าใจได้ว่าอะไรคือเหตุผลเบื้องหลังการแนะนำแนวคิดนี้ ในภาษาอื่นเราต้องการคอมไพเลอร์ที่แตกต่างกันสำหรับเครื่องที่แตกต่างกัน แต่ใน Java เราต้องการ JVM ที่แตกต่างกันดังนั้นอะไรคือตรรกะที่อยู่เบื้องหลังการนำเสนอแนวคิดของ JVM หรือขั้นตอนพิเศษนี้?
37 java  jvm  bytecode 

2
PHP: จะใช้อาร์เรย์เมื่อใดและเมื่อใดที่จะใช้วัตถุสำหรับการสร้างรหัสเก็บข้อมูลส่วนใหญ่
PHP เป็นภาษากระบวนทัศน์ผสมอนุญาตให้ใช้และส่งคืนชนิดข้อมูลที่ไม่ใช่วัตถุเช่นอาร์เรย์ ฉันถามคำถามเพื่อพยายามอธิบายแนวทางบางอย่างสำหรับการเลือกอาร์เรย์กับวัตถุเมื่อตัดสินใจเลือกสิ่งที่โปรแกรมสร้างขึ้นเพื่อใช้ในสถานการณ์เฉพาะ นี่เป็นคำถามเกี่ยวกับวิธีการเข้ารหัสข้อมูลโดยใช้การสร้างภาษา PHP และเมื่อมีวิธีหนึ่งที่น่าจะเลือกมากกว่าเพื่อการส่งผ่านข้อมูล (เช่น Service-Oriented Architecture หรือบริการบนเว็บ) ตัวอย่าง สมมติว่าคุณมีประเภทรายการประกอบด้วย {cost, name, part_number, item_count} โปรแกรมของคุณเรียกร้องให้แสดงประเภทรายการดังกล่าวหลายประเภทซึ่งคุณต้องการใช้อาร์เรย์เป็นที่เก็บด้านนอกเพื่อเก็บรายการแต่ละประเภทไว้ [คุณยังสามารถใช้ PHP เป็นArrayObjectสำหรับกระบวนทัศน์ OO แต่คำถามของฉันไม่เกี่ยวกับการที่ (นอก) อาร์เรย์] คำถามของฉันเกี่ยวกับวิธีเข้ารหัสข้อมูลประเภทรายการและเกี่ยวกับกระบวนทัศน์ที่จะใช้ PHP ช่วยให้คุณใช้หรือPHP Native ArraysPHP Objects ฉันสามารถเข้ารหัสข้อมูลดังกล่าวได้สองวิธีดังนี้: //PHP's associative arrays: $ret = array( 0 => array( 'cost' => 10.00, 'name' => 'item1', 'part_number' => 'zyz-100', 'item_count' …

6
การทดสอบหน่วยและฐานข้อมูล: ฉันจะเชื่อมต่อกับฐานข้อมูล ณ จุดใด?
มีคำตอบให้กับคำถามเกี่ยวกับวิธีการเรียนการทดสอบที่เชื่อมต่อกับฐานข้อมูลเช่นมี"เรียนให้บริการทดสอบควรเชื่อมต่อ ..."และ"การทดสอบหน่วย - ฐานข้อมูลแอปพลิเคคู่" ดังนั้นในระยะสั้นสมมติว่าคุณมีคลาส A ที่จำเป็นต้องเชื่อมต่อกับฐานข้อมูล แทนที่จะให้การเชื่อมต่อจริงคุณให้ A พร้อมกับอินเทอร์เฟซที่ A อาจใช้เพื่อเชื่อมต่อ สำหรับการทดสอบคุณใช้อินเทอร์เฟซนี้กับบางสิ่ง - โดยไม่ต้องเชื่อมต่อแน่นอน ถ้าคลาส B สร้างอินสแตนซ์ A ขึ้นมามันจะต้องผ่านการเชื่อมต่อฐานข้อมูล "ของจริง" ไปยัง A แต่นั่นหมายความว่า B เปิดการเชื่อมต่อฐานข้อมูล นั่นหมายถึงการทดสอบ B คุณฉีดการเชื่อมต่อเข้าสู่ B แต่ B นั้นถูกสร้างขึ้นในคลาส C เป็นต้น ดังนั้นที่จุดฉันต้องพูดว่า "ที่นี่ฉันดึงข้อมูลจากฐานข้อมูลและฉันจะไม่เขียนหน่วยทดสอบสำหรับรหัสชิ้นนี้"? ในคำอื่น ๆ : บางแห่งในรหัสในบางชั้นฉันต้องโทรsqlDB.connect()หรือสิ่งที่คล้ายกัน ฉันจะทดสอบคลาสนี้ได้อย่างไร และมันเป็นรหัสเดียวกันกับที่ต้องจัดการกับ GUI หรือระบบไฟล์หรือไม่? ฉันต้องการทดสอบหน่วย การทดสอบประเภทอื่นใดไม่เกี่ยวข้องกับคำถามของฉัน ฉันรู้ว่าฉันจะทดสอบเพียงชั้นเดียวเท่านั้น (ฉันเห็นด้วยกับคุณ Kilian) …

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