อัลกอริทึมที่ซับซ้อนถูกแบ่งออกเป็นส่วนเล็ก ๆ ที่เรียกว่าโมดูลและกระบวนการแยกเป็นที่รู้จักกันในชื่อการทำให้เป็น โมดูล การทำให้เป็นโมดูลช่วยลดความยุ่งยากในการออกแบบอัลกอริทึมและทำให้กระบวนการง่ายขึ้นในการออกแบบและใช้งาน การเขียนโปรแกรมแบบแยกส่วนเป็นเทคนิคของการออกแบบและการเขียนโปรแกรมในรูปแบบของฟังก์ชั่นที่แต่ละฟังก์ชั่นจะแตกต่างจากกันและทำงานอย่างอิสระ เนื้อหาในฟังก์ชั่นมีความสอดคล้องกันและมีการเชื่อมต่อระหว่างโมดูลน้อย
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | วิธีการจากบนลงล่าง | วิธีการจากล่างขึ้นบน |
---|---|---|
ขั้นพื้นฐาน | แบ่งปัญหาใหญ่เป็นปัญหาย่อย | แก้ไขปัญหาพื้นฐานระดับต่ำและรวมเข้ากับปัญหาที่ใหญ่กว่า |
กระบวนการ | โหมดย่อยจะถูกวิเคราะห์อย่างเดียวดาย | ตรวจสอบข้อมูลที่จะถูกห่อหุ้มและแสดงถึงแนวคิดของการซ่อนข้อมูล |
การสื่อสาร | ไม่จำเป็นต้องใช้วิธีการจากบนลงล่าง | ต้องการจำนวนการสื่อสารที่เฉพาะเจาะจง |
ความฟุ่มเฟือย | มีข้อมูลซ้ำซ้อน | สามารถขจัดความซ้ำซ้อนได้ |
ภาษาโปรแกรม | ภาษาโปรแกรมเชิงโครงสร้าง / ขั้นตอน (เช่น C) เป็นไปตามวิธีการจากบนลงล่าง | ภาษาการเขียนโปรแกรมเชิงวัตถุ (เช่น C ++, Java, ฯลฯ ) ทำตามวิธีการจากล่างขึ้นบน |
ส่วนใหญ่ใช้ใน | เอกสารประกอบโมดูลการสร้างกรณีทดสอบการใช้รหัสและการดีบัก | การทดสอบ |
คำจำกัดความของวิธีการจากบนลงล่าง
วิธีการจาก บนลงล่าง โดยทั่วไปจะแบ่งปัญหาที่ซับซ้อนหรืออัลกอริทึมออกเป็นหลายส่วนที่เล็กกว่า (โมดูล) โมดูลเหล่านี้จะถูกย่อยสลายต่อไปจนกว่าโมดูลผลลัพธ์จะเป็นโปรแกรมพื้นฐานที่ต้องเข้าใจและไม่สามารถย่อยสลายได้อีก หลังจากบรรลุความเป็นโมดูลในระดับหนึ่งแล้วการสลายตัวของโมดูลจะหยุดลง วิธีการจากบนลงล่างเป็นกระบวนการแบบขั้นตอนในการแบ่งโมดูลโปรแกรมขนาดใหญ่ออกเป็นโมดูลที่ง่ายขึ้นและเล็กลงเพื่อจัดระเบียบและโค้ดโปรแกรมอย่างมีประสิทธิภาพ การไหลของการควบคุมในวิธีนี้มักจะเป็นไปในทิศทางที่ลดลง วิธีการจากบนลงล่างถูกนำไปใช้ในภาษาการเขียนโปรแกรม“ C” โดยใช้ฟังก์ชั่น
ดังนั้นวิธีการจากบนลงล่างเริ่มต้นด้วยการออกแบบที่เป็นนามธรรมและจากนั้นการออกแบบนี้ได้รับการกลั่นเพื่อสร้างระดับที่เป็นรูปธรรมมากขึ้นจนกว่าจะไม่มีความต้องการของการปรับแต่งเพิ่มเติม
คำจำกัดความของวิธีการจากล่างขึ้นบน
วิธีการจาก ล่างขึ้นบน ทำงานในลักษณะตรงกันข้ามกับวิธีจากบนลงล่าง เริ่มแรกมันรวมถึงการออกแบบชิ้นส่วนพื้นฐานที่สุดซึ่งรวมกันแล้วเพื่อให้โมดูลระดับที่สูงขึ้น การรวมกันของ submodules และโมดูลในโมดูลระดับที่สูงขึ้นจะดำเนินการซ้ำ ๆ จนกว่าจะได้รับอัลกอริทึมสมบูรณ์ที่จำเป็น
การทำงานแบบ Bottom-up กับชั้นของนามธรรม แอปพลิเคชันหลักของวิธีการจากล่างขึ้นบนคือการทดสอบเนื่องจากแต่ละโมดูลพื้นฐานได้รับการทดสอบก่อนที่จะรวมเข้ากับโมดูลที่ใหญ่กว่า การทดสอบสามารถทำได้โดยใช้ฟังก์ชั่นระดับต่ำบางอย่าง
ความแตกต่างที่สำคัญระหว่างวิธีการจากบนลงล่างและจากล่างขึ้นบน
- วิธีการจากบนลงล่างแยกงานขนาดใหญ่ออกเป็นงานย่อยที่เล็กลงในขณะที่วิธีการจากล่างขึ้นบนก่อนเลือกที่จะแก้ปัญหาส่วนพื้นฐานที่แตกต่างกันของงานโดยตรงจากนั้นรวมส่วนเหล่านั้นเป็นโปรแกรมทั้งหมด
- แต่ละ submodule ถูกประมวลผลแยกกันโดยใช้วิธีการจากบนลงล่าง เมื่อเทียบกับวิธีการจากล่างขึ้นบนจะใช้แนวคิดของการซ่อนข้อมูลโดยการตรวจสอบข้อมูลที่จะถูกห่อหุ้ม
- โมดูลที่แตกต่างกันในวิธีการจากบนลงล่างไม่จำเป็นต้องมีการสื่อสารมากนัก ในทางตรงกันข้ามวิธีการจากล่างขึ้นบนต้องการการโต้ตอบระหว่างโมดูลพื้นฐานแยกเพื่อรวมเข้าด้วยกันในภายหลัง
- วิธีการจากบนลงล่างสามารถสร้างความซ้ำซ้อนในขณะที่วิธีการจากบนลงล่างไม่รวมข้อมูลที่ซ้ำซ้อน
- ภาษาโปรแกรมขั้นตอนเช่น Fortran, COBOL และ C เป็นไปตามวิธีการจากบนลงล่าง ในทางตรงกันข้ามภาษาการเขียนโปรแกรมเชิงวัตถุเช่น C ++, Java, C #, Perl, Python จะยึดแนวทางจากล่างขึ้นบน
- การทดสอบจากล่างขึ้นบนใช้ก่อนหน้านี้ในการทดสอบ ในทางกลับกันวิธีการจากบนลงล่างจะถูกใช้ในเอกสารประกอบโมดูลการสร้างกรณีทดสอบการดีบักและอื่น ๆ
ข้อสรุป
วิธีการจากบนลงล่างและจากล่างขึ้นบนเป็นวิธีการออกแบบอัลกอริธึมที่การเลื่อนจากบนลงล่างเป็นวิธีการทั่วไปที่สลายระบบจากสเปคระดับสูงไปจนถึงสเปคระดับต่ำ ในขณะที่วิธีการจากล่างขึ้นบนมีประสิทธิภาพมากขึ้นและทำงานในลักษณะตรงกันข้ามซึ่งส่วนประกอบดั้งเดิมได้รับการออกแบบในตอนแรกแล้วดำเนินการต่อไปในระดับที่สูงขึ้น
วิธีการจากบนลงล่างเน้นที่การแยกส่วนของ submodules (หมายถึงการมีเพศสัมพันธ์ต่ำระหว่างโมดูล) ในขณะที่ละเว้นการระบุการสื่อสารและแนวคิดการใช้ซ้ำ ขณะที่อยู่ในแนวทางจากล่างขึ้นบนการซ่อนข้อมูลและการนำกลับมาใช้ใหม่เป็นปัจจัยสำคัญ