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

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

7
แนวปฏิบัติที่เหมาะสมที่สุดเมื่อทำการทดสอบหน่วยสำหรับการพัฒนาแบบฝัง
ฉันกำลังมองหากลยุทธ์การปฏิบัติที่ดีที่สุดสำหรับโค้ดทดสอบหน่วยที่เขียนขึ้นสำหรับระบบฝังตัว โดยระบบฝังตัวฉันหมายถึงรหัสเช่นไดรเวอร์อุปกรณ์ตัวจัดการ ISR เป็นต้นสิ่งที่ใกล้เคียงกับโลหะ การทดสอบหน่วยส่วนใหญ่ไม่สามารถทำได้หากไม่ทำการทดสอบบนฮาร์ดแวร์ด้วยความช่วยเหลือของ ICE บางครั้งหน่วยสมองกลฝังตัวก็จำเป็นต้องติดอยู่กับสิ่งกระตุ้นอื่น ๆ เช่นสวิตช์เชิงกลมอเตอร์สเต็ปเปอร์และหลอดไฟ สิ่งนี้มักจะเกิดขึ้นในแบบแมนนวลระบบอัตโนมัติจะยอดเยี่ยม แต่ยากและมีราคาแพงเพื่อให้บรรลุ ปรับปรุง ฉันเจอโครงร่างการทดสอบ C ซึ่งดูเหมือนว่าจะประสบความสำเร็จในการทดสอบโครงการแบบฝัง มันใช้ความคิดของฮาร์ดแวร์เยาะเย้ย ตรวจสอบความสามัคคี , CMockและอาจCeedling อัพเดท 06 ก.ค. 2559 มาทั่วcmocka - ดูเหมือนว่าจะทำงานอย่างแข็งขันมากขึ้น

5
สิ่งนี้จะพอดีกับขนาด 64kb ได้อย่างไร?
ดังนั้นฉันมาที่แอสเซมบลี 2011 และมีการสาธิตตัวอย่างนี้เล่น: http://www.youtube.com/watch?v=69Xjc7eklxE&feature=player_embedded มันเป็นไฟล์เดียวเท่านั้นมันบอกว่าในกฎ ดังนั้นฉันจึงทำซ้ำพวกเขาทำให้มันเป็นไฟล์ขนาดเล็กได้อย่างไร
45 assembly 

8
วิธีการสนับสนุน Stack Overflow ในที่ทำงาน [ปิด]
ฉันกำลังคิดถึงการนำเสนอสั้น ๆ ที่ทำงานเกี่ยวกับการใช้ Stack Overflow เป็นทรัพยากรสำหรับงานประจำวันของคุณ ประสบการณ์ของคุณกำลังทำอะไรอยู่? คุณคิดว่าเป็นทรัพยากรที่ถูกต้องหรือไม่ที่จะบอกเพื่อนร่วมงานของคุณเกี่ยวกับมันหรือคล้ายกับบอกพวกเขาเกี่ยวกับ Google ว่าเป็นทรัพยากรหรือไม่ มีวิธีที่ดีกว่าในการทำมัน? ฉันเอนตัวไปถามด้านข้างของ Stack Overflow แทนที่จะตอบคำถามเหล่านี้เพื่อหลีกเลี่ยงการโต้แย้งที่คุณไม่ควรทำ เพียงแค่ติดตามผล เดิมทีฉันไม่ต้องการตั้งคำถามเฉพาะเจาะจงกับกรณีของตัวเองมากเกินไป งานนำเสนอของฉันจะเป็นการพูดคุยอย่างรวดเร็วสี่นาทีเท่านั้นซึ่งฉันจะพูดซ้ำหลายชั่วโมงไปยังกลุ่มต่าง ๆ ฉันอาจถามคำถามก่อนที่จะพูดคุยกับ Stack Overflow และอ้างถึงในระหว่างการนำเสนอ หวังว่าฉันจะได้รับกิจกรรมระหว่างชั่วโมง ฉันจะพูดคุยสั้น ๆ เกี่ยวกับเว็บไซต์ Stack Exchange อื่น ๆ ที่เหมาะสมกับผู้ชมเนื่องจากไม่ใช่นักพัฒนาทั้งหมด ฉันคิดว่า Super User, Server Fault และโปรแกรมเมอร์ควรทำงานได้ดี ฉันจะไม่ทำการนำเสนออีกสองสามเดือนเนื่องจากมีการจัดกำหนดการใหม่ แต่ฉันจะอัปเดตว่าฉันจะไปได้อย่างไร

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

9
ใช้คำหลักเข้าร่วมหรือไม่
แบบสอบถาม SQL ต่อไปนี้เหมือนกัน: SELECT column1, column2 FROM table1, table2 WHERE table1.id = table2.id; SELECT column1, column2 FROM table1 JOIN table2 ON table1.id = table2.id; และแน่นอนส่งผลให้มีแผนแบบสอบถามเดียวกันในทุก DBMS ที่ฉันเคยลอง แต่บ่อยครั้งที่ฉันอ่านหรือฟังความคิดเห็นที่หนึ่งดีกว่าอีกแน่นอน ตามธรรมชาติแล้วคำกล่าวอ้างเหล่านี้จะไม่ได้รับการยืนยัน ที่ที่ฉันทำงานรุ่นที่สองดูเหมือนจะเป็นที่ชื่นชอบของนักพัฒนาส่วนใหญ่คนอื่น ๆ และฉันก็เลยชอบสไตล์นั้นเพื่อลดความประหลาดใจ แต่ในใจของฉันฉันกำลังคิดถึงคนแรก (เพราะนั่นคือวิธีที่ฉันเรียนรู้มาตั้งแต่แรก) หนึ่งในรูปแบบเหล่านี้ดีกว่าที่อื่นอย่างมีวัตถุประสงค์ ถ้าไม่มีเหตุผลใดที่จะใช้อีกแบบหนึ่ง
45 sql  coding-style 

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

7
คุณสมบัติ. NET - ใช้คุณสมบัติส่วนตัวหรือตั้งค่าแบบอ่านอย่างเดียว?
ฉันควรใช้ Private Set ในสถานการณ์ใดเมื่อเทียบกับการทำให้เป็นคุณสมบัติแบบอ่านอย่างเดียว พิจารณาตัวอย่างที่ง่ายสองตัวอย่างด้านล่าง ตัวอย่างแรก: Public Class Person Private _name As String Public Property Name As String Get Return _name End Get Private Set(ByVal value As String) _name = value End Set End Property Public Sub WorkOnName() Dim txtInfo As TextInfo = _ Threading.Thread.CurrentThread.CurrentCulture.TextInfo Me.Name = txtInfo.ToTitleCase(Me.Name) End Sub …
45 c#  .net  vb.net 

3
ทำไม Python ไม่ใช่ Lua [ปิด]
ทำไม Python ได้รับการสนับสนุนโดย google และได้รับความนิยมอย่างรวดเร็วและ Lua ไม่ได้ คุณรู้ไหมว่าทำไม Lua จึงอยู่ในพื้นหลัง
45 python  scripting  lua 

14
เป็นความคิดที่ดีหรือไม่ที่จะใส่รหัสลงในแอปพลิเคชันของเรา
เป็นความคิดที่ดีหรือไม่ที่จะใส่รหัสลงในแอปพลิเคชันของเรา หรือเป็นสิ่งที่ถูกต้องเสมอที่จะเรียกค่าเหล่านี้แบบไดนามิกในกรณีที่จำเป็นต้องเปลี่ยนหรือไม่?

8
การบำรุงรักษารหัส: การรักษารูปแบบที่ไม่ดีเมื่อขยายรหัสใหม่เพื่อให้สอดคล้องกันหรือไม่?
ฉันต้องขยายโมดูลที่มีอยู่ของโครงการ ฉันไม่ชอบวิธีที่เคยทำ (มีรูปแบบการต่อต้านจำนวนมากที่เกี่ยวข้องเช่นคัดลอก / วางโค้ด) ฉันไม่ต้องการดำเนินการ refactor แบบสมบูรณ์ด้วยเหตุผลหลายประการ ฉันควร: สร้างวิธีการใหม่โดยใช้การประชุมที่มีอยู่แม้ว่าฉันจะรู้สึกผิดเพื่อหลีกเลี่ยงความสับสนสำหรับผู้ดูแลต่อไปและสอดคล้องกับรหัสฐานหรือไม่ หรือ ลองใช้สิ่งที่ฉันรู้สึกดีขึ้นแม้ว่าจะมีการแนะนำรูปแบบอื่นในรหัสหรือไม่ Precison แก้ไขหลังจากคำตอบแรก: รหัสที่มีอยู่ไม่เป็นระเบียบ มันง่ายที่จะติดตามและทำความเข้าใจ แต่มันก็แนะนำรหัสสำเร็จรูปจำนวนมากที่สามารถหลีกเลี่ยงได้ด้วยการออกแบบที่ดี (รหัสผลลัพธ์อาจกลายเป็นเรื่องยากที่จะปฏิบัติตามแล้ว) ในกรณีปัจจุบันของฉันมันเป็นโมดูล DAO เก่าแก่ของ JDBC (บอร์ดเทมเพลตสปริง) แต่ฉันได้พบปัญหานี้แล้วและฉันกำลังมองหาความคิดเห็น dev อื่น ๆ ฉันไม่ต้องการ refactor เพราะฉันไม่มีเวลา และถึงเวลาจะยากที่จะพิสูจน์ว่าโมดูลที่ทำงานได้อย่างสมบูรณ์แบบนั้นต้องการการปรับโครงสร้างใหม่ ต้นทุนการปรับโครงสร้างจะหนักกว่าประโยชน์ของมัน จำเอาไว้: รหัสไม่ยุ่งหรือซับซ้อนเกิน ฉันไม่สามารถแยกวิธีการไม่กี่ที่นั่นและแนะนำคลาสนามธรรมที่นี่ มันเป็นข้อบกพร่องในการออกแบบมากขึ้น (เพราะ 'Keep It Stupid Simple' สุดขีดฉันคิดว่า) ดังนั้นคำถามที่สามารถถามได้เช่น: คุณในฐานะนักพัฒนาคุณต้องการที่จะรักษาโค้ดที่น่าเบื่องี่เง่าที่ง่ายหรือจะมีผู้ช่วยบางคนที่จะทำโค้ดที่น่าเบื่อแบบโง่ในที่ของคุณหรือไม่? ข้อเสียของความเป็นไปได้ครั้งสุดท้ายที่คุณจะต้องเรียนรู้บางสิ่งและบางทีคุณอาจจะต้องรักษารหัสที่น่าเบื่ออย่างง่าย ๆ ไว้เช่นกันจนกว่าจะทำการรีแฟคเตอร์เสร็จสมบูรณ์)

12
การสะกดผิดโดยเจตนาเพื่อหลีกเลี่ยงคำที่สงวนไว้
ฉันมักจะเห็นรหัสที่มีการสะกดผิดโดยเจตนาของคำทั่วไปที่ดีขึ้นหรือแย่ลงกลายเป็นคำสงวน: klassหรือclazzสำหรับชั้นเรียน :Class clazz = ThisClass.class kountสำหรับการนับใน SQL:count(*) AS kount โดยส่วนตัวแล้วฉันพบว่าการอ่านนี้ลดลง ในทางปฏิบัติของฉันเองฉันไม่ได้พบมากเกินไปกรณีที่ชื่อที่ดีกว่าอาจจะไม่ได้ถูกนำมาใช้ - หรือitemClassrecordTotal ตัวอย่างจาก JavaDocs สำหรับClassแสดงสิ่งนี้ในพารามิเตอร์: public <U> Class<? extends U> asSubclass(Class<U> clazz) นี่แสดงให้เห็นถึงกรณีการใช้งานที่สมเหตุสมผลหรือไม่?

9
ทำไมไม่แนะนำพอยน์เตอร์เมื่อเข้ารหัสด้วย C ++
ฉันอ่านจากบางที่ว่าเมื่อใช้ C ++ ขอแนะนำไม่ให้ใช้พอยน์เตอร์ ทำไมพอยน์เตอร์ถึงเป็นความคิดที่ไม่ดีเมื่อคุณใช้ C ++ สำหรับโปรแกรมเมอร์ C ที่คุ้นเคยกับการใช้พอยน์เตอร์ทางเลือกและแนวทางใน C ++ ที่ดีกว่าคืออะไร
45 c++  c  pointers 

3
สัญลักษณ์ในทับทิมคืออะไร
ฉันยังใหม่กับโลกทับทิมและฉันก็สับสนกับแนวคิดของ Symbols สัญลักษณ์และตัวแปรต่างกันอย่างไร ทำไมไม่ใช้แค่ตัวแปร? ขอบคุณ
45 ruby 

9
คุณสามารถเป็น Agile ได้หรือไม่โดยไม่ต้องทำการพัฒนา TDD (การทดสอบด้วยการพัฒนา)?
เป็นไปได้ที่จะเรียกตัวเองอย่างถูกต้อง (หรือทีมของคุณ) "ว่องไว" ถ้าคุณไม่ทำ TDD (การพัฒนาที่ขับเคลื่อนด้วยการทดสอบ)?
45 agile  tdd 

10
เป็นคนใจกว้างในสิ่งที่คุณยอมรับ ... หรือไม่?
[คำปฏิเสธ: คำถามนี้เป็นอัตนัย แต่ฉันต้องการคำตอบที่ได้รับการสนับสนุนจากข้อเท็จจริงและ / หรือการสะท้อนกลับ] ฉันคิดว่าทุกคนรู้เกี่ยวกับหลักการความแข็งแกร่งซึ่งมักจะสรุปตามกฎหมายของ Postel: ระมัดระวังในสิ่งที่คุณส่ง มีอิสระในสิ่งที่คุณยอมรับ ฉันยอมรับว่าสำหรับการออกแบบโปรโตคอลการสื่อสารที่กว้างขวางสิ่งนี้อาจสมเหตุสมผล (โดยมีเป้าหมายเพื่อให้ขยายได้อย่างง่ายดาย) อย่างไรก็ตามฉันคิดเสมอว่าแอปพลิเคชันสำหรับ HTML / CSS นั้นล้มเหลวทั้งหมดเบราว์เซอร์แต่ละตัวใช้การปรับแต่งเงียบ ๆ การตรวจจับ / พฤติกรรมทำให้เป็นไปไม่ได้ที่จะได้รับการเรนเดอร์ที่สอดคล้องกันในหลายเบราว์เซอร์ ฉันสังเกตเห็นว่ามี RFC ของโปรโตคอล TCP เห็นว่า "ยอมรับความล้มเหลว" เว้นแต่จะระบุไว้เป็นอย่างอื่น ... ซึ่งเป็นพฤติกรรมที่น่าสนใจที่จะพูดน้อย มีตัวอย่างอื่น ๆ ของการประยุกต์ใช้หลักการนี้ตลอดการค้าซอฟต์แวร์ที่ปรากฏขึ้นอย่างสม่ำเสมอเพราะพวกเขามีผู้พัฒนาที่ถูกกัดตั้งแต่หัวจรดหัวของฉัน: การแทรกเซมิโคลอน Javascript การแปลง builtin C (เงียบ) (ซึ่งจะไม่เลวร้ายหากไม่ตัดทอน ... ) และมีเครื่องมือที่จะช่วยทำให้เกิดพฤติกรรม "ฉลาด": การจับคู่ชื่ออัลกอริทึมการออกเสียง ( Double Metaphone ) ขั้นตอนวิธีระยะทางสตริง ( …
45 design 

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