
What is software? Most people would probably say it’s a program for a PC or a phone that works with data. The question is, can a website be considered software according to this definition? And what if it has under-the-hood functionality, such as 1C or payment capabilities?
Over the years of communicating with our clients, we have got quite used to the fact that everyone has a different understanding of the word software. Some use it in relation to websites with a full integration stack; others mean web and desktop applications; still others refer to high load solutions.
All of them are right in their own way. A website is indeed a program that works with data: it sends requests, processes payments, and identifies the user upon authorisation. As for high load systems, they can work as stand-alone software or comprise several independent programs.
On the other hand, web and mobile development is separated from software development to prevent confusion between the client and the contractor regarding the terms, costs, and tasks.
Types of software
Software solutions are traditionally categorised into several types: system software, application software, and software development tools.
- System software comprises groups of programs that control a computer’s internal functioning. This includes operating systems, utility programs, shells, etc. Windows OS, RAR archiver, file managers, and programming systems are all examples of system software.
- Application software is designed to assist the user in solving practical problems. Here we can list such programs as Microsoft Office, 1C:Accounting or Adobe Photoshop. A good example of bespoke software is the warehouse and stock management system we developed for a large tailoring group. This is a comprehensive platform with a product catalogue, personal accounts for warehouse employees and managers, automated document management, collection of statistics and many other features. On the surface, this system looks like a website, but in reality it’s powered by multiple individual programs.
- Finally, we have software development tools which are used to create new apps and information systems. This is essentially a tech stack.
Socialisation of software
Software can be integrated or, roughly speaking, isolated. The latter type works independently, without interacting with external systems. Integrated programs, on the other hand, are in constant contact with other software. The simplest example is programs like 1C:Accounting, 1C:WMS Logistics, and Bitrix24 under the hood of an online store which constantly exchange data with each other. Another example of integrated software would be a cloud service deployed on a third-party cloud infrastructure. It’s effectively an app within an app – sort of a Russian doll.
Today, integrated apps are gradually replacing isolated ones. A time when developers worked each in their own program is coming to an end, and software development is becoming socialised. What do we mean by socialisation? Take accounting, for example: in the past, the books were kept in a separate program on a computer, and the necessary data had to be manually input from floppy disks, USB sticks, and e-mailed files. Today, this information is automatically imported into accounting software from other programs, such as inventory systems or an online store, and then transferred onwards, for example, to a document management system. In other words, downloading, uploading and transferring data is no longer done manually, but by algorithms, which greatly increases efficiency and speed.
High load systems
We’ve already mentioned that many people think of high load systems when they hear the word software. The most basic example of such a system is a marketplace that serves thousands of users and is hosted on multiple servers. But there are nuances to this.
For example, a website may consist of an interface and a set of different software solutions. Look at the OZON marketplace – under the hood, there are many individual programs: an inventory system, logistics services, accounting, user account backend, etc. And they all exchange data with each other. When an inventory system receives a signal that the package has been delivered to the pick-up point, it sends this information to another program – the user’s account. Another example comes from our own case, where we developed a marketplace for petroleum products, a complex integrated system consisting of backend services, applications, 1C and Bitrix24.
At the same time, the entire functionality of an online store may be hard-wired into its admin panel, or the store itself can be built entirely on 1C. And with that observation, we’ve come full circle. The point is, it’s difficult to draw clear lines between software, a high load website, and web development – it’s just a matter of semantics.
Moreover, it’s impossible to know in advance which solution will best meet your business objective: a high load website, stand-alone software, or a mix of individual programs. It all depends on the specific project at hand, its technological characteristics, production cycle, budget, and a whole host of other factors.