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

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

3
ข้อเสนอแนะรูปแบบการแยกสาขาสำหรับโครงการเดียวกันลูกค้าหลายราย
เรามีโครงการขนาดใหญ่มากซึ่งรวมถึงแอปพลิเคชั่นหลายตัวที่ทำหน้าที่เป็นฐานสำหรับลูกค้าที่แตกต่างกัน ลูกค้าทุกคนมีความเป็นตัวของตัวเองของผลิตภัณฑ์เหตุการณ์สำคัญที่แตกต่างกันข้อกำหนดที่แตกต่างและอื่น ๆ และดังนั้นแต่ละโครงการจะพัฒนาอย่างอิสระตามความต้องการของตนเอง แกนหลักของโครงการนั้นคล้ายกัน (แต่ไม่เท่ากัน) ในทุกโครงการและองค์กรถูกสร้างขึ้นเพื่อให้มีทีมที่จัดการลูกค้าแต่ละรายอย่างอิสระ (แต่มีการสื่อสารระหว่างกันตามความจำเป็น) จนถึงตอนนี้ฉันไม่สามารถค้นหารูปแบบที่เหมาะสมกับความต้องการของเราไม่ว่าจะโดยการค้นหาทางอินเทอร์เน็ตหรือคิดหาไอเดียที่ยอดเยี่ยม :) จนถึงตอนนี้เราได้ทำงานโดยทำให้ผลิตภัณฑ์เป็นแบบที่ทุกความต้องการโดยมีสาขาเฉพาะสำหรับการเปลี่ยนแปลงที่จำเป็น แต่แม้ว่าผลิตภัณฑ์จะมีสถาปัตยกรรมที่ดี แต่มันก็กลายเป็นปัญหาใหญ่อย่างช้า ๆ นี่คือปัญหาหลักที่เราเผชิญ: เหตุการณ์สำคัญที่แตกต่างกันสำหรับลูกค้าแต่ละคน: ซึ่งหมายความว่าแต่ละทีมจะต้องผลิตเวอร์ชันเป็นเวลาที่แตกต่างกันโดยไม่มีการกระทำที่เหลือส่งผลต่อความมั่นคงหรือผลิตภัณฑ์ ข้อกำหนดที่แตกต่างกันซึ่งอาจหรืออาจจะไม่ส่งผลกระทบต่อหลักของระบบในบางกรณี ทีมใหญ่ (20+ สมาชิกในทีม) การจัดการข้อบกพร่องในระบบ: คุณจะทำอย่างไรถ้าทีมพบข้อบกพร่องในโครงการของเขาที่อาจส่งผลกระทบต่อลูกค้ารายอื่น หมายเหตุ:เรากำลังพูดถึงโครงการที่มี 10 + M LOC หมายเหตุ:เรากำลังใช้ Team Foundation System, Visual Studio 2008 และ C # (ส่วนใหญ่) ข้อเสนอแนะแหล่งที่มาหรือแนวคิดเกี่ยวกับวิธีการแก้ไขสถานการณ์? มีรุ่นใดในตลาดที่มีปัญหาคล้ายกันหรือไม่?

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

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

5
จำเป็นหรือไม่ที่จะต้องมีอุปกรณ์ Android เพื่อเรียนรู้การเขียนโปรแกรมสำหรับ Android?
จำเป็นต้องมีอุปกรณ์ Android เพื่อเรียนรู้การเขียนโปรแกรมสำหรับAndroidหรือไม่? ปัจจุบัน Java เป็นภาษาโปรแกรมหลักของฉัน

5
ฉันจะเอาชนะโมเดลการพัฒนาซอฟต์แวร์ที่มีโครงสร้างที่ไม่ดีได้อย่างไร
ฉันเข้าร่วม บริษัท ในขณะนี้ฉันกำลังทำงานในฐานะที่เป็นสดชื่น เนื่องจากคนมีฝีมือในการพัฒนาซอฟต์แวร์ GIS มีจำนวน จำกัด และเนื่องจากฉันเป็นหนึ่งในนั้นฉันจึงได้รับคัดเลือกให้เป็นผู้จัดการโครงการโดยตรง ฉันค่อนข้างคุ้นเคยกับ Java และ GIS และฉันได้ทำการค้นคว้าด้วยตนเองเกี่ยวกับบริการตามตำแหน่ง แต่ไม่ใช่กับการจัดการโครงการและการพัฒนาซอฟต์แวร์ที่มีโครงสร้าง เป็นเวลาหนึ่งปีหลังจากที่ฉันสำเร็จการศึกษาในสาขาวิชาธรณีวิทยาและในช่วงปีที่ผ่านมาฉันทำงานเป็นนักวิชาการในมหาวิทยาลัย ต้องขอบคุณที่ฉันมีงานทำโอกาสปรากฏตัวและในที่สุดฉันก็รับผิดชอบแผนก Business Intelligence ของ บริษัท เช่นกัน บริษัท เชื่อในตัวฉัน ฉันเองศึกษาคลังข้อมูลและแนวคิด BI และประสบความสำเร็จในการรวม GIS กับ BI ด้วย นอกจากนี้ฉันกำลังทำงานร่วมกับนักพัฒนาสองคนในเครื่องมือ BI ของเราใน C # WPF ซึ่งฉันยังเล่นบทบาทของนักพัฒนาในบางครั้ง (ซึ่งฉันชอบ) ฉันพยายามอย่างหนักมากที่จะนำวิธีการพัฒนาซอฟต์แวร์ที่ดีมาใช้กับการจัดการโครงการแบบว่องไว แต่ก็ไม่ประสบความสำเร็จมาก นอกจากนี้แม้ว่าฉันเชื่อในรหัสที่ออกแบบมาอย่างดีเท่าที่เกี่ยวข้องกับผลิตภัณฑ์เนื่องจากการขาดความรู้ด้านเทคนิคที่ CEO ของฉันมี (ซึ่งอยู่เหนือฉันโดยตรง) แต่โดยปกติฉันไม่ได้รับเวลาที่ต้องทำ เวลาที่ใช้เพิ่มขึ้นอย่างมากจากการขาดความเชี่ยวชาญที่เรามีในภาษาการเข้ารหัสเฉพาะโดยรวมเช่นกัน (ตัวอย่างเช่น WPF เมื่อเทียบกับ Java) …

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

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

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

4
การปิดใน Java จะส่งผลกระทบต่อชุมชน Java อย่างไร
เป็นหนึ่งในคุณสมบัติที่ได้รับการกล่าวถึงมากที่สุดเกี่ยวกับ Java: Closures พวกเราหลายคนโหยหาพวกเขา พวกเราบางคน (รวมถึงฉัน) มีความอดทนเพิ่มขึ้นและหันไปใช้ภาษาสคริปต์เพื่อเติมเต็มความว่างเปล่า แต่ในที่สุดเมื่อการปิดมาถึง Java: พวกเขาจะส่งผลกระทบต่อชุมชน Java อย่างไร ความก้าวหน้าของภาษาสคริปต์ที่ตั้งเป้าหมายไว้กับ VM จะช้าลงในการรวบรวมข้อมูลอยู่เหมือนเดิมหรือเพิ่มพูน? ผู้คนจะแห่กันไปยังซินแท็กซ์ปิดใหม่ดังนั้นการเปลี่ยนรหัส Java ให้เป็นโครงสร้างที่มีฟังก์ชั่นการใช้งานมากขึ้นหรือไม่? เราจะเห็นเฉพาะการปิดโปรยใน Java ตลอดไหม? สิ่งที่จะมีผลต่อการสนับสนุนเครื่องมือ / IDE? ประสิทธิภาพเป็นอย่างไร และในที่สุดความหมายของการยอมรับอย่างต่อเนื่องของ Java ในฐานะภาษาคืออะไรเมื่อเทียบกับภาษาอื่น ๆ ที่ได้รับความนิยมเพิ่มขึ้น ในการจัดเตรียมตัวอย่างหนึ่งของรายละเอียดทางไวยากรณ์ Java Closure ที่เสนอล่าสุด: public interface StringOperation { String invoke(String s); } // ... (new StringOperation() { public invoke(String s) …
11 java  closures 

5
ใช้การออกแบบ RESTful กับทั้งเว็บไซต์หรือไม่
ทั้งหมดนี้อาจเจอสิ่งที่แปลกใหม่มาก แต่ฉันพยายามคาดเดาการออกแบบเว็บไซต์ที่สงบเรียบร้อย ฉันเข้าใจการใช้การออกแบบ RESTful กับสิ่งต่าง ๆ เช่นผู้ใช้รูปภาพโพสต์บล็อก ฯลฯ เพราะฉันคิดว่าพวกเขาชอบ "วัตถุ" แต่หน้าเกี่ยวกับเรา "เกี่ยวกับ" ทรัพยากรประเภทไหน มันเป็นทรัพยากรในแง่ของคำว่าสงบหรือไม่? นอกจากนี้ถ้าฉันไปที่ URL "http://www.example.com/" ฉันจะขอทรัพยากรอะไร ทรัพยากรดัชนี?

7
ฉันจะทำให้โปรแกรมเมอร์หยุดเขียนโค้ดที่เสี่ยงต่อการฉีด SQL ได้อย่างไร
บางครั้งคุณก็ยุ่งและมอบหมายงานเล็ก ๆ ให้โปรแกรมเมอร์อาวุโส แต่ถ้าคุณไม่ใส่ใจอย่างใกล้ชิดคุณจะพบว่าตัวเองใช้โค้ดประเภทนี้ในการผลิต: class DivtoggleController extends Zend_Controller_Action { public function closeAction() { /* ... code removed for brevity ... */ $req = $this->getRequest(); $formData = $req->getPost(); $d = $formData['div']; $i = $formData['id']; $dm = new Model_DivtoggleManager(); $rs = $dm->setDivToggleById($d, $i); } } class Model_DivtoggleManager extends Zend_Db_Table { public function …
11 php  sql  training 

4
การคิดเกี่ยวกับรูปแบบการออกแบบและการปฏิบัติของ OOP เปลี่ยนไปอย่างไรในภาษาที่มีการเปลี่ยนแปลงและมีการพิมพ์น้อย
มีคำถามที่เป็นประโยชน์อยู่แล้วในบรรทัดเหล่านี้ (" รูปแบบการออกแบบที่ไม่ใช่ OOP? ") แต่ฉันอยากรู้มากขึ้นเกี่ยวกับมุมมองการเปลี่ยนผ่านสำหรับใครบางคนที่เพิ่งเริ่มต้นด้วยภาษาแบบไดนามิกและพิมพ์อ่อนแอ นั่นคือ: สมมติว่าฉันได้รับการเขียนโปรแกรมใน C ++, C # หรือ Java เป็นเวลาหลายปีและดูดซึมจำนวนมากของภูมิปัญญาตามสายของรูปแบบการออกแบบ GoF ฟาวเลอร์ของรูปแบบของ Enterprise Application สถาปัตยกรรม , หลักการมูลฝอยฯลฯ ตอนนี้ฉัน' การเล่นน้ำใน Ruby, Python, JavaScript และอื่น ๆ และสงสัยว่าความรู้ของฉันใช้อย่างไร สันนิษฐานว่าฉันสามารถทำการแปลโดยตรงในหลายกรณี แต่เกือบจะแน่นอนว่าจะไม่ได้รับประโยชน์เต็มที่จากการตั้งค่าใหม่ของฉัน การพิมพ์แบบเป็ดเพียงอย่างเดียวทำให้ความคิดแบบอินเทอร์เฟซบนหัวของฉันเยอะ อะไรที่ยังคงเหมือนเดิม? การเปลี่ยนแปลงอะไร มีหลักการชี้แนะเช่น SOLID หรือรูปแบบที่เป็นที่ยอมรับ (อาจเป็นเรื่องใหม่ทั้งหมด) ที่มือใหม่ควรรู้หรือไม่?

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

12
การแก้ไขบั๊กนอกชายฝั่ง
หากนายจ้างที่คาดหวังบอกคุณว่าพวกเขา "การแก้ไขข้อผิดพลาดจากภายนอกเนื่องจากผู้พัฒนาเกลียดการแก้ไขข้อบกพร่อง" คุณคิดอย่างไร? คุณมีข้อกังวลอะไร
11 bug  offshore 

4
การปิดโครงการในการแย่งชิงกัน
ในสภาพแวดล้อมการพัฒนาซอฟต์แวร์ทั่วไปการปิดโครงการเป็นการสิ้นสุดโครงการ บันทึกโครงการเสร็จสมบูรณ์และถูกเก็บถาวร ทรัพยากรที่ปล่อยออกมา ปัญหาและบทเรียนมีการบันทึกไว้และ งานเลี้ยงอาหารค่ำอย่างเป็นทางการ / จัดขึ้นเพื่อเฉลิมฉลอง ขั้นตอนสุดท้ายเป็นทางเลือกแม้ว่าจะมีแรงจูงใจมากสำหรับผู้เข้าร่วม :-) ตัดกันด้วย Scrum ฉันรู้ว่าการต่อสู้วิ่งบนเรื่องราวจาก backlogs ดังนั้นในทางเทคนิคการวนซ้ำทุกครั้งจึงปิดบางเรื่อง ดังนั้นมีสองคำถามที่นี่ สำหรับกลุ่มที่ทำงานในหลายโครงการพร้อมกันโครงการปิดได้อย่างไร สำหรับโครงการที่เกี่ยวข้องกับหลายกลุ่มแนวคิดนี้นำไปใช้อย่างไร หรือเทอมการปิดโครงการใช้ไม่ได้กับโครงการ T&Mเลยหรือไม่?
11 scrum 

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