1.2 - Exemplo de AADL

A seguir vamos listar um exemplo de uma especificação de uma arquitetura utilizando o AADL:


            data lander_state_data

            end lander_state_data;

            bus lan_bus_type

            end lan_bus_type;

            bus implementation lan_bus_type.ethernet

            properties

            Transmission_Time => 1 ms .. 5 ms;

            Allowed_Message_Size => 1 b .. 1 kb;

            end lan_bus_type.ethernet;

            system calculation_type

            features

            network

            : requires bus access lan_bus.calculation_to_datastore;

            request_ge t

            : out event port;

            response_get

            : in event data port lander_state_data;

            request_store

            : out event port lander_state_data;

            response_store : in event port;

            end calculation_type;

            system implementation calculation_type.calculation

            subcomponents

            the_calculation_processor : processor calculation_processor_type;

            the_calculation_process : process calculation_process_type.one_thread;

            connections

            bus access network -> the_calculation_processor.network;

            event data port response_get -> the_calculation_process.response_get;

            event port the_calculation_process.request_get -> request_get;

            event data port response_store -> the_calculation_process.response_store;

            properties

            Actual_Processor_Binding => reference

            the_calculation_processor applies to the_calculation_process;

            end calculation_type.calculation;

            processor calculation_processor_type

            features

            network : requires bus access lan_bus.calculation_to_datastore;

            end calculation_processor_type;

            process calculation_process_type

            features

            request_get

            : out event port;

            response_get : in event data port lander_state_data;

            request_store : out event data port lander_state_data;

            response_store : in event port;

            end calculation_process_type;

            thread calculation_thread_type

            features

            request_get

            : out event port;

            response_get : in event data port lander_state_data;

            request_store : out event data port lander_state_data;

            response_store : in event port;

            properties

            Dispatch_Protocol => periodic;

            end calculation_thread_type;

            process implementation calculation_process_type.one_thread

            subcomponents

            calculation_thread : thread client_thread_type;

            connections

            event data port response_get -> calculation_thread.response_get;

            event port calculation_thread.request_get -> request_get;

            event port response_store -> calculation_thread.response_store;

            event data port request_store -> request_store;

            properties

            Dispatch_Protocol => Periodic;

            Period => 20 ms;

            end calculation_process_type.one_thread;
            

A primeira coisa a notar sobre este modelo é o nível de detalhe com o qual a arquitetura é descrita. Um componente (calculation_type.calculation) é executado em um processador físico (the_calculation_processor), que executa um processo (calculation process type.one thread), que por sua vez contém um único segmento de controle (thread de cálculo), todos os quais podem fazer dois tipos de solicitação-resposta através de portas (request get/response get, request store/response store) sobre um barramento Ethernet (lan bus type.ethernet). Cada um destes diferentes níveis de modelagem está conectado através de composição, mapeamento de portas, e assim por diante. Este nível de detalhe enfatiza a importância de ferramentas, como editores gráficos, para modelar essas informações em uma forma mais compreensível.

A segunda coisa a notar sobre esta especificação é o uso de propriedades para definir as características específicas de alguns dos elementos (por exemplo, o processo de cálculo é executado periodicamente, a cada 20ms). Em uma especificação completa do sistema, essas propriedades seriam ainda mais detalhadas e elaboradas, e poderiam ser usadas por ferramentas para responder a questões sobre a disponibilidade e tempo que são críticos em um contexto em tempo real.

Copyright © 2016 AIEC.