Como o Linked Lifecycle Data pode transformar o ambiente de engenharia de sistemas

Uma abordagem de arquitetura para a integração que permite obter mais dos dados

As organizações hoje estão criando produtos e sistemas cada vez mais complexos, e esse esforço de engenharia está gerando mais e mais dados, com complexidade cada vez maior. Essa tendência deve continuar. Neste artigo, Ben Williams explica como arquiteturas Linked Data podem trazer recursos que ajudam a solucionar desafios inerentes à criação de produtos e sistemas complexos e como eles ajudam a aumentar a inovação.

Ben Williams, Senior Product Manager, IBM

author photoBen Williams é Senior Product Manager na área Systems Engineering do software IBM Rational. Ele tem grande experiência em especificar e gerenciar produtos de software que ajudam organizações a desenvolver produtos e sistemas complexos, especializando-se em levar novos produtos ao mercado, do conceito ao release. Com histórico em engenharia de requisitos, pela IBM (e anteriormente pela Telelogic), trabalhou em vários projetos complexos de engenharia de sistemas, de implementações de rede 3G ao desenvolvimento de grandes terminais aéreos, e ajudou muitos clientes a transformar suas organizações de engenharia usando tecnologias, métodos e ferramentas da IBM. Além das suas tarefas de gerenciamento de produtos no dia a dia, Ben é apoiador resoluto do movimento de software livre. Ele foi membro ativo (com status de committer) do projeto Eclipse Process Framework (EPF) e agora é parte do programa Linux Champion da IBM.



30/Out/2012

Parte 1. Introdução a Linked Data

Histórico: A teia de documentos

Todos que já usaram um navegador conhecem a World Wide Web que usamos há tantos anos. A web — na verdade uma teia de documentos — serviu como base para que nós compartilhássemos quantidades antes inimagináveis de informações, mas alguns importantes detalhes da sua implementação acabam por impor um limite na sua utilidade.

A web representa informações como textos em páginas. Ela foi projetada para permitir que humanos lessem, filtrassem informações redundantes e inferissem significado com base no idioma natural usado, o contexto das informações e o conhecimento existente do leitor. Em outras palavras, nós humanos extraímos dados das páginas da web que lemos. Além disso, o significado dos relacionamentos entre diferentes informações na web nunca é explícito. Novamente, nós humanos inferimos esse significado. HTML não é expressivo o suficiente para representar relacionamentos com tipo entre entidades definidas.

Mas a web, mesmo centrada em documentos, contém muitos dados úteis. O problema é que, devido à maneira como ela é representada, não podemos fazer tudo que gostaríamos com os dados. Igualmente problemático é o fato de que muitos dos dados que poderíamos usar para responder essas questões simplesmente não foram publicados.

Quando fazemos procuras na web, confiamos em algoritmos usados pelos indexadores de mecanismos de procura para fornecer links para documentos que o indexador acredita serem relevantes, mas eles podem ou não conter as informações que nós procuramos. Nós confiamos que os algoritmos usados não excluirão informações úteis e relevantes do conjunto de resultados, e devemos filtrar as informações irrelevantes restantes e combinar informações representadas em diferentes páginas para tentar chegar às respostas para nossas perguntas.

Imagine pode fazer uma procura da qual você possa esperar respostas precisas e relevantes mesmo para as perguntas mais complexas. Parece bom? Isso é o que podemos esperar quando, ao invés de fazer a procura em uma teia de documentos, fazemos em uma teia de dados estruturados.

Linked Data

Linked Data (consulte Recursos) refere-se a um conjunto de melhores práticas para estabelecer uma teia de dados, ou seja, publicar e conectar dados na web. Linked Data pode ser lido por máquinas, tem um significado com definição explícita e pode ser vinculado a outros dados e vice-versa.

Quando descrevemos significado no contexto de Linked Data, estamos falando de descrever dados de uma forma que possa ser entendida por computadores.

Linked Data tem quatro princípios de suporte, definidos por Tim Berners-Lee:

  • Use URIs para identificar as coisas.
  • Use URIs de HTTP para que as pessoas possam consultar esses nomes.
  • Quando alguém consultar um URI, forneça informações úteis sobre essa coisa.
  • Inclua links para outros URIs para que coisas adicionais e relacionadas possam ser descobertas.

Assim como a web conta com Identificadores Uniformes de Recursos (URIs) e com o Protocolo de Transporte de Hipertexto (HTTP) para oferecer uma arquitetura altamente escalável para vincular documentos (páginas HTML) independentemente de onde eles estejam localizados fisicamente, Linked Data usa a mesma tecnologia subjacente para oferecer a mesma escalabilidade para vincular dados estruturados, independente de onde os dados estejam localizados.

Representar dados na Resource Description Framework (RDF) permite que máquinas interpretem os dados e a maneira como eles relacionam-se com outros dados. Usando RDF, podemos desenvolver uma teia de dados ao descrever dados e relacionamentos como trios, que consistem em um assunto, um objeto, e um predicado (verbo).

Podemos pensar em um trio como a estrutura de uma sentença simples. Por exemplo, vamos pegar a sentença "Tim Berners-Lee criou HTML".

Nessa sentença, o sujeito é "Tim Berners-Lee", o objeto é "HTML" e o predicado (verbo) é "criou", que descreve o relacionamento entre o sujeito e o objeto. Lembre-se que não é possível descrever facilmente esses relacionamentos de tipo entre entidades na teia de documentos.

Com RDF, sujeitos são sempre URIs. Os objetos podem ser URIs de recursos relacionados ou simples literais, como uma cadeia de caractere, data ou número, como este exemplo: "HTML foi inventado em 1990". Predicados também são identificados por URIs que são coletados em vocabulários.

Diferentes vocabulários são usados para agrupar predicados que descrevem tipos de relacionamento entre dados para um dado domínio. Vocabulários ajudam a entender os dados e suas propriedades mais rapidamente. Por exemplo, OSLC (Open Services for Lifecycle Collaboration) tem um vocabulário que descreve propriedades de recursos de ciclo de vida e relacionamentos típicos entre eles. Um conjunto de vocabulários comuns foi estabelecido. O Dublin Core e Friend of a Friend (FOAF) são dois exemplos.

Ao publicar Linked Data, a melhor prática é verificar se os dados podem ser representados usando termos de vocabulários existentes.

Em N3 / Turtle (dois formatos populares de serialização para RDF), o trio de "Tim Berners-Lee criou HTML" seria semelhante à Listagem 1.

Listagem 1. Exemplo de um trio serializado em N3/Turtle
@prefix dc: <http://purl.org/dc/elements/1.1/> .

<http://en.wikipedia.org/wiki/HTML>
dc:title "HTML";
dc:creator http://www.w3.org/People/Berners-Lee/card .

Um dos principais benefícios de RDF é que ele pode representar qualquer tipo de dados. Com RDF, não precisamos nos preocupar em não poder representar dados imprevistos. Em outras palavras, preocupações tradicionais sobre modelos de dados (como encontramos em bancos de dados relacionais) não nos afetam.

Linking Open Data

O mais conhecido exemplo de Linked Data é o projeto Linking Open Data (LOD). Ele foi criado para identificar conjuntos de dados que existem no domínio público, publicá-los e vinculá-los, usando os princípios de Linked Data para criar uma teia de dados com acesso público.

Em março de 2012, essa teia de dados abertos consistia em mais de 52 bilhões de trios RDF. Mas esse número ainda é pequeno quando consideramos a estimativa do volume de dados armazenado em todos os bancos de dados do mundo (mais de 3 petabytes). Embora muitos desses dados sejam particulares, grandes quantidades podem ser publicadas na teia de dados abertos. À medida que a teia de dados abertos cresce, podemos responder a mais e mais perguntas que anteriormente não podíamos, ou pelo menos não com a mesma facilidade.

Figura 1. Ilustração da nuvem Linked Open Data
Ilustração da nuvem Linked Open Data

Visualização maior da Figura 1.


Parte 2. Linked Lifecycle Data

A abordagem tradicional para integração de dados

Tradicionalmente, a maior parte dos dados que criamos e gerenciamos no ciclo de vida dos projetos de software e sistemas nos quais nos envolvemos não são abertos. Historicamente, esses dados estavam disponíveis apenas para usuários da ferramenta que gerenciava os dados. Nesses ambientes fechados, não podemos responder a perguntas complexas que dependem de nosso conhecimento sobre o relacionamento entre dados gerenciados por ferramentas diferentes. Além disso, as ferramentas nesses ambientes fechados não têm reconhecimento comum dos tipos de dados e relacionamentos que estão gerenciando.

Definição de Linked Lifecycle Data

Linked Lifecycle Data é simplesmente a aplicação de princípios de Linked Data a dados criados e mantidos durante o ciclo de vida de projetos de desenvolvimento de sistemas e software.

Esse problema não é novidade e as pessoas tentaram solucioná-lo de várias maneiras diferentes no passado. Usar um repositório simples para gerenciar todos os dados não é realista, pois implica na dependência de um único fornecedor e evita a adoção das melhores soluções e a integração de dados em repositórios existentes. Integrações ponto a ponto entre diversas ferramentas são frágeis e podem quebrar-se quando elas têm sua versão atualizada. A adoção de normas universais de metadados não têm tido sucesso devido a conflitos em prioridades e motivações de diversos fornecedores. Essa abordagem também não proporciona flexibilidade para a customização das equipes individuais.

Um jeito melhor: Linked Lifecycle Data

Ao adotar uma abordagem fracamente acoplada para a integração com base em princípios de Linked Data em desenvolvimento de sistemas e software, podemos aproveitar ao máximo os dados que estão sendo criados, sem as desvantagens das abordagens que fracassaram no passado. A base de Linked Data e o que o faz funcionar são os URIs. Os URIs garantem que os dados podem ser identificados mesmo fora do seu contexto original.

Apesar do escopo mais limitado dos dados (geralmente gerenciados em algumas ferramentas em uma rede privada), ainda podemos ter grandes benefícios ao aplicar princípios de Linked Data a eles. Ao "abrir" os dados gerenciados por todas as ferramentas, podemos criar um sistema bem definido de ferramentas, para que os usuários que trabalham em uma das ferramentas no sistema possam responder a perguntas complexas sobre os projetos nos quais estão trabalhando - perguntas que dependem da união dos dados que estão em repositórios diferentes.

A Listagem 2 é uma representação em Linked Data de alguns dados de ciclo de vida de desenvolvimento. Esse conjunto de trios (novamente em Turtle) mostram um requisito, caso de teste e item de trabalho vinculados.

Listagem 2. Exemplo de Linked Lifecycle Data
@prefix dcterms:<http://purl.org/dc/terms/> .
@prefix oslc_cm:<http://open-services.net/ns/cm#> .
@prefix oslc_qm:<http://open-services.net/ns/qm#> .

<https://rqmtest.ibm.com:9443/rm/requirement.1>
dcterms:title "Requirement 1" . 

<https://rqmtest.ibm.com:9443/qm/testcase.1>
dcterms:title "Test case 1";
dcterms:description "The quick fox jumps over ... ";
oslc_qm:validatesRequirement <https://rqmtest.ibm.com:9443/rm/requirement.1> .

<https://rqmtest.ibm.com:9443/cm/defect:645>
dcterms:title "Defect XYZ";
oslc_cm:testedByTestCase <https://rqmtest.ibm.com:9443/qm/testcase.1>;
oslc_cm:implementsRequirement <https://rqmtest.ibm.com:9443/rm/requirement.1> .

Parte 3. Aproveite melhor os dados através de Lifecycle Query

Entender os dados e os relacionamentos entre eles é essencial para trabalhar em e gerenciar projetos de sistemas e software com êxito.

Ao longo dos projetos de desenvolvimento de sistemas e software, os membros da equipe criam enormes quantidades de dados, como requisitos, testes, modelos de design, código, itens de trabalho e assim por diante. Geralmente, poucos desses artefatos existem em isolamento. Pelo contrário, são relacionados uns aos outros por meio de links com um significado específico e bem entendido.

Membros e gerentes de equipe precisam poder encontrar e entender rapidamente dados e seus relacionamentos para poder apoiar eficientemente uma dada função. Pode ser, por exemplo, um praticante de teste que precisa saber quais requisitos foram verificados por testes que falharam na última execução, ou um gerente que precisa saber como o número de defeitos em aberto em um dado projeto está mudando a cada semana.

Os problemas surgem porque, tradicionalmente, todas as informações foram criadas e mantidas em silos - repositórios diferentes, geralmente distantes uns dos outros. Esses repositórios são geralmente fornecidos por fornecedores diferentes, são implementados em plataformas diferentes usando tecnologias diferentes e expõem seus dados em formatos proprietários.

Abordagens de banco de dados relacional

Com sistemas de negócios, abordagens tradicionais de bancos de dados relacionais foram usadas para tentar contornar esses problemas. É possível obter capturas instantâneas dos dados através de operações de extrair, transformar e carregar (ETL) de mais de uma fonte para um data warehouse que tenha suporte a relatórios históricos e baseados em tendências. É possível criar datamarts ou data warehouses que tenham suporte ao cálculo prévio de métricas, para executar mais rápido as consultas analíticas.

Com um data warehouse, temos uma fonte isolada da verdade e podemos executar com eficiência consultas e relatórios grandes e complexos, contendo dados criados em ferramentas diferentes. Data warehousing tem muitos benefícios, mas também tem desvantagens: toda a lógica de negócios para mapear dados para as tabelas de banco de dados relacionais, bem como definições de chaves para as tabelas relacionadas representarem links, estão contidas em tarefas ETL. Se mudarmos a estrutura de nossos dados de origem ou carregarmos dados que não carregamos anteriormente, somos obrigados a alterar os esquemas de warehouse de dados e editar ou escrever novos ETLs.

No entanto, talvez o maior problema seja o fato de que os dados no warehouse são geralmente antigos. Geralmente, tarefas de ETL são executadas todas as noites, o que pode significar que os dados contidos nos relatórios executados no warehouse têm até 24 horas. Em muitos cenários de relatórios isso é aceitável, mas, em outros, é essencial ter relatórios executados em relação a dados ativos próximo a tempo real (5 a 15 minutos no máximo). Apenas um exemplo comum: quando um gerente de projeto precisa criar um relatório mostrando a lista não processada de itens de trabalhando para uma reunião com a equipe.

O jeito Linked Data

Linked Data é armazenado nativamente em repositórios chamados armazenamentos de trio. Como o nome sugere, eles armazenam trios de RDF. Lembre-se que RDF elimina as preocupações sobre modelos de dados e permite que suponhamos que podemos representar qualquer tipo de dados que nossos sistemas e engenheiros de software estão criando. Agora nós temos a oportunidade de criar um ou mais armazenamentos grandes de trios de todas as nossas ferramentas de desenvolvimento de sistemas e software, assim como ferramentas que gerenciam dados relacionados, como desenhos CAD, BoMs (lista de materiais) dados financeiros etc. Esses índices podem ser atualizados quase em tempo real e podem agir como nossa teia de dados para visualização e relatórios. Eles fornecem um cache em tempo real de dados importantes de ciclo de vida, refletindo assim a verdade das fontes de dados subjacentes que detém a propriedade dos dados e os gerenciam.

Ao trabalhar com esse índice, podemos criar e executar o tipo de consultas em tempo real, grandes, complexas, em vários produtos e domínios, que antigamente não podíamos (ao menos não dentro de uma janela de tempo aceitável). Sem um índice, para executar a mesma consulta em dados ativos, teríamos que fazer várias solicitações a vários repositórios que podem estar distribuídos geograficamente. O uso de um data warehouse relacional oferece as mesmas vantagens para produzir consultas e relatórios complexos, de produto cruzado, mas os dados são velhos por um período de tempo igual ao delta entre a execução do relatório e a última tarefa ETL.

A experiência também mostra que a maioria dos produtos (origens de dados) são otimizadas para APIs operacionais e raramente para consultas e relatórios. Assim como as vantagens que obtemos ao usar um data warehouse para consultas, nas quais a idade dos dados não é uma consideração importante, colocar os dados em um índice de relatórios (armazenamento de trio) dá aos usuários acesso a uma interface e linguagem otimizados para consultas: SPARQL, a linguagem de consulta de RDF. A própria origem de dados se aproveita disso, pois precisa atender a muito menos solicitações não operacionais.

Insight em tempo real

São esses tipos de consultas e relatórios, que combinam dados de mais de um domínio, que nos permitem responder aos tipos de perguntas que podem nos dar insight real (e em tempo real) em nossos projetos de desenvolvimento. Linked Lifecycle Data com vocabulários comuns (como aqueles definidos em OSLC) também nos permitem responder a perguntas sem se importar com a origem dos dados. Perguntas como "Quais requisitos não são abordados por testes?" podem agora ser respondidas sem saber ou se importar se os dados de requisitos originam-se do IBM®Rational® DOORS® ou Rational Requirements Composer ou se os dados de caso de teste vêm do Rational Quality Manager ou de outro lugar. Nós temos um nome para a capacidade de responder a essas perguntas complexas, de domínio cruzado, sobre dados ativos: Consulta de Ciclo de Vida.

Rational Engineering Lifecycle Manager

IBM® Rational® Engineering Lifecycle Manager (RELM) é uma extensão da solução Rational para sistemas e engenharia de software. Ela utiliza um índice central e Consulta de Ciclo de Vida para proporcionar a capacidade de visualizar, analisar e organizar dados de ciclo de vida de engenharia.

Figura 2. Rational Engineering Lifecycle Manager
Rational Engineering Lifecycle Manager

É possível usar os recursos de visualização para configurar visualizações customizadas que são preenchidas com dados em tempo quase real. Elas oferecem novas perspectivas que ajudam a equipe a tomar decisões mais precisas e em tempo hábil ou a realizar tarefas com maior eficiência e eficácia.

Por exemplo, um engenheiro de segurança automotiva pode querer uma visualização de dados de ciclo de vida cruzado no contexto da estrutura da norma de segurança funcional ISO26262, ou um engenheiro aeroespacial pode querer ver dados de ciclo de vida cruzado sobrepostos em uma ilustração da aeronave, com dados mostrados sobre as partes relevantes.

A dificuldade de encontrar informações completas ao longo do ciclo de vida de engenharia para auxiliar na análise e tomada de decisões não pode ser subestimada. Rational Engineering Lifecycle Manager tem suporte para procuras de texto livre em todo o ciclo de vida, além da criação de consultas mais intricadas para responder a perguntas específicas. É possível dizer "Mostre todos os artefatos de engenharia que contêm a frase 'bomba de combustível'", ou ter um foco como "Quantos requisitos para o monitor de funcionamento estão relacionados a testes que fracassaram em sua última execução?".

Recursos de análise de impacto orientado a equipes ajudam a identificar dependências com impactos mais à frente que a equipe poderia não perceber. Por exemplo, se um fornecedor não puder mais fornecer um componente eletrônico em particular, é necessário determinar o que pode acontecer se esse componente for trocado por um semelhante, de outro fornecedor. É necessário entender o impacto potencial sobre componentes com os quais ele faz interface ou o software que o controla. Isso geralmente significa pedir a mais de uma equipe que realize análise de impacto em ferramentas diferentes e monte os dados manualmente, o que geralmente é um processo lento, laborioso e sujeito a erros.

Com Rational Engineering Lifecycle Manager, é possível localizar o componente no design do sistema e gerar visualizações de análise de impacto interativas que mostram todos os demais elementos de design, requisitos, testes e itens de trabalho de sistemas e de software que estão associados ao componente. É possível trabalhar com a visualização para filtrar artefatos que não sejam relevantes e atribuir ramificações relevantes às disciplinas de engenharia apropriadas para analisar.

Rational Engineering Lifecycle Manager também permite ter melhores relatórios a partir dessa riqueza de dados. É possível obter insight em tempo real sobre o status dos projetos, o desenvolvimento de produtos e sistemas e as revisões de prontidão de suporte nos principais marcos. E é possível gerenciar documentos que contêm dados de todo o ciclo de vida para apoiar auditorias e provar a conformidade e entrega de especificações que formam a base dos acordos contratuais em toda a cadeia de fornecimento.

Os recursos de visualização e análise do Rational Engineering Lifecycle Manager ficam ainda mais eficientes pela capacidade de organizar todos os dados indexados para incluir contexto essencial neles. É possível refletir a estrutura de produto ou sistema que existe nos dados subjacentes e usar isso em uma visualização e análise. Isso permite realizar tarefas facilmente, como encontrar todos os requisitos, testes e artefatos de design relacionados à unidade de entretenimento da variante japonesa do modelo 2014 de um veículo.

Conquiste complexidade sem precedentes ao usar melhor os dados projetados

Para engenheiros, ambientes cada vez mais complexos significam que as tarefas do dia a dia podem terminar consumindo um período de tempo inadequado, que poderia ser mais bem gasto sendo criativo e produtivo.

Ao basear-se em uma plataforma de arquitetura que utiliza Linked Data e Lifecycle Query, usando Rational Engineering Lifecycle Manager, engenheiros de sistemas e de software obtêm eficientes funções de visualização, análise e organização, que os ajudam a entender melhor os conjuntos grandes e complexos de dados e relacionamentos com os quais estão trabalhando. Esse entendimento e visibilidade podem melhorar muito a colaboração e fazer com que praticantes sigam processos e implementem práticas de formas mais fáceis, além de facilitar o gerenciamento de projetos e programas eficientemente.

Visualizações customizadas podem ser criadas facilmente em qualquer nível de abstração, para apoiar melhor as tarefas de um usuário em uma função particular. Essas perspectivas e insights, junto com a capacidade de entender melhor o impacto das mudanças no ciclo de vida de engenharia, significam que é possível tomar as principais decisões de engenharia e de negócios de forma mais precisa. Gerar documentos, seja para auditorias ou conformidade ou para cruzar barreiras contratuais, torna-se uma tarefa muito mais simples e menos sujeita a erros.

Por fim, tudo isso pode ajudar as organizações a desenvolver e entregar sistemas e software de forma mais rápida, com maior produtividade, maior eficiência e menor risco - com o benefício adicional de proteger investimentos em ferramentas de domínio existentes.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Rational
ArticleID=843427
ArticleTitle=Como o Linked Lifecycle Data pode transformar o ambiente de engenharia de sistemas
publish-date=10302012