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

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

5
ฉันเขียนโปรแกรมเป็นภาษาเดียวมาหลายปีแล้ว การฆ่าตัวตายอาชีพนี้หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน8 ปีที่ผ่านมา ฉันได้เขียนโปรแกรมในภาษา Object Oriented Programming มาเป็นเวลาหลายปี (ใช้งานบน Windows) ปัญหาคือภาษานี้ไม่ได้รับความนิยมมากและไม่ใช่หนึ่งในภาษาที่นิยมที่สุดในความต้องการในการโพสต์งานและอื่น ๆ ฉันควรจะกังวลไหม นายจ้าง Java จะเข้าใจหรือไม่ว่าฉันเป็นโปรแกรมเมอร์และสามารถเลือกภาษาใด ๆ ในเวลาไม่กี่สัปดาห์หรือสองสัปดาห์หรือพวกเขาจะรู้สึกว่าตั้งแต่ฉันไม่ได้ตั้งโปรแกรมในภาษาเฉพาะของพวกเขาอย่างมืออาชีพ แค่ไม่มีคุณสมบัติ? PS เท่าที่เรียนรู้ฉันเล่นกับเทคโนโลยีต่าง ๆ ที่บ้าน แต่ที่ทำงานฉันติดอยู่กับภาษาเดียวกัน

5
มาตรฐานสำหรับการสร้างแบบจำลองการใช้งานที่ทันสมัยก่อนการพัฒนาคืออะไร?
ฉันกำลังใช้งานแอปพลิเคชันระดับองค์กรครั้งแรกของฉันและฉันต้องการให้ทีมของฉันสร้างแบบจำลองแอปพลิเคชัน ASP.NET MVC C # ทั้งหมดก่อนที่เราจะแตะโค้ดหนึ่งบรรทัด UPDATE: สิ่งนี้ไม่ได้มีวัตถุประสงค์เพื่อการอภิปรายเชิงปรัชญาเกี่ยวกับเวลาที่จะจัดทำเอกสาร / แบบจำลองแอปพลิเคชัน โปรดให้คำตอบสำหรับ "วิธี" กับเอกสาร / รุ่นเท่านั้น ความจริงก็คือฉันเคยอ่านในแผนกนี้มาตลอดและฉันไม่เคยทำแบบจำลองแอปพลิเคชันมาก่อน วิธีมาตรฐานในการทำเช่นนี้คืออะไร? ควรใช้ไดอะแกรมชนิดใดและเอกสารประกอบจะเป็นอย่างไร ลิงก์ไปยังไดอะแกรมตัวอย่างและเอกสารประกอบได้รับการชื่นชม เมื่อค้นหาฉันสามารถค้นหาสิ่งต่าง ๆ มากมายในเน็ต แต่ฉันต้องการดูว่ามีฉันทามติสมัยใหม่ในปัจจุบันเกี่ยวกับวิธีการทำสิ่งนี้หรือไม่ ขอบคุณล่วงหน้า! คำชี้แจงการปิด ฉันไม่รู้ว่านี่เป็นเรื่องที่เหนียวมาก ขอขอบคุณทุกท่านที่สามารถแยกความขัดแย้งที่เห็นได้ชัดและให้คำตอบที่เป็นประโยชน์ มันเป็นการสนทนาที่น่าสนใจที่จะพูดน้อยที่สุด :) ลิงค์ที่มีประโยชน์อื่นที่ฉันค้นพบคือ: /programming/61487/do-you-use-uml-in-agile-development-practices/61519#61519

6
อะไรคือความแตกต่างระหว่าง“ การจ้าง” และ“ เกือบ” ที่ซื่อสัตย์สำหรับการสัมภาษณ์ในสถานที่สุดท้าย [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ดังนั้นเมื่อเร็ว ๆ นี้ฉันได้สัมภาษณ์ในสถานที่กับ Google และ Amazon และได้รับจดหมายปฏิเสธอย่างสุภาพทำให้ฉันรู้ว่าฉันสนิท แต่ก็ไม่เหมาะกับทักษะที่พวกเขามองหา ฉันได้ทำรอบสุดท้ายสำหรับการสัมภาษณ์ทั้งหมดที่ฉันทำ (ยกเว้นข้อเสนอบางอย่างจากตำแหน่งที่ไม่น่าสนใจเล็ก ๆ ที่ฉันสัมภาษณ์เพื่อฝึกซ้อม) แต่จนถึงตอนนี้การมีการสัมภาษณ์ 5-8 ครั้งต่อวันทำให้ฉันมีเวลามากพอที่จะ มีข้อผิดพลาดของฉันเพิ่มขึ้นพอที่จะทำให้ฉันออกจากการทำงาน ฉันรู้ว่าฉันทำได้ดีอย่างน้อยในคำถามการเข้ารหัสและคำถามทางเทคนิคทั่วไปอื่น ๆ ดูเหมือนว่าฉันไม่ดีในการออกแบบสิ่ง OOP เช่นการ์ดเกมหรืออู่จอดรถ (ฉันไม่ได้ลงลึกไปในวัตถุเดียวและใช้เวลาทั้งหมดของฉันแทน) การที่กว้างขึ้น) และการเข้ารหัสของฉันแม้ว่าพวกเขาจะทำงานโดยรวมไม่ได้มีข้อบกพร่อง / ขอบบางกรณีที่ฉันพลาด (เช่นกรณีที่โหนดอินพุตอาจเป็นคำตอบจริง ๆ แทนที่จะต้องการให้ชัดเจน) และฉันก็ไม่มีปัญหาที่จะพูดว่า "ฉันไม่รู้" แต่บางทีฉันอาจจะเร่าร้อนนิดหน่อยและจำเป็นต้องพูดเพื่อคำถามที่ฉันคิดว่าฉันสามารถตอบได้ แต่ไม่สามารถให้คำตอบที่ชัดเจนกับ ... ดังนั้นอะไรคือสิ่งที่ผลักดันคุณให้เป็นคนดี แต่ไม่ใช่ "จ้าง" มีคำแนะนำใด ๆ …

3
คุณจัดการมิติฐานข้อมูลที่เปลี่ยนแปลงตลอดเวลาอย่างไร
ในช่วงสองเดือนที่ผ่านมาฉันกำลังมองหาโซลูชันหรือแนวทางปฏิบัติเพื่อจัดการการจัดการการเผยแพร่ภายในฐานข้อมูล ฉันกำลังมองหาสิ่งที่ผู้คนมองว่าเป็นกระบวนการที่ดีที่สุดในการจัดการสิ่งนี้ เรามี 3 สภาพแวดล้อมสำหรับฐานข้อมูลของเรา: พัฒนาการ การทดสอบการยอมรับของผู้ใช้ (UAT) การผลิต ปัญหาคือบางครั้งเรากำลังเปลี่ยนแปลงสิ่งต่าง ๆ ภายในฐานข้อมูลการพัฒนาของเราและเวลาในการปรับใช้คุณสมบัติบางอย่างอาจไม่พร้อมที่จะนำไปใช้กับ UAT เมื่อเร็ว ๆ นี้เราได้เริ่มใช้การควบคุมแหล่งที่มาของ Red Gate SQL สำหรับการจัดเก็บเอนทิตีทั้งหมดของเรา ฉันคิดว่าจะไปตามชุดการเปลี่ยนแปลง (เช่นบอกว่าทุกอย่างจากเซ็ตการแก้ไข X และตอนนี้กลับถูกผลักไปที่ UAT) อย่างไรก็ตามนี่หมายความว่าผู้คนกำลังตรวจสอบรหัสของพวกเขาในการควบคุมซอร์สก่อนที่เราจะปรับใช้ซึ่งทำให้เกิดความสับสน โดยเฉพาะอย่างยิ่งเมื่อคนลืม) ปัญหาอีกประการหนึ่งที่เกิดขึ้นกับวิธีเซ็ตการแก้ไขคือหากมีข้อผิดพลาดในขั้นตอนการจัดเก็บที่จำเป็นต้องแก้ไขหมายเลขเซ็ตการแก้ไขจะจบลงด้วยการไม่อยู่ในขอบเขตของเซ็ตการแก้ไขสูงสุดของเราสำหรับการแก้ไขดังนั้น สร้างฐานข้อมูลใหม่จากเซ็ตการแก้ไขสูงสุดเราจะผลักดันข้อผิดพลาดออกไปอีกครั้ง ข้อเสนอแนะใด ๆ เกี่ยวกับกระบวนการ? ขอบคุณ

4
กฎทั่วไปสำหรับการเขียนคอมไพเลอร์ X เป็น Z ใน Y
สมมติว่า X คือภาษาอินพุต Z คือภาษาเอาต์พุตจากนั้น f คือคอมไพเลอร์ซึ่งเขียนเป็นภาษา Y f = X -> Z เนื่องจาก f เป็นเพียงโปรแกรมฉันคิดว่า Y สามารถเป็นภาษาใด ๆ ใช่ไหม เราสามารถคอมไพล์เลอร์ f1, f2, แต่ละอันเขียนใน Y1, Y2 f1 = f Y1 f2 = f Y2 g = Z -> M h = g . f # We get a compiler X …

4
การพัฒนาระบบปฏิบัติการในคำถาม C ++
ในฐานะโครงการปริญญาโทฉันกำลังออกแบบระบบปฏิบัติการง่าย ๆ มันถูกออกแบบมาให้ทำงานในโหมดจริง 16 บิตบนสถาปัตยกรรม x86 โดยหลักการแล้วฉันต้องการพัฒนาระบบปฏิบัติการนี้ใน C ++ และใช้แอสเซมบลีเท่าที่จำเป็นเท่านั้น จนถึงตอนนี้ฉันมีบูตโหลดเดอร์ที่เขียนด้วยชุดประกอบที่โหลดเคอร์เนลที่ผสม C ++ และ asm คำถามของฉันเกี่ยวกับการใช้ C ++ ณ ตอนนี้คอมไพล์และสามารถรันได้ แต่ฉันไม่ได้ใช้การจัดสรรหน่วยความจำแบบไดนามิกใด ๆ ถ้าฉันใช้ C มันจะสมเหตุสมผลที่จะเขียนฟังก์ชั่น malloc ที่จะจัดการการจัดสรรหน่วยความจำ แต่ใน C ++ จะมีการใช้คำหลักใหม่ ดังนั้น... 'ใหม่' ทำงานอย่างไรเบื้องหลังการจัดสรรหน่วยความจำและฉันจะจัดการเรื่องนี้อย่างไร และเป็นข้อพิสูจน์ ... มันสมเหตุสมผลหรือไม่ที่จะลองใช้ C ++ เพื่อใช้ประโยชน์จากการงดออกเสียงในระดับที่สูงขึ้น? หรือจะปวดหัวมากกว่าที่จะใช้และฉันควรติดกับ C หรือไม่? โปรดระบุเหตุผลหากคุณเชื่อว่า C ++ จะไม่ใช่ตัวเลือกที่ดี

7
UX ในโครงการต่อสู้ใคร
ตกลง. สมมติว่าคุณกำลังทำงานเกี่ยวกับโปรเจคตำราเรียน คุณได้มีการทะเลาะกันระหว่างหัวหน้ากับเจ้าของผลิตภัณฑ์ วิ่งต่อไปคือ UI-หนัก - ตามเวลาที่ coders ของคุณเริ่มต้นสร้างหน้าจอจริงๆคุณต้องการที่จะมีบางคนคิดว่าพวกเขากำลังจะมีลักษณะเหมือน ใครจะเป็น wireframing และเมื่อไหร่? เจ้าของผลิตภัณฑ์ มีคนสนับสนุนเจ้าของผลิตภัณฑ์หรือไม่ ต้นแบบการต่อสู้? หากคุณมีผู้เชี่ยวชาญ UX พวกเขาจะทำงานร่วมกับโคเดอร์หลังจากเริ่มการแข่งขันหรือพวกเขาจัดหา wireframes & mock-ups ล่วงหน้าที่นั่งอยู่ข้างๆการ์ดเรื่องราวและข้อ จำกัด ของคุณเพื่อเป็นแนวทางและแจ้งให้นักพัฒนาทราบ ฉันค่อนข้างมั่นใจว่าเราต้องการความช่วยเหลือจาก UX คุณเห็น แต่ฉันไม่แน่ใจว่าจะนำมันไปใช้ที่ไหน ... แก้ไข: ฉันขอใช้คำถามใหม่อีกครั้ง คุณจะมอบประสบการณ์ผู้ใช้ที่มีคุณภาพและสม่ำเสมอในโครงการที่คล่องตัวได้อย่างไร

4
คลาสการตั้งชื่อกลายเป็นทำให้อ่อนแอ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันไม่แน่ใจว่านี่เป็นลักษณะ OCD หรือไม่ แต่ฉันพบว่าบางครั้งฉันถูกบล็อกอย่างสมบูรณ์ไม่สามารถดำเนินการต่อสิ่งที่ฉันทำเมื่อตั้งชื่อชั้นเรียน (หรือฟังก์ชั่นหรือ namespace ฯลฯ ) ที่ฉันเชื่อว่าจะใช้ภายนอก ของโครงการที่กำหนด API เช่น หรือไลบรารีคลาสยูทิลิตี้ หากการตั้งชื่อไม่ถูกต้อง (ในใจของฉัน) ฉันไม่สามารถดำเนินการต่อได้ ... ฉันพยายามที่จะหาชื่อที่ถูกต้อง ฉันได้ลองเขียนแอพเล็ก ๆ ที่จะใช้เพื่อดูว่าชื่อมีลักษณะอย่างไร แต่ดูเหมือนจะไม่ช่วย ... ฉันรู้ว่ามันไม่สำคัญและมันขัดกับความคิดในการเขียนโปรแกรมใด ๆ ที่จะสมมติว่าคุณได้มันสมบูรณ์แบบก่อนใคร ... ฉันแค่รู้สึกไร้พลังไป ... เคล็ดลับ / ความคิดใด ๆ ที่จะได้รับการชื่นชมอย่างมาก ...

4
สิ่งที่ครอบคลุมในการพูดคุย "รู้เบื้องต้นเกี่ยวกับหลาม"?
ฉันอยู่ในทีมนักเรียนที่เน้นการพัฒนาเว็บไซต์ เพื่อนร่วมทีมของฉันสนใจ Python และฉันเป็นคนเดียวที่เรียนรู้มันดังนั้นฉันจึงถูกขอให้พูดคุยกับ "Python" ในสัปดาห์หน้า ฉันต้องการฟังคำแนะนำของคุณเกี่ยวกับสิ่งที่จะพูดคุยเพื่อทำให้การพูดคุยน่าสนใจแทนที่จะเป็นเรื่องไวยากรณ์ PS: เพื่อนร่วมทีมของฉันคุ้นเคยกับ PHP และ. NET

8
สแกนหนึ่งล้านแถวในฐานข้อมูลที่รวดเร็ว
พื้นหลัง ฐานข้อมูลท้องถิ่นมีแถวที่ไม่ซ้ำกันเกือบ 1.3 พันล้านแถว แต่ละแถวมีความสัมพันธ์ทางอ้อมกับละติจูดและลองจิจูดเฉพาะ (ตำแหน่ง) แต่ละแถวมีการประทับวันที่ ใช้ Case ปัญหาดังต่อไปนี้: ผู้ใช้ตั้งวันที่เริ่มต้น / สิ้นสุดและช่วงของค่า (เช่น 100 ถึง 105) ระบบรวบรวมแถวทั้งหมดที่ตรงกับวันที่กำหนดจัดกลุ่มตามสถานที่ ระบบดำเนินการกำหนดสถานที่ที่ในช่วงวันที่เหล่านั้นมีความเป็นไปได้ทางสถิติของการตกอยู่ในช่วงของค่าที่กำหนด ระบบจะแสดงตำแหน่งที่ตรงกันทั้งหมดให้กับผู้ใช้ นี่เป็นปัญหาของความเร็วและสเกล คำถาม สถาปัตยกรรมโซลูชันที่มีราคาแพงน้อยที่สุดที่คุณสามารถจินตนาการได้ว่าจะอนุญาตให้ระบบดังกล่าวดึงข้อมูลผลลัพธ์สำหรับผู้ใช้ในเวลาไม่เกินห้าวินาทีคืออะไร ระบบปัจจุบัน สภาพแวดล้อมปัจจุบัน: PostgreSQL 8.4 (สามารถปรับรุ่นได้การสลับฐานข้อมูลไม่ใช่ตัวเลือก) R และ PL / R XFS WD VelociRaptor RAM 8 GB (Corsair G.Skill; 1.3 GHz) Quad core GenuineIntel 7 (2.8 GHz) Ubuntu …

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

1
ควรใช้เวลาอย่างมีประสิทธิภาพในการประชุมซอฟต์แวร์อย่างไร
ไมโครซอฟท์ (ผ่านโปรแกรม Insider นักเรียน) ได้บินอย่างไม่เห็นแก่ตัวฉันออกไปยังMicrosoft TechEd นอร์ทอเมริกา 2011 ดูเหมือนว่าเว็บไซต์แนะนำว่าควรจัดตารางเวลาการพูดคุยที่น่าสนใจและนั่นก็เป็นเช่นนั้น อย่างไรก็ตามดูเหมือนว่าหลายคนไม่ได้ใช้เวลามากในการเจรจาและใช้เวลา "เครือข่าย" (คนใจดีไม่ใช่ซอฟต์แวร์ประเภท) แทน เราควรเพิ่มประสิทธิภาพของเวลาในการประชุมซอฟต์แวร์ได้อย่างไร

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

3
การเลือก JavaScript Asynch-Loader [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันดูที่ตัวจัดการทรัพยากรแบบอะซิงโครนัสต่าง ๆ แล้วและฉันก็ไม่แน่ใจว่าจะใช้อันไหน ฉันทำงานที่ไหนเรามีความพยายามที่แตกต่างกันในกลุ่มซึ่งโมดูลคลาสอาจใช้ jQuery รุ่นต่างๆ (ฯลฯ ) ดังนั้นการอ้างอิงที่ซ้อนกันอาจแตกต่างกันเช่นกัน ฉันไม่สามารถควบคุมสิ่งนี้ได้ดังนั้นนี่หมายความว่าฉันต้องโหลดทรัพยากรแบบไดนามิกซึ่งอาจใช้เวอร์ชันอื่นของไลบรารีเดียวกัน เช่นนี้นี่คือข้อกำหนดของฉัน: โหลดไฟล์ทรัพยากร JavaScript และ CSS แบบอะซิงโครนัส จัดการการพึ่งพาการสั่งซื้อและการพึ่งพาซ้อนกันข้ามรุ่น ตรวจสอบว่ามีการโหลดทรัพยากรอยู่แล้ว ต้องอนุญาตสำหรับการโหลดข้ามโดเมน (CDN's) (ไม่บังคับ) อนุญาตให้เรายกเลิกการโหลดทรัพยากร ฉันเคยดู: Curl RequireJS JavaScriptMVC LABjs ฉันอาจสามารถปลอมข้อกำหนดเหล่านี้ด้วยตนเองโดยการโหลดเวอร์ชันลงในตัวแปรที่ถูกเนมสเปซอย่างถูกต้องและใช้อาร์เรย์เพื่อติดตามสิ่งที่โหลดไปแล้ว ... แต่หวังว่าจะมีคนคิดค้นสิ่งนี้ขึ้นมา ดังนั้นคำถามของฉันคือ: คุณใช้อันไหน และทำไม? มีคนอื่นที่ตรงกับความต้องการของฉันอย่างเต็มที่หรือไม่ ท่านใดที่มีคารมคมคายมากที่สุดและใช้งานได้ง่ายที่สุด และทำไม? ปรับปรุง: สำหรับผู้ที่สนใจฉันลองห้องสมุด AMD …

4
GAE เป็นโครงสร้างพื้นฐานที่สามารถโฮสต์แอปที่ผู้ใช้หลายล้านคนใช้อยู่หรือไม่
ฉันอยากรู้ด้วยข้อ จำกัด ของ GAE ที่ระบุไว้ด้านล่างเป็นไปได้ไหมที่จะสร้างแอปโซเชียลที่ยอดเยี่ยม (เช่น Facebook) ด้วยการโฮสต์แอพนั้นบน GAE กล่าวอีกนัยหนึ่งคือ GAE โครงสร้างพื้นฐานที่สามารถโฮสต์แอปที่ใช้งานโดยผู้ใช้งาน 600 ล้านคน ข้อ จำกัด ที่ฉันได้รับจากกระดานสนทนา / บล็อก (โปรดเพิ่มลงในรายการหากคุณพบสิ่งที่ขาดหายไป): คำขอ HTTP / ตอบกลับ ขนาดคำขอสูงสุด: 32 MB ขนาดการตอบสนองสูงสุด: 32 MB คำขอทั้งหมดจะต้องตอบกลับภายใน 30 วินาทีมิฉะนั้น GAE จะส่ง DeadlineExceededException งาน cron แต่ละงานจะต้องดำเนินการภายใน 10 นาที งาน Cron ไม่สามารถใช้การลดแผนที่ได้ GET หรือ POST ไปยังเว็บไซต์อื่นจะถูกยกเลิกหลังจาก 5 วินาที …

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