Esta técnica envolve a utilização de transformações projetadas para converter elementos conceituais em elementos concretos no mesmo modelo e descritos no mesmo diagrama de modelo. Neste cenário, qualquer elemento de modelo no nível de design, como uma classe UML, utilizado como entrada direta para a transformação de geração de código, é utilizado para gerar uma entidade em nível de código correspondente. O elemento de modelo conceitual original é excluído e sua notação no diagrama é substituída por uma referência ao elemento de modelo concreto gerado. O diagrama ainda pode mostrar relacionamentos entre o elemento de modelo de código e outros elementos de modelo conceitual que não foram semelhantemente substituídos pela transformação. Com essa técnica, você também pode arrastar elementos de um modelo concreto, como código Java ou C++, para um diagrama conceitual de UML armazenado em um modelo UML. Então, você pode traçar determinados tipos de relacionamentos entre os elementos conceituais e os elementos concretos do modelo. Este método suporta um processo interativo no qual você pode usar repetidamente transformações que executam essa substituição de semântica atual. Isso significa que um arquiteto pode especificar a primeira iteração de design utilizando modelos conceituais e, então, gerar código dessas partes do modelo que foram revisadas e aprovadas. O arquiteto pode, então, continuar a desenvolver o design nas iterações a seguir e, à medida que mais aspectos do design forem aprovados, transformá-los da mesma forma. As partes do design que foram confirmadas anteriormente no código são descritas nos diagramas mistos resultantes ao lado dessas partes que ainda não foram confirmadas. Os elementos confirmados sempre refletem o estado atual da implementação à medida que ela se desenvolve, porque são simplesmente reflexões de diagrama do código em si.
A Modelagem Mista é bem adaptada para uma abordagem de design iterativo. O design e a implementação geralmente são feitos por diferentes indivíduos, e o arquiteto requer apenas uma clara visibilidade para as implementações em desenvolvimento sem manter o controle rigoroso. Adote essa abordagem se você acreditar que o benefício agregado de conseguir manter o registro contínuo de intenção em níveis mais elevados de abstração, que podem ser descritos ao lado da implementação de estado atual, vale a dificuldade adicional de manter os modelos conceituais.
A Modelagem Mista fornece a abordagem de modelagem concreta e as vantagens de modelagem de valor inicial conceitual em uma abordagem de design iterativa. A Modelagem Mista também fornece nível de controle com base na visibilidade para o arquiteto. Como resultado, várias modelagens mistas fornecem um grau mais elevado de controle do que a modelagem de valor inicial concreta ou inicial sozinha. Também permite que o arquiteto e os desenvolvedores atualizem iterativa e simultaneamente o modelo misto e a implementação. Os diagramas de modelo misto refletem automática e imediatamente ambas as alterações.
A Modelagem Mista fornece as vantagens dos modelos concreto e conceitual, mas como resultado há muito mais planejamento e manutenção dos dois diagramas e do código de implementação. Cada iteração requer uma transformação que pode incluir tempo ao projeto.
A modelagem mista começa com o uso dos modelos conceituais e continua até um ponto de geração de código, conforme descrito em Modelos Concretos de Valor Inicial de Modelos Conceituais. Entretanto, no protocolo de Modelagem Mista, dirija a transformação modelo-para-código para substituir elementos de UML, nos quais os elementos de código se baseiam, com referências diretas a esses elementos de código gerados. O resultado é um “modelo misto”. A Modelagem Mista fornece conteúdo conceitual mais abstrato que permanece no modelo UML e continua até o desenvolvimento como uma expressão ativa de intenção, enquanto os diagramas dentro do modelo mostram os relacionamentos de refinamento com o código de implementação correspondente. Isso fornece aos arquitetos que controlam os modelos conceituais a visibilidade atualizada para as decisões que os desenvolvedores tomam quando trabalham com o código via Edição Visual 3GL.