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

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

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

2
เราสามารถใช้ git-flow อย่างมีประสิทธิภาพในโครงการที่มีการรักษามากกว่าหนึ่งเวอร์ชันหลักได้อย่างไร?
ฉันได้ย้ายโครงการหลายโครงการของฉันไปที่โฟลว์การทำงานของ gitและฉันก็รักมัน อย่างไรก็ตามฉันไม่พบวิธีปฏิบัติที่ดีที่สุดที่ทำให้สิ่งต่าง ๆ ไหลลื่นเมื่อทำงานกับโปรเจ็กต์ที่เก็บรักษาเวอร์ชันหลักมากกว่าหนึ่งครั้ง โดยเฉพาะฉันไม่ได้รักษา "รุ่นฟรี" และ "รุ่นที่จำหน่ายได้แล้ว" หรือรุ่นขนานอื่น ๆ ฉันกำลังพูดถึงโปรเจ็กต์ที่เวอร์ชัน 1 จะวางจำหน่ายและยังคงรองรับเวอร์ชันรอง (1.1, 1.2 และอื่น ๆ ) .) จนกว่าเวอร์ชั่น 3 จะวางจำหน่าย ณ จุดที่ 2 และ 3 จะได้รับการปรับปรุงจนกว่าจะมีการเปิดตัว 4 ... คุณจะได้รับแนวคิด คุณมีหรือจะดูแลรักษาโครงการที่สนับสนุนสองเวอร์ชันหรือมากกว่าในคราวเดียวในเวิร์กโฟลว์ gitflow
18 git  workflows  gitflow 

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

5
Vim หรือ Emacs ใช้งานได้กับภาษาเช่น. Net หรือ Java หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ดังนั้นฉันเป็นนักพัฒนา. Net ที่ทำอะไรบางอย่างใน Java, Python และอื่น ๆ เป็นครั้งคราว ฉันเคยได้ยินคนจำนวนมากยกย่อง Vim และ Emacs เพื่อเพิ่มประสิทธิภาพอย่างมากเมื่อพื้นฐานถูกตอกลง ฉันสามารถเห็นได้อย่างชัดเจนว่าฟีเจอร์ต่าง ๆ นั้นมีประโยชน์มากเพียงใดด้วยการฝึกฝนอย่างเพียงพอและแม้กระทั่งเชื่อว่าช่วงการเรียนรู้น่าจะคุ้มค่ากับความพยายาม อย่างไรก็ตาม ... ดูเหมือนว่าคุณจะต้องเป็นตัวช่วยสร้างของแมโครและปุ่มลัดเพื่อให้มีประสิทธิภาพใน Vim หรือ Emacs เนื่องจากผู้พัฒนาโดยเฉลี่ยอยู่ใน Visual Studio, Netbeans, Eclipse หรือแพลตฟอร์มอื่น ๆ ฉันเริ่มเรียนรู้ที่จะใช้ Vim และคิดว่าคุณสมบัติบางอย่างของมันยอดเยี่ยม (เช่นการแก้ไขคอลัมน์) แต่ดูเหมือนว่าเครื่องมือหลายอย่างที่จัดหาโดย IDEs ที่มีน้ำหนักมากนั้นไม่สามารถแทนที่ได้แม้กระทั่งข้อความที่ถูกทำให้ยุ่งมากที่สุด บรรณาธิการ สร้างไฟล์ dbml สำหรับ Linq-to-SQL การทดสอบอัตโนมัติ ออกแบบ …
18 ide  vim  emacs 

5
"ทีมข้ามสายงาน" คืออะไร? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ความหมายทั่วไปของ "cross-functional team" เป็นทีมที่รวมผู้เชี่ยวชาญในสาขาต่าง ๆ ที่จำเป็นเพื่อให้บรรลุเป้าหมาย แต่ดูเหมือนว่าในฟังก์ชั่นไขว้ของ Agile ไม่เพียง แต่หมายรวมผู้เชี่ยวชาญที่แตกต่างกันเท่านั้น Henrik Kniberg กำหนดทีมข้ามสายงานด้วยวิธีนี้: "Cross-functional เพียงหมายความว่าทีมโดยรวมมีทักษะทั้งหมดที่จำเป็นในการสร้างผลิตภัณฑ์และสมาชิกในทีมแต่ละคนเต็มใจที่จะทำมากกว่าสิ่งที่ตัวเองทำ" แต่สายลากอยู่ที่ไหน เป็นเรื่องปกติหรือไม่ที่จะขอให้ผู้พัฒนาทำการทดสอบซ้ำถ้าจำเป็น?

4
ฐานข้อมูลนามธรรม - มันมากเกินไปหรือไม่
หลังจากได้สัมผัสกับเลเยอร์สิ่งที่เป็นนามธรรมหลายชั้นฉันเริ่มสงสัยว่าประเด็นใดที่ห้องสมุดทุกแห่งคิดค้นกระบวนทัศน์ที่แตกต่างกันของพวกเขาเองในการเข้าถึงข้อมูล การรับ DAL ใหม่รู้สึกเหมือนได้เรียนรู้ภาษาใหม่อีกครั้งเมื่อสิ่งที่ฉันต้องการทำคือการโน้มน้าวให้เลเยอร์ส่งออกแบบสอบถาม SQL ที่ฉันได้เขียนไปแล้วในหัวของฉัน และนั่นคือโดยไม่ต้องสัมผัสกับการอ่านหลังจากข้อเท็จจริง: # Exhibit A: A typical DAL rows = db(db.ips_x_users.ip_addr == '127.0.0.1') .inner_join(db.ips_x_users.user_id == db.users.id) .select(order=(db.ips_x_users.last_seen, 'desc'), limit=10) # Exhibit B: Another typical DAL rows = db.ips_x_users .join(db.users, on=db.ips_x_users.user_id == db.users.id) .filter(db.ips_x_users.ip_addr == '127.0.0.1') .select(sort=~db.ips_x_users, limit=10) # Exhibit C: A hypothetical DAL based on …
18 database  sql  api-design  dsl 

5
คุณควรจัดสรรคะแนนเรื่องราวกี่เรื่องในการวิ่งครั้งแรก
เมื่อนำ Scrum มาใช้ในทีมเป็นครั้งแรกคุณจะกำหนดปริมาณเรื่องราวที่อยู่ในระยะเริ่มต้นได้อย่างไรเมื่อคุณไม่ทราบความเร็วของทีม คุณควรยึดสิ่งนี้เป็นเวลาประมาณชั่วโมงและใช้คะแนนในระยะต่อมาเท่านั้น
18 scrum  planning 

5
ร้านค้าเปรียวสามารถให้คะแนน 12 ในการทดสอบ Joel ได้หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันชอบแบบทดสอบโจเอลใช้ด้วยตัวเองและกระตุ้นให้พนักงานและผู้สัมภาษณ์พิจารณาอย่างรอบคอบ อย่างไรก็ตามฉันไม่คิดว่าฉันจะสามารถทำคะแนนได้มากกว่า 9 คะแนนเพราะมีบางจุดที่ขัดแย้งกับ Agile Manifesto, XP และ TDD ซึ่งเป็นรากฐานของโลกของฉัน โดยเฉพาะ: คำถามเกี่ยวกับกำหนดการรายละเอียดผู้ทดสอบและสภาพการทำงานที่เงียบสงบจะตอบโต้กับสิ่งที่เราพยายามสร้างและค่านิยมที่เราได้นำมาใช้ในการมีความคล่องตัวอย่างแท้จริง ดังนั้นคำถามของฉันคือว่าเป็นไปได้หรือไม่ที่ร้าน Agile ตัวจริงจะได้คะแนน 12 แก้ไข: ตามคำแนะนำจากผู้ตอบคำถามด้านล่างฉันกำลังเพิ่มลิงค์ไปยังบล็อกของฉันที่ฉันเขียนเกี่ยวกับสิ่งนี้และทำให้ฉันต้องการโพสต์คำถามที่นี่ http://simonpalmer.com/2011/03/16/why-i-will-never-score-more-than-9-on-the-joel-test/ ฉันใส่สิ่งนี้เพราะฉันเห็นด้วยกับสิ่งที่ถูกกล่าวถึงด้านล่างและฉันต้องการประกาศตำแหน่งเต็มของฉัน
18 joel-test 

3
มีงานวิจัยเกี่ยวกับการเขียนโปรแกรมภาษาศาสตร์หรือไม่?
การเขียนโปรแกรมภาษาเป็นภาษาอย่างเป็นทางการแต่ไม่เหมือน formalisms หลายพวกเขายังมีธรรมชาติบางอย่างความหมายที่กำหนดโดยพวกเขาความหมายในการดำเนินงานหรือในกรณีของภาษามาร์กอัปที่ความหมายนำเสนอ และภาษาโปรแกรมแม้ว่าที่เป็นทางการจะคล้ายกับภาษาธรรมชาติในแง่ของการสื่อสารที่อนุญาต ในขณะที่การพัฒนาภาษาโปรแกรมเป็นสิ่งประดิษฐ์กระบวนการวิวัฒนาการทางภาษาธรรมชาติการยืมการผสมระหว่างกันและการกลายพันธุ์ทั้งหมดนั้นมีคู่เทียมที่ค่อนข้างชัดเจน ดังนั้นฉันจึงสงสัยว่า: เคยมีงานวิจัยขนาดใหญ่ที่เจาะลึกเกี่ยวกับวิวัฒนาการและพฤติกรรมของภาษาโปรแกรมจากมุมมองของนักภาษาศาสตร์ หรือไม่?

10
ทำไมการสืบทอดและความหลากหลายจึงใช้กันอย่างแพร่หลาย?
ยิ่งฉันเรียนรู้เกี่ยวกับกระบวนทัศน์การเขียนโปรแกรมที่แตกต่างกันเช่นการเขียนโปรแกรมการทำงานยิ่งฉันเริ่มตั้งคำถามเกี่ยวกับภูมิปัญญาของแนวคิด OOP เช่นการสืบทอดและ polymorphism ครั้งแรกที่ฉันได้เรียนรู้เกี่ยวกับการสืบทอดและ polymorphism ในโรงเรียนและในเวลานั้น polymorphism ดูเหมือนจะเป็นวิธีที่ยอดเยี่ยมในการเขียนรหัสทั่วไปที่อนุญาตให้ขยายได้ง่าย แต่ในการเผชิญกับการพิมพ์เป็ด (ทั้งแบบไดนามิกและแบบคงที่) และฟังก์ชั่นการใช้งานเช่นฟังก์ชั่นการสั่งซื้อที่สูงขึ้นฉันได้เริ่มดูการสืบทอดและความหลากหลายในรูปแบบเพื่อกำหนดข้อ จำกัด ที่ไม่จำเป็น แนวคิดทั่วไปที่อยู่เบื้องหลัง polymorphism คือคุณเขียนฟังก์ชันหนึ่งครั้งและหลังจากนั้นคุณสามารถเพิ่มฟังก์ชันการทำงานใหม่ให้กับโปรแกรมของคุณโดยไม่ต้องเปลี่ยนฟังก์ชั่นดั้งเดิม - สิ่งที่คุณต้องทำคือสร้างคลาสอื่นที่ได้มาซึ่งใช้วิธีการที่จำเป็น แต่วิธีนี้ง่ายกว่ามากในการพิมพ์เป็ดไม่ว่าจะเป็นภาษาแบบไดนามิกเช่น Python หรือภาษาแบบคงที่เช่น C ++ ลองพิจารณาฟังก์ชั่น Python ต่อไปนี้ตามด้วย C ++ แบบคงที่: def foo(obj): obj.doSomething() template <class Obj> void foo(Obj& obj) { obj.doSomething(); } การเทียบเท่า OOP จะเหมือนกับโค้ด Java ต่อไปนี้: public void foo(DoSomethingable …

14
ภาษาสคริปต์มีผลอย่างไรต่อโปรแกรมเมอร์จูเนียร์ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันได้พูดคุยกับอาจารย์คนหนึ่งของฉันเมื่อวันก่อน เราได้อภิปรายถึงผลกระทบที่ภาษาสคริปต์ที่ง่ายกว่า(เช่น Python หรือ Ruby) ที่มีต่อโปรแกรมเมอร์ผู้น้อย เขาแย้งว่าภาษาสคริปต์ทำให้เกิดเทคนิคการเขียนโค้ดที่เลอะเทอะเพราะผู้เริ่มต้นไม่เข้าใจสิ่งที่เกิดขึ้น "ภายใต้ประทุน" นอกจากนี้เขายังอ้างถึงตัวอย่างอื่น ๆ ว่าภาษาสคริปต์มักทำให้โปรแกรมเมอร์ละเลยความกังวลเกี่ยวกับประสิทธิภาพการจัดการหน่วยความจำความซับซ้อนในการปฏิบัติงานเป็นต้น ฉันเป็นที่ถกเถียงกันว่าภาษาระดับต่ำกว่าอาจจะมากเกินไปสำหรับบางคนและพวกเขาอาจยอมแพ้ก่อนที่พวกเขาจะพัฒนาความหลงใหลในการเขียนโปรแกรม เมื่อฉันเริ่มเรียนรู้การเขียนโปรแกรมภาษาแรกของฉัน (C) ฉันไปถึงพอยน์เตอร์และเลิกเพราะแนวคิดยากเกินไป (ในการป้องกันตัวฉันอายุแค่ 14 ปี) หากไม่ใช่สำหรับ Java ฉันอาจไม่ได้เป็นโปรแกรมเมอร์! ถ้าฉันเริ่มต้นด้วยภาษาที่เรียบง่ายขึ้นแล้วขุดลึกฉันรู้สึกว่าฉันจะไม่ยอมแพ้และฉันจะได้เรียนรู้มากพอ ๆ กับที่ฉันเริ่มต้นด้วย C. ชั้นเรียนจบลงก่อนที่ทั้งสองฝ่ายจะได้รับการสำรวจอย่างเต็มที่ มาถึงจุดนี้ฉันได้เทศนาว่าผู้เริ่มต้นควรเริ่มต้นด้วยภาษาสคริปต์แล้วขุดลึกลงไป แต่หลังจากการสนทนาฉันเริ่มสงสัยว่านี่เป็นความคิดที่ผิดพลาดหรือไม่ ดังนั้นภาษาสคริปต์มีผลกระทบอะไรกับโปรแกรมเมอร์รุ่นเยาว์

6
ฉันไม่เข้าใจ“ แบ็กเอนด์ / เซิร์ฟเวอร์ไซด์” จริงๆเมื่อพูดถึงการพัฒนาเว็บ?
ในโลกการพัฒนาเว็บโปรแกรมเมอร์แบ็กเอนด์ / เซิร์ฟเวอร์ทำอะไรกันแน่? ฉันเดาว่าฉันไม่เข้าใจแนวคิดทั้งหมด ฉันได้ทำเลย์เอาท์ HTML / CSS และการออกแบบเว็บไซต์และ SQL นิดหน่อยกับ PHP (ยังคงพัฒนาทักษะของฉันมันเป็นโปรเจกต์ด้านข้างสำหรับฉัน) ฉันได้ทำ JavaScript / JQuery จำนวนเล็กน้อยแล้ว แต่ฉันไม่เข้าใจงาน "แบ็กเอนด์" เช่นภาษาสคริปต์ (Rails / Python / etc) และอื่น ๆ คุณทำอะไรกับพวกเขา

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

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

2
กระบวนการที่แนะนำสำหรับการตรวจสอบโค้ดด้วย Mercurial
โดยทั่วไปเราใช้ Perforce และ SmartBear's Code Collaborator ที่Big Corpและตอนนี้เรากำลังจะใช้ Mercurial สำหรับบางโครงการ การทำงานร่วมกันของรหัสสนับสนุน Mercurial (เรากำลังใช้รุ่น 5) และฉันกำลังพยายามที่จะกำหนดเวลาที่ดีที่สุด (ในระหว่างกระบวนการส่ง / ส่งเซิร์ฟเวอร์) เป็นเวลาที่ดีที่สุด / มีประสิทธิภาพสำหรับการตรวจสอบรหัส ขอบคุณ

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