Um modelo de análise foca nos requisitos funcionais e não funcionais, além de considerar aspectos das linguagens de programação que serão usadas na implementação. O modelo é organizado em subsistemas, que interagem via métodos especificados em interfaces.