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

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

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

4
ทำไม coroutines ถึงกลับมา? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ส่วนใหญ่ของรากฐานสำหรับ coroutines เกิดขึ้นใน 60s / 70s แล้วหยุดในความโปรดปรานของทางเลือก (เช่นหัวข้อ) มีสารใด ๆ ที่สนใจต่ออายุใน coroutines ที่เกิดขึ้นในหลามและภาษาอื่น ๆ ?

4
เครื่องหมายโคลอนในบล็อกหลามเป็นสิ่งจำเป็นทางเทคนิคหรือไม่
นี่เป็นเพียงคำถามเชิงทฤษฎีของ newbie ใหญ่ที่ต้องการเข้าใจมากขึ้น ฉันลืมโคลอนไปเรื่อย ๆ หลังจากบล็อกข้อความเริ่มต้นในไพ ธ อน นี่คือสิ่งที่ฉันหมายถึง: for <variable> in <sequence>: if <blah blah>: ความคิดของฉันคือเหตุผลหนึ่งที่ฉันลืมอยู่เสมอว่ามันเป็นความจริงโดยนัย: โคลอนหรือไม่คำแถลงลงท้ายด้วยบรรทัดนั้น คำถามของฉัน - ที่ฉันถามเพื่อเรียนรู้วิธีการทำงานของ python ไวยากรณ์ - ไม่ว่าลำไส้ใหญ่ไม่จำเป็นจริงๆ? ฉันจะเปลี่ยนไวยากรณ์ของไพ ธ อนเพื่อไม่ให้โคลอนไม่จำเป็นอีกต่อไปแล้วจะมีอะไรแตกหรือไม่ นั่นจะทำให้ข้อความบางอย่างคลุมเครือหรือเป็นไปไม่ได้ไหม?
19 python  syntax  theory 

1
มันสมเหตุสมผลหรือไม่ที่จะวัดความครอบคลุมตามเงื่อนไขสำหรับโค้ด Java 8?
ฉันสงสัยว่าการวัดการครอบคลุมโค้ดตามเงื่อนไขด้วยเครื่องมือปัจจุบันสำหรับ Java นั้นไม่ล้าสมัยหรือไม่นับตั้งแต่ Java 8 ออกมา ด้วย Java 8's OptionalและStreamเราสามารถหลีกเลี่ยงโค้ดย่อย / ลูปได้ซึ่งทำให้ง่ายต่อการได้รับความคุ้มครองตามเงื่อนไขสูงมากโดยไม่ต้องทดสอบพา ธ การประมวลผลที่เป็นไปได้ทั้งหมด ลองเปรียบเทียบโค้ด Java เก่ากับโค้ด Java 8: ก่อน Java 8: public String getName(User user) { if (user != null) { if (user.getName() != null) { return user.getName(); } } return "unknown"; } มี 3 เส้นทางการประมวลผลที่เป็นไปได้ในวิธีการข้างต้น เพื่อให้ได้ความคุ้มครองตามเงื่อนไข 100% เราจำเป็นต้องสร้างการทดสอบ …

7
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะเก็บค่าบางอย่างเป็นสตริง
มันเป็นชื่อที่คลุมเครือมาก แต่ฉันก็นึกไม่ออกว่าจะพูดอะไรดี แต่เพียงแค่เป็นตัวอย่างที่คิดเกี่ยวกับทิศทางที่ตัวละครในเกมที่มีการเคลื่อนไหวใน. if(character.direction == "left")มันก็รู้สึกชนิดของความผิดที่จะต้องใช้สตริงแล้วทำสิ่งที่ชอบ ดูเหมือนว่าผมว่ามันออกจากห้องมากเกินไปสำหรับข้อผิดพลาดโง่เหมือนตั้งใจใช้Leftหรือหรือสิ่งแทนl leftความสงสัยของฉันถูกต้องหรือไม่? ถ้าเป็นเช่นนั้นแล้ววิธีที่ต้องการในการบรรลุสิ่งนี้คืออะไร?

8
C # - เหตุใดคำนำหน้าบนฟิลด์จึงหมดกำลังใจ?
ย้อนกลับไปในสมัยก่อนเราทำสัญลักษณ์ของฮังการี นั่นคือตอนนี้ถือว่าเป็นกุญแจและส่วนใหญ่ฉันจะไม่ใช้อีกต่อไป แต่ฉันยังพบว่ามีการใช้m_คำนำหน้าเพื่อระบุเขตข้อมูลสมาชิก สำหรับฉันถ้าฉันอ่านรหัสของคนอื่นและฉันเห็นสิ่งนี้: count = 3; ฉันคิดว่าcountมันเป็นตัวแปรท้องถิ่นของฟังก์ชั่นนั้นและฉันกำลังทำสิ่งที่จะใช้ที่อื่นในฟังก์ชั่น; ถ้าฉันเห็นสิ่งนี้: m_count = 3; ฉันรู้ทันทีว่าฉันกำลังอัพเดทสถานะของวัตถุ แนวทางสไตล์ Microsoft บอกว่าเป็นวิธีที่ผิดในการทำสิ่งต่าง ๆ ฉันควรตั้งชื่อฟิลด์ที่ไม่ใช่แบบสาธารณะเหมือนกับตัวแปรชั่วคราวที่กำหนดไว้ในฟังก์ชัน ไม่มีm_ไม่ได้ขีดง่าย ใช่เราสามารถกำหนดรูปแบบการเขียนโค้ดของเราเอง แต่จากนั้นฉันต้องต่อสู้กับเครื่องมือวิเคราะห์รหัสแบบคงที่ต่างๆ ฉันยินดีที่จะเปลี่ยนเป็นสไตล์ Microsoft แต่ฉันอยากรู้ว่าทำไมสิ่งต่าง ๆ ถึงเป็นแบบนี้ ทำไมตอนนี้จึงถือว่าไม่ดีที่จะบอกได้ว่าตัวแปรเป็นฟังก์ชันโลคัลหรือสมาชิก? ป.ล. นี้คล้ายกับแนวทางปฏิบัติที่ดีที่สุดในปัจจุบันที่ได้รับการยอมรับเกี่ยวกับคำสำคัญ“ นี้” ที่อยู่ด้านหน้าของฟิลด์และวิธีการใน c # คืออะไร แต่ฉันถามเกี่ยวกับการm_ไม่ได้this. PPS ดูเพิ่มเติมที่เหตุใด Microsoft จึงสร้างพารามิเตอร์ตัวแปรโลคัลและฟิลด์ส่วนตัวจึงมีหลักการตั้งชื่อเหมือนกัน

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

2
เหตุใดจาวาใช้คำอธิบายประกอบ @Override แทนที่จะเป็นตัวดัดแปลง
อะไรคือแรงจูงใจที่ทำให้จาวาใช้@Overrideคำอธิบายประกอบแทนที่จะสร้างoverrideตัวดัดแปลงใหม่? @Override public String toString() { return ""; } เมื่อเทียบกับ public override String toString() { return ""; }
19 java 

5
“ ลำดับชั้นการจัดวางองค์ประกอบลึก” นั้นไม่ดีเช่นกันใช่ไหม
ขออภัยถ้า "ลำดับชั้นการแต่งเพลง" ไม่ใช่เรื่องอะไร แต่ฉันจะอธิบายสิ่งที่ฉันหมายถึงในคำถาม ไม่มีโปรแกรมเมอร์ OO ที่ยังไม่ได้พบกับรูปแบบของ "Keep hierarchies flat" หรือ "ชอบเรียงความมากกว่าการสืบทอด" และอื่น ๆ อย่างไรก็ตามลำดับชั้นขององค์ประกอบที่ลึกซึ้งดูเหมือนว่าจะมีปัญหาเช่นกัน สมมติว่าเราต้องการชุดของรายงานที่มีรายละเอียดผลลัพธ์ของการทดสอบ: class Model { // ... interface Array<Result> m_results; } ผลลัพธ์แต่ละรายการมีคุณสมบัติบางอย่าง สิ่งเหล่านี้รวมถึงเวลาของการทดสอบรวมถึงข้อมูลเมตาจากแต่ละขั้นตอนของการทดสอบ: enum Stage { Pre = 1, Post }; class Result { // ... interface Epoch m_epoch; Map<Stage, ExperimentModules> m_modules; } โอเคเยี่ยมเลย ตอนนี้แต่ละโมดูลการทดสอบมีสตริงที่อธิบายผลลัพธ์ของการทดสอบรวมถึงชุดของการอ้างอิงไปยังชุดตัวอย่างการทดลอง: class …

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

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

6
อะไรคือรากฐานทางคณิตศาสตร์สำหรับค่าระดับชั้นหนึ่ง / สอง / สามในภาษาโปรแกรม?
ที่เพิ่ม เพิ่งพบสองคำถามที่เกี่ยวข้อง /math//q/1759680/1281 /programming//a/2582804/156458 ในภาษาการเขียนโปรแกรมจาก Pragmatics การเขียนโปรแกรมของ Michael Scott โดยทั่วไปค่าในภาษาการเขียนโปรแกรมถูกกล่าวว่ามี สถานะfi rst-classหากสามารถส่งผ่านเป็นพารามิเตอร์ส่งคืนจากรูทีนย่อยหรือกำหนดให้เป็นตัวแปร ประเภทอย่างง่ายเช่นจำนวนเต็มและตัวอักษรเป็นค่า fi rst-class ในภาษาการเขียนโปรแกรมส่วนใหญ่ ในทางตรงกันข้ามค่า“ ระดับสอง”สามารถส่งผ่านเป็นพารามิเตอร์ แต่ไม่สามารถส่งคืนจากรูทีนย่อยหรือกำหนดให้กับตัวแปรและค่า“ คลาสที่สาม”ไม่สามารถส่งผ่านเป็นพารามิเตอร์ได้ ฉลากเป็นค่าระดับที่สามในภาษาการเขียนโปรแกรมส่วนใหญ่ แต่ค่าระดับที่สองใน Algol รูทีนย่อยแสดงการเปลี่ยนแปลงมากที่สุด พวกเขาเป็นค่าแรกในทุกภาษาโปรแกรมการทำงานและภาษาสคริปต์ส่วนใหญ่ พวกเขายังเป็นค่า class rst-class ใน C # และด้วยข้อ จำกัด บางอย่างในภาษาที่จำเป็นอื่น ๆ รวมถึง Fortran, Modula-2 และ -3, Ada 95, C และ C ++ 11 เป็นค่าระดับที่สองในภาษาที่จำเป็นอื่น ๆ ส่วนใหญ่และค่าระดับที่สามใน …

5
ภาษาโปรแกรมโดยการออกแบบสามารถบังคับใช้“ รหัสสะอาด” ได้หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ดังนั้นฉันจึงเขียนโค้ดโปรเจคแรกของฉันใน C ++ และดูเหมือนว่าจะใช้ความพยายามมากขึ้นในการทำให้โค้ด "สะอาด" แทนที่จะทำงานเพียงอย่างเดียว นั่นคือดูเหมือนว่า C ++ "อนุญาต" เพื่อเขียนน่าเกลียด แต่รหัสการทำงาน ซึ่งทำให้ฉันคิด ภาษาการเขียนโปรแกรมสามารถบังคับใช้โค้ดแบบคลีนได้ด้วยการออกแบบหรือไม่? มีภาษาดังกล่าวอยู่แล้วหรือไม่? นอกจากนี้วิธีการนี้รวมเป็นหลักการออกแบบในการพัฒนาโปรแกรม / ทฤษฎีภาษา? มาตรการแบบไหนที่ใช้?

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

3
การพูดคุยเกี่ยวกับ“ วิธีการ” ของ C ++ มันผิดอย่างไร (กับ“ ฟังก์ชั่นสมาชิก”)
ฉันเข้าใจว่าตาม C ++ สเป็คไม่มีสิ่งเช่น "วิธีการ" และบางส่วน (มากที่สุด?) โปรแกรมเมอร์ C ++ พิจารณา "วิธี" เป็น Java-ism ในทางกลับกันแม้แต่ในฟอรัม C ++คนก็ดูเหมือนจะพูดถึงวิธีการต่างๆโดยไม่ชักกระตุก ฉันกำลังมองหาอนุสัญญาที่เป็นที่รู้จักหรือการปฏิบัติทั่วไปเกี่ยวกับคำศัพท์นี้ ฉันกำลังทำเอกสาร API ที่มีทั้ง C ++ และ Java เวอร์ชัน นักพัฒนาได้เก็บคลาสและเมธอด / ฟังก์ชันสมาชิกไว้เหมือนกันระหว่างสองชื่อนี้เพื่อความสะดวกในการย้ายและการทดสอบ ด้วยเหตุนี้สิ่งที่จำเป็นต้องได้รับการบันทึกเกี่ยวกับ API เหล่านี้คือ "ทางเลือก" ด้านบนของภาษา ฉันต้องสามารถพูดคุยทั่วไปเกี่ยวกับ Foos และ Bars ด้วยวิธีการ baz () และ mumble () ... วิธีการ? ถ้าฉันพูดถึงวิธีการโปรแกรมเมอร์ Java จะพิจารณาเป็นธรรมชาติและจะปรากฏขึ้นโปรแกรมเมอร์ C …

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