Atividade: Projetar Componentes
Essa atividade refina o design do sistema.
DescriçãoEstrutura de Divisão de TrabalhoAlocação de EquipeUso de Produto de Trabalho
Relacionamentos
Atividades Pai
Descrição

Esta atividade tem as seguintes metas:

  • Refinar as definições de elementos de design por meio da elaboração de 'detalhes' de como os elementos de design realizam o comportamento exigido deles.
  • Refinar e atualizar as realizações de casos de uso baseadas no novo elemento de design identificado (isto é, manter atualizadas as realizações de casos de uso)
  • Rever o design
Propriedades
Orientado por Evento
Múltiplas Ocorrências
Em Andamento
Opcional
Planejado
Repetível
Criação da Equipe

Em geral, uma pessoa ou uma equipe pequena é responsável por um conjunto de elementos de design, normalmente um ou mais pacotes ou subsistemas contendo outros elementos de design. Essa pessoa/equipe é responsável pelos detalhamentos do design para os elementos contidos no pacote ou subsistema: completar todas as definições de operações e de relacionamentos com outros elementos de design. A Tarefa: Design de Cápsula tem como foco a decomposição recursiva da funcionalidade do sistema em termos de cápsulas e classes (passivas ou de dados). A Tarefa: Design de Classe tem como foco a refinação do design de elementos de design de classe passivos, enquanto a Tarefa: Design do Subsistema tem como foco a alocação de comportamento mapeado para o próprio subsistema nos elementos de design contidos (cápsulas contidas e classes ou subsistemas).  Em geral, os subsistemas são utilizados principalmente como estruturas de organização de modelo de grande granularidade, enquanto as cápsulas são utilizadas para o trabalho em massa e as classes "comuns" relegadas amplamente a armazenamentos passivos de informações.

As pessoas ou as equipes responsáveis pelo design das cápsulas devem ter domínio da linguagem de implementação e também devem ser especialistas nas questões relativas à simultaneidade. Pessoas responsáveis por design classes passivas também devem ter domínio da linguagem de implementação, assim como dos algoritmos ou tecnologias que a classe utilizará. As pessoas e as equipes responsáveis por subsistemas devem ser mais generalistas, capazes de tomar decisões quanto ao particionamento adequado da funcionalidade entre os elementos de design e de entender as permutas inerentes às várias alternativas de design.

À medida que cada elemento de design for refinado, as realizações de casos de uso precisarão ser refinadas para refletir a evolução das responsabilidades desses elementos. Em geral, uma pessoa ou uma pequena equipe é responsável pelo refinamento de uma ou mais realizações de casos de uso relacionadas. Ao adicionar ou refinar elementos de design, é preciso reconsiderar as realizações de casos de uso e fazê-las evoluir à medida que ficam desatualizadas ou que as melhorias no modelo de design permitam simplificá-las. As pessoas ou equipes responsáveis pelas realizações de casos de uso precisam ter amplo conhecimento do comportamento exigido pelos casos de uso e dos ajustes das diferentes abordagens para alocar esse comportamento nos elementos de design. Além disso, como são responsáveis pela seleção dos elementos que executarão os casos de uso, elas precisam ter um profundo conhecimento dos comportamentos externos (públicos) dos próprios elementos de design.

Uso
Orientação de Uso

Geralmente, aqui o trabalho é executado individualmente ou por pequenas equipes, com interações informais entre os grupos quando for necessário comunicar alterações entre as equipes. À medida que se refinam os elementos de design, eles freqüentemente transferem responsabilidades entre si, o que requer mudanças simultâneas em muitos deles e em várias realizações de casos de uso. Por causa dessa interação de responsabilidades, é quase impossível que os membros da equipe de design trabalhem totalmente isolados. Para manter o esforço de design focado no comportamento exigido do sistema (conforme descrito nas realizações de casos de uso), surge um padrão característico de interação:

  • os elementos de design são refinados pelas pessoas ou equipes responsáveis
  • um pequeno grupo (talvez 2-5 pessoas) se reúne informalmente para calcular o impacto dos novos elementos de design em um conjunto de realizações de casos de uso existentes
  • identificam-se alterações na realização de casos de uso e nos elementos de design participantes
  • o ciclo se repete até que todo o comportamento necessário para a iteração seja projetado.

Como o próprio processo é iterativo, os critérios de 'todo o comportamento necessário para a iteração' dependerá da posição do ciclo de vida.

  • Focalize nos comportamentos significativos em termos de arquitetura na fase de elaboração. Ignore todos os outros 'detalhes'.
  • Na fase de construção, há um deslocamento em direção à abrangência e consistência do design, de modo que, ao final dessa fase, não exista nenhuma questão de design não solucionada.

Observe que o design para uma iteração não precisa ser completo antes do início das atividades de implementação e de teste. Implementar e testar parcialmente um design à medida que ele evolui pode ser um meio eficaz de validar e refinar o design, mesmo dentro de uma iteração.