sexta-feira, 18 de outubro de 2013

Perguntas & Respostas Banco de Dados 1 Parte 2

MER - Modelo Entidade Relacionamento

Alunos: Elliot Portugal
                Ezequiel Junior
                            Guilherme Napolitano
           William Silva


01 - Explique o conceito do MER e a sua importância no relacionamento entre os profissionais da informática e os demais profissionais.

R: O MER foi criado para facilitar a comunicação entre os profissionais que desenvolvem o banco de dados de uma empresa e os funcionários que nela trabalham, facilitando o entendimento dos profissionais que usufruirão do software desenvolvido, nele o banco é detalhado de forma simples e fácil de compreender, e consiste em um conjunto de objetos básicos chamados entidades e nos relacionamentos entre estes objetos.



02 - Explique e comente o conceito de entidades e atributos.

R: Entidade: qualquer coisa que guardamos sobre algo.
  Atributo: são características sobre as entidades, e podem ser Atributos simples, composto, multivalorado ou monovalorado.


03 - Explique e comente o conceito de relacionamento.

R: Para entender o conceito de relacionamento é necessário falar sobre entidade e atributos, onde entidades são algo do mundo real, seja físico, como algum objeto, ou conceitual, como uma empresa. As entidades são ligadas no banco, e alguns exemplos dessa relação pode ser de 1 para n, n para 1 ou de n para m e m para n, para entender o conceito, um carro por exemplo pode ter várias marcas, já cada marca pode ter apenas 1 carro. Nesse caso seria um relacionamento de 1 para n.


04 - Explique e comente o conceito de atributo-chave.

R: Uma entidade pode ter vários atributos e o que diferencia o atributo chave dos demais atributos é a sua utilidade dentro da entidade, pois ele pode ser usado para identificar cada entidade unicamente. Uma característica do atributo chave é a impossibilidade de poder repetir o valor do atributo na relação, ou seja, os dados têm que ser diferentes.


05 - Explique o conceito do DER e a sua importância no relacionamento entre os profissionais da informática e os demais profissionais.

R: O DER é usado pelo analista desenvolvedor para auxiliar na criação do banco de dados, e detalhar de maneira mais completa e fácil a estrutura que precisará ser desenvolvida, envolvendo a entidade, atributos e relacionamentos, podendo ser chamado de mapa do banco de dados, e muito usado para  apresentar o projeto do banco ao cliente, para o mesmo analisar se atende as sua necessidades.


06 - Dê ou faça um exemplo de um DER e explique o mesmo.

R: O DER abaixo mostra a estrutura de um banco de uma distribuidora de alumínio, onde o mesmo não trabalha com estoque, e o mesmo pediu para ser criado um processo que auxilia na parte financeira da empresa, controlando a conta de um fornecedor e de um cliente.

DER – Diagrama Entidade Relacionamento

      CADASTRO NACIONAL DE VEÍCULOS: 
Você apresentará um modelo de dados para o cadastro nacional de veículos. Sabe-se que:
·         O veículo possui sempre uma placa única em todo o país;
·         O veículo possui sempre um responsável legal por ele. É necessário manter o histórico desta responsabilidade (propriedade);
·         O veículo pertence sempre a uma categoria;
 ·         O veículo é sempre de uma marca e de um modelo e possui ano de fabricação.


 BIBLIOTECA: Você irá elaborar um modelo de dados para atender as necessidades de informação de uma biblioteca universitária. São elas:
·         O cadastro dos usuários com endereço completo, inclusive com a informação do curso do usuário e data de início e de término previsto;
·         O cadastro das obras da biblioteca, com a devida classificação: livros científicos, periódicos científicos, periódicos informativos, periódicos diversos, entretenimento, etc.;
·         A língua em que encontra-se a obra;
·         A mídia onde encontra-se a obra;
·         Os autores da obra com o controle da nacionalidade do autor;
·         As editoras dos exemplares com o ano de edição;
·         os usuários estão classificados entre alunos, professores e funcionários, sendo que para os professores não serão considerados limites de volumes para empréstimos, nem possíveis atrasos na devolução destes.
·         O histórico dos empréstimos.



 CONTROLE DE ESTOQUE. Uma empresa do comércio varejista, deseja fazer o controle de estoque de seu estabelecimento. Para facilitar a administração do seu estoque, a organização criou uma estrutura de almoxarifados, onde um produto pode ser estocado em vários almoxarifados e um almoxarifado pode conter vários produtos. A reposição de estoque acontece quando os produtos adquiridos de um fornecedor chegam com sua respectiva nota fiscal de compra. Já a baixa do estoque se dá quando ocorre a emissão de uma nota fiscal de venda para um determinado cliente. Além disso, deseja-se classificar os produtos em linhas a serem determinadas pelo usuário de acordo com a sua necessidade.


  EMPRESA DE FLORES. A X.P.T.O LTDA. criou a FLOWERNET, uma rede que tem como objetivo atender todo o mercado nacional no que diz respeito à venda e entrega de flores. Através desta rede, um cliente pode fazer uma compra de flores em Belo Horizonte e pedir para a entrega ser feita em Fortaleza. Para isso a X.P.T.O firmou convênio com várias floriculturas em várias cidades do Brasil. Uma floricultura pode atender várias cidades da região. O pedido do cliente, que pode possuir vários tipos de flores, é cadastrado e repassado para uma das floriculturas conveniadas que atendem a cidade, na qual será entregue o pedido.


 APURAÇÃO ELEITORAL. Para facilitar o processamento da apuração eleitoral da eleição municipal a ser realizado nesse ano, o TRE (Tribunal Regional Eleitoral) resolveu informatizar esse processo. Sabe-se que cada localidade é dividida em  várias zonas eleitorais que, por sua vez, são divididas em várias seções nas quais os eleitores estão vinculados. O candidato a um cargo público deve estar vinculado a um único partido político. Vale ressaltar que, segundo a legislação vigente, o voto é secreto.


CONCURSO PÚBLICO. Uma organização deseja implementar o procedimento de concurso público para tornar transparente o seu processo de seleção de pessoal. Esta organização possui vários departamentos, que por sua vez, possui vários cargos. O mesmo cargo pode estar vinculado à vários departamentos. Um concurso público é realizado para vários cargos, e um cargo pode ser oferecido em vários concursos. O candidato faz inscrição em somente um cargo oferecido em um concurso público. O concurso tem várias etapas, que tem a participação de vários candidatos. O candidato obtém a nota em cada etapa que participa. A etapa pode ser classificatória ou eliminatória. 

MRel - Modelo Relacional

1. Explique conceitualmente a diferença entre o MER e o Modelo de Dados Relacional, ou simplesmente Modelo Relacional (MRel).                              

R: A diferença entre eles é que no MER utiliza dados conceituais de alto-nível e o MRel utiliza implementação de dados mais simples.
O MER é um modelo de dados conceitual de alto-nível. Assim, os conceitos do MER foram projetados para serem compreensíveis a usuários, descartando detalhes de como os dados são armazenados. E já o MRel os modelos de dados de implementação são mais simples com uma estrutura de dados uniforme e o mais formal. E os modelos de dados relacional apresenta os dados da base com uma coleção de relações, cada relação poderá ser estendida como uma tabela ou um simples arquivo de registro.
Atualmente, o conceito MER é utilizado principalmente durante processo de projetos da base de dados, estima-se que esse conceito possa ser utilizado diretamente em uma classe de SGBS’s.
 MRel - O Modelo de Dados Relacional foi introduzido por Codd(1970). Entre os modelos de dados de implementação, o modelo relacional é o mais simples, com estrutura de dados uniforme e o mais formal.
O modelo de dados relacional representa os dados da base de dados como uma coleção de relações. Informalmente, cada relação pode ser entendida como uma tabela ou um simples arquivo de registros.

O MER é um modelo de dados conceitual de alto-nível. Assim, os conceitos do MER foram projetados para serem compreensíveis a usuários, descartando detalhes de como os dados são armazenados.

2. Explique os conceitos de Instância, Esquema e Domínio no MRel. Explique as notações no MRel.

R: A instância de uma relação em um determinado momento é toda a relação no momento, ou seja, uma instancia de Alunos são todos os alunos cadastrados no momento. Se amanhã acrescentar mais alunos, a instância será todos os alunos antigos mais os novos.
Um domínio D é um conjunto de valores atômicos, sendo que por atômico, podemos compreender que cada valor do domínio é indivisível. Durante a especificação do domínio é importante destacar o tipo, o tamanho e a faixa do atributo que está sendo especificado. Por exemplo:

Coluna            Tipo               Tamanho     Faixa

RG        Numérico      10,0                03000000-25999999

Nome   Caracter        30                   a-z, A-Z

Salário Numérico      5,2                  00100,00-12999,99

Um esquema de relação R, denotado por  r (A1, A2, … , An), onde cada atributo Ai é o nome do papel desempenhado por um domínio D no esquema relação R, onde D é chamado domínio de Ai e é denotado por  dominio (Ai). O grau de uma relação R é o número de atributos presentes em seu esquema de relação.

A instância r de um esquema relação denotado pelo  r (R) é um conjunto de n-tuplas e
r = [t1, t2, ... , tn] onde os valores de  [t1, t2, ... , tn] devem estar contidos no domínio D. O valor nulo também pode fazer parte do domínio de um atributo e representa um valor não conhecido para uma determinada tupla. 

Notação do Modelo Relacional

As seguintes notações serão utilizadas para apresentar alguns conceitos do modelo relacional: · Uma relação esquema R de grau n é representada como  r  (A1, A2, …, An). Uma tupla t em uma relação r (R) é representada como t=<v1, v2, …, vn>, onde vi  é o valor correspondente para atributos Ai. Serão utilizadas as seguintes notações  para se referir aos valores dos componentes de tuplas:

· t[Ai] indica o valor de vi em t para o atributo Ai.

· t[Au, Aw, ..., Az] onde Au, Aw, …, Az é uma lista de atributos de R, indica o conjunto de valores <vu, vw, …, vz> de t correspondentes aos atributos especificados na lista.

· As letras Q, R e S denotam nomes de relação.

· As letras q, r e s denotam instâncias de relação.

· As letras t, u e v denotam tuplas.

· Em geral, o nome de uma relação tal como ESTUDANTE indica o conjunto atual de  tuplas na relação - instância corrente da relação - e ESTUDANTE(Nome, NSS, …) refere-se à relação esquema. · Os nomes de atributos são algumas vezes qualificados com o nome da relação na qual pertencem, por exemplo, ESTUDANTE.Nome ou ESTUDANTE.Anos.

 3. Explique os conceitos de super-chave, chave candidata e chave estrangeira?

R: Um conjunto de atributos de uma relação R que identifica univocamente cada tupla na relação R é chamada uma Super-chave. Chave é uma super-chave da qual não pode retirar nenhum atributo e ainda preservar-se propriedade d identificação unívoca. Chave Candidata é comum que exista mais de uma chave para uma mesma relação. Neste caso, cada uma das chaves é chamada de chave candidata. Quando uma relação esquema tem muitas chaves-candidatas, a escolha da chave primária é arbitrária; no entanto, é sempre melhor escolher a chave-primária com o menor número de atributos. Uma Chave Estrangeira ocorre quando um conjunto de atributos C
 4. Explique o conceito de integridade no MRel?  

 R: As restrições de chave e de integridade de entidade aplicam-se apenas a relações individuais. A restrição de integridade referencial é uma restrição que é especificada entre duas relações e é usada para manter a consistência entre tuplas de duas relações.
Informalmente, a restrição de integridade referencial estabelece que um tupla de uma relação que se refere à outra relação deve se referir a uma tupla existente naquela relação. Não existe uma representação formal para chave estrangeira. Normalmente, identifica-se um arco direto de cada chave estrangeira à relação que ela faz referência.

5. Explique o conceito de integridade referencial no MRel.
R: Uma Chave Estrangeira ou Integridade Referencial ocorre quando um conjunto de atributos C Informalmente, a restrição de entidade referencial declama que uma tupla em uma relação, que faz referência a outra relação, deve se referir a uma tupla existente nessa relação. O conceito de Integridade Referencial depende do conceito de Cahve Estrangeira.


6. Explique os conceitos de Intenção e Extensão no MRel. Quais são as operações de atualização sobre relações?

R: Foi introduzido por Codd (1970). Tornou-se um padrão de fato para aplicações comerciais, devido a sua simplicidade e performance. É um modelo formal, baseado na teoria matemática das relações. Um dos SGBD’s precursores que implementaram este modelo foi o System R (IBM). Baseado em seus conceitos surgiram: DB2 (IBM), SQL-DS (IBM), Oracle, Informix, Ingres, Sybase entre outros.
Intenção da relação -> Esquema da Relação R
Extensão da relação -> Estado da relação r(R)
Não há ordenamento de tuplas de uma relação (diferentemente de um arquivo)
Ordenamento de valores dentro de uma tupla n-tupla -> lista ordenada de n valores (ordem é importante na definição) Em nível lógico -> ordem não é importante, se houver correspondência entre atributo e valor Outra definição para relação:
Um esquema da relação R(A1, A2,…, An) é um conjunto de atributos

domingo, 22 de setembro de 2013

Trabalho de SGBD Sobre DB2

Modelo de Dados do Banco
       Estruturada Relacional
Um Banco de Dados Relacional é um banco de dados que segue o Modelo Relacional.Um Banco de Dados Relacional é um conceito abstrato que define maneiras de armazenar, manipular e recuperar dados estruturados unicamente na forma de tabelas, construindo um banco de dados. O termo é aplicado aos próprios dados, quando organizados dessa forma, ou a um Sistema Gerenciador de Banco de Dados Relacional (SGBDR)
Plataforma
       Windows
       Unix
       Linux
       z/OS (IBM)
Fabricante/Desenvolvedor
       IBM
No final do século XIX, nos Estados Unidos, o estatístico Herman Hollerith idealizou uma solução eficiente para o censo de 1890. Hollerith concebeu diversas máquinas elétricas para a soma e contagem de dados, os quais eram representados sob a forma de perfurações adequadamente distribuídas em  fita de papel.
Características Principais
       Capacidade de Armazenamento: Ilimitada
Versão do SQL utilizada
       SQL 2011 Core Standard
Vantagens
*         O IBM DB2 automatiza muitas tarefas, liberando assim os administradores do banco de dados de algumas das tarefas administrativas que são requeridas em outros bancos de dados.
*         A compressão do armazenamento do IBM DB2 faz com que necessite menos hardware de armazenamento para guardar seus dados, e isto o ajuda a reduzir suas necessidades de consumo de energia.
*         A IBM oferece um conjunto integrado de soluções de gestão de dados que facilita a colaboração dos analistas, arquitetos, desenvolvedores e administradores no trabalho com os dados.
*         O IBM DB2 possui um rendimento líder na indústria em múltiplos volumes de trabalho. Isto pode reduzir o uso de potentes servidores para dirigir seu banco de dados, o que lhe proporcionaria economia em licenças de software, suporte e custos de manutenção do banco de dados.
Clientes



História Evolutiva
O nome DB2 foi dado para o Sistema de Gerenciamento de Banco de Dados que a IBM lançou em 1983 baseado em SQL/DS para seu mainframe. A principio o produto foi chamado System R que fora iniciado em 1978. O projeto DB2 começou no inicio dos anos 70 quando Edgar Frank Codd, trabalhando para IBM descreveu a teoria dos Banco de dados Relacionais e publicou sua teoria em Junho de 1970. Para aplicar o modelo, Codd criou uma linguagem de banco de dados relacionais que a chamou de Alpha. Entretanto, a IBM não acreditava no potencial das suas ideias, deixando-o fora da supervisão do grupo de programadores, que violaram diversas ideias fundamentais do modelo relacional de Codd. O resultado foi a linguagem SEQUEL, que depois foi mudado para seu acrônimo SQL porque SEQUEL já era uma marca registrada.
Por muitos anos, DB2 foi feito exclusivamente para rodar nos mainframes da IBM. Posteriormente a IBM introduziu o DB2 para outras plataformas de servidores, incluindo o Unix e o Windows, para então colocar no Linux e PDAs. Esse processo foi feito na década 90. A inspiração para os detalhes de implementação do DB2 vieram da linguagem DL/1 da IBM e do Sistema de Gerenciamento de Informações também dessa empresa. As novas versões já são avaliadas para OS/2 e é chamada DB2/2.
Na metade do ano de 2006, a IBM anunciou o “Viper”, o codinome do DB2 9 para computação distribuídas e para DB2 9 no z/OS. A empresa diz que o novo DB2 será o primeiro banco de dados relacional que armazena o XML nativo. Outros recursos incluem o desenvolvimento baseado em OLTP para computação distribuídas, o desenvolvimento baseado em Business intelligence e  data warehousing para z\OS, mais recursos de auto configuração e auto gerenciamento, adição de recursos para a plataforma 64-bits (especialmente para z/OS), melhoria na performance do armazenamento estruturado para z/OS e a continuação da padronização do vocabulário da linguagem SQL entre z/OS e outras computação distribuídas.

Contato com a IBM-Brasil


Referencias

*         http://pt.wikipedia.org/wiki/DB2 (Não Oficial)


Alunos:

Elliot Portugal Silva
Ezequiel Ribeiro Da Silva Junior
Guilherme Vertuan Napolitano
Willian Rodrigues Da Silva 




sexta-feira, 13 de setembro de 2013

Perguntas & Respostas Banco de Dados 1

Alunos: Elliot Portugal
                Ezequiel Junior
                            Guilherme Napolitano
           William Silva

1) O que é e como funciona o armazenamento de dados em arquivo?


Sistema de Banco de Dados consiste em uma coleção de dados inter-relacionados e uma
coleção de programas para prover o acesso a estes dados.

O armazenamento e feito em hds ou servidores.


2) O que é e como funcionam os SBGD? Explique a evolução dos arquivos, passando pelo BD até SGBD.


Um Sistema Gerenciador de Banco de Dados (SGBD) é o conjunto de softwares responsáveis pelo gerenciamento de uma base de dados, ele consiste em uma coleção de dados inter-relacionados e uma coleção de programas para prover o acesso a esses dados. O objetivo principal de um SGBD é prover um ambiente que seja adequado e eficiente para uso na recuperação e armazenamento de informações. Ele passou pelas seguintes evoluções: Sistemas de arquivos BD em rede BD hierárquico BD relacional Linguagem de orientada a Objeto Hipermídia Inteligência Artificial.


3) Quais são os tipos de conexão existentes com BD? Explique-as.


  • Time sharing: esta conexão é realizada em tempo real

  • Servidor de arquivos: conexão somente para armazenamento de dados

  • Cliente-servidor: servidor de dados e de manutenção de arquivos por usuários

  • Servidor de aplicações: servidor de aplicações em geral Servidor

  • Web: exclusivo para web


4) Quais são os modelos de dados existentes? Explique-os.


Modelo Hierárquico: Os dados estão estruturados em hierarquias ou árvores.Os nós das hierarquias contêm ocorrências de registros, onde cada registro é uma coleção de campos (atributos) cada um contendo apenas uma informação. O registro que em uma hierarquia precede outros se designa registro-pai dos outros registros que são chamados de registros-filhos. Uma ligação é uma associação entre dois registros.

  • Modelo em Rede:No modelo em rede os registros estão organizados em grafos. Nele aparece um único tipo de associação (set), que define uma relação de 1: N entre 2 tipos de registros: proprietário e membro.

  • Modelo Relacional: O modelo relacional apareceu devido a seguintes necessidades: aumentar a independência de dados nos sistemas gerenciadores de banco de dados; prover um conjunto de funções apoiadas em álgebra relacional para armazenamento e recuperação de dados; O Modelo relacional revelou-se ser o mais flexível e adequado ao solucionar os vários problemas que se colocam ao nível da concepção e implementação da base de dados. A estrutura fundamental do modelo relacional é a relação. Uma relação é constituída por um ou mais atributos (campos), que traduzem o tipo de dados a armazenar.

  • Modelo Orientado a Objetos: A habilidade para criar os tipos de dados necessários é uma característica das linguagens de programação orientada a objetos. Estes sistemas, porém, necessitam guardar representações das estruturas de dados que eles usam no armazenamento permanente. A estrutura padrão para o banco de dados objeto foi feita pelo Grupo de gerenciamento dados objetos (ODMG).

  • Sistemas Objetos-Relacionais: A área de atuação dos sistemas Objeto-Relacional tenta suprir a dificuldade dos sistemas relacionais convencionais, que é o de representar e manipular dados complexos. A solução proposta é a adição de facilidades para manusear tais dados utilizando-se das facilidades SQL existentes. Para isso foi necessário adicionar: extensões dos tipos básicos no contexto SQL; representações para objetos complexos no contexto SQL; herança no contexto SQL; sistema para produção de regras.


5) Quais são os aspectos relevantes que devem ser considerados para atingir a eficiência e eficácia do sistema informatizado? (na visão do BD).

A principal meta da arquitetura “três esquemas”  é separar as aplicações do usuário do banco de dados físico. Os esquemas podem ser definidos como:
  •  nível interno: ou esquema interno, o qual descreve a estrutura de armazenamento físico do banco de dados; utiliza um modelo de dados e descreve detalhadamente os dados armazenados e os caminhos de acesso ao banco de dados;
  •  nível conceitual: ou esquema conceitual, o qual descreve a estrutura do banco de dados como um todo; é uma descrição global do banco de dados, que não fornece detalhes do modo como os dados estão fisicamente armazenados;
  • nível externo: ou esquema de visão, o qual descreve as visões do banco de dados para um grupo de usuários; cada visão descreve quais porções do banco de dados um grupo de usuários terá acesso

6) Quais são as arquiteturas de SGBD’s? Explique-as.


As arquiteturas de SGBD's são , Plataformas centralizadas , Sistemas de Computador Pessoal , Banco de Dados Cliente-Servidor, Banco de Dados Distribuídos (N camadas).

Plataformas centralizadas - Na arquitetura centralizada, existe um computador com grande

capacidade de processamento que é o hospedeiro do SGBD e emuladores para os vários
aplicativos. Esta arquitetura tem como principal vantagem a segurança em poder manipular
grande volume de dados com muitos usuários. Sua principal desvantagem está no fato de se
ter alto custo, pois se deve ter ambiente especial para mainframes e soluções centralizadas.

Sistemas de Computador Pessoal - Os computadores pessoais trabalham em sistema
stand-alone, ou seja fazem seus processamentos sozinhos. No começo esse processamento
era bastante limitado, porém com a evolução do hardware temos hoje PCs com grande
capacidade de processamento. Eles utilizam o padrão Xbase e quando se trata de SGBDs
funcionam como hospedeiros e terminais, desta maneira possuem um único aplicativo a ser
executado na máquina. A principal vantagem desta arquitetura é a simplicidade

Banco de Dados Cliente-Servidor - Na arquitetura Cliente-Servidor o cliente (front_end)
executa as tarefas do aplicativo, ou seja fornece a interface com o usuário (tela, e
processamento de entrada e saída). O servidor (back_end) executa as consultas no DBMS e
retorna os resultados ao cliente. Apesar de ser uma arquitetura bastante popular, para poder
implementá-la são necessárias soluções de softwares sofisticados que possibilitem: tratamento
de transações, confirmações de transações (commits), desfazer uma transação (rollbacks),
linguagens de consultas (stored procedures) e gatilhos (triggers). A principal vantagem desta
arquitetura é dividir o processamento entre dois sistemas reduzindo o tráfego de dados na
rede.


Banco de Dados Distribuídos (N camadas) - Nesta arquitetura a informação esta distribuída
em diversos servidores. Cada servidor atua como no sistema cliente-servidor, porém as11
consultas oriundas dos aplicativos são feitas para qualquer servidor indistintamente. Caso a
informação solicitada seja mantida por outro servidor ou servidores, o sistema encarrega-se
de
obter a informação necessária, de maneira transparente para o aplicativo, que passa a atuar
consultando a rede, independente de conhecer seus servidores. Exemplos típicos são bases
de dados corporativas, em que o volume de informação é muito grande e deve ser distribuído
por diversos servidores.

quinta-feira, 13 de junho de 2013

Modelagem de Sistema Orientada a Objetos


SISTEMA DE BIBLIOTECA

A Biblioteca de uma Instituição de Ensino Superior (IES) necessita de um Sistema Informatizado para Cadastro dos Livros de seu acervo, onde para cada livro deverão estar armazenadas as seguintes informações: Primeiro Autor e Demais Autores, Titulo da Obra, Editora, Ano da Publicação, Código ISBN, Idioma, Área e Subárea, Data do Tombo e Código de Catagolação.
A atividade de incluir tais informações sobre um livro no Cadastro ou a alteração de algum dado sobre os mesmos é de responsabilidade dos Bibliotecários.
Uma vez armazenados em uma Base de Dados, tais obras precisam ser consultadas pelos Usuários da Biblioteca (Alunos, Professores e Outros), pelo sobrenome dos Autores (do Primeiro ou dos Demais), ou pelo Título (o título completo com palavras presentes nesses títulos), ou para se saber quais os tipos de uma determinada Área ou Subárea.
Identicificado um livro, os Bibliotecários, também precisam realizar consultas para saber o seu Código de Catalogação, que geralmente identifica a posição, estante e prateleira onde o mesmo se encontra na Biblioteca, e também precisam verificar se o livro está presente ou foi retirado por empréstimo, a data de retorno para o exemplar e, ainda, se há outros exemplares desse livro, bem com a situação desses.
Para que a pessoa possa retirar um livro, este deve ter os seus dados cadastrados em um banco de dados. Esses dados são: código, nome, data de nascimento, cargo, data da comtratação, salário.
Para efetuar uma retirada deve ser informado o título do livro, o código da pessoa, a data da retirada, a data de retorno, e o código do funcionário. Estes dados devem estar disponíveis para impressão.
Deve ser usada na implementação a pesquisa por SQL. O sistema deve possuir Help para ajudar os usuários. Na inserção dos dados na tela, os campos que estão com foco devem estar em destaque. O sistema deve ter uma tela com login e senha.




Modelagem Banco de Dados



Diagrama Caso de Uso




Diagrama de Atividades


Diagrama de Classes



Diagramas de Componentes


Diagrama de Estados




Diagramas de Sequencias



Nomes:
  • Charleane Maria da Silva
  • Eduarda Mônica Lazaro Beless
  • Guilherme Vertuan Napolitano
  • William Rodrigues da Silva

quinta-feira, 18 de abril de 2013

Engenharia Reversa




Sistemas de Informação 5º semestre


Engenharia Reversa

Introdução
Não há um registro inicial de utilização da engenharia reversa, sabe-se que quando ela surgiu suas primeiras aplicações foram em equipamentos militares, para que se alcançasse a superioridade militar. A espionagem industrial também encontrou na Engenharia Reversa um poderoso aliado para a “criação” de equipamentos concorrentes.
No ano de 1945 três bombardeiros americanos, modelo B-29, foram forçados a pousar em território Russo, os soviéticos por sua vez os desmontaram e estudaram. Utilizando a Engenharia Reversa para copiá-los nos mínimos detalhes, o resultado foi o bombardeiro TUPOLEV Tu-4 que voou pela primeira vez em 19 de maio de 1947.
Após a 2ª guerra mundial muito da tecnologia japonesa foi desenvolvida através da desmontagem de produtos ocidentais para posterior análise e a sua reinvenção. Dessa forma, investiu-se menos tempo e recursos com pesquisa e desenvolvimento, cabendo à equipe de Engenharia reduzir estágios no desenvolvimento de um produto focando apenas em sua análise e melhoria, hoje sabemos que essas técnicas não são aceitas, as leis de patentes agora são mais rígidas, mas o Japão naquele período se beneficiou muito dessa fragilidade. Os principais produtos que o Japão reinventou foram os eletroeletrônicos e os automóveis.

O que é Engenharia Reversa?

A engenharia reversa visa apropriar-se de novos conceitos estratégicos a partir de desconstrução de modelos ou soluções prontas. Essa prática pode ser considerada como o processo de análise de um produto físico ou virtual, como aparelhos, programas de computador, ou mesmo modelos de negócio, compreendendo os detalhes do funcionamento. A engenharia reversa pode nos ajudar a desenvolver o objeto de estudo, ou mesmo produzir algo completamente novo, a partir dos dados coletados, sem qualquer semelhança com o original. A engenharia reversa não pode ser considerada uma espécie de cópia, pois se trata apenas do estudo daquilo que foi criado; a cópia é somente uma das consequências possíveis do estudo de um produto ou ideia.
Desde a sua primeira utilização, a engenharia reversa cresceu muito, e hoje possibilita desde o entendimento e melhoria daquilo que se estuda, até a descoberta de segredos industriais e comerciais.

Exemplos de utilização da Engenharia Reversa

Um fabricante se quiser saber como o processador do concorrente funciona, pode comprá-lo, fazer a engenharia reversa, e criar um processador similar. Como aconteceu com a fabricante de processadores AMD, conseguiu fazer uma cópia exata do processador Intel 8080 no ano de 1975. A empresa provavelmente comprou alguns processadores da Intel, abriu-os e os estudou detalhadamente, conseguindo criar uma cópia perfeita através de tentativas e erros.
A pirataria de CDs e DVDs utiliza a engenharia reversa para descobrir como funciona a proteção anticópia dos discos e removê-la.
Pode ser usada também para fins acadêmicos, tanto no campo da pesquisa, quanto na área de conhecimento. Tecnologias antigas têm uma grande carência de documentação descritiva. A engenharia reversa permite que a documentação seja elaborada e a tecnologia velha seja especificada.
Vários empreendedores de grande parte das empresas abandonam a realização do planejamento inicial e a documentação para o desenvolvimento de um projeto, por considerarem uma tarefa irrelevante e medíocre para investir em recursos financeiros e tempo, preocupando-se mais com a execução da implementação. Com o decorrer do tempo serão fundamentais novas adaptações por apresentarem falhas durante a operação do projeto, sendo necessárias novas revisões, reparos e retrabalhos. Essa é a ideia da utilização da engenharia reversa fazer com que não haja prejuízos, permitindo obter não melhores resultados, mas resultados, ponto.

Por que a Engenharia Reversa na Informática?

A Engenharia Reversa, na área tecnológica, trabalha para resolver situações tais como:
  • Implantação antiga de sistemas, com linguagens de programação ultrapassadas.
  • Documentação escassa, falta de atualização das informações.
  • Sistemas que são criados por funcionários que não trabalham mais na empresa.
  • Existem métodos complexos, ou não existem métodos.

 O sistema é implementado por vários programadores, com métodos e formas diferentes de programação.
Existe a necessidade de evolução do sistema:
  • Ser adaptado a novas tecnologias.
  • Atender a novas regras.
  • Atualizar novas funcionalidades que outras empresas usam.
  • Para corrigir erros.

A engenharia reversa pode atuar em casos de sistemas como o exemplo acima, ou de dados.
Por exemplo, se for necessário criar um software que tenha uma ligação com um sistema, é preciso que seja entendido como esse sistema retornaria os resultados para poder desenvolver o novo software. O outro caso, transportar um banco de dados relacional para um banco de dados orientado a objeto.
 No caso do software, existe uma restrição de interface, onde as novas implementações devem seguir o padrão do sistema antigo.
Salvo lembrar que estas situações são bem frequentes.


Exemplos de Engenharia Reversa na Informática

IBM-PC compatível: A IBM abriu mão da patente de sua plataforma, deixando o caminho livre para qualquer pessoa produzir uma maquina que fosse compatível com o IBM-PC. Assim surgiram vários clones do IBM-PC
Samba: Software que permite sistemas que não estão rodando o Microsoft Windows® a compartilhar arquivos com sistemas que estão. A engenharia reversa foi utilizada para descobrir como o compartilhamento de arquivos do Windows funcionava, para que então computadores que não estivessem com a plataforma Windows pudessem emular a mesma.

Wine: Programa que funciona como a API do Windows. Permite executar aplicativos desenvolvidos para Windows 3.1X, 9X, NT, 200x no GNU/Linux.
OpenOffice.org: É um conjunto de aplicativos em OpenSource (código aberto). Está disponível para diferentes plataformas: incluindo Microsoft Windows, Unix, Solaris, Linux e Mac OS X. A Suite é compatível com o Microsoft Office.

Reengenharia

Pensando na engenharia reversa, temos que ela consiste em apenas analisar o sistema ou a ferramenta para que possa ser criada uma representação da mesma. No caso da Reengenharia temos que o sistema é analisado, cria-se uma representação, obtendo a representação cria-se uma nova estrutura que funcione exatamente como o sistema analisado, porém  com qualidades que não a torne uma cópia. 




Definição de Engenharia Reversa de software.

Por definição temos que: “A engenharia reversa consiste em analisar um determinado sistema para criar representações, do próprio em um nível mais alto de abstração.”
Também pode ser encontrada como: “Voltar atrás no ciclo de desenvolvimento do software”.
Na parte prática, encontramos duas formas de engenharia reversa de software:
Com código-fonte: Tendo o código disponível, porém com a documentação em falta, e aspectos não muito atuais.
Sem código-fonte: Sendo que, necessita de grandes esforços para se descobrir uma possível fonte do código para o software, que são considerados como engenharia.


Técnica de Engenharia Reversa com Código Fonte.

  • Extração das informações:O primeiro trabalho que se deve fazer é coletar informações sobre o sistema a ser estudado.As atividades da engenharia reversa se fazem sobre essas informações extraídas, mais do que sobre o próprio sistema.As informações podem ser extraídas de várias fontes: o código fonte, a execução, os dados (por exemplo, em banco de dados), a “documentação”, ou outras fontes.

  • Código:A primeira fonte, o código, é a mais usada. A análise do código é chamada também de análise estática (por oposição à análise dinâmica que é a execução do sistema).Quais são os componentes básicos do sistema: arquivos, rotinas, tipos, variáveis, classes, relações de definição conectam um componente com seu conteúdo.Ferramentas para fazer essa análise são chamadas de “parser”. O “parsing” é a primeira etapa da compilação do código fonte. Para fazer isso, é preciso conhecer a sintaxe da linguagem de programação usada, podendo ser usado parsers específicos dependendo das necessidades. Por exemplo, num programa Pascal onde podemos extrair o nome de todas as funções definidas.

  • Trace de execução (Análise dinâmica):A análise estática pode extrair muitas informações de um programa, mas nem todas. Por exemplo, qual parte de uma instrução IF é realmente usada pode depender dos dados com que o programa foi chamado. Para descobrir esse tipo de informação, precisamos da análise dinâmica, que consiste em executar o programa e monitorar os valores das variáveis, quais funções são chamadas.

  • Dados:Os bancos de dados podem ser usados como fonte de informação para ajudar na engenharia reversa de um sistema. Mas a engenharia reversa de dados é também um trabalho específico que pode ser feito independentemente de qualquer sistema que possa manipular esses dados.

  • Documentação:Chamamos de documentação tudo o que não está sendo usado pelo computador para fazer funcionar o sistema, mas que são usados pelos engenheiros de códigos, relatórios, diagramas da análise ou do projeto, como ela se destina aos seres humanos ela é difícil de analisar automaticamente. A abordagem mais usada é usar as palavras da documentação, partindo do preceito de que os conceitos mais importantes aparecem com mais frequência nas documentações.

  • Anomalias no Código:Num software legado, o código pode conter várias anomalias, como partes do programa que nunca podem ser executadas (código morto) e trechos de código que foram copiados e levemente modificados. Essas anomalias complicam o código inutilmente, fazendo ele mais longo do que deveria ser e multiplicando as coisas que um programador tem que estudar e entender. Para resolver esse problema podemos deletar o código morto, e no caso dos clones podemos modificar o código para suprimi-los ou então comentar o código dizendo que existem clones.

  • Encapsulamento:O encapsulamento é mais uma técnica de reengenharia do que de engenharia reversa. Em vez de reestruturar um sistema, ela propõe esconder o velho código dentro de uma nova camada.“Slicing” (fatiar)É uma técnica de decomposição do código de acordo com a utilização das variáveis. O slicing de uma parte do código que consiste em extrair dela todas as instruções que têm uma influência sobre o valor de uma variável a um ponto definido do código. Isso pode ajudar na localização de um bug (erro no valor da variável), limitando a pesquisa nas únicas instruções realmente necessárias.Existem também os “clichês”, que são um padrão que descreve uma maneira geral de implementar um conceito de programação. A atividade de reconhecimento de clichês trabalha com um banco de clichês e procura esses clichês no código. A ideia é que um clichê é implementado com várias linhas de código. Reconhecer um clichê pode simplificar o código porque isso vai substituir um só conceito a essas linhas.


Técnica de Engenharia Reversa sem Código Fonte

A engenharia reversa pode ser realizada de vários modos, se tivermos em mãos o código fonte de um programa é um método, se não outro.  Aqui abordaremos algumas técnicas de engenharia reversa sem o código fonte, pois não é sempre que um programa é open source (código fonte aberto), por esse motivo algumas ferramentas são utilizadas para que possamos adquirir o código fonte de um determinado programa.
Entre esses métodos de engenharia reversa, os três métodos mais utilizados são:

  • Análise de fluxo de dados: Nesse método é utilizada a observação da troca de informações barramentos (analisadores de bus) e de análise de pacotes rede (pacotes de sniffers). Com a observação do comportamento dos dados nos barramentos do computador ou na rede, pode ser feita uma análise específica de tudo para conseguirmos realizar uma nova implementação do software, que irá realizar o mesmo procedimento do outro. Esse método é mais utilizado na engenharia reversa de drivers e dispositivos, isso não significa que não possa ser utilizada na de software.
  • Dessassemblar: Com a utilização de um desassembler, é possível obter a linguagem de máquina de um certo software. Com a obtenção da linguagem de máquina é necessário um programa que faça a leitura dessa linguagem, para que possamos realizar a criação de um novo software. Esse método pode ser usado em qualquer programa de computador sendo essa sua vantagem, porém, sua desvantagem é a demora para decodificar a linguagem de máquina.
  • Decompilação: Para a utilização desse método é necessário um decompilador, esse decompilador tem como tarefa, tentar recriar o código fonte de um programa em uma linguagem de alto nível, tendo como base do programa original apenas a o código de máquina.


Aspectos legais sobre engenharia reversa

A engenharia reversa pode gerar problemas de legalidade, como uma empresa querendo criar uma cópia, ou seja, plagiar um produto da concorrente, gerando problemas judiciais. No entanto a questão legal depende das leis de cada país.  E mesmo assim, existem países que não possuem leis específicas sobre o assunto.

Leis aprovadas nos países

  • Estados Unidos: Em 1998, uma das leis mais conhecidas é o "Digital Millenium Copyright Act", possui várias maneiras de proteger direitos autorais na informática como também faz restrições em relação à engenharia reversa, visando analisar compatibilidade com outros softwares / hardwares.
  • União Européia: Em 2001, similar à lei dos Estados Unidos, o “EU Copyright Directive" não possui muitas restrições. Caso o objetivo final da engenharia reversa seja a cópia de algum programa ou quebra de patente com objetivos lucrativos a lei entra em vigor, se possuir fins acadêmicos ou de compatibilidade, a principio não são restritivas.
  • Suíça: Em 1986, "A Lei Suíça de Concorrência Desleal" tem característica bastante curiosa e polêmica a respeito do assunto, exige-se dos competidores a realização de investimentos em engenharia reversa mesmo quando a tecnologia não seja secreta. Não possuindo prazo e limites, os tribunais suíços têm rejeitado ou limitado severamente à aplicação.
  • Japão: Em 1993, "A Lei Japonesa de Concorrência Desleal", proibi a imitação servil, mesmo no caso de produtos não patenteados, nem protegidos por direitos autorais. A lei impõe limites claros à aplicação da norma de apropriação ilícita: o "lead time" vigora apenas por três anos, as ideias e os conceitos básicos não são protegidos, ressalva-se o caso de modificações ou aperfeiçoamento técnico efetuado pelo competidor com base no item copiado, a necessidade de padronização e compatibilização de produtos e o uso de elementos de caráter estritamente funcional. A proibição de imitação não impede o progresso técnico, ressalva o domínio das patentes para proteger ideias e conceitos, e o interesse social na padronização e compatibilização industrial.
  • Brasil: Não existe uma lei específica sobre o assunto.

Ocorrendo a engenharia reversa, costuma-se proceder de duas maneiras:
  •  Caso a engenharia reversa não tenha como objetivo a pirataria ou infração de algum direito autoral, não é considerado crime.
  •  Caso contrário, a "Lei de Software" e também de "Lei de Direitos Autorais" protege seus criadores.

Apesar de existirem algumas leis e acordos sobre a legalização, autenticação, contra a pirataria de software/hardwares desenvolvidos, irrelevante do país, os problemas legais relacionados à engenharia reversa são bastante comuns e difíceis de serem resolvidos.












Bibliografias:
http://www.inf.ufpr.br/silvia/ES/reengenharia/reengenharia.pdf
http://www.tecmundo.com.br/pirataria/2808-o-que-e-engenharia-reversa.htm#ixzz2Ow71XNTC
http://mundoestranho.abril.com.br/materia/o-que-e-engenharia-reversa
http://www.adelcio.com.br/arquivos/2012_01_Eng_SoftwareII/6%20-%20Engenharia%20Reversa.pdf