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

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


2
มีใครทำใบรับรอง CSDP หรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันกำลังดูการรับรองที่สามารถเพิ่มพูนความรู้และมูลค่าตลาดของฉันในฐานะวิศวกรซอฟต์แวร์ Professional Software Development (CSDP) ที่ผ่านการรับรองของ IEEE ได้รับความสนใจจากฉัน เมื่อฉันดูข้อมูลจากประสบการณ์ออนไลน์ของผู้ใช้ฉันไม่สามารถพบสิ่งใดได้เลย ดูเหมือนจะไม่เป็นที่นิยมเกินไป และแน่นอนฉันไม่ได้ยินใครในองค์กรของฉันหรือกลุ่มเพื่อนที่ทำเช่นนั้น ฉันต้องการทราบจากสมาชิกชุมชนหากใครได้ทำการรับรองนี้และประสบการณ์ของพวกเขาด้วยเหมือนกัน เป็นใบรับรองที่มีประโยชน์ในแง่ของความรู้ มันเพิ่มน้ำหนักให้เรซูเม่ของคุณหรือไม่?
15 engineering  csdp 

7
การโยนข้อยกเว้นจากแบบฟอร์มคุณสมบัติที่ไม่ดีหรือไม่?
ฉันมักจะคิดว่าคุณสมบัติ (เช่นการดำเนินงาน set / get ของพวกเขา) ควรรวดเร็ว / ทันทีและปราศจากความล้มเหลว คุณไม่จำเป็นต้องลอง / รับรอบหรือการตั้งค่าคุณสมบัติ แต่ฉันกำลังมองหาวิธีที่จะใช้การรักษาความปลอดภัยตามบทบาทกับคุณสมบัติของวัตถุบางอย่าง ตัวอย่างเช่นคุณสมบัติ Employee.Salary วิธีแก้ปัญหาบางอย่างที่ฉันได้ลองใช้โดยที่คนอื่นพยายาม (โดยเฉพาะอย่างยิ่งหนึ่งคือตัวอย่าง AOP ที่นี่ ) เกี่ยวข้องกับการโยนข้อยกเว้นถ้า accessor ไม่มีสิทธิ์ที่ถูกต้อง - แต่สิ่งนี้ขัดกับกฎส่วนบุคคลที่ฉันมี เป็นเวลานานแล้ว ดังนั้นฉันถาม: ฉันผิด สิ่งต่าง ๆ มีการเปลี่ยนแปลงหรือไม่ เป็นที่ยอมรับกันหรือไม่ว่าคุณสมบัติควรจะสามารถโยนข้อยกเว้นได้หรือไม่
15 .net  exceptions 

7
สิ่งที่ฉันควรรวมไว้ในส่วนหัวของเอกสารประกอบการเรียน
ฉันกำลังมองหารูปแบบเอกสารข้อมูลระดับสำหรับ Entity, Business Logic และคลาส Data Access ของฉัน ฉันพบรูปแบบสองรูปแบบจากที่นี่ รูปแบบ 1 ///----------------------------------------------------------------- /// Namespace: <Class Namespace> /// Class: <Class Name> /// Description: <Description> /// Author: <Author> Date: <DateTime> /// Notes: <Notes> /// Revision History: /// Name: Date: Description: ///----------------------------------------------------------------- รูปแบบ 2 // =============================== // AUTHOR : // CREATE DATE : …

7
วิธีหลีกเลี่ยงความจำเป็นในการทดสอบหน่วยวิธีส่วนตัว
ฉันรู้ว่าคุณไม่ควรทดสอบวิธีส่วนตัวและถ้าดูเหมือนว่าคุณต้องการมันอาจจะมีชั้นเรียนที่นั่นรอออกมา แต่ฉันไม่ต้องการมีชั้นเรียน gazillion เพียงเพื่อให้ฉันสามารถทดสอบส่วนต่อประสานสาธารณะของพวกเขาและฉันพบว่าสำหรับชั้นเรียนจำนวนมากถ้าฉันเพียงแค่ทดสอบวิธีสาธารณะที่ฉันท้ายต้องล้อเลียนอ้างอิงมากและการทดสอบหน่วยเป็น มหาศาลและยากที่จะติดตาม ฉันชอบการเยาะเย้ยวิธีส่วนตัวเมื่อทำการทดสอบวิธีสาธารณะและการล้อเลียนการอ้างอิงภายนอกเมื่อทำการทดสอบวิธีส่วนตัว ฉันบ้าเหรอ?

3
การปรับขนาดเสาหินเทียบกับการปรับขนาดไมโครเซลเซอร์
หนึ่งในข้อโต้แย้งที่พบบ่อยสำหรับการใช้ microservices คือความยืดหยุ่นที่ดีขึ้น แต่ฉันสงสัยว่าอาร์กิวเมนต์นี้ใช้ได้จริงหรือไม่ ช่วยบอกว่าเรามีแอปพลิเคชันซึ่งประกอบด้วย 10 microservice กับ 9 ในนั้นมีสองอินสแตนซ์ (สำหรับความซ้ำซ้อน) และหนึ่งในนั้นมี 4 อินสแตนซ์เพื่อจัดการกับโหลด (scalability) อาร์กิวเมนต์ pro-microservice จะทำให้คุณสามารถปรับขนาด miroservice นี้ได้อย่างอิสระจากบริการอื่น ๆ อย่างไรก็ตามสมมติว่า 10 microservices ทั้งหมดเป็นโมดูลในโมโนลิ ธ เดียวและอินสแตนซ์หลายตัวอย่าง (เช่น 22 จากผลรวมจากด้านบน) ของโมโนลิ ธ นี้ถูกปรับใช้ ระบบควรสามารถจัดการกับโหลดสำหรับส่วนที่สำคัญอย่างหนึ่งได้เนื่องจากมีอินสแตนซ์เพียงพอที่จะทำเช่นนั้น หากอินสแตนซ์นั้นมีโปรแกรมตรรกะไม่จำเป็นต้องมีข้อเสียเพียงอย่างเดียวคือว่าไบนารีและปริมาณ RAM ที่ต้องการจะใหญ่ขึ้นเล็กน้อย แต่จากนั้นอีกครั้งความแตกต่างไม่ควรใหญ่เกินไปในกรณีส่วนใหญ่ - อย่างน้อยก็ไม่ต้องเปรียบเทียบกับสแต็กที่เหลือ (คิดว่า Spring Boot) คว่ำของ monlith ที่ปรับขนาดจะเป็นระบบที่ง่ายขึ้นโดยไม่ต้อง (ส่วนใหญ่) ความผิดพลาดของระบบกระจาย ฉันพลาดอะไรไปรึเปล่า?

2
วิธีการออกแบบการควบคุมการเข้าถึงตามบทบาท?
ฉันกำลังพยายามติดตามรูปแบบการควบคุมการเข้าถึงฐานบทบาทเพื่อ จำกัด สิ่งที่ผู้ใช้สามารถทำได้หรือไม่สามารถทำได้ในระบบของฉัน จนถึงตอนนี้ฉันมีหน่วยงานดังต่อไปนี้: users - ผู้ที่จะใช้ระบบ ที่นี่ฉันมีชื่อผู้ใช้และรหัสผ่าน role - การรวบรวมบทบาทที่ผู้ใช้สามารถมีได้ ทรัพยากรต่างๆ เช่นผู้จัดการผู้ดูแลระบบ ฯลฯ - สิ่งที่ผู้ใช้สามารถจัดการได้ เช่นเดียวกับสัญญาผู้ใช้ร่างสัญญา ฯลฯ การดำเนินการ - สิ่งที่ผู้ใช้สามารถทำกับทรัพยากร ชอบสร้างอ่านอัปเดตหรือลบ ตอนนี้ความสงสัยของฉันเพิ่มขึ้นที่นี่ในแผนภาพที่ฉันมีความสัมพันธ์เช่นนี้: การดำเนินงาน (0 .. *) จะดำเนินการเมื่อ ทรัพยากร (0 .. *) ซึ่งจะสร้างตารางที่ผมเรียกว่าสิทธิ์และที่จะจัดเก็บการดำเนินงานและทรัพยากร ตารางสิทธิ์จะมีลักษณะเช่นนี้ (หนึ่งแถว): ID: 1, การดำเนินการ:สร้าง, ทรัพยากร:สัญญา ซึ่งหมายถึงการได้รับอนุญาตในการสร้างสัญญา ฉันทำอย่างนี้เพราะฉันรู้สึกว่าทรัพยากรบางอย่างอาจไม่มีการดำเนินการทุกประเภท ตัวอย่างเช่นสำหรับการลงทะเบียนสัญญาผู้ใช้สามารถอัปโหลดไฟล์ได้ แต่การดำเนินการนี้ไม่สามารถใช้สำหรับการลงทะเบียนผู้ให้บริการได้ ดังนั้นตอนนี้เมื่อผู้ดูแลระบบจะให้สิทธิ์กับบทบาทเขาจะไม่มีรายชื่อของทรัพยากรที่มีการดำเนินการทุกครั้งที่ลงทะเบียนในระบบ ฉันคิดว่าแต่ละแหล่งข้อมูลมีการรวบรวมการดำเนินงานของตนเองที่สามารถดำเนินการกับเขาได้ ฉันสามารถชี้แจงได้หากบางสิ่งไม่เข้าใจ นี่เป็นวิธีที่ถูกต้องในการติดตั้ง rbac หรือไม่? แก้ไข …

5
การใช้ Func แทนส่วนต่อประสานสำหรับ IoC
บริบท: ฉันใช้ C # ฉันออกแบบชั้นเรียนและเพื่อแยกมันออกและทำให้การทดสอบหน่วยง่ายขึ้นฉันกำลังผ่านการพึ่งพาทั้งหมด มันไม่สร้างอินสแตนซ์ของวัตถุภายใน อย่างไรก็ตามแทนที่จะอ้างอิงอินเทอร์เฟซเพื่อรับข้อมูลที่ต้องการฉันขอให้อ้างอิงวัตถุประสงค์ทั่วไป Funcs ที่ส่งคืนข้อมูล / พฤติกรรมที่ต้องการ เมื่อฉันฉีดการพึ่งพาของฉันฉันสามารถทำได้ด้วยการแสดงออกแลมบ์ดา สำหรับฉันดูเหมือนว่าจะเป็นวิธีที่ดีกว่าเพราะฉันไม่ต้องล้อเลียนเรื่องน่าเบื่อใด ๆ ระหว่างการทดสอบหน่วย นอกจากนี้หากการดำเนินการโดยรอบมีการเปลี่ยนแปลงพื้นฐานฉันจะต้องเปลี่ยนระดับโรงงานเท่านั้น ไม่มีการเปลี่ยนแปลงในชั้นเรียนที่มีตรรกะจะต้อง อย่างไรก็ตามฉันไม่เคยเห็น IoC ทำแบบนี้มาก่อนซึ่งทำให้ฉันคิดว่าอาจมีข้อผิดพลาดที่อาจเกิดขึ้น สิ่งเดียวที่ฉันคิดได้คือความไม่ลงรอยกันเล็กน้อยกับ C # รุ่นก่อนหน้าซึ่งไม่ได้กำหนด Func และนี่ไม่ใช่ปัญหาในกรณีของฉัน มีปัญหาใด ๆ หรือไม่ที่มีการใช้งานผู้รับมอบสิทธิ์ทั่วไป / ฟังก์ชั่นการสั่งซื้อที่สูงขึ้นเช่น Func สำหรับ IoC ซึ่งตรงข้ามกับส่วนต่อประสานที่เฉพาะเจาะจงมากขึ้น?

2
การแก้ไขบั๊กจะอยู่ที่ไหนในโมเดล git-flow
ในปกติเรียกว่าโปรแกรมแก้ไขด่วนรุ่นGit ไหลไปในhotfix-*สาขาเฉพาะของพวกเขาและการแก้ไขการรวมขนาดเล็กทันทีก่อนที่จะปล่อยไปในrelease-*สาขา การแก้ไขข้อบกพร่องทั่วไปจากรุ่นก่อนหน้าดูเหมือนจะไม่มีสถานที่ พวกเขาควรจะปรากฏที่ไหน พวกเขาควรจะอยู่ในbug-*สาขาของตัวเองแตกแขนงออกdevelop(เหมือนfeatureกิ่ง)?
15 git  gitflow 

4
แนวปฏิบัติที่เหมาะสมที่สุดเกี่ยวกับการแมปประเภทและวิธีการขยาย
ฉันต้องการถามคำถามเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับประเภทการแมปและใช้วิธีการขยายใน C # ฉันรู้ว่าหัวข้อนี้มีการพูดคุยกันหลายครั้งในช่วงไม่กี่ปีที่ผ่านมา แต่ฉันได้อ่านบทความจำนวนมากและยังมีข้อสงสัย ปัญหาที่ฉันพบคือการขยายคลาสที่ฉันเป็นเจ้าของด้วยฟังก์ชัน "แปลง" สมมติว่าฉันมีคลาส "บุคคล" ที่แสดงถึงวัตถุซึ่งจะถูกใช้โดยตรรกะบางอย่าง ฉันยังมีคลาส "ลูกค้า" ที่แสดงการตอบสนองจาก API ภายนอก (จริง ๆ แล้วจะมีมากกว่าหนึ่ง API ดังนั้นฉันต้องแมปการตอบสนองของ API แต่ละประเภททั่วไป: คน) ฉันสามารถเข้าถึงซอร์สโค้ดของทั้งชั้นเรียนและในทางทฤษฎีสามารถใช้วิธีการของตัวเองที่นั่น ฉันต้องการแปลงลูกค้าเป็นบุคคลเพื่อให้ฉันสามารถบันทึกลงในฐานข้อมูล โครงการไม่ได้ใช้ผู้ทำแผนที่อัตโนมัติใด ๆ ฉันมีวิธีแก้ปัญหาที่เป็นไปได้ 4 ประการ: .ToPerson () วิธีการในระดับผู้บริโภค มันเรียบง่าย แต่ดูเหมือนว่าจะแบ่งรูปแบบความรับผิดชอบเดียวให้ฉันโดยเฉพาะอย่างยิ่งระดับ Consumer ถูกแมปกับคลาสอื่น ๆ (บางอันต้องการโดย API ภายนอกอื่น) ด้วยดังนั้นจึงต้องมีวิธีการทำแผนที่หลายวิธี การสร้างคอนสตรัคในคลาสบุคคลรับ Consumer เป็นอาร์กิวเมนต์ ง่ายและดูเหมือนว่าจะทำลายรูปแบบความรับผิดชอบเดียว ฉันต้องมีตัวสร้างการแมปหลายตัว (เนื่องจากจะมีคลาสจาก API อื่นให้ข้อมูลเดียวกับผู้บริโภค …

2
ข้อแตกต่างระหว่าง Optionals และประเภท Nullable คืออะไร
Optionalsสวิฟท์มี C # มีNullableประเภท เท่าที่ฉันสามารถบอกได้ทั้งวัตถุประสงค์เดียวกันนอกจากค่าของบางประเภทพวกเขาเก็บข้อมูลว่าตัวแปรมีค่าหรือไม่ได้กำหนด (ไม่เตรียม) คำถามเป็นOptionalsเพียงNullableประเภทที่มีชื่อแตกต่างกันหรือมีความแตกต่างทางแนวคิดอื่น ๆ กล่าวอีกนัยหนึ่งคือการพูดคุยเกี่ยวกับแนวคิดของตนเองหรือในบริบทของภาษาที่ไม่มีOptionalsหรือNullablesมันมีความสำคัญต่อการใช้คำศัพท์หรือไม่? เมื่อใช้งานฟังก์ชั่นนั้นในภาษามันไม่สำคัญว่าฉันจะพิมพ์ชื่อOptionals<T>หรือNullable<T>

5
วิธีที่มีประสิทธิภาพที่สุดในการแบ่งปันรหัสระหว่างแอปพลิเคชัน. NET คืออะไร
ในงานของเราเรามีแอปพลิเคชั่น. net ที่แตกต่างกันมากมายซึ่งมีฟังก์ชั่นพื้นฐานมากมาย เราได้สร้างแอปพลิเคชันเหล่านี้โดยใช้สถาปัตยกรรมระดับ n ที่สะอาด แต่เราได้พบกับช่วงเวลาที่เราตระหนักว่าเราได้ใช้ฟังก์ชั่นเดิมซ้ำหลายครั้ง เห็นได้ชัดว่านี่เป็นการละเมิด DRY และเราต้องการแก้ไขให้ถูกต้อง เรากำลังใช้ Nuget เพื่อความสำเร็จสำหรับรหัสกาวทั่วไป (เดินสาย IoC บันทึกการตั้งค่า) แต่เราต้องการแบ่งปันข้อมูลและชั้นธุรกิจระหว่างแอปพลิเคชันทั้งหมดของเรา แนวคิดก็คือ UI จะจัดการกับส่วนต่างๆของชั้นธุรกิจที่ต้องการจริงๆเท่านั้น สิ่งนี้ดูเหมือนว่าจะเป็นปัญหาตรงไปตรงมาในตอนแรก แต่การพัฒนาอย่างต่อเนื่องอาจทำให้เกิดข้อผิดพลาดบางอย่างและเราไม่แน่ใจว่าจะดำเนินการอย่างไร สมมติว่าเราสร้างหนึ่งชั้นธุรกิจของเราเพื่อปกครองพวกเขาทั้งหมด ฉันจะเรียกมันว่า "รากฐาน" เราแจ้งแอปพลิเคชันของเราเพื่อใช้งานมูลนิธิและทุกอย่างก็ยอดเยี่ยมมาก รากฐานถูกแจกจ่ายไปยังเลเยอร์ UI แบบแสงผ่านทาง nuget และเราดูดี แต่แล้วเราก็เริ่มเพิ่มคุณสมบัติให้กับแอปพลิเคชันของเราและเราประสบปัญหา สมมติว่าเรากำลังทำงานในโครงการ A และเราเพิ่มคุณสมบัติใหม่ที่ต้องมีการเปลี่ยนแปลงในมูลนิธิ เราทำการเปลี่ยนแปลงรากฐาน (Foundation-A) และผลักดันพวกเขาออกไปยังฟีด nuget เป็นแพ็กเกจที่ไม่เสถียร Project A ได้รับแพ็คเกจ nuget ล่าสุดและทั้งหมดนั้นดี ในขณะเดียวกันผู้พัฒนารายอื่นกำลังทำงานในโครงการ B. เขาได้รับพื้นฐานล่าสุดจากการควบคุมแหล่ง แต่นำมาจากสาขาที่มีเสถียรภาพดังนั้นจึงไม่มีการเปลี่ยนแปลงโครงการ A …

2
ฉันจะป้องกันไม่ให้ไฟล์เอ็กซีคิวต์ของฉันทำงานไม่ถูกต้องหรือไวรัสได้อย่างไร?
ฉันกำลังสร้างซอฟต์แวร์ชิ้นหนึ่งซึ่งจะทำงานบน windows และจะทำหน้าที่เหมือนตัวเรียกใช้สำหรับเกมเพื่อใช้เป็นตัวอัปเดตอัตโนมัติและตัวตรวจสอบไฟล์ในพีซีฝั่งไคลเอ็นต์ สิ่งหนึ่งที่ฉันไม่เข้าใจว่าทำไมซอฟต์แวร์ป้องกันไวรัสของฉัน (Avast) กำลังพิจารณาว่าไฟล์ exe ของฉันเป็นสิ่งที่อันตรายและจะไม่เริ่มต้นโดยไม่ขอให้ใส่ลงในแซนด์บ็อกซ์เพื่อการใช้งานอย่างปลอดภัย มีกฎใดบ้างที่ซอฟต์แวร์ของฉันควรปฏิบัติตามได้รับการปฏิบัติที่ดีหรือฉันควรจ่ายเงินหลายร้อยดอลลาร์สำหรับการเซ็นชื่อแบบดิจิทัลและสิ่งอื่น ๆ ฉันใช้ C # กับ MS Visual Studio 2010 รายงาน VirusTotal ไม่มีการฉีด DLL ทำงานเป็นเครื่องมือดาวน์โหลดไฟล์ระยะไกลโดยใช้คลาส WebClient () มันไม่เหมือนที่มันเตือนเกี่ยวกับไวรัส แต่มัน "แนะนำ" เพื่อ sandbox มัน ดูภาพหน้าจอ:

3
สถาปัตยกรรมสะอาด - ใช้คลาสของเคสมากเกินไป
ฉันกำลังเข้าสู่Clean Architectureและยกระดับ Android ของฉันจาก MVC เป็นMVPแนะนำ DI กับ Dagger 2, Reactivity with RxJava 2 และแน่นอน Java 8 ในสถาปัตยกรรมที่สะอาด MVPมีเลเยอร์ระหว่างเอนทิตี (ในดาต้าสโตร์) และผู้นำเสนอที่ควรเข้าถึง ชั้นนี้คือ"การใช้กรณี" กรณีการใช้งานเป็นส่วนติดต่อแบบอุดมคติซึ่งใช้การดำเนินการหนึ่งอย่างกับหนึ่งเอนทิตี้ ฉันยังรู้ว่า Clear Architecture " กำลังกรีดร้อง " ในแง่ของโปรเจ็กต์นั้นสามารถอ่านได้สูงมากเนื่องจากมีคลาสจำนวนมากในพวกเขา ตอนนี้อยู่ในโครงการของฉันฉันมีบางอย่างเช่น6 หน่วยงานต่าง ๆและแน่นอนแต่ละพื้นที่เก็บข้อมูลกิจการอย่างน้อย 4 วิธี (มักจะได้รับเพิ่มลบปรับปรุง) เพื่อเข้าถึงพวกเขา .. ดังนั้น 6 * 4 = 24 หากสิ่งที่ฉันเข้าใจจนถึงปัจจุบันของ Clean Architecture ฉันจะมี 24 UseCase …
15 java  android  use-case  mvp 

1
ชื่อส่วนที่ไม่ใช่ส่วนขยายของชื่อไฟล์คืออะไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา กำหนดเส้นทางไฟล์: /some/path/abc.txt ชื่อไฟล์คือ "abc.txt" และนามสกุลเป็น "txt" "มาตรฐานอุตสาหกรรม" ชื่อที่ชัดเจนสำหรับส่วน "abc" คืออะไร? สำหรับการอ้างอิงทั้งในไลบรารีที่เก่าjava.ioและใหม่กว่าของ java ชื่อไฟล์หมายถึง "abc.txt" และไม่มีคำใด (เช่น API ไลบรารีไม่สนับสนุน) สำหรับส่วน "abc"java.nio

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