การติดตั้งซอฟต์แวร์
ในบทนี้เราจะศึกษาเกี่ยวกับวิธีการเขียนโปรแกรมเอกสารและความท้าทายในการใช้งานซอฟต์แวร์
การเขียนโปรแกรมที่มีโครงสร้าง
ในกระบวนการเขียนโค้ดบรรทัดของโค้ดจะทวีคูณขึ้นเรื่อย ๆ ดังนั้นขนาดของซอฟต์แวร์จึงเพิ่มขึ้น ค่อยๆเป็นไปไม่ได้ที่จะจำการไหลของโปรแกรม หากใครลืมวิธีการสร้างซอฟต์แวร์และโปรแกรมพื้นฐานไฟล์โพรซีเดอร์มันจะกลายเป็นเรื่องยากมากที่จะแบ่งปันแก้ไขข้อบกพร่องและแก้ไขโปรแกรม วิธีแก้ปัญหานี้คือการเขียนโปรแกรมแบบมีโครงสร้าง มันสนับสนุนให้นักพัฒนาใช้รูทีนย่อยและลูปแทนการใช้การกระโดดแบบธรรมดาในโค้ดซึ่งจะช่วยเพิ่มความชัดเจนในโค้ดและการปรับปรุงประสิทธิภาพการเขียนโปรแกรมแบบมีโครงสร้างยังช่วยให้โปรแกรมเมอร์ลดเวลาในการเขียนโค้ดและจัดระเบียบโค้ดได้อย่างเหมาะสม
การเขียนโปรแกรมแบบมีโครงสร้างระบุว่าจะต้องเขียนโปรแกรมอย่างไร การเขียนโปรแกรมเชิงโครงสร้างใช้แนวคิดหลักสามประการ:
Top-down analysis- ซอฟต์แวร์ถูกสร้างขึ้นเพื่อทำงานอย่างมีเหตุผลเสมอ งานที่มีเหตุผลนี้เรียกว่าปัญหาในการพูดจาของซอฟต์แวร์ ดังนั้นจึงเป็นเรื่องสำคัญมากที่เราจะต้องเข้าใจวิธีแก้ปัญหา ภายใต้การวิเคราะห์จากบนลงล่างปัญหาจะแบ่งออกเป็นชิ้นเล็ก ๆ ซึ่งแต่ละปัญหามีความสำคัญบางอย่าง แต่ละปัญหาได้รับการแก้ไขทีละขั้นตอนและมีการระบุขั้นตอนอย่างชัดเจนเกี่ยวกับวิธีการแก้ปัญหา
Modular Programming- ขณะเขียนโปรแกรมโค้ดจะแบ่งออกเป็นกลุ่มคำสั่งย่อย ๆ กลุ่มเหล่านี้เรียกว่าโมดูลโปรแกรมย่อยหรือรูทีนย่อย การเขียนโปรแกรมแบบโมดูลโดยอาศัยความเข้าใจในการวิเคราะห์จากบนลงล่าง มันไม่สนับสนุนการกระโดดโดยใช้คำสั่ง 'goto' ในโปรแกรมซึ่งมักทำให้โฟลว์ของโปรแกรมไม่สามารถตรวจสอบย้อนกลับได้ ห้ามกระโดดและสนับสนุนให้ใช้รูปแบบโมดูลาร์ในการเขียนโปรแกรมแบบมีโครงสร้าง
Structured Coding - ในการอ้างอิงกับการวิเคราะห์จากบนลงล่างการเข้ารหัสแบบมีโครงสร้างจะแบ่งโมดูลออกเป็นหน่วยย่อยของโค้ดที่เล็กลงตามลำดับการดำเนินการ การเขียนโปรแกรมแบบมีโครงสร้างใช้โครงสร้างการควบคุมซึ่งควบคุมการไหลของโปรแกรมในขณะที่การเข้ารหัสแบบมีโครงสร้างใช้โครงสร้างควบคุมเพื่อจัดระเบียบคำสั่งในรูปแบบที่กำหนดได้
การเขียนโปรแกรมฟังก์ชั่น
การเขียนโปรแกรมเชิงฟังก์ชันเป็นรูปแบบของภาษาโปรแกรมซึ่งใช้แนวคิดของฟังก์ชันทางคณิตศาสตร์ ฟังก์ชันในคณิตศาสตร์ควรให้ผลลัพธ์เดียวกันเสมอเมื่อได้รับอาร์กิวเมนต์เดียวกัน ในภาษาโพรซีเดอร์โฟลว์ของโปรแกรมจะทำงานผ่านโพรซีเดอร์กล่าวคือการควบคุมโปรแกรมจะถูกโอนไปยังโพรซีเดอร์ที่เรียกว่า ในขณะที่โฟลว์การควบคุมกำลังถ่ายโอนจากโพรซีเดอร์หนึ่งไปยังอีกโพรซีเดอร์หนึ่งโปรแกรมจะเปลี่ยนสถานะ
ในการเขียนโปรแกรมขั้นตอนเป็นไปได้ที่โพรซีเดอร์จะให้ผลลัพธ์ที่แตกต่างกันเมื่อถูกเรียกด้วยอาร์กิวเมนต์เดียวกันเนื่องจากโปรแกรมเองอาจอยู่ในสถานะที่แตกต่างกันในขณะที่เรียกมัน นี่เป็นคุณสมบัติเช่นเดียวกับข้อเสียเปรียบของการเขียนโปรแกรมขั้นตอนซึ่งลำดับหรือเวลาของการดำเนินการตามขั้นตอนมีความสำคัญ
การเขียนโปรแกรมเชิงฟังก์ชันให้วิธีการคำนวณเป็นฟังก์ชันทางคณิตศาสตร์ซึ่งให้ผลลัพธ์โดยไม่คำนึงถึงสถานะของโปรแกรม สิ่งนี้ทำให้สามารถคาดเดาพฤติกรรมของโปรแกรมได้
การเขียนโปรแกรมเชิงฟังก์ชันใช้แนวคิดต่อไปนี้:
First class and High-order functions - ฟังก์ชันเหล่านี้มีความสามารถในการยอมรับฟังก์ชันอื่นเป็นอาร์กิวเมนต์หรือส่งคืนฟังก์ชันอื่นเป็นผลลัพธ์
Pure functions - ฟังก์ชันเหล่านี้ไม่รวมถึงการอัปเดตแบบทำลายกล่าวคือไม่มีผลต่อ I / O หรือหน่วยความจำใด ๆ และหากไม่ได้ใช้งานฟังก์ชันเหล่านี้สามารถลบออกได้อย่างง่ายดายโดยไม่ขัดขวางส่วนที่เหลือของโปรแกรม
Recursion- การเรียกซ้ำเป็นเทคนิคการเขียนโปรแกรมที่ฟังก์ชันเรียกตัวเองและทำซ้ำรหัสโปรแกรมในนั้นเว้นแต่เงื่อนไขที่กำหนดไว้ล่วงหน้าบางอย่างตรงกัน การเรียกซ้ำเป็นวิธีการสร้างลูปในการเขียนโปรแกรมเชิงฟังก์ชัน
Strict evaluation- เป็นวิธีการประเมินนิพจน์ที่ส่งผ่านไปยังฟังก์ชันเป็นอาร์กิวเมนต์ การเขียนโปรแกรมเชิงฟังก์ชันมีวิธีการประเมินผลสองประเภทคือเข้มงวด (กระตือรือร้น) หรือไม่เข้มงวด (ขี้เกียจ) การประเมินอย่างเข้มงวดจะประเมินนิพจน์ก่อนเรียกใช้ฟังก์ชันเสมอ การประเมินที่ไม่เข้มงวดจะไม่ประเมินการแสดงออกเว้นแต่ว่าจำเป็น
λ-calculus- ภาษาโปรแกรมที่ใช้งานได้ส่วนใหญ่ใช้λ-calculus เป็นระบบประเภท λนิพจน์จะดำเนินการโดยการประเมินเมื่อเกิดขึ้น
Common Lisp, Scala, Haskell, Erlang และ F # เป็นตัวอย่างของภาษาโปรแกรมที่ใช้งานได้
รูปแบบการเขียนโปรแกรม
รูปแบบการเขียนโปรแกรมคือชุดของกฎการเข้ารหัสตามด้วยโปรแกรมเมอร์ทุกคนในการเขียนโค้ด เมื่อโปรแกรมเมอร์หลายคนทำงานในโครงการซอฟต์แวร์เดียวกันพวกเขามักจะต้องทำงานกับโค้ดโปรแกรมที่เขียนโดยนักพัฒนารายอื่น สิ่งนี้กลายเป็นเรื่องน่าเบื่อหรือบางครั้งก็เป็นไปไม่ได้หากนักพัฒนาทุกคนไม่ปฏิบัติตามรูปแบบการเขียนโปรแกรมมาตรฐานบางอย่างเพื่อเขียนโค้ดโปรแกรม
รูปแบบการเขียนโปรแกรมที่เหมาะสมรวมถึงการใช้ฟังก์ชันและชื่อตัวแปรที่เกี่ยวข้องกับงานที่ต้องการโดยใช้การเยื้องที่วางไว้อย่างดีรหัสแสดงความคิดเห็นเพื่อความสะดวกของผู้อ่านและการนำเสนอโค้ดโดยรวม สิ่งนี้ทำให้โค้ดโปรแกรมสามารถอ่านและเข้าใจได้โดยทั้งหมดซึ่งจะทำให้การดีบักและการแก้ไขข้อผิดพลาดง่ายขึ้น นอกจากนี้รูปแบบการเข้ารหัสที่เหมาะสมยังช่วยให้เอกสารและการอัปเดตง่ายขึ้น
แนวทางการเข้ารหัส
รูปแบบการเข้ารหัสจะแตกต่างกันไปตามองค์กรระบบปฏิบัติการและภาษาของการเข้ารหัส
องค์ประกอบการเข้ารหัสต่อไปนี้อาจถูกกำหนดภายใต้แนวทางการเข้ารหัสขององค์กร:
Naming conventions - ส่วนนี้กำหนดวิธีการตั้งชื่อฟังก์ชันตัวแปรค่าคงที่และตัวแปรส่วนกลาง
Indenting - นี่คือช่องว่างที่เหลือที่จุดเริ่มต้นของบรรทัดโดยปกติจะเว้นวรรค 2-8 หรือแท็บเดียว
Whitespace - โดยทั่วไปจะถูกละไว้ที่ส่วนท้ายของบรรทัด
Operators- กำหนดกฎของการเขียนตัวดำเนินการทางคณิตศาสตร์การกำหนดและตรรกะ ตัวอย่างเช่นตัวดำเนินการกำหนด '=' ควรมีช่องว่างก่อนและหลังเช่นเดียวกับใน“ x = 2”
Control Structures - กฎของการเขียน if-then-else, case-switch, while-until และสำหรับข้อความควบคุมโฟลว์เพียงอย่างเดียวและแบบซ้อนกัน
Line length and wrapping- กำหนดจำนวนอักขระที่ควรมีในหนึ่งบรรทัดโดยส่วนใหญ่จะมีความยาว 80 อักขระ การห่อเป็นตัวกำหนดว่าควรพันเส้นอย่างไรหากยาวเกินไป
Functions - สิ่งนี้กำหนดวิธีการประกาศและเรียกใช้ฟังก์ชันโดยมีและไม่มีพารามิเตอร์
Variables - สิ่งนี้กล่าวถึงวิธีการประกาศและกำหนดตัวแปรของข้อมูลประเภทต่างๆ
Comments- นี่เป็นหนึ่งในองค์ประกอบการเข้ารหัสที่สำคัญเนื่องจากความคิดเห็นที่รวมอยู่ในโค้ดจะอธิบายถึงสิ่งที่โค้ดทำจริงและคำอธิบายอื่น ๆ ที่เกี่ยวข้องทั้งหมด ส่วนนี้ยังช่วยสร้างเอกสารวิธีใช้สำหรับนักพัฒนาคนอื่น ๆ
เอกสารซอฟต์แวร์
เอกสารซอฟต์แวร์เป็นส่วนสำคัญของกระบวนการซอฟต์แวร์ เอกสารที่เป็นลายลักษณ์อักษรเป็นเครื่องมือที่ยอดเยี่ยมและวิธีการจัดเก็บข้อมูลที่จำเป็นในการทราบเกี่ยวกับกระบวนการซอฟต์แวร์ เอกสารซอฟต์แวร์ยังให้ข้อมูลเกี่ยวกับวิธีใช้ผลิตภัณฑ์
เอกสารที่ได้รับการดูแลอย่างดีควรเกี่ยวข้องกับเอกสารต่อไปนี้:
Requirement documentation - เอกสารนี้ใช้เป็นเครื่องมือหลักสำหรับนักออกแบบซอฟต์แวร์นักพัฒนาและทีมทดสอบเพื่อดำเนินงานตามลำดับ เอกสารนี้ประกอบด้วยคำอธิบายเกี่ยวกับการทำงานไม่ใช้งานและพฤติกรรมทั้งหมดของซอฟต์แวร์ที่ต้องการ
แหล่งที่มาของเอกสารนี้สามารถจัดเก็บข้อมูลเกี่ยวกับซอฟต์แวร์ก่อนหน้านี้ซอฟต์แวร์ที่ใช้งานอยู่แล้วในตอนท้ายของลูกค้าการสัมภาษณ์ลูกค้าแบบสอบถามและการวิจัย โดยทั่วไปจะจัดเก็บในรูปแบบของสเปรดชีตหรือเอกสารการประมวลผลคำกับทีมจัดการซอฟต์แวร์ระดับไฮเอนด์
เอกสารนี้ใช้เป็นรากฐานสำหรับซอฟต์แวร์ที่จะพัฒนาและใช้เป็นหลักในขั้นตอนการตรวจสอบและการตรวจสอบความถูกต้อง กรณีทดสอบส่วนใหญ่สร้างขึ้นโดยตรงจากเอกสารข้อกำหนด
Software Design documentation - เอกสารเหล่านี้มีข้อมูลที่จำเป็นทั้งหมดซึ่งจำเป็นในการสร้างซอฟต์แวร์ ประกอบด้วย:(a) สถาปัตยกรรมซอฟต์แวร์ระดับสูง (b) รายละเอียดการออกแบบซอฟต์แวร์ (c) แผนภาพกระแสข้อมูล (d) การออกแบบฐานข้อมูล
เอกสารเหล่านี้ทำงานเป็นที่เก็บสำหรับนักพัฒนาเพื่อใช้งานซอฟต์แวร์ แม้ว่าเอกสารเหล่านี้จะไม่ได้ให้รายละเอียดเกี่ยวกับวิธีการเขียนโค้ดโปรแกรม แต่ก็ให้ข้อมูลที่จำเป็นทั้งหมดที่จำเป็นสำหรับการเข้ารหัสและการนำไปใช้งาน
Technical documentation- เอกสารเหล่านี้ได้รับการดูแลโดยนักพัฒนาและผู้เขียนโค้ดจริง เอกสารเหล่านี้โดยรวมแสดงถึงข้อมูลเกี่ยวกับรหัส ในขณะที่เขียนโค้ดโปรแกรมเมอร์ยังกล่าวถึงวัตถุประสงค์ของโค้ดว่าใครเป็นคนเขียนโค้ดจะต้องใช้ที่ไหนทำอะไรและทำอย่างไรทรัพยากรอื่น ๆ ที่โค้ดใช้ ฯลฯ
เอกสารทางเทคนิคช่วยเพิ่มความเข้าใจระหว่างโปรแกรมเมอร์ต่างๆที่ทำงานกับรหัสเดียวกัน ช่วยเพิ่มความสามารถในการใช้ซ้ำของรหัส ทำให้การดีบักเป็นเรื่องง่ายและตรวจสอบย้อนกลับได้
มีเครื่องมืออัตโนมัติมากมายและบางส่วนมาพร้อมกับภาษาโปรแกรมเอง ตัวอย่างเช่น java มาพร้อมกับเครื่องมือ JavaDoc เพื่อสร้างเอกสารทางเทคนิคของโค้ด
User documentation- เอกสารนี้แตกต่างจากที่อธิบายข้างต้นทั้งหมด เอกสารก่อนหน้านี้ทั้งหมดได้รับการดูแลเพื่อให้ข้อมูลเกี่ยวกับซอฟต์แวร์และขั้นตอนการพัฒนา แต่เอกสารสำหรับผู้ใช้จะอธิบายว่าผลิตภัณฑ์ซอฟต์แวร์ควรทำงานอย่างไรและควรใช้อย่างไรเพื่อให้ได้ผลลัพธ์ที่ต้องการ
เอกสารเหล่านี้อาจรวมถึงขั้นตอนการติดตั้งซอฟต์แวร์คำแนะนำวิธีใช้คู่มือผู้ใช้วิธีการถอนการติดตั้งและการอ้างอิงพิเศษเพื่อรับข้อมูลเพิ่มเติมเช่นการอัปเดตใบอนุญาตเป็นต้น
ความท้าทายในการติดตั้งซอฟต์แวร์
มีความท้าทายบางอย่างที่ทีมพัฒนาต้องเผชิญในขณะที่ใช้ซอฟต์แวร์ บางส่วนมีการกล่าวถึงด้านล่าง:
Code-reuse- อินเทอร์เฟซการเขียนโปรแกรมของภาษาในปัจจุบันมีความซับซ้อนมากและมีฟังก์ชั่นห้องสมุดขนาดใหญ่ อย่างไรก็ตามเพื่อลดต้นทุนของผลิตภัณฑ์ขั้นสุดท้ายผู้บริหารองค์กรต้องการที่จะใช้โค้ดซ้ำซึ่งสร้างขึ้นก่อนหน้านี้สำหรับซอฟต์แวร์อื่น ๆ มีปัญหาใหญ่ที่โปรแกรมเมอร์ต้องเผชิญสำหรับการตรวจสอบความเข้ากันได้และการตัดสินใจว่าจะใช้โค้ดซ้ำมากน้อยเพียงใด
Version Management- ทุกครั้งที่ออกซอฟต์แวร์ใหม่ให้กับลูกค้านักพัฒนาจะต้องดูแลรักษาเวอร์ชันและเอกสารที่เกี่ยวข้องกับการกำหนดค่า เอกสารนี้ต้องมีความแม่นยำสูงและพร้อมใช้งานตรงเวลา
Target-Host- โปรแกรมซอฟต์แวร์ที่กำลังพัฒนาในองค์กรจำเป็นต้องได้รับการออกแบบสำหรับเครื่องโฮสต์ที่ลูกค้าสิ้นสุด แต่ในบางครั้งก็ไม่สามารถออกแบบซอฟต์แวร์ที่ทำงานบนเครื่องเป้าหมายได้