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

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

3
เงื่อนไขเริ่มต้น Agile คืออะไร
ก่อนอื่นให้ฉันบอกว่าฉันคิดว่ากระบวนการแบบเปรียวสามารถทำงานได้เนื่องจากหลักการพื้นฐานดังต่อไปนี้: มันนำมาซึ่งการมุ่งเน้น จำกัด เสียงรบกวนซึ่งนำมาซึ่งการโฟกัส ประการที่สองฉันสงสัยว่าต้องมีเงื่อนไขเริ่มต้นอะไรบ้างเพื่อให้กระบวนการ Agile สามารถประสบความสำเร็จได้ ตัวอย่างเช่นเราจำเป็นต้องมี: ไม่มีข้อบกพร่องที่มีอยู่ กระบวนการทดสอบอัตโนมัติเต็มรูปแบบหรืออย่างน้อยกระบวนการทดสอบอัตโนมัติสูง คนที่ทุ่มเทให้กับโครงการ การพัฒนาใหม่ที่ชัดเจนยิ่งขึ้น การพัฒนาที่ไม่ทำให้เร็วขึ้นหรือมีเสถียรภาพมากขึ้น ? ดังนั้นสิ่งที่คุณต้องทำให้ประสบความสำเร็จ? มีการใช้งาน Agile ที่แตกต่างกันซึ่งจัดการได้ดีกว่าโดยไม่มีเงื่อนไขเริ่มต้นเหล่านี้หรือไม่?
9 agile 

6
การเปลี่ยนรหัสที่คุณพัฒนาขึ้นใน บริษัท ของคุณเป็นการมอบหมายการบ้าน [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ขณะนี้ฉันกำลังเริ่มต้นการเริ่มต้นกับเพื่อนและฉันสังเกตเห็นว่าการมอบหมายมหาวิทยาลัยของฉันบางอย่างอาจเสร็จสิ้นได้โดยเพียงแค่คัดลอกโค้ดบางส่วนจากบางโปรแกรมที่เราพัฒนาขึ้น มีปัญหาทางกฎหมายใดบ้างที่ฉันอาจพบได้ หรือนี่เป็นเพียงความคิดที่ไม่ดีโดยทั่วไป (ตามที่เริ่มรู้สึกตอนนี้)? ขออภัยถ้านี่ผิดที่ฉันไม่แน่ใจว่าจะวางที่นี่หรือใน stackoverflow
9 legal  ethics 

3
แทนที่รหัสประเภทด้วยคลาส (จาก Refactoring [Fowler])
กลยุทธ์นี้เกี่ยวข้องกับการแทนที่สิ่งนี้: public class Politician { public const int Infidelity = 0; public const int Embezzlement = 1; public const int FlipFlopping = 2; public const int Murder = 3; public const int BabyKissing = 4; public int MostNotableGrievance { get; set; } } ด้วย: public class Politician { public MostNotableGrievance …
9 c#  refactoring 

1
IntelliJ พร้อมการรวบรวม Maven
ฉันมีโครงการที่ต้องการขวดไฮเบอร์เนต ฉันเพิ่มพวกเขาเป็นการพึ่งพาใน pom.xml และ Maven รวบรวมโครงการของฉันได้ดี อย่างไรก็ตามใน IDE นั้นคำอธิบายประกอบและการโทรถึง Hibernate API ทั้งหมดจะถูกทำเครื่องหมายว่าไม่ได้รับการแก้ไข (สีแดง) ฉันจะทำให้ IntelliJ สามารถแก้ไขได้อย่างไร มีวิธีการใช้ Maven เมื่อฉันคลิกที่สร้างโครงการหรือไม่ (Ctrl + F9) นอกจากนี้ฉันสับสนกับแนวคิดของ facets ภายใน IntelliJ ฉันต้องการมันหรือเปล่าสมมุติว่า JPA facets เปิดใช้งาน Persistence Assistant ฯลฯ ... หรือมีตัวเลือกให้ Maven ดูแล?

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

1
อารัมภบทขนาน
มีล่ามอารัมภบทที่สามารถย่อยสลาย 'โปรแกรม' ของคุณเพื่อปรับปรุงประสิทธิภาพได้หรือไม่? ฉันรู้ว่ามีงานวิจัยเกี่ยวกับล่ามอารัมภบทที่มีความเร็วใกล้เคียง C ผ่านการขนาน (ชนิดที่โปรแกรมเมอร์ C ทั่วไปไม่สามารถ "เห็น") ไม่มีใครรู้เพิ่มเติมเกี่ยวกับหัวข้อนี้

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

5
ควรหยุดการสืบทอดเมื่อใด
กาลครั้งหนึ่งนานมานี้ฉันถามคำถามเกี่ยวกับการโอเวอร์โฟลว์เกี่ยวกับการสืบทอด ฉันได้กล่าวว่าฉันออกแบบเครื่องมือหมากรุกในแบบ OOP ดังนั้นฉันจึงรับช่วงต่อของฉันทั้งหมดจากระดับนามธรรมของ Piece แต่การสืบทอดยังคงดำเนินต่อไป ให้ฉันแสดงด้วยรหัส public abstract class Piece { public void MakeMove(); public void TakeBackMove(); } public abstract class Pawn: Piece {} public class WhitePawn :Pawn {} public class BlackPawn:Pawn {} โปรแกรมเมอร์พบว่าการออกแบบของฉันมีความเหนือกว่าทางวิศวกรรมเล็กน้อยและแนะนำให้เอาคลาสสีที่มีสีออกมา public abstract class Piece { public Color Color { get; set; } public abstract void …

2
แนวทางปฏิบัติที่ดีที่สุดสำหรับการยกเลิกโค้ดที่ล้าสมัยคืออะไร
ฉันต้องการเลิกใช้วิธีที่ล้าสมัย ฉันตระหนักถึง[Obsolete]คุณลักษณะ Microsoft มีแนวทางปฏิบัติที่ดีที่สุดที่แนะนำสำหรับการทำสิ่งนี้หรือไม่? นี่คือแผนปัจจุบันของฉัน: ตอบฉันไม่ต้องการสร้างชุดประกอบใหม่เนื่องจากนักพัฒนาจะต้องเพิ่มการอ้างอิงใหม่ให้กับโครงการของพวกเขาและฉันคาดหวังว่าจะได้รับความเศร้าโศกมากมายจากเจ้านายและเพื่อนร่วมงานของฉันหากพวกเขาต้องทำสิ่งนี้ เรายังไม่ได้บำรุงรักษาชุดประกอบหลายรุ่น เราใช้รุ่นล่าสุดเท่านั้น การเปลี่ยนการปฏิบัตินี้จะต้องเปลี่ยนกระบวนการปรับใช้ของเราซึ่งเป็นปัญหาใหญ่ (ต้องสอนผู้คนถึงวิธีการทำสิ่งต่าง ๆ ด้วย TFS แทนที่จะเป็น FinalBuilder และให้พวกเขาละทิ้ง FinalBuilder) B. ทำเครื่องหมายวิธีเก่าที่ล้าสมัย C. เนื่องจากการใช้งานมีการเปลี่ยนแปลง (ไม่ใช่ลายเซ็นของเมธอด) ฉันต้องเปลี่ยนชื่อเมธอดแทนการสร้างโอเวอร์โหลด ดังนั้นเพื่อให้ผู้ใช้ตระหนักถึงวิธีการที่เหมาะสมฉันวางแผนที่จะเพิ่มข้อความไปยัง[Obsolete]แอตทริบิวต์ ส่วนนี้รบกวนฉันเพราะการเปลี่ยนแปลงเพียงอย่างเดียวที่ฉันทำคือการแยกวิธีออกจากสตริงการเชื่อมต่อ แต่เนื่องจากฉันไม่ได้เพิ่มแอสเซมบลีใหม่ฉันไม่เห็นวิธีนี้ ผลลัพธ์: [Obsolete("Please don't use this anymore because it does not implement IMyDbProvider. Use XXX instead.")]; /// <summary> /// /// </summary> /// <param name="settingName"></param> /// …
9 .net 

2
โครงการ PHP โอเพ่นซอร์สใดที่มีการออกแบบ OOP ที่สมบูรณ์แบบที่ฉันสามารถเรียนรู้ได้ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันเป็นมือใหม่สำหรับ OOP และฉันเรียนรู้จากตัวอย่างได้ดีที่สุด คุณสามารถพูดได้ว่าคำถามนี้คล้ายกับโครงการโอเพ่นซอร์สสกาล่าใดที่ฉันควรศึกษาเพื่อเรียนรู้วิธีการเขียนโค้ดที่ดีที่สุด - แต่ใน PHP ฉันได้ยินมาแล้วว่า Symfony มี 'สถาปัตยกรรม' ที่ดีที่สุด (ฉันจะไม่แกล้งฉันรู้ว่ามันหมายถึงอะไร) และ Doctrine ORM มันคุ้มไหมที่จะใช้เวลาหลายเดือนในการอ่านซอร์สโค้ดของโครงการเหล่านี้พยายามที่จะอนุมานรูปแบบที่ใช้และเรียนรู้เทคนิคใหม่ ๆ ? ฉันได้เห็นหน้าเว็บจำนวนเท่ากันที่มีการปฏิเสธและชื่นชอบ codebase ของ Zend (จะให้ลิงก์หากเห็นว่าจำเป็น) คุณรู้หรือไม่เกี่ยวกับโครงการอื่น ๆ ที่จะทำให้นักพัฒนา OOP ที่มีประสบการณ์หลั่งน้ำตาแห่งความสุข? โปรดให้ฉันเพิ่มว่าการใช้งานจริงและขอบเขตการใช้งานไม่ใช่เรื่องที่น่ากังวลเลย - ฉันแค่ต้องการทำ: เลือกโครงการที่มี codebase ซึ่งถือว่ายอดเยี่ยมโดยผู้พัฒนาและดีกว่าฉัน เขียนโค้ดที่บรรลุสิ่งที่โครงการทำ เปรียบเทียบผลลัพธ์และลองเรียนรู้สิ่งที่ฉันไม่รู้ โดยทั่วไปฐานความสนใจด้านวิชาการ มีคำแนะนำอะไรมั้ย

6
เราจะให้การประมาณเวลาที่ถูกต้องในระหว่างการวางแผน Sprint โดยไม่ทำการออกแบบ "มากเกินไป" ได้อย่างไร
ทีมของฉันกำลังเร่งความเร็วกับ Scrum แต่พวกเราส่วนใหญ่คุ้นเคยกับวิธีการที่ไม่คล่องตัวหรือ "หลอก" ส่วนที่เป็นอุปสรรค์ที่ยิ่งใหญ่ที่สุดสำหรับเราคือการเรียกใช้การประชุม Sprint Planning ที่มีประสิทธิภาพซึ่งเราแยกรายการงานในมือออกเป็นงานและประมาณเวลา (ฉันใช้คำศัพท์จากแม่แบบ VS2010 Scrum ขออภัยหากฉันใช้คำผิดที่อื่น) เมื่อเราพยายามที่จะคิดออกว่างานจะต้องใช้เวลานานแค่ไหนเรามักจะตกหลุมพรางของการออกแบบคุณสมบัติในระดับรหัส - เลย์เอาต์ของตารางอินเตอร์เฟสและอื่น ๆ เพื่อที่จะทราบว่าจะต้องใช้เวลานานแค่ไหน . ฉันค่อนข้างแน่ใจว่านี่ไม่ใช่สถานที่ที่เหมาะสมที่จะทำการออกแบบแบบนั้น เราควรจะจัดตารางงานสำหรับการประชุมการออกแบบเหล่านี้ในระหว่างการวิ่ง อย่างไรก็ตามเรากำลังมีปัญหาในการหาวิธีอื่นในการประมาณค่าที่มีความหมายสำหรับงาน มีนิสัย / เทคนิคการปฏิบัติ / อื่น ๆ ที่เป็นประโยชน์หรือไม่ สำหรับการเรียกใช้วิจารณญาณเกี่ยวกับระยะเวลาที่จะใช้งานคุณลักษณะโดยไม่ทราบว่าคุณวางแผนจะใช้งานอย่างไร หากการประมาณเวลาของเรามีการเปลี่ยนแปลงอย่างมีนัยสำคัญเมื่อการออกแบบเสร็จสมบูรณ์แล้วเราจะตั้งงบประมาณ Backlog Sprint ให้เหมาะสมได้อย่างไร แก้ไข: เพื่อชี้แจงเนื่องจากข้อคิดเห็น / คำตอบบางอย่างนั้นถูกต้องมาก แต่ฉันคิดว่าการตอบคำถามผิด เรารู้ว่าสิ่งที่เราทำไม่ถูกต้องและเราควรสร้างเวลาในการวิ่งเพื่อการออกแบบนี้ แนวคิดนักพัฒนาทั้งหมดเข้าใจว่า นอกจากนี้เรายังนำสมาชิกในทีมที่มีประสบการณ์การแย่งชิงกันเพื่อติดตามเราหากเราเริ่มออกไปสู่วัชพืช ปัญหาคือโดยไม่ต้องผ่านขั้นตอนการออกแบบนี้เราพบว่ามันยากที่จะประเมินเวลาที่เป็นรูปธรรมสำหรับทุกสิ่ง เรามักจะพูดถึงสิ่งต่าง ๆ เช่น "ดีถ้าเราออกแบบมันด้วยวิธีนี้มันอาจใช้เวลา 8 ชั่วโมง แต่ถ้าเราต้องทำอย่างอื่นแทนมันจะใช้เวลาประมาณ 32 …
9 scrum 

1
ฉันจะเริ่มต้นใช้ TDD เพื่อเขียนโค้ดฟังก์ชันการทำงานแบบง่ายได้อย่างไร
ฉันมีส่วนสำคัญของ TDD ฉันขายมันมีประโยชน์และฉันมีคำสั่งที่สมเหตุสมผลของกรอบ MSTEST อย่างไรก็ตามจนถึงวันนี้ฉันยังไม่สามารถเปลี่ยนเป็นวิธีการพัฒนาหลักได้ ส่วนใหญ่ฉันใช้เป็นตัวแทนในการเขียนแอปคอนโซลเป็นไดรเวอร์ทดสอบ (วิธีดั้งเดิมของฉัน) สิ่งที่มีประโยชน์ที่สุดสำหรับฉันคือวิธีที่มันดูดซับบทบาทของการทดสอบการถดถอย ฉันยังไม่ได้สร้างอะไรเลยที่แยกพฤติกรรมทดสอบต่าง ๆ โดยเฉพาะซึ่งเป็นอีกส่วนใหญ่ของภาพที่ฉันรู้ ดังนั้นคำถามนี้เพื่อขอคำแนะนำเกี่ยวกับสิ่งที่การทดสอบครั้งแรกที่ฉันอาจเขียนสำหรับงานพัฒนาต่อไปนี้: ฉันต้องการผลิตรหัสที่ห่อหุ้มการดำเนินงานในแบบของผู้ผลิต / ผู้บริโภค ฉันหยุดและตัดสินใจที่จะเขียนคำถามนี้หลังจากที่ฉันเขียนรหัสนี้ (สงสัยว่าถ้าฉันสามารถใช้ TDD จริงในเวลานี้) รหัส: interface ITask { Guid TaskId { get; } bool IsComplete { get; } bool IsFailed { get; } bool IsRunning { get; } } interface ITaskContainer { Guid AddTask(ICommand action); …
9 c#  tdd 

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

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

4
ทางเลือกที่ใช้ได้จริงใด ๆ กับรูปแบบสัญญาณ + สล็อตสำหรับการเขียนโปรแกรม GUI?
GUI Toolkits ส่วนใหญ่ทุกวันนี้ใช้รูปแบบสัญญาณ + สล็อต มันเป็น Qt และ GTK + ถ้าฉันไม่ผิดใครเป็นผู้บุกเบิก คุณรู้หรือไม่ว่าวิดเจ็ตหรือวัตถุกราฟิก (บางครั้งแม้แต่รายการที่ไม่ได้แสดง) จะส่งสัญญาณไปยังตัวจัดการหลักของลูป ตัวจัดการหลักของวงแล้วเรียกเหตุการณ์ , การเรียกกลับหรือช่องที่ได้รับมอบหมายสำหรับเครื่องมือวัตถุที่ / กราฟิก โดยปกติจะมีvirtualตัวจัดการเหตุการณ์เริ่มต้น (และในกรณีส่วนใหญ่) ชุดเครื่องมือสำหรับการจัดการสัญญาณที่กำหนดไว้ล่วงหน้าทั้งหมดซึ่งแตกต่างจากการออกแบบก่อนหน้านี้ที่ผู้พัฒนาต้องเขียนทั้ง main-loop และ handler สำหรับแต่ละข้อความ (คิดว่า WINAPI) ผู้พัฒนาเพียง แต่ต้องกังวลเกี่ยวกับสัญญาณที่เขาต้องการในการใช้งานฟังก์ชั่นใหม่ ตอนนี้การออกแบบนี้ถูกใช้ในชุดเครื่องมือที่ทันสมัยที่สุดเท่าที่ฉันรู้ มี Qt, GTK +, FLTK เป็นต้นมี Java Swing C # มีคุณสมบัติภาษาสำหรับมัน (เหตุการณ์และผู้รับมอบสิทธิ์) และ Windows Forms ได้รับการพัฒนาในการออกแบบนี้ ในความเป็นจริงในทศวรรษที่ผ่านมาการออกแบบสำหรับการเขียนโปรแกรม GUI นี้ได้กลายเป็นมาตรฐานที่ไม่ได้เขียนไว้ …

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