Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | |||
| arch:modularization_techniques_in_functional_programming [2026/08/29 07:53] – Bulk sync migration user | 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 ====== | ||
| + | By Ali Mohammad (amokhammad_1@edu.hse.ru) | ||
| + | |||
| + | ====== Introduction ====== | ||
| + | |||
| + | Functional Programming is a programming approach where functions are defined and composed to construct programs | ||
| + | In Functional Programming, | ||
| + | Purely Functional Programming is a type of functional programming where functions are defined as deterministic mathematical functions, it returns the same results at any given arguments, without being affected by side effects providing referential transparency. | ||
| + | Functional Programming is designed using simple Modularization principles, where each set of executed commands are grouped together in a function body to perform a specific task. But that doesn’t mean it is all Modularized.[2] | ||
| + | |||
| + | ====== 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 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. | ||
| + | which implies the system ought to be comprised of various components that are joined together and work together productively and these components implement distinct functions. | ||
| + | Modular programming accentuation breaks huge projects into little issues to expand the practicality, | ||
| + | |||
| + | ====== Modular Functional Program ====== | ||
| + | |||
| + | To define a Modular Functional Program, several properties must be implemented to perform design methods evaluation while considering their abilities. | ||
| + | |||
| + | **Modular Decomposability**: | ||
| + | |||
| + | **Modular Composability**: | ||
| + | |||
| + | **Modular Understandability**: | ||
| + | |||
| + | **Modular Continuity**: | ||
| + | |||
| + | **Modular Protection**: | ||
| + | |||
| + | ====== 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. | ||
| + | To achieve this goal, these essential elements must exist[5]: | ||
| + | |||
| + | **Purpose**: | ||
| + | |||
| + | **Interface**: | ||
| + | |||
| + | **Encapsulation**: | ||
| + | |||
| + | **Implementation**: | ||
| + | |||
| + | **Modules Connections**: | ||
| + | |||
| + | ====== Advantages of Modularization ====== | ||
| + | |||
| + | * **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. | ||
| + | |||
| + | * **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 | ||
| + | |||
| + | * **Code Reuse**: | ||
| + | |||
| + | | ||
| + | |||
| + | * **Manageability**: | ||
| + | |||
| + | 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**: | ||
| + | |||
| + | | ||
| + | |||
| + | ====== Conclusion ====== | ||
| + | |||
| + | 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 | ||
| + | in the end, I believe that modularization is essential while working in a software engineering team, maximizing developer productivity. | ||
| + | |||
| + | ====== References ====== | ||
| + | |||
| + | - Hudak, Paul(September 1989).“Conception, | ||
| + | - Hughes, John(1984).“Why Functional Programming Matters”. | ||
| + | - Isazadeh, Ayaz; Izadkhah, Habib; Elgedawy, Islam (2017). Source Code Modularization | ||
| + | - [[https:// | ||
| + | - [[https:// | ||
| + | - [[https:// | ||
| + | - [[https:// | ||
| + | - [[https:// | ||
| + | - [[http:// | ||
| + | - [[https:// | ||