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

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


1
Futures / Monads vs Events
ในกรอบแอปพลิเคชันเมื่อผลกระทบต่อประสิทธิภาพการทำงานสามารถถูกเพิกเฉยได้ (10-20 เหตุการณ์ต่อวินาทีสูงสุด) อะไรคือการบำรุงรักษาและความยืดหยุ่นในการใช้เป็นสื่อที่ต้องการสำหรับการสื่อสารระหว่างโมดูล - เหตุการณ์หรืออนาคต / สัญญา / Monads ? บ่อยครั้งที่มีการกล่าวกันว่ากิจกรรม (pub / sub, ผู้ไกล่เกลี่ย) อนุญาตให้มีเพศสัมพันธ์แบบหลวม ๆ - แอปที่บำรุงรักษาได้ดีกว่า ... ประสบการณ์ของฉันปฏิเสธสิ่งนี้: เมื่อคุณมีเหตุการณ์มากกว่า 20 เหตุการณ์ - การแก้ไขข้อบกพร่องกลายเป็นเรื่องยาก เพราะมันยากมากที่จะเห็น: ใครเมื่อไหร่และทำไมใช้อะไร สัญญา (ฉันกำลังเข้ารหัสใน Javascript) มีความน่าเกลียดและโง่กว่าเหตุการณ์มาก แต่: คุณสามารถเห็นการเชื่อมต่อระหว่างการเรียกใช้ฟังก์ชั่นได้อย่างชัดเจนดังนั้นตรรกะของแอปพลิเคชันจะกลายเป็นสิ่งที่ตรงไปตรงมามากขึ้น สิ่งที่ฉันกลัว แม้ว่าจะเป็นสัญญาที่จะนำการแต่งงานที่ยากขึ้นกับพวกเขา ... ป.ล. : คำตอบไม่จำเป็นต้องอิงจาก JS ประสบการณ์จากภาษาอื่น ๆ ที่ใช้งานได้ดี

1
AppMobi และ PhoneGap ต่างกันอย่างไร
ฉันยังใหม่ต่อการพัฒนาแอพพลิเคชั่นข้ามแพลตฟอร์ม ฉันมาข้ามที่คล้ายกันมากข้ามแพลตฟอร์มกรอบappMobiและPhoneGap ฉันอยากจะรู้ มีความแตกต่างระหว่าง apk / ipa ที่สร้างขึ้นโดยใช้ Appmobi และ apk / ipa ที่สร้างโดยใช้ PhoneGap หรือไม่? มีความแตกต่างของฟีเจอร์ดั้งเดิมที่สามารถใช้ได้หรือไม่? อะไรคือข้อดีของ appmobi ผ่าน phonegap หรือ PhoneGap มากกว่า Appmobi? นอกจากนี้ความแตกต่างอื่น ๆ ระหว่างสองสิ่งนี้

5
ซอฟต์แวร์มีลักษณะพิเศษใดบ้างวงจรชีวิตของการโจมตี / เครื่องมือเกี่ยวกับช่องโหว่ของซอฟต์แวร์
ที่มหาวิทยาลัยในท้องถิ่นของฉันมีสโมสรคอมพิวเตอร์ขนาดเล็กสำหรับนักเรียนประมาณ 20 คน สโมสรมีทีมเล็ก ๆ หลายแห่งที่มุ่งเน้นเฉพาะด้านเช่นการพัฒนาอุปกรณ์เคลื่อนที่หุ่นยนต์การพัฒนาเกมและการแฮ็ค / การรักษาความปลอดภัย ฉันแนะนำแนวคิดการพัฒนาแบบเปรียวเบื้องต้นให้กับทีมสองกลุ่มเช่นเรื่องราวของผู้ใช้การประเมินความซับซ้อนของงานและการรวมอย่างต่อเนื่องสำหรับการควบคุมเวอร์ชันและการสร้าง / ทดสอบอัตโนมัติ ฉันคุ้นเคยกับวงจรชีวิตการพัฒนาขั้นพื้นฐานบางอย่างเช่น Waterfall, Spiral, RUP, เปรียว ฯลฯ แต่ฉันสงสัยว่ามีสิ่งใดที่เป็นวงจรการพัฒนาซอฟต์แวร์สำหรับการแฮ็ค / การเจาะระบบรักษาความปลอดภัย แน่นอนแฮกเกอร์กำลังเขียนรหัสคอมพิวเตอร์ แต่วงจรชีวิตของรหัสนั้นคืออะไร ฉันไม่คิดว่าพวกเขาจะกังวลเกี่ยวกับการบำรุงรักษามากเกินไปเมื่อพบการละเมิดและแก้ไขแล้วรหัสที่ใช้ประโยชน์จากการละเมิดนั้นไม่ได้ผล ฉันคิดว่าวงจรชีวิตจะเป็นเช่น: ค้นหาช่องว่างในความปลอดภัย ใช้ประโยชน์จากช่องว่างในการรักษาความปลอดภัย จัดหา payload ใช้ประโยชน์จากส่วนของข้อมูล มีความแตกต่างอะไรบ้าง (ถ้ามี) สำหรับวงจรการพัฒนาของซอฟต์แวร์เมื่อจุดประสงค์ของผลิตภัณฑ์คือการละเมิดความปลอดภัย?

3
ความเห็น XML เป็นเอกสารที่จำเป็นหรือไม่
ฉันเคยเป็นแฟนที่ต้องการแสดงความคิดเห็น XML สำหรับเอกสาร ฉันเปลี่ยนใจเนื่องจากเหตุผลหลักสองข้อ: เช่นเดียวกับรหัสที่ดีวิธีการควรอธิบายด้วยตนเอง ในทางปฏิบัติความคิดเห็น XML ส่วนใหญ่เป็นเสียงที่ไร้ประโยชน์ซึ่งไม่มีค่าเพิ่มเติม หลายครั้งที่เราใช้ GhostDoc เพื่อสร้างความคิดเห็นทั่วไปและนี่คือสิ่งที่ฉันหมายถึงด้วยเสียงไร้ประโยชน์: /// <summary> /// Gets or sets the unit of measure. /// </summary> /// <value> /// The unit of measure. /// </value> public string UnitOfMeasure { get; set; } สำหรับฉันนั่นชัดเจน ต้องบอกว่าถ้ามีคำแนะนำพิเศษที่จะรวมแล้วเราควรใช้ความเห็น XML อย่างแน่นอน ฉันชอบข้อความที่ตัดตอนมาจากบทความนี้ : บางครั้งคุณจะต้องเขียนความคิดเห็น แต่ควรเป็นข้อยกเว้นไม่ใช่กฎ ความคิดเห็นควรใช้เมื่อแสดงสิ่งที่ไม่สามารถแสดงในรหัสได้ หากคุณต้องการเขียนโค้ดที่หรูหราให้พยายามกำจัดความคิดเห็นและเขียนรหัสเอกสารเอง ฉันผิดที่คิดว่าเราควรใช้ความคิดเห็น …


3
มีอะไรพิเศษในวันที่ 26 กรกฎาคมและเพราะเหตุใดจึงใช้ในตัวอย่างสำหรับส่วนหัวหมดอายุบ่อยครั้ง
ฉันสังเกตว่าวันที่ 26 กรกฎาคม (วันเกิดของฉัน) ถูกใช้บ่อย ๆ ในตัวอย่าง PHP ต่างๆที่เกี่ยวข้องกับการป้องกันการแคช http โดยใช้Expiresส่วนหัวเช่น: /programming/12398714/cache-issue-with-private-networking-stream /programming/2833305/how-to-expire-page-in-php-when-user-logout http://expressionengine.com/archived_forums/viewthread/81945/ มีอะไรพิเศษในวันนั้น?
10 php  headers 

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

1
ฉันจะรวมโปรแกรมแก้ไขด่วนกลับเข้าไปในสาขาคุณลักษณะโดยใช้ gitflow ได้อย่างไร
ฉันเริ่มใช้gitflowสำหรับโครงการและฉันมีสาขาฟีเจอร์เด่นเช่นเดียวกับโปรแกรมแก้ไขด่วนที่สร้างขึ้นใหม่ ตามเวิร์กโฟลว์ gitflow โปรแกรมแก้ไขด่วนจะถูกนำไปใช้กับทั้งต้นแบบและสาขาการพัฒนาแต่ไม่มีการพูดหรือทำเกี่ยวกับสาขาคุณลักษณะที่มีอยู่ อย่างไรก็ตามฉันต้องการรวมการแก้ไขด่วนกลับเข้าไปในสาขาฟีเจอร์ของฉันซึ่งใกล้ที่สุดเท่าที่ฉันจะบอกได้ว่ามีตัวเลือกสามตัวเลือก: อย่ารวมการเปลี่ยนแปลง หากจำเป็นต้องทำการเปลี่ยนแปลงสาขาฟีเจอร์ควรเป็นส่วนหนึ่งของสาขาฟีเจอร์ ผสานการพัฒนากลับเข้าไปในสาขาคุณลักษณะ ดูเหมือนว่าจะเป็นไปตามขั้นตอน gitflow ที่ดีที่สุด แต่จะทำให้เกิดความผิดพลาด Rebase สาขาคุณลักษณะเข้าสู่การพัฒนา สิ่งนี้จะรักษาความสงบเรียบร้อย แต่การรีบูตดูเหมือนจะหายไปอย่างสมบูรณ์จากเวิร์กโฟลว์ Gitflow ทั่วไป การปฏิบัติที่ดีที่สุดที่นี่คืออะไร
10 git  gitflow 

4
มีข้อเสียเปรียบในการสร้างเว็บแอปด้วย C ++ และ MySQL หรือไม่?
ฉันได้สืบทอดโปรเจ็กต์ที่น่าสนใจซึ่งมีโอกาสที่ดีที่จะนำชิ้นส่วนของซอฟต์แวร์ที่มีอยู่และเปลี่ยนเป็นแอปพลิเคชันเว็บ SaaS เมื่อโครงการได้รับการสืบทอดรหัสฐาน / กรอบถูกกำหนดแล้วเป็น C ++ และ MySQL ตัวแอพเองนั้นได้รับการคอมไพล์และรันเป็น EXE บน Windows Server UI นั้นใช้เว็บและแอปทำงานเป็นเซิร์ฟเวอร์ชนิดหนึ่ง จากสิ่งที่ฉันรู้เกี่ยวกับเว็บแอปที่ทันสมัยนี่อาจเป็นตัวเลือกที่ผิดปกติ ทุกวันนี้คนส่วนใหญ่เลือกใช้เฟรมเวิร์ก PHP หรือ Ruby on Rails แน่นอนว่านั่นคือความประทับใจที่ฉันได้รับจากการอ่านบล็อกในหัวเรื่อง ดังนั้นฉันสนใจเป็นอย่างยิ่งที่จะทราบว่า C ++ EXE ที่ได้รับการสนับสนุนโดย MySQL เป็นรากฐานที่มั่นคงสำหรับแอปพลิเคชันเว็บหรือไม่หรือว่าเราควรจะสร้างในอีกทางหนึ่งหรือไม่?

4
จะหลีกเลี่ยงชื่อทั่วไปสำหรับคลาสนามธรรมได้อย่างไร?
โดยทั่วไปคุณควรหลีกเลี่ยงคำเช่น "handle" หรือ "process" ซึ่งเป็นส่วนหนึ่งของชื่อรูทีนและชื่อคลาสเว้นแต่คุณจะจัดการกับ (เช่น) ไฟล์จัดการหรือ (เช่น) กระบวนการ unix อย่างไรก็ตามคลาสนามธรรมมักไม่รู้จริง ๆ ว่าพวกเขาจะทำอะไรกับบางสิ่งนอกจากพูดประมวลผล ในสถานการณ์ปัจจุบันของฉันฉันมี "EmailProcessor" ที่เข้าสู่กล่องจดหมายของผู้ใช้และประมวลผลข้อความจากมัน มันไม่ชัดเจนเลยสำหรับฉันที่จะตั้งชื่อให้แม่นยำยิ่งขึ้นถึงแม้ว่าฉันจะสังเกตเห็นว่ารูปแบบดังต่อไปนี้เกิดขึ้น: ดีกว่าที่จะรักษาคลาสที่ได้รับในฐานะลูกค้าและตั้งชื่อคลาสพื้นฐานตามส่วนของฟังก์ชันที่ใช้? ให้ความหมายมากกว่านี้ แต่จะละเมิด is-a เช่น EmailAcquirer จะเป็นชื่อที่สมเหตุสมผลเนื่องจากได้มาสำหรับคลาสที่ได้รับมา แต่คลาสที่ได้รับจะไม่ได้รับสำหรับใคร หรือชื่อที่คลุมเครือจริงๆเพราะใครจะรู้ว่าคลาสที่ได้รับมาจะทำอะไร อย่างไรก็ตาม "ตัวประมวลผล" ยังคงกว้างเกินไปเนื่องจากมันเป็นการทำงานที่เกี่ยวข้องมากมายเช่นการเข้าสู่ระบบและการใช้ IMAP มีทางออกจากภาวะที่กลืนไม่เข้าคายไม่ออกนี้ไหม? ปัญหามีความชัดเจนมากขึ้นสำหรับวิธีนามธรรมซึ่งคุณไม่สามารถตอบคำถาม "สิ่งนี้จะทำอย่างไร" เพราะคำตอบนั้นเป็นเพียง "สิ่งที่ลูกค้าต้องการ"

4
อะไรคือความแตกต่างระหว่างการโหลดเมธอดและการแทนที่ใน Java?
อะไรคือความแตกต่างระหว่างการโหลดเมธอดและการแทนที่ใน Java? ลายเซ็นของเมธอด, ตัวระบุการเข้าถึง, ชนิดส่งคืนมีความแตกต่างกันหรือไม่?

1
การใช้ Bit Torrent สำหรับการจัดการการปล่อยภายใน
ขณะนี้เราใช้ระบบควบคุมเวอร์ชันของเราในทางที่ผิดและใช้ ... ในฐานะที่เป็น FTP เพื่อจัดเก็บไบนารีรีลีสขนาดใหญ่ (4+ GB) เรากำลังค้นหาที่จะย้ายออกจากการปฏิบัติที่น่ากลัวนี้ซึ่งมีและยังคงพัฒนาและใช้ทรัพยากรไอทีมากขึ้นเรื่อย ๆ ในขณะที่การรวมกลุ่มและกระบวนการปล่อยออกมา ทางออกสำหรับสิ่งนี้คือการใช้การแชร์ไฟล์ P2P เพื่อแจกจ่ายอิมเมจ / ไบนารีที่เผยแพร่เหล่านี้การผสมไฟล์เซิร์ฟเวอร์และเครื่องผู้ใช้หลักบางรายเป็นเมล็ด ดังนั้นคำถามของฉันมีสองส่วนด้วยกัน: คุณเคยใช้วิธีตั้งค่า BitTorrent ในอินทราเน็ตของคุณเพื่อเผยแพร่ภาพ / ไบนารีหรือไม่ถ้าไม่คุณคิดอย่างไรเกี่ยวกับความคิดนี้ (ซึ่งไม่ใช่ของฉันจริง ๆ แล้ว BTW แต่ฉันคิดว่ามันดี) มีซอฟต์แวร์โอเพ่นซอร์สบนเว็บสำหรับการจัดการการเผยแพร่ตัวติดตาม BitTorrent หรือไม่? ดังนั้นเมื่อมีการเปิดตัวใหม่สามารถค้นหาและแสดงความพร้อมในการใช้งานของเมล็ดและปลิงได้หรือไม่? (... คุณรู้ว่าฉันหมายถึงอะไร) แก้ไข: อินทราเน็ตเป็นของโลก (เช่นสหรัฐอเมริกา, จีน, เยอรมัน, เม็กซิโก) FTP ปกติสามารถทำงานได้ แต่ไม่คุ้มค่า

5
นักพัฒนารุ่นใหม่ห้าคนและงานที่ซับซ้อนมากมาย ตอนนี้คืออะไร
บริษัท ของเราจ้างนักพัฒนารุ่นใหม่ห้าคนเพื่อช่วยฉันในการพัฒนาผลิตภัณฑ์ของเรา น่าเสียดายที่คุณสมบัติใหม่และการแก้ไขข้อบกพร่องที่เข้ามามักจะต้องการความรู้ที่ลึกกว่าผู้พัฒนาที่เพิ่งจบการศึกษาเมื่อเร็ว ๆ นี้ซึ่งมักจะมี (เธรด / การทำงานพร้อมกัน, การแก้ไขข้อบกพร่องคอขวดของประสิทธิภาพในระบบที่ซับซ้อนเป็นต้น) การมอบหมาย (และการวางแผน) งานที่พวกเขา (อาจ) สามารถแก้ไขตอบคำถามของพวกเขาให้คำปรึกษา / จัดการพวกเขาตรวจสอบรหัสของพวกเขาใช้เวลาทั้งหมดของฉันและฉันมักจะรู้สึกว่าฉันสามารถแก้ปัญหาได้น้อยกว่ากระบวนการมอบหมายทั้งหมด (นับเวลาของฉันเท่านั้น) นอกจากนี้ฉันไม่มีเวลาที่จะแก้ไขงานที่ต้องใช้ความรู้ระบบที่ลึกกว่า / ทักษะขั้นสูงมากขึ้นและดูเหมือนว่ามันจะไม่เปลี่ยนแปลงในอนาคตอันใกล้ แล้วตอนนี้เป็นอย่างไร ฉันควรทำอย่างไรเพื่อใช้งานและเวลาอย่างมีประสิทธิภาพ

2
การใช้ซอฟต์แวร์เป็นบริการโดยใช้โปรแกรม GPL (v2 +) ที่ไม่ได้แก้ไขเป็นการอ้างอิงหลัก: รหัสแหล่ง SaaS ต้องได้รับการเผยแพร่หรือไม่
ฉันออกแบบซอฟต์แวร์เป็นโครงการบริการซึ่งจะเข้าถึงได้ทางออนไลน์เท่านั้น ฉันอาจมีการพึ่งพาอย่างหนักในการปฏิบัติการที่ครอบคลุมโดย GNU GPL (v2 หรือใหม่กว่า) ฉันเข้าใจว่ารหัสของฉันหากฉันเคยเผยแพร่รหัสต้องถูกแจกจ่ายภายใต้ข้อกำหนดของ GPL เช่นกัน ฉันค่อนข้างมั่นใจว่าการใช้บริการผ่านเครือข่ายไม่ได้ถ่ายทอด / แจกจ่ายรหัส ดังนั้นฉันถูกต้องในการคิดว่าฉันอาจใช้การพึ่งพา GPL โดยไม่ต้องเปิดเผยรหัสทั้งหมดของฉันได้อย่างไร เพียงแค่ฉันสามารถให้ตัวอย่างที่เป็นรูปธรรม: สมมติว่าฉันกำลังออกแบบระบบการประมวลผลเอกสารออนไลน์เช่น Google เอกสาร ฉันต้องการอัปโหลดไฟล์ประเภทใด ๆ ลงในระบบและให้แปลงเป็นรูปแบบภายในใด ๆ ก็ได้ แทนที่จะพยายามที่จะลบตัวแปลงออกฉันควรใช้โปรแกรมที่มีอยู่ที่ฉันรู้จักซึ่งอนุญาตให้ทำการแปลงได้ โปรแกรมนี้สามารถทำงานได้กับ GNU GPL v2 (หรือใหม่กว่า) ฉันสามารถใช้ซอฟต์แวร์เป็นบริการตามกฎหมายโดยไม่ต้องให้ซอร์สโค้ดได้ไหม?

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