Beskrivelse av verktøy
6.4 Forbruk av systemressurser
Tendo como objetivo o entendimento das contribuições das áreas de engenharia de sistemas e de software e de engenharia de controle e automação para a obtenção de ciclos de vida, métodos para modularização, linguagens e ferramentas adequados para o desenvolvimento de sistemas de automação distribuídos, é possível sintetizar as informações vistas nas seções anteriores da seguinte maneira:
Quanto à engenharia de software e sistemas:
Os métodos de desenvolvimento de sistemas dessa área são muito bem documentados pela literatura e são aplicáveis a distintos tipos de projeto (não somente de software), muitos deles contando inclusive com processos de gerenciamento além dos fluxos de atividades técnicos. As principais etapas desses métodos compreendem o levantamento (eliciação) de requisitos, a análise, o projeto, a implementação, os testes, a instalação e a manutenção dos sistemas;
Uma das formas de modularização mais comuns nessa área ocorre quando se adotam técnicas de orientação a objetos, em que o sistema ou software é representado por abstrações chamadas objetos, que estabelecem normalmente um paralelo entre si e um objeto do mundo real (como dispositivos, processadores ou mesmo pessoas, por exemplo). Essa característica e o fato de que os mecanismos de orientação a objetos permitem a representação de relações
semanticamente complexas entre elementos facilita a sua aplicação a qualquer domínio;
Das linguagens utilizadas para expressar conceitos de orientação a objetos uma das mais populares é a UML: através de seus modelos gráficos é possível representar de forma muito rica aspectos de diferentes níveis de abstração sobre um determinado sistema (desde idéias puras a elementos de implementação). Destacam-se também a sua facilidade de compreensão e flexibilidade (principalmente pela possibilidade de expansão da linguagem); e
Finalmente, as ferramentas fornecidas pela área têm funcionalidades centradas na representação de sistemas (que podem ser de propósito geral, como aquelas que permitem a modelagem através da UML) e na implementação específica de software (como as que são aplicadas para codificação em linguagens de computação – por exemplo, Java e C). Quanto à engenharia de controle e automação:
Os ciclos de vida de projetos de automação em geral são direcionados às atividades de construção do sistema em si (contando com as fases de projeto (já de baixo nível de abstração), de configuração da rede de comunicação, da configuração de aplicações, da instalação – de dispositivos e de software – e da manutenção do sistema). Durante a fase de projeto, ou eventualmente um pouco antes dela, executa-se o entendimento do problema e sua modelagem, mas tais atividades não constituem normalmente uma etapa formal do método de desenvolvimento;
O uso de blocos funcionais para a segmentação das aplicações dos sistemas de automação é bastante difundido. Em geral, essas abstrações representam apenas módulos de encapsulamento de funções, mas especificamente os blocos funcionais orientados a eventos assemelham-se a elementos reativos (no sentido de que executam funções internas e divulgam dados de acordo com a recepção de determinados eventos);
A norma IEC 61499 contribui com a área ao padronizar blocos funcionais orientados a eventos para expressar aplicações de sistemas de automação distribuídos, além de oferecer outras abstrações (como
dispositivos e recursos) para permitir também a representação da estruturas físicas referentes a esses sistemas. Adicionalmente, incentiva a criação de ferramentas computacionais para suporte às etapas de engenharia de desenvolvimento de sistemas que utilizem suas abstrações (normatizando-as e definindo características que levem à interoperabilidade entre elas); e
As diversas ferramentas de engenharia de controle e automação direcionam-se preferencialmente à modelagem matemática de sistemas, verificação e validação de modelos e implementação de redes de controle específicas (incluindo testes, configuração de rede e dispositivos, e supervisão de campo, entre outras funções).
Assim, do ponto de vista de levantamento de requisitos e de análise conceitual (incluída aqui a atividade de modelagem), a engenharia de sistemas e software parece ter contribuições importantes a oferecer aos projetos de sistemas de automação distribuídos. Por sua vez, a de engenharia de controle e automação aporta, nesse contexto, ciclos de vida e ferramentas bem estabelecidos quanto ao projeto de baixo nível e implementação dos sistemas. Dessa maneira, mesmo com suas diferenças, parece interessante unir as técnicas dessas duas áreas, a fim de que uma cubra as deficiências da outra no desenvolvimento de projetos. Isso pode ser feito se considerarmos os seguintes aspectos:
Possibilidade de unificação dos ciclos de vida: pode-se entender o desenvolvimento de software e de hardware como subprojetos dentro do projeto de um sistema de automação distribuído. Este poderia ser constituído das etapas de levantamento de requisitos, análise, projeto, implementação, testes, instalação e manutenção (como no ciclo de engenharia de software), mas com atividades específicas de software e hardware (como configuração de rede, por exemplo) distribuídas entre essas macro-atividades, que recebem ênfases diferentes de acordo com o momento do projeto geral (como ocorre com as atividades dentro das fases no Processo Unificado de desenvolvimento de sistemas, por exemplo); e Similaridade entre conceitos de orientação a objetos e de descrição de sistemas em termos de blocos funcionais orientados a eventos: uma vez que tanto objetos como blocos funcionais orientados a eventos representam, ao mesmo tempo, estrutura (interface externa) e comportamento (encapsulado
pela interface), e que ambos respondem a estímulos externos (sejam eles chamados de mensagens ou eventos, que alteram seu estado interno e, opcionalmente, a condição de variáveis), tais abstrações parecem ser compatíveis entre si.
A partir desse ponto, então, torna-se coerente e desejável estabelecer uma correlação entre a UML e as abstrações da norma IEC 61499: com a UML ter-se-ia a possibilidade de expressar uma visão geral dos requisitos e da análise do sistema de automação distribuído (tanto sob a perspectiva da aplicação quanto do ambiente de implementação teórico), enquanto que as abstrações da norma IEC 61499 poderiam mostrar, além do projeto de baixo nível da aplicação (com a divisão do software em blocos funcionais), uma visão mais concreta do sistema de hardware subjacente. Os modelos de ambas linguagens conseguiriam, dessa maneira, mostrar visões distintas e complementares de todo o sistema, usadas nas diversas atividades do ciclo de vida do projeto de um sistema de automação.
Complementarmente, o estabelecimento de um mapeamento entre essas linguagens tornaria possível a automatização da transformação desses modelos, que poderia ser realizada por alguma ferramenta computacional. Dessa maneira, os engenheiros de software e sistemas e o engenheiros de controle e automação poderiam trabalhar cooperativamente, compartilhando as tarefas de especificação de um sistema e, ainda assim, utilizar para isso suas próprias linguagens e ferramentas (ou seja, sem a necessidade de estudar profundamente uma outra área de conhecimento) (PANJAITAN; FREY, 2006a).
Dado o interesse nessa linha de pesquisa, analisam-se no capítulo seguinte algumas das principais técnicas de mapeamento entre UML e abstrações da norma IEC 61499.