Modelo de Processos de Desenvolvimento de Software Orientado a Reuso
O desenvolvimento de software orientado a reuso é uma abordagem que visa maximizar a reutilização de componentes de software existentes para reduzir custos, acelerar o tempo de desenvolvimento e melhorar a qualidade do produto final.
Essa prática é baseada na ideia de que partes de sistemas já desenvolvidos podem ser reaproveitadas em novos projetos, minimizando o retrabalho e aproveitando soluções que já se mostraram eficazes ao longo do tempo.
O reuso pode acontecer em 3 escalas diferentes, sendo elas:
- Reúso de aplicações (ou sistemas): toda aplicação é reusada, ou é configurada para diferentes clientes (arquitetura multi-tenancy), ou compartilham de uma arquitetura em comum.
- Reúso de componentes (ou subsistemas): componentes de softwares de tamanho variado são reutilizados.
- Reúso de funções e objetos: componentes com responsabilidade bem definidas (exemplo: funções matemáticas).
Note
Outra forma de reúso é a de conceito, no qual surge a partir do reconhecimentos de padrões de comportamentos podendo ser representados por uma abstração. Por exemplo, padrões de projetos, padrões de arquiteturas, etc.
Embora essa abordagem possa trazer diversas vantagens, principalmente no que tange agilidade no desenvolvimento, ela também apresenta alguns problemas como:
- Maiores custos de manutenção.
- Falta de ferramentas de suporte.
- Síndrome do “não-inventado-aqui”.
- Criação, manutenção e uso de uma biblioteca de componentes.
- Como encontrar, compreender e adaptar componentes reusáveis.
O desenvolvimento de software orientado a reuso é pode ser uma boa escolha quando se busca otimizar o cronograma de desenvolvimento, especialmente em projetos com prazos apertados. Se o software é esperado para ter uma longa duração, o reuso de componentes bem testados e robustos pode garantir maior sustentabilidade e facilidade de manutenção ao longo do tempo.
Além disso, essa abordagem é vantajosa quando a equipe de desenvolvimento possui conhecimento e experiência suficientes para identificar, adaptar e integrar componentes reutilizáveis de maneira eficiente. Vale considerar a importância do software e seus requisitos não funcionais, como desempenho e segurança, uma vez que componentes reutilizáveis muitas vezes já atendem a esses requisitos.
O reuso é mais viável em domínios de aplicação bem compreendidos, onde já existem componentes disponíveis e validados. Por fim, a plataforma em que o sistema será executado deve ser compatível com os componentes reutilizáveis, garantindo que a integração seja suave e eficaz