Projeto ADD – Assembly Driven Development
1) Introdução
1) Introdução
O advento da popularização da Internet
provocou uma mudança na forma de utilização de software. No passado não muito
remoto as aplicações tinham a característica “stand alone”, mas com a
disseminação da rede www, o software passou a ser instalado em servidores, o
que possibilita seu uso por várias pessoas.
Esta mudança de característica do
software, de “stand alone” para “web application” tem como um dos propósitos a
facilidade de manutenção que é feita apenas em um único ponto, ou seja, no
servidor de aplicações.
O que se percebe na evolução da maneira
de desenvolvimento de software é a crescente necessidade de redução de custos,
sem perda da qualidade. As denominadas “web application” contribuem para isto,
mas há outra tendência na construção de aplicações que aos poucos vão se
tornando realidade: a construção de elementos (ou componentes) de software que
podem ser utilizados em diversas aplicações.
Componentes são porções de software que
possuem funcionalidades específicas e são de uso geral. Pelo fato de serem
utilizados diversas vezes, beneficiam-se do processo de melhoria contínua
através do ciclo PDCA – Plan, Do, Check, Act.
O reuso dos componentes reduzem os custos de
confecção dos softwares e admitindo-se que este processo prolifere, o
desenvolvimento de software se torna uma montagem de software (assembly driven
development), utilizando ou configurando os componentes, objeto do presente
estudo.
2) O modismo do XDD
XDD ou X Driven Development constituem
metodologias de desenvolvimento de software criadas segundo o significado de X.
Assim, FDD – Feature Driven Development foca no desenvolvimento orientado a
funcionalidades; TDD – Test Driven Development subentende desenvolvimento
orientado a testes, que evolui para BDD – Behaviour Driven Development, etc.
XDD são sugestões de técnicas para
direcionar as atividades de desenvolvimento, mas tais metodologias apenas
sugerem uma diretriz alternativa para a criação do software. Pouco ou nada se considera
em termos de redução de custos, maximização da qualidade e redução do tempo de
desenvolvimento.
Na metodologia ADD – Assembly Driven
Development, a estratégia básica é utilizar o recurso de maneira otimizada,
direcionando os esforços na essência do desenvolvimento que são nas regras de
negócio e na proposta da solução para o software.
Portanto, não se trata meramente de mais
XDD, mas sim de uma estratégia que adota como diretriz a otimização no uso dos
recursos, maximizando a qualidade e reduzindo o tempo de desenvolvimento.
3) Estratégia
São diversos aspectos considerados nesta
metodologia para o desenvolvimento de software:
a) Foco nas regras de negócio – O esforço cognitivo dos
desenvolvedores é direcionado para o entendimento correto das regras de negócio
e na idealização da solução do problema. A atividade de “pensar” é consumida
naquilo que mais interessa em cada software que é a busca da melhor solução;
b) Uso de componentes – Parte-se do pressuposto que
muitos componentes de uso geral estão disponíveis no mercado, além de
convergirem para um padrão que permite facilmente o acoplamento dos componentes
como partes de um sistema. Assim, a ADD vale-se deste fato e faz uso ostensivo
de componentes, entendendo que são porções de software de qualidade, pois vem
sendo testado e reutilizado pela comunidade ao longo do tempo. A adoção de
padrões por estes componentes facilitam o uso e consequentemente, não há
necessidade de utilizar mão de obra especialidade para executar esta parte do
software. Por outro lado, qualquer montagem acelera o desenvolvimento, pois se
trata apenas de uma atividade de configuração, sem se preocupar inclusive em
fazer testes uma vez que isto se admite como etapa executada pelos fabricantes;
c) Redução do tempo de desenvolvimento – O maior tempo
consumido é na elaboração da solução. Todas as outras atividades são de
montagem e consomem apenas o tempo de configuração das interfaces (que são
padrões) e testes de condições de contorno. Por isto, o tempo total de
desenvolvimento se torna bastante reduzido se comparado com o tempo consumido
por outras metodologias de desenvolvimento;
d) Qualidade – A qualidade do software é maximizada por
duas situações: a primeira é que todo o esforço cognitivo se concentra nas
regras de negócio, não dispendendo tempo nem recurso com outras atividades
consideradas rotineiras; a segunda situação se refere ao uso de componentes,
onde são adotados aqueles de melhor qualidade. Não existe a preocupação de
manter os componentes que são propriedade de terceiros. Além disso, ao adquirir
tais elementos de software no mercado, automaticamente se obtém o upgrade, a
documentação e o suporte em tempo real;
e) Redução de custos – Toda parte da montagem via
componentes são de baixo custo. Os componentes sendo comercializados em larga
escala também são de baixo custo e alta qualidade. Em termos globais há um
ganho significativo em termos de economia;
f) Ganho de competitividade – Neste aspecto, obtém-se a
vantagem competitiva através da minimização de custos, alta qualidade e menor
tempo de desenvolvimento;
g) Manutenabilidade – Em relação a este item, a ADD
garante a fácil manutenção das aplicações uma vez que os componentes
secundários praticamente não necessitarão de manutenção e a parte central
ocupando-se da implementação das regras de negócio será desenvolvida através do
uso de metodologias ágeis que absorvem bem as mudanças de requisitos, aderindo
fortemente aos anseios do Usuário, o que garante a baixa manutenção pós-facto.
4) Papéis previstos
São diversos
perfis projetados para esta metodologia, cada um com seus procedimentos e
responsabilidades.
a) Enabler – É o facilitador que coordena as atividades
entre os membros de toda a equipe;
b) Avaliador de Componentes – É o profissional
especializado em avaliar diversos componentes e indicar aqueles que se adaptam
ao padrão de desenvolvimento da Organização, em termos de nível de qualidade,
suporte e interfaces;
c) Comprador – É o profissional que tem expertise em
compras. Deve possuir amplo conhecimento de componentes de TI e Negociações.
Além de efetuar a aquisição dos componentes, deverá também celebrar contratos e
acordos de manutenção;
d) Arquiteto – É o profissional encarregado de
conversar com o Cliente e desenhar a solução do problema. Reponde também por
desenhar a arquitetura da solução e interagir com a equipe de desenvolvimento,
esclarecendo as dúvidas;
e) Desenvolvedor Master – É o profissional experiente
em desenvolvimento que coordena os trabalhos de codificação das regras de
negócio. É o líder da equipe de desenvolvimento;
f) Testador – Profissional com expertise em testes,
responsável pela elaboração da documentação de testes e avaliação da aplicação.
g) Instalador – Profissional experiente na instalação
da aplicação, configurando servidores e parâmetros da aplicação, entregando o
software para o Cliente;
5) Atividades previstas para o projeto ADD – Neste
momento do projeto, há a necessidade de detalhar e aprofundar com mais ou menos
detalhes dependendo de cada assunto.
a) Pesquisa bibliográfica – Existe ainda a necessidade
de aprofundar mais sobre o assunto, de modo a acrescentar maior nível de
detalhes para a metodologia;
b) Análise de riscos – Ainda não elaborada, a análise
de risco é de grande importância para minimizar os efeitos negativos de algo
não previsto neste método;
c) Estudo dos papéis requeridos no método, aprofundando
suas atividades e responsabilidades de modo a explicitar claramente o domínio e
as interfaces de cada papel;
d) Benefícios – Necessidade de aprofundar os estudos
sobre os benefícios citados, validando cada item elencado;
e) Definir os processos e detalhar o conjunto
estruturado de atividades, normas, recursos e outros itens necessários para
execução de cada um dos processos;
f) Redução de Custos - Estudos para avaliação da
redução de custos possível, analisando a economia obtida ao adotar o uso de
componentes ao invés do desenvolvimento dos mesmos;
g) Qualidade – Estudos para avaliar o ganho de
qualidade, estabelecendo algumas métricas para o método.
6) Conclusão
O fundamento
básico da metodologia ADD consiste na otimização de recursos, redução de custos
e aumento de qualidade, conforme descrito anteriormente. Estes três itens são
suficientes para mostrar a viabilidade de prosseguir com esta pesquisa.
As
metodologias XDD – X Driven Development
existentes apresentam maneiras diferentes de desenvolver software. FDD –
Feature Driven Development e SCRUM, por exemplo, são similares. O primeiro foca
nas funcionalidades e o segundo em uma lista denominada de Product Backlog.
A
metodologia ADD – Assembly Driven, por sua vez, sugere a obtenção de vantagens
competitivas, direcionado esforços para aquilo que realmente importa na
aplicação, que são as regras de negócio. As outras atividades do software são
consideradas de importância secundária e faz uso de partes de software de baixo
custo e alta qualidade, que são os componentes comerciais.
ADD é uma
inovação que tem grande probabilidade de sucesso em virtude de abordar redução
de custos com ganho de qualidade, o que no mundo atual é de importância
estratégica.
Obviamente,
há ainda a necessidade de analisar com mais detalhes alguns pontos colocados anteriormente,
mas isto não invalida avançar com este projeto.
Nenhum comentário:
Postar um comentário