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

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

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

4
“ การปฏิบัติที่เห็นได้ชัด” ของ TDD หมายความว่ารหัสก่อนหรือไม่
เพื่อนของฉันและฉันค่อนข้างใหม่ TDD และมีข้อโต้แย้งเกี่ยวกับเทคนิค "การใช้งานที่เห็นได้ชัด" (จาก "TDD โดยตัวอย่าง" โดย Kent Beck) เพื่อนของฉันบอกว่ามันหมายความว่าหากมีการใช้งานที่ชัดเจนคุณควรไปข้างหน้าและเขียนมัน - ก่อนที่จะทำการทดสอบใด ๆ สำหรับพฤติกรรมใหม่นั้น และแน่นอนหนังสือเล่มนี้พูดว่า: คุณใช้การดำเนินการอย่างง่ายได้อย่างไร เพียงแค่ใช้พวกเขา นอกจากนี้: บางครั้งคุณแน่ใจว่าคุณรู้วิธีการใช้งาน ไปข้างหน้า ฉันคิดว่าสิ่งที่ผู้แต่งหมายถึงคือคุณควรทดสอบก่อนแล้วจึง "นำไปใช้" ซึ่งต่างจาก "Fake It ('Till You Make It)" และเทคนิคอื่น ๆ ซึ่งจำเป็นต้องใช้ขั้นตอนเล็ก ๆ ในขั้นตอนการปฏิบัติ หลังจากคำพูดเหล่านี้ผู้เขียนพูดถึงการได้รับ "แถบสีแดง" (การทดสอบที่ล้มเหลว) เมื่อทำ "การใช้งานที่ชัดเจน" - คุณจะได้รับแถบสีแดงโดยไม่ต้องทดสอบได้อย่างไร แต่ฉันไม่สามารถหาคำพูดใด ๆ จากหนังสือที่บอกว่า "ชัดเจน" ยังหมายถึงการทดสอบก่อน คุณคิดอย่างไร? เราควรทดสอบก่อนหรือหลังเมื่อมีการใช้งาน "ชัดเจน" …
11 tdd 

8
ซอฟต์แวร์ลิขสิทธิ์ GPL สามารถจำหน่ายต่อได้หรือไม่?
กลุ่มวิจัยของฉันกำลังพัฒนาซอฟต์แวร์เพื่อการวิจัย หัวหน้าโครงการต้องการให้ซอฟต์แวร์เป็นโอเพ่นซอร์สและชอบ GPL แต่ต้องการให้แน่ใจว่าซอฟต์แวร์เหล่านั้นไม่สามารถขายได้ เราอ่าน GPL ถูกต้องหรือไม่? ซอฟต์แวร์สามารถแก้ไขได้อย่างอิสระแจกจ่ายซ้ำและจำหน่าย? ถ้าเป็นเช่นนั้นฉันเห็นว่าทำไมการขายซอฟต์แวร์อย่างมีประสิทธิภาพนั้นเป็นเรื่องยาก อย่างไรก็ตาม GPL นั้นค่อนข้างเข้มงวดเพียงพอกับความต้องการของเรา ข้อเสนอแนะใด ๆ
11 licensing  gpl 

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

5
ควรสร้างสาขาการพัฒนาเมื่อใด
เรากำลังย้ายทีมงานโครงการของเราจากการใช้สาขาหลัก / ลำต้นเดียวไปยังสาขาการพัฒนา / การทำงานหลายสาขาที่ควรรวมเป็นหลักอย่างสม่ำเสมอ เรากำลังพิจารณากระบวนการใหม่ของเราในบทความนี้และคู่มือการแบ่งสาขาของ TFS (เรากำลังใช้ TFS และ Visual Studio 2010) ขณะนี้มีระหว่าง 1 ถึง 5 คนที่ทำงานในโครงการในเวลาใดก็ได้ หลักต้องมีความเสถียรตลอดเวลาเพราะเราต้องการให้ตัวเลือกที่จะปล่อยเมื่อใดก็ตามที่เราต้องการ เรายังไม่มี sprints คงที่ - อย่างน้อยยังไม่ได้ - และในขณะนี้ปล่อยทุก 1-2 สัปดาห์ ณ จุดนี้ในเวลาที่แต่ละคนกำลังแก้ไขข้อบกพร่องในใบสมัคร ในอีกไม่กี่สัปดาห์เราจะเริ่มพัฒนาส่วนประกอบใหม่ขนาดใหญ่สำหรับแอพ ผสานจุดหนึ่งที่เรากำลังมองหาคือเมื่อสาขาการพัฒนาควรจะสร้าง เราจะใช้เรื่องราวของผู้ใช้หลายคนพร้อมกันขึ้นอยู่กับชุดทักษะของนักพัฒนา เราคิดเกี่ยวกับการสร้างสาขาสำหรับนักพัฒนาแต่ละคน แต่มันก็ไม่สมเหตุสมผลเพราะจะต้องมีการร่วมมือกันในการทำงาน เราไม่สามารถผ่านสาขาการพัฒนาเดียวเพราะเราต้องการที่จะผสานกับหลักในขณะที่งานอื่นเสร็จสมบูรณ์ ใครบ้างมีคำแนะนำเกี่ยวกับเรื่องนี้?

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

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

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

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

11
ตรงข้ามกับคำเยื้อง [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา เราบอกว่าเราเยื้องรหัส ฉันกำลังเขียนตัวสร้างสตริงซึ่งสามารถเพิ่ม / ลบแท็บเพื่อเยื้องรหัส ตัวอย่าง: builder.Add("<ul>"); builder.Indent(); builder.Add("<li></li>"); builder.Dedent(); // <-- what should this be named. builder.Add("</ul>"); ฉันควรตั้งชื่อวิธีการอย่างไร

3
การจัดเก็บรหัสผ่านสำหรับการใช้งานในสคริปต์
มีบางสถานการณ์ที่ผู้ใช้ต้องระบุรหัสผ่านขณะดำเนินการอัตโนมัติระหว่างกระบวนการพัฒนา การปรับใช้ไซต์เป็นหนึ่งในสถานการณ์ทั่วไปเท่านั้น การสร้างไฟล์ dmg ใน OS X ต้องใช้รหัสผ่านเช่นกัน ยูทิลิตี้บรรทัดคำสั่งส่วนใหญ่ที่ใช้ในสคริปต์มีความสามารถในการรับรหัสผ่านผ่าน stdin การให้รหัสผ่านในแต่ละครั้งสคริปต์จะถูกเรียกใช้เพื่อวัตถุประสงค์ในการ "อัตโนมัติ" การจัดเก็บเป็นข้อความธรรมดาในสคริปต์จะเอาชนะวัตถุประสงค์ของ "รหัสผ่าน" วิธีที่ดีที่สุดในการให้รหัสผ่านกับสคริปต์ที่ต้องการคืออะไร?

3
วิดีโอเกี่ยวกับการทดสอบหน่วย [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันค้นหางานนำเสนอที่ดี (ต้องการสไลด์ + เสียงหรือวิดีโอ) ในการทดสอบหน่วย แต่สิ่งที่ฉันพบคือหนังสือและบทความในบล็อก งานนำเสนอไม่ควรเกิน 50 นาทีเนื่องจากจะมีการนำเสนอในอาหารกลางวันถุงสีน้ำตาล แนวคิดทั่วไปหรือวิธีการทำบนแพลตฟอร์ม. NET คือสิ่งที่ฉันกำลังมองหา คุณช่วยแนะนำงานนำเสนอที่ตรงกับคำอธิบายนั้นได้หรือไม่?

2
มี repo Git และ Mercurial ในไดเรกทอรีเดียวกัน
ฉันจะอธิบายปัญหาของฉัน ฉันกำลังใช้การติดตั้งแบบ gitorious โดยใช้ git ฉันต้องการเริ่มทดสอบ FogBugz และ Kiln จาก Fog Creek ซึ่งใช้ Mercurial ฉันต้องการอย่างน้อยสักครู่ในขณะที่การพัฒนาอย่างต่อเนื่องโดยใช้โซลูชั่นทั้งสอง ไม่มีใครทราบถึงผลกระทบที่ร้ายแรงในระยะยาวของการมีคอมไพล์และ repo Mercurial ในไดเรกทอรีเดียวกัน หรือมีวิธีที่ดีกว่าในการทำให้เซิร์ฟเวอร์คอมไพล์และ Mercurial ซิงค์กัน ฉันเคยลองด้วย repo ทดสอบและฉันไม่เห็นปัญหาใด ๆ ขอบคุณสำหรับความช่วยเหลือ
11 git  mercurial 

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

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

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