Siguiendo con el tema del modelado del software en capas, es el turno de crear modelos físicos más precisos para los programadores que han de escribir el código. Los modelos físicos indican como los programadores deberían desarrollar la aplicación.
Un diagrama de componentes indica los componentes ó paquetes de los que se compondrá la aplicación y las dependencias de estos. Un componente es un conjunto de clases relacionadas formando una unidad distribuible, como una DLL, un control ó un Webservice. Los componentes se representan por rectangulos con dos pequeños rectangulos a su izquierda, en el nombre se indica la capa a la que pertenecen separados con dos dobles puntos ('::'). Otros rectangulos mayores que agrupan varios componentes simbolizan un contenedor de distribución llamado nodo, que suele indicar una separación física, como estar en distinto hardware.
Los diagramas de clases definen las estructura de las clases y las relaciones entre ellas desde el punto de vista de la programación orientada a objetos, sin especificar como interactuan entre ellas, solo un modelo estático. Este modelo que es independiente de la tecnología y lenguaje usado, representa las clases, sus propiedades, métodos, interfaces, herencia, asociaciones, tipos de datos y demás. Las clases deben derivar de la arquitectura propuesta para la solución.
Los diagramas de secuencia muestran como los objetos intearactuan entre ellos durante la ejecución, muestra el tiempo de vida de dicho objetos y los mensajes intercambiados entre ellos. Los objetos se representan como rectangulos en lo alto del diagrama con lineas verticales donde se representa su tiempo de vida y horizontales representando el envio de mensajes a otros objetos.
Un diagrama de colaboración muestra el mismo tipo de interacción que el anterior solo que permite distribuirlo todo de una forma más libre, indicando el orden de los mensajes mediante una numeración.
Un diagrama de actividad ó flujo representa el flujo de ejecución y permite mostrar actividades que suceden de forma paralela (ó multithreading). Se usan para representar algorritmos más complejos.
El pseudo-código no es un diagrama, ni es un lenguaje específico, es una forma de representar el código que ha de realizar el programador de una forma representativa. Es una forma rápida y fácil para los arquitectos y analistas de expresar conceptos a los programadores. Es como cada uno quiera hacerlo, ya sea por facilidad para si mismo ó por facilidad para quien tiene que interprestarlo.
Resumen de la lección 2.3 del libro oficial de Microsoft para obtener el MCPD:WinApps.