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

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

4
เหตุใดขนาดฮีปจึงถูกแก้ไขใน JVM
ใครสามารถอธิบายให้ฉันฟังได้ว่าทำไม JVM (ฉันไม่ได้ตรวจสอบมากเกินไป แต่ฉันไม่เคยเห็นใครที่ไม่ได้ทำแบบนั้น) จำเป็นต้องใช้ขนาดฮีปคงที่ ฉันรู้ว่ามันง่ายกว่าที่จะนำไปใช้กับกองซ้อนที่เรียบง่าย แต่ตอนนี้ Sun JVM มีอายุเกินหนึ่งทศวรรษแล้วดังนั้นฉันจึงคาดหวังให้พวกเขามีเวลาปรับปรุงสิ่งนี้ จำเป็นต้องกำหนดขนาดหน่วยความจำสูงสุดของโปรแกรมของคุณเมื่อเวลาเริ่มต้นดูเหมือนว่าสิ่งที่ต้องทำ 1960 และมีการโต้ตอบที่ไม่ดีกับการจัดการหน่วยความจำเสมือนของ OS (GC การดึงข้อมูลสลับไม่สามารถกำหนดจำนวนหน่วยความจำกระบวนการ Java ใช้งานจริงจากทางด้าน OS พื้นที่ VM จำนวนมากสูญเปล่า (ฉันรู้ว่าคุณไม่สนใจเครื่อง 48 บิตแฟนซีของคุณ ... )) ฉันยังเดาว่าความพยายามเศร้าต่าง ๆ ในการสร้างระบบปฏิบัติการขนาดเล็กภายใน JVM (EE แอ็พพลิเคชันเซิร์ฟเวอร์ OSGi) เป็นอย่างน้อยบางส่วนที่จะตำหนิในสถานการณ์เช่นนี้เพราะการเรียกใช้กระบวนการ Java หลายกระบวนการบนระบบนำไปสู่การสูญเสียทรัพยากร ให้หน่วยความจำแต่ละอันที่พวกเขาอาจต้องใช้สูงสุด น่าแปลกใจที่ Google ไม่ได้ยอมแพ้กับความชั่วร้ายที่เกิดขึ้นกับสิ่งที่ฉันคาดหวัง แต่พวกเขาอาจถูกฝังอยู่ใต้ผู้คนหลายล้านคนเพื่อค้นหาขนาดกองที่มั่นคงและยอมรับความจริง
20 java 

1
เหตุใด C ไลบรารีใช้แมโครและฟังก์ชันที่มีชื่อเดียวกัน
ฉันกำลังอ่าน 'ห้องสมุดมาตรฐาน C' โดย PJ Plauger ซึ่งน่าสนใจจริงๆ หนังสือเล่มนี้ไม่เพียง แต่อธิบายวิธีการใช้ห้องสมุด แต่ยังอธิบายถึงวิธีการนำไปใช้งาน ฉันอ่านctype.hส่วนเสร็จแล้วและในส่วนหัวฟังก์ชั่นจะประกาศเป็นทั้งมาโครและฟังก์ชั่น ตัวอย่างเช่น int isdigit(int); แต่ยัง #define isdigit(c) (_Ctype[(int)(c)] & _DI) ฉันไม่เข้าใจว่าทำไมใช้ทั้งคู่ นอกจากนี้ถ้าฉันพยายามสร้างctypeส่วนหัวที่กำหนดเองและการนำไปใช้ใหม่ฉันสามารถรวบรวมได้สำเร็จถ้าฉันลบแมโครออก (ใส่เครื่องหมายความคิดเห็นในการกำหนด) แง่มุมนี้ไม่ได้อธิบายในหนังสือ ใครช่วยอธิบายหน่อยได้ไหม?
20 c  naming  functions  macros 

5
การใช้งานของสมาคมการรวมและองค์ประกอบคืออะไร?
ฉันได้ผ่านทฤษฏีมากมายเกี่ยวกับการห่อหุ้มและเทคนิคสามประการของการนำไปใช้ซึ่ง ได้แก่ Association, Aggregation and Composition สิ่งที่ฉันพบคือ : encapsulation Encapsulation เป็นเทคนิคในการสร้างฟิลด์ในคลาสส่วนตัวและให้การเข้าถึงฟิลด์ด้วยวิธีสาธารณะ หากมีการประกาศเขตข้อมูลส่วนบุคคลจะไม่สามารถเข้าถึงได้โดยทุกคนที่อยู่นอกชั้นเรียนดังนั้นจึงซ่อนเขตข้อมูลภายในชั้นเรียน ด้วยเหตุนี้การห่อหุ้มจึงถูกเรียกว่าการซ่อนข้อมูล การห่อหุ้มสามารถอธิบายได้ว่าเป็นเกราะป้องกันที่ป้องกันรหัสและข้อมูลที่ถูกเข้าถึงแบบสุ่มโดยรหัสอื่นที่กำหนดไว้นอกคลาส การเข้าถึงข้อมูลและรหัสถูกควบคุมอย่างแน่นหนาโดยอินเตอร์เฟส ประโยชน์หลักของการห่อหุ้มคือความสามารถในการปรับเปลี่ยนรหัสที่เรานำไปใช้โดยไม่ทำลายรหัสของผู้อื่นที่ใช้รหัสของเรา ด้วยคุณสมบัตินี้ Encapsulation ช่วยให้การบำรุงรักษาความยืดหยุ่นและความสามารถในการขยายโค้ดของเรา สมาคม การเชื่อมโยงคือความสัมพันธ์ที่วัตถุทั้งหมดมีวงจรชีวิตของตนเองและไม่มีเจ้าของ ลองมาเป็นตัวอย่างของครูและนักเรียน นักเรียนหลายคนสามารถเชื่อมโยงกับครูคนเดียวและนักเรียนคนเดียวสามารถเชื่อมโยงกับครูหลายคน แต่ไม่มีความเป็นเจ้าของระหว่างวัตถุและทั้งสองมีวงจรชีวิตของตัวเอง ทั้งสามารถสร้างและลบได้อย่างอิสระ การรวมตัว การรวมเป็นรูปแบบเฉพาะของสมาคมที่วัตถุทั้งหมดมีวงจรชีวิตของตนเอง แต่มีความเป็นเจ้าของและวัตถุลูกไม่สามารถเป็นของวัตถุแม่อื่นได้ มาดูตัวอย่างของภาควิชาและอาจารย์ ครูคนเดียวไม่สามารถอยู่ในหลายแผนกได้ แต่ถ้าเราลบแผนกวัตถุของอาจารย์จะไม่ถูกทำลาย เราสามารถคิดว่ามันเป็นความสัมพันธ์แบบ "มี - a" ส่วนประกอบ องค์ประกอบเป็นอีกรูปแบบหนึ่งของการรวมตัวและเราสามารถเรียกสิ่งนี้ว่าเป็นความสัมพันธ์ "ความตาย" มันเป็นประเภทที่แข็งแกร่งของการรวม วัตถุลูกไม่มีวงจรชีวิตและถ้าวัตถุแม่ลบวัตถุลูกทั้งหมดจะถูกลบ ลองมาอีกตัวอย่างของความสัมพันธ์ระหว่างบ้านและห้อง บ้านสามารถมีหลายห้อง แต่ไม่มีชีวิตอิสระของห้องและห้องใด ๆ ไม่สามารถเป็นของบ้านสองหลังที่แตกต่างกัน หากเราลบบ้านห้องจะถูกลบโดยอัตโนมัติ คำถามคือ: ตอนนี้สิ่งเหล่านี้เป็นตัวอย่างของโลกแห่งความจริง ฉันกำลังมองหาคำอธิบายเกี่ยวกับวิธีการใช้เทคนิคเหล่านี้ในรหัสชั้นเรียนจริง ผมหมายถึงสิ่งที่เป็นจุดสำหรับการใช้สามเทคนิคที่แตกต่างกันสำหรับการห่อหุ้ม …

3
Clojure มีการต่อเนื่อง / coroutines / etc หรือไม่?
ฉันเริ่มเขียนโปรแกรมด้วย Python และฉันสับสนกับแนวคิดอย่างเช่น coroutines และ closures ตอนนี้ฉันคิดว่าฉันรู้จักพวกเขาในระดับตื้น ๆ แต่ฉันไม่เคยรู้สึกว่าช่วงเวลา "สว่าง" ดังนั้นฉันเลือกเรียน Clojure ฉันซื้อหนังสือของ Stuart Halloway และมันก็ดี แต่เมื่อฉันดูที่ดัชนีไม่มีคำพูดใด ๆ เช่น coroutine หรือความต่อเนื่อง ฉัน googled พวกเขา แต่ก็ไม่มีอะไรที่นั่น ดังนั้นคำถามของฉันคือ: Clojure มีการต่อเนื่องหรือ coroutines ในการทำงานเช่น pong-ponging โดยไม่ล้นกอง? ตัวอย่าง Python (แม้ว่า Python มาตรฐานไม่รองรับเวอร์ชันเต็มรูปแบบของ coroutine สมมาตรนี้): def ping(): while 1: print "ping" function to switching to pong …

13
ทำไมระบบปฏิบัติการถึงมีข้อมูลระดับต่ำใน C และ C ++ ทำไมไม่ใช่แค่ C ++?
ในหน้า Wikipedia สำหรับ Windowsจะระบุว่า Windows เขียนไว้ใน Assembly สำหรับ bootloader และ task switcher และ C และ C ++ สำหรับเคอร์เนลรูทีน IIRC คุณสามารถเรียกใช้ฟังก์ชัน C ++ ได้จากextern "C"'d block ฉันสามารถใช้ C สำหรับฟังก์ชั่นเคอร์เนลเพื่อให้แอป C บริสุทธิ์สามารถใช้งานได้ (เช่นprintfและอย่างนั้น) แต่ถ้าพวกเขาสามารถห่อในextern "C "บล็อกแล้วทำไมต้องใช้รหัสใน C?

1
ต้นไม้ตัดสินใจกับเครือข่ายประสาท
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันกำลังใช้โครงสร้างการเรียนรู้ของเครื่องเพื่อพยายามทำนายการหลอกลวงในระบบการเงินเช่นธนาคาร ฯลฯ ... ซึ่งหมายความว่ามีข้อมูลที่แตกต่างกันมากมายที่สามารถใช้ในการฝึกอบรมโมเดลได้เช่น หมายเลขบัตรชื่อผู้ถือบัตรจำนวนประเทศ ฯลฯ ... ฉันมีปัญหาในการตัดสินใจว่าโครงสร้างใดดีที่สุดสำหรับปัญหานี้ ฉันมีประสบการณ์กับต้นไม้ตัดสินใจ แต่ในปัจจุบันฉันเริ่มตั้งคำถามว่าเครือข่ายประสาทจะดีขึ้นสำหรับปัญหาแบบนี้หรือไม่ นอกจากนี้หากวิธีอื่นใดจะดีที่สุดโปรดสอนฉัน ข้อดีข้อเสียของแต่ละโครงสร้างและโครงสร้างใดจะดีที่สุดสำหรับปัญหานี้ นอกจากนี้ฉันไม่แน่ใจเกี่ยวกับความจริงข้อนี้ แต่ฉันคิดว่าต้นไม้การตัดสินใจมีข้อได้เปรียบเหนือกว่าเครือข่ายประสาทในแง่ของความเร็วในการประมวลผล สิ่งนี้สำคัญเนื่องจากความเร็วเป็นปัจจัยสำคัญในโครงการนี้เช่นกัน

7
ข้อกำหนดมีความเสถียรและเชื่อถือได้
มีความแตกต่างระหว่างความเสถียรและความน่าเชื่อถือ (อย่างน้อยในบริบทวิศวกรรมซอฟต์แวร์) หรือสามารถใช้แทนกันได้หรือไม่? ถ้าไม่เช่นนั้นจะมีตัวอย่างของระบบที่น่าเชื่อถือ แต่ไม่จำเป็นต้องมีเสถียรภาพและในทางกลับกัน

3
การทดสอบหน่วย C ++: ต้องทดสอบอะไร
TL; DR การเขียนแบบทดสอบที่ดีและมีประโยชน์นั้นยากและมีค่าใช้จ่ายสูงในภาษาซีพลัสพลัส นักพัฒนาที่มีประสบการณ์คุณสามารถแบ่งปันเหตุผลของคุณเกี่ยวกับอะไรและเวลาที่จะทดสอบ? เรื่องยาว ฉันเคยทำการพัฒนาที่ขับเคลื่อนด้วยการทดสอบทั้งทีมจริง ๆ แล้ว แต่มันก็ไม่ได้ผลสำหรับเรา เรามีการทดสอบมากมาย แต่ดูเหมือนว่าพวกเขาจะไม่ครอบคลุมกรณีที่เรามีข้อบกพร่องและการถดถอยจริงซึ่งมักจะเกิดขึ้นเมื่อมีการโต้ตอบหน่วยไม่ใช่จากพฤติกรรมที่แยกได้ นี่เป็นเรื่องยากมากที่จะทดสอบในระดับหน่วยที่เราหยุดทำ TDD (ยกเว้นส่วนประกอบที่ทำให้การพัฒนาเร็วขึ้น) และใช้เวลาเพิ่มการครอบคลุมการทดสอบการรวมแทน ในขณะที่การทดสอบหน่วยขนาดเล็กไม่เคยตรวจจับข้อบกพร่องจริง ๆ และเป็นเพียงค่าบำรุงรักษา แต่การทดสอบการรวมนั้นคุ้มค่ากับความพยายาม ตอนนี้ฉันได้รับโปรเจ็กต์ใหม่และฉันสงสัยว่าจะลองทำอย่างไร มันเป็นแอพพลิเคชั่น C ++ / OpenGL ดั้งเดิมดังนั้นการทดสอบการรวมเข้าด้วยกันจึงไม่ใช่ทางเลือก แต่การทดสอบหน่วยใน C ++ นั้นค่อนข้างยากกว่าใน Java (คุณต้องทำสิ่งต่าง ๆ อย่างชัดเจนvirtual) และโปรแกรมไม่ได้เน้นวัตถุมากดังนั้นฉันจึงไม่สามารถเยาะเย้ย / ทำอะไรบางอย่างได้ ฉันไม่ต้องการแยกออกจากกันและ OO-ize ทุกสิ่งเพียงเพื่อเขียนการทดสอบเพื่อประโยชน์ในการเขียนการทดสอบ ดังนั้นฉันถามคุณ: ฉันควรเขียนทดสอบอะไร เช่น: ฟังก์ชั่น / คลาสที่ฉันคาดว่าจะเปลี่ยนบ่อย? ฟังก์ชั่น / คลาสที่ยากต่อการทดสอบด้วยตนเอง? ฟังก์ชั่น …

4
ฉันจะจัดระเบียบที่เก็บ Git ส่วนตัวได้อย่างไร
ฉันอยู่ในขั้นตอนการตั้งค่าบัญชี GitHub โดยมีแผนที่จะสร้างห้องสมุดคู่หนึ่งที่ฉันพัฒนาขึ้นเพื่อเป็นส่วนหนึ่งของโครงการ iOS ล่าสุดบางโครงการที่สามารถใช้งานได้ฟรีสำหรับผู้พัฒนา iOS คนอื่น ๆ ปัจจุบันฉันไม่มีการสำรองข้อมูลนอกสถานที่สำหรับรหัสส่วนใหญ่ของฉันดังนั้นในตอนแรกฉันคิดว่าฉันจะอัปโหลดโครงการส่วนตัวทั้งหมดของฉันหรืออย่างน้อยโครงการ iOS ทั้งหมดของฉันไปยังที่เก็บส่วนตัวที่โฮสต์โดย GitHub . แต่ฉันมีจำนวนมากของโครงการนั่งรอบหลายแห่งซึ่งเป็นธรรมที่มีมูลค่าต่ำ (เช่นดัดแปลงมาจากหนังสือและเขียนขึ้นสำหรับประสบการณ์การเรียนรู้) GitHub ไม่เพียงเรียกเก็บจากที่เก็บข้อมูลส่วนตัว แต่ดูเหมือนว่าจะไม่มีวิธีการจัดระเบียบที่เก็บตามลำดับชั้น มีบางอย่างที่ฉันขาดหายไปซึ่งจะทำให้ฉันสามารถใช้พื้นที่เก็บข้อมูล git กับลำดับชั้นและตรวจสอบชิ้นส่วนตามที่ฉันต้องการ / ทำงานกับพวกเขาวิธีที่ฉันทำกับ SVN ในปัจจุบัน? GitHub (หรือคู่แข่งเช่น BitBucket) มีคุณสมบัติบางอย่างขององค์กรโครงการที่ฉันขาดหายไปหรือไม่? หากไม่เป็นเช่นนั้น "วิธี Git" ที่เป็นที่ยอมรับโดยทั่วไปในการจัดการกับสถานการณ์นี้ (ยกเลิกโครงการที่ไม่ได้มีไว้สำหรับเผยแพร่ให้เก็บออฟไลน์รวมพวกมันเข้าด้วยกัน ฯลฯ )? เท่าที่ฉันสามารถบอกได้ตัวเลือกของฉันคือ: ใส่ไลบรารี่บน GitHub แล้วดำเนินการโฮสต์ SVN ของฉันต่อไปสำหรับโครงการอื่น ๆ ทั้งหมดใช้โซลูชันที่ไม่ใช่ VCS สำหรับการสำรองข้อมูลนอกไซต์ (blech) ใส่ไลบรารีและซอฟต์แวร์ที่ฉันวางแผนจะวางจำหน่ายบน GitHub (ในฐานะที่เป็นรัฐและเอกชนตามลำดับ) …

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

3
marshaller และ serializer แตกต่างกันอย่างไร
... และ unmarshalling / deserializing หรือไม่ คำอธิบายของ Wikipediaทำให้ฉันไม่มีใครฉลาด! ฉันเป็นโปรแกรมเมอร์ Java ในกรณีที่มีการใช้คำศัพท์ต่างกันในภาษาต่างๆ
20 java  xml 

12
วิธีรับแรงบันดาลใจและเวลาในการเรียนรู้นอกที่ทำงาน? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันทำงานเป็นโปรแกรมเมอร์ 40 ชั่วโมงและเมื่อฉันกลับถึงบ้านสิ่งสุดท้ายที่ฉันอยากทำคือเขียนรหัสเพิ่มอีก อย่างไรก็ตามฉันรู้สึกว่าฉันไม่ได้ดีขึ้นและฉันรักวิศวกรรมซอฟต์แวร์ แล้วคุณจะหาเวลา / แรงจูงใจในการปรับปรุงฝีมือของคุณนอกเหนือจากการทำงานได้อย่างไร
20 motivation 

19
ภาษาการเขียนโปรแกรมที่มีกลไกการขยายไวยากรณ์คล้าย Lisp [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันมีความรู้ จำกัด ใน Lisp (พยายามที่จะเรียนรู้เล็กน้อยในเวลาว่างของฉัน) แต่เท่าที่ฉันเข้าใจมาโคร Lisp อนุญาตให้แนะนำการสร้างภาษาใหม่และไวยากรณ์โดยการอธิบายพวกเขาใน Lisp เอง ซึ่งหมายความว่าสามารถเพิ่มการสร้างใหม่เป็นไลบรารีโดยไม่ต้องเปลี่ยน Lisp คอมไพเลอร์ / ล่าม วิธีนี้แตกต่างจากภาษาโปรแกรมอื่นมาก เช่นถ้าฉันต้องการขยาย Pascal ด้วยลูปชนิดใหม่หรือสำนวนเฉพาะบางอย่างฉันจะต้องขยายไวยากรณ์และความหมายของภาษาแล้วนำคุณสมบัติใหม่นั้นมาใช้ในคอมไพเลอร์ มีภาษาการเขียนโปรแกรมอื่น ๆ นอกตระกูล Lisp (เช่นนอกเหนือจาก Common Lisp, Scheme, Clojure (?), Racket (?), ฯลฯ ) ที่มีความเป็นไปได้ที่คล้ายคลึงกันในการขยายภาษาภายในภาษานั้นหรือไม่ แก้ไข โปรดหลีกเลี่ยงการอภิปรายเพิ่มเติมและเฉพาะเจาะจงในคำตอบของคุณ แทนที่จะเป็นรายการที่มีความยาวของภาษาโปรแกรมที่สามารถขยายออกไปไม่ทางใดก็ทางหนึ่งฉันต้องการที่จะเข้าใจจากมุมมองเชิงความคิดเกี่ยวกับมาโคร Lisp เฉพาะที่เป็นกลไกการขยายและภาษาที่ไม่ใช่ Lisp เสนอแนวคิดบางอย่าง ที่ใกล้กับพวกเขา

8
กลยุทธ์ / อัลกอริทึมเพื่อแบ่งทีมที่ยุติธรรมโดยอ้างอิงจากประวัติ
เราเป็นกลุ่มคนที่เล่นฟลอร์บอลด้วยกันเป็นประจำ ทุกเซสชั่นเริ่มต้นด้วยภารกิจที่น่ากลัวของการแบ่งทีม ... ดังนั้นจะมีอะไรดีไปกว่าแอปพลิเคชันในการเลือกทีมโดยอัตโนมัติ ดังนั้นด้วยประวัติของการรวมทีมและผลลัพธ์และรายชื่อของผู้คนที่ปรากฏตัวในเซสชั่นนี้สิ่งที่จะเป็นกลยุทธ์ที่ดีในการหาทีมที่ดีที่สุด? ตามความเหมาะสมฉันหมายถึงทีมงานเท่าที่จะทำได้ ความคิดใด ๆ แก้ไข: เพื่อให้ชัดเจนข้อมูลที่ฉันต้องใช้ในการเลือกจะเป็นดังนี้: [{ team1: ["playerA", "playerB", "playerC"], team2: ["playerD", "playerE", "playerF"], goals_team1: 10, goals_team2: 8 }, { team1: ["playerD", "playerB", "playerC"], team2: ["playerA", "playerE", "playerG"], goals_team1: 2, goals_team2: 5 }, { team1: ["playerD", "playerB", "playerF"], team2: ["playerA", "playerE", "playerC"], goals_team1: 4, goals_team2: …

6
“ บริษัท ซอฟต์แวร์ที่กำหนดเอง” จัดการกับหนี้ทางเทคนิคได้อย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 7 ปีที่ผ่านมา "บริษัท ซอฟต์แวร์ที่กำหนดเอง" คืออะไร? โดย "บริษัท ซอฟต์แวร์ที่กำหนดเอง" ฉันหมายถึง บริษัท ที่สร้างรายได้เป็นหลักจากการสร้างซอฟต์แวร์ที่กำหนดเองหนึ่งครั้งบิตของซอฟต์แวร์ ตัวอย่างเช่นมีหน่วยงานหรือ บริษัท เครื่องกลางหรือผู้รับเหมา / ที่ปรึกษาเช่นRedify ตรงกันข้ามกับ "บริษัท ซอฟต์แวร์ที่กำหนดเอง" คืออะไร? ตรงข้ามของโมเดลธุรกิจข้างต้นคือ บริษัท ที่มุ่งเน้นผลิตภัณฑ์ระยะยาวไม่ว่าจะเป็นแอพเดสก์ท็อป / มือถือที่ปรับใช้ได้หรือซอฟต์แวร์ SaaS วิธีที่แน่นอนในการสร้างหนี้ทางเทคนิค: ฉันทำงานให้ บริษัท ที่พยายามมุ่งเน้นไปที่ชุดผลิตภัณฑ์ SaaS อย่างไรก็ตามเนื่องจากข้อ จำกัด บางอย่างเราบางครั้งก็จบลงด้วยความมุ่งมั่นของลูกค้าบางรายและเราสิ้นสุดการสร้างบิตของซอฟต์แวร์ที่กำหนดเองที่สามารถใช้สำหรับไคลเอ็นต์นั้นเท่านั้น นี่เป็นวิธีที่แน่นอนในการก่อหนี้ด้านเทคนิค ตอนนี้เรามีซอฟต์แวร์นิดหน่อยที่จะรักษาซึ่งไม่เพิ่มอะไรเข้าไปในผลิตภัณฑ์หลักของเรา หากงานที่กำหนดเองเป็นวิธีที่แน่นอนในการสร้างหนี้ทางเทคนิคเอเจนซี่จะจัดการกับมันอย่างไร นั่นทำให้ฉันคิด บริษัท ที่ไม่มีผลิตภัณฑ์หลักเป็นศูนย์กลางของรูปแบบธุรกิจของพวกเขาพวกเขามักจะทำงานซอฟต์แวร์เอง พวกเขารับมือกับแนวคิดเรื่องหนี้ทางเทคนิคได้อย่างไร …

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