Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| arch:modularization_techniques_in_functional_programming [2021/12/19 16:31] – created amokhammad_1 | arch:modularization_techniques_in_functional_programming [2026/08/29 07:59] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Modularization Techniques in Functional Programming ====== | ====== Modularization Techniques in Functional Programming ====== | ||
| + | |||
| By Ali Mohammad (amokhammad_1@edu.hse.ru) | By Ali Mohammad (amokhammad_1@edu.hse.ru) | ||
| ====== Introduction ====== | ====== Introduction ====== | ||
| + | |||
| Functional Programming is a programming approach where functions are defined and composed to construct programs | Functional Programming is a programming approach where functions are defined and composed to construct programs | ||
| In Functional Programming, | In Functional Programming, | ||
| Line 9: | Line 11: | ||
| ====== What is Modularization? | ====== What is Modularization? | ||
| + | |||
| The basic principle of Modularization is that Software should be built using modules (components) that are loosely coupled and cohesive.[4] | The basic principle of Modularization is that Software should be built using modules (components) that are loosely coupled and cohesive.[4] | ||
| The point of the software modularization process is to divide a software system into subsystems to give a general view of the engineering of the whole system framework, where a subsystem is comprised of a group of software artifacts that work together with one another to execute a high-level attribute or offer high-level service for other subsystems. | The point of the software modularization process is to divide a software system into subsystems to give a general view of the engineering of the whole system framework, where a subsystem is comprised of a group of software artifacts that work together with one another to execute a high-level attribute or offer high-level service for other subsystems. | ||
| Line 15: | Line 18: | ||
| ====== Modular Functional Program ====== | ====== Modular Functional Program ====== | ||
| + | |||
| To define a Modular Functional Program, several properties must be implemented to perform design methods evaluation while considering their abilities. | To define a Modular Functional Program, several properties must be implemented to perform design methods evaluation while considering their abilities. | ||
| Line 28: | Line 32: | ||
| ====== Essential Elements of Modularization ====== | ====== Essential Elements of Modularization ====== | ||
| + | |||
| Modularization aims to handle complexity. This is ensured by minimizing the complexity of each module. This means that modules should be designed, developed, tested, deployed, modified, and maintained as easily as possible. | Modularization aims to handle complexity. This is ensured by minimizing the complexity of each module. This means that modules should be designed, developed, tested, deployed, modified, and maintained as easily as possible. | ||
| To achieve this goal, these essential elements must exist[5]: | To achieve this goal, these essential elements must exist[5]: | ||
| Line 43: | Line 48: | ||
| ====== Advantages of Modularization ====== | ====== Advantages of Modularization ====== | ||
| - | * **Divided Development**: | + | * **Divided Development**: |
| Modularization permits the execution of various tasks by partitioning the program into more modest portions, which empowers numerous developers to work simultaneously and lessen the development time frame. | Modularization permits the execution of various tasks by partitioning the program into more modest portions, which empowers numerous developers to work simultaneously and lessen the development time frame. | ||
| * **Readable Programs and Easy to Detect Errors**: | * **Readable Programs and Easy to Detect Errors**: | ||
| + | |||
| A program with multiple functions is easy to read and understand, which minimize the risks of having errors and makes it easy to spot them, where the errors can be narrowed to a sub-function | A program with multiple functions is easy to read and understand, which minimize the risks of having errors and makes it easy to spot them, where the errors can be narrowed to a sub-function | ||
| + | |||
| * **Code Reuse**: | * **Code Reuse**: | ||
| + | |||
| | | ||
| - | | + | |
| + | | ||
| more improve the manageability of the small code segments. Single modules are easy to design, implement and test. And the whole software is developed using these smaller modules. | more improve the manageability of the small code segments. Single modules are easy to design, implement and test. And the whole software is developed using these smaller modules. | ||
| + | |||
| * **Collaboration**: | * **Collaboration**: | ||
| + | |||
| | | ||
| ====== Conclusion ====== | ====== Conclusion ====== | ||
| + | |||
| Although functional programming mainly follows the Modularization design, | Although functional programming mainly follows the Modularization design, | ||
| Modularization follows the “Divide and Conquer” rules as a problem-solving strategy and Designers tend to use Modularization techniques to design and implement individual modules for easy execution and testing separately and independently due to the advantages of these techniques | Modularization follows the “Divide and Conquer” rules as a problem-solving strategy and Designers tend to use Modularization techniques to design and implement individual modules for easy execution and testing separately and independently due to the advantages of these techniques | ||
| Line 61: | Line 75: | ||
| ====== References ====== | ====== References ====== | ||
| - | | + | |
| - | - Hughes, John(1984)."Why Functional Programming Matters". | + | |
| + | - Hughes, John(1984).“Why Functional Programming Matters”. | ||
| - Isazadeh, Ayaz; Izadkhah, Habib; Elgedawy, Islam (2017). Source Code Modularization | - Isazadeh, Ayaz; Izadkhah, Habib; Elgedawy, Islam (2017). Source Code Modularization | ||
| - | - https:// | + | - [[https:// |
| - | - https:// | + | - [[https:// |
| - | - https:// | + | - [[https:// |
| - | - https:// | + | - [[https:// |
| - | - https:// | + | - [[https:// |
| - | - http:// | + | - [[http:// |
| - | - https:// | + | - [[https:// |
| - | + | ||
| - | + | ||