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

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

9
คุณจะทำอย่างไรเมื่อการประชุมการตั้งชื่อของคุณขัดแย้งกับภาษาของคุณ?
โอเคนี่เป็นหนึ่งในสิ่งเล็ก ๆ น้อย ๆ เหล่านั้นที่บั๊กฉันเสมอ ฉันมักจะไม่ย่อตัวระบุและเพียงครั้งเดียวที่ฉันใช้ตัวระบุสั้น ๆ (เช่นi) สำหรับการวนซ้ำแน่น มันทำให้ฉันหงุดหงิดเมื่อฉันทำงานใน C ++ และฉันมีตัวแปรที่ต้องมีชื่อoperatorหรือclassและฉันต้องแก้ไขมันหรือใช้ตัวย่อเพราะมันจบลงด้วยการยื่นออกมา Caveat: สิ่งนี้อาจเกิดขึ้นกับฉันอย่างไม่เป็นสัดส่วนบ่อยครั้งเนื่องจากฉันทำงานเป็นอย่างมากในการออกแบบภาษาโปรแกรมโดยที่วัตถุโดเมนอาจสะท้อนแนวคิดในภาษาโฮสต์และทำให้เกิดการปะทะกันโดยไม่ตั้งใจ คุณจะจัดการกับสิ่งนี้อย่างไร ย่อ? ( op) สะกดผิด? ( klass) มีอะไรอีกไหม ( operator_)
14 naming 

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

10
การทดสอบความถนัดของโปรแกรมเมอร์ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน9 ปีที่ผ่านมา ฉันมีเพื่อนมากมายที่เห็นสิ่งที่ฉันทำพบว่ามันน่าสนใจและถามคำถามฉัน Do you think I could be a programmer? คำตอบของฉันคือ ... ummm ... do you like math? ฉันต้องการคำตอบที่มีประโยชน์ดังนั้นฉันไม่รู้ว่าใครรู้ว่ามีการทดสอบความถนัดที่ค่อนข้างดีสำหรับคนที่จะเริ่มจากตารางที่ 1 แต่มีความคิดเชิงวิพากษ์และทักษะการแก้ปัญหาหรือไม่
14 learning  skills 

4
ข้อเสียของการส่ง XML ไปยังเบราว์เซอร์คืออะไรและปล่อยให้พวกเขาใช้ XSLT?
บริบท ทำงานเป็นนักพัฒนาอิสระฉันมักจะทำเว็บไซต์อย่างสมบูรณ์ตาม XSLT กล่าวอีกนัยหนึ่งในทุกคำร้องขอไฟล์ XML จะถูกสร้างขึ้นซึ่งมีทุกสิ่งที่เราจำเป็นต้องรู้เกี่ยวกับเนื้อหาของหน้า: ชื่อของผู้ใช้ที่เข้าสู่ระบบในปัจจุบันรายการเมนูด้านบนหากเมนูนี้เป็นแบบไดนามิก / กำหนดค่าข้อความ แสดงในพื้นที่เฉพาะของหน้า ฯลฯ จากนั้นกระบวนการ XSL (แคช ฯลฯ ) ไปยังหน้า HTML / XHTML เพื่อส่งไปยังเบราว์เซอร์ มันมีจุดที่ดีที่จะทำให้การสร้างเว็บไซต์ขนาดเล็กง่ายขึ้นโดยเฉพาะกับ PHP เป็นแม่แบบเอ็นจิ้น แต่ฉันชอบเทมเพลตเอนจิ้นอื่น ๆ เพราะมันมีประสิทธิภาพมากกว่าเทมเพลตเอนจิ้นส่วนใหญ่และเพราะฉันรู้จักดีกว่าและชอบมัน นอกจากนี้ยังเป็นไปได้เมื่อต้องการเพื่อให้การเข้าถึงข้อมูล XML แบบออนดีมานด์สำหรับการเข้าถึงแบบอัตโนมัติโดยไม่จำเป็นต้องสร้าง API แยกต่างหาก แน่นอนว่ามันจะล้มเหลวอย่างสมบูรณ์ในเว็บไซต์ขนาดกลางหรือขนาดใหญ่เนื่องจากแม้จะมีเทคนิคการแคชที่ดี XSL ยังคงลดประสิทธิภาพของเว็บไซต์โดยรวมและต้องใช้เซิร์ฟเวอร์ซีพียูมากขึ้น คำถาม เบราว์เซอร์ที่ทันสมัยมีความสามารถในการใช้ไฟล์ XML และแปลงมันด้วยไฟล์ XSL ที่เกี่ยวข้องประกาศในรูปแบบ XML <?xml-stylesheet href="demo.xslt" type="text/xsl"?>เช่น Firefox 3 สามารถทำได้ Internet Explorer …

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

4
ข้อดีของเนมสเปซ / แพ็คเกจ
ภาษาการเขียนโปรแกรมบางภาษา (เช่น Java และ C ++) มีคุณสมบัติภาษาที่เรียกว่า "แพ็คเกจ" หรือ "namespaces" การมีเนมสเปซเป็นประโยชน์จริง ๆ อย่างไร เป็นไปได้ที่จะทำเครื่องหมายฟังก์ชั่นและคลาสว่าเป็นของห้องสมุดบางแห่งโดยไม่ใช้คุณสมบัติภาษาเช่น SDL ทำ (เช่นSDL_BlitSurface()) เนมสเปซไม่มีประโยชน์เพียงพอที่จะคุ้มค่าหรือไม่? มันมีประโยชน์ในห้องสมุด แต่ไม่ใช่ในแอพพลิเคชัน มีประโยชน์ทุกที่ยกเว้นในโครงการขนาดเล็กหรือไม่? คิด?

2
วิธีการให้ลิขสิทธิ์ซอฟต์แวร์โอเพนซอร์สอย่างถูกต้อง
ฉันมีโครงการที่ฉันทำงานอยู่ซึ่งฉันต้องการผลักดันให้เป็นแหล่งเก็บข้อมูลสาธารณะ Github ใหม่เป็นโอเพ่นซอร์ส หลังจากค้นหา StackExchange เพื่อรับสิทธิ์การใช้งานที่ถูกต้องฉันได้ตัดสินสิทธิ์การใช้งาน BSD แล้ว คำถามของฉันคือตอนนี้อะไร ฉันต้องคัดลอกข้อความลิขสิทธิ์ BSDไปยังไฟล์ชื่อ LICENSE ในรูทของที่เก็บของฉันและเรียกมันว่าดีหรือไม่? นั่นเป็นกฎทั่วไปว่าใบอนุญาตโอเพนซอร์สทั้งหมดทำงานอย่างไร หรือฉันจำเป็นต้องแจ้งองค์กรอื่น ๆ ว่าฉันใช้สิทธิ์การใช้งานนี้เพื่อให้ฉันสามารถ 'บังคับใช้' หากจำเป็น?

9
คุณจะทำอย่างไรเมื่อคุณต้องทำงานในโครงการที่ใช้ภาษาที่คุณเกลียด
ฉันเพิ่งได้รับมอบหมายให้ทำงานในโครงการที่เขียนในPHP ฉันไม่สามารถเปลี่ยนสิ่งนั้นได้และไม่ได้ตั้งใจทำจริงๆ อย่างไรก็ตามนี่ไม่ใช่สถานการณ์สมมติที่ผิดปกติ คุณมีแรงจูงใจในการทำงานโครงการอย่างไรเมื่อรหัสที่คุณกำลังมองหาและสร้างอย่างต่อเนื่องทำให้คุณอยากร้องไห้ แก้ไข: ควรสังเกตว่านี่เป็นงานในมหาวิทยาลัยเพียงอย่างเดียวที่ทำสิ่งที่เกี่ยวข้องกับซอฟต์แวร์ในขณะนี้ดังนั้น "เพียงแค่เปลี่ยนงาน" ไม่ใช่ตัวเลือกจริงๆ :(


3
ORM ส่งเสริมการลดขนาดฐานข้อมูลหรือไม่
ทั้ง Doctrine และ Propel ใช้ประโยชน์จากการสืบทอดตารางแบบเดี่ยวและเป็นรูปธรรมในการทำแผนที่ความสัมพันธ์ของวัตถุ อดีตเห็นเขตข้อมูลที่เป็นไปได้ทั้งหมดในแผนผังชั้นที่แมปกับตารางเดียว - ในขณะที่หลังแมปแต่ละคลาสกับตารางที่เฉพาะเจาะจงการทำซ้ำเขตข้อมูลทั่วไปในลำดับชั้นการสืบทอด ในขณะที่สิ่งนี้เอื้อต่อเครื่องมือ ORM มันแนะนำการออกแบบฐานข้อมูลที่ไม่ดีสำหรับฉัน รูปแบบการออกแบบที่ไม่ดีเหล่านี้มีผลบังคับใช้กับฐานข้อมูลหรือไม่

10
C ++: การขาดมาตรฐานในระดับไบนารี
เหตุใด ISO / ANSI จึงไม่ได้มาตรฐาน C ++ ที่ระดับไบนารี มีปัญหาเรื่องความสะดวกในการพกพากับ C ++ ซึ่งเป็นเพราะขาดมาตรฐานในระดับไบนารีเท่านั้น Don Boxเขียน (อ้างจากหนังสือของเขาEssential COM , ตอนที่COM เป็น C ++ ที่ดีกว่า ) C ++ และการพกพา เมื่อตัดสินใจที่จะทำเพื่อแจกจ่ายคลาส c ++ เป็น DLL ที่หนึ่งจะต้องเผชิญกับหนึ่งในจุดอ่อนพื้นฐานของภาษา C ++ , ที่อยู่, ขาดมาตรฐานในระดับไบนารี แม้ว่ากระดาษทำงานฉบับร่าง ISO / ANSI C ++ พยายามที่จะประมวลผลว่าโปรแกรมใดจะรวบรวมและผลกระทบทางความหมายของการเรียกใช้จะเป็นอย่างไร ครั้งแรกที่ปัญหานี้จะเห็นได้ชัดคือเมื่อไคลเอ็นต์พยายามเชื่อมโยงกับไลบรารีนำเข้าของ FastString DLL จากสภาพแวดล้อมการพัฒนา C ++ …
14 c++  dll  ansi  iso 

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

6
การตรวจสอบแบบเพียร์สำหรับการทดสอบเช่นเดียวกับการรีวิวโค้ด
ไม่มีใครฝึกกระบวนการ "ทบทวนรหัส" สำหรับการทดสอบการทำงานหรือไม่ คุณเห็นว่ามีประโยชน์หรือไม่ วิธีที่นายจ้างปัจจุบันของฉันปฏิบัติกับ SCRUM เรารวมการทดสอบการทำงานเป็นส่วนหนึ่งของสิ่งที่ "ต้องทำ" ในการวิ่งที่กำหนด

8
อะไรคือทักษะที่คุณมองหาเมื่อจ้างพนักงานใหม่ / มือใหม่เพื่อการพัฒนา? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันอยากถามคำถามนี้กับเพื่อนนักพัฒนาของฉันที่นี่ใน Programmers.SE เพราะฉันกำลังจ้าง freshers ให้กับ บริษัท ของฉันแม้ว่าฉันจะรู้คำถามพื้นฐานบางอย่างที่สามารถขอความสดชื่นในระหว่างการสัมภาษณ์และฉันต้องการที่จะรู้ว่า อะไรคือทักษะที่คุณมองหาเมื่อจ้างพนักงานใหม่ / มือใหม่เพื่อการพัฒนา?

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

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