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

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

6
คุณสามารถอ้างว่าผลิตภัณฑ์ของคุณเหมาะสมกับวัตถุประสงค์เมื่อใช้ซอฟต์แวร์ OSS ซึ่งไม่รับประกันหรือไม่
ฉันกำลังทำงานกับผลิตภัณฑ์สำหรับลูกค้าที่ต้องถูกต้องและเหมาะสมกับวัตถุประสงค์ มันสร้างขึ้นบนกอง LAMP (PHP / Cake) ดังนั้นจึงมี GPL, MIT, PHP, APACHE สิทธิ์การใช้งาน: "ตามสภาพ" โดยไม่มีการรับประกันหรือเงื่อนไขใด ๆ ไม่ว่าโดยชัดแจ้งหรือโดยนัยรวมถึง แต่ไม่ จำกัด เพียงการรับประกันหรือเงื่อนไขใด ๆ ของ TITLE การไม่ละเมิดสิทธิมนุษยชนหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ คุณเป็นผู้รับผิดชอบ แต่เพียงผู้เดียวในการพิจารณาความเหมาะสมในการใช้หรือแจกจ่ายงานและความเสี่ยงที่เกี่ยวข้องกับการใช้สิทธิ์ของคุณภายใต้ใบอนุญาตนี้ เหตุผลของฉันที่ผลิตภัณฑ์ของฉันถูกต้องและเหมาะสมกับวัตถุประสงค์: เอกสาร UAT ที่ลงนามแล้วนั้นพิสูจน์ความถูกต้องและความเหมาะสมสำหรับวัตถุประสงค์ สแต็คมีการใช้อย่างกว้างขวางโดยนักพัฒนาอุตสาหกรรมและผู้ใช้ (netcraft, gartner ฯลฯ สถิติ) ว่ามีฉันทามติว่ามันเหมาะสำหรับวัตถุประสงค์ (เช่นเราสามารถเพิกเฉยต่อความเหมาะสมของข้อความเพื่อวัตถุประสงค์ในการปฏิเสธความรับผิดชอบตามขอบเขตการรับประกัน) นี่เป็นจุดที่ถูกต้องหรือไม่? ฉันสามารถทำการอ้างสิทธิ์ได้ว่าซอฟต์แวร์ของฉันนั้นเหมาะสมกับวัตถุประสงค์หรือไม่

3
ฉันจะหลีกเลี่ยงการใช้ชื่อของตัวเองในตัวระบุแพ็คเกจหรือเนมสเปซของโครงการโอเพ่นซอร์สที่ฉันสร้างได้อย่างไร
ฉันพัฒนาไปมากในเวลาของตัวเอง โครงการเหล่านี้ที่ฉันทำมีทั้งหมดเพื่อความสนุกสนานและการเรียนรู้ (จนถึงตอนนี้) ฉันมักจะพัฒนา Java กับ Maven แต่ฉันก็รู้จักตะลุยใน. NET และ Python โครงการทั้งหมดที่ฉันทำงานเกี่ยวกับการอนุญาตให้ใช้งานโอเพ่นซอร์สแม้ว่าส่วนใหญ่จะไม่ได้อยู่ในที่เก็บรหัสสาธารณะใด ๆ การพัฒนา Java / Maven ต้องการให้ฉันใช้โครงสร้างที่ไม่ซ้ำกันgroupId(เช่น "com.mydomain") และpackageโครงสร้าง (ไดเรกทอรี) ที่ไม่ซ้ำกันซึ่งโดยทั่วไปจะมีการgroupIdพัฒนาในขณะที่. NET สนับสนุนเฉพาะnamespacesในการใช้packageแนวคิดแบบเดียวกันกับแนวคิดJava เพื่อให้แน่ใจว่ามีลักษณะเฉพาะฉันมักจะใช้ชื่อโดเมนของฉันกับส่วนที่กลับรายการ (เช่น "ca.jessewebb") ฉันเชื่อว่านี่เป็นวิธีปฏิบัติทั่วไป ฉันอยู่ในช่วงเริ่มต้นของการสร้างโปรเจ็กต์โอเพนซอร์สใหม่ Java / Maven (ลองเรียกมันว่า "newproj") และฉันต้องการที่จะวางมันบน GitHub ชื่อผู้ใช้ของฉันบน GitHub คือ "jessewebb" ดังนั้นนี้จะให้มันเหมือน https://github.com/jessewebb/newprojURL: ฉันไม่ต้องการรบกวนการลงทะเบียนชื่อโดเมน "newproj.com" ดังนั้นฉันจึงตัดสินใจใช้ "ca.jessewebb" และ "ca.jessewebb.newproj" เป็นgroupIdและpackageตามลำดับ มันเกิดขึ้นกับฉันว่าการมีตัวตนส่วนบุคคลของฉันในรหัสและเป็นส่วนหนึ่งของบ้านของโครงการ …

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

1
Microsoft Public License กับ MIT?
ฉันทำงานกับปลั๊กอินใหม่ ( flexbox ) และฉันวิ่งเข้าไปในใบอนุญาต MS-PL ซึ่งฉันไม่เคยพบมาก่อน ในอดีตฉันใช้โครงการลิขสิทธิ์ MIT และ Apache เป็นหลักดังนั้นฉันจึงไม่ทราบเลยว่าความแตกต่างหลักกับโครงการนี้คืออะไร นี่คือลิงค์ของมัน: http://opensource.org/licenses/MS-PL ใครช่วยอธิบายความแตกต่างให้ฉันได้บ้าง ฉันมักจะระมัดระวัง Microsoft ดังนั้นความจริงที่ว่าผลิตภัณฑ์นี้มาพร้อมกับสิ่งนี้ทำให้ฉันกังวลใจ

5
CPU / คอร์หลายตัวสามารถเข้าถึง RAM เดียวกันได้หรือไม่
นี่คือสิ่งที่ฉันคิดว่าจะเกิดขึ้น: หากสองคอร์พยายามเข้าถึงที่อยู่เดียวกันใน RAM ใครจะต้องรอให้อีกคนหนึ่งเข้าถึง RAM สองเวลานั้นแต่ละคอร์จะพยายามที่จะเข้าถึงที่อยู่เดียวกันพวกเขาก็อาจจะยังคงมี RAM ที่เก็บไว้ชั่วคราวเพื่อให้พวกเขาสามารถเข้าถึงตนแคชพร้อมกัน หากสองคอร์พยายามเข้าถึงที่อยู่ที่แตกต่างกันใน RAM เดียวกันจะต้องรอให้อีกสองเครื่องเข้าถึง RAM ในคำอื่น ๆ ฉันจะจินตนาการว่าสำหรับงานเขียนโปรแกรมแบบเข้มข้นของ RAM การประมวลผลหลายตัวไม่ได้ช่วยอะไรมากนอกจากว่ามันจะเกี่ยวข้องกับการอ่านจากที่อยู่เดียวกันใน RAM หลายครั้งต่อหนึ่งคอร์ ดังนั้นซีพียูหลายคอร์ / สามารถเข้าถึง RAM เดียวกันพร้อมกันหรือสิ่งที่ฉันพูดถูกต้องหรือไม่

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

2
Open Source License ที่ป้องกันการขายซ้ำ
ฉันมีโครงการโอเพ่นซอร์สที่เป็น Add-in สำหรับ TFS (เช่นสำหรับนักพัฒนาและผู้ที่ใช้ TFS) ขณะนี้กำลังใช้ GPL แต่เกิดขึ้นกับฉันว่า GPL ไม่ได้เป็นตัวแทนของสิ่งที่ฉันพยายามทำกับใบอนุญาตของฉัน ฉันต้องการให้โค้ดของฉันฟรีสำหรับทุกคนที่ต้องการใช้งาน และถ้าคุณดัดแปลงมันและใช้มันก็ยอดเยี่ยมเช่นกัน คุณไม่ควรต้องเปิดแหล่งที่มาการแก้ไขของคุณ แต่ฉันต้องการบล็อกใครบางคนจากการสร้างรหัสของฉันและขายมัน หรือดัดแปลงมันและขายมัน (ใครก็ตามที่ต้องการทำเช่นนั้นควรจะต้องเจรจาใบอนุญาตแยกต่างหากกับฉัน) มีใบอนุญาตโอเพนซอร์ซที่ป้องกันการขายซ้ำ แต่อนุญาตให้ใช้แบบไม่จำหน่ายสำหรับบุคคล / บริษัท ที่ดาวน์โหลดได้หรือไม่

5
วิธีหลีกเลี่ยงปัญหาที่เหมาะสมสำหรับการสืบทอดหลาย ๆ อย่างใน Java (Android)
ฉันมีปัญหาด้านแนวคิดเกี่ยวกับการติดตั้งโค้ดอย่างเหมาะสมซึ่งดูเหมือนว่าต้องใช้การสืบทอดหลายแบบซึ่งจะไม่เป็นปัญหาในหลายภาษา OO แต่เนื่องจากโปรเจ็กต์สำหรับ Android ไม่มีสิ่งเช่นหลายextendsอย่าง ฉันมีพวงของกิจกรรมที่ได้มาจากฐานเรียนที่แตกต่างกันเช่นที่เรียบง่ายActivity, TabActivity, ListActivity, ExpandableListActivityฯลฯ นอกจากนี้ฉันมีเศษรหัสบางอย่างที่ฉันต้องไปยังสถานที่ลงในonStart, onStop,onSaveInstanceState , onRestoreInstanceStateและอื่น ๆ ที่จัดการเหตุการณ์มาตรฐานในทุกกิจกรรม ถ้าฉันมีคลาสฐานเดียวสำหรับทุกกิจกรรมฉันจะวางโค้ดลงในคลาสที่ได้รับมาจากระดับกลางพิเศษจากนั้นสร้างกิจกรรมทั้งหมดที่ขยายออกมา น่าเสียดายที่นี่ไม่ใช่กรณีเนื่องจากมีหลายคลาสพื้นฐาน แต่การวางส่วนของรหัสเดียวกันลงในคลาสกลางหลาย ๆ คลาสนั้นไม่ใช่วิธีที่จะทำได้ อีกวิธีหนึ่งคือการสร้างวัตถุผู้ช่วยและมอบหมายการโทรเหตุการณ์ทั้งหมดที่กล่าวไว้ข้างต้นให้กับผู้ช่วย แต่สิ่งนี้ต้องการวัตถุผู้ช่วยที่จะรวมและตัวจัดการทั้งหมดจะถูกกำหนดใหม่ในชั้นกลางทั้งหมด ดังนั้นจึงไม่มีความแตกต่างกับวิธีแรกที่นี่ - ยังคงมีการทำสำเนารหัสจำนวนมาก หากมีสถานการณ์คล้ายกันเกิดขึ้นใน Windows ฉันต้องการคลาสย่อยฐานรอง (สิ่งที่ "สอดคล้อง" กับ Activityคลาสใน Android) และดักจับข้อความที่เหมาะสมที่นั่น (ในที่เดียว) Java / Android สามารถทำอะไรได้บ้าง? ฉันรู้ว่ามีเครื่องมือที่น่าสนใจเช่นเครื่องมือJava ( พร้อมตัวอย่างจริง ) แต่ฉันไม่ใช่กูรู Java และไม่แน่ใจว่ามันคุ้มค่าที่จะลองในกรณีเฉพาะนี้หรือไม่ หากฉันพลาดวิธีแก้ปัญหาที่เหมาะสมอื่น ๆ โปรดพูดถึงพวกเขา UPDATE: …

5
กำลังมองหาแนวปฏิบัติที่ดีที่สุดสำหรับการกำหนดหมายเลขเวอร์ชันของส่วนประกอบซอฟต์แวร์ที่ต้องพึ่งพา
เรากำลังพยายามตัดสินใจเกี่ยวกับวิธีการกำหนดหมายเลขรุ่นสำหรับส่วนประกอบซอฟต์แวร์ที่ดีซึ่งขึ้นอยู่กับซึ่งกันและกัน ให้เจาะจงยิ่งขึ้น: องค์ประกอบซอฟต์แวร์ A เป็นเฟิร์มแวร์ที่ทำงานอยู่บนอุปกรณ์ฝังตัวและส่วนประกอบ B เป็นไดรเวอร์ที่เกี่ยวข้องสำหรับพีซีปกติ (เครื่อง Linux / Windows) พวกเขากำลังสื่อสารกันโดยใช้โปรโตคอลที่กำหนดเอง เนื่องจากผลิตภัณฑ์ของเรามีการกำหนดเป้าหมายที่นักพัฒนาเราจะเสนอทั้งสองเวอร์ชันที่เสถียรและไม่เสถียร (ทดลอง) ของส่วนประกอบทั้งสอง (เฟิร์มแวร์เป็นแบบโอเพ่นซอร์สในขณะที่ไดรเวอร์เป็นโอเพ่นซอร์ส) ปัญหาที่ใหญ่ที่สุดของเราคือวิธีจัดการกับการเปลี่ยนแปลง API ในโปรโตคอลการสื่อสาร ในขณะที่เรากำลังใช้การตรวจสอบความเข้ากันได้ในไดรเวอร์ - มันจะตรวจสอบว่าเวอร์ชั่นของเฟิร์มแวร์นั้นเข้ากันได้กับเวอร์ชั่นของไดรเวอร์หรือไม่ - เราเริ่มพูดคุยเกี่ยวกับการกำหนดหมายเลขเวอร์ชันหลายวิธี เราคิดวิธีแก้ปัญหาขึ้นมา แต่เราก็รู้สึกเหมือนการพลิกโฉมพวงมาลัย นั่นคือเหตุผลที่ฉันต้องการได้รับคำติชมจากชุมชนนักพัฒนาซอฟต์แวร์ / โปรแกรมเมอร์เนื่องจากเราคิดว่านี่เป็นปัญหาที่พบบ่อย ดังนั้นนี่คือทางออกของเรา: เราวางแผนที่จะติดตามหมายเลขรุ่นmajor.minor.patch ที่ใช้กันอย่างแพร่หลายและใช้เลขคู่รอง / คู่สำหรับรุ่นเสถียร / ไม่เสถียร หากเราแนะนำการเปลี่ยนแปลงใน API เราจะเพิ่มจำนวนรองลงมา การประชุมนี้จะนำไปสู่สถานการณ์ตัวอย่างต่อไปนี้: สาขาที่มั่นคงในปัจจุบันคือ 1.2.1 และไม่เสถียรคือ 1.3.7 ตอนนี้แพทช์ใหม่สำหรับการเปลี่ยนแปลงที่ไม่เสถียรของ API สิ่งที่จะทำให้หมายเลขรุ่นที่ไม่เสถียรใหม่กลายเป็น 1.5.0 ครั้งหนึ่งสาขาที่ไม่เสถียรถือว่าเสถียรแล้วสมมุติใน 1.5.3 …
15 versioning 

2
โครงสร้างของที่เก็บ Git
ขออภัยถ้านี่เป็นรายการซ้ำฉันมอง เรากำลังจะย้ายไป Git ในการโค่นล้มฉันเคยมีโฟลเดอร์ \ trunk, \ branch และ \ tags ด้วย Git การสลับไปมาระหว่างสาขาจะแทนที่เนื้อหาของไดเรกทอรีการทำงานดังนั้นฉันถูกต้องที่จะสมมติว่าวิธีที่เราใช้ในการทำงานนั้นไม่ได้ใช้กับ Git ฉันเดาว่าฉันจะมีโฟลเดอร์ repo ที่อาจเป็น gitignore และ readme.txt จากนั้นโฟลเดอร์สำหรับโครงการที่ประกอบเป็น repo และนั่นก็คือ

3
เชื่อมโยงระหว่างเด็กกับผู้ปกครอง - ความคิดที่ไม่ดี?
ฉันมีสถานการณ์ที่พ่อแม่ของฉันรู้ว่ามันเป็นลูก (duh) แต่ฉันต้องการให้เด็กสามารถอ้างอิงผู้ปกครองได้ เหตุผลสำหรับเรื่องนี้คือฉันต้องการให้เด็กมีความสามารถในการกำหนดตัวเองว่าสำคัญที่สุดหรือสำคัญที่สุดเมื่อรู้สึกเช่นนั้น เมื่อเด็กทำสิ่งนี้มันจะย้ายไปที่ด้านบนหรือด้านล่างของลูกของผู้ปกครอง ในอดีตที่ผ่านมาฉันเคยใช้คุณสมบัติ WeakReference กับเด็กเพื่ออ้างอิงย้อนกลับทีโอทีพ่อแม่ แต่ฉันรู้สึกว่ามันเพิ่มค่าใช้จ่ายที่น่ารำคาญ แต่บางทีมันอาจเป็นวิธีที่ดีที่สุดที่จะทำ นี่เป็นความคิดที่ไม่ดีใช่ไหม คุณจะใช้ความสามารถนี้แตกต่างกันอย่างไร อัปเดต 1: การเพิ่มบริบทเพิ่มเติม นี่คือระบบการแสดงผลดังนั้นคอนเทนเนอร์พาเรนต์คือรายการของ windows ที่จัดกลุ่มเข้าด้วยกัน รายการย่อย (หน้าต่าง) ที่ระบุว่า "ฉันสำคัญที่สุด!" ต้องการแสดงผลโดยทั่วไปที่ด้านบนของหน้าต่างที่เหลือ พาเรนต์เป็นเพียงคอนเทนเนอร์โลจิคัลเพื่อจัดกลุ่มเด็กเหล่านี้เข้าด้วยกัน ฉันสามารถดูว่าการเพิ่มกิจกรรมเพื่อส่งสัญญาณคำขอให้อยู่ด้านบนเป็นความคิดที่ดี แต่การนำไปปฏิบัติ (สิ่งที่เด็กต้องการทำกับผู้ปกครอง) ทำไมคุณไม่ต้องการให้มีการเชื่อมโยงกับผู้ปกครอง? รายการที่เชื่อมโยงเป็นทวีคูณทำเช่นนี้เพื่อให้ผู้คนสามารถท่องไปและกลับจากบางสิ่งได้

4
หากคุณควรมีเพียงหนึ่งการยืนยันต่อการทดสอบ; วิธีทดสอบหลายอินพุต
ฉันกำลังพยายามสร้างกรณีทดสอบและได้อ่านว่าคุณควรลองและ จำกัด จำนวนการยืนยันต่อกรณีทดสอบ ดังนั้นคำถามของฉันคือวิธีที่ดีที่สุดในการทดสอบฟังก์ชั่นที่มีอินพุตหลายอินพุต ตัวอย่างเช่นฉันมีฟังก์ชั่นที่แยกวิเคราะห์สตริงจากผู้ใช้และส่งกลับจำนวนนาที สตริงสามารถอยู่ในรูปแบบ"5w6h2d1m"ที่w, h, d, mสอดคล้องกับจำนวนสัปดาห์ชั่วโมงวันและนาที หากฉันต้องการปฏิบัติตาม 'การยืนยันที่ 1 ต่อกฎการทดสอบ' ฉันต้องทำการทดสอบหลายอย่างสำหรับแต่ละรูปแบบของอินพุตหรือไม่ ดูเหมือนว่างี่เง่าดังนั้นฉันจึงมีบางอย่างเช่น self.assertEqual(parse_date('5m'), 5) self.assertEqual(parse_date('5h'), 300) self.assertEqual(parse_date('5d') ,7200) self.assertEqual(parse_date('1d4h20m'), 1700) ในกรณีทดสอบหนึ่ง มีวิธีที่ดีกว่า?

2
สร้างหนึ่งเพื่อทิ้งไปกับเอฟเฟกต์ระบบที่สอง
ในอีกด้านหนึ่งมีคำแนะนำที่บอกว่า "สร้างหนึ่งทิ้ง" หลังจากเสร็จสิ้นระบบซอฟต์แวร์และการเห็นผลิตภัณฑ์สุดท้ายเรารู้ว่ามีอะไรผิดพลาดในขั้นตอนการออกแบบและเข้าใจว่าเราควรทำอย่างไร ในทางกลับกันมี "เอฟเฟ็กต์ระบบที่สอง" ซึ่งบอกว่าระบบที่สองในรูปแบบเดียวกันที่ออกแบบมามักจะแย่กว่าระบบแรก มีคุณสมบัติหลายอย่างที่ไม่เหมาะสมในโครงการแรกและถูกผลักเข้าไปในรุ่นที่สองซึ่งมักจะนำไปสู่ความซับซ้อนและการออกแบบมากเกินไป นี่ขัดแย้งกับหลักการเหล่านี้หรือไม่? อะไรคือมุมมองที่ถูกต้องเกี่ยวกับปัญหาและพรมแดนระหว่างสองสิ่งนี้อยู่ที่ไหน ฉันเชื่อว่า "แนวทางปฏิบัติที่ดี" เหล่านี้ได้รับการส่งเสริมเป็นครั้งแรกในหนังสือน้ำเชื้อThe Mythical Man-Monthโดย Fred Brooks ฉันรู้ว่าปัญหาเหล่านี้บางอย่างได้รับการแก้ไขโดยวิธีการ Agile แต่ลึกลงไปปัญหายังคงเป็นหลักการที่ยังคงอยู่ ตัวอย่างเช่นเราจะไม่เปลี่ยนแปลงการออกแบบที่สำคัญ 3 sprint ก่อนที่จะเผยแพร่

5
รหัสของบุคคลที่สามคืออะไร?
ได้รับแรงบันดาลใจจากคำถามนี้การใช้ห้องสมุดบุคคลที่สามใช้เสื้อคลุมเสมอหรือไม่ ฉันต้องการที่จะรู้ว่าสิ่งที่ผู้คนคิดว่าจริง ๆ แล้วเป็นห้องสมุดบุคคลที่สาม ตัวอย่างจาก PHP: หากฉันกำลังสร้างแอปพลิเคชันโดยใช้เฟรมเวิร์กของ Zend ฉันควรปฏิบัติต่อไลบรารีเฟรมเวิร์กของ Zend เป็นรหัสบุคคลที่สามหรือไม่ ตัวอย่างจาก C #: ถ้าฉันสร้างแอปพลิเคชันเดสก์ท็อปฉันควรปฏิบัติต่อคลาส. Net ทั้งหมดเป็นรหัสบุคคลที่สามหรือไม่ ตัวอย่างจาก Java: ฉันควรปฏิบัติต่อไลบรารีทั้งหมดใน JDK เป็นห้องสมุดบุคคลที่สามหรือไม่ บางคนบอกว่าถ้าห้องสมุดมีความเสถียรและจะไม่เปลี่ยนบ่อยๆก็ไม่จำเป็นต้องห่อ อย่างไรก็ตามฉันล้มเหลวในการดูว่าจะทดสอบคลาสที่ขึ้นอยู่กับรหัสบุคคลที่สามโดยไม่ต้องล้อม

2
NASA ให้ลิขสิทธิ์ซอฟต์แวร์ที่พัฒนาหรือไม่
นาซ่าให้ซอฟต์แวร์การสร้างภาพที่เรียกว่าชุดเกราะ มีหน้าเครดิตและการรับทราบที่ยอมรับและแสดงรายการใบอนุญาตของการพึ่งพาซอฟต์แวร์ แต่ไม่ได้ให้ข้อมูลเกี่ยวกับสิทธิ์ใช้งานของตนเอง ฉันได้ดูซอฟต์แวร์อื่นที่ผลิตโดย NASAรวมถึงซอร์สโค้ดสำหรับGISSและไม่สามารถหาข้อมูลใด ๆ เกี่ยวกับสิทธิ์ใช้งาน ข้อมูลที่ใกล้เคียงที่สุดที่ฉันสามารถหาได้คือคำถามที่พบบ่อยสำหรับแบบจำลองสภาพภูมิอากาศโลก EdGCM Global ที่ระบุว่ารหัสนั้นอยู่ใน "โดเมนสาธารณะ" มันเป็นมาตรฐานการปฏิบัติที่ NASA จะปล่อยรหัสในโดเมนสาธารณะหรือไม่ มีข้อยกเว้นไหม ฉันสามารถสันนิษฐานได้ว่า Panoply เป็นโดเมนสาธารณะและสามารถใช้งานได้โดยไม่มีข้อ จำกัด นอกเหนือจากที่กำหนดโดยใบอนุญาตการพึ่งพาซอฟต์แวร์หรือไม่ ไม่ได้รับอนุญาตเป็นการเฉพาะเพื่อนำรหัสที่เกี่ยวข้องกลับมาใช้ใหม่ (ปัญหานี้ได้รับการหยิบยกขึ้นมาในคำตอบของคำถามแยกต่างหาก ) การปฏิบัติเช่นนี้ทั่วทั้งหน่วยงานของรัฐเป็นอย่างไร

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