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

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

2
เวลาที่คาดหวังและเวลาเฉลี่ยของอัลกอริทึมหมายถึงอะไร
สมมติว่าเราต้องการวิเคราะห์เวลาทำงานของอัลกอริทึม บางครั้งเราบอกว่าเราต้องการหาเวลาทำงานของอัลกอริทึมเมื่อขนาดอินพุตเป็น n และสำหรับกรณีที่แย่ที่สุดที่เป็นไปได้มันแสดงว่า O (n) บางครั้งฉันเห็นหนังสือ / กระดาษบอกว่าเราต้องหาเวลาที่คาดหวังของอัลกอริทึม นอกจากนี้บางครั้งเวลาทำงานเฉลี่ยจะใช้ "เวลาที่คาดหวัง" คืออะไร ในกรณีใดบ้างที่มีประโยชน์ในการค้นหาเวลาที่คาดหวังแทนเวลาที่เลวร้ายที่สุด? แก้ไข : ฉันคิดว่ามีความแตกต่างเล็กน้อยระหว่างเวลาทำงานที่คาดหวังและเวลาทำงานเฉลี่ยแต่ฉันไม่แน่ใจ ผ่านโพสต์นี้ฉันต้องการทราบความแตกต่างที่แน่นอนถ้ามี

2
มาตรฐาน 830-1998 ใช้แทนที่อะไร
ฉันได้รับการมองเข้าไปในวิธีการเอกสารโครงการซอฟต์แวร์มากขึ้นอย่างเป็นทางการและฉันได้เรียนรู้เกี่ยวกับมาตรฐาน IEEE 830-1998: การปฏิบัติที่แนะนำสำหรับการซอฟต์แวร์ข้อกำหนดจำเพาะ อย่างไรก็ตามอย่างที่คุณเห็นจากลิงค์นั้นมันถูกแทนที่ ฉันรู้ว่า 830-1998 และอาจเป็น 830-1993 อาจจะใช้ได้ดี อย่างไรก็ตามถ้าไม่มีอะไรอื่นฉันอยากจะรู้ว่ามาตรฐานได้แทนที่มัน ในกรณีนี้มันอาจจะไม่สำคัญ แต่ถ้ามาตรฐานอื่นถูกแทนที่สำหรับสิ่งทางเทคนิคเพิ่มเติมฉันคิดว่ามันเป็นความคิดที่ดีที่จะเชื่อมโยงบางสิ่งที่มาตรฐานแทนที่อื่น (ถ้าไม่ใช่อีกอันในบรรทัดเดียวกัน (830 ในนี้ กรณี)). เป็นมูลค่าการกล่าวขวัญว่า: มาตรฐานล่าสุดเมื่อค้นหา "ข้อกำหนดข้อกำหนดซอฟต์แวร์" หรือ "ข้อกำหนดซอฟต์แวร์" บนเว็บไซต์สมาคมมาตรฐาน IEEE คือ 830-1993 SWEBOKรุ่น 2004 (ปัจจุบัน) อ้างอิง 830-1993 ( ย่อหน้า 2.5 ) บทความ Wikipediaของเอกสารไม่ได้ระบุว่ามาตรฐานถูกแทนที่ TLDR: คุณจะพบสิ่งที่มาตรฐานแทนที่อื่นและสิ่งหนึ่งที่เกิดขึ้น 830-1998 ได้อย่างไร

7
จะปรับเวลาในการปรับรหัสให้ใหม่ได้อย่างไร
มีโครงการขนาดใหญ่กว่า 70k LOC โครงการจำเป็นต้องมีการเปลี่ยนรหัสใหม่ใน Core Framework และในส่วนอื่น ๆ เช่นกัน ไม่มีการกำหนดเวลาในการเริ่มต้นของโครงการสำหรับการปรับโครงสร้างใหม่ อย่างไรก็ตามด้วยเวลาและมากกว่า 40 นักพัฒนาร่วมกันและออกจากโครงการ จากมุมมองของฉันเป็นสิ่งที่ขาดไม่ได้ อะไรคือประเด็นสำคัญของคุณในการพิจารณาและปกป้องหลักการพัฒนาซอฟต์แวร์ที่เหมาะสม

3
คำแนะนำโครงสร้างโครงการแอปพลิเคชันแบบชั้น MVVM, DDD และ WPF
ฉันกำลังพยายามตั้งค่าโครงสร้างแอปพลิเคชันของฉันใน VS และฉันต้องการ "ลอง" และพิสูจน์ในอนาคตให้อยู่ในระดับที่เหมาะสม แอปพลิเคชั่นนี้จะเป็น WPF เขียนใหม่ของแอป Winform เก่าที่ไม่ได้ทำตามอนุสัญญา ไม่มีเลเยอร์เทียร์คำย่อ ฯลฯ ... มันเป็นแอพพลิเคชั่นสำหรับองค์กรขนาดใหญ่พอสมควร ฉันวางแผนที่จะใช้ Linq To SQL เป็นฐานข้อมูลของฉันและมักจะเป็น MS SQL นอกจากนี้ฉันมีชุดทักษะที่มีอยู่กับมัน ฉันต้องการติดตาม MVVM และ DDD ที่ดีที่สุดที่ฉันสามารถทำได้ แต่ฉันสับสนในโครงสร้างของแอปพลิเคชันของฉันเมื่อรวมสิ่งเหล่านี้ ให้ฉันลองและอธิบายด้วยตัวอย่างบางส่วน เมื่อฉันติดตาม MVVM โครงสร้างโฟลเดอร์ของฉันอาจมีลักษณะเช่นนี้: Views Models ViewModels Helpers แต่วิธีที่เหมาะกับ DDD แบบเลเยอร์เรียบง่ายที่โครงสร้างโครงการของฉันอาจมีลักษณะเช่นนี้: MyApp.UI MyApp.Domain MyApp.Data ฉันจะใส่Modelsใน Domain layer หรือฉันมี 3 รุ่นว่าPerson? สิ่งนี้นำไปสู่คำถามอื่นที่ฉันจะวางที่เก็บและการแมปของวัตถุ DB …

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

7
มาตรฐานตามข้อเท็จจริงสำหรับบันทึกข้อมูลลูกค้า [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ขณะนี้ฉันกำลังประเมินโครงการใหม่ที่อาจเกิดขึ้นซึ่งเกี่ยวข้องกับการสร้างฐานข้อมูลลูกค้าทั่วไป (userid, pwd, ชื่อ & นามสกุล, อีเมล, ที่อยู่, telfnr ... ) ณ จุดนี้ความต้องการมีการกำหนดคร่าวๆเท่านั้น ฐานข้อมูลลูกค้าคาดว่าจะอยู่ในบันทึก O (ล้านรายการ) ในการคำนวณตัวเลขแบ็คเอนด์สำหรับการปรับขนาดฐานข้อมูลและประเมินตัวเลือกฐานข้อมูลและสถาปัตยกรรมที่เป็นไปได้ฉันกำลังมองหามาตรฐานที่แท้จริงสำหรับบันทึกประเภทนี้ โดยเฉพาะอย่างยิ่งขนาดมาตรฐานของทุกสาขา (ชื่อ, นามสกุล, ที่อยู่, ... ) หรือเฉลี่ยปกติสำหรับลูกค้าบันทึกง่ายจะข้อมูลที่ดี เมื่อมีเว็บไซต์อีคอมเมิร์ซจำนวนมากออกมาควรมีการกำหนดค่าทั่วไปบางประเภทที่สามารถนำมาใช้ซ้ำได้และหลีกเลี่ยงการประดิษฐ์ล้อเลื่อนอีกครั้ง ความคิดใด ๆ ---- แก้ไข ---- คำตอบดูเหมือนว่าจะนำไปสู่การใช้บันทึกลูกค้ามาตรฐานและการออกแบบของคุณเอง ฉันต้องการเน้นว่าจุดเน้นของคำถามนี้คือการค้นหาการอ้างอิงสำหรับการปรับขนาดเขตข้อมูลสำหรับวัตถุลูกค้าและหลีกเลี่ยงการหาสิ่งนั้นด้วยตัวเอง (ฉันได้เน้นส่วนนั้นในข้อความต้นฉบับ - ตอนนี้เป็นตัวหนา -)

7
วิธีการหลีกเลี่ยงข้อผิดพลาดของการวิเคราะห์แบบคงที่
ฉันทำงานที่ บริษัท ที่ทำคะแนนได้ 11 จาก Joel Test - อย่างน้อยก็ในกระดาษ อย่างไรก็ตามในทางปฏิบัติไม่มีอะไรทำงานได้ดีอย่างที่คาดหวังและโครงการนี้ใช้DEFCON 1มาครึ่งปีแล้ว ตอนนี้เพื่อนส่วนใหญ่ของฉันมีความสุขถ้าพวกเขาสามารถกลับบ้านเวลา 18.00 น. - ในวันอาทิตย์ หนึ่งในแนวทางปฏิบัติที่ดีที่ทำให้ฉันไม่ทำงานคือการใช้เครื่องมือวิเคราะห์แบบคงที่ โครงการทั้งสองแทร็ค GCC คำเตือน -Wall และเป็นกรรมสิทธิ์และมีราคาแพงมาก"C / C ++"เครื่องมือ คำเตือนของ Gcc ทำบ่อยกว่าไม่ได้ชี้ไปที่ข้อผิดพลาดที่แท้จริง อย่างไรก็ตามเครื่องมือที่เป็นกรรมสิทธิ์ของรายการสิ่งต่าง ๆ เช่นการปลดเปลื้องโดยปริยายและขนาดของตัวอักษรสตริง การปลดเปลื้องโดยนัยจะถูกขึ้นบัญชีดำในหนังสือสไตล์ของพวกเขาด้วย การปฏิบัติตามมาตรฐานคือผู้คนถูกกดเพื่อให้ทุกคำเตือนปิดขึ้น โปรดทราบว่านี่ไม่รวมคำเตือนที่เป็นเท็จบวกส่วนใหญ่นี่ไม่ใช่ปัญหา ผลลัพธ์คือ: ผู้คนเพิ่มการปลดเปลื้องประเภทให้กับทุกค่าและให้กับทุกข้อโต้แย้งที่ซ่อนชนิดที่มีปัญหาจริงในกระบวนการ ผู้คนแนะนำโดยข้อบกพร่องหนึ่งหรือใช้คุณสมบัติภาษาที่มีปัญหาที่แตกต่างกัน (strlen แทน sizeof, strncpy แทน strcpy ฯลฯ ) คำเตือนถูกปิดเสียง รายงานข้อผิดพลาดเริ่มกลิ้งเข้ามา ประเด็นหลักคือรหัสต้นฉบับนั้นทำงานและเขียนโดยคนที่เล่นอย่างปลอดภัยภายในความสามารถทางภาษาของพวกเขาในขณะที่การแก้ไขไม่ได้ ตอนนี้ฉันไม่คิดว่า บริษัท …

4
“ UML เป็นสิ่งที่เลวร้ายที่สุดที่เคยเกิดขึ้นกับ MDD” ทำไม?
วิลเลียมคุกในทวีตเขียนว่า: " UML เป็นสิ่งที่เลวร้ายที่สุดที่เคยเกิดขึ้นกับ MDD ตอนนี้หลายคนโชคดีที่ตระหนักถึงสิ่งนี้ ... " ฉันต้องการทราบเหตุผลที่อยู่เบื้องหลังการอ้างสิทธิ์นั้น (เห็นได้ชัดว่าฉันไม่ได้อ้างถึงความเห็นส่วนตัวของเขา) ฉันสังเกตเห็นว่ามีหลายคนที่อยู่ที่นั่นไม่ชอบ UML มากขนาดนั้น นอกจากนี้ยังมีมูลค่าการกล่าวขวัญว่าเขาอยู่ในสถาบันการศึกษาที่ UML เป็นจอกศักดิ์สิทธิ์ของการออกแบบและการสร้างแบบจำลองที่มีประสิทธิภาพ
17 design  uml  mdd 

3
คุณจะทดสอบหน่วยหรือทำการทดสอบอัตโนมัติที่มีประสิทธิภาพมากที่สุดในรหัสกราฟิกสำหรับ OpenGL อย่างไร
ฉันกำลังเขียนเกมและเอ็นจิ้นกราฟิคประกอบบน OpenGL ใน C ++ ฉันยังเป็นแฟนของกระบวนการเข้ารหัสที่ดีและการทดสอบอัตโนมัติ การทดสอบรหัสกราฟฟิก + นั้นดูเหมือนจะไม่สามารถเปลี่ยนแปลงได้เนื่องจากผลลัพธ์มักจะเป็นเพียงการแสดงผลเท่านั้น ตัวอย่างเช่นลองนึกภาพการวิเคราะห์สตรีมรูปภาพดิบที่เรนเดอร์ไปที่หน้าจอไบต์ต่อไบต์ - คุณต้องทดสอบข้อมูลเพื่อเปรียบเทียบกับซึ่งยากที่จะสร้าง / รับและบ่อยครั้งที่รูปภาพที่แสดงไม่เหมือนกันใน ระดับไบต์เมื่อทำงานในเวลาที่ต่างกัน - การเปลี่ยนแปลงเล็กน้อยในอัลกอริทึมจะทำลายวิธีการนี้อย่างสมบูรณ์ ฉันกำลังคิดที่จะสร้างชุดทดสอบแบบเห็นภาพซึ่งโดยทั่วไปฉันสามารถสร้างฉากทดสอบที่แตกต่างกันแสดงสิ่งต่าง ๆ เช่นการทำแผนที่เงาภาพเคลื่อนไหว ฯลฯ ฯลฯ โดยเป็นส่วนหนึ่งของ CI ฉากเหล่านี้จะถูกแสดงเป็นวิดีโอ ไฟล์ (หรืออาจปล่อยไว้เป็นไฟล์ที่เรียกทำงานได้) ที่มีเมทริกต่างกัน สิ่งนี้จะยังคงต้องการการตรวจสอบไฟล์วิดีโอด้วยตนเอง แต่อย่างน้อยที่สุดมันก็ค่อนข้างอัตโนมัติและเป็นมาตรฐาน คุณคิดอย่างไร? ฉันหวังว่าจะมีวิธีที่ดีกว่า

2
ความสัมพันธ์ระหว่างพื้นที่เก็บข้อมูลกับหน่วยงาน
ฉันจะใช้พื้นที่เก็บข้อมูลและฉันต้องการใช้รูปแบบ UOW เนื่องจากผู้บริโภคของที่เก็บสามารถดำเนินการหลายอย่างและฉันต้องการที่จะยอมรับพวกเขาในครั้งเดียว หลังจากอ่านบทความต่าง ๆ เกี่ยวกับเรื่องนี้แล้วฉันยังไม่เข้าใจวิธีการเชื่อมโยงองค์ประกอบทั้งสองนี้ขึ้นอยู่กับบทความที่กำลังทำในลักษณะอื่น ๆ บางครั้ง UOW เป็นสิ่งที่อยู่ภายในที่เก็บ: public class Repository { UnitOfWork _uow; public Repository() { _uow = IoC.Get<UnitOfWork>(); } public void Save(Entity e) { _uow.Track(e); } public void SubmittChanges() { SaveInStorage(_uow.GetChanges()); } } และบางครั้งก็เป็นภายนอก: public class Repository { public void Save(Entity e, UnitOfWork uow) { uow.Track(e); …

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

2
ไฮเปอร์มีเดีย (HATEOAS) มีประโยชน์อย่างไร?
ฉันไม่เข้าใจถึงประโยชน์ของ HATEOAS สำหรับ API ที่ใช้สำหรับโปรแกรม (ตรงข้ามกับมนุษย์ที่เรียกดู API ของคุณโดยตรง) แน่นอนว่าลูกค้าไม่ได้ถูกผูกไว้กับสคีมา URL แต่พวกเขาจะถูกผูกไว้กับสคีมาข้อมูลซึ่งเป็นสิ่งเดียวกันในใจของฉัน ตัวอย่างเช่นสมมติว่าฉันต้องการดูรายการในคำสั่งซื้อสมมติว่าฉันได้ค้นพบหรือทราบ URL การสั่งซื้อแล้ว HATEOAS: order = get(orderURL); item = get(order.itemURL[5]); ไม่ใช่ HATEOAS: order = get(orderURL); item = get(getItemURL(order,5)); ในรุ่นแรกฉันต้องรู้ข้อเท็จจริงว่าวัตถุใบสั่งมีเขตข้อมูล itemURL ในรุ่นที่สองฉันต้องรู้วิธีสร้าง URL รายการ ในทั้งสองกรณีฉันต้อง "รู้" ก่อนล่วงหน้าดังนั้น HATEOAS ทำอะไรให้ฉันได้บ้าง

1
C # -4.0 เป็นมาตรฐานแบบเปิดหรือไม่
มาตรฐาน Ecma-334 (ISO / IEC 23270: 2006) สอดคล้องกับรุ่น 2.0 ของภาษา ข้อมูลจำเพาะของรุ่น 4.0 สามารถใช้งานได้อย่างอิสระจาก Microsoft แต่รายการคุณสมบัติเปิดของ Microsoft จะแสดงเฉพาะรุ่น Ecma (รุ่น 2.0) เท่านั้น ดังนั้นคุณสมบัติที่ดีทั้งหมดที่เพิ่มเข้ามาในรุ่นหลัง (LINQ, ฟังก์ชั่นแลมบ์ดา, ฯลฯ ) หนึ่งสามารถใช้พวกเขาในคอมไพเลอร์ของเขา?
17 c#  legal  standards 

3
ทำไมต้นไม้จึงเติบโตลง?
ทำไมต้นไม้ถึงเติบโตลงในสาขาวิทยาศาสตร์คอมพิวเตอร์? ฉันมีความรู้สึกว่ามันกลับไปที่เครื่องพิมพ์และโปรแกรมที่สำรวจต้นไม้ก่อนจะพิมพ์รูทและใช้ความคิดของกองกระดาษที่ไม่มีก้นเหวเพื่อแสดงระดับการเรียกซ้ำที่ไม่อาจพบได้ อ้างอิง: ต้นไม้ขึ้นลงมีรากที่ด้านบนของหน้าและใบของมันลงมาด้านล่าง จากON Holy Wars และข้ออ้างเพื่อสันติ โดยการประชุมต้นไม้ถูกดึงขึ้นลง จากบทความ Wikipediaเกี่ยวกับโครงสร้างข้อมูลต้นไม้ ต้นไม้จริงเติบโตจากรากขึ้นสู่ท้องฟ้า แต่ต้นไม้วิทยาศาสตร์คอมพิวเตอร์เติบโตจากรากลง จากเดวิดชมิดท์เอกสารประกอบการบรรยาย

2
การอ้างอิงแบบบัญญัติในโครงสร้างข้อมูลความน่าจะเป็นคืออะไร?
ฉันได้ยินเกี่ยวกับโครงสร้างข้อมูลที่น่าจะเป็นเช่นข้ามรายการและตัวกรองบลูมซึ่งมีประโยชน์อย่างมากและฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับโครงสร้างเหล่านั้นโดยทั่วไป มีการอ้างอิงตามมาตรฐานในเรื่องของระดับ Cormen และคณะหรือไม่?

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