arch:modularization_techniques_in_functional_programming

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
arch:modularization_techniques_in_functional_programming [2021/12/19 16:31] – created amokhammad_1arch: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, functions are high-importance data types and they can be handled like other types of data, where they could be bound to names, used as arguments, other functions could return them, which allows the software to be developed in a composable style, and combine small functions in a modular way.[1] In Functional Programming, functions are high-importance data types and they can be handled like other types of data, where they could be bound to names, used as arguments, other functions could return them, which allows the software to be developed in a composable style, and combine small functions in a modular way.[1]
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**:
 +
        minimum redundant codes are developed and easier than writing a new code from scratch, with small code segments to write        minimum redundant codes are developed and easier than writing a new code from scratch, with small code segments to write
-  * **Manageability**: + 
 +  * **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.        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**:
 +
        different programmers could work on the same application collaboratively, and small teams can focus on single parts of the same code due to the simplicity of the design.        different programmers could work on the same application collaboratively, and small teams can focus on single parts of the same code due to the simplicity of the design.
  
 ====== Conclusion ====== ====== Conclusion ======
 +
 Although functional programming mainly follows the Modularization design,  I believe that by further applying the discussed above elements we could  allow the code to remain flexible when facing ever-changing requirements Although functional programming mainly follows the Modularization design,  I believe that by further applying the discussed above elements we could  allow the code to remain flexible when facing ever-changing requirements
 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 ======
-  - Hudak, Paul(September 1989)."Conception, evolution, and application of functional programming languages"(PDF).ACM Computing Surveys.21(3): 359–411. + 
-  - Hughes, John(1984)."Why Functional Programming Matters".+  - Hudak, Paul(September 1989).Conception, evolution, and application of functional programming languages(PDF).ACM Computing Surveys.21(3): 359–411. 
 +  - 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://www.geeksforgeeks.org/modularity-and-its-properties/ +  - [[https://www.geeksforgeeks.org/modularity-and-its-properties/|https://www.geeksforgeeks.org/modularity-and-its-properties/]] 
-  - https://www.genui.com/resources/5-essential-elements-of-modular-software-design +  - [[https://www.genui.com/resources/5-essential-elements-of-modular-software-design|https://www.genui.com/resources/5-essential-elements-of-modular-software-design]] 
-  - https://www.geeksforgeeks.org/refactoring-introduction-and-its-techniques/?ref=rp +  - [[https://www.geeksforgeeks.org/refactoring-introduction-and-its-techniques/?ref=rp|https://www.geeksforgeeks.org/refactoring-introduction-and-its-techniques/?ref=rp]] 
-  - https://thecustomizewindows.com/2020/12/what-is-modular-programming/ +  - [[https://thecustomizewindows.com/2020/12/what-is-modular-programming/|https://thecustomizewindows.com/2020/12/what-is-modular-programming/]] 
-  - https://www.sciencedirect.com/topics/computer-science/modularization +  - [[https://www.sciencedirect.com/topics/computer-science/modularization|https://www.sciencedirect.com/topics/computer-science/modularization]] 
-  - http://singlepageappbook.com/maintainability1.html +  - [[http://singlepageappbook.com/maintainability1.html|http://singlepageappbook.com/maintainability1.html]] 
-  - https://360techexplorer.com/modular-programming/ +  - [[https://360techexplorer.com/modular-programming/|https://360techexplorer.com/modular-programming/]]
- +
- +
  • arch/modularization_techniques_in_functional_programming.1639931488.txt.gz
  • Last modified: 2026/08/29 07:59
  • (external edit)