12 Common Modules in Software Projects

Some modules and concepts are needed in almost every software. This article lists the most common ones.

1. Logger

A logging module is essential for system maintenance. Solving the issues and bugs without proper logging is a nightmare for every developer. The activities should be logged on multiple levels – debugging details, system event, warning, and error. If the log is preserved in a database, it is a good idea to write copies of logs to text files too.

Check out our Logging Module Example Project.

Software Components

2. User Management

A lot of systems are multi-user. There has to be solved logging the users in the system, their credentials, and their rights. A user hierarchy is needed very often. At least two-levels hierarchy – admin and common user.

Check out our Entity-Relationship Model for Users.

3. Command Stack with Undo/Redo Support

Editor applications need to handle commands which the user applies to the edited stuff (text, image, music). The executed commands may be stored in a stack to provide undo and redo functionality. 

An example of the command stack model is here: Command Stack Diagrams.

4. Change History

If you handle critical data, you should record the history of changes in persistent storage. Identify the critical entities and save every edit to the changelog. Every record in the log should have defined its creation date. The important changes may be marked with a note. In multiuser interfaces, it is useful to associate a user with the respective change.

5. Setting Manager

Every user has their specific needs that’s why usually one configuration of an application is not good for everyone. Even a single user may require different behavior from the application in different situations. This is the reason that settings are almost always an essential part of an application. A robust Setting Manager may help you to handle the settings effectively.

The model of a setting manager is available here.

6. Entity Register

The software systems exist in the real world and that’s why they include relationships to it. One of the most common relationships is the one with customers – people and companies. The entity register should provide a data model for them and the operations to handle them (add, edit, delete them, define the relationships between them).

7. Document Management System

Businesses work with various kinds of documents – texts, pictures, diagrams, spreadsheets, presentations, etc. The software systems often need a custom document management system (DMS) which adds another layer of information to the standard file system – documentation tagging, descriptions, complex rights, versioning or restricted availability by the user (human or system).

Check out our DMS Example Project.


8. Content Management System

Content Management System (CMS) supports work with articles and their categorization, the publication process and the rights to the content. It is useful for the software help, documentation or website.

9. Scheduler

Some tasks are unique, other ones are repetitive – this must be done with a defined regularity (e.g. by defined interval). The scheduler module should secure the correct task execution by the defined plan. The execution plan should be stored independently from the task programs. The scheduler may take advantage by combining it with logger and email notifier.

10. Resource Manager

The resource manager organizes the images, texts, media and other files used within an application. It provides easy access to a shared repository of resources that may be embedded in a file or stored in a dedicated repository.

11. Localization

There are thousands of languages in the world. If you want to be nearer to your customers, you should think about the localization of your software. The localization module provides support for multiple localized strings. The localization texts are separated into separate text files independent from the user interface. The localization module chooses the correct text for the chosen language.

12. Email Notifier

Notification by email is an important part of modern software systems and services. It extends the software by the ability to communicate with the human user – notify changes in the system, errors or even occurrences.

New Comment