It takes several ingredients to bake a pie. But the baker doesn’t make all the ingredients from scratch. He doesn’t grind the flour from wheat, and he doesn’t have the hens that lay the eggs. Granted, there may have been a time in our history when that was needed, but now with the influences of the hundreds of other cultures in our world it is virtually impossible to grow or make all the ingredients that go into a single recipe.
Let’s face it. Just thinking about all that work makes the pie making experience less appetizing.
In the tech world, we are facing the same problems. Where once a developer could create a whole software project from point 0, this is no longer feasible or even desired. It is just too cost prohibitive and time consuming.
Component Based Development
As such there is a new development design methodology used, and this is called component based software engineering or component based development. This is software engineering that emphasizes the separation of functions in any software system. The purpose in developing like this is to gie components reusability.
Definition of Software Components
These are individual components or software programs that deals with a certain set of functions or data. These separate components are then joined to be a larger cohesive system; each component communicating with each other via an interface.
But with an important attribute that each of the components be substitutable for another. As such, components can be updated or alternated without breaking the rest of the component system.
How are These Components Developed
Well depending on the type of software these are developed to carry out specific functions. These defined by the needs of the business or user. So for instance, a developer designing a software program for a library, might need one component to search for specific titles of books, while another might need to keep track of the library classification codes, and another the titles and codes from books that are out on loan.
Types of Software
Now despite most software programs being developed in components or modules that are later joined to create one software interface, there are still just a few types of software created. These include:
- System software
This is software designed to control the computer components; these are the hardware devices inside a computer, laptop, tablet, or smartphone. For example there is a certain software that a user to control the way the computer display views, another to control sound, another that makes use of the memory and processor, and an infinite other software programs that make the overall device work the way a user wants. Typical complete system software packages made up of different components include Microsoft Windows, Mac OS and Linux.
This is software that helps system software perform better. Typically these take the form of antivirus software, firewalls, disk defragmenters, disk cleanup tools and recovery tools.
These are also colloquially called apps and are used both on PCs and smaller mobile devices like tablets or phones. Essentially this is a software program that offers better functionality for a certain task or set of tasks. This can include things like voice recognition software, accounting software, web browsers, digital image manipulating software, medical software and the list goes on and on. For many people, these are the only reason they own a smartphone, tablet or computer.
Generic or Bespoke
All of these types of software packages can be generic or bespoke.
Generic refers to software built for the masses; to be used by many different users in varying fields of specialization or on different devices. Examples of this type of software are Microsoft Office, popular games, Adobe system software. Generic software is usually sold as a package and updated frequently to meet the needs of its users. And because there is a larger consumer use, the cost of creating the software is offset by the large number of users. Additionally this is software that is immediately available to users and there is no need to wait for development times.
Bespoke is customized software that is used for a specific industry or even a specific business. It’s made to automate or fix a problem that is recurring within the business. It has a specific purpose and is used within a specific environment. This type of software solves a specific need so it is very customized which is nice for some businesses. But the drawback here is that a business or user must wait for the development and test phases to complete, and this could take several weeks or months, depending on how complicated the tasks the software addresses are.
Do software Engineers Specialize within a Certain Category
While most software designers and engineers are taught to develop in a component environment, a computer software designer is more effective and sought after when he or she specializes within a certain category of software. In other words, within system, utility or app design. Even then there are categories that are immense, such as app design. It’s then that a developer will want to specialize even further within a particular niche; for example game design, oil and gas developing, manufacturing, consumer apps, business and even child