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

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

11
Refactor หรือ Concentrate สำหรับการทำแอพให้สมบูรณ์
คุณจะปรับโครงสร้างแอปของคุณในขณะที่คุณไปหรือมุ่งเน้นที่การทำให้แอพเสร็จสมบูรณ์ก่อน การสร้างใหม่จะหมายถึงความคืบหน้าของแอพจะช้าลง แอปที่สมบูรณ์แล้วจะทำให้คุณได้รับแอปที่ยากต่อการบำรุงรักษาในภายหลังหรือไม่ แอพนี้เป็นโครงการส่วนตัว ฉันไม่รู้จริง ๆ ว่าจะตอบอย่างไร "อะไรเป็นตัวขับเคลื่อนการทำงานและการออกแบบ" แต่ฉันเดาว่ามันจะแก้ปัญหาความไร้ประสิทธิภาพของซอฟต์แวร์ปัจจุบันได้ ฉันชอบซอฟต์แวร์ที่ใช้งานง่ายที่สุดเช่นกัน ดังนั้นฉันจึงลบคุณสมบัติบางอย่างและเพิ่มคุณสมบัติที่ฉันรู้สึกว่าจะช่วยได้

13
วิธีที่ถูกที่สุดในการโฮสต์โครงการงานอดิเรกคืออะไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา อะไรคือสิ่งที่ดีที่สุดที่จะนำเว็บโปรเจ็กต์งานอดิเรกของคุณ (เว็บแอพตัวเองไม่ใช่รหัส) โดยทั่วไปโครงการเป็นเช่นนั้น: a) ฉันแค่ต้องการทดสอบความคิดที่น่าสนใจโดยไม่ต้องสำรวจมุมมองทางธุรกิจของมันเพื่อดูว่าผู้คนจะนำไปใช้อย่างไร b) ฉันไม่ได้คาดหวังกับการจราจรมากนัก c) ฉันไม่ต้องการปรับขนาดทันที d) ฉันไม่ต้องการถูกผูกติดกับเทคโนโลยีเดียว (ฉันต้องการทำโครงการต่าง ๆ เพื่อทำความคุ้นเคยกับเว็บสแต็คแลงและ libs) เครื่องมือตรวจสอบของ Google ดูเหมือนจะเข้มงวดมากสำหรับสิ่งที่สำรวจ ... ข้อ จำกัด ที่ไม่มีการร้องขอขาออกสามารถเกินกว่า 10 วินาทีและทุกคำขอต้องย้อนกลับไปภายใน 30 วินาทีและฉี่ฉันออกไปฉันรู้ว่าพวกเขาจำเป็นต้องปรับขนาด แต่ฉันจะ ชอบให้เป็นตัวเลือก ไมโครโหนดของ Amazon EC2 นั้นฟรีหนึ่งปี แต่พวกเขาขอข้อมูลบัตรเครดิตที่ฉันไม่แน่ใจว่าฉันต้องการให้เมื่อฉันไม่ได้ชำระเงินในตอนแรก ฉันมีทางเลือกฟรี / ราคาถูกอื่นใด

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

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

17
เหตุใดนิพจน์ทั่วไปจึงน่าดึงดูดอย่างมาก
ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ส่วนที่ 1 , ส่วนที่2 , ฉันคิดว่าคุณคงไม่สามารถจำตัวอย่างอื่นได้ยาก สิ่งที่: ถ้ามีมากกว่าหนึ่งวิธีในการแก้ปัญหาโปรแกรมเมอร์ PHP (ฉันมักจะเรียกดูแท็ก PHP ใน StackOverflow) จะขอความช่วยเหลือในการแก้ปัญหาที่เกี่ยวข้องกับการแสดงออกปกติ แม้ว่าจะประหยัดน้อยลงแม้ว่าคู่มือ php จะแนะนำ ( ลิงก์ ) ให้ใช้str_replaceแทนฟังก์ชันpreg_*หรือereg_*ฟังก์ชันใด ๆเมื่อไม่จำเป็นต้องใช้กฎการแทนที่แฟนซี มีใครบางคนสงสัยว่าทำไมสิ่งนี้ถึงเกิดขึ้น? อย่าเข้าใจฉันผิดเพื่อนที่ดีที่สุดของฉันบางคนเป็นสำนวนปกติและฉันก็ไม่ได้ดูถูก Perl สิ่งที่ฉันไม่ได้รับคือเหตุผลที่ไม่มีทางเลือกใด ๆ แม้เมื่อ overkill ชัดเจน (regex เพื่อสลับสตริง) หรือความซับซ้อนของรหัสเพิ่มขึ้นอย่างมาก (regex สำหรับรับข้อมูลจาก html ใน PHP )

4
รีวิวแอปพลิเคชั่น / รหัสสำหรับโปรแกรมเมอร์โลน?
มีบริการใดบ้างที่ 'ในราคาสมเหตุสมผล' จะให้และให้คำแนะนำที่ดีและทางเทคนิคเกี่ยวกับการใช้งาน ในหลายโครงการฉันมักจะเป็นนักพัฒนาเท่านั้นและบางครั้งฉันคิดว่างานบางอย่างของฉันต้องได้รับการปรับปรุงให้มีประสิทธิภาพดีขึ้นการมีปฏิสัมพันธ์ MVC ที่ดีขึ้น ฯลฯ มันจะดีถ้ามีบริการระดับมืออาชีพที่สามารถทำได้จริงและ จะทำรีวิวเช่นนี้

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

11
เพื่อนร่วมงานของฉันสร้างตาราง SQL 96 คอลัมน์
ที่นี่เราอยู่ในปี 2010 วิศวกรซอฟต์แวร์ที่มี 4 หรือ 5 ปีหรือประสบการณ์ยังคงออกแบบตารางที่มีคอลัมน์ 96 fracking ฉันบอกเขาว่ามันจะเป็นฝันร้าย ฉันแสดงให้เขาเห็นว่าเราต้องใช้กฎเพื่อเชื่อมต่อ MySQL กับ C # ฉันอธิบายว่าตารางที่มีคอลัมน์มากกว่าแถวมีกลิ่นมาก ถึงกระนั้นฉันได้รับ "มันจะง่ายขึ้นด้วยวิธีนี้" ฉันควรทำอย่างไร? แก้ไข * ตารางนี้มีข้อมูลจากเซ็นเซอร์ เรามีเซ็นเซอร์ 1 พร้อมด้วย Dynamic_D1X Dynamic_D1Y [... ] Dynamic_D6X Dynamic_D6Y [... ] แก้ไข 2 * ในที่สุดฉันก็ออกจากงานนั้น มันเป็นสัญญาณเมื่อโปรแกรมเมอร์อื่นมืดไปเป็นเวลาหลายเดือนในขณะที่มันเป็นสัญญาณอีกครั้งเมื่อผู้บริหารไม่ได้ตระหนักว่านี่เป็นปัญหา
23 sql  code-smell 

1
กระบวนการพัฒนาของ Google เป็นอย่างไร? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา พวกเขาใช้เครื่องมืออะไร กระบวนการอะไร มีกฎอะไรบ้างเกี่ยวกับรหัส พวกเขาทดสอบโค้ดอย่างไร

5
เหตุใดสตริงจึงช้า
นับตั้งแต่ชั้นเรียนการเขียนโปรแกรมครั้งแรกของฉันในโรงเรียนมัธยมฉันได้ยินมาว่าการทำงานของสายอักขระนั้นช้ากว่า - มีค่าใช้จ่ายสูงกว่า "การปฏิบัติการโดยเฉลี่ย" ในตำนาน ทำไมจึงทำให้ช้า (คำถามนี้ปล่อยให้กว้างโดยเจตนา)

12
โปรแกรมเมอร์ GUI มีข้อได้เปรียบเหนือผู้อื่นหรือไม่?
มันง่ายสำหรับผู้จัดการและลูกค้าที่จะชื่นชมสิ่งที่พวกเขาเห็น ฉันได้เห็นนักพัฒนา GUI หลายคนที่เป็นโปรแกรมเมอร์โดยเฉลี่ยมีความรู้น้อยที่สุดเกี่ยวกับหลักการออกแบบหรือสำนวนการเขียนโปรแกรมอื่น ๆ อย่างไรก็ตามข้อบกพร่องเหล่านี้มักจะไม่มีใครสังเกตเห็นโดยเฉพาะอย่างยิ่งจากการจัดการและลูกค้าหากโปรแกรมเมอร์สามารถสร้างส่วนต่อประสานผู้ใช้ที่ดูน่าประทับใจ มากเสียจนนักพัฒนา GUI หลายคนรู้ว่าใช้เวลาหลายชั่วโมงในการตกแต่ง GUI ด้วยค่าใช้จ่ายในการเขียนโค้ดที่ไม่ดี ในทางกลับกันโปรแกรมเมอร์ระดับกลางที่พัฒนา API หรือฟังก์ชันการทำงานทางธุรกิจหรือรหัสฐานข้อมูล (SQLs ฯลฯ ) เสียเปรียบเพราะไม่มีอะไรที่จับต้องได้ในการแสดง บางทีผู้ตรวจสอบโค้ดหรือสถาปนิกอาจชื่นชมความสง่างามการออกแบบที่ดีความสามารถในการปรับขยายเป็นต้นของโค้ด แต่มันไม่มีความหมายต่อโลกภายนอก รหัสของคุณอาจทำงานเป็นเวลาหลายปีโดยที่ไม่แตกหักง่ายและบำรุงรักษาง่ายและมีประสิทธิภาพดี แต่ก็ไม่เคยทำให้เกิด 'ว้าว' ที่ GUI มองลื่น ๆ ในความคิดของฉันข้อพิสูจน์เกี่ยวกับเรื่องนี้คือ (และฉันจะได้รับการลงคะแนนอย่างหนักสำหรับเรื่องนี้ฉันรู้) ว่ามีแรงจูงใจน้อยลงสำหรับโปรแกรมเมอร์ GUI ที่จะเขียนโค้ดสะอาดดี แก้ไข : ฉันต้องอธิบายที่นี่ว่าโดยโปรแกรมเมอร์ GUI ฉันไม่ได้หมายถึงนักออกแบบเว็บ / GUI เต็มรูปแบบ แต่เป็นโปรแกรมเมอร์ส่วนหน้าเช่นโปรแกรมเมอร์ Java-swing ชุมชนที่เหลือเห็นด้วยไหม?
23 gui 

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

11
ประสิทธิผลของคำถามสัมภาษณ์“ จุดแข็ง / จุดอ่อนที่สำคัญที่สุดของคุณ” [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน7 ปีที่ผ่านมา ในขณะที่ใครบางคนกำลังค้นพบตัวเองที่ปลายอีกด้านหนึ่งของตารางสัมภาษณ์ฉันสงสัยว่าคำถามเหล่านี้มีประโยชน์อย่างไรจากมุมมองของนายจ้าง เพื่อนร่วมงานของฉันบางคนคิดว่าพวกเขาดีเพราะคุณสามารถเห็น "วิธีที่พวกเขาตอบสนอง" แต่ฉันไม่เชื่อว่ามันจะบอกอะไรที่มีประโยชน์ด้วยเหตุผลหลายประการ: มันไม่ใช่คำถามที่สะดวกสบายมากและสามารถชักนำให้ผู้คนบิดคำตอบแม้ว่าจะไม่ได้ตั้งใจก็ตาม ผู้คนอาจไม่ทราบจุดแข็งหรือจุดอ่อนที่ยิ่งใหญ่ที่สุดของพวกเขา (เช่นตัดสินพวกเขาโดยคนรอบข้าง) การอธิบายว่าจุดแข็งไม่ดีเท่ากับแสดงให้เห็น ฉันยังไม่รู้เกี่ยวกับผู้สมัครอีกต่อไป เหตุผลของเพื่อนร่วมงานของฉันก็คือมันสามารถช่วยกำจัดคนที่ให้คำตอบที่ไร้สาระเหมือนผู้ชายคนหนึ่งที่กล่าวว่าพลังที่ยิ่งใหญ่ที่สุดของเขาคือ "สติปัญญาของเขา" หรือคนที่พยายามเปลี่ยนคำถามอ่อนแอเป็นจุดแข็งเช่น "ฉันทำงานหนักเกินไป " แต่ฉันคิดว่ามีวิธีที่มีประสิทธิภาพมากกว่าในการกำหนดสิ่งต่าง ๆ หากคุณต้องการดูว่ามีใครฉลาดหรือไม่ให้ถามคำถามทางเทคนิค หากคุณต้องการดูว่าใครบางคนมีประสิทธิผลหรือไม่ให้ดูที่ประวัติการทำงานของพวกเขา หากคุณต้องการดูว่าใครบางคนตอบสนองภายใต้ความเครียดหรือเปลี่ยนแปลงให้ถามพวกเขาว่าพวกเขารับมือกับมันอย่างไรและขอตัวอย่างที่เป็นรูปธรรม ความคิดเห็นของผู้คนต่อคำถามเหล่านี้จากมุมมองของผู้สัมภาษณ์คืออะไร พวกเขาบอกอะไรคุณเกี่ยวกับผู้สมัครและทางเลือกที่ดีกว่าคืออะไร? ฉันจะโน้มน้าวให้เพื่อนร่วมงานของฉันเรื่องนี้ได้อย่างไร
23 interview 

10
วิธีที่เหมาะสมในการสร้างเอกสารข้อกำหนดคืออะไร?
ตอนนี้หัวหน้างานของฉันกำลังสร้างเอกสารข้อกำหนด / ข้อกำหนดสำหรับฉันโดยใช้ซอฟต์แวร์การติดตามบั๊ก ดูเหมือนว่าเป็นความคิดที่แย่มากสำหรับฉันความต้องการทั้งหมดอยู่ในตั๋วเล็ก ๆ เหล่านี้และฉันต้องคลิกไปที่เว็บฟอร์มที่เป็นใบ้นี้เพื่อรับสิ่งที่ต้องการ ซอฟแวร์โซลูชั่นที่มีสติสำหรับความต้องการ / รายละเอียดซอฟต์แวร์คืออะไร? เพื่อความชัดเจนฉันกำลังสร้างส่วนประกอบซอฟต์แวร์ขนาดใหญ่ที่มีคุณสมบัติค่อนข้างน้อยและมีการกำหนดคุณสมบัติเหล่านี้ในซอฟต์แวร์ติดตามบั๊กนี้

12
ฟังก์ชั่นแบบยาวยอมรับได้หรือไม่หากมีโครงสร้างภายใน
เมื่อจัดการกับอัลกอริทึมที่ซับซ้อนในภาษาที่รองรับฟังก์ชันซ้อนกัน (เช่น Python และ D) ฉันมักจะเขียนฟังก์ชั่นขนาดใหญ่ (เพราะอัลกอริทึมมีความซับซ้อน) แต่ลดขนาดลงโดยใช้ฟังก์ชันซ้อนเพื่อสร้างโค้ดที่ซับซ้อน ฟังก์ชั่นขนาดใหญ่ (100+ บรรทัด) ยังถือว่าเป็นความชั่วแม้ว่าจะมีโครงสร้างที่ดีภายในผ่านการใช้ฟังก์ชั่นที่ซ้อนกันอยู่หรือไม่? แก้ไข: สำหรับผู้ที่คุณไม่คุ้นเคยกับ Python หรือ D ฟังก์ชั่นที่ซ้อนกันในภาษาเหล่านี้ยังอนุญาตการเข้าถึงขอบเขตฟังก์ชั่นด้านนอก ใน D การเข้าถึงนี้ช่วยให้การกลายพันธุ์ของตัวแปรในขอบเขตด้านนอก ใน Python อนุญาตให้อ่านได้เท่านั้น ใน D staticคุณสามารถปิดการเข้าถึงอย่างชัดเจนขอบเขตด้านนอกในฟังก์ชั่นที่ซ้อนกันโดยประกาศว่า

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