Reuse of software components
Component-based software engineering (CBSE), also known as component-based development (CBD), is a branch of software engineering that emphasizes separation of concerns (SoC), as it refers to the wide-ranging functionality available throughout a given software system. It is a reuse-based approach to defining, implementing, and composing loosely coupled software components into systems. This practice pursues a wide degree of benefits in both the short and long term, for the software itself and for the organizations that sponsor such software.
Software engineers consider components as part of the initial platform for service-orientation. Components play this role, for example, in web services and, more recently, in service-oriented architectures (SOA), whereby a component is converted by the web service into a service and consequently inherits other features beyond those of an ordinary component.
Reusable software resources examples
In general a web API is known as an application programming interface or as its acronym defines it (API: Application Progamming Interface) which consists of a set of sequences that allow access to the functions of a certain software.
These Apis are developed and published by the developers of the software, which will allow access to certain functionalities or low level or proprietary characteristics of the software.
The developers of these Apis create guides that are used to detail which are the sequences of steps or routines that must be carried out to be able to have access to the software and to the functionalities that it offers, these do not offer detailed information of how the connection between the Api and the software works since it is merely confidential information of the developer of the Api.
These Apis are used by programmers to reduce the development time of their applications by reusing code and avoid writing functions that are already created and have been previously tested by other developers who have determined that they work correctly.
Reuse of components
Thus, one of the main characteristics of the relational database is that it avoids duplicity of records and at the same time guarantees referential integrity, that is, if one of the records is deleted, the integrity of the remaining records will not be affected. In addition, thanks to the keys, the information can be easily accessed and retrieved at any time.
Likewise, there cannot be two tables with the same name and the relationship between a parent table and a child table is carried out through primary keys (they are the primary key of a record within a table) and foreign keys (they are placed in the child table and contain the same value as the primary key of the parent record).
In order to store, manage, query and retrieve the data stored in the relational database it is necessary to use specific software, called relational database management system (RDBMS). This software provides an interface between users and/or applications and the database, as well as administrative functions to manage access, storage and performance.
Types of software reuse
In the article Computerize your Business Management, we saw the two ways of developing software: customized and commercial, and we explained the advantages and disadvantages of each one. In this article we will see which is the best way to develop customized software. To do this, we will discuss the differences between a library and a framework, and we will see what are their advantages and disadvantages in the development of a web application.
What is a framework? A framework is a set of files and guidelines that define the structure and methodology on how to develop a software project. We could say that it is a guide or outline that helps us to program in a simple and fast way.
What is a library? A library is one or more files written in a given programming language, which provide various functionalities. Unlike a framework, a library does not provide the structure on how to perform the development, but provides common functionalities, which have already been previously solved by other programmers and avoid duplication of code. They also reduce development time and increase development quality.