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

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

2
การกำหนดเวอร์ชันแบบ Semantic เมื่อแก้ไขข้อบกพร่องที่สำคัญ
ฉันกำลังจัดการห้องสมุดซึ่งมีจำนวนมากของการใช้งานของประชาชนและผมมีคำถามเกี่ยวกับความหมายเวอร์ชัน ฉันต้องการ refactor หนึ่งส่วนที่สำคัญพอสมควรของห้องสมุดซึ่งถูกนำไปใช้อย่างไม่ถูกต้อง - และถูกนำไปใช้อย่างไม่ถูกต้อง แต่การทำเช่นนี้จะหมายถึงการเปลี่ยนแปลง API สาธารณะซึ่งเป็นการตัดสินใจที่สำคัญ การเปลี่ยนแปลงที่ฉันต้องการทำให้หมุนรอบวิธีใช้ตัววนซ้ำ ขณะนี้ผู้ใช้ต้องทำสิ่งนี้: while ($element = $iterator->next()) { // ... } ซึ่งไม่ถูกต้องอย่างน้อยใน PHP พื้นเมืองอินเตอร์เฟซ Iterator ฉันต้องการแทนที่ด้วยสิ่งนี้: while ($iterator->valid()) { $element = $iterator->current(); // ... $iterator->next(); } ซึ่งคล้ายกับ: foreach ($iterator as $element) { // ... } หากคุณดูที่คู่มือของ Tom เกี่ยวกับการกำหนดเวอร์ชันแบบ semantic เขาระบุไว้อย่างชัดเจนว่าการเปลี่ยนแปลงใด ๆ กับ …

5
โครงสร้างโฟลเดอร์แอปพลิเคชันเว็บ Java
ในฐานะผู้เริ่มต้นสู่ J2EE ฉันเพิ่งเริ่มพัฒนาโครงการของตัวเองตั้งแต่เริ่มต้นโดยใช้ Core ของ J2EE: Servlets & Jsps ฉันไม่สามารถประเมินว่าโครงสร้างโฟลเดอร์โครงการของฉันถูกต้องหรือไม่ นี่คือโครงสร้างโฟลเดอร์โครงการของฉัน ก่อนที่จะถามคำถามฉันยอมรับว่าฉันไม่สามารถตอบได้หรือไม่พิสูจน์ว่ามีคนถามฉันทำไมโครงสร้างโฟลเดอร์ประเภทนี้ คำถาม: มันเป็นสัญญาณที่ดีหรือไม่ที่จะนำ jsps ของฉันออกไปนอกเว็บอิน ถ้าไม่เป็นเช่นนั้นทำไม ถ้าใช่ทำไม มีแบบแผนโครงสร้างโฟลเดอร์มาตรฐานสำหรับเว็บแอปพลิเคชัน J2EE หรือไม่ฉันรู้ว่า maven ได้นำมาตรฐานบางอย่างมาใช้ แต่ยังคงเราสามารถปรับแต่งได้ตามความต้องการที่ฉันเชื่อ ฉันทำ googling ไปเล็กน้อยแล้วพบข้ออ้างอิงสองข้อ 1 2 ในคำตอบนั้นไม่ได้อยู่ในหน้าเดียวกันซึ่งฉันไม่สามารถสรุปได้ อะไรคือประเด็นที่ต้องพิจารณาในขณะที่จัดโครงสร้างของโฟลเดอร์สำหรับเว็บแอปพลิเคชัน J2EE ที่สำคัญคือ Jsps เนื้อหาแบบคงที่ควรเข้าที่ & ทำไม

4
วิธีจัดโครงสร้างการทดสอบโดยที่การทดสอบครั้งหนึ่งเป็นการตั้งค่าการทดสอบอื่น?
ฉันกำลังรวมการทดสอบระบบโดยใช้ API สาธารณะเท่านั้น ฉันมีการทดสอบที่มีลักษณะเช่นนี้: def testAllTheThings(): email = create_random_email() password = create_random_password() ok = account_signup(email, password) assert ok url = wait_for_confirmation_email() assert url ok = account_verify(url) assert ok token = get_auth_token(email, password) a = do_A(token) assert a b = do_B(token, a) assert b c = do_C(token, b) # ...and so …
18 testing 

7
ควรจัดทำงบ / อื่นโดยความหายากของกรณีหรือความยากลำบากในการจัดการกับพวกเขา?
ในรหัสที่ฉันกำลังเขียนตอนนี้ฉันมีสิ่งนี้: if (uncommon_condition) { do_something_simple(); } else { do(); something(); long(); and(); complicated(); } ส่วนหนึ่งของฉันคิดว่า "ไม่เป็นไรวิธีเขียนกรณีง่าย ๆ ควรไปก่อนและกรณีที่ซับซ้อนกว่าควรไปต่อไป" แต่อีกส่วนหนึ่งกล่าวว่า: "ไม่! elseรหัสควรอยู่ภายใต้ifเนื่องจากifสำหรับการจัดการกับกรณีที่ผิดปกติและelseสำหรับการจัดการกับกรณีอื่น ๆ ทั้งหมด" ข้อใดถูกหรือดีกว่า?

5
พบวิธีแก้ไขปัญหาในที่ทำงานได้ดีขึ้น - ฉันควรขัดขวางไม่ให้โพสต์โค้ดตัวอย่างออนไลน์หรือไม่
ฉันคิดว่าพวกเราส่วนใหญ่โปรแกรมเมอร์ใช้ Stack Overflow เพื่อแก้ไขปัญหาทุกวัน: มองหาอัลกอริทึมที่มีประสิทธิภาพในการทำอะไรบางอย่าง ตอนนี้จินตนาการถึงสถานการณ์: คุณมีปัญหาในการแก้ปัญหา Googled เล็กน้อยพบคำถาม StackOverflow แต่คุณยังไม่พอใจกับคำตอบจริงๆ ดังนั้นคุณต้องทำวิจัยของคุณเอง: คุณต้องทำเพราะคุณต้องการในแอพของ บริษัท ในที่สุดหลังจากผ่านไปหลายชั่วโมงคุณก็พบทางออกที่ดีกว่า คุณมีความสุขที่คุณเพิ่มลงในฐานรหัสของ บริษัท จากนั้นคุณต้องการส่งคำตอบด้วยข้อมูลโค้ด (เพียงหลายบรรทัด) ไปยังคำถามที่คุณพบก่อนหน้านี้เพื่อช่วยเหลือผู้อื่นด้วย แต่เดี๋ยวก่อน: ซอฟต์แวร์ของ บริษัท เป็นแหล่งข้อมูลปิดและคุณทำงานกับมันตลอดเวลา นี่หมายความว่าฉันไม่ควรโพสต์คำตอบไม่ว่าที่ทำงานหรือที่บ้านกับคำถามนั้นในช่วงที่เหลือของชีวิตของฉันเพราะฉันแก้ไขมันในที่ทำงานและ บริษัท เป็นเจ้าของรหัสชิ้นนั้น
18 legal 

4
ประสบการณ์แตกต่างกันมากแค่ไหน? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันเห็นการเพิ่มงานหลายอย่างที่ต้องมีประสบการณ์อย่างน้อย x ปี คำถามคือคุณจะรู้ได้อย่างไรว่าเมื่อใดที่ผู้สมัครมีประสบการณ์ยาวนานหลายปี คุณคาดหวังอะไรจากคนที่มีประสบการณ์ x ปี (แก้ไข: มีประสิทธิภาพคุณตรวจสอบอย่างไรว่า CV ไม่โกหกโดยไม่ต้องอาศัยการตรวจสอบทักษะ) บุคคลที่มีประสบการณ์ x ปีสามารถทำสิ่งใดกับ y ปี (ด้วย y <x) ไม่สามารถทำได้ (แก้ไข: สมมติว่าพวกเขามีทักษะที่คล้ายกัน) อาจมีบางกรณีที่โปรแกรมเมอร์ผู้หลงใหลในประสบการณ์ y ปีที่มีความรู้มากมายและทำงานในหลายโครงการและโปรแกรมเมอร์อื่น ๆ ที่มีประสบการณ์ x ปี (x> y) ที่ทำงานในโครงการไม่กี่โครงการและไม่มีประสบการณ์มากขนาดนั้น ทำไมไม่สามารถลดบางอย่างเช่นนี้ "ถ้าคุณรู้เทคโนโลยีนี้และคุณรู้วิธีการทำสิ่งนั้น (ไม่ว่าจะเป็นการออกแบบการสื่อสารการประมาณการ ฯลฯ ) แล้วคุณจะเหมาะสำหรับงานของเรา"? ฉันรู้ว่าคุณไม่สามารถจ้างบัณฑิตใหม่ด้วยประสบการณ์ …

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

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

4
Python decorators และ Lisp macros
เมื่อมองนักตกแต่งงูหลามที่มีคนสร้างคำกล่าวไว้พวกเขามีพลังเทียบเท่ากับมาโคร Lisp (โดยเฉพาะ Clojure) ดูตัวอย่างที่ให้ไว้ในPEP 318ดูเหมือนกับฉันราวกับว่าพวกเขาเป็นเพียงวิธีการที่ยอดเยี่ยมในการใช้ฟังก์ชั่นลำดับสูงแบบเก่าใน Lisp: def attrs(**kwds): def decorate(f): for k in kwds: setattr(f, k, kwds[k]) return f return decorate @attrs(versionadded="2.2", author="Guido van Rossum") def mymethod(f): ... ฉันไม่ได้เห็นรหัสใด ๆ เปลี่ยนในใด ๆ ของตัวอย่างเช่นที่อธิบายไว้ในกายวิภาคของมาโคร Clojure พลัส ธ หายไปhomoiconicity อาจทำให้การแปลงรหัสเป็นไปไม่ได้ ดังนั้นทั้งสองเปรียบเทียบกันอย่างไรและคุณสามารถบอกได้ว่าพวกเขามีความเท่าเทียมกันในสิ่งที่คุณสามารถทำได้? หลักฐานดูเหมือนจะชี้ไปที่มัน แก้ไข:จากความคิดเห็นฉันกำลังมองหาสองสิ่ง: การเปรียบเทียบ "มีประสิทธิภาพเท่ากับ" และ "เป็นเรื่องง่ายที่จะทำสิ่งที่ยอดเยี่ยมด้วย"
18 python  lisp  clojure  macros 

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

5
อะไรทำให้ JVM มีความหลากหลายในการรองรับภาษา JVM มากมาย
JVM รองรับภาษาอื่น ๆ อีกมากมายนอกเหนือจาก Java เช่นGroovy,Clojure,Scalaetc ซึ่งเป็นภาษาที่ใช้งานได้แตกต่างจาก Java (ฉันหมายถึงJava ก่อนเวอร์ชัน 8ที่Lambda'sไม่รองรับ) ที่ไม่รองรับความสามารถในการทำงานในระดับสูงสิ่งที่ทำให้ JVM อเนกประสงค์นั้น สามารถรองรับทั้ง Object Oriented และ Function Functional ได้หรือไม่

2
การ“ เปิดเผย” บางสิ่งหมายความว่าอย่างไร
ดังนั้นฉันกำลังทำงานในการสร้างแอปพลิเคชัน Google App Engine และฉันเจอคำว่า "เปิดเผย" หลายครั้งเช่น "แอปแรกของคุณสามารถแสดงวัตถุโดยใช้ HTTP based API" และ "เปิดเผยคลาสข้อมูลโมเดลผ่าน REST API " "เปิดเผย" หมายความว่าอะไร? มีการกระทำบางอย่างที่เกี่ยวข้องหรือไม่หรือเป็นส่วนนามธรรมของการออกแบบ?

6
วิธีที่ดีที่สุดในการวางแผนการเขียนโปรแกรมสำหรับทีมเล็ก ๆ ? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันเป็นผู้อำนวยการขององค์กรเริ่มต้นเล็ก ๆ ขณะนี้เรามีโปรแกรมเมอร์สองคน (มีประสบการณ์หนึ่งคนมีประสบการณ์น้อยลง) ที่กำลังสร้างแพลตฟอร์มเว็บแอปพลิเคชัน หนึ่งในความท้าทายที่ยิ่งใหญ่ที่สุดคือกระบวนการวางแผน โปรแกรมเมอร์มักจะรับผิดชอบในการวางแผนงานของตนเอง แต่เรายังคงเกินกำหนดเวลาที่กำหนด ตัวอย่างเช่นงานที่พวกเขาประเมินจะใช้เวลา 2 วันและจบลงด้วยการใช้เวลา 8 วัน สำหรับฉันมันยากที่จะสนับสนุนพวกเขาในการวางแผนเนื่องจากฉันขาดความรู้ทางเทคนิคในการประเมินอย่างแม่นยำว่างานบางอย่างจะอยู่ได้นานแค่ไหน คุณมีความคิดใด ๆ : อะไรคือสาเหตุของเรื่องนี้มันเป็นเรื่องธรรมดาสำหรับโปรแกรมเมอร์? ฉันสามารถทำอะไรได้บ้างเพื่อสนับสนุนพวกเขาในการวางแผน มีวิธีการหรือเครื่องมือใดที่มีประโยชน์สำหรับโปรแกรมเมอร์ในทีมขนาดเล็กหรือไม่?
18 php  planning 

2
นี่เป็นปัญหาประเภทใดและฉันต้องรู้คณิตศาสตร์อะไรเพื่อแก้ปัญหา
การเพาะเห็ดต้องใช้องค์ประกอบทางเคมีที่แม่นยำของสารตั้งต้น สมมติว่าเรากำลังเติบโตอยู่ใน shitakes และนี่คือองค์ประกอบที่ต้องการของวัสดุพิมพ์: Nitrogen | Benzene | Toluene | Dioxygen Diflouride 5% | 5% | 10% | 80% เราต้องการสร้างพื้นผิวที่เหมาะสมจากวัสดุที่เรามีอยู่ในมือซึ่งเรารู้องค์ประกอบทางเคมีของ Material | Nitrogen | Benzene | Toluene | Dioxygen Diflouride apples | 5% | 0% | 5% | 90% oranges | 20% | 20% | 50% | 10% Etc... คนเราคำนวณสิ่งนี้ได้อย่างไร …

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

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