Skip to content

Instantly share code, notes, and snippets.

@justiandre
Last active January 21, 2019 22:58
Show Gist options
  • Save justiandre/8a79627aaf4294e9f38c6fa4d383c103 to your computer and use it in GitHub Desktop.
Save justiandre/8a79627aaf4294e9f38c6fa4d383c103 to your computer and use it in GitHub Desktop.

Componentização

A componentização no âmbito de arquitetura e engenharia de software, pode ser descrita como, uma unidade de software, que pode ser plugada ou agrupada à outras unidades de software, assim, podendo ser reutilizado de inúmeras formas, dessa maneira, várias etapas na construção do software em questão podem ser dispensadas, tornando o processo de desenvolvimento mais produtivo.

As principais vantagens da sua utilização de componentes são:

  • Reutilização - O componente em questão pode ser criado uma vez e reutilizado “N” vezes em vários softwares ou outros componentes
  • Fácil evolução - O componente dever ter, um ciclo de vida, build/pipeline e versionamento independente do software principal, assim pode ser evoluído em paralelo de maneira mais simples, visto que unidades de softwares menores são mais fáceis de manter
  • Qualidade - O componente em si, por ser uma unidade bem isolada e pequena e tende a possuir uma boa qualidade, tendo bom código e possuindo uma grande facilidade ao ser testado

Ao criar uma unidade de software, sempre deve ser considerado se a mesma, deve ser parte do software principal, ou um componente; Pense no seguinte cenário, existe uma aplicação, e ela e possui o requisito "enviar e-mail", se o código de infraestrutura (configuração smtp, configuração conteúdo html etc) do envio de e-mail for adicionado na própria aplicação, sera mais dificil testar o envio de e-mail em si, assim o código não terá uma boa qualidade, também será mais difícil de evoluir, e se surgir a necessidade de outra aplicação enviarem e-mail, esse código terá que ser copiado para essa nova aplicação ou refeito, por isso a criação de software baseada em componentes é tão importante.

A criação e utilização de um componente, deve seguir os seguintes princípios de coesão e acoplamento:

  1. REP - Reuse-release equivalence principle
  2. CRP - Common-reuse principle
  3. CCP - Common-closure principle
  4. ADP - Acyclic dependencies principle
  5. SDP - Stable-dependencies principle
  6. SAP - Stable-abstractions principle

Alguns desses princípios, podem ser quantificados e monitorados, com ferramentas como Sonar, Structure 101, Understand etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment