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

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

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

2
ฐานข้อมูลคลาวด์เหมาะกับฉันเมื่อใด
บางคนบอกว่า DBaaS (ฐานข้อมูลเป็นบริการ) - ฐานข้อมูลคลาวด์หรือที่รู้จัก - ไม่เหมาะสำหรับระบบธุรกิจอัจฉริยะ (BI), การวิเคราะห์ (OLAP) หรือการเก็บถาวร มันเป็นเรื่องจริงเหรอ? โดยทั่วไปเมื่อ DBaaS เป็นตัวเลือกทางเทคนิคที่มีประสิทธิภาพมากที่สุด

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

5
วิธีที่ดีที่สุดในการจัดเก็บเอกสารที่เกี่ยวข้องกับโครงการรหัสคืออะไร
เรามีเอกสารจำนวนมากที่เกี่ยวข้องกับการพัฒนาซอฟต์แวร์ของเรา สิ่งเหล่านี้รวมถึงสิ่งต่าง ๆ เช่นความต้องการเอกสารการออกแบบ PDF ภายนอกไฟล์ลูกค้าคำแนะนำการทดสอบ ฯลฯ ปัจจุบันเอกสารเหล่านี้กระจัดกระจายไปทั่วสถานที่ (วิกิ "สถานที่บางแห่งในเครือข่าย" ฮาร์ดไดรฟ์สำหรับนักพัฒนาท้องถิ่น (!) และสถานที่เลวร้ายยิ่ง) วิธีที่ดีที่สุดในการติดตามพวกเขาคืออะไร? เนื่องจากเราใช้ visual studio (2010) เพื่อการพัฒนาของเราและเราไม่มีผู้พัฒนาที่ไม่ใช่นักพัฒนาในโครงการฉันคิดว่ามันเป็นความคิดที่ดีที่จะเก็บไว้ใน VS "ทางออก" ซึ่งจะช่วยให้พวกเขา ที่จะควบคุมแหล่งที่มาและเข้าถึงได้ในระดับสากลโดยนักพัฒนาทั้งหมด อย่างไรก็ตาม VS ดูเหมือนจะไม่ถูกสร้างขึ้นเพื่อทำสิ่งนี้ หากคุณแก้ไขไฟล์เอกสารใด ๆ แม้แต่ไฟล์ที่ตั้งค่าด้วยคุณสมบัติบิลด์ "ไม่มี", "ห้ามคัดลอก" VS จะต้องสร้างซอฟต์แวร์ใหม่ก่อนที่จะรันอีกครั้ง ไม่มีวิธีในการสร้าง "โครงการเอกสาร" ภายในโซลูชัน (เราใช้โครงการ C # ที่ว่างเปล่าสำหรับสิ่งนี้) Visual Studio และ Word / Excel ไม่สามารถควบคุมแหล่งสัญญาณได้ดี คุณไม่สามารถดูไฟล์ที่เช็คอินแล้วตัดสินใจที่จะทำการเปลี่ยนแปลงโดยไม่ต้องปิดไฟล์ก่อนไปที่โครงการและตรวจสอบด้วยตนเองก่อนที่จะทำการเปลี่ยนแปลง มันช้าและน่าเบื่อที่สุดเท่าที่จะทำได้ อย่างไรก็ตามนี่เป็นสิ่งที่ดีที่สุดสำหรับทีมของเรา …

1
หากคุณมีตรรกะบางอย่างที่ต้องแชร์ระหว่างสองคอนโทรลเลอร์คุณเก็บไว้ที่ไหน?
ฉันมีชุดของฟังก์ชั่นวัตถุประสงค์เดียวที่ฉันต้องการในตัวควบคุมแยกกันสองตัว ตอนนี้ฉันเพิ่งมีรหัสที่ซ้ำกันและฉันต้องการที่จะกำจัดมัน รหัสนี้เป็นส่วนหนึ่งของคอนโทรลเลอร์และไม่ได้อยู่ในเลเยอร์บริการของฉัน คุณจะวางไว้ที่ไหน
10 mvc  code-smell 

11
การออกแบบช่วงตัวอักษรที่สมบูรณ์แบบ
ฉันคิดว่าฉันจะออกแบบตัวอักษรที่ "สมบูรณ์แบบ" ได้อย่างไรถ้าฉันจะออกแบบภาษา สำหรับคุณที่ไม่ทราบว่าเป็นช่วงตัวอักษรในคำสั่งที่แสดงถึงช่วงของค่าเช่น 1-4 พวกมันถูกใช้บ่อยที่สุดใน for / foreach loops ดูเหมือนจะมีปัญหาสองข้อที่ควรคำนึงถึง การสนับสนุนสำหรับช่วงที่รวมและไม่เหมือนใครการตรึงบน +1 หรือ -1 ถึงจุดสิ้นสุดดูเหมือนว่าจะผิดพลาดและไม่มีข้อผิดพลาด สนับสนุนการก้าวดังนั้นคุณสามารถสร้างช่วงของเลขคู่หรือคี่ได้ ความสามารถในการอ่านควรชัดเจนว่าช่วงตัวอักษรหมายถึงอะไร ความไม่น่าสงสัยมันควรจะไร้เหตุผลอย่างสมบูรณ์แบบในสิ่งที่ช่วงตัวอักษรอธิบาย ค่าเริ่มต้นควรเป็นแบบรวมถึงแบบเอกสิทธิ์เนื่องจากเป็นสิ่งที่ใช้ในกรณีส่วนใหญ่สำหรับการวนซ้ำอาร์เรย์เป็นต้น อย่างไรก็ตามตัวอย่างหนึ่งของช่วงตัวอักษรที่ฉันได้เห็นคือ Ruby ซึ่งอยู่ในรูปแบบของ 1..3 สำหรับช่วงพิเศษ (ที่สิ้นสุด) และ 1 ... 3 สำหรับการรวม (บนสุด) คุณยังสามารถทำ 1..10.step (5) หลังจากพิจารณาอย่างถี่ถ้วนแล้วฉันพบบางสิ่งที่ฉันไม่ชอบเกี่ยวกับวิธีการนั้น (จากความรู้ที่ จำกัด เกี่ยวกับทับทิม) คุณสามารถอธิบายได้อย่างครอบคลุมและพิเศษเฉพาะตอนท้าย ในขณะที่อธิบายสถานการณ์ส่วนใหญ่ดูเหมือนจะไม่สอดคล้องกันเล็กน้อย แตกต่างกันเพียงเพิ่มเติม ดูเหมือนว่าเป็นสูตรสำหรับทำให้ยากที่จะดูว่าช่วงนั้นครอบคลุมหรือเป็นเอกสิทธิ์ ฉันไม่รู้เกี่ยวกับคุณ แต่จุดที่มักจะกลายเป็นสิ่งที่เบลอ :) การเพิ่มวิธีการเช่นสัญกรณ์สำหรับช่วงดูเหมือนจะผสมผสานความคิดของตัวอักษรเข้ากับชั้นเรียนซึ่งดูเหมือนว่าจะไม่สอดคล้องกันเล็กน้อย อย่างไรก็ตามหลังจากไตร่ตรองทางเลือกที่แตกต่างกัน ฉันมากับสิ่งนี้ [5..1] …

5
การพัฒนามือถือ - การได้รับฮาร์ดแวร์การพัฒนา - แนวปฏิบัติที่ดีที่สุด
ฉันกำลังมองหาที่จะพัฒนาสมาร์ทโฟน แต่ตอนนี้มีตัวเลือกค่อนข้างน้อยสำหรับแพลตฟอร์มในตอนนี้ (iOS / Android / WebOS / Bada / Symbian / MeeGo / WindowsMobile / JavaME) ฉันต้องการมีฮาร์ดแวร์สำหรับการพัฒนาเพื่อทดสอบรหัสและฟังก์ชั่นโดยรวมของอุปกรณ์ วิธีที่ดีที่สุดในการขอรับและ / หรือยืมฮาร์ดแวร์เพื่อการพัฒนาและทดสอบคืออะไร มีกฎง่ายๆที่จะใช้กับ บริษัท และแพลตฟอร์มทั้งหมดหรือไม่ ในสถานการณ์เช่นนี้ฉันเป็นผู้พัฒนาเพียงคนเดียว กระบวนการนี้เปลี่ยนไปสำหรับการเริ่มต้นหรือไม่ แฮกเกอร์สเปซ? ธุรกิจเล็ก ๆ ? ธุรกิจขนาดใหญ่
10 hardware  mobile 

9
การลบค่าตายตัวและการออกแบบการป้องกันเทียบกับ YAGNI
พื้นหลังเล็กน้อยก่อน ฉันกำลังค้นหารหัสจากอายุ -> อัตรา มีวงเล็บอายุ 7 รายการดังนั้นตารางการค้นหาคือ 3 คอลัมน์ (จาก | ถึง | อัตรา) ด้วย 7 แถว ค่าไม่ค่อยมีการเปลี่ยนแปลง - เป็นอัตราที่มีการออกกฎหมาย (คอลัมน์แรกและคอลัมน์ที่สาม) ที่มีค่าคงเดิมเป็นเวลา 3 ปี ฉันคิดว่าวิธีที่ง่ายที่สุดในการจัดเก็บตารางนี้โดยไม่ต้องเข้ารหัสยากอยู่ในฐานข้อมูลในตารางการกำหนดค่าส่วนกลางเป็นค่าข้อความเดียวที่มี CSV (ดังนั้น "65,69,0.05,70,74,0.06" เป็นวิธีการที่ 65-69 และ 70-74 ชั้นจะถูกเก็บไว้) ค่อนข้างง่ายต่อการแยกวิเคราะห์แล้วใช้ จากนั้นฉันก็ตระหนักว่าการใช้สิ่งนี้ฉันจะต้องสร้างตารางใหม่พื้นที่เก็บข้อมูลเพื่อล้อมรอบการทดสอบเลเยอร์ข้อมูลสำหรับ repo การทดสอบหน่วยรอบ ๆ โค้ดที่ unflattens CSV ลงในตารางและทดสอบรอบ ๆ การค้นหา ประโยชน์เพียงอย่างเดียวของงานนี้ทั้งหมดคือการหลีกเลี่ยงการเข้ารหัสตารางการค้นหาอย่างหนัก เมื่อพูดคุยกับผู้ใช้ (ผู้ที่ใช้ตารางการค้นหาโดยตรง - โดยดูที่สำเนา) ความคิดเห็นนั้นค่อนข้างดีที่ …
10 design 

6
แนะนำให้ใช้ SQL Server เป็นฐานข้อมูลสำหรับแอพพลิเคชั่นที่ปรับขนาดได้หรือไม่?
สมมติว่าคุณกำลังวางแผนที่จะสร้างเว็บไซต์ในระดับ Facebook (ถ้าฉันจะอ้างอิงชื่อเว็บไซต์แล้วทำไมไม่ใช้ Facebook?!) แนะนำให้ใช้ SQL Server เป็นฐานข้อมูลของคุณสำหรับแอปพลิเคชั่นดังกล่าวหรือไม่? ฉันถามคำถามนี้เพราะเพื่อนร่วมงานหลายคนของฉันบอกว่าเซิร์ฟเวอร์ SQL ไม่ควรใช้แอปพลิเคชันดังกล่าว พวกเขาชอบ Oracle หรือ MySQL แทน

7
สิ่งใดที่คุณเรียกลูกค้าของลูกค้าในเอกสารข้อกำหนดกรณีการใช้งานหรือสถานการณ์
ทีมของฉันและฉันพัฒนาซอฟต์แวร์ที่ลูกค้าของเราจะใช้เพื่อโต้ตอบกับลูกค้าของพวกเขา นอกจากนี้เรายังกิน dogfood ของเราเองและใช้ซอฟต์แวร์ของเราเองเพื่อโต้ตอบกับลูกค้าของเรา ดังนั้นบางครั้งมันอาจเป็นเรื่องยากที่จะอธิบายกรณีและสถานการณ์การใช้งานเนื่องจากพนักงานของเราสามารถเป็นผู้ประกอบการลูกค้าของเราสามารถเป็นผู้ประกอบการและลูกค้าของลูกค้าของเราสามารถเป็นผู้เยี่ยมชมได้ อย่างไรก็ตามลูกค้าของเราสามารถเป็นผู้เยี่ยมชมที่มีปฏิสัมพันธ์กับพนักงานผู้ให้บริการของเราลูกค้าของลูกค้าของเราสามารถเป็นผู้เยี่ยมชมที่โต้ตอบกับลูกค้าหรือพนักงานของเรา นี่คือรูปแบบที่: A is an employee B is a customer C is our customers' customer X interacts with Y Operator --> Visitor A --> B A --> C B --> C เนื่องจากบางครั้งลูกค้าของเราสามารถมีบทบาทที่แตกต่างกันได้บางครั้งก็จำเป็นต้องอ้างถึงบทบาทเฉพาะผู้ดำเนินการหรือผู้เข้าชมแทนที่จะเป็นพนักงานและลูกค้า นอกจากนี้ยังเป็นการกล่าวคำว่า "ลูกค้าของลูกค้า" ตลอดเวลา ฉันสงสัยว่าร้านค้าพัฒนารายอื่นจัดการรายละเอียดความหมายเหล่านี้อย่างไรเมื่อเขียนกรณีการใช้งานและสถานการณ์จำลอง มีคำศัพท์ทั่วไปหนึ่งคำที่ใช้กับผลิตภัณฑ์ใด ๆ ที่เกี่ยวข้องกับนักแสดงระดับที่สามหรือไม่? นอกเหนือจากการใช้บทบาทเฉพาะผู้ดำเนินการและผู้เข้าชมคำใดที่สามารถใช้เพื่อระบุลูกค้าของลูกค้า คำจะต้องสั้นพอที่จะนำมาใช้ภายในองค์กร หากมีความยาวเกินกว่าสองพยางค์รูปแบบที่สั้นลงจะต้องแยกความแตกต่างจากนักแสดงคนอื่น ๆ

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

3
แผนการตั้งชื่อการควบคุมที่แนะนำสำหรับมาร์กอัป XAML คืออะไร
เมื่อทำงานกับ WPF หรือ Silverlight เราควรใช้หลักการตั้งชื่อควบคุมอย่างไร คุณชื่อการควบคุมในมาร์กอัป XAML หรือไม่? ฉันเคยเห็นตัวอย่างโครงการที่ codeplex พร้อมชื่อควบคุมเช่น "selectButton" หรือ "btnSelect" คุณจะแนะนำอะไร
10 wpf  silverlight 

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

5
PHP, HTML, Javascript และการเขียนแนวปฏิบัติที่ดี
ฉันรู้ว่าฉันต้องเขียนข้อกำหนดการประชุมเกี่ยวกับการเข้ารหัส HTML, JavaScript และ PHP สำหรับฉันและทีมของฉัน ในการพัฒนาเว็บไซต์เช่นเดียวกับใน C ++ ฉันเป็นแฟนของการเยื้องและความคิดเห็น อย่างไรก็ตามในการทำงานของฉันฉันพบรหัส HTML + JavaScript + PHP ซึ่งทำให้ปวดหัว ฉันกำลังพยายามทำให้โค้ดอ่าน แต่สิ่งที่ดูเหมือนจะดีกว่าสำหรับฉัน (เพื่อเยื้อง & ความคิดเห็น) ดูเหมือนจะไม่ทำให้เพื่อนร่วมทีมหลงเสน่ห์ดังนั้นฉันจึงสงสัยว่ามีวิธีปฏิบัติที่ดีที่ดีที่สุด "เอกสารเหมือนกับหน้าเว็บของทุกวันนี้ซึ่งวันต่อวันมีความซับซ้อนมากขึ้นเรื่อย ๆ ฉันตระหนักถึงความจริงที่ว่าเป็นไปได้ว่ารหัสของหน้าเว็บทุกวันนี้มีความซับซ้อนเล็กน้อย แต่ฉันสงสัยว่าการประชุมที่ดีเกี่ยวกับแง่มุมเหล่านี้มีอยู่แล้วหรือไม่

4
ทำไมการส่งวัตถุผ่านวิธีการแบบคงที่จะได้เปรียบ?
ทำไมจะมีความได้เปรียบในการใช้วิธีการแบบสแตติกและส่งผ่านการอ้างอิงไปยังวัตถุเป็นพารามิเตอร์แทนที่จะเรียกวิธีการบนวัตถุ เพื่อชี้แจงสิ่งที่ฉันหมายถึงพิจารณาชั้นเรียนต่อไปนี้: public class SomeClass { private double someValue; public SomeClass() { // Some constructor in which someValue is set } public void incrementValue() { someValue++; } } เปรียบเทียบกับการใช้ทางเลือกนี้ด้วยวิธีการคงที่: public class SomeClass { private double someValue; public SomeClass() { // Some constructor in which someValue is set } public static …

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