Software solution design process always targets reuse of components and modules to speed up the development process, lower the project cost, and provide the customers with a faster valuable solution.
For any Software project initiation, mainly the solution architect think about if we already have a similar solution or application for the requested requirements or not. If it is possible to use some parts of the code or not. Maybe, we should search for ready-made products that we can use if a company or someone already developed this application and it satisfied our requirements.
Always, we will observe this kind of discussion for any project initiation and in solution architecture process.
In this article, we will discuss the 3 types of application software any software engineer, software project manager, technical sales, or architect should know.
It is known as a custom-made and tailored software and it is specially designed and written for a specific solution inside a single organization for specific business needs. Some specific business may not find a ready-made solution that can fit their needs, for example, scientific projects, space projects, …etc.
Moreover, some applications have been developed to target specific users, for example, mobile applications for a specific need for the business.
If we would like to use a metaphor in the physical world, we can choose Cars, for example, some banks need specific cars to transfer money from location to another, these cars have been made for that purpose and cannot be reused to be a personal or a family car. They are tailored especially based on the bank security needs.
This kind of software is designed to provide a general set of features that a broad range of customers will find it useful, it is also called ready-made software. The off-the-shelf software can be commercial (COTS) or non-commercial, for example, Microsoft Office, and web browsers. These kinds of software have been built to reach different types of users who have a common need, for example, in Microsoft word, the users may need to create, write, read, and edit documents. They will find that Microsoft word satisfy their needs and there is no necessity to build a new software for document processing. Also, the same can be used from non-commercial software, like Open Office or even cloud applications, like google docs.
If we talk the same metaphor, some vehicles manufacturers have product lines for a sedan, SUV, and sports cars to fit general needs of public, which anyone can find these cars suitable for their general needs.
Hybrid Model (MOTS)
The hybrid software (Modifiable off-the-shelf software) is similar to off-the-shelf software with further capabilities, these capabilities can be summarized as the ability to be customized, build special purposes applications, and processes over it. This will make any organization able to combine between the two other types, to not reinvent the wheel and build something from scratch as well as tailoring this solution to perfectly fit the business needs.
There are a lot of examples for this kind of software, CRM, ERP, Document Management, Process Management, Portal platforms, …etc.
Each one of these examples are capable of providing the basic features that are common for most of the customers as well providing the customizations and add-ons capabilities to fit the business needs, for example, WordPress platform which can be used to make any website, but the user can still add his pages and plugins and edit the code to add more capabilities that are not existing in the platform.
In addition, there is GOTS (government off-the-shelf) which is specific solutions for government, and Mil-COTS which refers to COTS products for use by the military.
If we use the car example again, some car owners may have special needs, for example, larger tires size, special paint, extra accessories, special engine, they can order these extra requirements to be added to the same car with extra fees.
After we have discussed these three types of application software, how can we decide what will be suitable for our needs?
How to choose?
Let us compare these types to be able to choose.
|Flexibility and Customizability||Very customizable based on the requirements||Rigid, but you can ask for new features.||Flexible and you can new capabilities but with caution, for example, for new upgrades, these newly developed capabilities may need some adjustments|
|Control||100% of the control over the output||You do not have the control||Limited control.|
|Functionality||Can cover to 100% of business needs||Based on the available features of the application||Can cover to 100% of business needs|
|Help and Support||Mainly the team, company, person who developed the application who can provide its support. If the team or company does not exist anymore, you may face some issues to add or change the functionalities.||The software vendor who can provide the help and support. Also, some communities can support.||The software vendor who can provide the help and support, besides the team who implemented the customization and this team can be a different team for standard products|
|Training||Training can be easier as it has been tailored to match the business needs and processes.||Training can be provided by the vendor, or may you will find a lot of online resources for that.||Similar to off-the-shelf|
|Integration||It can be built to integrate the currently existing systems||Some of them provide integration capabilities out of the box||Some of them provide integration capabilities out of the box|
|Cost||Highest cost, while it is not always the case if compared with some ready-made products.||Lowest cost, as it targets many users||The cost mainly in between, as there is additional customization cost|
|Time||Takes too long||Faster time to gain value||It is fast if you will use the out of the box features then customize later in other phases|
|Internal capabilities||If you do not have the team to build the application, you can outsource it.
It is important to choose a reliable company at this stage
|Mainly, you will buy the license and you do not need to have any capabilities in the team.
You do not have any control over the application software
|You may need the team who able to customize the product for the business needs or outsource it.
Different companies or team can build or change the new capabilities.
|Expandability and scalability||It is subject on how the software has been developed, it is scalable or not||Because it is developed for common needs, it should be scalable||Because it is developed for common needs, it should be scalable|
Although, this comparison can help to initially decide which type you should choose. Many companies do not have a process on how to select the suitable off-the-shelf or hybrid products and this can be for many reasons like, they used to work with specific products, they have a partnership with a specific software vendor, or their operating systems limit them to use specific applications software.
I hope this article was helpful, and please share with me your thoughts.