You might have heard from your development team that they are working on some modules of your software product. One might wonder – what is that module and why it is important for app developers?
What is a module of software products?
Given an enormous variety of software platforms and solutions – there is hard to give an answer that would cover all possibilities. However, you might think about a module as a building block – part of the software product that is responsible for some functionality, which is separated from other parts.
To give some examples, in our product – Handcrafted Platform, designed for rapid building of mobile apps – we have separated modules responsible for certain user actions, like the process of sing up. That process consists of some steps during which the user provides information about himself – his email address, his desired user name, his first & last name, and – depending on requirements – other information, like date of birth, gender or an address. With some desktop application for processing video, a module could be in the form of a library that is responsible for encoding video to the final format. With some newsletter web app, a module could be responsible for sending emails to subscribed users.
A well-designed module of a software product should follow principles and good practices, established by the software industry. Probably the most important is a Single responsibility principle, or SRP, states that a module should be responsible for one functionality and that functionality should be fully encapsulated by that module. SRP is a part of SOLID rule, promoted by famous American software engineer and instructor Robert C. Martin.
A good module should be also separated from other parts of the app, which should make it interchangeable if needed.
Why introduce modules?
There are many benefits of introducing the modularity of a feature into a software product, versus implementing a monolith approach. We can assume that a modular project would be
- Easier to develop.
Introducing modules makes it possible to split development into smaller teams, and better assign people to certain tasks, allowing them to focus just on a part of the project. That also makes possible for the people to acquire just a part of the domain knowledge, which is strictly associated with that module.
- Easier to test.
With the ability to separate functionalities of your software product, it is also possible to separate test cases description, allowing your quality assurance team to work more efficiently on ensuring bug-free products. In many cases, the fact that every module is separated and interchangeable can help with creating an automatic test-suite – allowing to verify the execution of the code within just a module, without interactions with other application parts.
- Easier to deploy.
With the ability to separate modules from each other, in many cases, it is also possible to deploy them separately, delivering features one by one, even with a dynamic way (for example, with a help of feature switches)
- Easier to maintain.
Last but not least – during the maintenance period, modularity gives all the benefits from earlier points, giving one more extra possibility – allowing to exchange a module with a completely new implementation. While no one wants to hear that some parts of your product are required to be replaced completely, that could happen even with well-designed products during their lifecycle.
Our approach to modules
Modularity is an important feature of the Handcrafted Platform. As noted before, our rapid mobile application development framework is built with modularity in mind. Check out a video animation we have prepared about that feature!