Finalidade

  • Produzir uma implementação para parte do design (como uma classe, realização de caso de uso ou entidade de banco de dados) ou corrigir um ou mais defeitos. O resultado é normalmente código fonte novo ou modificado e arquivos de dados, referidos geralmente como Elementos de Implementação.
Função:  Implementador  
Freqüência:   Repetido do começo ao fim de cada iteração (com a possível exceção das iterações de início, quando nenhum protótipo é necessário) 
Etapas
Artefatos de Entrada:    Artefatos Resultantes:   
Mentores de Ferramentas:   
More Information: 

Detalhes de Workflow:   

Preparar a Implementação Para o início da página

Entender a Tarefa/Problema

Antes de iniciar uma atividade de implementação, o implementador deve ser claro no escopo, conforme especificado nas designações de trabalho e nos planos de iteração. Uma tarefa de implementação pode visar a obtenção de uma funcionalidade específica (como implementar uma realização de caso de uso de design ou corrigir um defeito) que envolve a implementação de vários elementos de design que contribuem para essa funcionalidade. Alternativamente, uma tarefa de implementação pode focalizar um determinado elemento de design, como um Subsistema de Design ou uma Classe de Design, implementando-o para a extensão requerida para a iteração atual.

Configurar Ambiente de Desenvolvimento

Esta atividade resulta na criação ou atualização de um ou mais arquivos (Elementos de Implementação). Como parte da preparação para implementação, o implementador deve assegurar-se de que seu ambiente de desenvolvimento esteja configurado corretamente para que as versões de elemento corretas estejam disponíveis. Isso deve ser feito para que ambos os elementos sejam atualizados e quaisquer outros elementos requeridos para compilação e teste da unidade. O implementador deve estar ciente de e seguir a configuração do projeto e alterar os procedimentos de gerenciamento. Esses procedimentos descrevem como as mudanças são controladas e transformadas em versão e como são entregues para integração.

Analisar a Implementação Existente

Antes de implementar uma classe, pense se há código existente que possa ser reutilizado ou adaptado. Entender a posição da implementação na arquitetura e design do restante do sistema pode ajudar o implementador a identificar essas oportunidades de reutilização. Também pode assegurar a adaptação da implementação no restante do sistema.

Implementar Incrementalmente

Recomenda-se implementar incrementalmente pela compilação, link e execução de alguns testes de regressão algumas vezes ao dia. É importante saber que nem todas as operações públicas, atributos e associações são definidos durante o design.

Ao lidar com defeitos, assegure-se de que tenha corrigido o problema, não o sintoma. O foco deve estar na correção do problema de base no código. Faça uma alteração de cada vez porque a correção de erros é por si só, uma atividade propensa a erros. É importante implementar as correções incrementalmente para facilitar a localização da origem de novos erros.

O implementador deve estar ciente de e seguir as diretrizes de implementação específicas do projeto, incluindo diretrizes de programação para as linguagens de programação específicas.

Transformar Design em Implementação Para o início da página

Há várias técnicas para transformação de design em implementação. A seguir são apresentados alguns exemplos:

  • Os modelos visuais específicos da plataforma podem ser utilizados para gerar uma estrutura de código inicial. Essa estrutura de código pode ser ainda mais elaborada com código adicional não especificado no design.
  • Os modelos podem ser detalhados e utilizados para gerar protótipos executáveis. Ambos os diagramas de estrutura (diagramas de classe e de pacote) e de comportamento (como o diagrama de estado e de atividade) podem ser utilizados para gerar código executável. Esses protótipos podem ser ainda mais aperfeiçoados, conforme necessário.
  • Os modelos também podem ser detalhados até o ponto em que o modelo represente completamente a implementação. Nesse caso, em vez de transformar um design de resumo em uma implementação de código, você toma o design e inclui detalhes de implementação diretamente no modelo.
  • O design pode ser independente da plataforma em graus variados e modelos de design ou código específicos da plataforma podem ser gerados por meio de transformações que utilizam várias regras para decidir como as abstrações de alto nível devem ser mapeadas para elementos específicos da plataforma. Este é o foco da iniciativa do OMG (Object Management Group) MDA (Model Driven Architecture) (http://www.omg.org).
  • Também é possível aplicar modelos padrão para gerar elementos de design e de código a partir de design e implementação relacionados. Por exemplo, um modelo de transformação padrão pode ser aplicado a uma tabela de dados para criar classes java para acessar a tabela de dados. Outro exemplo é utilizar um modelo Eclipse Modeling Framework (http://www.eclipse.org/emf/) para gerar código para o armazenamento de dados que correspondam ao modelo e para gerar uma implementação de interface com o usuário para o preenchimento de dados.

Em todos os casos, no entanto, alguma abstração de design é detalhada para tornar-se a implementação, seja manualmente ou por meio da aplicação de alguma transformação automatizada.

Concluir a Implementação Para o início da página

Conforme descrito na etapa anterior, a transformação de design em implementação pode resultar em graus variados de abrangência de implementação. Ela pode ser uma implementação completa e aceitável. Normalmente, no entanto, há a exigência de uma tentativa substancial para concluir a implementação. Por exemplo:

  • Ajustar os resultados da transformação (por exemplo, aprimorar o desempenho ou a interface com o usuário)
  • Incluir detalhes ausentes, como:
    • a conclusão de operações descritas no design
    • a inclusão de classes de suporte, operações e estrutura de dados

Avaliar a Implementação Para o início da página

É aqui que você verifica se a implementação se adequa à finalidade.  Além do teste (descrito em outras atividades), algumas verificações adicionais são sempre úteis:

  • Leia o código até o fim. Pense em manter uma lista de verificação de erros comuns que são feitos nas implementações.
  • Utilize ferramentas para verificar se há erros no código. Por exemplo, um verificador ou compilador de regra de código estático definido com o nível de aviso detalhado.
  • Utilize ferramentas que possam visualizar o código. A visualização do código pode ajudar um implementador a identificar padrões, como acoplamento excessivo, dependências circulares, etc.

Fornecer Feedback ao Design Para o início da página

Conforme os designs são implementados e testados, é inevitável a descoberta de erros que os afetam. Se uma abstração de design for mantida para tentativas de manutenção futuras ou por motivos contratuais ou de comunicação, o design terá então que ser atualizado.

Como isso é feito depende da configuração do projeto e do processo de gerenciamento de mudanças. Em geral, se a mudança exigida for pequena e a mesma pessoa estiver projetando e implementando a classe, não haverá necessidade de um controle de mudança formal. A pessoa poderá efetuar a mudança no design.

Se a alteração requerida tiver um impacto amplo, por exemplo, uma alteração em uma operação pública, então talvez seja necessário submeter um controle de mudanças formal.



Rational Unified Process   2003.06.15