Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DE PELOTAS Centro de Desenvolvimento Tecnológico Estudo das Linguagens para Modelagem de Sistemas E M i l e n a R o t a S e n a UNIVERSIDADE FEDERAL DE PELOTAS CDTec Centro de Desenvolvimento Tecnológico Trabalho Acadêmico Titulo Estudo das Linguagens para Modelagem de Sistemas E M i l e n a R o t a S e n a M a r q u e s Pelotas, 2011 UNIVERSIDADE FEDERAL DE PELOTAS Centro de Desenvolvimento Tecnológico Estudo das Linguagens para Modelagem de Sistemas Embarcados M i l e n a R o t a S e n a 1 Banca examinadora: ................................................................................................. Prof. Dr. Lisane Brisolara de Brisolara (Orientador) ................................................................................................ ................................................................................................ 2 RESUMO MARQUES, Milena R. S. Estudo das Linguagens para Modelagem de Sistemas Embarcados. 2012. 42f. Trabalho acadêmico (Mestrado) - Mestrado em Ciência da Computação. Universidade Federal de Pelotas, Pelotas. Sistemas Embarcados são sistemas cujo projeto envolve várias fases e alta complexidade, pois inclui hardware e software. Para lidar com esses desafios, no projeto de sistemas embarcados, a UML é usada na modelagem de sistemas. A linguagem oferece um alto poder de abstração, além das vantagens da construção de modelos visuais, através dos diversos diagramas disponíveis. Porém, seu uso é limitado em sistemas embarcados, o que motivou a definição de extensões da linguagem para este domínio específico. O objetivo deste trabalho é apresentar conceitos básicos do domínio de sistemas embarcados, logo após apresentar um estudo de dois perfis da UML que oferecem suporte à modelagem de sistemas embarcados, o SysML e o MARTE. A combinação desses perfis é avaliada neste trabalho para obter-se uma modelagem de alto nível adequada, que inclui a modelagem detalhada de requisitos funcionais e não funcionais, bem como a modelagem completa de requisitos temporais. Palavras-chave: Sistemas Embarcados, UML, SysML, MARTE. 3 ABSTRACT MARQUES, Milena R. S. Estudo das Linguagens para Modelagem de Sistemas Embarcados. 2012. 42f. Trabalho acadêmico (Mestrado) - Mestrado em Ciência da Computação. Universidade Federal de Pelotas, Pelotas. Embedded systems are systems which project involves several phases and high complexity because it includes hardware and software. To deal with these challenges, the design of embedded systems, UML is used in modeling systems. The language provides a high power of abstraction and the benefits of building visual models, through the various diagrams available. However, its use is restricted in embedded systems, which motivated the definition of language extensions to this specific area. The objective of this paper is to present basic concepts of embedded systems domain, after presenting a study of two UML profiles that support the modeling of embedded systems, the SysML and MARTE The combination of these profiles is evaluated in this study to obtain a high level appropriate modeling, including detailed modeling of non-functional and functional requirements, as well as complete modeling of timing requirements. Keywords: Embedded Systems, UML, SysML, MARTE 4 LISTA DE FIGURAS Figura 1 – Níveis de abstração para o processo do projeto de sistemas embarcados ........................................................................................................................... 12 Figura 2 – Sistema de Supervisão e Controle de tempo real. ................................... 18 Figura 3 – Diagramas da UML 2.0 ............................................................................ 20 Figura 4 – Sobreposição entre UML2.0 e SysML ...................................................... 24 Figura 5 – Diagramas da linguagem SysML.............................................................. 25 Figura 6 – Diagrama de requisitos. ........................................................................... 28 Figura 7 – Diagramas de blocos representando as restrições do sistema. ............... 32 Figura 8 – Pacote RTEM ........................................................................................... 36 5 LISTA DE TABELAS Tabela 1 – Diagrama de Requisitos. ......................................................................... 29 Tabela 2 – Categoria de estereótipos genéricos para <<requirement>>. ................. 29 6 LISTA DE ABREVIATURAS E SIGLAS CCSL Clock Constraint Specification Language FPGA Field-programmable gate array GQAM Generic Quantitative Analysis Modeling HCFSM Máquina de Estados Finita Hierárquica e Concorrente. MARTE Modeling and Analysis of Real-time and Embedded System MFS Máquina de Estados Finita NFPs Requisitos não funcionais OMG Object Management Group RrUnit Real-time unit RTEM Modelo de Design Marte SE RFP System Engineering Request for Proposal SoC System on Chip SO Sistema Operacional SPT Profile for Schedulability, Performance and Time Specification SRT Soft Real Time Systems STR Sistema de Tempo Real SysML Systems Modeling Language UML Unified Modeling Language 7 SUMÁRIO 1 INTRODUÇÃO .............................................................................................. 8 1.1 Motivação .................................................................................................... 9 1.2 Objetivos ...................................................................................................... 9 1.3 Organização do Trabalho ........................................................................... 9 2 SISTEMAS EMBARCADOS ....................................................................... 11 2.1 Introdução ................................................................................................. 11 2.2 Sistemas de Tempo Real .......................................................................... 14 2.3 Sistemas Orientados a Eventos............................................................... 17 2.4 Sistemas de Supervisão e Controle ........................................................ 17 2.5 Sistema de Controle ................................................................................. 18 3 LINGUAGENS PARA MODELAGEM DE SISTEMAS EMBARCADOS .... 20 3.1 UML ............................................................................................................ 20 3.1.1 Uso da UML na modelagem de Sistemas Embarcados ........................ 22 3.2 SysML ........................................................................................................ 23 3.2.1 Diagrama de Requisitos ........................................................................... 27 3.2.2 Diagrama Paramétrico .............................................................................. 31 3.3 MARTE ....................................................................................................... 33 4 TRABALHOS RELACIONADOS................................................................ 37 5 CONCLUSÕES ...........................................................................................39 REFERÊNCIAS ......................................................................................................... 40 8 1 INTRODUÇÃO Devido ao avanço tecnológico grande parte das tarefas executadas por seres humanos são auxiliadas por computadores. Nesse pressuposto, Sistemas computacionais embarcados estão presentes em diversas atividades, por exemplo, uso de mp3, telefone celular, entre outros. Sistemas embarcados são sistemas dedicados que possuem uma funcionalidade restrita para atender uma tarefa específica em sistemas maiores nos quais estão inseridos (MARWWEDEL, 2006). Segundo Brisolara et. al (2009) estes sistemas são naturalmente heterogêneos, pois são constituídos de componentes de hardware e software. O projeto de desenvolvimento de software embarcado é distinto do desenvolvimento de software de propósito geral. Tais sistemas possuem requisitos relevantes como: consumo de potência e energia, desempenho, tamanho, peso, memória, restrições de tempo, custo de projeto, entre outras. Um software é dito embarcado quando é projetado para executar em um sistema embarcado. Todos estes aspectos, aliados à sofisticação crescente dos produtos e o curto período para lançamento dos mesmos, aumentam a complexidade envolvida no projeto. Para lidar com projetos complexos, linguagens de alto nível de abstração têm sido utilizadas. Dentre elas, destaca-se a linguagem UML (Unified Modeling Language) considerada padrão para modelagem de software. UML é uma linguagem genérica que pode ser usada para modelar diferente tipos de sistemas. No entanto, a generalidade faz com que a UML não suporte a modelagem de alguns aspectos específicos em um determinado domínio de aplicação, motivando a definição de linguagens de domínio específico. Para atender esta demanda, a UML oferece mecanismos de extensão através da criação de perfis específicos para um dado domínio de aplicação. No domínio de sistemas embarcados, o suporte à descrição de comportamentos heterogêneos (hardware/software e diferentes modelos de computação) e a especificação de requisitos não-funcionais são exemplos de necessidades específicas do domínio. Dentre os perfis propostos pela OMG (Object Management Group) (OMG, 2011a), com enfoque no domínio de embarcados, destacam-se o SysML (Systems Modeling Language) (OMG, 2011 a) e o MARTE (Modeling and Analisys of Real-time and Embedded System) (OMG, 2011b). O SysML suporta a especificação, análise, projeto e verificação de sistemas 9 complexos, enquanto o MARTE enfoca a modelagem e análise de sistemas embarcados e de tempo real. O objetivo deste trabalho é realizar um estudo destas extensões com o intuito de analisá-las quanto aos recursos suportados para a modelagem de sistemas embarcados, bem como as limitações apresentadas. 1.1 Motivação As linguagens de modelagem de alto nível ajudam a modelar sistemas complexos, bem como, seus requisitos funcionais e não funcionais. Sistemas embarcados são complexos e se diferem dos sistemas tradicionais principalmente por seus requisitos não funcionais, tais como: consumo energético, potência dissipada, além dos aspectos temporais exigidos em várias aplicações, etc. A UML não possui suporte para representar tais requisitos. A motivação deste trabalho é estudar linguagens de alto nível de abstração para modelagem de Sistemas Embarcados. 1.2 Objetivos O Objetivo é estudar notações para a modelagem de Sistemas Embarcados em alto nível de abstração. As notações escolhidas foram SysML e MARTE, pois são perfis da UML 2.0 definidos e padronizados pela OMG. Sendo assim, neste trabalho serão avaliados estes perfis. 1.3 Organização do Trabalho Este trabalho divide-se em cinco capítulos, de forma a explicar os principais conceitos envolvidos na modelagem de Sistemas Embarcados. No segundo capítulo são introduzidos conceitos básicos do domínio de sistemas embarcados, focando em sistemas de tempo real, sistemas orientados a eventos, sistemas de supervisão e controle e sistemas de controle. 10 Já no terceiro capítulo são apresentados os trabalhos relacionados com este estudo. Enquanto que no quarto capítulo serão apresentados conceitos de linguagem de modelagem de alto nível de abstração. Para modelagem de sistemas de propósito geral são apresentados conceitos de UML, logo após são apresentados conceitos de SysML e MARTE, para representação de Sistemas Embarcados. Após, no quinto capítulo, são apresentadas as conclusões deste estudo. 11 2 SISTEMAS EMBARCADOS Este capítulo tem por objetivo introduzir a área de aplicação da ciência da computação denominada “Sistemas Embarcados”, mostrando seus principais conceitos e tipos de sistemas desse domínio. 2.1 Introdução Sistemas embarcados são sistemas dedicados que possuem uma funcionalidade restrita para atender uma tarefa específica em sistemas maiores nos quais estão inseridos (MARWEDEL, 2006). Sistemas embarcados são heterogêneos por envolverem software e hardware. As aplicações embarcadas possuem características que os diferem dos demais sistemas. Características como: sistemas dedicados, sistemas reativos, confiabilidade, restrições de tempo real, tamanho do código, desempenho, baixo consumo de potência e energia, físicas (tamanho e peso), devem ser consideradas no desenvolvimento de um sistema embarcado. As aplicações de computação embarcada estão incorporadas em muitas áreas tais como: eletrônica automotiva, eletrônica de aeronaves, sistemas de telecomunicação, eletrônica de consumo, equipamentos médicos, aplicações militares entre outros. Para lidar com essas restrições na construção de um sistema embarcado são utilizadas as linguagens de modelagem de alto nível de abstração. Sendo assim, o projeto de um sistema embarcado parte de uma visão abstrata e ao longo do desenvolvimento são feitos refinamentos até o produto finalizado. O projeto de um sistema embarcado envolve etapas com diferentes níveis de abstração, conforme o fluxo ilustrado na Fig. 1. De acordo com este fluxo, as etapas de projeto compreendem: • Análise de Requisitos: definição dos requisitos do sistema. • Especificação: detalhamento das funcionalidades do sistema. • Arquitetura do Sistema: detalhamento interno do sistema, bem como os componentes que compõem o sistema. • Projeto de Componentes: projetar os componentes do sistema. 12 • Integração do Sistema: integração dos componentes desenvolvidos para o sistema e a validação dos mesmos. Figura 1 – Níveis de abstração para o processo do projeto de sistemas embarcados Fonte: (Wolf; 2008, p.11) Segundo Wolf (2008) a abordagem para desenvolvimento de sistemas embarcados pode seguir o modelo top-down, em que o projeto se inicia com uma visão mais abstrata e através de refinamentos sucessivos obtêm-se o sistema propriamente dito. Já na abordagem bottom-up, o projeto é iniciado com uma descrição em nível de componentes e a partir destes componentes constrói-se o sistema completo. Em projetos reais são utilizadas as duas abordagens. A abordagem bottom-up permite tomar decisões quanto ao custo dos componentes, por exemplo, para a decisão de qual será a melhor arquitetura para o sistema. Sendo um misto das duas abordagens as decisões críticas podem ser tomadas a tempo evitando o retrabalho. Em cada nível de abstração durante as etapas do projeto de um sistema embarcado, é necessário: Projeto Top- Down Projeto Bottom-up Requisitos Especificação Arquitetura Projeto de Componentes Integração do Sistema 13 • Analisar o projeto para determinar as característicasdo estado atual do projeto. • Refinar o projeto adicionando detalhes. • Verificar o projeto para avaliar se os objetivos dos sistemas, tais como custo, velocidade serão alcançados. A etapa inicial do processo de desenvolvimento de um sistema embarcado é capturar as informações que serão utilizadas para criação da arquitetura e dos componentes. As informações dos requisitos são obtidas a partir do conhecimento do cliente e refinadas para uma especificação no qual contem informações suficientes para o inicio do projeto da arquitetura do sistema. Os requisitos em um projeto de sistema embarcados podem ser funcionais ou não funcionais. Requisitos funcionais descrevem as funcionalidades que se espera que um sistema disponibilize, de forma completa e consistente. Já os requisitos não funcionais mapeiam os aspectos qualitativos de um software, como: desempenho, portabilidade, consumo energético, consumo de potência, características físicas (tamanho e peso). Até pouco tempo a documentação dos requisitos era feita de forma textual com formulários pré-definido. Atualmente, é possível documentar os requisitos através do diagrama de requisitos. Este diagrama esta disponível no perfil SysML da UML 2.0. Podem-se destacar duas vantagens na utilização deste diagrama. A primeira é a minimização da ambigüidade das informações dos requisitos, já que este diagrama é representado de forma gráfica. A segunda é o suporte para a representação de requisitos funcionais e não funcionais. A próxima etapa no processo de desenvolvimento de um sistema embarcado é a especificação. Nesta etapa os requisitos são detalhados independentes de arquitetura. As especificações podem conter requisitos funcionais e não funcionais. Esta etapa, quando cumprida reduz erros no desenvolvimento do projeto. Não deve ser ambígua, deve possuir informações suficientes para o desenvolvedor do sistema. Também pode ser documentada com o diagrama de requisito, pois este diagrama pode representar um conjunto de requisitos (funcionais ou não funcionais) que estão contidos em uma especificação (FRIEDENTHAL, MOORE, STEINER, 2008). Na fase de arquitetura do projeto são implementadas as funcionalidades especificadas anteriormente (WOLF, 2008). Com diagrama de blocos é possível modelar a arquitetura do sistema, representando os componentes de hardware 14 (CPU, memória, entre outros) e os componentes de software. A descrição arquitetural do projeto deve satisfazer requisitos funcionais e não funcionais. Nesta fase diagrama de colaboração da UML pode ser utilizado para melhorar o entendimento do sistema. A construção dos componentes do projeto deve estar de acordo com a arquitetura e especificação. Os componentes utilizados em um projeto podem ser construídos para o sistema específicos, reutilizados de outro sistema, ou a utilização de componente padrão, como o caso de módulos de software. Segundo Wolf (2008) a fase de integração do sistema é um desafio no projeto de sistemas embarcados. Nesta fase, os componentes que foram construídos são unificados e devem funcionar corretamente. Durante esta fase muitos erros são detectados. Para detectar rapidamente os erros uma alternativa é fazer um plano de integração de todos os componentes do sistema, também é uma boa prática executar testes exaustivos nas funcionalidades do sistema o mais breve possível. As fases do desenvolvimento de um projeto de software embarcado podem ser capturadas utilizando um formalismo para projetos desses sistemas. A UML é uma linguagem formal com alto nível de abstração que pode ser utilizada para modelar cada fase do projeto de sistemas embarcados (WOLF, 2008). Com a UML 2.0 é possível ter várias visões estruturais e comportamentais do sistema. Facilitando a tomada de decisão durante o desenvolvimento do projeto, e a visualização do sistema através dos diversos diagramas disponíveis. No domínio de sistemas embarcados a UML 2.0 possui o perfil MARTE que suporta a modelagem de tempo real de requisitos funcionais e não funcionais, para enriquecer o desenvolvimento do projeto desses sistemas também pode ser utilizado o perfil SysML que também suportam modelagem de requisitos funcionais, não funcionais e rastreabilidade. 2.2 Sistemas de Tempo Real A utilização de sistemas computacionais vem crescendo na sociedade, com isso, aplicações de tempo real tornam-se freqüentes. Segundo Farines et. al (2000) as aplicações de tempo real variam em relação à complexidade e às necessidades de garantia no atendimento dos requisitos temporais. Alguns exemplos de sistemas 15 simples são os controladores inteligentes embarcados em produtos de utilidade domésticas, como as lavadoras de roupa e microondas. Já entre os sistemas mais complexos estão os sistemas militares, aviônicos, médicos. Um Sistema de Tempo Real (STR) é um sistema computacional que deve reagir a estímulos oriundos do seu ambiente em prazos específicos. Grande parte das aplicações de tempo real comporta-se como sistemas reativos com restrições temporais. Sistemas reativos reagem a ações do ambiente externo. O atendimento dos prazos dos requisitos temporais resulta no comportamento do sistema. Um sistema de tempo real deve entregar o resultado correto dentro do prazo específico, sob pena de ocorrer uma falha temporal. O comportamento correto de um sistema de tempo real, não depende apenas da integridade dos resultados obtidos (correção lógica ou correctness), mas também dos valores de tempo em que são produzidos (correção temporal ou timeless). Uma reação que ocorra depois do prazo especificado pode ser inútil ou representar uma ameaça dependendo do tipo de aplicação. Um dos conceitos mais importantes em sistemas de tempo real é a previsibilidade. Segundo Farines et. al (2000) um sistema é dito ser previsível no domínio lógico e no domínio temporal quando, independente de variações ocorrendo no nível de hardware, da carga e de falhas, o comportamento do sistema pode ser antecipado, antes de sua execução. Os sistemas de tempo real podem ser divididos em: Sistemas Não Críticos de Tempo Real (ou SRTs brandos, Soft Real Time Systems), onde o não atendimento de uma tarefa no prazo especificado não representa uma falha no comportamento do sistema, e Sistemas Críticos de Tempo Real (ou SRTs duros, Hard Real Time Systems) onde o não atendimento de uma tarefa no prazo especificado pode ocasionar uma catástrofe (ex. sistemas de controle de vôo). Conceitos de escalonamento em sistemas onde o tempo e a concorrência são tratados explicitamente se tornam essenciais para previsibilidade do comportamento de sistemas de tempo real. Uma tarefa é uma abstração básica que faz parte do problema de escalonamento. Tarefas ou processos são as unidades de processamento seqüenciais que concorrem com um ou mais recursos computacionais de um sistema. Uma aplicação simples de tempo real possui várias tarefas que devem apresentar correção lógica (correctness) e temporal (timeless). 16 Também é parte de um problema de escalonamento a definição do modelo de tarefas, que são as restrições temporais, as relações de precedência e de exclusão normalmente impostas sobre as tarefas. Todas as tarefas de tempo real estão sujeita a prazos: deadlines. Ou seja, uma tarefa deve ser concluída antes do seu prazo. As tarefas concluídas após seu prazo caracterizam dois tipos de tarefas de tempo real: • Tarefas críticas (hard): Uma tarefa é dita crítica se atendida após seu prazo pode causar falhas catastróficas ao sistema. • Tarefas brandas ou não críticas (soft): Uma tarefa é dita branda se atendida após seu prazo às falhas temporais são benignas, ou seja, a conseqüência do desvio do comportamento normal do sistema não representa um custo significativo. Os modelosde tarefas possuem dois tipos de tarefas segundo suas freqüências de ativação: • Tarefas Periódicas: a ativação da tarefa é realizada e a mesma ocorre infinitas vezes no período determinado. São tarefas que ocorrem com regularidade. • Tarefas Aperiódicas ou Assíncronas: a ativação do processamento da tarefa responde a eventos internos ou externos. A ativação deste tipo de tarefa é aleatória. As tarefas periódicas pela regularidade e, portanto pela previsibilidade, usualmente são associadas a "deadlines hard", ou seja, são tarefas críticas. As tarefas aperiódicas pela falta de previsibilidade em suas ativações, normalmente, tem "deadlines soft" associados a suas execuções, compondo, portanto as tarefas brandas de um sistema de tempo real. Tarefas esporádicas que correspondem a um subconjunto das tarefas aperiódicas apresentam como característica central a restrição de um intervalo mínimo conhecido entre duas ativações consecutivas e por isso, podem ter atributos de tarefas críticas. As tarefas esporádicas, portanto são também associadas a "deadlines hard" (FARINES, FRAGA, e OLIVEIRA, 2000). Quanto às características temporais as tarefas podem ter as seguintes restrições: • Tempo de computação: é o tempo necessário a execução completa de uma tarefa. 17 • Tempo de início: corresponde ao instante de inicio da ativação do processamento de uma tarefa • Tempo de término: o instante de tempo em que se completa a execução da tarefa. • Tempo de chegada: é o instante em que o escalonador toma conhecimento da ativação da tarefa. • Tempo de liberação: é o instante em que a tarefa pode ser executada. Através das políticas de escalonamento são definidas as regras para a ordenação das tarefas de tempo real. A utilização dessas políticas pelos escalonadores produz escalas que se forem realizáveis (feasible), garantem o cumprimento das restrições temporais impostas às tarefas de tempo real. Os algoritmos de escalonamento de tempo real podem ser classificados em preemptivos (de acordo com a tarefa a ser executada o algoritmo considera a prioridade de cada tarefa que esta na fila para execução, interrompendo a execução da tarefa atual para executar outra tarefa mais prioritária) e não preemptivos (mesmo existindo na fila uma tarefa mais prioritária que a que esta sendo executa este algoritmo não interrompe sua execução para executar outra de maior prioridade) (FARINES, FRAGA e OLIVEIRA, 2000). Escalonabilidade é um requisito não funcional do sistema que determina se este atenderá os requisitos temporais de todas as tarefas, mesmo no pior caso. O perfil MARTE, disponível na UML 2.0, é apropriado para modelar as características temporais em projetos de desenvolvimento de sistemas embarcados, pois suporta escalonamento, compartilhamento e análise de requisitos temporais. 2.3 Sistemas Orientados a Eventos Sistemas embarcados são essencialmente orientados a eventos, ou seja, esperam a ocorrência de um evento interno ou externo para executar o processamento apropriado. Sistemas orientados a eventos são também chamados de sistemas reativos. Estes sistemas são representados através dos seguintes modelos computacionais: tempo contínuo de evento discreto e tempo discreto. 2.4 Sistemas de Supervisão e Controle 18 Sistemas de supervisão e controle são usualmente dedicados ao gerenciamento da execução de um processo ou de um objeto físico. Neste tipo de sistema é possível distinguir componentes, tais como: operador, sistema computacional de controle e o sistema a controlar. O sistema a controlar e o operador são considerados como ambiente do sistema computacional. A interação entre as partes ocorre através de interfaces de operador (FARINES, FRAGA e OLIVEIRA, 2000). A Fig. 3 mostra esses componentes em conjunto com elementos clássicos de um diagrama de controle. Figura 2 – Sistema de Supervisão e Controle de tempo real. Fonte: (Romero; 2010, p12). 2.5 Sistema de Controle Sistemas de controle são caracterizados por modelos computacionais baseados a eventos. O modelo computacional Síncrono/Reativo é utilizado para representar este tipo de sistema. Um modelo é síncrono reativo quando as saídas são sincronizadas com as entradas. Este modelo é caracterizado por possuir as seguintes abstrações: 19 • Forte sincronismo: partes do sistema respondem instantaneamente para as entradas. • Reatividade: sistema reage a ações externas • Memória limitada: sistema possui computação com memória limitada. Outro modelo computacional utilizado para representar sistemas de controle são as máquinas de estados finitas (MFS). Porém, as MFS clássicas não modelam concorrência. Para contemplar este aspecto, há extensões deste modelo como a Máquina de estados finita hierárquica e concorrente (HCFSM) capaz de representar hierarquia e concorrência. Segundo Wolf (2007) uma maneira de especificar o comportamento de uma operação é através de maquinas de estados. A UML utiliza o diagrama de máquina de estados para representar este tipo de modelo computacional. Através do diagrama de máquina de estados é possível visualizar a mudança entre um estado e outro pela ocorrência de um evento, com alto nível de abstração. Um evento é um tipo de ação. O evento pode ser uma ação externa do sistema, por exemplo, pressionar um botão, e pode ser uma ação interna do sistema como uma rotina, que quando finalizada envia o resultado para outra rotina. Os estados da máquina de estados representam diferentes operações. A divisão de operações complexas em diversos estados ajuda a documentar passo a passo os requisitos, bem como as sub-rotinas que podem ser utilizadas para a estrutura do código (Wolf, 2008). Com o diagrama de seqüência também é possível representar estes modelos computacionais. 20 3 LINGUAGENS PARA MODELAGEM DE SISTEMAS EMBARCADOS O presente capítulo apresenta conceitos básicos da linguagem de modelagem UML, utilizada para modelagem de software de propósito geral, e que atraiu o interesse da comunidade de sistemas embarcados. Além da UML, este capítulo revisa a linguagem SysML e MARTE, duas extensões da UML propostas para especificação de requisitos e modelagem de sistemas embarcados de tempo real, respectivamente. 3.1 UML A UML é uma linguagem visual para especificação, construção e documentação de artefatos do sistema (OMG, 2009 a). UML é uma linguagem padrão para modelagem de software de propósito geral. Esta linguagem proporciona ao usuário visões de alto nível de abstração do sistema. Tais visões são possíveis através do conjunto de diagramas disponíveis. Conforme a Fig. 3, a UML 2.0 suporta treze diagramas que estão divididos em duas categorias: Diagramas Estruturais e Diagramas Comportamentais. Figura 3 – Diagramas da UML 2.0 21 Segundo Fowler (2004), a visão estrutural do sistema se dá a partir dos diagramas: • Diagrama de Classe: é um dos artefatos da UML para representar o modelo de negócio, onde os principias conceitos da aplicação são representados por classes. Este diagrama descreve os tipos de objetos presentes no sistema e os vários tipos de relacionamentos estáticos entre eles. Também representa as propriedades e as operações de uma classe e as restrições que se aplicam à maneira como os objetos estão conectados. • Diagrama de Componentes: representa os vários componentes de software de um sistema, além das dependências entre eles. • Diagrama de Objetos: representa os objetos do sistema em um determinado ponto no tempo. • Diagrama de Estrutura: permite decompor hierarquicamente uma classe em uma estrutura interna. Possibilitaque um objeto complexo seja dividido em partes. • Diagrama de Instalação: representa o layout físico de um sistema, revelando quais partes do software são executadas em quais partes do hardware. • Diagrama de Pacotes: representa os pacotes e suas dependências. Este diagrama é útil em sistemas de grande porte, para obter uma visão das dependências entre os principais elementos de um sistema. Já a visão comportamental do sistema, segundo Fowler (2004), é representada a partir dos diagramas: • Diagrama de Atividade: é uma técnica para descrever a lógica de procedimento, processo de negócio e o fluxo de trabalho. Esse diagrama suporta o comportamento paralelo. • Diagrama de Casos de Uso: é uma técnica utilizada para capturar os requisitos funcionais de um sistema. Possibilitam descrever as interações típicas entre os usuários de um sistema e o próprio sistema, fornecendo uma narrativa sobre como o sistema é utilizado. • Diagrama de Máquina de Estados: representa o comportamento de um objeto por intermédio de vários casos de uso. 22 • Diagrama de Interação: é uma mistura de diagrama de atividade e diagrama de seqüencia. Esse diagrama pode ser considerado como diagrama de atividade nos quais as atividades são substituídas por pequenos diagramas de seqüencia ou como um diagrama de seqüencia fragmentado, com a notação de digrama de atividades usada para representar o fluxo de controle. • Diagrama de Seqüencia: captura a seqüencia de processos. Este diagrama é usado para representar os objetos e mensagens que são passadas entre esses objetos dentro de um caso de uso. • Diagrama de Temporização: é outra forma de diagrama de interação. Esse diagrama é utilizado para mostrar restrições de tempo entre mudanças de estado em diferentes objetos. • Diagrama de Comunicação mostra de maneira semelhante ao diagrama de seqüência, a colaboração dinâmica entre os objetos. Se a ênfase do diagrama for o decorrer do tempo, a melhor escolha é o diagrama de seqüência, mas se a ênfase for o contexto do sistema, vale priorizar o diagrama de comunicação. UML é uma linguagem genérica que pode ser usadas para modelar diferentes tipos de sistemas. No entanto, a generalidade faz com que a UML não suporte a modelagem de alguns aspectos específicos em um determinado domínio de aplicação, motivando a definição de linguagens de domínio específico. Para atender esta demanda, a UML oferece mecanismos de extensão através da criação de perfis específicos para um dado domínio de aplicação. 3.1.1 Uso da UML na modelagem de Sistemas Embarcados O projeto de desenvolvimento de software embarcado é distinto do desenvolvimento de software de propósito geral. Sistemas embarcados possuem requisitos relevantes como: consumo de potência e energia, desempenho, tamanho, peso, memória, restrições de tempo, custo de projeto, entre outras. Para lidar com projetos complexos, linguagens de alto nível de abstração têm sido utilizadas, pois tais linguagens abstraem detalhes desnecessários tornando fácil tanto a verificação como a validação, facilitando a reusabilidade e a evolução desses 23 sistemas complexos. Uma linguagem que se destaca é a UML possivelmente pelos perfis especializados em um domínio específico. Um perfil é um mecanismo padronizado pela OMG para criação de linguagens de modelagem de domínio específico, eles refinam os conceitos existentes de uma linguagem padrão, como a UML. No domínio de sistemas embarcados, o suporte à descrição de comportamentos heterogêneos (hardware/software e diferentes modelos de computação) e a especificação de requisitos não-funcionais são exemplos de necessidades específicas do domínio. Os perfis aplicados a estas características são SysML e MARTE. SysML e MARTE consideram características no domínio de sistemas embarcados em diferentes níveis de abstração, arquitetural e especialmente para fins específicos ou áreas de aplicação. SysML possibilita a rastreabilidade de requisitos, estrutura e comportamento do sistema de blocos, bem como formalismo paramétrico para especificar equações, enquanto MARTE trata de tempo real e aspectos de recursos limitados, inclui uma taxonomia detalhada de hardware e padrões de software juntamente com os requisitos não funcionais para permitir análise quantitativa (desempenho, consumo energético). 3.2 SysML SysML é uma linguagem de modelagem gráfica de propósito geral que suporta especificação, análise, projeto, verificação e validação de sistemas complexos. Estes sistemas podem incluir hardware, software, informação, processos, pessoas e infra-estrutura (OMG, 2011a). Como indicado na Fig. 4, SysML reutiliza um subconjunto da UML e adiciona extensões para atender aos requisitos da UML SE RFP (System Engineering Request for Proposal) (OMG, 2011a). O subconjunto da UML reutilizado pela SysML é chamado de UML4SysML. Alguns diagramas da UML foram alterados para SysML e outros não sofreram alterações, como o diagrama de casos de uso, diagrama de máquina de estados. 24 Figura 4 – Sobreposição entre UML2.0 e SysML Fonte: (OMGa; 2010, pg.31) SysML não é metodologia ou ferramenta para desenvolvimento de software. SysML é uma linguagem gráfica que disponibiliza semântica (significado) e notação (representação do significado) para modelagem de software. O diagrama apresentado na Fig. 5 ilustra as modificações ocorridas nos diagramas reutilizados da UML 2.0, bem como os novos diagramas da SysML. Os diagramas são classificados em três classes: comportamentais, estruturais e de requisitos. Diagramas SysML Diagramas Comportamentais Diagrama de Atividade Diagramas Estruturas Diagrama de Sequenci Diagrama de Máquina Diagrama de Caso de Uso Diagrama de Blocos Diagrama de Bloco Interno Diagrama de Pacote Diagrama Paramétrico Diagrama de Requisitos 25 Figura 5 – Diagramas da linguagem SysML Fonte: (OMGa; 2010, p.180) As construções estruturais definem os elementos estáticos e de estruturas utilizados em SysML. Diagramas que incluem essas construções são: o diagrama de pacotes, o diagrama de blocos, o diagrama de bloco interno e o diagrama paramétrico. As estruturas das construções são definidas através de: elementos de modelos (recapturados do núcleo de pacotes da UML 2.0 e incluem extensões para prover capacidades de fundamentação e gerenciamento de modelos); os de blocos (reusam e estendem a estrutura de classes da UML 2.0 para prover a capacidade funcional para descrever estrutura de qualquer elemento do sistema, como: hardware, software, dados, processos. Também é possível descrever as características de bloco, como: propriedades, operações, restrições, alocação, requisitos que o bloco satisfaz); portas e fluxos (provem a semântica para definir como blocos e partes interagem através de portas e como e quais itens fluem através delas); blocos de restrições (definem como os blocos são estendidos para serem usados sobre diagramas paramétricos que modelam a rede de restrições sobre as propriedades de um sistema, para dar suporte a análise de desempenho e outros). As partes dinâmicas utilizadas nos diagramas de comportamento da SysML são especificadas pelas construções comportamentais, através dos diagramas: o diagrama de atividades (utilizado para descrever o fluxo de controle e o fluxo de entradas e saídas entre as ações), o diagrama de seqüência, o diagrama de máquina de estados e o diagrama de casos de uso. As construções comportamentais, utilizadas nos diagramas, são separadas em: atividades (definidas na UML 2.0 com algumas extensões); interações (ondesão definidas as construções para o comportamento baseado em mensagens usado no diagrama de seqüência); máquinas de estados (usadas para descrever o comportamento de um sistema baseado em seus estados e suas transições); e casos de uso (que descreve o comportamento e a utilização de um sistema em termos da sua funcionalidade de alto nível). Sem alteração Alterados a partir da UML 2.0 Novos diagramas 26 Já as construções cruzadas (crosscutting) são aplicadas nas construções estruturais e comportamentais. Essas construções são definidas em: alocações (representam as relações que mapeiam um elemento do modelo a outro) Segundo Espinoza (2010) a SysML apresenta as seguintes contribuições: • Organização Arquitetural - Incluem conceitos de modelagem para organizar descrições da arquitetura de sistemas, definidas pelo padrão IEEE 1471. Dentre eles, os conceitos de View, viewpoint e rationale são os mais importantes. • Blocos e Fluxos - descrição e diagrama de blocos internos permitem a especificação de interações genéricas e fenômenos existentes em software. Isto inclui fluxos físicos como os líquidos, energéticos e elétricos. As dimensões e unidades de medida de tais fluxos físicos podem ser definidas explicitamente (ex. litros, watts) • Comportamentais - diagramas comportamentais são similares ao da UML (interação, máquina de estados, atividades e casos de uso). SysML refina o diagrama de atividade para a modelagem de modelos contínuos e probabilidades. • Requisitos – SysML dispõe de uma modelagem facilitada para os requisitos do sistema, bem como rastreabilidade quanto à evolução do sistema. Os requisitos podem ser representados no formato gráfico ou tabular. • Parâmetros – o diagrama paramétrico permite descrever em SysML, de maneira gráfica, relacionamentos analíticos e restrições, bem como equações matemáticas. A utilização de SysML no projeto de sistemas complexos apresenta benefícios como: • Abstração de detalhes; • Linguagens formais como SysML e UML reduzem ambigüidade e erros, pois fornecem notações precisas que minimizam os erros de interpretação. As alocações e requisitos disponibilizam mecanismos que garantem a consistência e complexidade do modelo. • Alinhamento entre hardware e software proporcionando a reusabilidade e agilidade no desenvolvimento de sistemas. 27 • O uso de modelos em um sistema facilita o entendimento da equipe que normalmente é composta por diferentes perfis e com o cliente. • SysML possibilita o rastreamento de requisitos, apoiando assim a gerencia de mudanças necessárias durante o desenvolvimento do projeto. 3.2.1 Diagrama de Requisitos Um requisito especifica uma funcionalidade ou condição que deve ser satisfeita pelo sistema, ou seja, uma função que um sistema deve executar ou uma condição de desempenho que um sistema deve alcançar. Conforme Friedenthal et. al (2008) o que a engenharia clássica busca é que o requisito tenha as seguintes características: não seja ambíguo, seja compreensivo, correto, conciso, tenha rastreabilidade e verificáveis. Os requisitos normalmente têm origem distinta. No nicho de embarcados, vale citar o exemplo do desenvolvimento de um aparelho celular, onde, normalmente a solicitação é feita pela equipe do departamento de marketing da empresa. Essa equipe fornece as características necessárias do produto para a equipe de desenvolvimento de software, sendo que, tais características devem superar as expectativas do público alvo, portanto, neste cenário são vários stakeholders fornecendo informações do produto. Para isso é necessário assegurar que os requisitos são consistentes (não contraditórios) e viáveis, e refletem adequadamente as necessidades dos envolvidos. O diagrama de requisitos permite representar os requisitos, que usualmente são expressos em linguagem texto, de forma gráfica. O diagrama também permite relacionar estes requisitos a outros elementos do modelo do sistema (tais como um caso de teste, ou um componente do software). Este diagrama representa as hierarquias e derivações existentes nos requisitos, que possibilitam associar um determinado requisito a outro modelo tornando visível o rastreamento dos requisitos. O diagrama de requisitos ilustrado na Fig. 6 representa um exemplo genérico de diagrama de requisitos para um sistema automotivo. Nesse exemplo, são apresentados diferentes relacionamentos entre os requisitos e notações alternativas, como: o bloco câmera deve satisfazer requisito chamado Sensor Decision, também 28 inclui três tipos de relacionamentos: satisfy, verify, deriveReqt, além de apresentar a hierarquia. Figura 6 – Diagrama de requisitos. Fonte: Friedenthal; Moore;Steiner; (2008),p.286) Em SysML as relações entre os requisitos e de requisitos para outros elementos da modelagem, de projeto, ou casos de teste são descritas usando um conjunto de estereótipos. As relações dos requisitos são representadas pelos estereótipos: containment (representa a hierarquia dos requisitos), derive (usado para representar que um requisito é derivado de outro requisito base), satisfy (modelo de elemento satisfaz o requisito), verify (representa o caso de teste que verifica o requisito), refine (representa o elemento do modelo que esclarece um requisito, tipicamente é um caso de uso ou um diagrama comportamental), trace (relaciona o requisito ao elemento do modelo que representa a origem do requisito) e copy (refere-se a uma cópia do seu requisito original). Esses relacionamentos podem ser utilizados para suportar a rastreabilidade com alto grau de granularidade. A Fig. 6 mostra alguns desses relacionamentos. O estereótipo Rationale é um modelo de elemento SysML para anotação que pode ser associado com qualquer requisito ou relacionamento entre requisitos. É uma notação SysML que destina-se a identificar um problema que precisa ser resolvido. O comentário feito a partir do Rationale pode referir-se a um documento externo ou outro elemento do modelo bem como a um diagrama paramétrico. 29 Conforme ilustrado na Fig. 6, os requisitos são apresentados de forma gráfica no diagrama de requisito. Neste diagrama, um requisito é representado por um retângulo com a palavra chave <<Requirements>> seguida pelo nome do requisito. As propriedades mínimas dos requisitos são: id (identificação), Text (texto que descreve as características do requisito). Conforme Friedenthal (2008), os requisitos podem conter propriedades adicionais como status da verificação, criticidade, risco e categoria de um requisito. Para status da verificação, um requisito pode estar assinalado como não verificado (not verified), verificado pela inspeção (verified by inspection), verificado pelo analista (verified by analysis), verificado pela demonstração (verified by demonstration) ou verificado pelo teste (verified by test). Quanto ao nível de criticidade ou risco, um requisito pode ser assinalado como de alto, médio ou baixo risco. Por fim, podemos categorizar os requisitos como funcionais (Functional), de desempenho (Performance) ou físicos (Phisycal). O Diagrama de Requisitos também pode ser representado de forma tabular, conforme a Tabela 1: Tabela 1 – Diagrama de Requisitos. id name text 1 Autonomia O sistema deve apresentar quantos km o automóvel pode percorrer com o combustível restante, conforme a velocidade do automóvel. 1.1. Velocidade O sistema deve apresentar a velocidade atual do automóvel. Em SysML é permitido criar categorias de requisitos definindo subclasses adicionais de estereótipos de requisitos. Um estereótipo permite adicionar restrições que limitem um tipo específico de modelo para que um determinado requisito seja satisfeito. Por exemplo, um requisitofuncional pode ser restrito de forma que só pode ser satisfeito por um elemento do modelo comportamental como: atividade ou máquina de estados. A Tab. 2 mostra as categorias de estereótipos genéricos para <<requiremet>>. Tabela 2 – Categoria de estereótipos genéricos para <<requirement>>. 30 Esterótipo Restrição Descrição <<extendrequirent>> N/A Uma mistura de estereótipo que contém atributos geralmente usados para os requisitos. (ex. Risk, verifyMethod) <<functionrequirement>> Deve ser satisfeito por uma operação ou comportamento. Requisitos que especificam uma operação ou comportamento que o sistema ou parte do sistema devem desempenhar. <<interfacerequirement>> Deve ser satisfeito por uma porta, conector, fluxo, e/ou propriedade restritiva. Requisito que especificam as portas para conectar sistemas e partes do sistema e que, opcionalmente, pode incluir o item que flui através do conector e / ou restrições da interface. <<performancerequirement>> Deve ser satisfeito por uma propriedade de valor Requisito que quantitativamente mede o grau em que um sistema, ou uma parte do sistema, satisfaz uma condição ou capacidade necessária. <<physicalRequirement>> Deve ser satisfeito por um elemento estrutural Requisitos que especificam características físicas e/ou restrições físicas dos sistemas, ou de uma 31 parte do sistema. <<designConstraint>> Deve ser satisfeito por um bloco ou parte Requisito que representa uma restrição na implementação do sistema ou parte do sistema, tal como “o sistema deve utilizar o componente comercial off-the-shelf” . Diagrama de requisitos propicia a visualização gráfica dos requisitos do sistema, tornando fácil o entendimento dos mesmos. Este diagrama permite modelar requisitos, estrutura, comportamento e parâmetros para prover uma descrição robusta do sistema, seus componentes e ambientes. 3.2.2 Diagrama Paramétrico O diagrama paramétrico representa restrições nos valores de propriedade do sistema tais como desempenho, confiabilidade, propriedades maciças, e serve como meio para integrar os modelos das fases de especificação e projeto com modelos da fase de análise (LINHARES, 2006). Um diagrama paramétrico é tipicamente utilizado em sistemas com funcionalidades matemáticas por representar com precisão fórmulas matemática. Os modelos paramétricos capturam as propriedades restritivas do sistema, para serem analisadas por ferramentas de análise apropriadas. As restrições são apresentadas por equações, cujos parâmetros estão vinculados às propriedades do sistema (FRIEDENTHAL, MOORE, STEINER, 2008). Este diagrama é identificado pela palavra chave par. A SysML introduz bloco de restrições para suportar a construção de modelos paramétricos. Um bloco de restrição é um tipo especial usado para definir equações. Tal bloco é definido livre de contexto, permitindo a criação de uma biblioteca de restrições que pode ser facilmente reutilizada em vários projetos. 32 SysML inclui o conceito de restrições que podem corresponder a qualquer expressão matemática ou lógica, incluindo expressões com variáveis temporais e equações diferenciais. SysML não especifica uma linguagem de restrições, mas permite que a linguagem seja especificada como parte da definição das restrições (FRIEDENTHAL, MOORE e STEINER, 2008). Como mostra a Fig. 7 diferentes notações são usadas em SysML para representar as restrições das propriedades de blocos. O bloco 1, da Fig. 7 possui um compartimento explicito para restrições, neste caso, expressas em Java, enquanto que o bloco 2 possui a conexão com uma nota, que expressa a restrição usando a linguagem MATLAB, uma ferramenta especializada de análise (FRIEDENTHAL, MOORE e STEINER, 2008). Figura 7 – Diagramas de blocos representando as restrições do sistema. Fonte: (Friedenthal; Moore;Steiner; (2008),p.152) Um bloco de restrição define um conjunto de parâmetros relacionado uns aos outros pela expressão de restrição. Estes parâmetros podem ter tipos, unidades, dimensões e distribuições de probabilidade. Para facilitar tipos específicos de análise (de desempenho, propriedades físicas, etc.), blocos de restrição podem ser definidos nas bibliotecas modelo. No contexto de análise, outro conceito importante do diagrama paramétrico, é um bloco que fornece o contexto para o sistema ou componente sujeito a análise. O contexto de análise é composto pelos blocos de restrição que correspondem ao modelo de análise e referências do sistema analisado. Um diagrama paramétrico, do qual a estrutura representa o contexto de análise, é usado para vincular as propriedades relevantes do bloco e os parâmetros do modelo de análise. O contexto de análise pode ser passado para uma ferramenta de análise de engenharia para realizar a análise computacional, e os resultados analíticos podem ser fornecidos de 33 volta como propriedades do contexto de análise (FRIEDENTHAL, MOORE e STEINER, 2008). 3.3 MARTE A UML tem sido adotada como uma linguagem de modelagem de propósito geral. No entanto, a UML não possui suporte para modelar aspectos como: tempo, escalonamento ou desempenho. Sendo assim, a primeira alternativa para tratar essa deficiência foi a definição do perfil SPT (UML Profile for Schedulability, Performance and Time Specification) (ROMERO, 2010). Este perfil fornecia conceitos para análise de escalonabiliade, análise de desempenho, além de permitir a modelagem de aspectos temporais. Porém, no perfil SPT havia restrições quanto à modelagem temporal, pois se baseava em anotações no modelo. Sendo assim, a OMG definiu um novo perfil, que ficou conhecido como MARTE (OMG, 20011b). A contribuição do perfil MARTE esta no seu modelo de tempo, enriquecendo a UML com elementos de modelo explícitos para representar tais modelos (relógios, tipos de clocks, etc.) (PERALDI-FRATI e SOREL, 2008) MARTE é um perfil da UML dedicado à modelagem de Tempo Real de Sistemas Embarcados. Este perfil aborda o projeto de sistemas embarcados no âmbito de hardware e software; alocação de elementos; análise de escalonabilidade e desempenho; especificação de características de sistemas embarcados, como tamanho de memória e consumo energético; suporte a arquiteturas baseadas em componentes; outros paradigmas computacionais, como assíncrono e síncrono (WEHMEISTER, 2009). Os sistemas embarcados de tempo real possuem características como: deadlocks e período da execução de uma tarefa que devem ser atendidas conforme especificado. MARTE disponibiliza conceitos necessários para modelar plataformas de hardware e software para executarem aplicações embarcadas de tempo real. Incluindo suporte para a modelagem de hardware (memória, processadores, canais de comunicação e outros) e aspectos de software como tempo real do sistema operacional. O conceito de alocação é usado para indicar que um elemento da aplicação está alocado em um elemento da plataforma. Segundo André et. al. (2007), MARTE é apropriado para representação temporal de natureza física ou lógica. Sendo que o tempo físico é contínuo e pode 34 ser discretizado em relógios cronométricos, enquanto que o tempo lógico é menos reconhecido nos conceitos de modelagem explicitas. Um exemplo de tempo lógico, para André et. al. são os processamentos e as etapas de execução realizada à taxa de um ciclo do processador (que pode variar de acordo com o consumo de energia), ou disparado por ocorrências sucessivas de um evento externo (tais como características da engenharia de um motor). MARTE consiste na definição de modelos de tempo real para sistemas embarcados, no qual inclui conceitos para modelagem e análise (BRISOLARA, KREUTZ,e CARRO, 2009). O suporte a modelagem prove mecanismos (estereótipo) para detalhar o projeto de tempo real e as características de tempo real da aplicação, permitindo a especificação de requisitos não funcionais, tempo, e recursos gerais e de alocação. Para o suporte ao modelo de análise, MARTE disponibiliza facilidades para anotar os modelos com as informações necessárias para realizar uma análise específica. Segundo Espinoza et. al (2009), em relação à UML, MARTE adiciona os seguintes recursos: • NFPs: Uma estrutura com suporte a modelagem de requisito não funcionais (NFPs, do inglês, Non Functional Requirements) proporciona especificar semanticamente propriedades não-funcionais (por exemplo: atrasos e uso de memória). • Tempo: É um modelo altamente refinado de tempo e integram conceitos de mecanismos de tempo a partir de diferentes subdomínios em projetos de sistemas embarcados, tal como tempo casual, tempo síncrono e tempo cronométrico. • Aplicação de software: Um modelo comum de computação que prove suporte à semântica para paradigma de objeto de tempo real. Este paradigma permite especificação de aplicação com alto nível de abstração, por simultaneidade, comunicação e aspectos de restrições de tempo para modelar uma unidade chamada real-time unit (RrUnit). • Componentes: O modelo de componentes de MARTE estende a UML. • Recursos Hardware/Software: Recursos de hardware e software podem ser descritos em diferentes níveis de abstração, incluindo seus 35 serviços, como os das plataformas comuns de SO, e propriedades não funcionais comuns como consumo de energia ou uso de memória. • Análise quantitativa: Um conjunto pré-definido de anotação não funcional permite que os modelos em MARTE sejam a ligação com o estado da arte de ferramentas desempenho e de análise. Em MARTE são integrados conceitos para tempo e comportamento, que são fortemente utilizados no domínio de sistemas embarcados. Neste perfil três abstrações diferentes de tempo podem ser utilizadas para representar os fluxos de comportamento temporais, que são: • Casual/temporal. A relação de precedência/dependência é utilizada para determinar o comportamento. • Relógio/síncrono. Adiciona a notação de simultaneidade e divide a estala do tempo em uma sucessão discreta de instantes. Esta classe de abstração do tempo pode ser usada para modelagem de hardware e software. • Físico/tempo real. Oferece uma forma de especificar a modelagem precisa de tempo real, para escalonamento das questões críticas do sistema. Este modelo, também pode ser aplicado para o modelo síncrono, por exemplo, para obter a velocidade admissível de uma reação. MARTE é um perfil da UML composto por diversos pacotes, conforme pode ser observado na Fig. 8, os quais proveem conceitos adaptados para modelagem e análise de sistemas embarcados e de tempo real. O perfil MARTE é estruturado sob duas questões, uma para modelar as características de sistemas de tempo real e embarcados e outra para anotar modelos de aplicação, de modo a apoiar a análise das propriedades do sistema. Estas questões são mostradas no pacote RTEM chamado "MARTE design model", conforme a Fig. 8. Estas duas questões principais compartilham características comuns com a descrição do tempo e o uso de recursos simultâneos, que estão contidos no pacote compartilhado chamado “Marte Foundations". Estas duas partes principais compartilham conceitos comuns como a descrição do tempo e o uso de recursos simultaneamente, os quais estão contidos no pacote chamado “MARTE Foundations”. Os recursos para “Analysis Modeling” são divididos em fundamentos genéricos no pacote GQAM, e outros dois pacotes para domínios de análise 36 específica. Estes dois primeiros domínios de análise específica são inteiramente focados no tempo, no entanto, a estrutura do perfil permite incluir domínios de análises adicionais, tais como consumo de energia, uso de memória, ou confiabilidade (OMG, 2011b). Figura 8 – Pacote RTEM Fonte: (OMGb; 2011, pg. 25) O perfil MARTE é a extensão padrão definida para a modelagem de sistemas embarcados e de tempo real. Este perfil foi uma evolução do perfil UML-SPT (ROMERO, 2010), anteriormente adotado pela OMG para a modelagem de sistemas de tempo real. Esta evolução inclui a parte de modelagem de hardware, não suportada pelo UML-SPT. MARTE propõe novos estereótipos o perfil também propõe a anotação de valores que representam aspectos temporais. 37 4 TRABALHOS RELACIONADOS Neste capitulo são apresentados os trabalhos relacionados a este estudo. Uma avaliação da SysML foi realizada por Linhares, Silva e Oliveira (2006) onde os autores concluíram que SysML permite que os engenheiros de sistemas descrevam um sistema em alto nível de abstração, considerando simultaneamente componentes de software e hardware. O artigo de Espinoza et al. (2009), apresenta estratégias para combinação dos perfis MARTE e SysML em um contexto comum de modelagem, evitando conflitos nas especificações. Também mostram que apesar do overlapping de semântica e sintaxes esses dois perfis são altamente complementares. O artigo reúne um conjunto de cenários que julgam serem relevantes para o domínio de sistemas embarcados, apresentando os conflitos existentes nesses cenários, autores sugerem algumas alterações para combinação dos perfis em tais cenários. Em Dubois et. al. (2010), o artigo propõem o metamodelo, DARWIN4Req, para rastreabilidade de requisitos. Tal metamodelo esta baseado em três fluxos independentes, que são: modelo de requisitos, modelo da solução e modelo Validação &Verificação. O metamodelo DARWIN4Req estabelece um link entre os fluxos e permite total rastreabiliade dos requisitos incluindo modelos heterogêneos. Em Peraldi-Frati et al. (2008) foi apresentada a modelagem e a análise de sistemas de tempo real, em diferentes fases do projeto. Para a especificação das características temporais e estruturais do sistema, bem como a representação do hardware, foi utilizado o perfil MARTE em conjunto com a linguagem CCSL. Em Kangas et al. (2006), o artigo descreve um fluxo de projeto completo para múltiplos sistemas em chips (SoC), abrangendo as fases de concepção da modelagem do sistema para protótipos FPGA. O projeto de sistemas heterogêneos é aumenta o nível de abstração e fornece diversas ferramentas de automação de projeto. O sistema é modelado em um ambiente de projeto UML seguindo um perfil UML que especifica as práticas para a aplicação e modelagem da arquitetura. As ferramentas de fluxo de projeto são regidas num framework único, que combina as ferramentas em um fluxo contínuo e possibilita a visualização do processo do projeto. Novas características incluem a exploração arquitetura automatizadas baseada nos modelos do sistema descrito em UML, bem como automatização e 38 anotação das informações no fluxo de projeto. A exploração arquitetura baseia-se na otimização global dos sistemas que são compostos de subsistemas, os quais são localmente otimizados para os seus fins específicos. Como resultado, o fluxo de projeto produz um componente de alocação otimizado, o mapeamento de tarefa e escalonabilidade para a aplicação descrita. Além disso, o fluxo suporta a implementação de todo o sistema em FPGA. A contribuição deste trabalho é apresentar as diferenças entre as linguagens de modelagem SysML e MARTE, avaliando os recursos que estas oferecem aos desenvolvedores de sistemas embarcados. 39 5 CONCLUSÕES Este trabalho apresentou um estudosobre a modelagem de sistemas embarcados usando modelos de alto nível de abstração. O trabalho apresenta primeiramente fundamentos sobre o projeto e modelagem de sistemas embarcados, para então apresentar abordagens de modelagem para estes sistemas. As abordagens estudadas baseiam-se na linguagem UML e suas extensões usadas na área de sistemas embarcados, o SysML e o MARTE, os quais são dois perfis da UML padronizados pela OMG. Este estudo analisou os principais recursos oferecidos pelos dois perfis para a modelagem de sistemas embarcados, bem como suas limitações. Devido às diversas variações das aplicações para sistemas embarcados pode-se concluir que o uso combinado dos dois perfis é possível obter uma modelagem de alto nível adequada, que inclui tanto a modelagem detalhada de requisitos, bem como a modelagem completa de requisitos temporais. Nosso estudo demonstrou que o diagrama de requisitos do SysML pode ser usado para a representação gráfica de requisitos de uma aplicação embarcada e que as classes estereotipadas com recursos do MARTE podem ser usadas para a modelagem de requisitos de tempo real em um sistema embarcado. Como trabalhos futuros, planejamos estender este estudo através da realização de um estudo de caso mais completo de modelagem de um sistema embarcado, primeiramente só usando SysML, depois usando somente MARTE, e posteriormente usando ambas linguagens combinadas. 40 REFERÊNCIAS ANDRÉ, C.; MALLET, F.; SIMONE. R. Time modeling in MARTE. ECSI Forum on specification & Design Languages, p. 268-273, 2007. BRISOLARA, L.; KREUTZ, M.; CARRO, Luigi. UML as front-end language for embedded systems design. Luis Gomes; João M. Fernandes. (Org.). Behavioral Modeling for Embedded Systems and Technologies: Applications for Design and Implementation. v. , p. 244-266, 2009. DUBOIS, H.; PERALTI-FRATI. M.; LAKHAL, F. A model for requirements traceability in an heterogeneous model-based design process. Application to automotive embedded systems. IEEE Int. Conf. on Engineering of Complex Computer Systems. v.15, 19 p, 2010. ESPINOZA, H.; CANCILA, D.; SELIC, B.; GÉRARD, S. Challenges in Combining SysML and MARTE for Model-Based Design of Embedded Systems. Springer. 2009. FARINES, J. M.; FRAGA, J. S.; OLIVEIRA, R. S.. Sistemas de Tempo Real.. v.1, 201 p, 2000. FOWLER, M. UML Essencial. Um breve guia para linguagem-padrão de modelagem de objetos. 3 ed, 160p, 2005. FRIEDENTHAL, S.; MOORE, A.; STEINER, R. A. Practical Guide to SysML: Systems Model.v., 560.p. 2008. KANGAS, T.; KUKKALA, P.; ORSILA, H.; SALMINEN, E.; HANNIKAINEN, M.; HAMALAINEN, T. UML-Based Multiprocessor SoC Design Framework. Transactions in Embedded Computing Systems. v. 5(2), p. 281-320, 2006. LINHARES, M.; SILVA, A.; OLIVEIRA, R. Avaliação da da SysML através da modelagem de uma unidade experimental de automação industrial. XII CBA – Congresso Brasileiro de Automação, 2006. MATTOS, J.; BRISOLARA, L. Desafios no Projeto de Sistemas Embarcados. MATTOS, J; ROSA, L; PILLA, M. Desafios e Avanços em Computação: o estado da arte. v., p. 153-175, 2009. 41 MARWEDEL, P., Embedded Systems Design. Dordrecht, The Netherlands: Springer, 2006. OMG. (2011a) SysML. Disponível em: http://www.omgsysml.org/. Acesso em: Outubro, 2011. OMG. (2011b) UML Profile for MARTE. Disponível em: http://www.omg.org/spec/MARTE/1.1/. Acesso em: Outubro, 2011. PERALDI-FRATI, M.; SOREL, Y. From high-level modeling of time in MARTE to real- time scheduling analysis. In MoDELS’08 W. on Model Based Architecting and Construction of Embedded Systems on ACESMB, p.129–143, 2008. ROMERO, A. Uma Abordagem em Arquitetura Conduzida por Modelos e Aplicada a Software de Tempo Real Espacial. Dissertação de Mestrado. Instituto Nacional de Pesquisas Espaciais. 203 p., 2010. WEHRMEISTER, M. A. An aspect-oriented model-driven engineering approach for distributed embedded real-time systems. 2009. 206 p. Tese (Doutorado) – Universidade Federal do Rio Grande do Sul, Porto Alegre, Brasil. 2009. WOLF, W. Computers as components: principles of embedded computing system, v.2, p.1-53, 2008. WOLF, W. High-Performance Embedded Computing. Architectures, Applications, and Methodologies.v.,p.1-63, 2007.
Compartilhar