What are software components?

Asked

Viewed 3,676 times

5

"Component" is a word used in various contexts and I imagine that it is difficult to define generically.

By definition it is a part that makes up a whole. For example, a subsystem.

It is also said that components are reusable. It is also said in "componentizable architectures" or "componentized".

Of Quora I removed the following definition, which helped to some extent.

A component is a self-contained system that has one or more input channels and one or more output channels. Without the inputs it has nothing to do. Without the exits he cannot serve a purpose.

Note that a function receives input through its arguments and returns a result, so it also has inputs and outputs. As soon as she receives an entry she returns an exit. The entrance and exit always walk married.

A true component may behave that way as well, but the input and output channels can also operate independently of each other - that is, the outputs do not need to walk married to the inputs.

The essential point is that a component can receive inputs from one or more channels and send outputs to one or more channels, but what happens between these operations is hidden from view. The concerns of the component are all of itself - a black box for the world. All the world requires is a contract (of what it needs and what it provides) through which some use can be made of it in a larger system of connected components.

A typical DVD player is a component. It receives input through a DVD inserted into its drawer and its remote control and returns audio and video outputs. A software component is no different; however, it should be noted that its input/output channels are typically asynchronous.

Anyway, what are components?

What examples of the software scope can we use to illustrate them?

When I know I’m developing a component?

1 answer

4


The "official" definition given at a conference on Components in 1996 is: "A component is a unit of composition with contractually specified interfaces and with explicit context dependencies only A software component can be deployed [Deployed] independently and is subject to third-party composition".

Basically software components is a piece of independent software, but that can be used by other software. It is very similar to a library, that is, a person creates a component to access a database. Instead of creating a class or code to access the database, I include this component with the code already created to access my database. It is a subset of software because it can be reused, may be contained in software, but independent because it works also alone/ separate from other systems. Software components are focused on reuse.

This link from UFCG gives the concept by several authors (including the definition I put): http://www.dsc.ufcg.edu.br/~Jacques/courses/map/html/comp/definicoes.htm

Already in this link gives the same example I quoted:
https://www.componentsource.com/pt-br/help-support/about-us/components .
There it is written so in the subtitle CBD (Component-Based Development): "For example, if a programmer creates a component to access a client in a corporate database, no other programmer will have to write such functionality again."

Finally this link also speaks as it addresses the developmental deficiencies with POO paradigm, which is the most well accepted currently: https://www.maxwell.vrac.puc-rio.br/5244/5244_3.PDF

  • I seem to have touched on a subject that rewrites a certain mold... CORBA components... unusual thing to see... Does that make me wonder, has anyone here ever handled CORBA components? If you say they are general components some will say yes, but CORBA believe that almost nobody...

  • I ask this to understand whether components have usual use within this definition that has been passed. It is not a question addressed to the author of the answer.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.