Soluções        Serviços          Atendimento       Governo        Consultoria T.I      Treinamento
Software

Pela definição oficial brasileira, uma nota fiscal eletrônica (NF-e) é "um documento de existência apenas digital, emitido e armazenado eletronicamente, com o intuito de documentar uma operação de circulação de mercadorias ou uma prestação de serviços, ocorrida entre as partes".

É um instituto oficial de fiscalização tributária, em vigor desde o dia 15 de setembro de 2006, e que substitui a nota fiscal impressa modelos 1 e 1A, havendo a previsão de estender a substituição a outros modelos de notas fiscais.

Índice

  • 1 Histórico e aspectos legais
  • 2 Posição atual
  • 3 Versões
  • 4 Obrigatoriedade de Uso
  • 5 Tecnologia
  • 6 Referências
  • 7 Ligações externas

Histórico e aspectos legais

Exemplo de Documento Auxiliar da Nota Fiscal Eletrônica (DANFE).

Teve origem em uma parceria entre o ENCAT (Encontro Nacional dos Administradores e Coordenadores Tributários Estaduais) e a Receita Federal do Brasil.

É o pioneiro de três subprojetos que integram um programa do governo federal chamado SPED (Sistema Público de Escrituração Digital da Receita Federal), a saber, escrituração contábil, escrituração fiscal e nota fiscal eletrônica. A fase de projeto piloto da Nota Fiscal Eletrônica foi iniciada em 2005, compreendendo as secretarias de fazenda de 6 estados e várias grandes empresas. Hoje recebem a NF-e os seguintes estados: Goiás, Rio Grande do Sul, São Paulo, Bahia, Maranhão e Santa Catarina.

A Emenda Constitucional nº 42, aprovada em 19 de dezembro de 2003, introduziu o Inciso XXII ao art. 37 da Constituição Federal, que determina às administrações tributárias da União, dos Estados, do Distrito Federal e dos Municípios a atuar de forma integrada, inclusive com o compartilhamento de cadastros e de informações fiscais.

Para atender o disposto Constitucional, foi realizado, em julho de 2004, em Salvador, o I ENAT - Encontro Nacional de Administradores Tributários, reunindo o Secretário da Receita Federal, os Secretários de Fazenda dos Estados e DF, e o representante das Secretarias de Finanças dos municípios das Capitais.

O encontro teve como objetivo buscar soluções conjuntas nas três esferas de Governo que promovessem maior integração administrativa, padronização e melhor qualidade das informações; racionalização de custos e da carga de trabalho operacional no atendimento; maior eficácia da fiscalização; maior possibilidade de realização de ações fiscais coordenadas e integradas; maior possibilidade de intercâmbio de informações fiscais entre as diversas esferas governamentais; cruzamento de informações em larga escala com dados padronizados e uniformização de procedimentos.

Em consideração a esses requisitos, foram aprovados dois Protocolos de Cooperação Técnica, um objetivando a construção de um cadastro sincronizado que atendesse aos interesses das administrações tributárias da União, dos Estados, do Distrito Federal e dos Municípios e, outro, de caráter geral, que viabilizasse o desenvolvimento de métodos e instrumentos que atendessem aos interesses das respectivas Administrações Tributárias.

Em agosto de 2005, no evento do II ENAT - Encontro Nacional de Administradores Tributários, em São Paulo, o Secretário da Receita Federal, os Secretários de Fazenda dos Estados e DF, e os representantes das Secretarias de Finanças dos municípios das Capitais, buscando dar efetividade aos trabalhos de intercâmbio entre os mesmos, assinaram os Protocolos de Cooperação nº 02 e nº 03, com o objetivo de desenvolver e implantar o Sistema Público de Escrituração Digital e a Nota Fiscal Eletrônica.

O Sped, no âmbito da Receita Federal, faz parte do Projeto de Modernização da Administração Tributária e Aduaneira (PMATA) que consiste na implantação de novos processos apoiados por sistemas de informação integrados, tecnologia da informação e infra-estrutura logística adequados.

A NFe atende as normas definidas no projeto da SEFAZ e sua validade jurídica é garantida pela assinatura digital do emitente e recebimento pelo fisco.

Posição atual

No dia 15 de setembro de 2006, em GO e RS, foram emitidas as primeiras NF-e com validade tributária. Desde então a Nota Fiscal Eletrôncia deixou o status de projeto piloto, tornando-se um instituto oficial de controle fiscal recebido pelas Secretarias de fazenda de vários outros estados.

O Protocolo ICMS 10, de 18 de abril de 2007 instituiu a obrigatoriedade do uso da NF-e para empresas do setor de combustíveis e cigarro. Há previsão de que a adesão se torne compulsória também para as 12.000 maiores empresas ainda em 2008. Mesmo sendo a adesão opcional, empresas de outros setores diversos voluntariamente optaram por antecipar a sua participação, atraídas pela redução de custos diretos e indiretos, e determinadas também estudar a mudança gozando de mais tempo para a adaptação.

Versões

As versões dos protocolos/XMLs foram criadas para melhorar a quantidade e a qualidade dos dados que são informado a receita. Uma diferença que se pode ver da versão 1.00 para a versão 2.00 é a possibilidade de Itens sem incidência fiscal no corpo da nota e identificação do enquadramento da empresa, como o Simples Nacional.[1]

  • Versão 1.00
  • Versão 2.00 (Atual)

Obrigatoriedade de Uso

O Protocolo ICMS 42/09 objetiva escalonar a ampliação da obrigatoriedade de uso da NF-e de forma que, até o final de 2010, estejam alcançados por esta obrigatoriedade todos os contribuintes do ICMS que se enquadrem em pelo menos uma das seguintes situações:

  • desenvolvam atividade industrial;
  • desenvolvam atividade de comércio atacadista ou de distribuição;
  • pratiquem saídas de mercadorias com destino a outra unidade da Federação;
  • forneçam mercadorias para a Administração Pública.

A obrigatoriedade da emissão de nota fiscal eletrônica engloba empresas de todos os tamanhos, incluindo as optantes pelo Simples Nacional.

Tecnologia

No site oficial do projeto encontra-se um documento que define o comportamento dos sistemas de informação para o processamento de notas eletrônicas nas secretarias de fazenda estaduais. A especificação define o uso de padrões abertos de tecnologia, não impondo o uso de nenhuma solução proprietária. Dentre as muitas vantagens de usar padrões abertos, aproveita-se o conhecimento prévio dos desenvolvedores adquirido em outras atividades que utilizavam as mesmas tecnologias, mesmo não estando relacionadas à nota fiscal eletrônica.

Dentre as principais tecnologias envolvidas figuram:

  • WebServices
  • XML
  • Certificados X.509
  • Soap 1.2

Referências

  1. ↑ Manual do Usuário[1]

Ligações externas

  • Página oficial do projeto
  • Manual de Integração do Contribuinte
  • Perguntas Frequentes NF-e
Obtida de "http://pt.wikipedia.org/w/index.php?title=Nota_fiscal_eletr%C3%B4nica&oldid=27308642"

Software

 

Toda a informação será disponibilizada através do site da secretaria de Ciência e Tecnologia do DF.
previsão de edital (sem previsão) acompanhar por telefone este processo com:
Lilian - Sec executiva grupo de governança (RESPONSÁVEL PELO PROJETO). (61)3462-8889
GERAL - (61)3462-8888 (cidade digital) site da Secretaria de Ciência e Tecnologia do DF.
http://www.sect.df.gov.br/

Parque Tecnológico Capital Digital deve estar concluído até 2014
Para evitar especulação, nenhuma das empresas terá a posse dos terrenos ocupados

O governador do Distrito Federal, Agnelo Queiroz, assinou, na manhã de ontem, um decreto que define o funcionamento do Parque Tecnológico Capital Digital (PTCD). Também conhecido como Cidade Digital, o polo científico ficará sob responsabilidade da Secretaria de Ciência e Tecnologia. A intenção é trazer empresas estrangeiras para a região, incrementando o desenvolvimento econômico e tecnológico do DF. Até 2014, o governo espera que o parque esteja em pleno funcionamento, com 80 mil novos empregos criados, e que o projeto eleve o faturamento no setor de Tecnologia da Informação e Comunicação (TIC) de R$ 2,5 bilhões para R$ 5 bi.

A área destinada ao polo deverá sediar essas empresas, escolas técnicas de nível médio e superior, laboratórios e o Complexo Datacenter BB-Caixa, do Banco do Brasil e da Caixa Econômica Federal (CEF). O complexo já está em construção, tendo recebido um investimento de R$ 4 bilhões. As empresas receberão incentivos fiscais. Com projeto elaborado há quase 12 anos (veja Memória), o polo, segundo espera o GDF, deverá atrair, até 2014, 10 empresas de relevância internacional. Segundo o governo, grupos de informática, como a Microsoft, a Intel e a Oracle, já teriam demonstrado interesse.


MISSÃO
“Promover desenvolvimento, emprego, renda e qualidade de vida na região”

VISÃO
“Ser um ambiente de inovação para produzir soluções tecnológicas de excelência e competitivas no mercado globalizado”

OBJETIVOS
•         Tornar a indústria da tecnologia da Informação e Comunicação (TIC) do Distrito Federal uma das mais evoluídas e competitivas do mundo;
•         Promover e desenvolver a economia do Distrito Federal e região por meio da Tecnologia da Informação e Comunicação;
•         Atrair investimento para o Parque Tecnológico Capital Digital – PTCD;
•         Transformar o Parque tecnológico Capital Digital – PTCD em agente indutor de Políticas de TIC e de inovação para o país;
•         Estimular a integração entre o setor produtivo, academia e governo.


Para garantir que a finalidade seja cumprida, o GDF transformou o parque em uma sociedade entre a Companhia Imobiliária de Brasília (Terracap), dona do terreno; o governo, a Universidade de Brasília (UnB) e a Universidade Católica de Brasília (UCB). Investidores do setor privado serão definidos após um processo de licitação previsto para o período de 15 de maio a 21 de junho. Além disso, as empresas que se instalarem no parque não terão posse da terra: alugarão o terreno. Foi a forma que o GDF encontrou para impedir que o PTCD vire alvo de especulação imobiliária.

A expectativa é que as etapas burocráticas da implantação se encerrem na metade do ano, após a licitação. Segundo Agnelo, o prazo significará “uma mudança de paradigma, de modelo de desenvolvimento econômico”, e é curto. “Quase todas as secretarias estão envolvidas no projeto. Já partimos para a implantação propriamente dita. Vamos discutir e debater com o governo federal e com a sociedade para dar segurança jurídica e condições atrativas para as empresas. Temos um calendário. Vamos cumprir todas as etapas internas de preparação até o meio do ano”, declarou.

1) Grupo de Governança

Decreto:
DECRETO Nº 32.730, DE 27 DE JANEIRO DE 2011

DO-DF de 28/01/2011
Dispõe sobre o Parque Tecnológico Capital Digital e dá outras providências.
O Governador do Distrito Federal, no uso das atribuições que lhe confere o disposto no art. 100, inciso VII, da Lei Orgânica do Distrito Federal e tendo presente os termos da Lei Complementar nº 679, de 30 de dezembro de 2002, da Lei Complementar nº 734, de 22 de dezembro de 2006, da Lei Complementar nº 741, de 10 de outubro de 2007, do Convênio PROJU/NUTRA nº 283/2009 e da Decisão nº 02/2007, da 58ª Reunião Ordinária do Conselho de Planejamento Territorial e Urbano do Distrito Federal,
Decreta:
Art. 1º – O Parque Tecnológico Capital Digital – PTCD será administrado nos termos deste Decreto, por uma Governança.
Art. 2º – A Governança do Parque Tecnológico Capital Digital consiste em colegiado constituído pelos seguintes órgãos governamentais, entidades do setor produtivo e instituições universitárias:
I – Secretaria de Estado de Ciências e Tecnologia do Distrito Federal, a quem caberá a Coordenação da Governança do PTCD;
II – Secretaria de Estado de Desenvolvimento Econômico;
III – Companhia Imobiliária de Brasília – Terracap;
IV – Federação das Indústrias do Distrito Federal;
V – Serviço de Apoio às Micros e Pequenas Empresas do Distrito Federal – SEBRAE/DF;
VI – Universidade de Brasília – UnB;
VII – Universidade Católica de Brasília – UCB.
Art. 3º – Compete à Governança do Parque Tecnológico Capital Digital:
I – Gerir os estudos, os projetos, a implantação e o funcionamento do PTCD;
II – Executar o Programa de Trabalho do PTCD;
III – Providenciar a criação da entidade gestora do PTCD;
IV – Dispor sobre seu funcionamento, o custeio de suas atividades e sobre as providências necessárias à execução dos seus trabalhos;
V – Escolher sua Secretaria Executiva;
VI – Aprovar seu Regimento Interno;
VII – Elaborar relatório mensal e circunstanciado das atividades realizadas e providências necessárias ao regular desenvolvimento do PTCD.
Art. 4º – A Secretaria de Estado de Ciência e Tecnologia do Distrito Federal, exercerá a coordenação das atividades e iniciativas dos órgãos do Governo do Distrito Federal em relação ao Parque Tecnológico Capital Digital.
Parágrafo único. Os órgãos e entidades da Administração Direta e Indireta do Governo do Distrito Federal darão apoio operacional, administrativo, financeiro e logístico à Governança do PTCD, nos limites de suas competências e atribuições.
Art. 5º – Este Decreto entra em vigor na data de sua publicação, revogados o Decreto nº 28.502, de 4 de dezembro de 2007, o Decreto nº 28.716, de 28 de janeiro de 2008 e o Decreto nº 30.224, de 30 de março de 2009.
Brasília, 27 de janeiro de 2011.123º da República e 51º de Brasília.
AGNELO QUEIROZ

Componentes:

1) Secretaria de Estado de Ciência e Tecnologia
Gastão José de Oliveira Ramos
Secretário de Estado de Ciência e Tecnologia
Geraldo Sergio Simão
Secretário de Estado Adjunto
Lilian Monteiro de Lara
Secretária Executiva do Grupo de Governança
2) Secretaria de Estado de Desenvolvimento Econômico
Afonso Oliveira de Almeida
Subsecretário de Investimento e Negócios Internacionais
Rodrigo Oliveira Álvarez
Assessor da Subsecretaria de Investimento e Negócios Internacionais
3) Companhia Imobiliária de Brasília - TERRACAP
José Humberto M. de Paula
Diretor da Diretoria de Prospecção de Novos Negócios
Patricia Mussi Sarkis
Assessora da Diretoria de Prospecção de Novos Negócios
João Alberto Legey de Siqueira
Assessor da Diretoria de Prospecção de Novos Negócios
Renato Castelo de Carvalho
Assessor da Diretoria de Prospecção de Novos Negócios
4) Universidade de Brasília - UnB
Célia Ghedini Ralha
Decanato de Pesquisa e Pós-graduação
Rafael Timóteo de Sousa Júnior
Departamento de Engenharia Elétrica
5) Serviço Brasileiro de Apoio às Micro e Pequenas Empresas - SEBRAE
José Sobrinho Barros
Presidente do Conselho Deliberativo do SEBRAE/DF
Flávia Martins de Barros
Gerente da Unidade de Acesso à Inovação Tecnológica – SEBRAE/DF
6) Federação das Indústrias do Distrito Federal - FIBRA
Adonias Santiago
Superintendente do Sistema FIBRA
Claynor Fernando Mazzarolo
Diretor-Presidente do Instituto de Brasília de Tecnologia e Inovação – IBTI
7) Universidade Católica de Brasília- UCB
Fernando Silveira Goulart Júnior
Diretor da Catolicatec
Eduardo Amadeu Dutra Moresi
Diretor dos Cursos de Ciência da Computação e Sistema de Informação
Claúdio Chauke Nehme
Mestrado em Gestão do Conhecimento e Tecnologia da Informação

Memória

1999
Em junho, o Clube dos Jovens Empresários de Brasília começou a elaborar o projeto do Parque Tecnológico Capital Digital (PTCD).

2000
O projeto ganha adesão, entre outros órgãos, da Secretaria de Desenvolvimento Econômico do DF.

2001
A Federação das Indústrias do Distrito Federal (Fibra) elabora um documento com um alinhamento estratégico da indústria da informação. O texto foi entregue ao GDF e defendia a implementação do polo. Granja do Torto e Riacho Fundo foram cogitados como locais para a implementação da cidade digital.

2002
Em dezembro, o parque é criado por lei.

2004
Em abril daquele ano, o governo faz os estudos jurídicos sobre formas de incentivar o ingresso de empresas no polo.

2009
Em outubro, a área do polo, próxima à Granja do Torto, é registrada em cartório. Nesse mesmo período, entretanto, com a crise política desencadeada pela Operação Caixa de Pandora da Polícia Federal, o projeto sofre mais um adiamento.

2010
Anúncio da primeira obra do projeto, o Complexo Datacenter do Banco do Brasil e da Caixa Econômica Federal (CEF).

2011
O governador Agnelo Queiroz assina o decreto que permite a execução do projeto com previsão de término em 2014, 15 anos após sua concepção.


Software

 

Licitação é o procedimento administrativo para contratação de serviços ou aquisição de produtos pelos entes da Administração Pública direta ou indireta. No Brasil, para licitações por entidades que façam uso da verba pública, o processo é regulado pela lei nº 8666/93 [1].

O ordenamento brasileiro, em sua Constituição Federal de 1988 (art. 37, inciso XXI [2]), determinou a obrigatoriedade da licitação para todas as aquisições de bens e contratações de serviços e obras, bem como para alienação de bens, realizados pela Administração no exercício de suas funções.

Índice

  • 1 Processo licitatório
  • 2 Edital
  • 3 Modalidades de licitação
  • 4 Tipos de licitação
  • 5 Legislação pertinente
  • 6 Anulação, revogação e convalidação
  • 7 Referências

Processo licitatório

É composto de diversos procedimentos que têm como meta os princípios constitucionais da legalidade, da isonomia, da impessoalidade, da moralidade, da publicidade e da eficiência com o intuito de proporcionar à Administração a aquisição, a venda ou uma prestação de serviço de forma vantajosa, ou seja, menos onerosa e com melhor qualidade possível, é a chamada "eficiência contratória".

Isso acontece utilizando-se de um sistema de comparação de orçamentos chamados de propostas das empresas que atendam as especificações legais necessárias, todas constantes dentro do edital. A empresa que oferecer maiores vantagens ao governo, será a escolhida para o fornecimento do produto ou do serviço. Oferta mais vantajosa, na legislação brasileira entende-se pelo critério de menor preço ou a de melhor técnica ou a de técnica e preço ou, por fim, a de maior lance ou oferta para os casos de alienação de bens ou de concessão de direito real de uso. Dentre estes, o critério 'menor preço' é comumente mais utilizado. Ao lado deste, figuram o critério de 'Melhor Técnica', quando se leva em consideração, além do preço, a qualificação do licitante e as características de sua proposta; e 'Maior Lance', utilizado quando o objetivo é alienar (vender) bens públicos, como ocorre nos leilões.

Como fonte de consulta, há uma publicação do Tribunal de Contas da União, disponível no site do TCU, que versa sobre questões relacionadas ao processo licitatório.[3]

Edital

Chama-se edital o documento através do qual a instituição compradora estabelece todas as condições da licitação que será realizada e divulga todas as características do bem ou serviço que será adquirido. A correta elaboração do edital e a definição precisa das características do bem ou serviço pretendido pela entidade licitadora são essenciais para a concretização de uma boa compra ou contratação. Na modalidade convite o edital será substituido pela carta-convite.

Modalidades de licitação

No Brasil, os procedimentos licitatórios são orientados principalmente pelas Leis Federais n° 8.666/1993[1] e 10.520/2002[4] que definem as seguintes modalidades de licitação:

  • Concorrência
  • Tomada de Preços
  • Leilão
  • Concurso (que não se confunde com Concurso Público)
  • Convite ou Carta Convite
  • Pregão - presencial ou eletrônico (através de tecnologia da informação)
  • Consulta (modalidade de licitação)

Licitação na modalidade Pregão Eletrônico foi introduzida na lei de licitações posteriormente a 8.666/93 e pode ser realizada por sites específicos do órgão licitante. Apesar de ter sua lei específica, ainda é subordinada a lei n° 8.666/93. x

Tipos de licitação

A lei 8.666/93 elenca, em seu artigo 45, os seguintes tipos de licitação, aplicáveis à todas as modalidades, com exceção do concurso:

  • Menor preço: Vence a proposta com melhor preço para a administração pública.
  • Melhor técnica: Vence a proposta de melhor técnica, que aceitar o valor da proposta mais baixa dentre todas as com a técnica minima exigida no edital.
  • Técnica e preço: As propostas recebem uma nota que leva em conta a técnica e o preço, vence a com melhor nota.
  • Maior lance ou oferta

Legislação pertinente

A lei 8666/93 é uma lei federal brasileira, criada em 21 de junho de 1993. Esta lei estabelece normas gerais sobre licitações e contratos administrativos pertinentes a obras, serviços, inclusive de publicidade, compras, alienações e locações no âmbito dos poderes da União, dos Estados, do Distrito Federal e dos Municípios. A lei 10.520, de 2002, institui o pregão no ordenamento jurídico brasileiro, para aquisição de bens e serviços comuns.

Anulação, revogação e convalidação

A revogação só pode ocorrer na instância administrativa por razões de interesse público decorrente de fato superveniente. Já a anulação ocorre tanto na esfera administrativa (princípio da autotutela) como no judiciário, devendo ser amplamente fundamentada pelo organismo que a anular. Revoga-se o que é lícito, mas não é conveniente ao interesse público. Anula-se o que é ilegal. É importante observar que a anulação, por tratar-se de ato ilegal, tem efeito retroativo (ex-tunc), enquanto a revogação passa a produzir efeitos somente a posteriori (ex nunc). Pode-se ainda convalidar os atos ilegais, cujo vício seja sanável. Seus efeitos são, como na anulação, ex-tunc.

Referências

  1. a b Congresso Nacional Brasil. Decreto-lei Nº 8666 de 21 de junho de 1993 (em português). Página visitada em 24 de dezembro de 2008.
  2. ↑ Congresso Nacional Brasil. Constituição Federal Brasil (em português). Página visitada em 24 de dezembro de 2008.
  3. ↑ TRIBUNAL DE CONTAS DA UNIÃO - Licitações & Contratos
  4. ↑ Lei 10.520/2002 de 17 de julho DE 2002
Obtida de "http://pt.wikipedia.org/w/index.php?title=Licita%C3%A7%C3%A3o&oldid=27790262"

Software

 

A arquitetura de software de um sistema consiste na definição dos componentes de software, suas propriedades externas, e seus relacionamentos com outros softwares. O termo também se refere à documentação da arquitetura de software do sistema. A documentação da arquitetura do software facilita: a comunicação entre os stakeholders, registra as decisões iniciais acerca do projeto de alto-nível, e permite o reuso do projeto dos componentes e padrões entre projetos.

Índice

  • 1 Introdução
  • 2 História
  • 3 Descrevendo arquiteturas
    • 3.1 Linguagem de descrição de arquitetura
    • 3.2 Visões
    • 3.3 Padrões de arquitetura
  • 4 Exemplos de arquitetura
  • 5 Notas e Referências
  • 6 Ver também
  • 7 Ligações externas

Introdução

O campo da ciência da computação tem lidado com problemas associados, como a complexidade da informação, desde sua criação.[1] Os primeiros problemas de complexidade foram resolvidos pelos desenvolvedores através da escolha da estrutura de dados, do desenvolvimento de algoritmos e pela aplicação de conceitos de separação de escopos. Embora o termo arquitetura de software seja relativamente novo na industria, os princípios fundamentais deste campo vem sendo aplicados esporadicamente pela engenharia de software desde o inicio dos anos 80. As primeiras tentativas de capturar e explicar a arquitetura de software do sistema foram imprecisas e desorganizadas – freqüentemente caracterizadas por um conjunto de diagramas.[2] Durante o decorrer da década de 90 houve um esforço concentrado para definir e codificar os aspectos fundamentais desta disciplina. Inicialmente um conjunto de padrões de projeto, estilo, melhores práticas, descrição de linguagens, e lógica formal foram desenvolvidas durante este período.

A disciplina de arquitetura de software é centrada na idéia da redução da complexidade através da abstração e separação de interesses. O glossário do site oficial SOFTWARE ENGINEERING INSTITUTE (Instituto de Engenharia de Software) [3] descreve que arquitetura de software é a estrutura ou estruturas de um sistema, com todos os elementos de software vendo e tendo suas propriedades vistas por todos os outros elementos e relacionamentos.

Sendo a arquitetura de sistema uma disciplina em maturação, sem regras claras, a ação do arquiteto é ainda uma composição de arte e ciência. Os aspectos de arte da arquitetura de software são devido ao fato que os sistemas de software comerciais suportam alguns aspectos de um negócio ou missão. Como o direcionamento de negócio chave para o suporte sistemas são descrito nos cenários como requisitos não-funcionais de sistema, também conhecidos como atributos de qualidade, que determinam como um sistema ira se comportar.[4] Cada sistema é único devido a natureza do negócio que ele suporta, tal que o nível dos atributos de qualidade exigidos de um sistema como compatibilidade, extensibilidade, confiabilidade, manutenabilidade, disponibilidade, segurança, usabilidade, dentre outros – irão variar com cada aplicação.[4]

Para trazer a perspectiva do usuário para dentro da arquitetura de software, pode-se dizer que a arquitetura de software dá a direção dos passos que serão tomados e as tarefas envolvidas em cada área de especialidade e interesse do usuário, por exemplo, stakeholders de sistemas de software, os desenvolvedores de software, o grupo de suporte ao software do sistema operacional, aos testadores e usuários de negocio final. Neste sentido, a arquitetura de software se torna a ligação das múltiplas perspectivas que um sistema traz nele embutido. O fato de que estas várias perspectivas diferentes possam ser postas juntas em uma arquitetura de software padrão justifica e valida a necessidade de criação da arquitetura de software antes do desenvolvimento do software para que projeto alcance a maturidade.

História

A origem da arquitetura de software como um conceito foi primeiramente identificado no trabalho de pesquisa de Edsger Dijkstra em 1968 e David Parnas no início de 1970. Estes cientistas enfatizaram a importância das estruturas de um sistema de software e a criticidade da identificação da sua estrutura.[5] O estudo deste campo aumentou de popularidade desde o inicio de 1990 com os trabalhos de pesquisa concentrando-se nos padrões de estilo de arquitetura, linguagens de descrição de arquitetura, documentação de arquitetura, e métodos formais.[6] Muitas instituições de pesquisa tais como a Carnegie Mellon University e a University of California, Irvine estavam realizando muitas pesquisas no campo da arquitetura de software. Mary Shaw e David Garlan da Carnegie Mellon escreveram um livro intitulado Software Architecture: Perspectives on an Emerging Discipline em 1996, o qual trazia a tona conceitos da arquitetura de software, tais como componentes, conexões, estilos, etc. Os esforços do UCI's (Institute for Software Research) na pesquisa da arquitetura de software foram inicialmente direcionado para os estilos de arquitetura, descrições de linguagens arquitetura, e arquiteturas dinâmicas.

ANSI/IEEE 1471-2000: Recommended Practice for Architecture Description of Software-Intensive Systems[1] foi a primeira norma padrão na área de arquitetura de software, e foi recentemente adotada pelo ISO como ISO/IEC DIS 25961.

Descrevendo arquiteturas

Linguagem de descrição de arquitetura

As Linguagens de descrição de arquitetura (LDAs) são usadas para descrever a arquitetura de software. Vários diferentes LDAs foram desenvolvidas por diferentes organizações, incluindo Wright (desenvolvido por Carnegie Mellon), Acme (desenvolvido por Carnegie Mellon), xADL (desenvolvido por UCI), Darwin (desenvolvido por Imperial College London), DAOP-ADL (desenvolvido pela University of Málaga). Elementos comuns de uma LDA são componente, conexão e configuração.

Visões

A arquitetura de software é normalmente organizada em visões[7], as quais são análogas aos diferentes tipos de plantas utilizadas no estabelecimento da arquitetura. Na Ontologia estabelecida pela ANSI/IEEE 1471-2000, visões são instancias de pontos de vista, onde um ponto de vista existe para descrever a arquitetura na perspectiva de um conjunto de stakeholders e seus consortes.

Algumas possíveis visões são:

  • Visão funcional/lógica
  • Visão de código.
  • Visão de desenvolvimento/estrutural
  • Visão de concorrência/processo/thread
  • Visão física/evolutiva
  • Visão de ação do usuário/feedback

Várias linguagens para descrição da arquitetura de software foram inventadas, mas nenhum consenso foi ainda alcançado em relação a qual conjunto de símbolos ou sistema representação deve ser adotado. Alguns acreditam que a UML ira estabelecer um padrão para representação de arquitetura de software. Outros acreditam que os desenvolvimentos efetivos de software devem contar com a compreensão única das restrições de cada problema, e notações tão universais são condenadas a um final infeliz porque cada uma prove um notação diferenciada que necessariamente torna a notação inútil ou perigosa para alguns conjuntos de tarefas. Eles apontam a proliferação de linguagens de programação e a sucessão de tentativas falhas para impor uma simples 'linguagem universal' na programação, como uma prova da tendência do software para a diversidade e não para padrões.

Padrões de arquitetura

  • DODAF [2]
  • MODAF [3]
  • TOGAF [4]
  • Zachman framework [5]
  • Federal Enterprise Architecture [6]

Exemplos de arquitetura

Há muitas formas comuns de projetar módulos de software de computador e suas comunicações, entre elas:

  • Cliente-Servidor
  • Computação distribuída
  • P2P
  • Quadro Negro
  • Criação implícita
  • Pipes e filtros
  • Plugin
  • Aplicação monolítica
  • Modelo em três camadas
  • Analise de sistema estruturada (baseada em módulos, mas usualmente monolíticas em dentro dos módulos)
  • Arquitetura orientada a serviço
  • Arquitetura orientada a busca

Notas e Referências

  1. ↑ University of Waterloo (2006). A Very Brief History of Computer Science. Página visitada em 2006-09-23.
  2. ↑ IEEE Transactions on Software Engineering (2006). Introduction to the Special Issue on Software Architecture. Página visitada em 2006-09-23.
  3. ↑ SEI (2010). Glossary?. Página visitada em 2010-01-31.
  4. a b SoftwareArchitectures.com (2006). Intro to Software Quality Attributes. Página visitada em 2006-09-23.
  5. ↑ SEI (2006). Origins of Software Architecture Study. Página visitada em 2006-09-25.
  6. ↑ Garlan & Shaw (2006). An Introduction to Software Architecture. Página visitada em 2006-09-25.
  7. Clements, Paul. Documenting Software Architectures: Views and Beyond. 2 ed. Boston: Addison-Wesley, 2003. pp. 13-15 p. ISBN 0201703726

Ver também

  • Padrões de projeto de software
  • Antipadrões de software
  • Modelagens de dados padrões
  • Matriz de estrutura de dependência
  • Arquitetura de negócio
  • Arquitetura de dados
  • Arquitetura de processo
  • Arquiteto de software

Ligações externas

  • Software architecture definitions at Carnegie Mellon University Software Engineering Institute
  • Software architecture vs. software design
  • Worldwide Institute of Software Architects
  • Grady Booch's Handbook of Software Architecture project
  • SoftwareArchitectures.com Independent resource of information on the discipline
  • International Association of Software Architects
  • Microsoft Architecture Journal
  • Pangea - Professional and Academic Network to the Growing and Evolution of Architecture (Portuguese)
  • Blog da OCTO Technology Brasil, empresa de consultoria em Arquitetura de Sistemas de Informação
Obtida de "http://pt.wikipedia.org/w/index.php?title=Arquitetura_de_software&oldid=27486721"

Software

 
A Wikipédia possui o portal:
Portal de educação

As Tecnologias educacionais são utilizadas desde o princípio da educação sistematizada. Ainda hoje se usa a tecnologia do giz e da lousa, que antigamente eram feitas de pedra - ardósia; usa-se a tecnologia do livros didáticos e, atualmente, os diversos estados mundiais debruçam-se sobre quais seriam os currículos escolares mais adequados para o tipo de sociedade pretendida. No mundo ocidental, um dos grandes desafios é adaptar a educação às novas tecnologias - TICs tais como os meios de comunicação atuais como a internet, a televisão, o rádio, os softwares que funcionam como meios educativos formais ou informais.

Índice

  • 1 Primórdios
  • 2 Citação
  • 3 Referências
  • 4 Ver também

Primórdios

Nas décadas de 1950 e 1960, a tecnologia educacional apresentava-se como um meio gerador de aprendizagem, para resolver problemas educacionais dentro de uma concepção tecnicista de educação. Na década de 70 , passou a fazer parte do ensino como processo tecnológico. Em 1971, foi realizado na Universidade Federal de São Carlos (UFSCar)um seminário sobre o uso de computadores, em 1973 a Universidade federal do Rio de Janeiro (UFRJ) usou software de simulação no ensino de química e, assim, muitos outros começaram as experiências.Portanto, existiam no início dos anos 80 diversas iniciativa sobre o uso da informática na educação do Brasil. Esses esforços resultaram no interesse do Ministério de Ciência e Tecnologia (MCT) na disseminação da informática na sociedade, despertaram o interesse do governo e de pesquisadores das Universidades na adoção de programas educacionais baseados no uso da informática. Em meados de 90, caracterizou-se pela busca de novas concepções sobre o uso das tecnologias no campo educacional.

A tecnologia educacional é a área de conhecimento onde a tecnologia se submete aos objetivos educacionais. Ela procura auxiliar o processo ensino e aprendizagem de modo a propiciar formas adequadas de utilizar os recursos tecnológicos na educação, ou seja, as funções maiores da escola serão enriquecidas com a grandeza das novas fontes de informações e ferramentas tecnológicas modernas preocupando-se com as técnicas e sua adequação às necessidades e à realidade dos educandos, da escola, do professor, da cultura em que a educação está inserida.

Contínuas transformações tecnológicas em todo o mundo vem influenciando as relações sociais. Neste contexto a Escola, ambiente onde se constrói a educação formal e, portanto, um ambiente por natureza social, começa a refletir sobre a influência das Novas tecnologias no processo de ensino e aprendizagem. Nestes termos, como resultado do avanço das pesquisas em microeletrônica, no início do século XXI as tecnologias começam a ser vistas e usadas numa outra perspectiva no processo educativo. A escola começa a se apropriar do uso técnico dos recursos tecnológicos para em seguida repensar as formas e metodologias adequadas a cada contexto social.Neste tempo as Tecnologias educacionais deixam de ser encaradas como meras ferramentas que tornam mais eficientes e eficazes já sedimentados, passando a ser consideradas como elementos estruturantes de um outro modo de pensar a educação, mediada pela Tecnologia e esta submetida aos objetivos pedagógicos, com o objetivo de expressar a diversidade cultura e à realidade em que cada escola se insere, a diferentes metodologias usando recursos tecnológicos. Nesse sentido, a TV, o vídeo, o Rádio_(comunicação), a Internet, o material impresso possibilitam articularem-se novas linguagens e novas forma de apropriação do conhecimento na escola. É crescente o número de escolas e centros de educação que estão usando ferramentas on-line e colaborativas para aprendizado e busca de informações. As principais ferramentas usadas e conhecidas são agregação e distribuição de conteúdo (RSS, ATOM), Ambientes de aprendizagem como Weblogs (BLOGs), WebQuests e Wikis e objetos educacionais.

Todas as ferramentas podem ser utilizadas como instrumentos educacionais. No entanto,faz-se necessário avaliar sua aplicação de modo a promover a aprendizagem significativa, crítica e reflexiva.

Historicamente o uso das tecnologias na educação apoiou-se em 3 eixos sociais; a comunicação, a psicologia da aprendizagem e a teoria sistêmica. Podemos dizer que a didática (construir, ampliar e revisar o processo) foi deixada de lado. Já a ciência e a técnica, se separaram, provocando algumas arbitrariedades em suas relações.

O educador estar apto a mudar e estar consciente da importância da tecnologia educacional como ferramenta valiosa no processo de ensino e aprendizagem, facilitando para o educando uma assimilação significativa dos conteúdos, bem como proporcionando um avanço na construção de novos conhecimentos.Ele se transforma agora no estimulador da curiosidade do aluno por querer conhecer, por pesquisar, por buscar a informação mais relevante. Também coordena o processo de apresentação dos resultados pelos alunos, transformando informação em conhecimento e conhecimento em saber, em vida, em sabedoria, o conhecimento com ética.

Citação

É uma maneira sistemática de elaborar, levar a cabo e avaliar o processo de aprendizagem em termos de objetivos específicos, baseados na investigação da aprendizagem e da comunicação humana, empregando uma combinação de recursos e materiais para conseguir uma aprendizagem mais efetiva.
De Pablos Pons, 1994, p.42

Referências

Algumas revistas especializadas no assunto:

  • Revista Brasileira de Informática na Educação

Ver também

  • Tecnologia
  • Arnon de Andrade
  • Tecnologias na educação em Portugal
  • Tecnologia Educacional no Brasil no Almanaque Mundial de Tecnologias Educacionais

Campos de estudo da Educação
Administração escolar | Arte-educação | Biologia educacional | Distúrbios da aprendizagem | Educação de adultos | Educação inclusiva | Educação popular | Filosofia da educação | Medidas educacionais | Metodologias de ensino | Necessidades educativas especiais | Orientação educacional | Pedagogia | Politicas educacionais | Psicologia da aprendizagem | Psicopedagogia | Sociologia da educação | Supervisão do ensino | Tecnologias educacionais | Psicologia do desenvolvimento | Teorias da aprendizagem
Ensino por tema: Alfabetização | Educação sexual | Educação matemática | Ensino da língua materna
Níveis de ensino: Educação infantil | Ensino fundamental | Educação especial | Ensino médio | Ensino superior
Rankings internacionais: Índice de alfabetização | Programa Internacional de Avaliação de Alunos | Índice de educação

Obtida de "http://pt.wikipedia.org/w/index.php?title=Tecnologia_educacional&oldid=26788534"

Software

 

Tecnologia móvel

Toda tecnologia que permite seu uso durante a movimentação do usuário é uma tecnologia móvel. A tecnologia móvel não é apenas uma invenção, ela pode ser considerada uma revolução, pois foi capaz de atingir o quotidiano das pessoas e fazer parte da vida delas, modificando suas rotinas e formas de tomar decisões. Muitas pessoas não vivem sem celular, outras estão 24 horas disponíveis e as encontramos em qualquer lugar, algumas não abrem mão de estarem com seu palm conectado na Internet e ao mesmo tempo se deslocando pela casa. Tudo isso só foi possível através da evolução da tecnologia móvel, que nos dispos diversos dispositivos, como por exemplo na telecomunicação, onde podemos citar os celulares, redes wireless, Wi-Fi, Bluetooth, GSM, CDMA, SmartPhones. Outro exemplo seriam os computadores portáteis, destes citamos os Palmtops, handhelds, notebooks.

A mobilidade iniciou como uma facilidade, mas hoje em dia tornou-se uma necessidade. Mas porque a evolução deste segmento foi tão rápida? Simples. Porque este tipo de tecnologia permite o acesso a dados e informações em qualquer momento e em qualquer lugar. Isto torna-se um poderoso atrativo.

Este tipo de investimento também começa a atingir as empresas de médio e grande porte, pois esta não é somente uma opção para facilitar tarefas particulares, mas é também uma oportunidade de melhora na gestão de negócios, podendo integrar dispositivos móveis com sistemas de gestão e e-bussiness. É importante o investimento na mobilidade também para o atendimento ao cliente, pois estabelece muitas opções de interatividade com o mesmo.

A mobilidade popularizou-se principalmente pelo lançamento e evolução de handhelds (entende-se palm) e de telefones celulares. Destacaremos neste artigo os computadores de mão. O produto foi criado por Jeff Hawkings e lançado no mercado em abril de 1996. Além da Palm Jeff fundou a Handspring, empresa historicamente ligada a evolução dos computadores de mão. A palm posteriormente foi divididade em duas empresas: a palmOne, responsável pela industrialização dos equipamentos e a palmSource, responsável pelo sistema operacional Palm OS, desenvolvido por Hawkings.

Ligações externas

  • Tecnológica Magia
  • Atitude Móvel
  • Garota Sem Fio
  • Edu Perondi
  • NokiaBR
  • Blog do Dan
  • AllGSM
Obtida de "http://pt.wikipedia.org/w/index.php?title=Tecnologia_m%C3%B3vel&oldid=25427484"

Software

 

Alta tecnologia (em inglês, high tech) refere-se à tecnologia considerada de ponta (em inglês, state-of-the-art), isto é, que trabalha com as mais recentes inovações tecnológicas, ou na sua investigação.

Não existe classe de tecnologia com esta classificação - a definição sofre mutações ao longo do tempo, razão pela qual produtos considerados de ponta na década de 1960 são considerados, actualmente, se não de baixa tecnologia, completamente obsoletos. Por este motivo, é recorrente o marketing aproveitar esta expressão para promover qualquer produto novo como sendo de "alta tecnologia".

Como a tecnologia atualmente se desenvolve em um ritmo muito acelerado, algo de alta tecnologia (moderno) pode, rapidamente, transformar-se em algo de baixa tecnologia ou obsoleto.

Obtida de "http://pt.wikipedia.org/w/index.php?title=Alta_tecnologia&oldid=27358596"

Software

 

Software educativo é um software cujo principal propósito é o ensino ou o auto-aprendizado.[1] O seu objetivo principal é contribuir para que o aprendiz obtenha novos conhecimentos, fazendo uso do software, tendo prazer em lidar com ele.

Índice

  • 1 Introdução
  • 2 Antecedentes históricos
  • 3 Conceito
  • 4 Utilização
  • 5 Paradigmas Educacionais
  • 6 Tipos e classificação de alguns Softwares Educativos (SE)
  • 7 Qualidade de Software Educacional
  • 8 Métodos de Avaliação de Softwares Educativos
  • 9 Referências
  • 10 Ver também

Introdução

Educar é criar mecanismos de absorver e alterar atitudes e atos do que está a sua volta. De acordo com Tiago Lara, o homem se educa na medida em que responde a desafios. Este fato dá-se desde a antiguidade, quando na sua origem, com a necessidade de sobreviver e contando com sua inteligência e capacidade de raciocínio adquiriu cultura ao longo do tempo. Cultura que o homem dotado de intelectualidade transforma, alterando o meio em que vive, alçando novas conquistas, desvendando novos horizontes, realizando-se e à Humanidade.

A ciência é uma das formas que o homem encontrou para evoluir-se, a conquistar seus sonhos e projetar seu futuro. E através desse mundo ideal que o homem vislumbra, estão os ideais mais nobres as ideias mais abstratas. Assim, baseado nas convicções que o computador tem um importante papel na educação, pode-se encontrar na informática um agente facilitador do ensino-aprendizagem e, precisamente no uso de softwares educativos.

Antecedentes históricos

Segundo Valente [2], o uso de software na educação remonta ao ensino através de máquinas em 1924 (com a sua máquina de correcção de testes de escolha múltipla). O uso de hardware e software, propriamente dito, na educação, data do início da década de 40, quando pesquisadores americanos desenvolveram simuladores de voo. Sistemas pioneiros de computador incluem PLATO (1960), desenvolvido pelo engenheiro Donald Bitzer da Universidade de Illinois (EUA). Por causa de seu alto custo não foi utilizado pela maioria das instituições. Valente [3] prossegue apontando B. F. Skinner como outro antecessor, com a sua máquina de instrução programada [4].

Com a chegada do computador pessoal em 1975, os usuários não mais dependiam de universidades ou apoio do governo para desenvolver softwares, podendo fazê-lo em suas casas e escolas. No início dos anos oitenta, a disponibilidade de PCs fomentou a criação de empresas e organizações sem fins lucrativos especializadas em software educativo. Nos Estados Unidos,Brøderbund e Learning Company são alguns exemplos.

Conceito

Giraffa (1999) defende que a visão cada vez mais consensual na comunidade da Informática Educativa é a de que "todo programa que utiliza uma metodologia que o contextualize no processo ensino e aprendizagem, pode ser considerado educacional.”

Utilização

O uso do computador como ferramenta educacional tem se mostrado útil e proveitoso no processo de ensino-aprendizagem. Contudo, é importante frisar que o software educativo não deve ser tomado como algo que independe da orientação de professores e/ou tutores, dentro de um contexto educacional propício e inovador.

Por exemplo, ao utilizar as teorias construtivista e sócio-interacionista, onde o aluno é convidado a ser sujeito de sua própria aprendizagem, construindo seu conhecimento através de sua relação com o meio, o software educativo não é o centro das atenções. Neste contexto é apenas um “parceiro intelectual do aluno [que estimula] o pensamento crítico e aprendizagem de ordem superior” (Jonassen, 2007).

Igualmente importante é observar a qualidade dos softwares que têm sido produzidos. É adequado à faixa etária a que se destina? É visualmente aprazível? Proporciona feedback? Quão acessível e/ou navegável ele é? É difícil de ser instalado? Motiva e desperta o aluno para o conhecimento? Todos estes pontos devem ser levados em conta na hora de adquirir ou mesmo usar o software em sala de aula.

Ainda, existem formas de se classificar os softwares através dos níveis de aprendizado que eles proporcionam. Podemos ter softwares seqüenciais (onde o aluno aprende com informações transmitidas de forma seqüencial e repetitiva), relacionais (há interação do aluno com a tecnologia, somente) e criativo (através da utilização da tecnologia, o aluno interage com outras pessoas, que compartilham de objetivos comuns).

Paradigmas Educacionais

Segundo Luciano Maia(2005:13) No contexto da avaliação do software educacional, torna-se importante registrar uma convergência percebida entre estas várias taxionomias. Percebe-se uma linha divisória clara entre os software educacionais, esta linha é definida por concepções educativas bastante distintas. De um lado da está o paradigma comportamentalista (modalidade dura e enfoque algorítmico) e do outro lado está o paradigma do construtivismo (modalidade branda e enfoque heurístico).

Sob o paradigma comportamentalista serão enfocadas as categorias: Tutorial e Exercício e Prática:

Tutoriais - Sob quais aspectos justifica-se o uso dos recursos computacionais na proposta? Com relação a motivação para o aprendizado e a apresentação dos conteúdos: A estratégia motivadora utilizada é eficiente e adequada? O ritmo de trabalho é controlável? O conteúdo está desenvolvido corretamente? O diálogo é rico e bem formulado?

Com respeito a aplicação dos conhecimentos e retro-alimentação: A sequência de problemas propostos é adequada? Permite tratamento personalizado do erro com estratégias corretas de reforço? O resultado final alcançado pelos alunos é satisfatório?

Exercício e Prática - Excetuando-se a etapa da apresentação do conteúdo esta modalidade reproduz a anterior, devendo ser observados portanto os mesmos aspectos.

Sob o paradigma comportamentalista a qualidade da estratégia educacional deve ser medida a nível da eficácia em se provocar determinados comportamentos de maneira a não causar esforços e angústias desnecessárias.

Sob o paradigma construtivista percebe-se uma maior dificuldade quando se tenta delinear o processo de avaliação da utilização dos recursos computacionais na educação. Estas dificuldades eram de se esperar, uma vez que sob este paradigma os objetivos a serem alcançados no processo educacional, não se expressam através da obtenção de comportamentos que devam ser obrigatoriamente mensuráveis. Sob este paradigma serão enfocadas as seguintes categorias:

Simulações - A vivência concreta da experiência é inviável por questões financeiras, temporais, geográficas ou de periculosidade? O software permite o enriquecimento cognitivo da experiência ampliando o leque das informações assimiláveis?

Este enriquecimento pode se dar via a introdução de interfaces que permitem a captação e o tratamento simultâneo de uma grande massa de dados. Pode dar-se também via a facilidade na repetição do experimento um grande número de vezes o que permitiria a criação de uma sensibilidade mais aguçada a respeito do relacionamento das variáveis envolvidas na experiência. Mas principalmente, por permitir maior flexibilidade em alguns casos e noutros por permitir o controle a nível ideal, das variáveis de entrada do modelo, o computador pode possibilitar a realização da experiência sob condições dificilmente obtidas na realidade.

Jogos Educativos - Os jogos educativos intencionam introduzir às simulações uma componente lúdica e prazerosa.

Além dos simuladores e jogos educativos foram mencionados muitos outros tipos de uso para os computadores. Sob o paradigma construtivista a avaliação deve se encaminhar no sentido de definir: o potencial cognitivo da proposta, o nível de satisfação e de interesse demonstrado pelos alunos, o nível de sociabilização fomentado entre os alunos, o nível de interação permitido entre o ambiente e o aprendiz.

Tipos e classificação de alguns Softwares Educativos (SE)

Segundo Valente, estudioso na área da informática educativa, os softwares educativos podem ser classificados de acordo com a maneira que o conhecimento é manipulado. A modalidade pode ser caracterizada como uma versão computadorizada dos métodos tradicionais de ensino. Sendo as categorias mais comuns desta modalidade os tutoriais, exercício e prática ("drill-and-practice"), jogos e simulação [5].

Nos Softwares Educacionais (SE) Tutoriais é adotado o sistema tradicional utilizado em sala de aula em que o aluno escolhe o que deseja estudar, geralmente ricos em inovações tecnológicas (hipertextos, interface com sons, imagens, animações, etc.) e seu conteúdo é predefinido, com isso tendo que escolher entre as opções existentes.

Os de exercitação e prática (reforço/exercício) onde Gagné propõe duas fases de aprendizagem: a aplicação e a retroalimentação, utilizados para revisão e memorização de algum assunto já estudado pelo aluno. Mesmo com as versões mais recentes as características continuam as mesmas, segundo GIRAFFA 1999 em TEIXEIRA. De acordo com "The Educational Products Information Exchange (EPIE) Institute" uma organização do "Teachers College", Columbia, E.U.A., cerca de 49% do software educativo no mercado americano são do tipo exercício -e -prática.

Os softwares classificados como simuladores e os jogos educacionais apóiam-se na construção de situações que se assemelham com a realidade, sendo que os jogos apresentam ainda um componente lúdico e de entretenimento. A simulação envolve a criação de modelos dinâmicos e simplificados do mundo real (micro-mundo), dentro do contexto abordado, oferecendo ainda a possibilidade de o aluno desenvolver hipóteses, testá-las, analisar resultados e refinar conceitos.

Um resumo com mais alguns tipos de SE.

  • Tutorial: software no qual a informação é organizada de acordo com uma seqüência pedagógica particular

Procuram ensinar controlando processo de aprendizagem e de acordo com o tempo que o aluno leva para aprender.

  • Exercícios e Práticas: software que utiliza perguntas e respostas, normalmente utilizadas para revisar material já estudado
  • Programação: softwares onde o aluno programa o computador
  • Aplicativos: incluem processadores de texto, planilhas eletrônicas, etc.
  • Multimídia e Internet: misturam som, imagem e texto
  • Simulação: simulam situações reais, que sem o uso do computador dificilmente poderiam ser trabalhadas pelos alunos, com a mesma qualidade e realismo nas formas tradicionais de ensino.
  • Jogos: originalmente programado para entreter, possui grande valor pedagógico,e é defendido por profissionais da educação que acreditam que o aluno aprende melhor quando é livre para descobrir ele próprio as relações existentes em um dado contexto.
  • Ferramentas para resolução de problemas: o aprendiz deve produzir qual problema quer solucionar.Pode atender a quase todas as disciplinas, tanto no conhecimento como no interesse e a capacidade do aluno, são softwares abertos que permitem ao professor constantemente descobrir novas formas de planejar atividades que atendam seus objetivos.

Qualidade de Software Educacional

Embora muitas pessoas associem o termo software aos programas de computadores, Eliane Cristina Amaral e Ulisses Thadeu Vieira Guedes, em um artigo intitulado "Análise de construção de Software educativo com qualidade: Sugestão de ficha para registro e avaliação de software educativo", explicam que software não é apenas o programa, mas toda a documentação associada e os dados de configuração necessários para fazer com que os programas operem corretamente.

Com isso, podemos associar a qualidade dos software como um conjunto de características que devem ser alcançadas para que o produto atenda as necessidades dos usuários. De certa forma, essas "exigências" por parte dos usuários, que inclui facilidade de uso, segurança e confiabilidade dos dados, entre outras, contribuiu para que surgisse a Engenharia de Software.

A norma ISO/IEC 9126, do ano de 1991, regulamenta a forma de avaliação e descreve a qualidade de um produto de Software genérico. Segundo essa norma, para se alcançar qualidade, faz-se necessário implementar um processo de desenvolvimento definitivo e institucionalizado. De forma mais abrangente, a norma internacional NRB ISO/IEC 12 207 estabelece um processo de desenvolvimento de software. Poderíamos afirmar que qualidade de software é definida como "a totalidade das características de um produto de software que lhe confere a capacidade de satisfazer necessidades explícitas e implícitas" (Gladcheff, Zuffi, Silva; 2001) [6]. Entendemos como necessidades explicitas como aquelas apresentadas na definição do produto e, as implícitas, aquelas que não são apresentas mas são necessárias para o bom funcionamento do produto.

No caso dos softwares educativos, a qualidade do processo de desenvolvimento é essencial para a obtenção da qualidade do produto que é tratada, além das normas já citadas, na norma ISO/IEC 12 119 que enfoca os requisitos de qualidade de pacotes de software. Os software devem apresentar fatores que facilitam a atuação do professor. Essas características, em geral, são pedagógicas, facilidade de uso, da interface, adaptabilidade e precisão, entre outras. Poderíamos ainda considerar como subfatores, segundo Ana Regina Rocha e Gilda Helena Bernardino de Campos(1993), clareza,concisão, estilo, modularidade, disponibilidade, estrutura e rastreabilidade, entre outros.

Métodos de Avaliação de Softwares Educativos

As Tecnologias da Informação e Comunicação (TIC), tem sido amplamente utilizadas, em contextos educativos, e a sua eficiência no processo de ensino-aprendizagem, deve ser constantemente avaliada, a fim de que se possa identificar os softwares, e suas formas, mais eficazes, tornando-se desta forma objeto amplo de estudos.

Os professores, tutores, devem estar atentos a esta forma e se faz necessária a implementação do tema, Métodos de Avaliação de Software Educativos.

A avaliação em questão, leva em conta, o conceito que temos de Software Educativo, já que para alguns autores como(Ramos, 1998) software educativo é aquele que é especificamente concebido e destinado a ser utilizado em situações educativa;porém, há autores que entendem que deve ser considerado software educativo todo aquele que é usado em contexto de ensino-aprendizagem (Patrocínio, 1994 citado por Ramos et Al, 2005) ou simplesmente um sistema de fornecimento de conteúdos (Shaughnesy, 2002 citado por Ramos et Al, 2005).

Desta forma devemos avaliar o software educativo que nos é apresentado, a fim de que possamos identificar aqueles que mais seriam eficazes no processo de ensino-aprendizagem.

Avaliar é um processo de classificar situações específicas em função de parâmetros pré-estabelecidos… todo software educativo reflete necessariamente, uma concepção de ensino e aprendizagem, resultante de uma visão filosófica da relação sujeito-objeto.
Oliveira, Menezes & Moreira, 1987: 50

De estudos de Skinner (Behaviorismo), do Construtivismo de ou mesmo do sócio-construtivismo de Vygotsky, é possível elaborar tais formas de avaliação do processo ensino-aprendizagem, nas mais diversas atribuições de cada software educativo.

Desta forma, a avaliação de Software Educativo inspira-se em diversas tipologias utilizadas nas últimas décadas: avaliação de Software de tipo tradicional, processo de avaliação centrado nos professores; avaliação centrada nos alunos; avaliação centrada no design [7].

A avaliação do tipo tradicional centra-se nos aspectos técnicos das funcionalidades das aplicações sem preocupações quanto ao conteúdo ou teorias pedagógicas subjacentes.

A avaliação centrada nos professores privilegia-os como elementos decisivos no processo e embora incorpore alguns aspectos pedagógicos mantém as preocupações de conceito técnico como elemento preponderante.

A avaliação centrada nos alunos é uma consequência da anterior onde se salienta a importância dos destinatários principais do software.

Ramos (2005), diz que, em regra, os especialistas ligados às questões técnicas têm um papel preponderante na fase de concepção e desenho dos produtos enquanto que os especialistas de conteúdo e de pedagogia são decisivos na fase de utilização em contexto.

A avaliação de software pressupõe como objectivos a serem alcançados pelo mesmo:

  • Informar, ajudar e orientar as escolas e os professores na selecção e uso do software educativo.
  • Identificar características do software educativo com elevado potencial pedagógico.
  • Identificar eventuais aspectos negativos: erros de conteúdos, estereótipos de naturezas diversas.
  • Proporcionar informação potencialmente útil aos produtores de software educativo.
  • Contribuir para uma base de conhecimento científico-pedagógico disponível à comunidade educativa.
  • Estimular a emergência de práticas pedagógicas inovadoras nas escolas.
  • Estimular a reflexão e a investigação sobre o uso de software educativo nas escolas.

Vítor Teodoro, um dos responsáveis pelo SACAUSEF (Sistema de Avaliação, Certificação e Apoio à Utilização de Software para a Educação e Formação), afirma que “um programa é considerado “bom” dependendo da forma como for usado, privilegiando-se os aspectos pedagógicos em detrimento dos aspectos tecnológicos (usabilidade, funcionalidade, design,…) que se consideram adquiridos e operacionais”. Por isso, “a avaliação de um dado software vai centrar-se nos efeitos do software nos processos de aprendizagem”. Apenas o software educativo será alvo de observação, considerando que “um software é educativo por ter sido concebido para esse efeito”, ficando de fora softwares genéricos como o Office ou o Paint. Para já, privilegia-se o estudo de registos em CD-rom ou DVD e, posteriormente, vai também envolver sites da Web.[SACAUSEF]

Já existem alguns sistemas de avaliação de software educativo tais como no Reino Unido - http://www.teem.org.uk/ na França - http://tice.education.fr/educnet/contenus/editeur

No Brasil alguns métodos já foram difundidos, tais como:

  • O Modelo de Apreciação Analítica de Sistemas Hipermídia. Nele, o enfoque baseia-se na observação, análise e julgamento como estratégia para o planejamento, produção e seleção de materiais educacionais. Struchinner M, Côrrea N, Costa JBS. Hipermídia na educação: princípios básicos para o desenvolvimento de material educativo. Rio de Janeiro: NUTES/UFRJ; 1997.
  • CAMPOS, Gilda Helena Bemardino de, ROCHA, Ana Regina O da. Manual para a avaliação da qualidade de software educacional: relatório técnico do Programa de Engenharia de Sistemas e Computação. Rio de Janeiro: UFRJ, COPPE, 1990.
  • CARDOSO, Rogério Nesi Pereira. Predição, estimativa e medição da confiabilidade durante o ciclo de vida do software. Rio de Janeiro, 1990. Dissertação (Mestrado) — Programa de Engenharia de Sistemas e Computação, COPPE, UFRJ.
  • FREITAS, Afonso C, BARGUT, Maurício F., ROCHA, Ana Regina C. Características de qualidade de programas: relatório técnico do Programa de Engenharia de Sistemas e Computação. Rio de Janeiro: UFRJ, COPPE, 1985.
  • OLIVEIRA, Celina O, MENEZES, Eliane, MOREIRA, Mercia. Avaliação de software educacional. Documento base para discussão apresentado na XVIII Reunião da ABT. Belo Horizonte, 1986.
  • ROCHA, Ana Regina O, PASSOS, Maria Cristina J. Fonseca. Critérios para avaliação de software para pecuária do leite: relatório técnico do Programa de Engenharia de Sistemas e Computação. Rio de Janeiro:UFRJ, COPPE, 1990.
  • Simões, Alcino (2005). Análise de Sites para /sobre o Ensino da Matemática e Implicações na Prática Docente. Dissertação de Mestrado em Educação, especialidade em Tecnologia Educativa. Braga, Universidade do Minho.

Em geral os de Métodos de Avaliação de Softwares Educativos, qualificam os softwares quanto às características:

  • Funcionalidade - Evidencia que o conjunto de funções atende às necessidades explícitas e implícitas para a finalidade a que se destina o produto.
  • Usabilidade - Evidencia a facilidade de utilização do software.
  • Confiabilidade - Evidencia que o desempenho se mantém ao longo do tempo em condições estabelecidas.
  • Eficiência - Evidencia que os recursos e os tempos envolvidos são compatíveis com o nível de desempenho requerido para o produto.
  • Manutenibilidade - Evidencia que há facilidade para correções, atualizações e alterações.
  • Portabilidade - Evidencia que é possível utilizar o produto em diversas plataformas com pequeno esforço de adaptação. [Tsukumo, 1997]

==

Referências

  1. Como escolher um software educativo para seu filho ou aluno. (em português). Página visitada em 23 de junho de 2009.
  2. ↑ http://edutec.net/Textos/Alia/PROINFO/prf_txtie02.htm
  3. ↑ http://edutec.net/Textos/Alia/PROINFO/prf_txtie02.htm
  4. ↑ http://www.nwlink.com/~donclark/hrd/history/skinner.html
  5. ↑ http://edutec.net/Textos/Alia/PROINFO/prf_txtie02.htm
  6. ↑ http://www.ime.usp.br/dcc/posgrad/teses/anapaula/artigoWIE.PDF
  7. ↑ http://aseducativo.wetpaint.com/page/2.3-Avaliação+de+software+educativo

==

  • Jonassen, D. H. (2007). Computadores, Ferramentas Cognitivas Desenvolver o pensamento crítico nas escolas (A. Gonçalves, S. Fradão e M. Soares, Trads.). Porto, Portugal: Porto Editora.
  • Valente, J. A. (2000). "Diferentes Usos do Computador na Educação". (Recuperado de http://edutec.net/Textos/Alia/PROINFO/prf_txtie02.htm, em 28 Dezembro 2010).

Ver também

  • Construtivismo
  • E-learning
  • Learning Management System
  • Jogo educativo
  • Exemplos de software educativo
  • Amaral, Eliane Cristina; Guedes, Ulisses Thadeu Vieira. Análise de Construção de Software Educativo com Qualidade: Sugestão de ficha para registro e Avaliação de Software Educativo. Sítio: http://hermes2.dpi.inpe.br:1905/col/dpi.inpe.br/hermes2@1905/2005/10.03.21.08/doc/ElianeAmaral.pdf, acesso em novembro de 2008.
  • Artigo Avaliação de alunos e professores acerca do software “Sinais Vitais” acessado em 06 de novembro de 2008 a partir de http://www.ee.usp.br/reeusp/upload/pdf/187.pdf
  • Sistema de Avaliação, Certificação e Apoio à Utilização de Software para a Educação e Formação (SACAUSEF) acessado em 6 de novembro de 2008 a partir de http://www.prof2000.pt/users/folhalcino/ideias/ensinacao/sacausef.htm
  • Tsukumo, A.N., et al (1997) “Qualidade de Software: Visões de Produto e Processo de Software”. In: VIII CITS - CONFERÊNCIA INTERNACIONAL DE TECNOLOGIA DE SOFTWARE:QUALIDADE DE SOFTWARE, Curitiba, Paraná, Brasil. Anais.
  • Ramos, Edla Maria Faust; Mendonça, Ivan José. O fundamental na avaliação do software educacional. Anais do II Simpósio Brasileiro de Informática Educacional. Porto Alegre. 1991.
  • Ramos, J. L. et al (s. d.). Construtivismo Comunal: Esboço de uma teoria emergente no campo da utilização educativa das Tic na Escola, no Currículo e na Aprendizagem, acedido em 5 de outrubro de 2008 a partir de http://www.cceseb.ipbeja.pt/evolutic2003/SP_0.HTM
  • Ramos, J.L.(1998) A criação e utilização de micromundos de aprendizagem como estratégia de integração do computador no currículo do ensino secundário. Dissertação de doutoramento. Universidade de Évora.
  • Ramos, J.L. (s. d.) Avaliação de Software Educativo Uma via para a Inovação na Escola? Apresentação. Universidade de Évora.* Rocha, Ana Maria; Campos, Gilda Helena Bernardino de. Avaliação da Qualidade de Software Educacional.Em Aberto, Brasília, ano 12, n.57, jan./mar. 1993 Sítio: http://www.emaberto.inep.gov.br/index.php/emaberto/article/viewFile/845/757, acesso em novembro de 2008.
  • Teixeira, J. F. Uma discussão sobre a classificação de software educacional. Este endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo. Professora dos Cursos de Graduação em Tecnologia em Processamento de Dados e Bacharelado em Ciência da Computação (CESUPA)acessado em 03 de novembro de 2008 http://www.ccuec.unicamp.br/revista/infotec/artigos/jacqueline.html.
  • Valente, J. A.(1993). Diferentes usos do computador na educação. Em Aberto. Brasília, ano 12, n.57, jan./mar. p. 3-16.
Obtida de "http://pt.wikipedia.org/w/index.php?title=Software_educativo&oldid=27779805"

Software

 

Linux

Tux, a mascote do Linux
Modelo: Software Livre
Família do SO: baseado em Unix
Núcleo: Linux
Licença: GNU GPL / Outras
Desenvolvimento: Ativo
Portal Tecnologias de informação

Linux é o termo geralmente usado para designar qualquer sistema operativo (português europeu) ou sistema operacional (português brasileiro) que utilize o núcleo Linux. Foi desenvolvido pelo finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL para qualquer pessoa que utilizar, estudar, modificar e distribuir de acordo com os termos da licença.

Inicialmente desenvolvido e utilizado por grupos de entusiastas em computadores pessoais, o sistema Linux passou a ter a colaboração de grandes empresas, como a IBM, Sun Microsystems, Hewlett-Packard (HP), Red Hat, Novell, Oracle, Google, Mandriva e a Canonical.[1]

Apoiado por pacotes igualmente estáveis e cada vez mais versáteis de aplicativos para escritório (LibreOffice, por exemplo) ou de uso geral, por programas para micro e pequenas empresas gratuitos(projeto GNU) mas que em nada ficam a dever aos seus concorrentes comercializados, e interfaces gráficas cada vez mais amigáveis como o KDE e o GNOME, o núcleo linux, conhecido por sua estabilidade e robustez, tem gradualmente caido no domínio popular, encontrando-se cada vez mais presente nos computadores de uso pessoal atuais. Há muito entretanto destaca-se como o sistema operacional preferido em servidores de grandes porte, encontrando-se quase sempre presente nos "mainframes" de grandes empresas comerciais [2] e até mesmo no computador mais rápido do mundo, o K computer, japonês (lista TOP500).

Índice

  • 1 História
  • 2 Núcleo
    • 2.1 Arquitetura
    • 2.2 UNIX
    • 2.3 Termos de Licenciamento
    • 2.4 Sistemas de arquivos suportados
  • 3 Sistema Operacional
  • 4 Distribuições
  • 5 Código Aberto e Programas Livres
  • 6 Controvérsias quanto ao nome
    • 6.1 Sobre o símbolo
  • 7 Ver também
    • 7.1 Eventos
  • 8 Notas e referências
  • 9 Ligações externas

História

Linus Torvalds, criador e principal mantenedor do núcleo Linux.

O núcleo Linux foi, originalmente, escrito por Linus Torvalds do Departamento de Ciência da Computação da Universidade de Helsinki, Finlândia, com a ajuda de vários programadores voluntários através da Usenet (uma espécie de sistema de listas de discussão existente desde os primórdios da Internet).

Linus Torvalds começou o desenvolvimento do núcleo como um projeto particular, inspirado pelo seu interesse no Minix, um pequeno sistema UNIX desenvolvido por Andrew S. Tanenbaum. Ele limitou-se a criar, nas suas próprias palavras, "um Minix melhor que o Minix" ("a better Minix than Minix"). E depois de algum tempo de trabalho no projecto, sozinho, enviou a seguinte mensagem para comp.os.minix:

Você suspira pelos bons tempos do Minix-1.1, quando os homens eram homens e escreviam seus próprios "device drivers"?[3] Você está sem um bom projecto em mãos e deseja trabalhar num S.O. que possa modificar de acordo com as suas necessidades? Acha frustrante quando tudo funciona no Minix? Chega de noite ao computador para conseguir que os programas funcionem? Então esta mensagem pode ser exactamente para você. Como eu mencionei há um mês atrás, estou trabalhando numa versão independente de um S.O. similar ao Minix para computadores AT-386. Ele está, finalmente, próximo do estado em que poderá ser utilizado (embora possa não ser o que você espera), e eu estou disposto a disponibilizar o código-fonte para ampla distribuição. Ele está na versão 0.02... contudo eu tive sucesso ao executar bash, gcc, gnu-make, gnu-sed, compress etc. nele.

Curiosamente, o nome Linux foi criado por Ari Lemmke, administrador do site ftp.funet.fi que deu esse nome ao diretório FTP onde o núcleo Linux estava inicialmente disponível.[4] (Linus tinha-o baptizado como "Freax", inicialmente)[5]

No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira versão "oficial" do núcleo Linux, versão 0.02. Desde então muitos programadores têm respondido ao seu chamado, e têm ajudado a fazer do Linux o sistema operacional que é hoje. No início era utilizado por programadores ou só por quem tinha conhecimentos, usavam linhas de comando. Hoje isso mudou, existem diversas empresas que criam os ambientes gráficos, as distribuições cada vez mais amigáveis de forma que uma pessoa com poucos conhecimentos consegue usar o Linux. Hoje o Linux é um sistema estável e consegue reconhecer muitos periféricos sem a necessidade de se instalar os drivers de som, vídeo, modem, rede, entre outros.

Núcleo


GNOME Shell, uma das várias interfaces gráficas para Linux

O termo Linux refere-se ao núcleo (em inglês: "kernel") do sistema operativo. O termo também é usado pelos meios de comunicação e usuários para referir-se aos sistemas operacionais baseados no núcleo Linux agregado a outros programas. Segundo Tanenbaum e Silberschatz, um núcleo pode ser considerado o próprio sistema operativo, quando este é definido como um gerenciador de recursos de hardware.

Arquitetura

O Linux é um núcleo monolítico: as funções do núcleo (escalonamento de processos, gerenciamento de memória, operações de entrada/saída, acesso ao sistema de arquivos) são executadas no espaço de núcleo. Uma característica do núcleo Linux é que algumas das funções (drivers de dispositivos, suporte à rede, sistema de arquivos, por exemplo) podem ser compiladas e executadas como módulos (em inglês: LKM - loadable kernel modules), que são bibliotecas compiladas separadamente da parte principal do núcleo e podem ser carregadas e descarregadas após o núcleo estar em execução.

UNIX

Embora Linus Torvalds não tenha tido como objetivo inicial tornar o Linux um sistema portátil, ele evoluiu nessa direção. Linux é hoje um dos núcleos de sistemas operativos mais portáteis, correndo em sistemas desde o iPaq (um computador portátil) até o IBM S/390 (um denso e altamente custoso mainframe).

Os esforços de Linus foram também dirigidos a um diferente tipo de portabilidade. Portabilidade, de acordo com Linus, era a habilidade de facilmente compilar aplicações de uma variedade de código fonte no seu sistema; consequentemente, o Linux originalmente tornou-se popular em parte devido ao esforço para que os códigos-fonte GPL ou outros favoritos de todos corressem em Linux.

O Linux hoje funciona em dezenas de plataformas, desde mainframes até um relógio de pulso, passando por várias arquitecturas: x86 (Intel, AMD), x86-64 (Intel EM64T, AMD64), ARM, PowerPC, Alpha, SPARC e etc, com grande penetração também em sistemas embarcados, como handhelds, PVR, consola de videojogos, celulares, TVs e centros multimídia, entre outros.

Termos de Licenciamento

Inicialmente, Torvalds lançou o Linux sob uma licença de software que proibia qualquer uso comercial. Isso foi mudado de imediato para a GNU General Public License. Essa licença permite a distribuição e mesmo a venda de versões possivelmente modificadas do Linux mas requer que todas as cópias sejam lançadas dentro da mesma licença e acompanhadas do código fonte.

Apesar de alguns dos programadores que contribuem para o núcleo permitirem que o seu código seja licenciado com GPL versão 2 ou posterior, grande parte do código (incluído as contribuições de Torvalds) menciona apenas a GPL versão 2. Isto faz com que o núcleo como um todo esteja sob a versão 2 exclusivamente, não sendo de prever sua adoção da nova GPLv3.

Sistemas de arquivos suportados

O Linux possui suporte de leitura e escrita a vários sistema de arquivos, de diversos sistemas operacionais, além de alguns sistemas nativos. Por isso, quando o Linux é instalado em dual boot com outros sistemas (Windows, por exemplo) ou mesmo funcionando como Live CD, ele poderá ler e escrever nas partições formatadas em FAT e NTFS. Por isto, Live CDs Linux são muito utilizados na manutenção e recuperação de outros sistemas operacionais.[6]

Entre os sistemas de ficheiros suportados pelo Linux, podemos citar FAT, NTFS, JFS, XFS, HPFS, Minix e ISO 9660 (sistema de ficheiros usado em CD-ROMs), este último também com as extensões RRIP (IEEE P1282) e ZISOFS[7]. Alguns sistemas de ficheiros nativos são, dentre outros, Ext2, Ext3, Ext4, ReiserFS e Reiser4.[8] Alguns sistemas de ficheiros com características especiais são SWAP, UnionFS, SquashFS, Tmpfs, Aufs e NFS, dentre outros.

Sistema Operacional

Richard Stallman, fundador do projeto GNU para um sistema operacional livre.

Logo que Linus Torvalds passou a disponibilizar o Linux, ou seja na sua versão 0.01, já havia suporte ao disco rígido, tela, teclado e portas seriais, o sistema de arquivos adotava o mesmo layout do Minix (embora não houvesse código do Minix no Linux), havia extensos trechos em assembly, e ela já era capaz de rodar o bash e o gcc.

A linha guia quando implementei o Linux foi: fazê-lo funcionar rápido. Eu queria o núcleo simples, mas poderoso o suficiente para rodar a maioria dos aplicativos Unix.[9]

O próprio usuário deveria procurar os programas que dessem funcionalidade ao seu sistema, compilá-los e configurá-los. Talvez por isso, o Linux tenha carregado consigo a etiqueta de sistema operativo apenas para técnicos. Foi neste ambiente que surgiu a MCC Interim Linux, do Manchester Computer Centre, a primeira distribuição Linux, desenvolvida por Owen Le Blanc da Universidade de Manchester, capaz de ser instalada independentemente em um computador. Foi uma primeira tentativa de facilitar a instalação do Linux.

Desde o começo, o núcleo Linux incluía um sistema básico para chamadas do sistema e acesso aos dispositivos do computador. O núcleo de um sistema operativo define entre várias operações, o gerenciamento da memória, de processos, dos dispositivos físicos no computador e é uma parte essencial de qualquer sistema operacional utilizável, contudo para um sistema operacional adquirir funcionalidade são necessários também vários outros aplicativos que determinam funções específicas que aquele sistema será capaz de desenvolver, os aplicativos existentes em um sistema operacional com a única exceção do núcleo são determinados pelo usuário do computador, como por exemplo: interpretadores de comandos, gerenciadores de janelas, que oferecem respectivamente uma interface para o usuário do computador, CLI ou GUI, e outros aplicativos como editores de texto, editores de imagem, tocadores de som, e, mas não necessariamente, compiladores.

A maioria dos sistemas inclui ferramentas e utilitários baseados no BSD e tipicamente usam XFree86 ou X.Org para oferecer a funcionalidade do sistemas de janelas X — interface gráfica. Assim como também oferecem ferramentas desenvolvidas pelo projeto GNU.

No momento do desenvolvimento do Linux, vários aplicativos já vinham sendo reunidos pelo Projeto GNU da Free Software Foundation (‘Fundação Software Livre’), que embarcara em um subprojeto que ainda continua para obter um núcleo, o GNU Hurd. Porém devido a várias complicações o projeto GNU e demora em desenvolver o Hurd, Stallman acabou adotando o núcleo Linux como base para distribuir os programas do projeto GNU , não obstante diversas pessoas e instituições tiveram a mesma idéia e assim várias distribuições começaram a surgir baseadas no núcleo desenvolvido inicialmente por Linus.

Distribuições


Atualmente, um Sistema Operacional (em Portugal Sistema Operativo) Linux ou GNU/Linux completo (uma "Lista de distribuições de Linux ou GNU/Linux") é uma coleção de software livre (e por vezes não-livres) criados por indivíduos, grupos e organizações de todo o mundo, incluindo o núcleo Linux. Companhias como a Red Hat, a SuSE, a Mandriva (união da Mandrake com a Conectiva) e a Canonical (desenvolvedora do Ubuntu Linux), bem como projetos de comunidades como o Debian ou o Gentoo, compilam o software e fornecem um sistema completo, pronto para instalação e uso. Patrick Volkerding também fornece uma distribuição Linux, o Slackware.

As distribuições do Linux ou GNU/Linux começaram a receber uma popularidade limitada desde a segunda metade dos anos 90, como uma alternativa livre para os sistemas operacionais Microsoft Windows e Mac OS, principalmente por parte de pessoas acostumadas com o Unix na escola e no trabalho. O sistema tornou-se popular no mercado de Desktops e servidores, principalmente para a Web e servidores de bancos de dados.

No decorrer do tempo, várias distribuições surgiram e desapareceram, cada qual com sua característica. Algumas distribuições são maiores outras menores, dependendo do número de aplicações e sua finalidade. Algumas distribuições de tamanhos menores cabem num disquete com 1,44 MB, outras precisam de vários CDs, existindo até algumas versões em DVD. Todas elas tem o seu público e sua finalidade, as pequenas (que ocupam poucos disquetes) são usadas para recuperação de sistemas danificados ou em monitoramento de redes de computadores.

Dentre as maiores, distribuídas em CDs, podem-se citar: Slackware, Debian, Suse, e Conectiva. Cada distribuição é, em tese, um sistema operacional independente, de modo que os programas compilados para uma distribuição podem não rodar em outra, embora usem o mesmo núcleo (o Linux propriamente dito). A distribuição Conectiva Linux, por exemplo, tinha as suas aplicações traduzidas em português, o que facilitou que usuários que falam a Língua Portuguesa tenham aderido melhor a esta distribuição. Hoje esta distribuição foi incorporada à Mandrake, o que resultou na Mandriva. Para o português, existe também a distribuição brasileira Kurumin (Essa distribuição foi descontinuada pelo seu mantenedor), construída sobre Knoppix e Debian, e a Caixa Mágica, existente nas versões 32 bits, 64 bits, Live CD 32 bits e Live CD 64 bits, e com vários programas open source: LibreOffice, Mozilla Firefox, entre outros.

Existem distribuições com ferramentas para configuração que facilitam a administração do sistema. As principais diferenças entre as distribuições estão nos seus sistemas de pacotes, nas estruturas dos diretórios e na sua biblioteca básica. Por mais que a estrutura dos diretórios siga o mesmo padrão, o FSSTND é um padrão muito relaxado, principalmente em arquivos onde as configurações são diferentes entre as distribuições. Então normalmente todos seguem o padrão FHS (File Hierarchy System), que é o padrão mais novo. Vale lembrar, entretanto, que qualquer aplicativo ou driver desenvolvido para Linux pode ser compilado em qualquer distribuição que vai funcionar da mesma maneira.

Quanto à biblioteca, é usada a Biblioteca libc, contendo funções básicas para o sistema Operacional Linux. O problema está quando do lançamento de uma nova versão da Biblioteca libc, algumas das distribuições colocam logo a nova versão, enquanto outras aguardam um pouco. Por isso, alguns programas funcionam numa distribuição e noutras não. Existe um movimento LSB (Linux Standard Base) que proporciona uma maior padronização. Auxilia principalmente vendedores de software que não liberam para distribuição do código fonte, sem tirar características das distribuições. O sistemas de pacotes não é padronizado.

ArchLinux, Debian, Fedora, Mandriva, Mint, Opensuse, PCLinuxOS, Puppy, Sabayon, Slackware e Ubuntu são algumas das distribuições mais utilizadas actualmente, listadas aqui por ordem alfabética.

Um exemplo de distribuição que corre num CD é o Kurumin Linux, criado por Carlos Eduardo Morimoto, baseada no Knoppix.

De entre as distribuições consideradas mais difíceis de gerir (por preferirem assegurar a estabilidade tecnológica em detrimento da interface de utilizador), destacam-se a Debian, Gentoo e Slackware.

Existem também distribuições Linux para sistemas móveis, como tablets e smartphones, sendo o Android, desenvolvido pelo Google, a mais difundida de todas. Outras distribuições Linux para sistemas móveis são o Maemo e o MeeGo.

Código Aberto e Programas Livres

Um programa, assim como toda obra produzida atualmente, seja ela literária, artística ou tecnológica, possui um autor. Os Direitos sobre a idéia ou originalidade da obra do autor, que incluem essencialmente distribuição, reprodução e uso é feito no caso de um programa através de sua licença.

Existem dois movimentos que regem o licenciamento de programas no mundo livre, os programas de código aberto e os programas livres. Os dois representados respectivamente pela OSI e pela FSF oferecem licenças para produção de software, sendo seus maiores representantes a licença BSD e a GPL.

O Linux oferece muitos aplicativos de open source, contudo nem todos podem ser considerados programas livres, dependendo exclusivamente sob qual licença estes programas são distribuídos. Os programas distribuídos sob tais licenças possuem as mais diversas funcionalidades, como desktops, escritório, edição de imagem e inclusive de outros sistemas operacionais.

Também existem organizações inclusive no mundo livre como a organização Linux Simples para o Usuário Final (SEUL) que tem como objetivo adotar a maior gama possível de aplicativos de alta qualidade produzidos sobre a GPL. É um projeto voluntário que atualmente se foca no aprendizado de Linux, seu uso na ciência e em documentos de advocacia, bem como gerenciar e coordenar projetos de desenvolvimento de aplicativos.

Controvérsias quanto ao nome

Linux foi o nome dado ao núcleo de sistema operacional criado por Linus Torvalds. Por extensão, sistemas operacionais que usam o núcleo Linux são chamados genericamente de Linux. Entretanto, a Free Software Foundation afirma tais sistemas operacionais são, na verdade, sistemas GNU, e o nome mais adequado para tais sistemas é GNU/Linux, uma vez que grande parte do código-fonte dos sistemas operacionais baseados em Linux são ferramentas do projeto GNU.[10]

Há muita controvérsia quanto ao nome. Eric Raymond afirma, no Jargon File, que a proposta da FSF só conseguiu a "aceitação de uma minoria" e é resultado de uma "disputa territorial".[11] Linus Torvalds afirma que consideraria "justo" que tal nome fosse atribuído a uma distribuição do projeto GNU, mas que chamar os sistemas operacionais Linux como um todo de GNU/Linux seria "ridículo".[12] Linus disse não se importar sobre qual o nome usado, considera a proposta da GNU como "válida" ("ok") mas prefere usar o termo "Linux".[13]

Sobre o símbolo

O símbolo do software foi escolhido pelo seu criador (Linus Torvalds),que um dia estava no zoológico e foi surpreendido pela mordida de um pinguim.Fato curioso e discutido até hoje.[14]

Em 1996, muitos integrantes da lista de discussão "Linux-Kernel" estavam discutindo sobre a criação de um logotipo ou de um mascote que representasse o Linux. Muitas das sugestões eram paródias ao logotipo de um sistema operacional concorrente e muito conhecido (Windows). Outros eram monstros ou animais agressivos. Linus Torvalds acabou entrando nesse debate ao afirmar em uma mensagem que gostava muito de pingüins. Isso foi o suficiente para dar fim à discussão.

Tux.

Depois disso, várias tentativas foram feitas numa espécie de concurso para que a imagem de um pingüim servisse aos propósitos do Linux, até que alguém sugeriu a figura de um "pingüim sustentando o mundo". Em resposta, Linus Torvalds declarou que achava interessante que esse pingüim tivesse uma imagem simples: um pingüim "gordinho" e com expressão de satisfeito, como se tivesse acabado de comer uma porção de peixes. Torvalds também não achava atraente a idéia de algo agressivo, mas sim a idéia de um pingüim simpático, do tipo em que as crianças perguntam "mamãe, posso ter um desses também?". Ainda, Torvalds também frisou que trabalhando dessa forma, as pessoas poderiam criar várias modificações desse pingüim. Isso realmente acontece. Quando questionado sobre o porquê de pingüins, Linus Torvalds respondeu que não havia uma razão em especial, mas os achava engraçados e até citou que foi bicado por um "pingüim assassino" na Austrália e ficou impressionado como a bicada de um animal aparentemente tão inofensivo podia ser tão dolorosa.

Ver também

A Wikipédia possui o portal:
Software Livre
  • Lista de distribuições GNU/Linux
  • Comparação entre distribuições Linux
  • Comandos Linux
  • Lei de Linus

Eventos

  • FISL (Fórum Internacional de Software Livre)
  • Installfest

Notas e referências

  1. Members. www.linuxfoundation.org. Página visitada em 23 de fevereiro de 2011.
  2. ↑ Casas Bahia, a exemplo.
  3. ↑ Primeiro período do original, em inglês: Do you pine for the nice days of minix-1.1, when men were men and wrote their own device drivers?
  4. ↑ Lars Wirzenius (27 de abril de 1998). Linux Anecdotes. Página visitada em 15 de junho de 2007.
  5. Carlos E. Morimoto. Linux, Ferramentas Técnicas 2ed (em Português). 2 ed. [S.l.]: GDH Press e Sul Editores, 2006. 312 p. ISBN 85-205-0401-9
  6. ↑ SystemRescueCd is a Linux system rescue disk available as a bootable CD-ROM or USB stick
  7. ↑ The zisofs filesystem is an extension to the ISO9660 filesystem
  8. Reiser4 ainda está em desenvolvimento.
  9. ↑ No original, em inglês: the guiding line when implementing linux was: get it working fast. I wanted the kernel simple, yet powerful enough to run most unix software.
  10. ↑ Richard Stallman. Linux and the GNU Project (HTML) (em inglês). Página visitada em 7 de março de 2008.
  11. ↑ Eric Raymond. Linux (HTML) (em inglês). Página visitada em 7 de março de 2008.
  12. Revolution OS, documentário de 2001 sobre o Linux. Produzido, dirigido e escrito por J.T.S. Moore
  13. ↑ Linus Torvalds (3 de junho de 1996). Lignux, what's the matter with you people? (HTML) (em inglês). Página visitada em 7 de março de 2008.
  14. ↑ Revista Superinteressante, O Mistério das Marcas, edição 261, janeiro de 2009, p. 34

Ligações externas

  • Controvérsia sobre o nome
  • O que é Linux
  • O que é o Gnu/Linux
  • What is Linux (em inglês)
  • GNU/Linux distro timeline (em inglês)
  • Linux: The 0.01 Release (em inglês)
Portal do Linux

Arch · Debian · Fedora · Ubuntu · Mandriva · Linux Mint · OpenSUSE · PCLinuxOS · Puppy · Sabayon · Slackware Linux · Kurumin · Big Linux · Poseidon Linux · Ekaaty Linux · DreamLinux

Obtida de "http://pt.wikipedia.org/w/index.php?title=Linux&oldid=27789451"

Software

 
Microsoft Windows Server 2008

Desenvolvedor: Microsoft
Lançado em: 18 de fevereiro de 2008 (3 anos)
Versão estável: Windows Server 2008 Service Pack 2(Build 6002.18005.090410-1830)
Versão em teste:
Família do SO: Microsoft Windows
Licença: Proprietária, Freeware
Website Título não preenchido, favor adicionar Microsoft.com.br
Portal Tecnologias de informação

Windows Server 2008 é um sistema operacional de servidores da Microsoft, desenvolvido como sucessor do Windows Server 2003.

Lançado em 27 de fevereiro de 2008 o Windows Server 2008 foi conhecido pelo codename Server Longhorn até 16 de maio de 2007 quando Bill Gates, presidente da Microsoft, anunciou o nome oficial.[1]

Índice

  • 1 Versões
    • 1.1 Windows Server Enterprise Edition
    • 1.2 Windows Server 2008 Datacenter Edition
    • 1.3 Windows Web Server 2008
  • 2 Referências
  • 3 Ligações externas

Versões

Windows Server 2008 Standard Edition

Em substituição ao Windows Server 2003, foi projetada para fornecer serviços e recursos para outros sistemas em uma rede. O sistema operacional tem um abundante conjunto de recursos e opções de configuração. O Windows Server 2008 Standard Edition dá suporte a 2-way e 4-way SMP (multiprocessamento simétrico) e a até 4 gigabytes de memória em sistemas de 32 bits e 32 GB em sistemas de 64 bits.

Windows Server Enterprise Edition

Tal versão estende os recursos fornecidos no Windows Server 2008 Standard Edition para proporcionar maior estabilidade e disponibilidade e dar suporte a serviços adicionais como o Cluster e Serviço de Federação do Active Directory. Também dá suporte a sistemas de 64 bits, memória RAM hot-swap e non-uniform memory access (NUMA). Os servidores enterprise podem ter até 32 GB de RAM em sistemas x86 e dois terabytes (TB) de RAM em sistemas de 64 bits e 8 CPUs.

Windows Server 2008 Datacenter Edition

Versão mais robusta do Windows Server 2008 com aperfeiçoamentos nos recursos de cluster e suporte a configurações de memória muito amplas com até 64 GB de RAM em sistemas x86 e dois TB RAM em sistemas de 64 bits. Tem requisito mínimo de CPU e pode dar suporte a até 64 CPUs.

Windows Web Server 2008

Versão Web Edition do Windows Server 2008. Uma vez que foi projetada para fornecer serviços Web para a implantação de sites e aplicativos baseados nesta, essa versão do servidor só dá suporte a recursos relacionados. Especialmente, ela inclui o Microsoft.NET Frameworks, o Microsoft Internet Information Services (IIS), o ASP.NET, além do servidor de aplicativos e recursos de balanceamento de carga de rede. No entanto, não possui vários outros recursos, incluindo o Active Directory, e exige a instalação do server core para obter alguma funcionalidade padrão. O Windows Web Server 2008 dá suporte a até 32 GB de RAM e 4 CPUs x64.

Referências

  1. ↑ Miller, Michael J. (15 de maio de 2007). Gates at WinHec 2007: Windows Server 2008, Rally, Home Server and More. Forward Thinking. Página visitada em 28 de fevereiro de 2008.

Ligações externas

  • Página international da Microsoft: Windows Server 2008 (em inglês)
  • Página Microsoft Brasil: Windows Server 2008
  • Centro Técnico Oficial de Windows Server Microsoft
  • Aprenda sobre Windows Server 2008
Precedido por
Windows Server 2003
Windows Server 2008
2008 - 2009
Sucedido por
Windows Server 2008 R2
Obtida de "http://pt.wikipedia.org/w/index.php?title=Windows_Server_2008&oldid=26717685"

Software

 

O Windows Server 2008 R2 é um sistema operacional de servidor, produzido pela Microsoft. Foi liberado para fabricação em 22 de Julho de 2009[1], e lançado em 22 de Outubro de 2009.[2] De acordo com o Windows Server Team Blog, a disponibilidade para o varejo foi em 14 de Setembro de 2009.[3]Ele se baseia no Windows NT 6.1, o mesmo sistema operacional básico usado no Windows 7, orientado para o sistema cliente. É a primeira versão de sistema operacional exclusivamente 64 bits da Microsoft. O Windows Server 2008 R2 é uma atualização do Windows Server 2008.

Aperfeiçoamentos da versão incluem novas funcionalidades para o Active Directory, novos recursos de Virtualização e Gerenciamento, o lançamento do IIS 7.5, e suporte até 256 processadores lógicos. Existem sete edições: Foundation, Standard, Enterprise, Datacenter, Web, HPC Server e Itanium.

Índice

  • 1 História
  • 2 Novos Recursos
  • 3 Service Packs
    • 3.1 Service Pack 1
  • 4 Requisitos do sistema
  • 5 Edições
  • 6 Veja Também
  • 7 Referências
  • 8 Links Externos
    • 8.1 Microsoft
    • 8.2 Miscelânea

História

A Microsoft apresentou o Windows Server 2008 R2 na conferência Professional Developers Conference (PDC) de 2008, como a variante do Windows 7 para servidor.

Em 31 de janeiro de 2009, uma versão beta do Windows Server 2008 R2 foi disponibilizada para assinantes dos programas TechNet e MSDN da Microsoft, assim como aos participantes do programa Microsoft Connect para o Windows 7. Dois dias depois, o beta foi lançado para o público via Centro de Downloads Microsoft.[4]

Em 31 de abril de 2003, a versão RC (Release Candidate) foi disponibilizada a assinantes do Microsoft TechNet e MSDN.[5] Em 5 de maio de 2009, a versão release candidate foi disponibilizada ao público geral via Centro de Downloads Microsoft.[6]

Segundo o blog da Divisão do Windows Server,[7] o Microsoft Windows Server 2008 R2 foi disponibilizado para vários canais de distribuição nas seguintes datas do ano de 2009:

• OEMs receberam o Windows Server 2008 R2 RTM em inglês e todos os pacotes de idiomas em 29 de julho. Os idiomas restantes ficaram disponíveis por volta de 11 de agosto.

• Parceiros ISV (fornecedor independente de software) e IHV (fornecedor independente de hardware) puderam baixar o Windows Server 2008 R2 RTM do MSDN a partir de 14 de agosto.

• Profissionais de TI com Assinaturas do TechNet puderam baixar o Windows Server 2008 R2 RTM e obter chaves de produto para alemão, espanhol, francês, inglês e italiano a partir de 14 de agosto e para todos os idiomas restantes a partir de 21 de agosto.

• Desenvolvedores com Assinaturas MSDN puderam baixar o Windows Server 2008 R2 versão RTM e obter chaves de produto para alemão, espanhol, francês, inglês e italiano a partir de 14 de agosto e para todos os idiomas restantes a partir de 21 de agosto.

• Membros Gold/Certified do Microsoft Partner Program puderam baixar o Windows Server 2008 R2 RTM através do Portal do Microsoft Partner Program (MPP) em 19 de agosto.

• Clientes de Licenciamento por Volume com uma licença de Software Assurance (SA) puderam baixar o Windows Server 2008 R2 RTM em 19 de agosto através do Volume License Service Center (VLSC).

• Clientes de Licença de Volume sem uma licença de Software Assurance (SA) puderam comprar o Windows Server 2008 R2 através do Licenciamento por Volume em 1º de setembro.

Além disso, estudantes qualificados puderam baixar o Windows Server 2008 R2 RTM Standard Edition em 15 idiomas no DreamSpark.[8]

A Microsoft anunciou que o Server 2008 R2 será a última versão do Windows a suportar a arquitetura Itanium.

Novos Recursos

Um guia de revisor publicado pela empresa descreve várias áreas de aperfeiçoamento na versão R2.[9] Elas incluem novos recursos de virtualização (Live Migration, Volumes Compartilhados de Cluster usando Clustering de Failover e Hyper-V), consumo reduzido de energia, um novo conjunto de ferramentas de gerenciamento e novos recursos do Active Directory como "lixeira" para objetos do AD excluídos. O IIS 7.5 foi adicionado nessa versão, que também inclui serviços FTP atualizados. Aperfeiçoamentos de segurança contam com a inclusão de suporte a DNSSEC para o Serviço de Servidor DNS (observação: embora o DNSSEC seja suportado, apenas um algoritmo de assinatura está disponível [10] (#5 / RSA/SHA-1). Como muitas zonas utilizam um algoritmo diferente – particularmente a zona raiz – isso significa que o Windows ainda não pode servir como um resolvedor recursivo) e serviços de VPN criptografados autenticados sem cliente através do DirectAccess para clientes usando Windows 7. O servidor DHCP dá suporte a um grande número de aperfeiçoamentos [11], como filtragem de controle baseada em endereço MAC, conversão de posses ativas em reservas ou filtros baseados na Camada do Link, exaustão de endereço do IPv4 no nível do escopo, proteção a Nome DHCP para máquinas não Windows para impedir o roubo de nomes, melhor desempenho através de cache agressivo de banco de dados de posse, log de atividades de DHCP, preenchimento automático de certos campos de interface de rede, um assistente para configuração de escopo dividido, migração de função de Servidor DHCP usando WSMT, suporte para DHCPv6 Opção 15 (Classe de Usuário) e Opção 32 (Tempo de Atualização de Informações). O servidor DHCP é executado no contexto da conta do Serviço de Rede que tiver menos privilégios para reduzir os danos potenciais caso seja comprometido.

O Windows Server 2008 R2 dá suporte a até 64 processadores físicos [12] ou até 256 lógicos por sistema. (Observação: Apenas as edições Datacenter e Itanium podem tirar proveito da capacidade de 64 processadores físicos. A Enterprise, a edição mais alta depois daquelas duas, pode usar apenas 8.)[13] Quando implantados em uma função de servidor de arquivos, os novos serviços de Infraestrutura de Classificação de Arquivos permite que arquivos sejam armazenados em servidores designados na empresa com base em convenções de nomenclatura de negócios, relevância para processos da empresa e políticas corporativas gerais.[14]

A edição Server Core inclui um subconjunto do .NET Framework, para que alguns aplicativos (inclusive sites ASP.NET e o Windows PowerShell 2.0) possam ser utilizados.

O aperfeiçoamento do desempenho foi uma importante área de foco nessa versão; a declarou que trabalhou para reduzir o tempo de inicialização, melhorar a eficiência de operações de E/S usando menos energia e melhorar, de modo geral, a velocidade de dispositivos de armazenamento, especialmente iSCSI.

O Active Directory tem diversos recursos novos quando se trata de elevar os níveis funcionais de floresta e domínio [15] para o Windows Server 2008 R2. Quando eleva o nível funcional do domínio, dois recursos incluídos são a Garantia de Mecanismo de Autenticação e Gerenciamento Automático de SPN. Quando o nível funcional da floresta é elevado, o recurso Lixeira do Active Directory está disponível e pode ser habilitado usando-se o módulo do Active Directory para Powershell.[16]

Service Packs

Service Pack 1

Em fevereiro de 2011, a Microsoft lançou oficialmente a versão final (RTM) do Windows 7 e do Windows Server 2008 R2 Service Pack 1 (SP1) para OEMs parceiros. Além de correções de bugs, ele introduz duas importantes funções: RemoteFX e Memória Dinâmica. O RemoteFX possibilita a utilização de hardware gráfico para incluir suporte a gráficos 3D em uma VM baseada no Hyper-V e a Memória dinâmica permite que uma VM aloque ocasionalmente apenas a RAM física necessária para sua execução. Em 16 de fevereiro, o Windows 7 e o Windows Server 2008 R2 SP1 ficaram disponíveis para Assinantes MSDN e TechNet, assim como para clientes de Licenciamento por Volume. Desde 22 de fevereiro o Windows 7 e o Windows Server 2008 R2 SP1 estão disponíveis para download via Centro de Downloads da Microsoft e disponíveis no Windows Update.

Seu número de versão é "6.1.7601.17514.101119-1850".[17]

Requisitos do sistema

Os requisitos para o Windows Server 2008 R2 são:[18]

Processador
1.4 GHz processador x86-64 ou Itanium 2
Memória
512 MB RAM (poderá limitar o desempenho em algumas funcionalidades)
Recomendado: 1 GB RAM
Máximo: 8 GB RAM (Foundation), 32 GB RAM (Standard), ou 2 TB RAM (Enterprise, Datacenter e sistemas baseados no Itanium)
Monitor
Super VGA (800 x 600)
Espaço em disco
Mínimo (edições acima da Foundation): 32 GB ou mais
Mínimo (Foundation Edition): 10 GB ou mais
Computadores com mais de 16 GB de RAM requerem mais espaço em disco para paging e ficheiros dump.
Outros requisitos
Drive de DVD, teclado e mouse, acesso à Internet.

 

Edições

Quadro comparativo de Edições do Windows Server 2008 R2[19]
Recursos Foundation Standard Web HPC Enterprise Datacenter Itanium
Memória física máxima (RAM) (64-bit) Não (8 GB) Parcial (32 GB) Parcial (32 GB) Parcial (128 GB) Sim (2 TB) Sim (2 TB) Sim (2 TB)
Máximo de CPUs físicas suportadas Não (1) Parcial (4) Parcial (4) Parcial (4) Parcial (8) Sim (64) Sim (64)
Replicação Entre Arquivos (DFS-R) Não Não Não Não Sim Sim Sim
Nós de Cluster de Failover (Nós) Não Não Não Não Sim (16) Sim (16) Parcial (8)
Sincronização de Memória com Tolerância a Falhas Não Não Não Não Sim Sim Sim
Inclusão de Memória a Quente Não Não Não Não Sim Sim Sim
Inclusão de Processadores a Quente Não Não Não Não Não Sim Sim
Substituição de Memória a Quente Não Não Não Não Não Sim Sim
Substituição de Processador a Quente Não Não Não Não Não Sim Sim
Conexões de Acesso à Rede (IAS) Parcial (10) Parcial (50) Não Não Sim (Ilimitada) Sim (Ilimitada) Parcial (2)
Conexões de Acesso à Rede (RRAS) Parcial (50) Parcial (250) Não Parcial (250) Sim (Ilimitada) Sim (Ilimitada) Não
Conexões de Administrador de Área de Trabalho Remota 2
Gateway de Serviços de Área de Trabalho Remota Parcial (50) Parcial (250) Não Não Sim (Ilimitada) Sim (Ilimitada) Não
Direitos de Uso de Imagem Virtual Não Parcial (Host + 1 VM) Parcial (Guest) Parcial (Host + 1 VM) Parcial (Host + 4 VMs) Sim (Ilimitada) Sim (Ilimitada)
Preços em US$ N/A $1.029 (5 CALs)
$1.229 (10 CALs)
$469 (Sem CAL) N/D $3.999 (25 CALs) $2.999 $2.999
Recursos[19] Foundation Standard Web HPC Enterprise Datacenter Itanium

Veja Também

A Wikipédia possui o portal:
Microsoft
  • Comparação de versões do Microsoft Windows
  • História do Microsoft Windows

Referências

  1. Windows Server 2008 R2 Reaches the RTM Milestone! - Windows Server Division WebLog - Site Home - TechNet Blogs. blogs.technet.com. Página visitada em 20 de fevereiro de 2011.
  2. Windows 7 and Windows Server 2008 R2 Timelines Shared at Computex. Microsoft (3 de Junho de 2009). Página visitada em 2009-06-03.
  3. When to expect Windows Server 2008 R2 RTM - Windows Server Division WebLog - Site Home - TechNet Blogs. blogs.technet.com. Página visitada em 20 de fevereiro de 2011.
  4. Windows 7 public beta is available now. Emil Protalinski.. Página visitada em 20 de fevereiro de 2011.
  5. Announcing Windows Server 2008 R2 Release Candidate (RC). Microsoft TechNet. Página visitada em 20 de fevereiro de 2011.
  6. Download Windows Server 2008 R2 RC .iso images (May2009). Microsoft. Página visitada em 31 de fevereiro de 2011.
  7. Windows Server Division WebLog. Microsoft. Página visitada em 20 de fevereiro de 2011.
  8. Windows Server 2008 R2 on DreamSpark. Microsoft. Página visitada em 20 de fevereiro de 2011.
  9. Windows Server 2008 R2 Reviewers Guide. Microsoft. Página visitada em 20 de fevereiro de 2011.
  10. Understanding DNSSEC in Windows. Microsoft. Página visitada em 20 de fevereiro de 2011.
  11. New features in DHCP for Windows Server 2008 R2 / Windows 7. Blogs.technet.com. Página visitada em 20 de fevereiro de 2011.
  12. Windows Server 2008 R2: Scalability for the Enterprise Customer. Microsoft. Página visitada em 20 de fevereiro de 2011.
  13. Windows7 and Windows Server 2008 R2 support more than 64 Processors in one System. Microsoft. Página visitada em 20 de fevereiro de 2011.
  14. R2: How Would You Manage Without It?. Blog MSDN. Página visitada em 20 de fevereiro de 2011.
  15. Appendix of Functional Level Features. Microsoft. Página visitada em 20 de fevereiro de 2011.
  16. Server 2008 R2: Active Directory Functional Levels. Praetorian Prefect. Página visitada em 20 de fevereiro de 2011.
  17. Announcing Availability of Windows 7 and Windows Server 2008 R2 SP1. Windows Team Blog. Página visitada em 20 de fevereiro de 2011.
  18. Requisitos de Sistema do Windows Server 2008 R2.
  19. a b Comparação de Edições do Windows Server 2008 R2 por Especificações Técnicas (em pt). Página visitada em 29 September 2010.

Links Externos

Microsoft

  • Site oficial do Windows Server 2008 R2
  • Centro Técnico Oficial de Windows Server Microsoft
  • Aprenda sobre Windows Server 2008 com os laboratórios virtuais
  • Baixe o Windows Server 2008 R2 e mais
  • Windows Server 2008 R2 para o setor governamental

Miscelânea

  • winsupersite.com - Preview do Windows Server 2008 R2
  • Converta o Windows Server 2008 R2 em Estação de Trabalho
Obtida de "http://pt.wikipedia.org/w/index.php?title=Windows_Server_2008_R2&oldid=27753782"

Software

 

Os antivírus são programas de computador concebidos para prevenir, detectar e eliminar vírus de computador.

Existe uma grande variedade de produtos com esse intuito no mercado, a diferença entre eles está nos métodos de detecção, no preço e nas funcionalidades.

Índice

  • 1 História
  • 2 Problemas de segurança
  • 3 Métodos de identificação
  • 4 Ver também
  • 5 Referências
  • 6 Ligações externas

História

Quando Peter Norton, empresário de tecnologias de informação, apagou acidentalmente um arquivo, desenvolveu o Norton Utilities para restaurá-los. Ele criou a Symantec, em 1982, dando início a criação e comercialização de softwares de seguranças no mercado, e livros sobre o assunto. Ele foi um dos primeiros desenvolvedores de sistemas de segurança.

A primeira contaminação por um vírus de computador, ocorreu em 1988, utilizando uma BBS como meio. Sendo assim, John McAfee, programador da Lockheed Air Corporation, empresa de aviação americana, desenvolveu o VirusScan, primeira vacina conhecida.

Seus criadores procuram incessantemente falhas em sistemas operacionais, servidores de [internet] ou aplicativos conhecidos e que estejam instalados na maioria dos computadores do mundo. Uma vez descoberta a brecha, o vírus é lançado. Se espalha com rapidez assustadora e em poucas horas provoca caos na internet e prejuízos astronômicos.

Não necessariamente esses produtos são pagos, e também não existe relação entre custo e eficiência, exemplo disso é o Active Virus Shield, muito usado atualmente e que possui versão gratuita.

Importante ressaltar que a maioria dos fabricantes (mesmo aqueles onde os softwares são pagos) distribuem vacinas e atualizações gratuitas, assim como "pequenos antivírus" para eliminar vírus específicos, como quando surge um vírus novo com alto grau de propagação e perigosos (geralmente vírus enviados por e-mail e que se reenviam automaticamente).

É muito importante manter seu antivírus atualizado. Essa é uma tarefa que a maioria deles já faz automaticamente, bastando estar conectado à internet para ser baixado do site do fabricante a atualização e estar configurado para isso.

Os vírus informáticos apareceram e propagaram-se em larga escala devido à má gestão e programação de certos produtos que foram lançados para o mercado antes de serem devidamente testados.

Problemas de segurança

Devido a uma série de motivos, a família de sistema operacional Windows é a mais visada pelos projetistas de vírus. Alguns dos motivos mais citados estão listados abaixo:

  • amplamente utilizado;
  • alto índice de usuários leigos;
  • dependente de software de terceiros para eficaz segurança.

Muitas pessoas do movimento OpenSource acreditam que os principais problemas de segurança do Windows estão associados ao modelo de desenvolvimento desse software: os usuários não tem acesso ao código fonte, e consequentemente, não podem visualizar brechas e apontar correções, gerando uma demora na entrega de correções e maior número de brechas não corrigidas. Já os defensores do Windows acreditam que por o código do mesmo ser revisto justamente por pessoas plenamente capacitadas para tal e por isso, ao contrário do movimento OpenSource, que não pode garantir a profissionalização de seus programadores, o modelo proprietário é melhor segundo os mesmos, mais confiável e com menor índice de falhas.

O índice de vírus no sistema operacional GNU/Linux é muito mais baixo que no Windows, mas falhas de segurança que podem levar o sistema a tornar-se inseguro são descobertas com mais frequência se comparadas ao Windows[1]. Por isso, é importante, que independente do sistema operacional que utilize, você o mantenha sempre atualizado.

Métodos de identificação

  • Escaneamento de vírus conhecidos - Quando um novo vírus é descoberto seu código é desmontado e é separado um grupo de caracteres (uma string) que não é encontrada em outros softwares não maliciosos. Tal string passa a identificar esse vírus, e o antivírus a utiliza para ler cada arquivo do sistema (da mesma forma que o sistema operacional), de forma que quando a encontrar em algum arquivo, emite uma mensagem ao usuário ou deleta o arquivo automaticamente.
  • Sensoreamento heurístico - O segundo passo é a análise do código de cada programa em execução quando usuário solicita um escaneamento. Cada programa é varrido em busca de instruções que não são executadas por programas usuais, como a modificação de arquivos executáveis. É método complexo e sujeito a erros, pois algumas vezes um executável precisa gravar sobre ele mesmo, ou sobre outro arquivo, dentro de um processo de reconfiguração, ou atualização, por exemplo. Portanto, nem sempre o aviso de detecção é confiável.
  • Busca Algorítmica - Expressamente, a busca algorítmica é aquela que utiliza algoritmos para selecionar os resultados. Essa classificação em "Busca Algorítmica", do Inglês "algorithmic search", é de caráter publicitário ou vulgo já que qualquer mecanismo de busca utiliza um algoritmo. Esta denominação foi criada para se diferenciar das "Buscas Patrocinadas" em que o pagamento (patrocínio) dos mecanismos de busca faz com que os resultados patrocinados tenham prioridade. Por exemplo: para buscar strings (cadeias de texto) que detectariam um vírus de computador
  • Checagem de Integridade - Checagem de integridade cria um banco de dados, com o registro dos dígitos verificadores de cada arquivo existente no disco, para comparações posteriores. Quando for novamente feita esta checagem, o banco-de-dados é usado para certificar que nenhuma alteração seja encontrada nesses dígitos verificadores. Caso seja encontrado algum desses dígitos diferentes dos gravados anteriormente, é dado o alarme da possível existência de um arquivo contaminado.

Cabe ao usuário verificar se a alteração foi devido a uma atividade suspeita, ou se foi causada simplesmente por uma nova configuração, efetuada recentemente.


Vale salientar que os antivírus são programas que procuram por outros programas (os vírus) e/ou os barram, por isso, nenhum antivírus é totalmente seguro o tempo todo, e existe a necessidade de sua manutenção (atualizando) e, antes de tudo, fazer sempre uso do backup para proteger-se realmente contra perda de dados importantes.

Não é recomendado o uso de 2 antivírus ao mesmo tempo, pois um deles pode detectar o outro, como falsos-positivos.

Ver também

A Wikipédia possui o portal:
Portal das tecnologias de informação
  • Vírus informáticos
  • Lista de programas antivírus
  • EICAR - Instituto Europeu para Pesquisa de Antivírus de Computador

Referências

  1. ↑ secunia.com

Ligações externas

  • EICAR - Instituto Europeu para Pesquisa de Antivírus de Computador (em inglês)(em francês)(em alemão)
  • Centro de coordenação do Carnegie Mellon CERT (em inglês)
  • oAntiVirus.com (em português)
  • M3Corp | AntiVírus e Anti Spyware Sophos Proteção Total (em português)
Obtida de "http://pt.wikipedia.org/w/index.php?title=Antiv%C3%ADrus&oldid=27627942"

Software

 
Microsoft Forefront
Desenvolvedor Microsoft
Plataforma Microsoft Windows
Lançado em 29 de Setembro de 2009
Versão estável 1.0.1961.0 (28 de Fevereiro de 2010)
Idioma(s) Português Inglês , Espanhol , Francês , Alemão , Chinês Simplificado, Italiano , Russo
Sistema Operacional Windows XP Windows Server 2003, Windows Vista, Windows 2008, Windows 7 , Windows 2008 R2
Gênero(s) Antivírus
Licença Código fechado, trialware
Estado do desenvolvimento Corrente
Página oficial microsoft.com/forefront/
Portal das Tecnologias de informação

Microsoft Forefront é uma linha de software de segurança empresarial da Microsoft. Microsoft Forefront tem produtos que protegem muitos aspectos da computação empresarial, incluindo soluções para Exchange, SharePoint e dispositivos individuais.

links externos

  • Microsoft Forefront homepage

 

Obtida de "http://pt.wikipedia.org/w/index.php?title=Microsoft_Forefront&oldid=27823264"

Software

 
Plataforma de colaboração
O Windows Sharepoint Services (WSS) é uma plataforma de colaboração voltada para aplicações intranet. O WSS cria um site ou série deles. Esses sites são estruturados hierarquicamente, podendo ter recursos colaborativos como fórum, documentos compartilhados, versionamento de documentos, entre outros.
Baseado em hierarquia de sites
O WSS se baseia numa hierarquia de sites. Top site é o mais alto da hierarquia, nele todos os sites e sub-sites são criados. Site é o nível interno de Top site na hierarquia. Sub-site é o nível mais baixo. São tolerados sub sites dentro de sub sites.
Obs.: Vários Top sites podem ser criados, porém eles não possuem relação um com o outro.
Vários usuários
O WSS possui uma lista de usuários que é associada aos usuários do Windows ou do Active Directory (AD). Esses usuários têm acesso ao sharepoint, podendo ter permissões específicas para acesso. Por exemplo, o administrador pode fazer várias alterações na configuração do WSS, enquanto o membro não. Todos os usuários têm alguma permissão que define seu nível de acesso dentro do Sharepoint.
Sites pessoais
Cada usuário pode ter um site pessoal dentro do WSS. Esse site é associado ao top site que ele entrou e ao usuário que ele se logou. O site pessoal é totalmente alterável pelo usuário dono.
Listas de discussão, de documentos e outros
O WSS é uma estrutura de colaboração. Ele fornece acesso a discussões, lista de documentos, versionamento de documentos, entre outros.
Sistema integrado de e-mails com Exchange
O Exchange é o servidor de e-mails da Microsoft. O WSS pode associar o Exchange para envio de e-mails entre os membros do WSS, e com isso alertas administrativos podem ser enviados sem complicações.
Integrada com Microsoft Office
Documentos de Word, Excel, e paint InfoPath entre outros podem ser exibidos dentro do WSS, sem necessidade de o computador cliente ter os mesmos instalados.

Arquitetura do Sharepoint 2003

Client
Os clientes do Sharepoint podem utilizar qualquer sistema operacional Windows que esteja utilizando o Internet Explorer. O cliente não necessita de Sharepoint instalado, dotnetFramework ou quaisquer outros requisitos.
LoadBalance
O LoadBalance é opcional. Ele serve para gerir os servidores utilizados por SharePoint, procurando distribuir a demanda de forma justa a todos.
Front End Servers
Estes servidores têm comunicação direta com os clientes, provendo os serviços que permitem a utilização de SharePoint pelos clientes, e a interface com os servidores de dados.
Back End Servers
Estes servidores, ao quais os clients não têm acesso direto são servidores de dados, armazenando os banco de dados acessíveis aos clientes através dos servidores de frente (Front End Servers).
Virtual Server
Servidores virtuais são sites ASP.NET criados dentro do IIS com extensões para WSS, com configurações adicionais que possibilitam a utilização de serviços SharePoint. Um Virtual Server pode se tornar um top site ou sub-site.
Job Server
Job server ou servidor de trabalho é o servidor SharePoint central. Ele coordena todas as ações do sharepoint e centraliza todos os servidores de front end.
Web Server
Web server é o site sharepoint que tem as configurações dos sites do cenário Sharepoint criado.
Index Server
Index Server, ou servidor de índices é um servidor utilizado para buscas. Cada índice contém as regras e termos que agilizam buscas.
Search Server
Search Server é o servidor que faz efetivamente a busca, utilizando um ou mais índices armazenados no Index Server.
Data Base Server
Um Database Server, ou servidor de dados é um servidor que armazena os dados do Sharepoint. Contém bancos de dados, por exemplo MSDE ou SQL Server.

Estrutura do Sharepoint

Windows 2003 Server
O WSS deve ser instalado em um computador com o Windows 2003 Server instalado.
Database Server
O banco de dados deve ser instalado para armazenamento das configurações do Sharepoint. O banco de dados deve ser o MSDE ou SQL Server.
.net framework
Os Sites do sharepoint são em aspnet. Aspnet é uma tecnologia compatível com o dotnetFramework.
IIS (Virtual Server)
O Internet Information Server é o servidor web que o sharepoint usa. Ele organiza todos os Virtual Servers do sharepoint.
Windows Sharepoint Services
O WSS é o servidor em questão. Ele associa o Banco de dados e o IIS para sua instalação.

Usando o Sharepoint 2003

Sites, subsites e my Site
A estrutura do sharepoint possibilita a criação de sites. Para criar um subsite

basta ir a Sites > Criar Site. Para criar um site pessoal basta ir a Meu Site. Na primeira vez que entrar nessa página, ele criará o site no banco de dados, e isso demorará alguns instantes. Nas vezes seguintes você entrará no site já criado.

Documentos e listas
Para criar lista de qualquer tipo basta ir a Gerenciar Conteúdo> Criar.
Customizando listas
As listas podem ter várias colunas. E toda a lista pode ser customizada, para atender as necessidades. Para isso basta ir a Gerenciar Conteúdo> “nome da lista” > modificar definições e colunas.
Áreas e sub-áreas
As áreas e sub-áreas são criadas dentro do site. Estas possuem definições próprias independentes de outras áreas, entre as quais de segurança. São a principal ferramenta para estruturar a informação. Para criar novas áreas basta ir a Gerenciar site de portal > criar área.
Usuários e permissões
Novos usuários podem ser criados e configurados dentro do WSS. Para isso vá a Gerenciar usuários > Busca > Por padrão um textbox de busca fica localizado na parte direita superior da página. Nenhuma configuração adicional é necessária para seu funcionamento. Ele está pronto, e qualquer texto que está contido em qualquer site dentro desse TopSite é válido. A busca é feita do nó atual da árvore de sites para baixo. Isso significa que se estiver num sub-site o site superior da hierarquia não será varrido pela busca.
Usando webparts
Webpart são pequenos programas feitos em alguma linguagem que atenda a CLS (Common Language Specification). Esses programas possibilitam qualquer acesso dentro do WSS. Por default algumas web parts já vem prontas. Para adicionar essas web parts já prontas vá em Editar página> Modificar página compartilhada > Adicionar web parts > procurar após isso basta pegar a webpart e arrastar para a webpart zone, dentro do site.

Configurando o Sharepoint 2003

Site settings
Site settings trata de todas as configurações do Topsite em questão. Tais como gerencia de usuários, definições de busca, etc.
Sharepoint Administration Center
O Sharepoint Administration Center possui configurações em nível de servidor. Possui configurações gerais de banco de dados, extensão de sites, configuração de busca, etc.

Webparts

Aplicação Webpart
As webparts são programas escritos em uma das linguagens de programação que seguem a Common Language Specification (CLS). Geralmente, para criar uma Webpart é necessário usar um ambiente de desenvolvimento integrado (IDE) como o Visual Studio, que é o mais adequado. As aplicações Webparts são dll's integradas ao Virtual Server para poderem ser utilizadas nos sites WSS. As Webparts utilizam-se de listas como banco de dados, pois já é um objeto nativo do Sharepoint. Isso possibilita melhor mobilidade e facilidade de uso nas aplicações. Tudo que é visível pelo Sharepoint é um objeto programável. Aplicações e controles Sharepoint são criados com esses objetos possibilitando assim, a criação de qualquer coisa dentro do mesmo.

SharePoint 2010

Com o SharePoint 2010, é possível criar soluções personalizadas para suprir necessidades específicas, fazendo com que a colaboração da sua equipe seja possível de forma fluente e intuitiva. Por exemplo uma ou mais pessoas podem editar um arquivo, que foi distribuído por um link para esse documento no SharePoint.

Também é possível a criação de sites personalizados para cada equipe da empresa, com níveis de restrição de acesso manipuláveis, fazendo com que seja mais fácil encontrar uma informação quando necessário. Alguns recursos também foram aprimorados, como o gerenciamento de múltiplos arquivos, sendo possível por exemplo, dar o check out em todos os arquivos ao mesmo tempo.

É possível visualizar o SharePoint através do seu celular, em uma interface leve e com navegação às bibliotecas de documentos, listas, wikis, blogs, etc. O envio de SMS a cada mudança em arquivos ou em uma lista, é uma das novas funcionalidades do SharePoint 2010.

Os usuários pode ter uma experiência de rede social, via SharePoint. Com a utilização de feeds, os usuários podem seguir as atividades de um colega e manterem-se informados sobre o desenvolvimento das áreas de interesse. Também há a recomendação de novos colegas para a sua página.

O SharePoint 2010 oferece aos usuários uma experiência bastante semelhante ao Microsoft Office. Além disso, é possível consolidar no SharePoint itens como Intranet, Extranet e Sites da Internet da sua empresa, seja na infra-estrutura local ou na nuvem.

É possível a visualização do conteúdo que esteja no SharePoint 2010, de modo offline. O conteúdo é automaticamente sincronizado quando o usuário se conectar a rede, ajudando em situações aonde a Internet não está disponível no momento.

O Microsoft SharePoint 2010, oferece templates de aplicações prontas para o uso, assim como uma plataforma para a criação de soluções personalizadas para a sua empresa.

Ligações externas

  • Centro do Microsoft SharePoint
  • Página do produto Microsoft SharePoint
  • Como criar um portal no SharePoint
  • Webcasts de SharePoint
  • Guia de Introdução ao Windows SharePoint Services
  • Grupo de temas sobre Sharepoint no Brasil
  • What is SharePoint?
Obtida de "http://pt.wikipedia.org/w/index.php?title=Sharepoint&oldid=26475505"

Software

 
Microsoft SharePoint Designer
Desenvolvedor Microsoft
Plataforma x86 e x64
Lançado em 30 de novembro de 2006 (5 anos)
Versão estável 2010 (14.0) (21 de Abril de 2010)
Sistema Operacional Windows 7, Windows Vista e Windows XP
Gênero(s) Editor de HTML
Licença Microsoft EULA
Estado do desenvolvimento Ativo
Página oficial SharePoint Designer
Portal das Tecnologias de informação

O Microsoft SharePoint Designer (anteriormente conhecido como Microsoft Office SharePoint Designer) é um software editor de HTML e web design freeware para criar ou modificar o sites e páginas web do Microsoft SharePoint. É uma parte da família de produtos do Microsoft SharePoint.[1] Trata-se de uma antiga parte da família de produtos do Microsoft Office 2007, mas não foi incluído em nenhum dos pacotes do Microsoft Office. SharePoint Designer e o Microsoft Expression Web são os sucessores da Microsoft FrontPage. Enquanto o Expression Web serve como sucessor de recursos completo para o FrontPage, SharePoint Designer apresenta centra-se na concepção e personalização do SharePoint sites da Microsoft. Por exemplo, ela inclui apenas específico site SharePoint modelos. Ele retém FrontPage mais recursos do que o Expression Web, tais como componentes web, famoso banco de dados, contador barras de navegação, insira mapa, etc Embora SharePoint Designer 2007 (esta primeira versão do produto) poderia ser usado como um editor HTML genérico, SharePoint Designer 2010 (a versão posterior) pode deixar de funcionar na ausência do Microsoft SharePoint Server ou Microsoft SharePoint Foundation.[2] partes SharePoint Designer sua base de código, interface e mecanismo de renderização de HTML com o Expression Web e não dependem do motor Trident do Internet Explorer.[3] A primeira versão deste produto, o SharePoint Designer 2007, era um software comercial do produto. Em 31 de março de 2009 no entanto, o SharePoint Designer 2007 foi disponibilizado como freeware.[4][5] Em 24 de abril de 2009, a Microsoft lançou o SharePoint Designer Service Pack 2.[6] Em 21 de abril de 2010, o SharePoint Designer 2010 foi liberado e disponibilizado para download.[7]

Referências

  1. Product Information: Related Technologies. Microsoft SharePoint website. Microsoft corporation. Página visitada em August 28, 2010.
  2. ↑ Hoover, Kolby (November 2, 2009). SharePoint Designer 2010 New Shell Tour. Microsoft SharePoint Designer Team Blog. Microsoft corporation. Página visitada em August 28, 2010. "A Few Limitations to Call Out [~snip~] As we shifted to being a powerful and usable toolset for SharePoint 2010, we securely attached to SharePoint. In other words, SPD focused at being only a SharePoint tool. Unfortunate for some, this means that you won’t be able to use its page editor without also having SharePoint. The page editor is only available when a SharePoint site is open."
  3. ↑ Mauceri, Rob (April 16, 2007). Office Live and SharePoint. Microsoft SharePoint Designer Team Blog. Microsoft corporation. Página visitada em August 23, 2010. "SharePoint Designer doesn't use Trident. SharePoint Designer, Expression Web, and the next version of Visual Studio's Visual Web Designer (code name Orcas) all use the same standards-based web design component. This component was developed jointly by the three product teams for high fidelity rendering of web standards like CSS, XHTML, as well as ASP.net."
  4. Download details: SharePoint Designer 2007. Microsoft Download website. Microsoft Corporation (March 31, 2010). Página visitada em August 23, 2010.
  5. Video: SharePoint Designer 2007 (April 2009 Announcement). Microsoft Download. Microsoft corporation (April 1, 2009). Página visitada em August 23, 2010.
  6. Microsoft Office SharePoint Designer 2007 Service Pack 2 (SP2). Microsoft Download. Microsoft corporation (April 24, 2009). Página visitada em August 23, 2010.
  7. Download details: Microsoft SharePoint Designer 2010 (32-bit). Microsoft Download website. Microsoft Corporation (April 21, 2010). Página visitada em August 23, 2010.

Ligações Externas

  • Site oficial
  • SharePoint Designer complementary website
  • Download details: SharePoint Designer 2007
  • Download details: Microsoft SharePoint Designer 2010 (32-bit)
  • Download details: Microsoft SharePoint Designer 2010 (64-bit)
Obtida de "http://pt.wikipedia.org/w/index.php?title=Microsoft_SharePoint_Designer&oldid=23847255"

fonte.wikipedia

Software

 
Título a ser usado para criar uma ligação interna é Microsoft SharePoint Workspace.
Microsoft SharePoint Workspace
Desenvolvedor Microsoft
Plataforma x86 e x64
Lançado em 15 de junho de 2010 (1 ano)
Versão estável 2010 Service Pack 1 (14.0.6106.5005) (14 de Setembro de 2011)
Sistema Operacional Microsoft Windows, Mac
Licença Proprietária
Estado do desenvolvimento Service Pack 1
Página oficial SharePoint Workspace
Portal das Tecnologias de informação

O Microsoft SharePoint Workspace, anteriormente chamado de Microsoft Office Groove é um software da Microsoft.

Constitui-se em um programa de colaboração que coordena equipes de trabalho em atividade em um projeto, permitindo-lhes compartilhar informações em qualquer lugar e a qualquer momento. Com isso, o software pretende economizar tempo, aumentar a produtividade e a qualidade.

O Office Groove 2007 facilita a colaboração em equipe, independentemente de sua localização, fuso horário ou horário de trabalho. Os espaços de trabalho de colaboração do Groove 2007 reúnem pessoas, ferramentas e dados em um só lugar, para que você e os membros de sua equipe tenham acesso a tudo, diretamente de suas áreas de trabalho. E vocês se mantêm sincronizados automaticamente. O Office Groove foi disponibilizado a partir do Ms Office 2007. Ele é encontrado nas versões Home, Professional, Enterprise e Blue Edition.

Obtida de "http://pt.wikipedia.org/w/index.php?title=Microsoft_SharePoint_Workspace&oldid=26967707"

Software

 


Último lançamento do Windows, Windows 7, mostrando o seu ambiente de trabalho e menu Iniciar.
Desenvolvedor: Microsoft
Modelo: Shared source
Versão estável: Windows 7, Windows Server 2008 R2
NT 6.1 Build 7600 (7600.16385.090713-1255)
22 de julho de 2009 (empresas) / 22 outubro de 2009 (publico em geral)
Versão em teste: Windows 8
NT 6.2 (6.2.8102.0)
lançado em 13 de Setembro de 2011
Núcleo: Híbrido
Licença: Microsoft EULA
Desenvolvimento: Corrente
Website Microsoft Windows
Portal Tecnologias de informação

Microsoft Windows é uma popular família de sistemas operacionais criados pela Microsoft, empresa fundada por Bill Gates e Paul Allen. Antes da versão NT, era uma interface gráfica para o sistema operacional MS-DOS. O Windows é um produto comercial, com preços diferenciados para cada uma de suas versões. É o sistema operacional mais utilizado em computadores pessoais no mundo, embora uma grande quantidade de cópias sejam ilegais.[1]O impacto deste sistema no mundo atual é muito grande devido ao enorme número de cópias instaladas. Conhecimentos mínimos desse sistema, do seu funcionamento, da sua história e do seu contexto são, na visão de muitos, indispensáveis, mesmo para os leigos em informática. A atual versão estável do Windows para desktops é o Windows 7, lançado em 2009. Para servidores o Windows Server 2008 R2 é a versão mais recente e estável. Já está em desenvolvimento o Windows 8, o sucessor do Windows 7.

Índice

  • 1 Significado do nome
  • 2 Origem e história
  • 3 Versões
  • 4 Compatibilidade
  • 5 Características técnicas
  • 6 Windows 7
  • 7 Implementações Alternativas ao Windows e suas APIs de Programação
  • 8 Ver também
  • 9 Referências
  • 10 Ligações externas

Significado do nome

A palavra windows em português significa janelas. A sua interface gráfica é baseada no padrão WIMP e utiliza o conceito WYSIWYG, previamente desenvolvido em Xerox PARC: possui janelas que exibem informações e recebem respostas dos utilizadores através de um teclado ou de cliques do mouse.

O registro da marca Windows foi legalmente complicado, pelo fato dessa palavra ser de uso corrente em inglês ("windows" significa "janelas"). [carece de fontes?].

Origem e história

A Microsoft começou a desenvolver o Microsoft Windows em setembro de 1981. O Windows só começa a ser tecnicamente considerado como um SO a partir da versão Windows NT, lançada em Agosto de 1993. O que havia antes eram sistemas gráficos sendo executados sobre alguma versão dos sistemas compatíveis com DOS, como MS-DOS, PC-DOS ou DR-DOS. Somente o MS-DOS era produzido pela própria Microsoft.

O MS-DOS é um sistema operativo que não dispõe de interface gráfica, funciona através de comandos de texto introduzidos no teclado pelo utilizador. O Windows surgiu inicialmente como uma interface gráfica para MS-DOS, que permitia correr programas em modo gráfico, o que permitiu a utilização do mouse, que até à altura era considerado supérfluo em computadores de tipo IBM-PC.

Versões


Compatibilidade

Os primeiros Windows, como o 1.0, 2.0, são compatíveis apenas com partições formatadas em sistema de ficheiros FAT, ou como é chamado, FAT 16. O 3.x poderia ser instalado em FAT 32, porém necessita instalado o MS-DOS 7.10, que era incluido nos disquetes de inicialização do Windows 95 OSR2 e Windows 98, necessitando modificar alguns arquivos para permitir seu funcionamento. Ao mudar do 3.1 para o 95B (Windows 95 OSR 2/OSR 2.1), os HD's poderiam ser formatados em FAT 32. Inicialmente lançado com o Windows NT, a tecnologia NTFS é agora o padrão de fato para esta classe. Com a convergência de ambos sistemas, o Windows XP passou também a preferir este formato.

Características técnicas

A principal linguagem de programação usada para escrever o código-fonte das várias versões do Windows é a C e algumas partes com C++ e Assembly.

Até a versão 3.11, o sistema rodava em 16 bits (apesar de poder instalar um update chamado Win32s para adicionar suporte a programas 32 bits), daí em diante, em 32 bits. As versões a partir do XP e 2003 Server estão preparadas para a tecnologia 64 bits.

Os sistemas de 64 bits não possuem mais suporte para rodar nativamente aplicativos de 16 bits, sendo necessário uso de emuladores/máquinas virtuais.

Windows 7

A última versão do Windows, o Windows 7, é um sistema muito bem aceito uma vez que é estável, o seu visual é intuitivo e tem uma boa performance em uma grande gama de computadores, de variadas configurações. O layout também sofreu algumas modificações, para que seja mais fácil encontrar o que você precisa, quando precisa, permitindo que o usuário ganhe tempo em tarefas rotineiras.

Um dos pontos interessantes do Windows 7, é a pesquisa bastante intuitiva no menu Iniciar. Ao se abrir o clássico menu 'Iniciar', você pode tanto visualizar os seus arquivos e programas da maneira clássica, como pode simplesmente digitar o nome do mesmo, para que a busca retorne o que você deseja.

Dentro das melhorias do Windows 7, também pode ser encontrada a barra de tarefas nova. Além de um layout moderno, ao passar o mouse sobre o programa em execução, abre-se um leque de possibilidades como por exemplo abrir um arquivo recente, alterar o status do Messenger, entre outras ações, sem que haja a necessidade de o programa ser aberto.

Implementações Alternativas ao Windows e suas APIs de Programação

  • Wine[2]
  • CrossOver[3]
  • ReactOS[4]
  • Cedega[5]
  • Darwine[6]

Ver também

  • Sistema OperacionalPB ou Sistema OperativoPE
  • Microsoft Security Essentials
  • Windows XP
  • Windows Vista
  • Windows 7
  • Readyboost

Referências

  1. ↑ PCWORLD (15 de Maio de 2007). PC World pirataria ainda é de 60%. Página visitada em 15 de Janeiro de 2008.
  2. WineHQ - é uma implementação livre da API de programação do Windows rodando sobre X, OpenGL e distribuições de UNIX (Linux, MAC). www.winehq.org. Página visitada em 14 de fevereiro de 2011.
  3. CrossOver: É uma implementação comercial do Wine com foco em aplicativos.. www.codeweavers.com. Página visitada em 14 de fevereiro de 2011.
  4. ReactOS Website - é um sistema operacional alternativo e livre que visa atingir um grau de elevada compatibilidade com o Microsoft Windows.. www.reactos.org. Página visitada em 14 de fevereiro de 2011.
  5. TransGaming Inc - É uma implementação comercial do Wine com foco em jogos usando DirectX.. transgaming.com. Página visitada em 14 de fevereiro de 2011.
  6. Darwine - É uma implementação do Wine para Darwin e Mac OS X/ppc. darwine.sf.net. Página visitada em 14 de fevereiro de 2011.

Ligações externas

  • Microsoft Windows Brasil
  • Microsoft Windows Corporation
  • Implemente Windows
  • Tire dúvidas nos fóruns de Windows

Obtida de "http://pt.wikipedia.org/w/index.php?title=Microsoft_Windows&oldid=27755977"

Software

 

Microsoft Product Activation

O Microsoft Product Activation (MPA, em português, traduz. literal.: ativação do produto Microsoft) é uma medida anti-pirataria Presente apartir do Windows 7 e criada pela Microsoft que reforça a licença de software (End User License Agreement, EULA) e / ou de outros acordos licença.

Se o sistema operativo Windows não é ativada dentro de um período de tempo limitado, ele se tornará praticamente inutilizável até que seja ativada. Se falhar a ativação do Windows, ele entra modo de funcionalidade reduzida, o usuário terá acesso muito limitado até uma licença válida chave é fornecida. No entanto, a partir de Windows Vista service pack 1 modo de funcionalidade reduzida foi removido. Windows irá agora periodicamente lembrar o usuário que sua cópia do Windows precisa ser ativado. Além disso, o desktop wallpaper será alterado para um sólido tela preta cada hora.

Índice

  • 1 Processo de activação do produto Windows
  • 2 Microsoft Product Activation recolhe os seguintes componentes
  • 3 Pessoas necessárias para ativar
  • 4 Windows Genuine Advantage
  • 5 Benefícios (a Microsoft)
  • 6 Ver também
  • 7 Ligações externas

Processo de activação do produto Windows

Ao instalar o Windows XP ou Windows Vista, o utilizador insere a sua chave de licença que lhes é dado quando o produto foi adquirido. (Isto é, geralmente fornecida num certificado de autenticidade fechados com o produto.)

Após a instalação, o utilizador está notificado da necessidade de activar o produto dentro de 30 dias.

A activação pode ser feita através da Internet, com um utilitário fornecido com o software, ou através de uma chamada telefónica para um Microsoft Agent. Para activação através de um telefonema, um longo "código de activação" deve ser lido para o Microsoft Agent que fornece um código para activar o Windows.

Microsoft Product Activation recolhe os seguintes componentes

  • Display Adapter
  • Adaptador SCSI
  • IDE Adapter
  • Adaptador de rede (incluindo o endereço MAC)
  • RAM Valor Variação (e.g. 0-512 MB)
  • Processador tipo e número de série
  • Disco rígido dispositivo volume e número de série
  • Optical Drive (e.g. CD-ROM)

Ela calcula e, em seguida, registra uma série baseada no primeiro dispositivo de cada tipo que foi encontrada durante a configuração, e armazena este número em seu disco rígido. Este é então enviado para a Microsoft, juntamente com o número de identificação do produto derivado do 25-caráter exclusivo Product Key utilizado na configuração do Windows. Se Service Pack 1 é pré-instalado, todo o Produto Key também é transmitido de modo que podem então ser verificada contra uma lista de chaves conhecidas pirata.

Se ativação não é executado dentro de 30 dias após a instalação do sistema operativo, o sistema irá operar apenas em modo seguro, permitindo que os dados a serem recuperados a partir do sistema do disco rígido, mas geralmente torna muito difícil ou mesmo impossível de executar qualquer outro software até Windows é ativado.

Se ativação falhar, o sistema voltará a operar apenas em modo seguro até uma licença válida chave é fornecida.

Quando é realizada ativação, o Windows salva um registro do hardware na máquina do usuário. Se o sistema for iniciado com mudanças significativas hardware, o Windows irá requerer a reativação. Começando com Service Pack 1, o usuário é determinado período de três dias para reativar.

Pessoas necessárias para ativar

Todos os usuários finais do Windows XP e deve ir através do processo de ativação, exceto para Corporativa / Volume usuários (que não são necessárias para ativar a todos) e usuários com licenças OEM (onde o OEM irá executar a ativação sobre o nome do usuário antes de fornecer a máquina ).

Todos os usuários finais do Windows Vista, incluindo os usuários corporativos, são necessários para ativar. No entanto, corporações têm a opção de criar os seus próprios servidores de ativação, o que irá ativar um certo número de Vista instalações sem a necessidade de conectar-se ao Microsoft.

Utilizadores finais de versões anteriores do Windows XP (por exemplo, o Windows 98, Windows Me, e Windows 2000) não têm que ativar.

Windows Genuine Advantage

Versões recentes do Windows (por exemplo, o Windows XP Service Pack 2, Windows Vista), também inclui um módulo chamado "WGALogon" (Windows Genuine Advantage sobre Logon), que tenta verificar regularmente se uma cópia do Windows é pirata. Se for pirata, um aviso é exibido no desktop do usuário Esta cópia do Windows não é original. Você pode ter sido vítima de falsificação de software. e o bloqueio ao usuário para acessar qualquer atualizações da Microsoft com exceção de alta prioridade.

Benefícios (a Microsoft)

A seguir está uma lista dos benefícios oferecidos pelo produto ativação. No entanto, todos estes benefícios Microsoft, e não necessariamente o utilizador final.

Microsoft pode garantir que o usuário final está usando uma cópia legalmente licenciada do Windows Microsoft pode restringir o uso de determinadas características, ou mesmo a totalidade do produto, para os usuários que passam pela validação Microsoft é mais fácil fazer cumprir o Windows EULA (mas note que validação problemas podem impedir o uso de software, mesmo quando essa utilização não cumprir o EULA) Microsoft pode reduzir pirataria relacionadas com perdas financeiras, forçando-ia ser piratas para comprar uma cópia legal do Windows A Microsoft concede acesso a determinados recursos (por exemplo, o software atualiza e outros downloads) para os usuários finais, que passam pela validação (ver Windows Genuine Advantage)

Ver também

  • Windows XP
  • ActiveX
  • Windows Genuine Advantage

Ligações externas

  • Microsoft: Windows XP Product Activation (em inglês)
Obtida de "http://pt.wikipedia.org/w/index.php?title=Microsoft_Product_Activation&oldid=27773514"

Software

 
Microsoft Office
Desenvolvedor Microsoft
Plataforma x86 e x64
Lançado em 1990 (20–21 anos)
Versão estável 2010 (14.0.6023.1000) (28 de Junho de 2011)
Idioma(s) 77 Idiomas
Sistema Operacional Microsoft Windows
Gênero(s) Suite de aplicativos
Licença Shareware
Estado do desenvolvimento Service Pack 1
Página oficial microsoft.com
Portal das Tecnologias de informação

Microsoft Office for Mac
Desenvolvedor Microsoft
Lançado em 1989 (21–22 anos)
Versão estável 2011 (14.1.2.110505) (14 de Junho de 2011)
Sistema Operacional Mac OS X
Gênero(s) Suite de aplicativos
Licença Shareware
Estado do desenvolvimento Service Pack 1
Página oficial microsoft.com
Portal das Tecnologias de informação

O Microsoft Office é uma suíte de aplicativos para escritório que contém programas como processador de texto, planilha de cálculo, banco de dados, apresentação gráfica e gerenciador de tarefas, e-mails e contatos.

Em 2002, constatou-se que a suíte era líder de mercado, com pouco mais de 90% de market share (Krazit, 2002).

Microsoft Office 2010 é a mais recente versão do sistema Microsoft Office. Foi lançada em fase beta em 2006, e em 2007 foi disponibilizada para alguns clientes, ao exemplo do que aconteceu com o Windows Vista.

O Office 2007 inclui uma série de novas funcionalidades, a mais notável é a interface gráfica de usuário, completamente nova, chamada de Fluent User Interface, (inicialmente designada a Ribbon UI). O Office 2007 requer o Windows XP com Service Pack 2 ou superior, Windows Server 2003 com Service Pack 1 ou superior, Windows Vista, ou Linux com a camada de compatibilidade CrossOver instalada.[1]

O "Ribbon User Interface" é uma tarefa orientada para interface gráfica do usuário (GUI). Possui um botão central, amplamente conhecido como o "Botão Office".

O Office 2007 também inclui novas aplicações e ferramentas do lado do servidor. Entre estas está Groove, uma suite de colaboração e comunicação para pequenas empresas, que foi originalmente desenvolvido pela Groove Networks antes de ser adquirida pela Microsoft em 2005. Também é incluído Office SharePoint Server 2007, uma importante revisão para a plataforma de servidor de aplicativos do Office, que suporta "Excel Services", uma arquitetura cliente-servidor para apoiar Excel que são compartilhados em tempo real entre várias máquinas, e também são visíveis e editáveis através de uma página web.

Microsoft FrontPage foi removido completamente do pacote Office. Foi substituído pelo Microsoft Office SharePoint Designer, que é voltado para o desenvolvimento de portais SharePoint. Seu programa irmão, o Microsoft Expression Web é orientado para o desenvolvimento geral da web. No entanto, nenhum desses programas foi incluido no Office 2007.

O reconhecimento de voz e de caligrafia são agora parte do Windows Vista. Componentes de fala e tinta foram removidos do Office 2007.

Índice

  • 1 Aplicativos
  • 2 Ciclo de vida
    • 2.1 Suporte de versões
      • 2.1.1 Versões disponíveis para Windows
      • 2.1.2 Versões disponíveis para Macintosh
  • 3 Referências
  • 4 Ligações externas

Aplicativos

A suíte vem acrescentando com o tempo cada vez mais funcionalidades. Ela é vendida em várias versões, de acordo com a quantidade de programas incorporados e com o perfil de usuários ou empresas.

[Expandir]Programas do Office 2010 (Windows)

Ciclo de vida

Suporte de versões

Em 03/02/1989 , a Microsoft instituiu uma política de ciclo de vida de suporte a seus produtos. [2][3] Ao serem lançados, os produtos seguiam um ciclo de suporte nos quais recebiam atualizações de segurança e melhorias gerais. A partir do lançamento o produto possuia suporte inicial de cinco anos, passado este período o produto entrava na fase de suporte estendido no qual terminará cinco anos após o fim do suporte inicial.

Versões disponíveis para Windows

Versão do Windows Versão atual Fim do suporte inicial Fim do suporte extendido
Windows NT 3.51 com Service Pack 5 Office 97 31 de Agosto de 2001 28 de Fevereiro de 2002
Windows 95 Office 2000 30 de Junho de 2004 14 de Julho de 2009
Windows NT 4.0 Office XP 11 de Julho de 2006 12 de Julho de 2011[4]
Windows 98 Office XP 11 de Julho de 2006 12 de Julho de 2012[5]
Windows 2000 com Service Pack 2 Office XP 11 de Julho de 2006 12 de Julho de 2012[5]
Windows 2000 com Service Pack 3 ou superior Office 2003 14 de Abril de 2009 8 de Abril de 2014[6]
Windows Me Office XP 11 de Julho de 2006 12 de Julho de 2012[5]
Windows XP com Service Pack 2 Office 2007 10 de Abril de 2012 11 de Abril de 2012
Windows XP com Service Pack 3 Office 2010 13 de Outubro de 2015 13 de Outubro de 2020
Windows Server 2003 Office 2003 14 de Abril de 2009 8 de Abril de 2014[6]
Windows Server 2003 com Service Pack 2 Office 2010 13 de Outubro de 2015 13 de Outubro de 2020
Windows Vista sem Service Pack Office 2007 10 de Abril de 2012 11 de Abril de 2017
Windows Vista com Service Pack 1 Office 2010 13 de Outubro de 2015 13 de Outubro de 2020
Windows Server 2008 Office 2010 13 de Outubro de 2015 13 de Outubro de 2020
Windows 7 Office 2010 13 de Outubro de 2015 13 de Outubro de 2020

Versões disponíveis para Macintosh

Versão do Macintosh Processador Versão atual Fim de suporte geral
System 7.0-Mac OS 8.1 68K Office 4.2.1 Desconhecido
System 7.1.2 PPC Office 4.2.1 Desconhecido
System 7.5-Mac OS 8.0 PPC Office 98 30 de Junho de 2003[7]
Mac OS 8.1-9.2.2 PPC Office 2001 31 de Dezembro de 2005[8]
Mac OS X 10.1-10.5 PPC Office v. X 9 de Janeiro de 2007[9]
Mac OS X 10.2-10.5 PPC Office 2004 10 de Janeiro de 2012[10]
Mac OS X 10.4-10.6 Universal Office 2008 9 de Abril de 2013[11]
Mac OS X 10.5-10.6 Intel Office 2011 12 de Janeiro de 2016[12]

Referências

  1. ↑ Informação no site da CodeWeavers, desenvolvedora do CrossOver.
  2. Office Family Product Support Lifecycle FAQ. Microsoft (July 30, 2009). Página visitada em October 30, 2010.
  3. Microsoft Support Lifecycle Policy FAQ. Microsoft (July 23, 2010). Página visitada em October 30, 2010.
  4. Microsoft Product Lifecycle.
  5. a b c Microsoft Product Lifecycle.
  6. a b Microsoft Product Lifecycle.
  7. ↑ Office 98 for Mac Support Lifecycle
  8. ↑ Office 2001 for Mac Support Lifecycle
  9. ↑ Office X for Mac Support Lifecycle
  10. ↑ Office 2004 for Mac Support Lifecycle
  11. ↑ Office 2008 for Mac Support Lifecycle
  12. ↑ Office 2011 for Mac Support Lifecycle

Ligações externas

  • Home Page do Microsoft Office
  • Central de desenvolvedores do Office
  • Ajuda e Instruções do Office Online

 

Obtida de "http://pt.wikipedia.org/w/index.php?title=Microsoft_Office&oldid=27613656"

Software

 
Lotus
Tipo Corporação privada
Indústria Software
Produtos Ver lista completa de produtos
Lucro $???
Website www.lotus.com

Lotus Notes é um sistema cliente-servidor de trabalho colaborativo e e-mail, concebido pela Lotus Software, do grupo IBM Software Group. É um dos software de colaboração mais utilizado no mundo sendo traduzido para vários idiomas e podendo ser instalado em diversas plataformas e diversos sistemas operacionais, como: Microsoft™ Windows™, Sun™ Solaris™, Linux (Intel™), IBM™ AIX™, zOS, OS/400 e Linux no IBM eServer zSeries™.

Índice

  • 1 Características
  • 2 A Replicação dos dados
  • 3 Segurança
  • 4 Programação
  • 5 Banco de dados
  • 6 Usar como cliente de e-mail
  • 7 Quais são as diferenças do Notes em relação aos outros clientes
  • 8 Crítica
  • 9 História
  • 10 Versões
  • 11 Futuro
  • 12 Notas e referências
  • 13 Ligações externas

Características

O Lotus Notes é usado principalmente como um cliente de e-mail, mas também age como cliente de comunicador instantâneo (no caso para o Lotus Sametime), Navegador, Caderno eletrônico, calendários e outros recursos, bem como uma plataforma para interagir com as aplicações colaborativas. Pessoas que fazem suporte ao cliente do Notes consideram a fácil interoperabilidade entre todas estas características como a principal vantagem do uso do Notes em ambientes corporativos. No momento do lançamento do produto, as aplicações mais comuns eram apenas simples discussões e gerenciamentos de contatos. Hoje o Notes fornece também blogs, wikis, RSS Agregadores, gerenciamento de cliente por CRM e sistemas de Help Desk, e além disso as organizações podem construir uma variedade de aplicações para o Notes usando o aplicativo "Domino Designer".

O cliente do "Notes" pode usar protocolos como o IMAP e POP para acessar clientes de e-mail em servidores de correio sem domínio.

é um protocolo para atualizar e pesquisar diretórios rodando sobre TCP/IP.

Os Recipientes de endereços podem ser recuperados de qualquer servidor LDAP, incluindo Active Directory.

O cliente faz também a navegação embora a maioria das pessoas configurem-no para usar o seu próprio navegador (browser) em vez disto.

As características do Notes incluem o agrupamento e agendamento de calendários, e-mail baseado em SMTP (HTML esta disponível aos colaboradores que usam Java), news baseados em NNTP, e conversão automática do HTML através do aplicativo "Domino" por HTTP.

O comunicador instantâneo do Notes permite que você veja seus colegas de trabalho online e tenha sessões do bate-papo com eles. A sessão de chat pode ser com uma ou diversas pessoas (um tipo de reunião imediata).

Na versão 7, o Notes forneceu uma interface para Web service. O "Domino" pode ser o Servidor web para os demais arquivos HTML; a autenticação do acesso às bases de dados do Domino e externos sistemas como o Active Directory da Microsoft.

Um projeto de cliente está disponível para permitir o rápido desenvolvimento da base de dados consistindo de formulários ("forms") que permitem que os usuários criem originais; e (views) que mostram campos do documento em colunas.

Além de ser um sistema "groupware" (E-mail, calendário, compartilhamento de originais e discussões), Notes/Domino é também uma plataforma para desenvolver aplicações otimizadas em formato cliente-servidor e aplicações web. Seu uso para desenvolvimento de projetos e códigos fornecem a potencialidade que facilita a construção de qualquer tipo de aplicações "workflow" (que tem complexo processos para aprovação e roteamentos de dados).

O Domino é a plataforma de colaboração mais utilizada por empresas que pregam segurança como ponto estratégico. Houve épocas em que o Lotus Domino era proibido de sair dos Estados Unidos devido a sua criptografia.

A Replicação dos dados

Uma das características originais do Notes e do Domino é a sua facilidade de replicação. Os servidores e os clientes podem copiar projetos de banco de dados e dados através de vários tipos de redes (incluindo por modem). Isto permite aos usuários a vantagem de usar as bases de dados do Notes mesmo off-line— da sincronização com os clientes, qualquer mudança no cliente e atualizada no servidor na próxima conexão. Mesmo quando off-line a segurança pode ser preservada, mas somente cifrando cada base de dados a um arquivo de ID especifico do Notes. Antes do Notes 6, as cópias locais eram feitas sem criptografia, que levou a alguns Web site da segurança reivindicar uma 'back door' de segurança no Notes. Com o Notes 6, entretanto, as cópias, por padrão, são cifradas com um Notes ID que é usado quando elas são criadas. A Replicação pode ser marcada, manual, ou programada. A Replicação ocorre entre um cliente e um servidor (iniciada pelo cliente) ou entre dois servidores.

Segurança

A Segurança é desenvolvida no produto. O Notes foi o primeiro aplicativo (software) a adotar usar a Criptografia de chave pública para a autenticação do usuário e para a criptografia dos dados, e permaneceu sendo o produto com a maior base instalada de usuários CCP (Criptografia de chave pública), Até que as leis dos E.U.A. que regulam o criptografia foram mudadas em 2000. A Lotus foi proibida de exportar versões dos Notes que suportaram as chaves simétricas de criptografia maiores que 40 bits. Em 1997, o Lotus negociou um acordo com NSA dos Estados Unidos da América que permitiu a exportação de uma versão que suportasse chaves, mais fortes com 64 bits, mas sendo 24 bits cifrados com uma chave especial e incluídos na mensagem para fornecer um "fator de redução da carga de trabalho" para o NSA. A razão disto era que os usuários dos Notes fora dos E.U.A. tiveram uma proteção mais forte contra a espionagem industrial do setor, mas nenhuma proteção adicional contra a espionagem feita pelo governo dos E.U.A.[1] não era um segredo - de fato se anunciou intensamente - mas com alguma justificativa que muitas pessoas consideraram-na ser uma Backdoor. Alguns governos objetaram a ser postos em desvantagem quanto ao NSA, e em conseqüência disso a Lotus continuou a suportar a versão de 40 bits para estes países. Sob as leis atuais da exportação dos E.U.A., o Lotus suporta somente uma versão de Notes com CCP de chaves simétricas de 128 bit, chaves públicas de 1024 bit, e nenhum fator da redução de carga de trabalho. As ferramentas da segurança do usuário do Dominio incluem também S/MIME, a versão 3 do SSL com tamanhos chaves padrão definidos pela indústria para o HTTP e os outros protocolos da internet, os certificados de cliente para X.509, e Certificação de Autoridade integrada.

Programação

Notes/Domino é uma aplicação que corre em diversas plataformas ao mesmo tempo, é segura, com documentação distribuída orientada por banco de dados e um correio eletrônico estruturado em um ambiente de rápido desenvolvimento para aplicações pré-construídas como e-mail, calendário, etc. Se pondo à parte de seus concorrentes comerciais, como a Microsoft Exchange ou a Novell GroupWise, que são geralmente aplicações construída para um fim específico para correio e calendários com extensa oferta de APIs.

As bases de dados do Domino do Lotus são construídas usando o cliente Designer do Domino, disponível somente para Windows. Uma característica chave do Notes é que muitas réplicas da mesma base de dados podem existir ao mesmo tempo em usuários e clientes diferentes, através de plataformas diferentes, e usando a mesma arquitetura de armazenamento para todas as réplicas de clientes e de usuários. Originalmente, a replicação do Notes acontecia a nível do documento (isto é no registro do mesmo). Com liberação do Notes 4 em 1996, a replicação foi mudada de modo que ocorresse agora no nível do campo.

Um banco de dados é um arquivo NSF (Notes Storage Facility), contendo a unidade básica de estocagem conhecida como uma "note". toda note tem um UniqueID e um NoteID. O UniqueID identifica um note através de todas as réplicas dentro de um conjunto de servidores, um servidor de domínio, ou mesmo através de domínios pertencentes a muitas organizações que hospedam réplicas do mesmo banco de dados. O NoteID, por outro lado, é único para um note somente dentro do contexto de uma réplica. Cada note também estoca sua criação e datas de modificação, e um ou mais itens.

Há varias classes de notes, incluindo o "design notes" e o "document notes". "Design notes", que foi criado e modificado com o cliente "Domino Designer", apresenta elementos programáveis, tais quais os padrões GUI para apresentação de formulários e edição de dados, ou fórmulas e scripts para manipulação de dados. "Document notes", são criados e modificados no cliente do Lotus Notes, via um navegador, via mail envio e recebimento, ou via código de programação, detalhando dados do usuário sem perder o foco.

"Document notes" podem ter relacionamentos pai-filho, mas o Notes não devem ser considerado um base de dados hierárquica no sentido clássico do IMS. As bases de dados do Notes não são também relacionais, embora haja o SQL driver pode ser usado com o Notes, e tem algumas características que podem ser usadas para desenvolver as aplicações que imitam características relacionais. Não há nenhuma sustentação para "atomic transactions" no Notes, e seu locking por arquivos é rudimentar na melhor da hipóteses. O Notes são essencialmente uma base de dados originalmente um esquema baseada em documentos, levemente estruturada com sustentação de grande quantidade de texto e uma poderosa capacidade de indexação. Esta estrutura imita os fluxo de informação (workflow) baseado em papel dentro da empresa os quais o Notes visa automatizar.

Os itens representam o conteúdo de um note. Cada item tem um nome, um tipo, e opcionalmente pode ter algumas "flag" ajustadas. Um note pode ter mais de um item com o mesmo nome. Os tipos incluem o número, lista de números, texto, lista de textos, o Data (horário), lista de Datas (horário), e texto(RTF). As flags são usadas controlando os atributos associados ao item, tal como lido ou escrito com segurança. Os itens no "design notes" representam os elementos de programação de uma base de dados. Por exemplo, a disposição de um formulário de entrada é armazenada em texto RTF no item dentro de um formulário do "design notes". Isto significa que o projeto da base de dados pode ser replicada aos desktops dos usuários apenas como os seus dados próprios, fazendo a extremamente fácil de atualizar as aplicações.

Os itens no "Document notes" representam os dados de entrada do usuário ou computados. Um item nomeado "formulário" em um "Document notes" pode ser usado para ligar um documento ao um formulário do "design notes", que dirija ao cliente do Lotus Notes para fundir os itens do "Document notes" com a informação e o código do GUI representados em um determinado formulário do "design notes" com a finalidade de edição ou apresentação do formulário.

O resultante perda de amarração entre documentos no planejamento do trajeto da informação é um das pedras angulares do poder do Lotus Notes. Os bancos de dados tradicionais costumavam trabalhar com rìgidos esquemas de amarração, por outro lado, pode-se considerar o poder desta característica uma espada de duas pontas.

O desenvolvimento de aplicações para o Notes usa diversas linguagens de programação.

Por fórmula e LotusScript são as duas principais. O lotusScript é similar, e pode mesmo ser considerado uma especialização do, visual Basic, mas com a adição de muitas poderosas classes nativas que modelam o ambiente do Notes, visto que a fórmula é original ao Notes mas similar à língua da fórmula do Lotus 1-2-3. Desde a versão 5, Java (língua de programação)Java] e o Javascript são integrados também no Lotus notes. O LotusScript é a ferramenta preliminar para aplicações tornando-se o cliente do Notes, bem como processado a nivel de usuário. O Java e o Javascript são as ferramentas preliminares para desenvolver aplicações para o acesso ao navegador (browser), permitindo que os navegadores emulem a funcionalidade do cliente do Notes. O cliente do Notes pode agora processar nativamente o código em Java e em Javascript, embora o desenvolvimento de aplicações requeira geralmente pelo menos algum código específico somente o Notes ou via navegador.

Entretanto, o cliente Mac cliente não suporta Java e os clientes Windows normalmente não suportam as versões mais recentes de Java.

Na versão 6, A Lotus estabeleceu a programação com interface XML além das opções já disponíveis. A linguagem Domino XML (DXL) apresenta representações XML de todos os dados e recursos de planejamento no modelo Notes, permitindo que qualquer ferramenta de edição para criar e modificar dados no Notes/Domino.

Aplicações Externas para o Lotus Notes, a IBM disponibiliza toolkits em C, C++, e Java para se conectar ao banco de dados do Domino e realizar um grande variedade de tarefas. O C toolkit é o mais maturo e o C++ toolkit é uma versão voltada a linguagem por objetos do C toolkit, faltando muitas funções que o toolkit C fornece. O toolkit Java é menos maduro dos três e pode ser usado para aplicação de necessidades básicas. **

Banco de dados

As bases de dados do Notes são diferentes da DBMS desde que é originalmente centrista, permitem valores múltiplos nos itens (campos), não requer um esquema, não têm controle de acesso interno e não armazenam dados em texto RTF. Entretanto, o Domino 7 suporta o uso da base de dados DB2 da IBM como uma alternativa para bases de dados do Notes, e você pode desenvolver uma base de dados do notes a uma base de dados relacional usando ferramentas como DECS, [LEI], JDBCSql para o Domino ou NotesSQL. As bases de dados relacionais são baseadas em um índice/chave ou em um relacionamento pai/filho. No Notes são estritamente contidas em um recipiente/relacionamento. Visto que a tentação para programadores da base de dados relacional é normalizar a base de dados, as bases de dados do notes devem ser *des-*normalizadas. Quando os campos do multi-valor puderem oferecer algum normalização, não é o que anota é projetado. Os colaboradores de RDBMS acham frequentemente difícil conceituar a diferença. Pode ser útil pensar no notes document como (uma "nota") como análogo a um original do xml armazenado nativa em uma base de dados (embora com limitações nos tipos de dados e estrutura disponível).

Os benefícios desta estrutura de dados são: necessidade de #Não definir o tamanho dos campos, ou &mdash os tipos de dados; embora você possa se você quiser; os #Atributos (= campos no Notes) que são nulos, não fazem espaço em uma base de dados; completamente #Construído em forma de texto.

Usar como cliente de e-mail

Lotus Notes é normalmente empregado como um cliente de e-mail para usuários finais em grandes empresas, contabilizando mais de 120 milhões de usuários no total de acordo com os últimos cálculos da IBM.[2]

Quando uma organização utiliza um Lotus Notes Server, isto significa que todos os usuários usam o cliente para Lotus Notes para ler e enviar seus e-mail e usar as suas base de dados. Entretanto, o Domino server também suporta o cliente para POP3 e IMAP, e como a extensão do produto (DAMO - Domino Access for Microsoft Outlook) suporta o acesso nativo para Outlook da Microsoft. A Lotus também habilita o Domino Web Access, para permitir o uso das características de e-mail e calendário através dos navegadores Internet Explorer e Firefox web sobre plataformas Windows, Mac e Linux.

Há vários tipos de filtros para spam disponíveis, e um mecanismo de regras para permitir que o usuário defina sobre o processamento a ser realizado no servidor.

Quais são as diferenças do Notes em relação aos outros clientes

O Lotus Notes é um ambiente único. Ele foi projetado para ser uma aplicação colaborativa onde e-mail é apenas uma das inúmeras aplicações que podem ser executadas no cliente do software Notes. O cliente Notes também foi projetado para ser executar em múltiplas plataformas incluindo o Windows, OS/2, Mac, SCO Open Desktop UNIX, e Linux. Estes dois fatores resultaram em uma interface para usuário contendo algumas diferenças das aplicações que são executadas apenas no Windows. A maioria destas diferenças frequentemente mantém a compatibilidade com as versões antigas, a favor das conformidade dos padrões do Windows UI. Algumas destas diferenças incluem:

  • Notes requer aos usuários selecionem um 'New Memo' para enviar um e-mail, além de um Novo Mail.
  • Algumas teclas que estão em alguns dos outros populares aplicações de e-mail não funcionam no Notes. Exemplos são:
    • O Notes usa Ctrl→M para criar um novo mail, em vez do Ctrl→N usado em outros cliente de e-mail para este propósito. (Embora, o e-mail do Netscapee do Mozilla Thunderbird usem o Ctrl→M no PC, ou Shift→Command→M no Macintosh).
    • Ctrl→R, para criar uma resposta de e-mail, também não funciona do Notes, que usa o Alt→2,R para isto.
    • O Notes usa F9 para re-atualizar as informações e F5 para deslogar um usuário sem fechar o programa. Algumas aplicações Microsoft (tais como, Outlook 2002, Explorer, Internet Explorer) usam F5 para atualizar as informações, outros (tais como Outlook 2003, Word, Excel) usam F9. O uso da tecla F9 para atualizar as aplicações no PC antecedem a escolha do F5 da Microsoft. Ela data de meados de 1980, quando o Lotus 1-2-3 era a aplicação mais popular do mercado.
  • Para apagar um documento(ou e-mail) usando a tecla "delete" que apagara o mesmo em todas as pastas que ela aparece, desde que a pasta contenha os "links" do documento. Alguns outros cliente de e-mail somente apagam o e-mail da pasta atual; se o e-mail esta em uma outra pasta ele permanece, exigindo do usuário caça-lo através de inúmeras pastas para apagar completamente uma mensagem. No Notes, clicar no "Remove from Folder" removera apenas o documento da pasta deixando todas as outras instâncias intactas.
  • Para selecionar múltiplos documentos em um "Notes view" (janela de visualização), você precisa leva-los com o mouse até o próximo documento que você quer selecionar, usando sempre o Shift→Click action. (Detalhe: A Lotus planeja melhorar isto na versão "Hannover" do Notes, veja mais abaixo).
  • A busca no Notes é do tipo "pesquisa por frase", a mais comum de todos os tipos de "busca", no Notes os usuários precisam esclarecer a forma da pesquisa booleana na busca de uma "string". Com resultado, se os usuários precisam procurar por ‘limão and açúcar’ para a achar a frase que contém ‘limão com açúcar’. Procurando por ‘limão açúcar’ você não consegue nenhum resultado.
  • O mecanismo de busca por texto completo do Notes somente achará o e-mail no view ou pasta atual; se você clicar em busca enquanto você estiver na caixa de entrada (Inbox), será este o lugar da busca. Para o usuário, pode parecer que o Notes perdeu o e-mail, neste caso, quando de fato, o usuário esta simplesmente "procurando no local errado". (O local correto de iniciar a busca e na caixa de correio do Notes ("All Documents view"), se você quiser realizar a buscar em toda à caixa de correio.)

Crítica

Críticas ao produto incluem:

  • Muitos usuários finais, particularmente aqueles que usam a mensageria, queixaram-se dos aspectos da interface gráfica para o usuário não sejam intuitivas.[3][4] Algumas dessas críticas são endereçadas a versões atuais.
  • A saída de e-mail do escritório foi projetada para limitar o tráfego, emitindo as mensagens para fora do escritório as 2 da manhã apenas (por defeito) em vez de imediatamente depois que as mensagens são recebidas, dando a impressão que o Notes não esta funcionando. As versões recentes aumentaram a freqüência de saída de e-mail do escritório, que são agora emitidos em espaços de horas.
  • Configurações para o arquivamento a principio eram complexos, e frequentemente não se criava o arquivo imediatamente, (o arquivo era criado quando o primeiro e-mail era arquivado). Isto pode ter conduzido a alguns usuários acreditar que o Notes não funcionava.
  • Alguns usuários começaram a se confundir com a busca "Starts with" e as características de busca do texto completo oferecidas pelo NOTES UI, a versão anterior procurava somente os dados que são visíveis na coluna visível da pasta (folder). Os defensores do produto indicam que a opção de busca de texto completo forneceu precisão superior ao Notes desde os idos de 1990, visto que o rival Microsoft Outlook somente ofereceu esta característica na versão do começo de 2007, confiando em plug-ins de terceiros para fornecer esta funcionalidade.
  • É difícil ler seu e-mail do notes de uma arquivo fora do NSF com todos os outros softwares.

História

O Lotus Notes tem uma história de mais de 20 anos.[5] Seus inspiração veio do PLATO Notes, criado por David Woolley na Universidade de Ilinois em 1973. Na terminologia de hoje, PLATO Notes foi um sistema de mensageria, e a base da comunidade online que prosperou por mais de 20 anos no PLATO system. Ray Ozzie, que em 2006 sucedeu a Bill Gates como Arquiteto-Chefe de Software na Microsoft, trabalhou com o PLATO enquanto frequentava a universidade de Ilinois nos idos de 1970. Quando a tecnologia para PC começou a florescer, Ozzie fez um trato com Mitch Kapor, o fundador da Lotus Development Corporation, que resultou na formação da Iris Associates em 1984 para desenvolver produtos que combinariam as capacidades do PCs com as ferramentas de colaboração promovidas no PLATO. O acordo colocou o controle do desenvolvimento do produto sobre Ozzie e Iris, e das vendas e no mercado com a Lotus. Em 1994, após o lançamento e o sucesso no mercado do Notes R3, a Lotus comprou a Iris. Em 1995 a IBM comprou a Lotus.

Quando o Lotus Notes foi liberado, o nome "Notes" se referia a ambos os componentes para clientes e servidores. Em 1996, a Lotus liberou um add-on para o servidor Notes 4 chamado "Domino". Este add-on permitia que os documentos do Notes fossem criados de forma automática uma imagem conforme o modelo como um pagina web em tempo real. com a versão Notes 4.5, após um ano, o servidor web Domino foi integrado ao core do servidor Notes, que foi renomeado para "Domino". Os clientes permaneceram como "Notes", enquanto os componentes do servidor agora se chamavam "Domino". Entretanto, um pode freqüentemente ser confundido com o outro.

Versões

Histórico das versões
  • Versão 1 - 1989
  • Versão 1.1 - 1990
  • Versão 2 - 1991
  • Versão 3 - Maio 1993
  • Versão 4 - Janeiro 1996
  • Versão 4.5 - Dezembro 1996
  • Versão 4.6
  • Versão 5 - 1999
  • Versão 5.0.8
  • Versão 5.0.13a - Última versão lançada da série 5
  • Versão 6.0 - Setembro 2002
  • Versão 6.5 - Setembro 2003
  • Versão 7.0 - Agosto 2005
  • Versão 7.0.1 - Julho 2006
  • Versão 8.0 - Agosto 2007
  • Versão 8.0.1
  • Versão 8.0.2 Fix Pack 1
  • Versão 8.0.2 Fix Pack 2
  • Versão 8.0.2 Fix Pack 3
  • Versão 8.0.2 Fix Pack 4
  • Versão 8.0.2 Fix Pack 5
  • Versão 8.0.2 Fix Pack 6
  • Versão 8.5 - Agosto 2009
  • Versão 8.5 Fix Pack 1
  • Versão 8.5.1 - Outubro 2009
  • Versão 8.5.1 Fix Pack 1 - Janeiro 2010
  • Versão 8.5.1 Fix Pack 2 - Março 2010
  • Versão 8.5.1 Fix Pack 3 - Maio 2010
  • Versão 8.5.1 Fix Pack 4 - Agosto 2010
  • Versão 8.5.1 Fix Pack 5 - Setembro 2010
  • Versão 8.5.2 - Agosto 2010
Versões disponíveis do Servidor
  • 8.0.0 para Windows
  • 8.0.0 para Linux/x86
  • 8.0.0 para AIX
  • 7.0.1 para i5/OS (OS/400 v5)
  • 7.0.1 para Sun Solaris
  • 6.5.5 para Windows EXE
  • 6.5.5 para Sun Solaris
Versões disponíveis do Cliente
  • 8.0.0 para Windows
  • 7.0.1 para Macintosh
  • 8.0.0 para Linux/x86 (Red Hat & SuSE inicialmente)

Futuro

Desde a aquisição da Lotus pela IBM, alguns analistas do meio industrial e autores da impressa de comportamento dos negócios, junto com os competidores da IBM, fizeram predições da iminente morte do Lotus Notes. Um exemplo notável disto foi um artigo publicado na revista Forbes intitulado "The decline and fall of Lotus", publicado em Abril de 1998. Neste momento, a IBM declarou que a base instalada do Lotus Notes tinha sido quase triplicada de uma estimativa de 42 milhões de sites em Setembro de 1998 para mais de 125 milhões em 2006.[2]

Especulações sobre o declínio do Notes pegaram fogo e causaram confusão no mercado pelo anúncio da IBM de dar ênfase na comercialização do Websphere e IBM Workplace em 2003 e 2004. O Workplace da IBM, entretanto, foi descontinuado,[6] e estas confusões sobre o futuro do Notes e do Domino acabaram por servir para aumentar o debate público. Considerando que o futuro de qualquer produto no setor de tecnologia não pode ser predito, a IBM anunciou que continuará a investir pesadamente na pesquisa e no desenvolvimento da linha de produtos da Lotus Notes. O Notes 8, que previamente utilizou o código-nome "Hannover" (após a 22ª reunião do grupo de usuários do Notes alemão, onde foi pela primeira vez mostrada ao público) incorporara o Notes em uma a Eclipse framework e incluirá suporte a "produtividade de edição" baseada no formato OpenDocument.[7] A versão para Linux do Notes 7.0.1 já foi desenvolvida pela Eclipse, e um beta do Notes 8 está em progresso em mais de 100 empresas participantes, e na conferência do Lotusphere em Janeiro de 2007, a IBM anunciou que um beta em grande escala começará este mês. Além disso, o executivo da IBM Ken Bisconti fez um comentário público em diversas ocasiões asegurando que haverá as versões 8, 9 e 10 do Notes e Domino.[8]

O processo de desenvolvimento de inovações na versão 8 do Notes foi feito através de técnicas de colaboração em massa. Em um período de tempo muito menor que o típico, milhares de ideias e sugestões de inovações e melhorias foram coletadas. Este processo resultou em um conjunto de funções que hoje (com o Notes 8 já lançado em 14 de agosto de 2007) fazem parte de um roadmap que passa de 2012.

Apesar disso, em 2005, alguns analistas concluíram que a Lotus esta perdendo o mercado para a Microsoft Exchange.[9] Não há um acordo geral, entretanto, sobre os métodos para calcular de forma precisa o mercado de messageria e de colaboração.[10]

A metodologia utilizada no Brasil para definição de market share é baseada na renda que as empresas reportam em um período específico. Nesta metodologia, o Lotus Notes sai prejudicado visto que nos contratos corporativos Microsoft, são incluídas licenças de Exchange que não são utilizadas pelas empresas. Dentre apenas 2 destas empresas, podemos somar 130.000 licenças de Exchange que são reportadas pela Microsoft mas que na verdade estas empresas utilizam Lotus Notes.

Um número interessante para ser analisado é a participação do Lotus Notes nas empresas da lista Fortune 500. Nesta lista, 78% das empresas são usuárias de Lotus Notes.

Gráficos baseados na contagem dos números de usuários podem ser distorcidas pela presença dos usuários não utilizadores que são contados em conseqüência "de tipo de pacotes CALs" (licenças), e os gráficos baseados na contagem de cliente podem ter sido distorcidos pela diferença de tamanhos dos tipos de organização do cliente. A IBM afirmou que o crescimento mostrado no gráfico de rendimento para cada tipo de Lotus, como publicado em seu relatório financeiro anual, mostra a força do produto Notes da Lotus no mercado. De acordo com estes gráficos, a linha de produtos Notes e o Domino se sustentou em dois dígitos desde 2004 e continuando até 2006, incluindo 30% de crescimento ano-a-ano no Q4 de 2006 (apresentação de Ken Bisconti no Lotusphere 2007).

Notas e referências

  1. ↑ "O que os Suecos descobriram sobre a chave de documentação e seus riscos no Lotus Notes! " The Risks Digest, volume 19, edição 52, publicado em 24-12-1997
  2. a b Stan Beer (2006-07-10). Lotus Notes for Linux arrives. iTWire. Página visitada em 2007-05-15.
  3. ↑ Lotus Notes Sucks Lotus Notes Sucks website
  4. ↑ Survival of the unfittest Guardian Unlimited,9 de Fevereiro, 2006
  5. ↑ Official history of Lotus Notes IBM DeveloperWorks Web Site
  6. ↑ "Software withdrawal and service discontinuance: IBM Workplace Messaging" comunicado à imprensa da IBM em 12 de Dezembro de 2006
  7. ↑ "IBM backs OpenDocument in Lotus Notes" Artigo publicado em Maio de 2006
  8. ↑ "Lotus set to uphold the future of Notes" Article published in January, 2006
  9. ↑ "IBM In Denial Over Lotus Notes" Artigo publicado em Abril de 2005
  10. ↑ "Response to Daniel Lyons: "IBM In Denial Over Lotus Notes"" postagens no Blog de Michael Sampson, diretor de pesquisa da Shared Spaces

Ligações externas

  • Site do IBM Lotus Notes
  • História oficial do Lotus Notes (em inglês)
  • Fórum de discussão focado em tecnologia Notes & Domino
  • Siga o Twitter da brand IBM Lotus
Obtida de "http://pt.wikipedia.org/w/index.php?title=Lotus_Notes&oldid=24977500"

Software

 

Software colaborativo (ou groupware) é um software que apoia o trabalho em grupo, coletivamente. Skip Ellis o definiu como um "sistema baseado em computador que auxilia grupos de pessoas envolvidas em tarefas comuns (ou objetivos) e que provê interface para um ambiente compartilhado".

Sistemas de softwares como e-mail (assíncrono), agenda corporativa, bate-papo (chat) e wiki pertencem a esta categoria. Foi sugerido que a lei de Metcalfe - quanto mais pessoas usam um sistema de comunicação, mais valioso ele se torna - se aplica a tais softwares.

O termo mais comum para software social se aplica a sistemas fora do ambiente de trabalho, como por exemplo, serviços de namoro online e redes de relacionamento, como o Orkut. O estudo da colaboração com auxílio de computador inclui o estudo deste software e dos fenómenos sociais associados a ele.

Índice

  • 1 Vantagens de software colaborativo
  • 2 Ambiente Colaborativo
  • 3 Ver também
  • 4 Ferramentas colaborativas

Vantagens de software colaborativo

  • Torna o trabalho em grupo mais eficiente;
  • Diminui o tempo gasto nas atividades em grupo;
  • Reduz o custo de realização das atividades em grupo;
  • Possibilita certos tipos de tarefas em grupo que seriam impossíveis sem o suporte computacional.

Ambiente Colaborativo

Classificação de Tom Rodden para aplicações no espaço colaborativo

As aplicações no espaço colaborativo estão vulneráveis a variáveis de interação e o local onde acontecem. De acordo com os valores destas variáveis podem ser classificados como:

  • Sistema de Mensagens - Transferência de Informação, onde os usuários trabalham sozinhos. Ex: E-mail.
  • Sistema de Conferência - Distribuição de informação para uma comunidade. A comunicação é em tempo real. Ex: Sala de Bate papo.
  • Sistema Coordenado - A informação é gerada por um grupo de pessoas no mesmo espaço físico com suporte do computador. Ex: White-boards.
  • Sistema Colaborativo - Sistemas de múltiplos autores por meio de uma plataforma de geração de conteúdo. Ex: Sistema de versão de documentos que indicam as atualizações.

Ver também

  • CSCW
  • Sistema cooperativo
  • WorkGroup
  • E-Groupware
  • Lista de softwares wiki
  • Drupal
  • tikiwiki
  • openGroupware
  • Media naturalness theory

Ferramentas colaborativas

  • Microsoft Sharepoint
  • TalkAndWrite
  • IBM Lotus Notes
  • Project Server
  • Teamspace
Obtida de "http://pt.wikipedia.org/w/index.php?title=Software_colaborativo&oldid=27395661"

Software

 

Software proprietário ou não livre é aquele cuja cópia, redistribuição ou modificação são em alguma medida restritos pelo seu criador ou distribuidor. A expressão foi cunhada em oposição ao conceito de software livre.

O termo "proprietário" é uma tradução equivocada do inglês "proprietary", que tem o sentido de "pertencente a um proprietário", "particular", "registrado". Aplicando-se o termo a software, a tradução mais apropriada talvez seria "patenteado".

Normalmente, a fim de que se possa utilizar, copiar, ter acesso ao código-fonte ou redistribuir, deve-se solicitar permissão ao proprietário, ou pagar para poder fazê-lo: será necessário, portanto, adquirir uma licença.

Alguns dos mais conhecidos softwares proprietários são o Microsoft Windows, o Microsoft Office, o RealPlayer, o Adobe Photoshop, o Mac OS, o WinZip, algumas versões do UNIX, entre outros.

Ver também

  • Software livre
  • Código aberto
  • Software comercial
  • Código fechado
  • Código compartilhado
  • Richard Stallman
  • Hardware Proprietário
Obtida de "http://pt.wikipedia.org/w/index.php?title=Software_propriet%C3%A1rio&oldid=27693293"

Software

 

A Indústria de Software é o conjunto dos negócios que envolvem o desenvolvimento, a manutenção e a execução de softwares ou programas para computadores e máquinas automatizadas. Essa atividade começou na década de 70 influenciada pela revolução dos microprocessadores.

Visão geral

Existem dois grandes grupos de negócios na indústria de software: o dos softwares proprietários(tais como os desenvolvidos pela Microsoft), e aquele do software livre. O desenvolvimento de software proprietário usa o licenciamento de software como a forma de comercialização e para isso é necessário proteger-se de pirataria e do uso de cópias ilegais. O retorno financeiro do software livre vem com a venda de serviço de treinamento e suporte a esses próprios softwares.

Tipos de Software

  • Software pacote
  • Software embarcado
  • Software serviço (no-software)
Obtida de "http://pt.wikipedia.org/w/index.php?title=Ind%C3%BAstria_de_software&oldid=27245315"

Software

 

O teste do software é a investigação do software a fim de fornecer informações sobre sua qualidade em relação ao contexto em que ele deve operar. Isso inclui o processo de utilizar o produto para encontrar seus defeitos.

O teste é um processo realizado pelo testador de software, que permeia outros processos da engenharia de software, e que envolve ações que vão do levantamento de requisitos até a execução do teste propriamente dito.

Índice

  • 1 Visão geral
  • 2 Princípios
  • 3 Técnicas
    • 3.1 Caixa-branca
    • 3.2 Caixa-preta
    • 3.3 Caixa-cinza
    • 3.4 Regressão
    • 3.5 Técnicas não funcionais
  • 4 Fases
    • 4.1 Teste de unidade
    • 4.2 Teste de integração
    • 4.3 Teste de sistema
    • 4.4 Teste de aceitação
    • 4.5 Teste de operação
      • 4.5.1 Testes alfa e beta
      • 4.5.2 Candidato a lançamento
  • 5 Papéis
  • 6 Artefatos
  • 7 Referências
  • 8 Bibliografia
  • 9 Ver também
  • 10 Ligações externas

Visão geral

Não se pode garantir que todo software funcione corretamente, sem a presença de erros,[1] visto que os mesmos muitas vezes possuem um grande número de estados com fórmulas, atividades e algoritmos complexos. O tamanho do projeto a ser desenvolvido e a quantidade de pessoas envolvidas no processo aumentam ainda mais a complexidade. Idealmente, toda permutação possível do software deveria ser testada. Entretanto, isso se torna impossível para a ampla maioria dos casos devido à quantidade impraticável de possibilidades. A qualidade do teste acaba se relacionando à qualidade dos profissionais envolvidos em filtrar as permutações relevantes.[2]

Falhas podem ser originadas por diversos motivos. Por exemplo, a especificação pode estar errada ou incompleta, ou pode conter requisitos impossíveis de serem implementados, devido a limitações de hardware ou software. A implementação também pode estar errada ou incompleta, como um erro de um algoritmo. Portanto, uma falha é o resultado de um ou mais defeitos em algum aspecto do sistema.

O teste de software pode ser visto como uma parcela do processo de qualidade de software. A qualidade da aplicação pode, e normalmente, varia significativamente de sistema para sistema. Os atributos qualitativos previstos na norma ISO 9126 são funcionalidade, confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade. De forma geral, mensurar o bom funcionamento de um software envolve compará-lo com elementos como especificações, outros softwares da mesma linha, versões anteriores do mesmo produto, inferências pessoais, expectativas do cliente, normas relevantes, leis aplicáveis, entre outros. Enquanto a especificação do software diz respeito ao processo de verificação do software, a expectativa do cliente diz respeito ao processo de validação do software.

Um desenvolvimento de software organizado tem como premissa uma metodologia de trabalho. Esta deve ter como base conceitos que visem a construção de um produto de software de forma eficaz. Dentro desta metodologia estão definidos os passos necessários para chegar ao produto final esperado.

Assim, quando se segue uma metodologia para o desenvolvimento de um produto de software, espera-se um produto final que melhor agrade tanto aos clientes quanto ao próprio fornecedor, ou seja, a empresa de desenvolvimento. Observando este aspecto, não faz sentido iniciar a construção de um produto de software sem ter uma metodologia de trabalho bem solidificada e que seja do conhecimento de todos os envolvidos no processo. Porém, além de uma crescente demanda por softwares de qualidade, as empresas de desenvolvimento de software sofrem cada vez mais pressão por parte dos clientes para que o produto seja entregue num curto período de tempo. Este fato pode fazer com que uma sólida metodologia de trabalho acabe por se desequilibrar.

Independentemente da metodologia de trabalho empregada no desenvolvimento de um software, para que se obtenha um produto final com um certo nível de qualidade é imprescindível a melhoria dos processos de engenharia de software.

Uma maneira viável para se assegurar a melhoria de tais processos seria tomar como base modelos sugeridos por entidades internacionais respeitadas no assunto. Dentro de uma gama de modelos, sejam eles para situações e ambientes específicos ou para soluções genéricas, existem alguns que são mais utilizados e tidos como eficientes, como por exemplo os SW-CMM, SE-CMM, ISO/IEC_15504 e o mais conhecido CMMI.

Outro fator com grande influência sobre a qualidade do software a ser produzido é o que diz respeito aos testes que serão executados sobre tal produto. Todas as metodologias de desenvolvimento de software têm uma disciplina dedicada aos testes. Atualmente esta é uma tarefa indispensável, porém muitas vezes efetuada de maneira ineficiente, seja pelo subestimar dos que desenvolvem, pela falta de tempo ou mesmo pela falta de recursos humanos e financeiros.

De acordo com um estudo conduzido pelo NIST em 2002, os defeitos resultam num custo anual de 59,5 bilhões de dólares à economia dos Estados Unidos. Mais de um terço do custo poderia ser evitado com melhorias na infraestrutura do teste de software.[3]

Princípios

Para Myers (2004), há princípios vitais para o teste de software. O caso de teste deve definir a saída esperada, de forma a reduzir a interpretação do critério de sucesso. A saída da execução do teste deve ser exaustivamente analisada. Os casos de teste devem verificar não somente as condições inválidas de execução, como também as condições válidas. Outro conceito apresentado é utilizar pessoas e organizações diferentes para a implementação e para a verificação. A entidade de teste possui uma visão destrutiva do sistema, em busca de erros, enquanto a entidade de programação possui uma visão construtiva, em busca da implementação de uma especificação.

Myers também aborda o esforço para se construir casos de teste. Deve-se evitar testes descartáveis, pois a qualidade do teste piora gradualmente com as iterações de desenvolvimento. Em contrapartida, há o teste de regressão, que permite quantificar a evolução da qualidade de software, mantendo e executando novamente testes realizados anteriormente.

O mesmo autor afirma que, diferente do que se poderia considerar senso comum, a probabilidade de existência de erros num certo trecho de código é proporcional à quantidade de erros já encontradas anteriormente. Basicamente, erros aparecem em grupos. Trechos específicos de código de um software qualquer estão mais propensos a ter erros que outros.

Técnicas

Existem muitas maneiras de se testar um software. Mesmo assim, existem as técnicas que sempre foram muito utilizadas em sistemas desenvolvidos sobre linguagens estruturadas que ainda hoje têm grande valia para os sistemas orientados a objeto. Apesar de os paradigmas de desenvolvimento serem completamente diferentes, o objetivo principal destas técnicas continua a ser o mesmo, encontrar falhas no software. Abaixo estão descritas algumas das técnicas mais conhecidas.

Caixa-branca


Também chamada de teste estrutural ou orientado à lógica, a técnica de caixa-branca avalia o comportamento interno do componente de software. Essa técnica trabalha diretamente sobre o código fonte do componente de software para avaliar aspectos tais como: teste de condição, teste de fluxo de dados, teste de ciclos, teste de caminhos lógicos, códigos nunca executados.

Os aspectos avaliados nesta técnica de teste dependerão da complexidade e da tecnologia que determinarem a construção do componente de software, cabendo portanto avaliação de mais aspectos que os citados anteriormente. O testador tem acesso ao código fonte da aplicação e pode construir códigos para efetuar a ligação de bibliotecas e componentes. Este tipo de teste é desenvolvido analisando o código fonte e elaborando casos de teste que cubram todas as possibilidades do componente de software. Dessa maneira, todas as variações relevantes originadas por estruturas de condições são testadas.

Um exemplo bem prático desta técnica de teste é o uso da ferramenta livre JUnit para desenvolvimento de classes de teste para testar classes ou métodos desenvolvidos em Java. Também se enquadram nessa técnica testes manuais ou testes efetuados com apoio de ferramentas para verificação de aderência a boas práticas de codificação reconhecidas pelo mercado de software. A aderência a padrões e boas práticas visa principalmente a diminuição da possibilidade de erros de codificação e a busca de utilização de comandos que gerem o melhor desempenho de execução possível. Apesar de muitos desenvolvedores alegarem que não há ganhos perceptíveis com essa técnica de teste aplicada sobre unidades de software, devemos lembrar que, no ambiente produtivo, cada programa pode vir a ser executado milhares ou milhões de vezes em intervalos de tempo pequenos. É na realidade de produção que a soma dos aparentes pequenos tempos de execução e consumo de memória de cada programa poderá levar o software a deixar de atender aos objetivos esperados. A técnica de teste de caixa-branca é recomendada para as fases de teste de unidade e teste de integração, cuja responsabilidade principal fica a cargo dos desenvolvedores do software, que por sua vez conhecem bem o código fonte produzido.

Caixa-preta


Também chamada de teste funcional, orientado a dado ou orientado a entrada e saída, a técnica de caixa-preta avalia o comportamento externo do componente de software, sem se considerar o comportamento interno do mesmo.[4] Dados de entrada são fornecidos, o teste é executado e o resultado obtido é comparado a um resultado esperado previamente conhecido. Como detalhes de implementação não são considerados, os casos de teste são todos derivados da especificação.

Quanto mais entradas são fornecidas, mais rico será o teste. Numa situação ideal todas as entradas possíveis seriam testadas, mas na ampla maioria dos casos isso é impossível.[5] Outro problema é que a especificação pode estar ambígua em relação ao sistema produzido, e como resultado as entradas especificadas podem não ser as mesmas aceitas para o teste.[6] Uma abordagem mais realista para o teste de caixa-preta é escolher um subconjunto de entradas que maximize a riqueza do teste. Pode-se agrupar subconjuntos de entradas possíveis que são processadas similarmente, de forma que testar somente um elemento desse subconjunto serve para averiguar a qualidade de todo o subconjunto. Por exemplo, em um sistema que aceita um inteiro como entrada, testar todos os casos possíveis pode gerar pelo menos dezenas de milhares de casos de testes distintos. Entretanto, a partir da especificação do sistema, pode-se encontrar um subconjunto de inteiros que maximizem a qualidade do teste. Depende do propósito do sistema, mas casos possíveis incluem inteiros pares, inteiros ímpares, zero, inteiros positivos, inteiros negativos, o maior inteiro, o menor inteiro.

Essa técnica é aplicável a todas as fases de teste – teste unitário, teste de integração, teste de sistema e teste de aceitação. A aplicação de técnicas de teste leva o testador a produzir um conjunto de casos de teste (ou situações de teste). A aplicação combinada de outra técnica – técnica de particionamento de equivalência (ou uso de classes de equivalência) permite avaliar se a quantidade de casos de teste produzida é coerente. A partir das classes de equivalência identificadas, o testador construirá casos de teste que atuem nos limites superiores e inferiores destas classes, de forma que um número mínimo de casos de teste permita a maior cobertura de teste possível.

Uma abordagem no desenvolvimento do teste de caixa-preta é o teste baseado na especificação, de forma que as funcionalidades são testadas de acordo com os requisitos. Apesar de necessário, esse tipo de teste é insuficiente para identificar certos riscos num projeto de software.[7]

Caixa-cinza

A técnica de teste de caixa-cinza é um mesclado do uso das técnicas de caixa-preta e de caixa-branca. Isso envolve ter acesso a estruturas de dados e algoritmos do componente a fim de desenvolver os casos de teste, que são executados como na técnica da caixa-preta. Manipular entradas de dados e formatar a saída não é considerado caixa-cinza pois a entrada e a saída estão claramente fora da caixa-preta. A caixa-cinza pode incluir também o uso de engenharia reversa para determinar por exemplo os limites superiores e inferiores das classes, além de mensagens de erro.

Regressão


Essa é uma técnica de teste aplicável a uma nova versão de software ou à necessidade de se executar um novo ciclo de teste durante o processo de desenvolvimento. Consiste em se aplicar, a cada nova versão do software ou a cada ciclo, todos os testes que já foram aplicados nas versões ou ciclos de teste anteriores do sistema. Inclui-se nesse contexto a observação de fases e técnicas de teste de acordo com o impacto de alterações provocado pela nova versão ou ciclo de teste. Para efeito de aumento de produtividade e de viabilidade dos testes, é recomendada a utilização de ferramentas de automação de teste, de forma que, sobre a nova versão ou ciclo de teste, todos os testes anteriores possam ser executados novamente com maior agilidade.

Técnicas não funcionais

Outras técnicas de teste existem para testar aspectos não-funcionais do software, como por exemplo de acordo com necessidades de negócio ou restrições tecnológicas. Em contraste às técnicas funcionais mencionadas acima, que verificam a operação correta do sistema em relação a sua especificação, as técnicas não funcionais verificam a operação correta do sistema em relação a casos inválidos ou inesperados de entrada. É uma forma de testar a tolerância e a robustez do software em lidar com o inesperado.

Uma delas é o uso conjunto de teste de desempenho e teste de carga, que verifica se o software consegue processar grandes quantidades de dados, e nas especificações de tempo de processamento exigidas, o que determina a escalabilidade do software. O teste de usabilidade é necessário para verificar se a interface de usuário é fácil de se aprender e utilizar. Entre verificações cabíveis estão a relação da interface com conhecimento do usuário, a compreensibilidade das mensagens de erro e a integridade visual entre diferentes componentes.[8] Já o teste de confiabilidade é usado para verificar se o software é seguro em assegurar o sigilo dos dados armazenados e processados. O teste de recuperação é usado para verificar a robustez do software em retornar a um estado estável de execução após estar em um estado de falha.

Fases

Abstração do teste
Descendente
Sistema
Ascendente
Integração
Unidade

Uma prática comum é testar o software após uma funcionalidade ser desenvolvida, e antes dela ser implantada no cliente, por um grupo de profissionais diferente da implementação. Essa prática pode resultar na fase de teste ser usada para compensar atrasos do projeto, comprometendo o tempo devotado ao teste. Outra prática é começar o teste no mesmo momento que o projeto, num processo contínuo até o fim do projeto.

Em contrapartida, algumas práticas emergentes como a programação extrema e o desenvolvimento ágil focam o modelo de desenvolvimento orientado ao teste. Nesse processo, os testes de unidade são escritos primeiro ( TDD ), por engenheiros de software. Antes da implementação da unidade em questão, o teste falha. Então o código é escrito, passando incrementalmente em porções maiores dos casos de teste. Os testes são mantidos junto com o resto do código fonte do software, e geralmente também integra o processo de construção do software.

Teste de unidade


Também conhecida como teste unitário ou teste de módulo, é a fase em que se testam as menores unidades de software desenvolvidas (pequenas partes ou unidades do sistema).[9] O universo alvo desse tipo de teste são as subrotinas ou mesmo pequenos trechos de código. Assim, o objetivo é o de encontrar falhas de funcionamento dentro de uma pequena parte do sistema funcionando independentemente do todo.

Teste de integração


Na fase de teste de integração, o objetivo é encontrar falhas provenientes da integração interna dos componentes de um sistema. Geralmente os tipos de falhas encontradas são de transmissão de dados. Por exemplo, um componente A pode estar aguardando o retorno de um valor X ao executar um método do componente B; porém, B pode retornar um valor Y, gerando uma falha. Não faz parte do escopo dessa fase de teste o tratamento de interfaces com outros sistemas (integração entre sistemas). Essas interfaces são testadas na fase de teste de sistema, apesar de, a critério do gerente de projeto, estas interfaces podem ser testadas mesmo antes de o sistema estar plenamente construído.

Teste de sistema


Na fase de teste de sistema, o objetivo é executar o sistema sob ponto de vista de seu usuário final, varrendo as funcionalidades em busca de falhas em relação aos objetivos originais. Os testes são executados em condições similares – de ambiente, interfaces sistêmicas e massas de dados – àquelas que um usuário utilizará no seu dia-a-dia de manipulação do sistema. De acordo com a política de uma organização, podem ser utilizadas condições reais de ambiente, interfaces sistêmicas e massas de dados.

Teste de aceitação


Geralmente, os testes de aceitação são realizados por um grupo restrito de usuários finais do sistema, que simulam operações de rotina do sistema de modo a verificar se seu comportamento está de acordo com o solicitado. Teste formal conduzido para determinar se um sistema satisfaz ou não seus critérios de aceitação e para permitir ao cliente determinar se aceita ou não o sistema. Validação de um software pelo comprador, pelo usuário ou por terceira parte, com o uso de dados ou cenários especificados ou reais. Pode incluir testes funcionais, de configuração, de recuperação de falhas, de segurança e de desempenho. a

Teste de operação


Nessa fase o teste é conduzido pelos administradores do ambiente final em que o sistema ou software entrará em ambiente produtivo. Vale ressaltar que essa fase é aplicável somente a sistemas de informação próprios de uma organização, cujo acesso pode ser feito interna ou externamente a essa organização. Nessa fase de teste devem ser feitas simulações para garantir que a entrada em produção do sistema será bem sucedida. Envolve testes de instalação, simulações com cópia de segurança dos bancos de dados, etc.. Em alguns casos um sistema entrará em produção para substituir outro e é necessário garantir que o novo sistema continuará garantindo o suporte ao negócio.

Testes alfa e beta



Em casos especiais de processos de desenvolvimento de software – sistemas operacionais, sistemas gerenciadores de bancos de dados e outros softwares distribuídos em escala nacional e internacional – os testes requerem fases também especiais antes do produto ser disponibilizado a todos os usuários.

O período entre o término do desenvolvimento e a entrega é conhecido como fase alfa e os testes executados nesse período, como testes alfa. PRESSMAN afirma que o teste alfa é conduzido pelo cliente no ambiente do desenvolvedor, com este "olhando sobre o ombro" do usuário e registrando erros e problemas de uso.

Completada a fase alfa de testes, são lançadas a grupos restritos de usuários, versões de teste do sistema denominadas versões beta. Ele também é um teste de aceitação voltado para softwares cuja distribuição atingirá grande número de usuários de uma ou várias empresas compradoras. PRESSMAN afirma que o teste beta é conduzido em uma ou mais instalações do cliente, pelo usuário final do software. Diferente do teste alfa, o desenvolvedor geralmente não está presente. Conseqüentemente, o teste beta é uma aplicação do software num ambiente que não pode ser controlado pelo desenvolvedor. O cliente registra todos os problemas (reais ou imaginários) que são encontrados durante o teste beta e os relata ao desenvolvedor em intervalos regulares. Com o resultado dos problemas relatados durante os testes beta, os engenheiros de software fazem modificações e depois se preparam para liberar o produto de software para toda a base de clientes.

A comunidade do teste de software usa o termo teste gama de forma sarcástica referindo-se aos produtos que são mal testados e são entregues aos usuários finais para que estes encontrem os defeitos já em fase de produção.

Candidato a lançamento

Ultimamente, e principalmente na comunidade de software livre, é comum utilizar o termo candidato a lançamento (release candidate) para indicar uma versão que é candidata a ser a versão final, em função da quantidade de erros encontradas. Tais versões são um passo além do teste beta, sendo divulgadas para toda a comunidade.

Papéis

Segue abaixo alguns dos papéis que uma pessoa pode desenvolver num projeto de teste de software. Uma pessoa pode acumular mais de um dos papéis citados, de acordo com características e restrições de projetos de desenvolvimento de software nas quais estejam inseridas. Nas fases de teste de unidade e de integração, por exemplo, os papéis de arquiteto de teste e analista de teste podem ser assumidos pelo analista de sistemas do projeto; o papel de testador pode ser assumido pelo programador ou por um segundo programador que atue num processo de programação em pares. Na fase de teste de sistema, num contexto em que haja uma equipe de teste independente, pode haver profissionais acumulando os papéis de arquiteto de teste, analista de teste e testador.

O líder (ou gerente) do projeto de testes é a pessoa responsável pela liderança de um projeto de teste específico, normalmente relacionado a um sistema de desenvolvimento, seja um projeto novo ou uma manutenção. Já o engenheiro (ou arquiteto) de teste é o técnico responsável pelo levantamento de necessidades relacionadas à montagem da infraestrutura de teste, incluindo-se o ambiente de teste, a arquitetura de solução, as restrições tecnológicas, as ferramentas de teste. É também responsável pela liderança técnica do trabalho de teste e pela comunicação entre a equipe de teste e a equipe de projeto (ou equipe de desenvolvimento).

O analista de teste é o técnico responsável pela operacionalização do processo de teste. Deve seguir as orientações do gerente de teste ou do arquiteto de teste para detalhar a forma de execução dos testes e as condições de teste necessárias. Também deve focar seu trabalho nas técnicas de teste adequadas à fase de teste trabalhada. Também no campo de análise, o analista de ambiente é o técnico responsável pela configuração do ambiente de teste e pela aplicação das ferramentas necessárias para tal. Esse profissional deve ser especializado em arquiteturas de solução e nos sistemas operacionais e softwares de infraestrutura que regem o ambiente. Ele será responsável por tornar disponível o ambiente de teste.

O testador é o técnico responsável pela execução de teste. Ele deve observar as condições de teste e respectivos passos de teste documentados pelo analista de teste e evidenciar os resultados de execução. Em casos de execuções de teste mal-sucedidas, esse profissional pode também registrar ocorrências de teste (na maioria das vezes, defeitos) em canais através dos quais os desenvolvedores tomarão conhecimento das mesmas e tomarão as providências de correção ou de esclarecimentos.

Por fim, o automatizador de teste é o técnico responsável pela automação de situações de teste em ferramentas. Ele deve observar as condições de teste e respectivos passos de teste documentados pelo analista de teste e automatizar a execução desses testes na ferramenta utilizada. Normalmente são gerados scripts de teste que permitam a execução de ciclos de teste sempre que se julgar necessário, desde é claro, que sejam garantidas as mesmas condições iniciais do ciclo de teste (valores de dados, estados dos dados, estados do ambiente, etc..)

Artefatos

O processo de teste de software pode produzir diversos artefatos. O caso de teste geralmente consiste de uma referência a um identificador ou requisito de uma especificação, pré-condições, eventos, uma série de passos a se seguir, uma entrada de dados, uma saída de dados, resultado esperado e resultado obtido. A série de passos (ou parte dela) pode estar contida num procedimento separado, para que possa ser compartilhada por mais de um caso de teste.

Um script de teste é a combinação de um caso de teste, um procedimento de teste e os dados do teste. Uma coleção de casos de teste é chamada de suite de teste. Geralmente, ela também contém instruções detalhadas ou objetivos para cada coleção de casos de teste, além de uma seção para descrição da configuração do sistema usado.

A especificação de teste é chamada plano de teste.

Referências

  1. ↑ MYERS, 2004, p. 8
  2. ↑ MYERS, 2004, p. 5
  3. ↑ Michael Newman (28 de junho de 2002). Software Errors Cost U.S. Economy $59.5 Billion Annually: NIST Assesses Technical Needs of Industry to Improve Software-Testing (em inglês). NIST. Página visitada em 17 de novembro de 2008.
  4. ↑ MYERS, 2004, p. 9
  5. ↑ MYERS, 2004, p. 10
  6. ↑ Jiantao Pan (1999). Software Testing (em inglês). Universidade Carnegie Mellon. Página visitada em 1 de dezembro de 2008.
  7. ↑ James Bach (Junho de 1999). Risk and Requirements-Based Testing (em inglês). IEEE. Página visitada em 17 de novembro de 2008.
  8. ↑ MYERS, 2004, p. 136
  9. ↑ MYERS, 2004, p. 91

Bibliografia

  • KOSCIANSKI, A., Soares, Novatec, M. S. Qualidade de Software, 2006
  • PRESSMAN, R. S., McGraw Hill, Engenharia de Software, 2002
  • MYERS, Glenford J., John Wiley & Sons, The Art of Software Testing, 2, Nova Jérsei: 2004. ISBN ISBN 0-471-46912-2

Ver também

  • Anexo:Lista de instituições pela qualidade
  • Qualidade de software
  • Gestão da qualidade
  • Verificação formal
  • Otimização em engenharia de software.

Ligações externas

  • Guia de gerenciamento de teste
  • Comunidade Testes de Software
  • Empresas testes de software
Obtida de "http://pt.wikipedia.org/w/index.php?title=Teste_de_software&oldid=27678226"

Software

 

A globalização eo avanço tecnológico levarm a evolução dos processos produtivos e à entrada no mercado das empresas mais flexíveis, como as pequenas e médias empresas de alta tecnologia, cuja sigla é PMET.Estas são também denominadas de empresas de alta tecnologia, ou empresas de tecnologia de vanguarda, e se destacam no desenvolvimento de produtos de alto teor tecnológico. No Brasil, estas empresas são segmentadas em TIC – Tecnologia da Informação e Comunicação (IBGE, 2005), que abrange os setores de telecomunicações e de informática.


fonte.wikipedia

Software

 
A nuvem (cloud) é o símbolo da Internet.

O conceito de computação em nuvem (em inglês, cloud computing) refere-se à utilização da memória e das capacidades de armazenamento e cálculo de computadores e servidores compartilhados e interligados por meio da Internet, seguindo o princípio da computação em grade. [1]

O armazenamento de dados é feito em serviços que poderão ser acessados de qualquer lugar do mundo, a qualquer hora, não havendo necessidade de instalação de programas x ou de armazenar dados. O acesso a programas, serviços e arquivos é remoto, através da Internet - daí a alusão à nuvem.[2] O uso desse modelo (ambiente) é mais viável do que o uso de unidades físicas.[3]

Num sistema operacional disponível na Internet, a partir de qualquer computador e em qualquer lugar, pode-se ter acesso a informações, arquivos e programas num sistema único, independente de plataforma. O requisito mínimo é um computador compatível com os recursos disponíveis na Internet. O PC torna-se apenas um chip ligado à Internet—a "grande nuvem" de computadores—sendo necessários somente os dispositivos de entrada (teclado, mouse) e saída (monitor).

Índice

  • 1 Corrida pela tecnologia
  • 2 Tipologia
  • 3 Modelo de Implantação
  • 4 Vantagens
  • 5 Gerenciamento da Segurança da Informação na Nuvem
  • 6 Dúvidas
  • 7 Sistemas Atuais
  • 8 No Brasil
  • 9 Referências
  • 10 Ligações externas

Corrida pela tecnologia

Empresas como Google, IBM e Microsoft foram as primeiras a iniciar uma grande ofensiva nessa "nuvem de informação" (information cloud), que especialistas consideram uma "nova fronteira da era digital". Aos poucos, essa tecnologia vai deixando de ser utilizada apenas em laboratórios para ingressar nas empresas e, em breve, em computadores domésticos.

O primeiro serviço na Internet a oferecer um ambiente operacional para os usuários—antigamente, disponível no endereço www.webos.org—foi criado por um estudante sueco, Fredrik Malmer, utilizando as linguagens XHTML e Javascript. Atualmente, o termo AJAX é adotado para definir a utilização dessas duas linguagens na criação de serviços na Internet.

Em 1999, foi criada nos EUA a empresa WebOS Inc., que comprou os direitos do sistema de Fredrik e licenciou uma série de tecnologias desenvolvidas nas universidades do Texas, Califórnia e Duke. O objetivo inicial era criar um ambiente operacional completo, inclusive com API para o desenvolvimento de outros aplicativos.

Tipologia

Atualmente, a Cloud Computing é dividida em seis tipos:

  • IaaS - Infrastructure as a Service ou Infra-estrutura como Serviço (em português): quando se utiliza uma porcentagem de um servidor, geralmente com configuração que se adeque à sua necessidade.
  • PaaS - Plataform as a Service ou Plataforma como Serviço (em português): utilizando-se apenas uma plataforma como um banco de dados, um web-service, etc. (p.ex.: Windows Azure).
  • DaaS - Development as a Service ou Desenvolvimento como Serviço (em português): as ferramentas de desenvolvimento tomam forma no cloud computing como ferramentas compartilhadas, ferramentas de desenvolvimento web-based e serviços baseados em mashup.
  • SaaS - Software as a Service ou Software como Serviço (em português): uso de um software em regime de utilização web (p.ex.: Google Docs , Microsoft Sharepoint Online).
  • CaaS - Communication as a Service ou Comunicação como Serviço (em português): uso de uma solução de Comunicação Unificada hospedada em Data Center do provedor ou fabricante.
  • EaaS - Everything as a Service ou Tudo como Serviço (em português): quando se utiliza tudo, infraestrurura, plataformas, software, suporte, enfim, o que envolve T.I.C. (Tecnologia da Informação e Comunicação) como um Serviço.

Modelo de Implantação

No modelo de implantação [4], dependemos das necessidades das aplicações que serão implementadas. A restrição ou abertura de acesso depende do processo de negócios, do tipo de informação e do nível de visão desejado. Percebemos que certas organizações não desejam que todos os usuários possam acessar e utilizar determinados recursos no seu ambiente de computação em nuvem. Segue abaixo a divisão dos diferentes tipos de implantação:

  • Privado - As nuvens privadas são aquelas construídas exclusivamente para um único usuário (uma empresa, por exemplo). Diferentemente de um data center privado virtual, a infraestrutura utilizada pertence ao usuário, e, portanto, ele possui total controle sobre como as aplicações são implementadas na nuvem. Uma nuvem privada é, em geral, construída sobre um data center privado.
  • Público - As nuvens públicas são aquelas que são executadas por terceiros. As aplicações de diversos usuários ficam misturadas nos sistemas de armazenamento, o que pode parecer ineficiente a princípio. Porém, se a implementação de uma nuvem pública considera questões fundamentais, como desempenho e segurança, a existência de outras aplicações sendo executadas na mesma nuvem permanece transparente tanto para os prestadores de serviços como para os usuários.
  • Comunidade - A infraestrutura de nuvem é compartilhada por diversas organizações e suporta uma comunidade específica que partilha as preocupações (por exemplo, a missão, os requisitos de segurança, política e considerações sobre o cumprimento). Pode ser administrado por organizações ou por um terceiro e pode existir localmente ou remotamente.
  • Híbrido - Nas nuvens híbridas temos uma composição dos modelos de nuvens públicas e privadas. Elas permitem que uma nuvem privada possa ter seus recursos ampliados a partir de uma reserva de recursos em uma nuvem pública. Essa característica possui a vantagem de manter os níveis de serviço mesmo que haja flutuações rápidas na necessidade dos recursos. A conexão entre as nuvens pública e privada pode ser usada até mesmo em tarefas periódicas que são mais facilmente implementadas nas nuvens públicas, por exemplo. O termo computação em ondas é, em geral, utilizado quando se refere às nuvens híbridas.

Vantagens

A maior vantagem da computação em nuvem é a possibilidade de utilizar softwares sem que estes estejam instalados no computador. Mas há outras vantagens:[5]

  • na maioria das vezes o usuário não precisa se preocupar com o sistema operacional e hardware que está usando em seu computador pessoal, podendo acessar seus dados na "nuvem computacional" independentemente disso;
  • as atualizações dos softwares são feitas de forma automática, sem necessidade de intervenção do usuário;
  • o trabalho corporativo e o compartilhamento de arquivos se tornam mais fáceis, uma vez que todas as informações se encontram no mesmo "lugar", ou seja, na "nuvem computacional";
  • os softwares e os dados podem ser acessados em qualquer lugar, bastando que haja acesso à Internet, não estando mais restritos ao ambiente local de computação, nem dependendo da sincronização de mídias removíveis.
  • o usuário tem um melhor controle de gastos ao usar aplicativos, pois a maioria dos sistemas de computação em nuvem fornece aplicações gratuitamente e, quando não gratuitas, são pagas somente pelo tempo de utilização dos recursos. Não é necessário pagar por uma licença integral de uso de software;
  • diminui a necessidade de manutenção da infraestrutura física de redes locais cliente/servidor, bem como da instalação dos softwares nos computadores corporativos, pois esta fica a cargo do provedor do software em nuvem, bastando que os computadores clientes tenham acesso à Internet.
  • a infraestrutura necessária para uma solução de cloud computing é bem mais enxuta do que uma solução tradicional de hosting ou collocation, consumindo menos energia, refrigeração e espaço físico e consequentemente contribuindo para preservação e uso racional dos recursos naturais. Entretanto é preciso notar que a demanda por poder de processamento e armazenamento dos datacenters das empresas provedoras dos serviços de cloud computing por sua vez apenas cresce, o que coloca em dúvida esta suposta vantagem.
  • de uma maneira geral, serviço de plataforma é uma evolução da terceirização na área de TI. A maioria das empresas não tem como atividade principal a gestão de TI, de forma que se mostra coerente a contratação de uma plataforma externa robusta para apoiar processos como gestão empresarial, pagamentos e recebimentos, banco de dados, desenvolvimento de produtos (como renderização de vídeos, CAD, etc.), apoio a serviços (BI, processamento de dados, etc.) e demais. Nesse caso, TI passa a ser efetivamente uma ferramenta de suporte ao negócio, ou seja, o foco do cliente é a informação e não a forma como ela é mantida e processada.
Mesmo para as organizações de TI, há vantagens. “As organizações de TI gastam hoje 80% de seu tempo com a manutenção de sistemas, e não é seu objetivo de negócio manter dados e aplicativos em operação. É dinheiro jogado fora, o que é inaceitável nos dias de hoje”, defende Clifton Ashley, diretor do Google para a América Latina.[6]

É uma grande tendência de mercado, principalmente pelo controle de custos, pois atualmente em grande parte das empresas não se sabe quanto se gasta com TI, nem quanto poderia ser economizado. Tomando por exemplo uma empresa de marketing: a produção de animações 3D e efeitos especiais exige uma grande quantidade de processamento computacional. Normalmente isto é realizado dentro das limitações da estação de trabalho do próprio artista, consumindo muitas horas ou até mesmo dias, diminuindo a produtividade e estendendo o cronograma do projeto. A utilização da computação em nuvem permitiria a realização do mesmo trabalho em um espaço de tempo drasticamente reduzido (poucas horas ou minutos) sem grandes investimentos em uma plataforma de processamento compatível com o trabalho. O custo é proporcional ao tempo de utilização do serviço ou corresponde ao custo de uma assinatura.

Gerenciamento da Segurança da Informação na Nuvem

Sete princípios de Segurança em uma rede em nuvem [7] :

  • Acesso privilegiado de usuários - A sensibilidade de informações confidenciais nas empresas obriga um controle de acesso dos usuários e informação bem específica de quem terá privilégio de admistrador, para então esse administrador controle os acessos
  • Compliance com regulamentação - As empresas são responsáveis pela segurança, integridade e a confidencialidade de seus próprios dados. Os fornecedores de cloud computing devem estar preparados para auditorias externas e certificações de segurança.
  • Localização dos dados - A empresa que usa cloud provavelmente não sabe exatamente onde os dados estão armazenados, talvez nem o país onde as informações estão guardadas. O fornecedor deve estar disposto a se comprometer a armazenar e a processar dados em jurisdições específicas, assumindo um compromisso em contrato de obedecer os requerimentos de privacidade que o país de origem da empresa pede.
  • Segregação dos dados - Geralmente uma empresa divide um ambiente com dados de diversos clientes. Procure entender o que é feito para a separação de dados, que tipo de criptografia é segura o suficiente para o funcionamento correto da aplicação.
  • Recuperação dos dados - O fornecedor em cloud deve saber onde estão os dados da empresa e o que acontece para recuperação de dados em caso de catástrofe. Qualquer aplicação que não replica os dados e a infra-estrutra em diversas localidades está vulnerál a falha completa. Importante ter um plano de recuperação completa e um tempo estimado para tal.
  • Apoio à investigação - A auditabilidade de atividades ilegais pode se tornar impossível em cloud computing uma vez que há uma variação de servidores conforme o tempo ondes estão localizados os acessos e os dados dos usuários. Importante obter um compromisso contratual com a empresa fornecedora do serviço e uma evidência de sucesso no passado para esse tipo de investigação.
  • Viabilidade em longo prazo - No mundo ideal, o seu fornecedor de cloud computing jamais vai falir ou ser adquirido por uma empresa maior. A empresa precisa garantir que os seus dados estarão disponíveis caso o fornecedor de cloud computing deixe de existir ou seja migrado para uma empresa maior. Importante haver um plano de recuperação de dados e o formato para que possa ser utilizado em uma aplicação substituta.

 

Dúvidas

Arquitetura em nuvem é muito mais que apenas um conjunto (embora massivo) de servidores interligados. Requer uma infraestrutura de gerenciamento desse grande fluxo de dados que, incluindo funções para aprovisionamento e compartilhamento de recursos computacionais, equilíbrio dinâmico do workload e monitoração do desempenho.

Embora a novidade venha ganhando espaço, ainda é cedo para dizer se dará certo ou não. Os arquivos são guardados na web e os programas colocados na nuvem computacional - e não nos computadores em si - são gratuitos e acessíveis de qualquer lugar. Mas a ideia de que 'tudo é de todos e ninguém é de ninguém' nem sempre é algo bem visto.

O fator mais crítico é a segurança, considerando que os dados ficam “online” o tempo todo.

Sistemas Atuais

Os sistemas operacionais para Internet mais utilizados são:

  • Google Chrome OS: Desenvolvido pela Google, virá com os Chromebooks, que têm lançamento marcado para o dia 15 de junho de 2011 nos EUA, Reino Unido, Espanha e em outros 4 países. Trabalha com uma interface diferente, semelhante ao do Google Chrome, em que todas as aplicações ou arquivos são salvos na nuvem e sincronizados com sua conta do Google, sem necessidade de salvá-los no computador, já que o HD dos dois modelos de Chromebooks anunciados contam com apenas 16gb de HD. [8]
  • Joli Os: desenvolvido por Tariq Krim, o ambiente de trabalho chamado jolicloud usa tanto aplicativos em nuvem quanto aplicativos ofline, baseado no ubuntu notebook remix, ja tem suporte a varios navegadores como google chrome, safari, firefox, e esta sendo desenvolvido para funcionar no android.
  • YouOS: desenvolvido pela empresa WebShaka, cria um ambiente de trabalho inspirado nos sistemas operacionais modernos e utiliza a linguagem Javascript para executar as operações. Ele possui um recurso semelhante à hibernação no MS-Windows XP, em que o usuário pode salvar a área de trabalho com a configuração corrente, sair do sistema e recuperar a mesma configuração posteriormente. Esse sistema também permite o compartilhamento de arquivos entre os usuários. Além disso, possui uma API para o desenvolvimento de novos aplicativos, sendo que já existe uma lista de mais de 700 programas disponíveis. Fechado pelos desenvolvedores em 30 de julho de 2008;
  • DesktopTwo: desenvolvido pela empresa Sapotek, tem como pré-requisito a presença do utilitário Flash Player para ser utilizado. O sistema foi desenvolvido para prover todos os serviços necessários aos usuários, tornando a Internet o principal ambiente de trabalho. Utiliza a linguagem PHP como base para os aplicativos disponíveis e também possui uma API, chamada Sapodesk, para o desenvolvimento de novos aplicativos. Fechado pelos desenvolvedores;
  • G.ho.st: Esta sigla significa “Global Hosted Operating SysTem” (Sistema Operacional Disponível Globalmente), tem como diferencial em relação aos outros a possibilidade de integração com outros serviços como: Google Docs, Meebo, ThinkFree, entre outros, além de oferecer suporte a vários idiomas;
  • eyeOS: Este sistema está sendo desenvolvido por uma comunidade denominada EyeOS Team e possui o código fonte aberto ao público. O objetivo dos desenvolvedores é criar um ambiente com maior compatibilidade com os aplicativos atuais, MS-Office e OpenOffice. Possui um abrangente conjunto de aplicativos, e o seu desenvolvimento é feito principalmente com o uso da linguagem PHP.
  • iCloud: Sistema lançado pela Apple em 2011, é capaz de armazenar até 5 GB de fotos, músicas, documentos, livros e contatos gratuitamente, com a possibilidade de adquirir mais espaço em disco (pago).
  • Ubuntu One: Ubuntu One é o nome da suíte que a Canonical (Mantenedora da distribuição Linux Ubuntu) usa para seus serviços online. Atualmente com o Ubuntu One é possível fazer backups, armazenamento, sincronização e compartilhamento de arquivos e vários outros serviços que a Canonical adiciona para oferecer mais opções e conforto para os usuários.
  • IBM Smart Business - Sistema da IBM que engloba un conjunto de serviços e produtos integrados em nuvem voltados para a empresa. O portfólio incorpora sofisticada tecnologia de automação e autosserviço para tarefas tão diversas como desenvolvimento e teste de software, gerenciamento de computadores e dispositivos, e colaboração. Inclui o Servidor IBM CloudBurst server (US) com armazenamento, virtualização, redes integradas e sistemas de gerenciamento de serviço embutidos.

No Brasil

No Brasil, a tecnologia de computação em nuvem ainda é muito recente e está fora da realidade da maioria das organizações de médio e pequeno porte, pois a infraestrutura de telecomunicações do país é deficiente. Os primeiros testes foram implementados em 2007, sendo que somente em 2008 começou a ser oferecido comercialmente.

A empresa Katri[9] foi a primeira a desenvolver a tecnologia no Brasil, em 2002, batizando-a IUGU. Aplicada inicialmente no site de busca de pessoas físicas e jurídicas Fonelista. Durante o período em que esteve no ar, de 2002 a 2008, os usuários do site puderam comprovar a grande diferença de velocidade nas pesquisas proporcionada pelo processamento paralelo.

Em 2009, a tecnologia evoluiu muito, e sistemas funcionais desenvolvidos no início da década já passam de sua 3ª geração, incorporando funcionalidades e utilizando de tecnologias como "índices invertidos" (inverted index).

A empresa Indústria Virtual lançou em 2009 a versão 2.0 do sistema WebCenter[10] e está popularizando a utilização da computação em nuvem, trazendo ferramentas que facilitam a utilização desses novos recursos, tanto por empresas como por pessoas físicas.

No ambiente acadêmico o Laboratório de Redes e Gerência da UFSC foi um dos pioneiros a desenvolver pesquisas em Computação em Nuvem publicando artigos sobre segurança, IDS (Intrusion Detection Systems) e SLA (Service Level Agreement) para computação em nuvem. Além de implantar e gerenciar uma nuvem privada e computação em nuvem verde.

Referências

  1. Gartner Says Cloud Computing Will Be As Influential As E-business
  2. Cloud Computing - novo modelo de computação. Sisnema (22 de Janeiro de 2009).
  3. AT&T oferece cloud computing. Revista Info.
  4. ↑ Um estudo sobre os benefícios e os riscos de segurança na utilização de Cloud Computing. - Fabrício Rodrigues - Artigo publicado na UNISUAM
  5. O que é computação em nuvem?.
  6. Cloud Computing: Prepare-se para a nova onda em tecnologia. Computer World (5 de Agosto de 2008).
  7. Cloud Computing: Conheça os sete riscos de segurança em cloud computing. Computer World (11 de Julho de 2008).
  8. ↑ http://www.google.com/chromebook/
  9. Nuvem Computacional completo. eiboo.com.br (5 de Novembro de 2009).
  10. ↑ Indústria Virtual. Webcenter 2.0.

Ligações externas

  • Cloud computing: entenda este novo modelo de computação , em IDG Now!
  • Computação nas nuvens vai baratear acesso à Internet, aposta Google , em Globo.com
  • Cloud Computing: Prepare-se para a nova onda em tecnologia , em Computer World
  • Começou a corrida atrás da Nuvem Informativa , em Observatório da Imprensa
  • 11 categorias de cloud computing , em Computer World
  • The Arrival Of Cloud Thinking
  • CouldComputingForum 2010
Obtida de "http://pt.wikipedia.org/w/index.php?title=Computa%C3%A7%C3%A3o_em_nuvem&oldid=27596283"

Software

 
Mapa com os gastos em TI em todo o planeta

Tecnologia da Informação (TI) É a área de conhecimento responsável por criar, administrar e manter a gestão da informação através de dispositivos e equipamentos para acesso, operação e armazenamento dos dados, de forma a gerar informações para tomada de decisão. [carece de fontes?]

Índice

O termo

Imagem (não-oficial) representando a Tecnologia da Informação

A TI é uma grande força em áreas como finanças, planejamento de transportes, design, produção de bens, assim como na imprensa, nas atividades editoriais, na produção musical e cinematográfica, no rádio e na televisão. O desenvolvimento cada vez mais rápido de novas tecnologias de informação modificou as bibliotecas e os centros de documentação (principais locais de armazenamento de informação), introduzindo novas formas de organização e acesso aos dados e obras armazenadas; reduziu custos e acelerou a produção dos jornais e possibilitou a formação instantânea de redes televisivas de âmbito mundial. [carece de fontes?]

Além disso, tal desenvolvimento facilitou e intensificou a comunicação pessoal e institucional, através de programas de processamento de texto, de formação de bancos de dados, de editoração eletrônica, bem como de tecnologias que permitem a transmissão de documentos, envio de mensagens e arquivos, assim como consultas a computadores remotos (via rede mundiais de computadores, como a internet). A difusão das novas tecnologias de informação trouxe também impasse e problemas, relativos principalmente à privacidade dos indivíduos e ao seu direito à informação, pois os cidadãos geralmente não têm acesso a grande quantidade de informação sobre eles, coletadas por instituições particulares ou públicas.[carece de fontes?]

As tecnologias da informação não incluem somente componentes de máquina. Existem tecnologias intelectuais usadas para lidar com o ciclo da informação, como técnicas de classificação, por exemplo, que não requerem uso de máquinas apenas em um esquema. Esse esquema pode, também, ser incluído em um software que será usado, mas isso não elimina o fato de que a técnica já existia independentemente do software. As tecnologias de classificação e organização de informações existem desde que as bibliotecas começaram a ser formadas. Qualquer livro sobre organização de bibliotecas traz essas tecnologias.[carece de fontes?]

Os maiores desenvolvedores mundiais desse tipo de tecnologia são Suécia, Cingapura, Dinamarca, Suíça e Estados Unidos, segundo o Relatório Global de Tecnologia da Informação 2009-2010 do Fórum Econômico Mundial. O Brasil é o 61º nesse ranking[1].

Tecnologias de Informação (TI) nas organizações

Impactos dos Sistemas de Informação (SI) / Tecnologias de Informação (TI) nas organizações

A introdução de SI/TI numa organização irá provocar um conjunto de alterações, nomeadamente em nível das relações da organização com o meio envolvente (analisadas em termos de eficácia) e em nível de impactos internos na organização (analisados através da eficiência).

As TI são um recurso valioso e provocam repercussões em todos os níveis da estrutura organizacional:

  1. no nível estratégico, quando uma ação é suscetível de aumentar a coerência entre a organização e o meio envolvente, que por sua vez se traduz num aumento de eficácia em termos de cumprimento da missão organizacional;
  2. nos níveis operacional e administrativo, quando existem efeitos endógenos, traduzidos em aumento da eficiência organizacional em termos de opções estratégicas. No entanto, ao ser feita essa distinção, não significa que ela seja estanque, independente, pois existem impactos simultâneos nos vários níveis: estratégico, operacional e tático.

Assim, temos que os SI permitem às organizações a oferta de produtos a preços mais baixos, que, aliados a um bom serviço e à boa relação com os clientes, resultam numa vantagem competitiva adicional, através de elementos de valor acrescentado cujo efeito será a fidelidade dos clientes.

A utilização de SI pode provocar, também, alterações nas condições competitivas de determinado mercado, em termos de alteração do equilíbrio dentro do setor de atividade, dissuasão e criação de barreiras à entrada de novos concorrentes. Os SI/TI permitem, ainda, desenvolver novos produtos/serviços aos clientes ou diferenciar os já existentes dos da concorrência e que atraem o cliente de forma preferencial em relação à concorrência.

A utilização de alta tecnologia vai permitir uma relação mais estreita e permanente entre empresa e fornecedores, na medida em que qualquer pedido/sugestão da parte da empresa é passível de ser atendido/testado pelos fornecedores. A tecnologia permitiu uma modificação na maneira de pensar e de agir dos produtores e consumidores.

As Tecnologias de Informação têm reconhecidamente impactos no nível interno das organizações: na estrutura orgânica e no papel de enquadramento/coordenação na organização; em nível psicossociológico e das relações pessoais; no subsistema de objetivos e valores das pessoas que trabalham nas organizações; bem como no subsistema tecnológico.

Os maiores benefícios somem quando as estratégias organizacionais, as estruturas e os processos são alterados conjuntamente com os investimentos em TI. As TI’s permitem, assim, ultrapassar todo um conjunto de barreiras na medida em que existe uma nova maneira de pensar, pois em tempo real é possível às empresas agirem e reagirem rapidamente aos clientes, mercados e concorrência.

Tecnologia da Informação e seu impacto na segurança empresarial

A Tecnologia da Informação segue em avanço constante, mas ao mesmo tempo sua gestão no quesito segurança[2] não acompanha o mesmo ritmo das políticas de segurança e não está ainda em um patamar que pode ser considerado eficiente. Com tantos recursos disponíveis e possibilidades quase ilimitadas, os gestores esquecem que agora sua empresa possui mais uma porta para o mundo, porta esta que, se aberta, pode dar a um individuo valiosas informações sobre sua organização.

Temos então um caso em que a tecnologia da informação se torna um risco devido a problemas de gerenciamento, é importante ressaltar os problemas que a tecnologia traz para as empresas além de seus benefícios, pois segurança também gera custos e, quando lidamos com alta tecnologia, os investimentos nem sempre são pequenos nessa área.

Evolução da Tecnologia de Informação

Conhecendo a evolução histórica da Tecnologia da Informação (TI) podemos compreender o quanto essa ferramenta é necessária hoje nas empresas e perceber, por exemplo, como os sistemas atuais são modificados, desenvolvidos e aplicados. O desenvolvimento da TI, segundo Keen (1996, p. XXV) pode ser divida em quatro períodos distintos:

  • Processamento de dados (década de 1960);
  • Sistemas de informações (década de 1970);
  • Inovação e vantagem competitiva (década de 1980);
  • Integração e reestruturação do negócio (década de 1990);

De acordo com Foina (2001), foi com o advento dos computadores nas empresas e organizações que a TI surgiu. Antes, o processo de tratamento das informações eram em formatos de memorandos, planilhas e tabulações, todas datilografadas e distribuídas por meio de malotes aos funcionários. Analisando os avanços da TI vemos o quanto esse instrumento de tomada de decisão é importante no mundo dos negócios, nas empresas e na própria tecnologia.

A Era do Processamento de Dados

Em 1960 os computadores começaram a se tornar importantes para as grandes e médias empresas, mas eram limitadíssimos quanto a aplicações e incompatíveis entre si. Os avanços da informática eram puxados pelo hardware como melhorias no custo, velocidade dos equipamentos e as aplicações, onde esse último era construído “do zero”, pois não existiam empresas dedicadas ao desenvolvimento de pacotes.

Na década de 1970, as linhas telefônicas de voz passaram a permitir o acesso a terminais remotos de computadores e as telecomunicações se tornam uma base tecnológica, levando as empresas a automatização das atividades burocráticas.

Toda a ação acontecia na sala de processamento de dados os chamados CPD´s (Centro de Processamento de Dados) responsáveis pelo tratamento das informações, onde o acesso a esse volume de dados eram realizados por relatórios gerados pelo sistema ou terminais ligados ao computador central. Porém havia resistência por parte de usuários ao novo sistema e centralização das operações.

A Era dos Sistemas de Informações

Em meados de 1970 as transformações tecnológicas começaram a abrir novas opções para a transformação de dados em informações e ao melhoramento e adequação dos sistemas de acordo com as necessidades da empresa, porém ainda era um período de extrema centralização.

O terminal, pela primeira vez, se torna flexível, permitindo o computador processar diversas tarefas simultaneamente com vários usuários. Surge também os pacotes de software, onde combinado com a flexibilidade dos terminais estimulou uma série de inovações que vieram a ser conhecidas como “sistemas de apoio à decisão”.

Segundo Keen (1996, p. XXXVII), “a maior evolução técnica dessa época foi a passagem do processamento de transações para o gerenciamento de banco de dados." Surge então os sistemas gerenciadores de banco de dados (SGBDs), que organizam as informações de uma maneira eficaz, evitando duplicidade e facilitando sua análise. Assim os velhos CPDs começaram a se transformar em bibliotecas de informações. Os profissionais de informática eram os que mais resistiam às mudanças.

A Era da Inovação e Vantagem Competitiva

Em 1980, ocorreram mudanças tecnológicas principalmente em tecnologias de escritório e microcomputadores, e o termo “Tecnologia da Informação” passou a ser mais usado. Os gerenciadores de banco de dados se tornaram disponíveis nos PCs e softwares de custo baixo dominaram o mercado, assim as atenções se voltavam para o mercado em busca de novas estratégicas com base das tecnologias de TI. As telecomunicações e os microcomputadores liberaram o uso da TI nas empresas do mundo todo.

Criou-se programas de “conscientização gerencial” para os altos executivos e o Centro de Suporte ao Usuário (CSU) ou o chamado Help Desk, onde os usuários consultavam para esclarecer dúvidas, além de receberem consultoria na área tecnológica, ambos para possibilitar o acesso e conhecimento das ferramentas de TI existentes nas empresas e uma maior aceitação.

Mesmo com todos os avanços da época, como as redes locais, os computadores ainda eram incompatíveis entre si, dificultando assim a integração dos sistemas e uma maior flexibilidade. A busca pela descentralização se torna mais forte.

A Era da Integração e Reestruturação do Negócio

Na década de 1990, sistemas abertos, integração e modelos se tornam itens essenciais nos departamentos de sistemas acabando com a incompatibilidade. A integração tecnológica flexibilizou e facilitou a troca e o acesso às informações otimizando o funcionamento da empresa. Surge, por exemplo, o sistema EDI (electronic data interchange ou troca eletrônica de dados).

“A TI é reconhecida como fator crítico de capacitação, principalmente através das telecomunicações, que permite eliminar barreiras impostas por local e tempo às atividades de coordenação, serviço e colaboração”.(KEEN, 1996, p. XLIX). De modo súbito, a mudança se acelerou em quase todas as áreas do negócio e da tecnologia. A transformação e utilização das ferramentas da TI se tornam globais e as distinções entre computador e comunicação desaparecem mudando radicalmente o mundo dos negócios. O computador se torna elemento de TI indispensável em uma organização.

Ver também

A Wikipédia possui o portal:
Tecnologias de informação

Referências

Bibliografia

  • KENN, Peter G. W. Guia Gerencial para a tecnologia da informação: Conceitos essenciais e terminologia para empresas e gerentes. Rio de Janeiro: Campus, 1996.
  • FOINA, Paulo Rogério. Tecnologia de informação: planejamento e gestão / Paulo Rogério Foina. - São Paulo: Atlas, 2001.


Software

 

 Outsourcing (em inglês, "Out" significa "fora" e "source" ou "sourcing" significa fonte) designa a ação que existe por parte de uma organização em obter mão-de-obra de fora da empresa, ou seja, mão-de-obra terceirizada. Está fortemente ligada a ideia de sub-contratação de serviços.

Em outras palavras, Outsourcing é a transferência das atividades conhecidas como atividades meio, e nunca as atividades fins (produto final), para uma empresa terceirizada, sendo mais focada como parceria, como tradução mais precisa.

A contratação de serviços periféricos visa a reduzir custos internos aproveitando o "know how" e a especialização de empresas externas que, em determinadas áreas específicas, se revelam como opção mais vantajosa, permitindo maiores rentabilidades, uma vez que os empregados subcontratados normalmente ganham um vencimento reduzido[1].

Isto porque a ideia inicial de buscar fora da empresa, outras empresas que pudessem fornecer serviços especializados, com maior know how, em determinadas áreas para que a empresa contratante pudesse focar sua pesquisa e desenvolvimento somente no core business da organização, obtendo, com isso, maior qualidade por um custo menor do que aquele que teria que desembolsar para ter a suposta mesma qualidade utilizando mão de obra, treinamento e desenvolvimento próprios, foi sendo distorcida a ponto de abortarem a ideia da qualidade, treinamento e desenvolvimento da mão de obra, e focaram apenas na redução de custos a qualquer preço. Essa distorção fez com que a nova linha praticante desta ferramenta passasse a abrir mão justamente do que dava qualidade ao sistema imaginado, para que seu custo fosse barato e hoje, acaba sendo sinal de baixo custo por baixa qualificação.

O Outsourcing, fruto da crescente rentabilidade evidenciada por algumas empresas que recorrem a estes serviços, tem vindo a crescer de forma significativa ao longo do tempo.

O modo como é estabelecido tem conhecido diferentes formas ao longo dos tempos. O modelo de negócio que começou por ser estabelecido com base num simples acordo comercial entre duas entidades foi evoluindo para outras formas de relacionamento onde a perspectiva de partilha de custo / benefício passou a estar presente. Em determinadas situações, a colaboração tem conduzido mesmo a novos projectos conjuntos.

Uma das formas de outsourcing que tem vindo a adquirir maior protagonismo é a wikização de algumas tarefas e/ou componentes, nomeada mas não exclusivamente no domínio da tecnologia informática. O livro Wikinomics, de Don Tapscott, apresenta muitos exemplos de situações em que a fronteira entre o que constitui a utilização de meios da empresa e a colaboração de entidades externas se torna um processo tão fluido e dinâmico que, assiduamente, é de algum modo indiferente aferir a propriedade intelectual e a correspondente remuneração do contributo.

Na realidade, no modelo Wikinomics, a conceito de recompensa das entidades que externamente contribuem adquire a forma de ganhos de notoriedade, de reconhecimentos público ou, muito simplesmente, o contributo é dado sem outra expectativa que não a gratificação pessoal de ter sido resolvido um desafio intelectual.

Índice

  • 1 Diferenças entre Outsourcing e Terceirização
  • 2 Benefícios
  • 3 Riscos
  • 4 Malefícios
  • 5 Referências
  • 6 Ver também

Diferenças entre Outsourcing e Terceirização

A diferença entre outsourcing e terceirização é que, inicialmente, outsourcing está ligado a procura de "fontes" fora da organização ou país e terceirização correlaciona dentro do país, embora os termos sejam frequentemente utilizados indistintamente.

  • outsourcing é o uso estratégico de recursos externos para a realização de atividades tradicionalmente realizadas pelos recursos e equipes internos.
  • A expressão terceirização também pode ser usada, sendo que esta é uma tradução livre de outsourcing, mas que em Portugal não corresponde inteiramente a realidade de uso.

De modo geral, em Portugal, o termo outsourcing está mais relacionada à gestão estratégica, seja de tecnologia ou qualquer outro serviço. A mão-de-obra também faz parte do outsourcing, mas não da mesma forma como na até então já bem conhecida terceirização de pessoal, onde o trabalho sempre fora puramente "braçal" com pouco uso de tecnologia.

  • Exemplo de outsourcing: gerenciamento de redes de computadores, gerenciamento de equipamentos de impressão de documentos, gestão de segurança corporativa e outros serviços que necessitem de equipamentos, know-how e mão-de-obra especializada.
  • Exemplo de tercerização: trabalhos como faxina, portaria e segurança que quase sempre não requerem conhecimentos técnicos específicos e são comumente conhecidos como serviços tercerizados.

 

Benefícios

  • Acessos a novos recursos humanos e tecnologia.
  • Maior visibilidade dos custos.
  • Controle claro e objetivo de cronogramas.
  • Objetividade na negociação.
  • Transferência do risco de parte da atividade para terceiros
  • Acesso a um serviço mais especializado
  • Possibilidade de prescindir de recursos não justificados em algumas Pequenas ou Médias Empresas PME's [1]
  • Potenciais ganhos derivados da economia de escala que resultam da empresa subcontratada poder acender a um agregado de empresas, optimizando os custos e serviços

Riscos

  • Resultados nem sempre correspondentes ao esperado.
  • Custos por vezes ficam além do previsto.
  • Dependência de parceiros pouco compromissados.
  • Falta de conhecimento do negócio por parte dos outsourcers.
  • Perda de controle e segurança.

Malefícios

  • Gerador de corrupção
  • Exploração do trabalhador final, que é único que realiza por fim algum trabalho útil.
  • Utilizado muitas vezes como forma de roubar ou desviar dinheiro de algumas empresas.
  • Prejudica muitas vezes os resultados da empresa que paga pelo o serviço.
  • Desumanização do trabalhador.

Referências

  1. ↑ "Na área de limpeza, os salários eram de R$ 670 (efetivo) e de R$ 445 (terceirizado)."

Ver também

  • Terceirização
  • Fábrica de Software

 

Obtida de "http://pt.wikipedia.org/w/index.php?title=Outsourcing&oldid=27640203"

Software

 

O gerenciamento de riscos em segurança é a essência da segurança corporativa, que atua no sentido de reconhecer as ameaças e saber que o risco pode ser diminuído, contido ou controlado.

Baseia-se na metodologia de gerenciamento de riscos, que tem seus primórdios e base conceitual na área financeira, e é um instrumento de gestão em finanças.

Índice

  • 1 O risco
  • 2 Fatores críticos
  • 3 Implementação
  • 4 Associações
  • 5 Ligações externas

O risco

Entende-se como risco a probabilidade de ocorrência de um evento desfavorável. É um conceito “multifacetado” que abrange diversos vetores, entre eles citamos: risco de mercado, risco operacional, risco de crédito, risco de imagem e risco legal.

Na área da segurança corporativa, o risco é resultante do conjunto de ameaças que pode inferir alterações no planejamento ou na continuidade da organização.

Fatores críticos

O problema de gerenciamento dos riscos corporativos é delicado: a existência de um único ponto fraco na cadeia do gerenciamento de riscos corporativos de uma instituição é suficiente para levá-la ao colapso.

Usa-se a analogia com uma corrente pois "a força de uma corrente é igual à força de seu elo mais fraco".

Implementação

O gerenciamento de riscos em segurança empresarial, impõe uma metodologia prevencionista e antecipativa no seu trato exigindo esforços contínuos para o estudo de cada situação.

Existem cinco elementos fundamentais para o sucesso na implementação do gerenciamento de riscos corporativos dentro de um planejamento de segurança:

  • Cultura corporativa para riscos
  • Pessoal qualificado
  • Procedimentos internos
  • Tecnologia
  • Recursos

Associações

Atualmente no Brasil, existem algumas instituições que congregam esta atividade

  • ABSEG
  • ABSO
  • ASIS

Ligações externas

  • Página da ABSEG (em português)
Obtida de "http://pt.wikipedia.org/w/index.php?title=Gest%C3%A3o_de_riscos_em_seguran%C3%A7a&oldid=27236845"

Software

 

Originalmente, e para certos programadores, hackers (singular: hacker) são indivíduos que elaboram e modificam software e hardware de computadores, seja desenvolvendo funcionalidades novas, seja adaptando as antigas, além de terem muito conhecimento em informática. Originário do inglês, o termo hacker é utilizado no português em conjunto com sua grafia lusófona, decifrador.[1][2][3]

Os hackers utilizam todo o seu conhecimento para melhorar softwares de forma legal. Eles geralmente são de classe média ou alta, com idade de 12 a 28 anos. Além de a maioria dos hackers serem usuários avançados de Software Livre como os BSD Unix (Berkeley Software Distribution) e o GNU/Linux, fatia esta de pessoas contra o monopólio da informação.[4] A expressão original para invasores de computadores é denominada Cracker, termo criado com esta finalidade, designando programadores maliciosos e ciberpiratas que agem com o intuito de violar ilegal ou imoralmente sistemas cibernéticos.[5]

Índice

  • 1 A controvérsia sobre o termo
  • 2 Ética hacker
    • 2.1 Cultura hacker
  • 3 Tipos de Hackers
    • 3.1 White hat
    • 3.2 Gray hat
    • 3.3 Black hat
    • 3.4 Newbie
    • 3.5 Lamer
  • 4 Outros termos
    • 4.1 Phreaker
    • 4.2 Cracker
  • 5 Ver também
  • 6 Referências

A controvérsia sobre o termo

Bruce Sterling, autor de The Hacker Crackdown.

Etimologicamente está relacionado ao verbo cortar nas línguas germânicas. O termo desenvolveu-se vindo a ser associado ao ato de modificar ou inventar algo para realizar funcionalidades que não as originais. As atividades criativas e originais de um inventor ou mecânico seriam o equivalente de hacking, "hackear" na língua portuguesa.

A palavra "hack" nasceu num grupo chamado PST chamado Tech Model RailRoad Club (TMRC) na década de 1950. Membros do clube (soldier e ChAoS) chamavam as modificações inteligentes que faziam nos relês eletrônicos de hacks. Quando as máquinas TX-0 e PDP-1 chegaram ao mercado, os membros do TMRC começaram a utilizar o mesmo jargão para descrever o que eles estavam fazendo com a programação de computadores. Isso continuou por anos até mesmo quando novas máquinas como o PDP-6 e depois o PDP-10 apareceram. O termo passou a ser usado com diversos significados: sucessos em determinadas áreas, fosse como uma solução não óbvia e particularmente elegante para um problema, ou uma partida inteligente pregada a alguém, ou ligar os sistemas informáticos e telefônicos para fazer chamadas grátis. Finalmente, o termo passou a ser utilizado exclusivamente na áreas da programação ou eletrônica, para designar indivíduos que demonstravam capacidades excepcionais nestes campos, efetivamente expandindo-os com atividades práticas e artísticas.

Desde o início do século, empresas brasileiras de informática (como a filial Microsoft do Brasil) usam o substantivo decifrador em respeito à língua lusófona. A forma portuguesa da palavra é constante nas guias de ajuda do Windows Vista e nas páginas da IBM Brasil e Google Brasil.[6]

Nós aqui no TMRC usamos os termo 'hacker' só com o seu significado original, de alguém que aplica o seu engenho para conseguir um resultado inteligente, o que é chamado de 'hack'. A essência de um 'hack' é que ele é feito rapidamente, e geralmente não tem elegância. Ele atinge os seus objetivos sem modificar o projeto total do sistema onde ele está inserido. Apesar de não se encaixar no design geral do sistema, um 'hack' é em geral rápido, esperto e eficiente. O significado inicial e benigno se destaca do significado recente - e mais utilizado - da palavra "hacker", como a pessoa que invade redes de computadores, geralmente com a intenção de roubar ou vandalizar. Aqui no TMRC, onde as palavras "hack" e "hacker" foram criadas e são usadas com orgulho desde a década de 1950, ficamos ofendidos com o uso indevido da palavra, para descrever atos ilegais. Pessoas que cometem tais coisas são mais bem descritas por expressões como "ladrões", "cracker de senhas" ou "vândalos de computadores". Eles com certeza não são verdadeiros "hackers", já que não entendem os valores "hacker". Não há nada de errado com o "hacking" ou em ser um "hacker".

TMRC (Tech Model RailRoad Club)

O termo "hacker", é erradamente confundido com "cracker". "Crakers" são peritos em informática que fazem o mau uso de seus conhecimentos, utilizando-o tanto para danificar componentes eletrônicos, como para roubo de dados, sejam pessoais ou não. Já os hackers usam seu conhecimentos para ajudar a aprimorar componentes de segurança.

Há ainda o termo "hacker de segurança da informação" e "hacker (subcultura de programadores Unix)", sendo que o primeiro pode ou não estar ligado ao Unix e ao código aberto, e o segundo está estritamente ligado ao código aberto e o Unix. É possível que ambos estejam ligados aos dois termos.

Linus Torvalds.
Exemplos de Hackers do código aberto
  • Eric S. Raymond
  • Linus Torvalds
  • Richard M. Stallman
  • Alan Cox
  • Andrew Tanenbaum
Exemplos de Hackers de segurança da informação
  • Tsutomu Shimomura
  • Jon Lech Johansen
  • John Draper
  • Wau Holland

Ética hacker


Existe uma Ética Hacker. Equivocadamente é usado referindo-se a pessoas relativamente sem habilidade em programação e sem ética, como criminosos que quebram a segurança de sistemas, agindo ilegalmente e fora da ética hacker. O problema é quando os crackers e script kiddies são referidos como hackers pela imprensa, por falta de conhecimento, gerando uma discussão sem fim.

Nesse sentido, os hackers seriam as pessoas que criaram a Internet, fizeram do sistema operacional Unix o que ele é hoje, mantêm a Usenet, fazem a World Wide Web funcionar, e mantém a cultura de desenvolvimento livre conhecida atualmente. É comum o uso da palavra hacker fora do contexto eletrônico/computacional, sendo utilizada para definir não somente as pessoas ligadas a informática, mas sim os especialistas que praticam o hacking em diversas áreas.

Cultura hacker

Um "Símbolo Hacker", proposto por Eric S. Raymond.

É importante lembrar que existe toda uma cultura por trás desse sentido da palavra hacker. A Cultura hacker define diversos pontos para estilo e atitude e, por mais que pareça estranho, muitas das pessoas que se tornam os chamados programadores extraordionários possuem esse estilo e atitude naturalmente e casual.

O termo hoje também é usado para representar todos os que são bons naquilo que fazem, como os artesãos que usavam como principal ferramenta de trabalho o machado, ou Picasso com sua arte fabulosa, eles foram os primeiros hackers. Atualmente o termo indica um bom especialista em qualquer área. Este termo adquiriu esta definição somente após seu uso na informática, designando especialistas em computação.

Os hackers e crackers são indíviduos da sociedade moderna, e possuem conhecimentos avançados na área tecnológica e de informática, mas a diferença básica entre eles é que os hackers somente constróem coisas para o bem e os crackers destróem, e quando constróem, fazem somente para fins pessoais.

Os termos utilizados na segurança da informação, para diferenciar os tipos de hacker/cracker são:

A figura dos hackers está comumente relacionada a indivíduos com alta capacidade intelectual e pouca atividade social.

Tipos de Hackers

White hat

White hat (hacker ético), vem do inglês "chapéu branco" e indica um hacker interessado em segurança. Utiliza os seus conhecimentos na exploração e detecção de erros de concepção, dentro da lei. A atitude típica de um white hat assim que encontra falhas de segurança é a de entrar em contacto com os responsáveis pelo sistema e informar sobre o erro, para que medidas sejam tomadas. Um white hat pode ser comparado a um policial ou vigilante, buscando as falhas para corrigi-las. Encontramos hackers white hats ministrando palestras (ou aulas em universidades) sobre segurança de sistemas, e até trabalhando dentro de empresas para garantir a segurança dos dados. Por causa do sentido pejorativo que a mídia associa ao termo "hacker", normalmente o hacker white hat não é publicamente chamados de hacker e sim de especialista em TI, analista de sistema ou outro cargo na área de informática. No entanto, realmente são hackers.

Gray hat

Gray hat - Tem as habilidades e intenções de um hacker de chapéu branco na maioria dos casos, mas por vezes utiliza seu conhecimento para propósitos menos nobres. Um hacker de chapéu cinza pode ser descrito como um hacker de chapéu branco que às vezes veste um chapéu preto para cumprir sua própria agenda. Hackers de chapéu cinza tipicamente se enquadram em outro tipo de ética, que diz ser aceitável penetrar em sistemas desde que o hacker não cometa roubo, vandalismo ou infrinja a confidencialidade. Alguns argumentam, no entanto, que o ato de penetrar em um sistema por si só já é antiético (ética hacker).

Black hat

Black hat, (cracker ou dark-side hacker), indica um hacker criminoso ou malicioso, comparável a um terrorista. Em geral são de perfil abusivo ou rebelde, muito bem descritos pelo termo "hacker do lado negro" (uma analogia à série de filmes Star Wars). Geralmente especializados em invasões maliciosas e silenciosas, são os hackers que não possuem ética.

Newbie


Newbie ou a sigla NB, vem do inglês "novato". Indica uma pessoa aprendiz na área, ainda sem muita habilidade, porém possui uma sede de conhecimento notável. Pergunta muito, mas freqüentemente é ignorado ou ridicularizado por outros novatos que já saibam mais do que ele (ao contrario dos lammers que são ridicularizados por todos). Hackers experientes normalmente não ridicularizam os novatos, por respeito ao desejo de aprender - no entanto, podem ignorá-los por falta de tempo ou paciência.

Lamer


O termo Lamer ou Lammer indica uma pessoa que acredita que é um hacker (decifrador), demonstra grande arrogância, no entanto sabe pouco ou muito pouco e é geralmente malicioso. Utilizam ferramentas criadas por Crackers para demonstrar sua suposta capacidade ou poder, na intenção de competir por reputação, no entanto são extremamente inconvenientes para convívio social, mesmo com outros hackers. Algumas pessoas acreditam que essa é uma fase natural do aprendizado, principalmente quando o conhecimento vem antes da maturidade. Lamer's geralmente atacam colegas de trabalho ou colegas de estudo, em comunidades website iniciam Flamers/Floods.. etc, sempre com menos aprendizado, e estes se aterrorizam, aumentando a arrogânica do lamer. Além disso os lamers gostam de espalhar boatos pela comunidade website, para aterrorizar os membros da comunidade, e criticando os comentários dos usuários, outro ponto negativo de um lamer, é não contribuir em ajudar os membros que precisam de auxílio nas comunidades.

Outros termos

Phreaker


O termo Phreaker, corruptela do inglês "freak" que significa "maluco", essencialmente significa a mesma coisa que o original "hacker", no entanto é um decifrador aplicado à area de telefonia (móvel ou fixa). No uso atual, entende-se que um Hacker modifica computadores, e um Phreaker modifica telefones (experimente discar no seu telefone batendo sucessivas vezes no gancho ao invés de usar o teclado do aparelho, e você estará sendo um phreaker). Os Phreakers também se enquadram no conceito de White hat ou Black hat.

Cracker


O termo Cracker, do inglês "quebrador", originalmente significa alguém que "quebra" sistemas. Hoje em dia, pode tanto significar alguém que quebra sistemas de segurança na intenção de obter proveito pessoal (como por exemplo modificar um programa para que ele não precise mais ser pago), como também pode ser um termo genérico para um Black Hat. Tal e qual como o Português reconhecido com o nickname de "# System Breaker 8", mais conhecido como #SB8, que é encontrado em diversas "webpages" pelo seu historial e fama em decifrar códigos.

Ver também

  • Barata elétrica
  • Ciberativismo
  • Ciberterrorismo
  • Crime informático
  • Cracker
  • Cyberbullying
  • Eric Steven Raymond
  • Ética hacker
  • Hack
  • Informática
  • Kevin Mitnick
  • Malware
  • Pekka Himanen e seu livro, A Ética Hacker e o Espírito da Era da Informação
  • Pirata
  • Script kiddie
  • Segurança digital
  • Warez

Referências

  1. ↑ Entenda sobre os Hackers, Dicas em geral, acessado em 11 de outubro de 2011
  2. ↑ Ética Hacker, WebNode, acessado em 11 de outubro de 2011
  3. ↑ Entendendo as diferenças entre Hacker e Cracker, acessado em 11 de outubro de 2011
  4. ↑ Hackers Linux, é por ele ser um dos sistemas operacionais mais usado por hackers
  5. ↑ Como se tornar um Hacker
  6. ↑ Compreendendo a segurança e a computação segura, página de suporte da Microsoft Brasil, acessado em 11 de outubro de 2011
Obtida de "http://pt.wikipedia.org/w/index.php?title=Hacker&oldid=27679778"

Software

 
Backtrack


Backtrack 5
Desenvolvedor Max Moser, Mati Aharoni, Martin J. Muench e outros[1].
Arquiteturas arm x86 x86-64
Modelo do desenvolvimento Software Livre
Lançado em 26 de maio de 2006 (5 anos)
Versão estável 5 R1 [2] / 18 de Agosto de 2011
Língua natural Multilíngue
Mercado-alvo Segurança
Família Debian
Núcleo Linux
Método de atualização dpkg
Gerenciamento de pacotes APT
Interface Plasma (KDE), Fluxbox. GNOME
Licença GNU GPL / Outras
Estado do desenvolvimento Corrente
Website www.backtrack-linux.org
Posição no Distrowatch 29ª (em inglês, em espanhol, em francês, em alemão, em tcheco/checo, em japonês e em chinês)
Origem comum Suíça
Portal do Software Livre

Backtrack é um sistema operacional Linux baseado no Ubuntu. É focado em testes de seguranças e testes de penetração (pen tests), muito apreciada por hackers e analistas de segurança, podendo ser iniciado diretamente pelo CD (sem necessidade de instalar em disco), mídia removível (pendrive), máquinas virtuais ou direto no disco rígido.[3]

Índice

  • 1 História e descrição
  • 2 Versões disponibilizadas
  • 3 Lista de Ferramentas do BackTrack[8]
    • 3.1 Coleta de Informações
    • 3.2 Mapeamento de Rede
      • 3.2.1 PBNJ 2.04
    • 3.3 Identificação de vulnerabilidade
    • 3.4 Penetração
    • 3.5 Escalação de Privilégio
    • 3.6 Mantendo Acesso
    • 3.7 Cobrindo Rastros
    • 3.8 Análise de Rede de Rádio
      • 3.8.1 802.11
      • 3.8.2 Bluetooth
    • 3.9 Análise VOIP & Telefonia
    • 3.10 Forense Digital
    • 3.11 Engenharia Reversa
    • 3.12 Serviços
  • 4 Bibliografia
  • 5 Referências
  • 6 Ligações externas

História e descrição

Foi evoluído da combinação de duas distribuições bem difundidas - Whax e Auditor Security Collection. Juntando forças e substituindo essas distribuições, BackTrack ganhou uma popularidade massiva e foi eleito em 2006 como a Distribuição Live de Segurança número 1 em sua categoria, e 32º no geral, pela Insecure.org. Profissionais de segurança, assim como novatos, estão usando BackTrack como seu kit de ferramentas favorito pelo mundo todo.

BackTrack tem uma longa história e foi baseado em várias distribuições de Linux diferentes até agora ser baseado em uma distribuição Linux Slackware e os scripts do live CD correspondentes por Tomas M. (www.slax.org). Cada pacote, configuração de núcleo e script é otimizado para ser utilizado pelos testadores de penetração de segurança. Patches e automação têm sido adicionados, aplicados e desenvolvidos para oferecer um ambiente organizado e pronto para a viagem.

Após ter chegado em um procedimento de desenvolvimento estável durante os últimos lançamentos, e consolidando feedbacks e complementos, o time focou-se em dar suporte a mais dispositivos de hardware, e novos dispositivos, bem como oferecer mais flexibilidade e modularidade por meio da reestruturação de processos de construção e manutenção. Com a atual versão, a maioria das aplicações são construídas como módulos individuais que ajudam a acelerar os lançamentos de manutenção e correções.

Por Metasploit ser uma das ferramentas-chave para a maioria dos analistas, ele é estreitamente integrado no BackTrack e ambos os projetos colaboram juntos para sempre providenciar uma implementação detalhada do Metasploit dentro das imagens do CD-Rom do BackTrack ou nas futuras imagens de virtualização mantidas e distribuições da remote-exploit.org (como aplicações de imagens VMWare).

Ser superior e fácil de usar é a chave para um bom Live-CD de segurança. Pega-se coisas um passo adiante e alinha o BackTrack às metodologias de teste de penetração e frameworks de avaliação (ISSAF e OSSTMM). Isso irá ajudar nossos usuários profissionais durante seus pesadelos de relatório diário.

Atualmente BackTrack consiste de mais de 300 ferramentas diferentes e atualizadas, que são logicamente estruturadas de acordo com o fluxo de trabalho de profissionais de segurança. Essa estrutura permite até novatos encontrar as ferramentas relacionadas a uma tarefa específica para ser cumprida. Novas tecnologias e técnicas de teste são combinadas no BackTrack o mais rápido possível para mantê-lo actualizado.

Nenhuma plataforma de análise comercial ou livremente disponível oferece um nível equivalente de usabilidade com configuração automática e foco em testes de penetração.

Versões disponibilizadas

Lista de Ferramentas do BackTrack[8]

Coleta de Informações

  • Ass
  • DMitry
  • DNS-Ptr
  • dnswalk
  • dns-bruteforce
  • dnsenum
  • dnsmap
  • DNSPredict
  • Finger Google
  • Firewalk
  • Goog Mail Enum
  • Google-search
  • Googrape
  • Gooscan
  • Host
  • Itrace
  • Netenum
  • Netmask
  • Pirana
  • Protos
  • QGoogle
  • Relay Scanner
  • SMTP-Vrfy
  • TCtrace

Mapeamento de Rede

  • Amap 5.2
  • Ass
  • Autoscan 0.99_R1
  • Fping
  • Hping
  • IKE-Scan
  • IKEProbe
  • Netdiscover
  • Nmap
  • NmapFE
  • P0f
  • PSK-Crack
  • Ping
  • Protos
  • Scanrand
  • SinFP
  • Umit
  • UnicornScan
  • UnicornScan pgsql 0.4.6e module version 1.03
  • XProbe2

PBNJ 2.04

  • OutputPBNJ
  • ScanPBNJ
  • Genlist

Identificação de vulnerabilidade

  • Absinthe
  • Bed
  • CIRT Fuzzer
  • Checkpwd
  • Cisco Auditing Tool
  • Cisco Enable Bruteforcer
  • Cisco Global Exploiter
  • Cisco OCS Mass Scanner
  • Cisco Scanner
  • Cisco Torch
  • Curl
  • Fuzzer 1.2
  • GFI LanGuard 2.0
  • GetSids
  • HTTP PUT
  • Halberd
  • Httprint
  • Httprint GUI
  • ISR-Form
  • Jbrofuzz
  • List-Urls
  • Lynx
  • Merge Router Config
  • Metacoretex
  • Metoscan
  • Mezcal HTtp://S
  • Mibble MIB Browser
  • Mistress
  • Nikto
  • OAT
  • Onesixtyone
  • OpenSSL-Scanner
  • Paros Proxy
  • Peach
  • RPCDump
  • RevHosts
  • SMB Bruteforcer
  • SMB Client
  • SMB Serverscan
  • SMB-NAT
  • SMBdumpusers
  • SMBgetserverinfo
  • SNMP Scanner
  • SNMP Walk
  • SQL Inject
  • SQL Scanner
  • SQLLibf
  • SQLbrute
  • Sidguess
  • Smb4K
  • Snmpcheck
  • Snmp Enum
  • Spike
  • Stompy
  • SuperScan
  • TNScmd
  • Taof
  • VNC_bypauth
  • Wapiti
  • Yersinia
  • sqlanlz
  • sqldict
  • sqldumplogins
  • sqlquery
  • sqlupload

Penetração

  • Framework3-MsfC
  • Framework3-MsfUpdate
  • Framework3-Msfcli
  • Framework3-Msfweb
  • Init Pgsql (autopwn)
  • Milw0rm Archive
  • MsfCli
  • MsfConsole
  • MsfUpdate
  • OpenSSL-To-Open
  • Update Milw0rm

Escalação de Privilégio

  • Ascend attacker
  • CDP Spoofer
  • Cisco Enable Bruteforcer
  • Crunch Dictgen
  • DHCPX Flooder
  • DNSspoof
  • Driftnet
  • Dsniff
  • Etherape
  • EtterCap
  • File2Cable
  • HSRP Spoofer
  • Hash Collision
  • Httpcapture
  • Hydra
  • Hydra GTK
  • ICMP Redirect
  • ICMPush
  • IGRP Spoofer
  • IRDP Responder
  • IRDP Spoofer
  • John
  • Lodowep
  • Mailsnarf
  • Medusa
  • Msgsnarf
  • Nemesis Spoofer
  • NetSed
  • Netenum
  • Netmask
  • Ntop
  • PHoss
  • PackETH
  • Rcrack
  • SIPdump
  • SMB Sniffer
  • Sing
  • TFTP-Brute
  • THC PPTP
  • TcPick
  • URLsnarf
  • VNCrack
  • WebCrack
  • Wireshark
  • Wireshark Wifi
  • WyD
  • XSpy
  • chntpw

Mantendo Acesso

  • 3proxy
  • Backdoors
  • Matahari
  • CryptCat
  • HttpTunnel Client
  • HttpTunnel Server
  • ICMPTX
  • Iodine
  • NSTX
  • Privoxy
  • ProxyTunnel
  • Rinetd
  • TinyProxy
  • sbd
  • socat

Cobrindo Rastros

  • Housekeeping

Análise de Rede de Rádio

802.11

  • AFrag
  • ASLeap
  • Air Crack
  • Air Decap
  • Air Replay
  • Airmon Script
  • Airpwn
  • AirSnarf
  • Airodump
  • Airoscript
  • Airsnort
  • CowPatty
  • FakeAP
  • GenKeys
  • Genpmk
  • Hotspotter
  • Karma
  • Kismet
  • Load IPW3945
  • Load acx100568
  • MDK2sss
  • MDK2 for Broadcom
  • MacChangerss
  • Unload Driversss
  • Wep_cracks
  • Wep_decrypts
  • WifiTaps
  • Wicrawls
  • Wlassistants

Bluetooth

  • Bluebugger
  • Blueprint
  • Bluesnarfer
  • Btscanner
  • Carwhisperer
  • CuteCom
  • Ghettotooth
  • HCIDump
  • Ussp-Push

Análise VOIP & Telefonia

  • PcapSipDump
  • PcapToSip_RTP
  • SIPSak
  • SIPcrack
  • SIPdump
  • SIPp
  • Smap

Forense Digital

  • Allin1
  • Autopsy
  • DCFLDD
  • DD_Rescue
  • Foremost
  • Magicrescue
  • Mboxgrep
  • Memfetch
  • Memfetch Find
  • Pasco
  • Rootkithunter
  • Sleuthkit
  • Vinetto

Engenharia Reversa

  • GDB GNU Debugger
  • GDB Console GUI
  • GDB Server
  • GNU DDD
  • Hexdump
  • Hexedit
  • OllyDBG

Serviços

  • SNORT

Bibliografia

Livro não oficial lançado em 14 de abril 2011:

  • BackTrack 4: Assuring Security by Penetration Testing, Shakeel Ali & Tedi Heriyanto, 2011, ISBN-10: 1849513945, ISBN-13: 978-1849513944.

Referências

  1. a b Desenvolvedores. (em inglês).
  2. a b Download Backtrack (em inglês).
  3. How To de como Customizar ou Instalar. (em inglês).
  4. Anúncio BackTrack 3 Beta. (em inglês).
  5. Anúncio BackTrack 4 Pre Release. (em inglês).
  6. Anúncio BackTrack 4 Final Release. (em inglês).
  7. Anúncio BackTrack 5 Final Release. (em inglês).
  8. Lista das ferramentas. (em inglês).

Ligações externas

  • Página oficial no Brasil
  • Página oficial
  • Página relacionada
Data Versão
26 de Maio de 2006 BackTrack 1.0 Final.
13 de Outubro de 2006 BackTrack 2 Public Beta 1.
19 de Novembro de 2006 BackTrack 2 Public Beta 2.
6 de Março de 2007 BackTrack 2 Final.
14 de Dezembro de 2007 BackTrack 3 Beta.[4]
19 de Junho de 2008 BackTrack 3 Final.
11 de Fevereiro de 2009 BackTrack 4 Beta Pre Release. (Baseado no Debian)
19 de Junho de 2009 BackTrack 4 Pre Release.[5]
11 de Janeiro de 2010 BackTrack 4 Final Release.[6]
10 de Maio de 2011 BackTrack 5 Final Release.[7]
Obtida de "http://pt.wikipedia.org/w/index.php?title=BackTrack&oldid=27720935"

Software

 

O hardware pode ser definido como um termo geral para equipamentos como chaves, fechaduras, dobradiças, trincos, puxadores, fios, correntes, material de canalização, ferramentas, utensílios, talheres e peças de máquinas. No âmbito eletrônico o termo hardware é bastante utilizado, principalmente na área de computação, por isso este artigo tem como foco explorar esse termo para a área de informática.

Em complemento ao hardware, o software é a parte lógica, ou seja, o conjunto de instruções e dados processado pelos circuitos eletrônicos do hardware. Toda interação dos usuários de computadores modernos é realizada através do software, que é a camada, colocada sobre o hardware, que transforma o computador em algo útil para o ser humano.

O termo hardware não se refere apenas aos computadores pessoais, mas também aos equipamentos embarcados em produtos que necessitam de processamento computacional, como os dispositivos encontrados em equipamentos hospitalares, automóveis, aparelhos celulares (em Portugal portáteis), entre outros.

Na ciência da computação a disciplina que trata das soluções de projeto de hardware é conhecida como arquitetura de computadores.

Para fins contábeis e financeiros, o hardware é considerado um bem de capital.

Índice

  • 1 História do Hardware
  • 2 Sistema binário
  • 3 Conexões do hardware
  • 4 Arquitecturas de computadores
    • 4.1 Arquitetura aberta
    • 4.2 Arquitectura fechada
  • 5 Principais componentes
  • 6 Redes
  • 7 Overclock
  • 8 Exemplos de hardware
  • 9 Ligações externas

História do Hardware

O primeiro hardware considerado é o ábaco que foi utilizado para fazer cálculos, a partir disto a tecnologia foi evoluindo passando pela criação de calculadoras valvuladas, leitores de cartões perfurados, máquinas a vapor e elétrica, até que se cria o primeiro computador digital durante a segunda guerra mundial, após isso a evolução dos hardwares vem sendo muita rápida e sofisticada. O grande impulso da indústria do hardware foi a criação da internet e a criação de dispositivos portáteis como celulares, mp3 players. Para maiores referências sobre a história do hardware consulte: História do hardware.

Sistema binário

O Sistema binário é um sistema matemático utilizado na computação chamado de Código de máquina o qual é fundamental para que os hardwares interpretem comandos gerados por softwares.

Um exemplo simples do sistema binário:

Para realizar a conversão utilizamos método de Divisão Repetida.

Para converter por exemplo, o número decimal 1985 em binário procedemos como segue:

- Divida o número decimal por 2 (dois), se o resultado for exato anote o valor 0 (zero), se não for exato anote o valor 1 (um), lembrando que esse valor deve ser anotado da direita para a esquerda ou como explicado abaixo do exemplo;

- Pegue a parte inteira do resultado e repita a operação sucessivamente até se obter 0 (zero) como parte inteira, como segue o exemplo abaixo:

    1985 / 2 = 992,5 = 1
     992 / 2 = 496   = 0
     496 / 2 = 248   = 0
     248 / 2 = 124   = 0
     124 / 2 =  62   = 0
      62 / 2 =  31   = 0
      31 / 2 =  15,5 = 1
      15 / 2 =   7,5 = 1
       7 / 2 =   3,5 = 1
       3 / 2 =   1,5 = 1
       1 / 2 =   0,5 = 1

Observe que o resultado é obtido juntando o resultado da última para a primeira divisão, ou seja de baixo para cima, onde o resultado é o seguinte número binário 11111000001.

Conversão de Binário para Decimal

 1         1        1       1        1        0        0        0        0        0        1

210 * 1 + 29 * 1 + 28 *1 + 27 * 1 + 26 * 1 + 25 * 0 + 24 * 0 + 23 * 0 + 2² * 0 + 2¹ * 0 + 20 * 1

        +        +       +        +        +        +        +        +        +        +
1024      512      256     128      64       0        0        0        0        0        1
                                             =
                                            1985

Da direita para a esquerda elevamos 2 à potência do índice e multiplicamos pelo dígito binário identificado por esse índice. Desta forma o primeiro dígito binário que encontramos é o 1 no índice 0, assim temos: 20 * 1. Após realizarmos essa operação para todos os zeros para todos os dígitos, somamos o resultado. O resultado desta soma é o número que estamos buscando.

Hexadecimal

Conversão de Decimal para Hexadecimal

Para converter de decimal para hexadecimal, procede-se do mesmo modo que na conversão decimal-binário. Basta agora dividir por 16 e não mais por 2.

       1985 | 16
        385   124 | 16
          1   112    7
               12
       7 12 1 = 7 C 1 ? 7C1

Para obter o resultado juntamos o resultado da última divisão com o resto das divisões anteriores na sequência, aqui temos que transformar qualquer número maior que 9 em suas respectivas representações alfabéticas. Como em nosso exemplo temo os respectivos resultados, 7, 12 e 1, temos que transformar 12 em C, seu correspondente alfabético. Assim o resultado é igual a 1985 decimal é igual a 7C1 em hexadecimal.

Conversão de Hexadecimal para Decimal Para realizar a conversão realizamos os seguintes passos:

Primeiro transformamos cada dígito alfabético em número. assim o C será convertido para 12 e os números ficarão 7, 12 e 1.

Agora multiplicamos cada número por 16m, onde m é casa decimal onde ele se encontra, sendo que o dígito mais a direita é 0.

(7 * 16²) + (12 * 16¹) + (1 * 160) = (7 * 256) + (12 * 16) + (1) = 1792 + 192 + 1 = 1985

Obtemos assim o resultado esperado. O número 7C1 convertido para 1985.

Octal

Conversão de Decimal para Octal Utiliza-se divisão sucessiva para encontrar o valor octal a partir o número decimal. Dividimos sucessivamente o número 1985 até encontrarmos restos que sejam menores ou iguais a oito.

      1985 | 8
        385   248 | 8
         65    08   31 | 8
          1     0    7   3

Resultado da divisão 3701. Obtemos esse número juntando o resultado da última divisão e o resto das divisões anteriores.

Conversão de Octal para Decimal

       3         7        0        1
     83 * 3   8² * 7  8¹ * 0  80 * 1
              +        +        +
      1536      448      0        1
                   =
                  1985

Conexões do hardware

Uma conexão para comunicação em série é feita através de um cabo ou grupo de cabos utilizados para transferir informações entre a CPU e um dispositivo externo como o mouse e o teclado, um modem, um digitalizador (scanner) e alguns tipos de impressora. Esse tipo de conexão transfere um bit de dado de cada vez, muitas vezes de forma lenta. A vantagem de transmissão em série é que é mais eficaz a longas distâncias.

Uma conexão para comunicação em paralelo é feita através de um cabo ou grupo de cabos utilizados para transferir informações entre a CPU e um periférico como modem externo, utilizado em conexões discadas de acesso a rede, alguns tipos de impressoras, um disco rigido externo dentre outros. Essa conexão transfere oito bits de dado de cada vez, ainda assim hoje em dia sendo uma conexão mais lenta quea as demais.

Uma conexão para comunicação USB é feita através de um cabou ou um conjunto de cabos que são utilizados para trocar informações entre a CPU e um periférico como webcams, um teclado (computador, um mouse, uma camera digital, um pda, um mp3 player. Ou que se utilizam da conexão para armazenar dados como por exemplo um pen drive. As conexões USBs se tornaram muito populares devido ao grande número de dispositivos que podiam ser conectadas a ela e a utilização do padrão PnP (Plug and Play). A conexão USB também permite prover a alimentação elétrica do dispositivo conectada a ela.

Arquitecturas de computadores

A arquitectura dos computadores pode ser definida como "as diferenças na forma de fabricação dos computadores".

Com a popularização dos computadores houve a necessidade de um equipamento interagir com o outro, surgindo a necessidade de se criar um padrão. Em meados da década de 1980, apenas duas "arquitecturas" resistiram ao tempo e se popularizaram foram: o PC (Personal Computer ou em português Computador Pessoal), desenvolvido pela empresa IBM e Macintosh (carinhosamente chamado de Mac) desenvolvido pela empresa Apple.

Como o IBM-PC se tornou a arquitetura "dominante" na época, acabou tornando-se padrão para os computadores que conhecemos hoje.

Arquitetura aberta

A arquitectura aberta (atualmente mais utilizada, criada inicialmente pela IBM) é a mais aceita atualmente, e consiste em permitir que outras empresas fabriquem computadores com a mesma arquitectura, permitindo que o usuário tenha uma gama maior de opções e possa montar seu próprio computador de acordo com suas necessidades e com custos que se enquadrem com cada usuário.

Arquitectura fechada

A arquitectura fechada consiste em não permitir o uso da arquitetura por outras empresas, ou senão ter o controle sobre as empresas que fabricam computadores dessa arquitectura. Isso faz com que os conflitos de hardware diminuam muito, fazendo com que o computador funcione mais rápido e aumentando a qualidade do computador. No entanto, nesse tipo de arquitectura, o utilizador está restringido a escolher de entre os produtos da empresa e não pode montar o seu próprio computador.

Neste momento a Apple não pertence exactamente a uma arquitectura fechada, mas a ambas as arquitecturas, sendo a única empresa que produz computadores que podem correr o seu sistema operativo de forma legal, mas também fazendo parte do mercado de compatíveis IBM.

Principais componentes

  • 1 Microprocessador (Intel, AMD e VIA)
  • 2 Disco rígido (memória de massa, não volátil, utilizada para escrita e armazenamento dos dados)
  • 3 Periféricos (impressora, scanner, webcam, etc.)
  • 4 Softwares (sistema operativo, softwares específicos)
  • 5 BIOS ou EFI
  • 6 Barramento
  • 7 Memória RAM
  • 8 Dispositivos de multimídia (som, vídeo, etc.)
  • 9 Memórias Auxiliares (hd, cdrom, floppy, etc.)
  • 10 Memória cache

Redes

Existem alguns hardwares que dependem de redes para que possam ser utilizados, telefones, celulares, maquinas de cartão de crédito, as placas modem, os modems ADSL e Cable, os Acess points, roteadores, entre outros.

A criação de alguns hardwares capazes de conectar dois ou mais hardwares possibilitou a existência de redes de hardware, a criação de redes de computadores e da rede mundial de computadores (internet) é hoje um dos maiores estímulos para que as pessoas adquiram hardwares de computação. [1]

 

Overclock

Overclock é uma expressão sem tradução (seria algo como sobre-pulso (de disparo) ou ainda aumento do pulso). Pode-se definir o overclock como o ato de aumentar a frequência de operação de um componente (em geral chips) que compõe um dispositivo (VGA ou mesmo CPU) no intuito de obter ganho de desempenho. Existem várias formas de efetuar o overclock, uma delas é por software e outra seria alterando a BIOS do dispositivo.

Exemplos de hardware

  • Caixas de som
  • Cooler
  • Dissipador de calor
  • CPU ou Microprocessador
  • Dispositivo de armazenamento (CD/DVD/Blu-ray, Disco Rídido (HD), pendrive/cartão de memória)
  • Estabilizador
  • Gabinete
  • Hub ou Concentrador
  • Impressora
  • Joystick
  • Memória RAM
  • Microfone
  • Modem
  • Monitor
  • Mouse
  • No-Break ou Fonte de alimentação ininterrupta
  • Placa de captura
  • Placa sintonizadora de TV
  • Placa de som
  • Placa de vídeo
  • Placa-mãe
  • Scanner ou Digitalizador
  • Teclado
  • Webcam

Ligações externas

  • The history of computing project — Hardware (em inglês)
  • Apple-History (em inglês)
  • Microsoft Corporation — História do Hardware (em inglês)
  • Mendes, Douglas Rocha. Redes de Computadores. Em Livraria Cultura (em português)
  • Evolução das portas de comunicação (em português)

Obtida de "http://pt.wikipedia.org/w/index.php?title=Hardware&oldid=27726179"

Software

 
Um assistente pessoal digital.
Um computador pessoal.
Columbia, um supercomputador da NASA.

Computador é uma máquina capaz de variados tipos de tratamento automático de informações ou processamento de dados. Exemplos de computadores incluem os relógios de forma geral, o ábaco, a régua de cálculo, as calculadoras de forma geral, o computador analógico e o computador digital. Um computador pode prover-se de inúmeros atributos, dentre eles armazenamento de dados, processamento de dados, cálculo em grande escala, desenho industrial, tratamento de imagens gráficas, realidade virtual, entretenimento e cultura.

No passado, o termo já foi aplicado a pessoas responsáveis por algum cálculo. Em geral, entende-se por computador um sistema físico que realiza algum tipo de computação. Existe ainda o conceito matemático rigoroso, utilizado na teoria da computação.

Assumiu-se que os computadores pessoais e laptops são ícones da Era da Informação[1]; e isto é o que muitas pessoas consideram como "computador". Entretanto, atualmente as formas mais comuns de computador em uso são os sistemas embarcados, pequenos dispositivos usados para controlar outros dispositivos, como robôs, câmeras digitais ou brinquedos.

Índice

  • 1 História
    • 1.1 As primeiras máquinas de computar
    • 1.2 Babbage
    • 1.3 A máquina de tabular
    • 1.4 Os primeiros computadores de uso geral
  • 2 Arquitetura de hardware
    • 2.1 Processamento
    • 2.2 Memória
      • 2.2.1 Memória primária
      • 2.2.2 Memória secundária
      • 2.2.3 Memória terciária
    • 2.3 Entrada e saída
    • 2.4 Barramentos
  • 3 Arquitetura de software
    • 3.1 Instruções
    • 3.2 Programas
    • 3.3 Sistema operacional
  • 4 Impactos do computador na sociedade
  • 5 Classificação dos computadores
    • 5.1 Quanto à Capacidade de Processamento
    • 5.2 Quanto às suas Funções
  • 6 Notas e referências
  • 7 Ver também
  • 8 Ligações externas

História


As primeiras máquinas de computar

Pascaline, máquina calculadora feita por Blaise Pascal.

John Napier (1550-1617), escocês inventor dos logaritmos, também inventou os ossos de Napier, que eram tabelas de multiplicação gravadas em bastão, o que evitava a memorização da tabuada.

A primeira máquina de verdade foi construída por Ediin, sendo capaz de somar, subtrair, multiplicar e dividir. Essa máquina foi perdida durante a guerra dos trinta anos, sendo que recentemente foi encontrada alguma documentação sobre ela. Durante muitos anos nada se soube sobre essa máquina, por isso, atribuía-se a Blaise Pascal (1623-1662) a construção da primeira máquina calculadora, que fazia apenas somas e subtrações.

A máquina Pascal foi criada com objetivo de ajudar seu pai a computar os impostos em Rouen, França. O projeto de Pascal foi bastante aprimorado pelo matemático alemão Gottfried Wilhelm Leibniz (1646-1726), que também inventou o cálculo, o qual sonhou que, um dia no futuro, todo o raciocínio pudesse ser substituído pelo girar de uma simples alavanca.

Todas essas máquinas, porém, estavam longe de ser um computador de uso geral, pois não eram programáveis. Isto quer dizer que a entrada era feita apenas de números, mas não de instruções a respeito do que fazer com os números.

Babbage

Réplica (parte) do Calculador Diferencial criado por Charles Babbage.

A origem da idéia de programar uma máquina vem da necessidade de que as máquinas de tecer produzissem padrões de cores diferentes. Assim, no século XVIII foi criada uma forma de representar os padrões em cartões de papel perfurado, que eram tratados manualmente. Em 1801, Joseph Marie Jacquard (1752-1834) inventa um tear mecânico, com uma leitora automática de cartões.

A ideia de Jacquard atravessou o Canal da Mancha, onde inspirou Charles Babbage (1792-1871), um professor de matemática de Cambridge, a desenvolver uma máquina de “tecer números”, uma máquina de calcular onde a forma de calcular pudesse ser controlada por cartões.

Tudo começou com a tentativa de desenvolver uma máquina capaz de calcular polinômios por meio de diferenças, o calculador diferencial. Enquanto projetava seu calculador diferencial, a idéia de Jacquard fez com que Babbage imaginasse uma nova e mais complexa máquina, o calculador analítico, extremamente semelhante ao computador atual.

Sua parte principal seria um conjunto de rodas dentadas, o moinho, formando uma máquina de somar com precisão de cinquenta dígitos. As instruções seriam lidas de cartões perfurados. Os cartões seriam lidos em um dispositivo de entrada e armazenados, para futuras referências, em um banco de mil registradores. Cada um dos registradores seria capaz de armazenar um número de cinquenta dígitos, que poderiam ser colocados lá por meio de cartões a partir do resultado de um dos cálculos do moinho.

Além disso tudo, Babbage imaginou a primeira máquina de impressão, que imprimiria os resultados dos cálculos, contidos nos registradores. Babbage conseguiu, durante algum tempo, fundos para sua pesquisa, porém não conseguiu completar sua máquina no tempo prometido e não recebeu mais dinheiro. Hoje, partes de sua máquina podem ser vistas no Museu Britânico, que também construiu uma versão completa, utilizando as técnicas disponíveis na época.

Junto com Babbage, trabalhou a jovem Ada Augusta, filha do poeta Lord Byron, conhecida como Lady Lovelace e Ada Lovelace. Ada foi a primeira programadora da história, projetando e explicando, a pedido de Babbage, programas para a máquina inexistente. Ada inventou os conceitos de subrotina, uma seqüência de instruções que pode ser usada várias vezes, loop, uma instrução que permite a repetição de uma seqüência de cartões, e do salto condicional, que permite saltar algum cartão caso uma condição seja satisfeita.

Ada Lovelace e Charles Babbage estavam avançados demais para o seu tempo, tanto que até a década de 1940, nada se inventou parecido com seu computador analítico. Até essa época foram construídas muitas máquinas mecânicas de somar destinadas a controlar negócios (principalmente caixas registradoras) e algumas máquinas inspiradas na calculadora diferencial de Babbage, para realizar cálculos de engenharia (que não alcançaram grande sucesso).

A máquina de tabular

O próximo avanço dos computadores foi feito pelo americano Herman Hollerith (1860-1929), que inventou uma máquina capaz de processar dados baseada na separação de cartões perfurados (pelos seus furos). A máquina de Hollerith foi utilizada para auxiliar no censo de 1890, reduzindo o tempo de processamento de dados de sete anos, do censo anterior, para apenas dois anos e meio. Ela foi também pioneira ao utilizar a eletricidade na separação, contagem e tabulação dos cartões.

A empresa fundada por Hollerith é hoje conhecida como International Business Machines, ou IBM.

Os primeiros computadores de uso geral

Z1, computador eletro-mecânico construído por Konrad Zuse.

O primeiro computador eletro-mecânico foi construído por Konrad Zuse (1910–1995). Em 1936, esse engenheiro alemão construiu, a partir de relês que executavam os cálculos e dados lidos em fitas perfuradas, o Z1. Zuse tentou vender o computador ao governo alemão, que desprezou a oferta, já que não poderia auxiliar no esforço de guerra. Os projetos de Zuse ficariam parados durante a guerra, dando a chance aos americanos de desenvolver seus computadores.

Foi na Segunda Guerra Mundial que realmente nasceram os computadores atuais. A Marinha americana, em conjunto com a Universidade de Harvard, desenvolveu o computador Harvard Mark I, projetado pelo professor Howard Aiken, com base no calculador analítico de Babbage. O Mark I ocupava 120m³ aproximadamente, conseguindo multiplicar dois números de dez dígitos em três segundos.

Simultaneamente, e em segredo, o Exército Americano desenvolvia um projeto semelhante, chefiado pelos engenheiros J. Presper Eckert e John Mauchy, cujo resultado foi o primeiro computador a válvulas, o Eletronic Numeric Integrator And Calculator (ENIAC)[2], capaz de fazer quinhentas multiplicações por segundo. Tendo sido projetado para calcular trajetórias balísticas, o ENIAC foi mantido em segredo pelo governo americano até o final da guerra, quando foi anunciado ao mundo.

ENIAC, computador desenvolvido pelo Exército Americano.

No ENIAC, o programa era feito rearranjando a fiação em um painel. Nesse ponto John von Neumann propôs a idéia que transformou os calculadores eletrônicos em “cérebros eletrônicos”: modelar a arquitetura do computador segundo o sistema nervoso central. Para isso, eles teriam que ter três características:

  1. Codificar as instruções de uma forma possível de ser armazenada na memória do computador. Von Neumann sugeriu que fossem usados uns e zeros.
  2. Armazenar as instruções na memória, bem como toda e qualquer informação necessária a execução da tarefa, e
  3. Quando processar o programa, buscar as instruções diretamente na memória, ao invés de lerem um novo cartão perfurado a cada passo.
Visão simplificada da arquitetura de Von Neumann.

Este é o conceito de programa armazenado, cujas principais vantagens são: rapidez, versatilidade e automodificação. Assim, o computador programável que conhecemos hoje, onde o programa e os dados estão armazenados na memória ficou conhecido como Arquitetura de von Neumann.

Para divulgar essa idéia, von Neumann publicou sozinho um artigo. Eckert e Mauchy não ficaram muito contentes com isso, pois teriam discutido muitas vezes com ele. O projeto ENIAC acabou se dissolvendo em uma chuva de processos, mas já estava criado o computador moderno.

Arquitetura de hardware

LEGENDA: 01- Monitor; 02- Placa-Mãe; 03- Processador; 04- Memória RAM; 05- Placas de Rede, Placas de Som, Vídeo, Fax...; 06- Fonte de Energia; 07- Leitor de CDs e/ou DVDs; 08- Disco Rígido (HD); 09- Mouse (Rato); 10- Teclado.

Mesmo que a tecnologia utilizada nos computadores digitais tenha mudado dramaticamente desde os primeiros computadores da década de 1940 (veja história do hardware), quase todos os computadores atuais ainda utilizam a arquitetura de von Neumann proposta por John von Neumann.

Seguindo a arquitetura, os computadores possuem quatro sessões principais, a unidade lógica e aritmética, a unidade de controle, a memória e os dispositivos de entrada e saída. Essas partes são interconectadas por barramentos. A unidade lógica e aritmética, a unidade de controle, os registradores e a parte básica de entrada e saída são conhecidos como a CPU.

Alguns computadores maiores diferem do modelo acima em um aspecto principal - eles têm múltiplas CPUs trabalhando simultaneamente. Adicionalmente, poucos computadores, utilizados principalmente para pesquisa e computação científica, têm diferenças significativas do modelo acima, mas eles não tem grande aplicação comercial.

Processamento


O processador (ou CPU) é uma das partes principais do hardware do computador e é responsável pelos cálculos, execução de tarefas e processamento de dados. A velocidade com que o computador executa as tarefas ou processa dados está diretamente ligada à velocidade do processador. As primeiras CPUs eram constituídas de vários componentes separados, mas desde meados da década de 1970 as CPUs vêm sendo manufaturadas em um único circuito integrado, sendo então chamadas microprocessadores.

A unidade lógica e aritmética (ULA) é a unidade central do processador, que realmente executa as operações aritméticas e lógicas entre dois números. Seus parâmetros incluem, além dos números operandos, um resultado, um comando da unidade de controle, e o estado do comando após a operação. O conjunto de operações aritméticas de uma ULA pode ser limitado a adição e subtração, mas também pode incluir multiplicação, divisão, funções trigonométricas e raízes quadradas. Algumas podem operar somente com números inteiros, enquanto outras suportam o uso de ponto flutuante para representar números reais (apesar de possuírem precisão limitada).

A unidade de controle é a unidade do processador que armazena a posição de memória que contém a instrução corrente que o computador está executando, informando à ULA qual operação a executar, buscando a informação (da memória) que a ULA precisa para executá-la e transferindo o resultado de volta para o local apropriado da memória. Feito isto, a unidade de controle vai para a próxima instrução (tipicamente localizada na próxima posição da memória, a menos que a instrução seja uma instrução de desvio informando que a próxima instrução está em outra posição.

A CPU também contém um conjunto restrito de células de memória chamados registradores que podem ser lidos e escritos muito mais rapidamente que em outros dispositivos de memória. São usados frequentemente para evitar o acesso contínuo à memória principal cada vez que um dado é requisitado.

Memória


A memória é um dispositivo que permite ao computador armazenar dados por certo tempo. Atualmente o termo é geralmente usado para definir as memórias voláteis, como a RAM, mas seu conceito primordial também aborda memórias não voláteis, como o disco rígido. Parte da memória do computador é feita no próprio processador; o resto é diluído em componentes como a memória RAM, memória cache, disco rígido e leitores de mídias removíveis, como disquete, CD e DVD.

Nos computadores modernos, cada posição da memória é configurado para armazenar grupos de oito bits (chamado de um byte). Cada byte consegue representar 256 números diferentes; de 0 a 255 ou de -128 a +127. Para armazenar números maiores pode-se usar diversos bytes consecutivos (geralmente dois, quatro ou oito). Quando números negativos são armazenados, é utilizada a notação de complemento para dois.

A memória do computador é normalmente dividida entre primária e secundária, sendo possível também falar de uma memória "terciária".

Memória primária


A memória primária é aquela acessada diretamente pela Unidade Lógica e Aritmética. Tradicionalmente essa memória pode ser de leitura e escrita (RAM) ou só de leitura (ROM). Atualmente existem memórias que podem ser classificadas como preferencialmente de leitura, isso é, variações da memória ROM que podem ser regravadas, porém com um número limitado de ciclos e um tempo muito mais alto.

Normalmente a memória primária se comunica com a ULA por meio de um barramento ou canal de dados. A velocidade de acesso a memória é um fator importante de custo de um computador, por isso a memória primária é normalmente construída de forma hierárquica em um projeto de computador. Parte da memória, conhecida como cache fica muito próxima à ULA, com acesso muito rápido. A maior parte da memória é acessada por meio de vias auxiliares.

Normalmente a memória é nitidamente separada da ULA em uma arquitetura de computador. Porém, os microprocessadores atuais possuem memória cache incorporada, o que aumenta em muito sua velocidade.

Memória RAM
Memória RAM de um PC.

A memória RAM (Random Access Memory) é uma sequência de células numeradas, cada uma contendo uma pequena quantidade de informação. A informação pode ser uma instrução para dizer ao computador o que fazer. As células podem conter também dados que o computador precisa para realizar uma instrução. Qualquer célula pode conter instrução ou dado, assim o que em algum momento armazenava dados pode armazenar instruções em outro momento. Em geral, o conteúdo de uma célula de memória pode ser alterado a qualquer momento, a memória RAM é um rascunho e não um bloco de pedra.

As memórias RAM são denominadas genericamente de DRAM (RAM dinâmica), pelo fato de possuírem uma característica chamada refrescamento de memória, que tem a finalidade de regravar os dados armazenados em intervalos regulares de tempo,o que é necessário para a manutenção de seu conteúdo. O tamanho de cada célula, e o número de células, varia de computador para computador, e as tecnologias utilizadas para implementar a memória RAM variam bastante. Atualmente o mais comum é a implementação em circuitos integrados.

Memória ROM
Memória ROM de um PC.

A memória ROM (Read-Only Memory) é uma memória que só pode ser lida e os dados não são perdidos com o desligamento do computador. A diferença entre a memória RAM e a ROM é que a RAM aceita gravação, regravação e perda de dados. Mesmo se for enviada uma informação para ser gravada na memória ROM, o procedimento não é executado (esta característica praticamente elimina a criação de vírus que afetam a ROM).

Um software gravado na ROM recebe o nome de firmware. Em computadores da linha IBM-PC eles são basicamente três, que são acessados toda vez que ligamos o computador, a saber: BIOS, POST e SETUP.

Existe uma variação da ROM chamada memória preferencialmente de leitura que permite a re-gravação de dados. São as chamadas EPROM (Erasable Programmable Read Only Memory) ou EEPROM (Electrically Erasable Programmable Read-Only Memory).

Memória secundária

A memória secundária ou memória de massa é usada para gravar grande quantidade de dados, que não são perdidos com o desligamento do computador, por um período longo de tempo. Exemplos de memória de massa incluem o disco rígido e mídias removíveis como o CD-ROM, o DVD, o disquete e o pen drive.

Normalmente a memória secundária não é acessada diretamente pela ULA, mas sim por meio dos dispositivos de entrada e saída. Isso faz com que o acesso a essa memória seja muito mais lento do que o acesso a memória primária. Para isso cada dispositivo encontra-se com um buffer de escrita e leitura para melhoramento de desempenho.

Supostamente, consideramos que a memória terciária está permanentemente ligada ao computador.

Memória terciária

Fita magnética para gravação de dados.

Sistemas mais complexos de computação podem incluir um terceiro nível de memória, com acesso ainda mais lento que o da memória secundária. Um exemplo seria um sistema automatizado de fitas contendo a informação necessária. A memória terciária não é nada mais que um dispositivo de memória secundária ou memória de massa colocado para servir um dispositivo de memória secundária.

As tecnologias de memória usam materiais e processos bastante variados. Na informática, elas têm evoluído sempre em direção de uma maior capacidade de armazenamento, maior miniaturização, maior rapidez de acesso e confiabilidade, enquanto seu custo cai constantemente.

Entretanto, a memória de um computador não se limita a sua memoria individual e física, ela se apresenta de maneira mais ampla, e sem lugar definido (desterritorializada). Temos possibilidades de armazenar em diversos lugares na rede, podemos estar em Cairo e acessar arquivos que foram armazenados em sítios no Brasil.

É crescente a tendência para o armazenamento das informações na memória do espaço virtual, ou o chamado ciberespaço, através de discos virtuais e anexos de e-mails. Isto torna possível o acesso a informação a partir de qualquer dispositivo conectado à Internet.

Entrada e saída


Mouse

Os dispositivos de entrada e saída (E/S) são periféricos usados para a interação homem-computador. Nos computadores pessoais modernos, dispositivos comuns de entrada incluem o mouse (ou rato), o teclado, o digitalizador e a webcam. Dispositivos comuns de saída incluem a caixa de som, o monitor[3] e a impressora.

O que todos os dispositivos de entrada têm em comum é que eles precisam codificar (converter) a informação de algum tipo em dados que podem ser processados pelo sistema digital do computador. Dispositivos de saída por outro lado, descodificam os dados em informação que é entendida pelo usuário do computador. Neste sentido, um sistema de computadores digital é um exemplo de um sistema de processamento de dados.

Processo este, que consiste basicamente em três fases: Entrada, Processameto e Saída. Entendemos por entrada todo o procedimento de alimentação de informações, que por sua vez serão processadas (fase de processamento) e após isso, são repassadas as respostas ao usuário (saída).

Podemos ter dispositivos que funcionam tanto para entrada como para saída de dados, como o modem e o drive de disquete. Atualmente, outro dispositivo de híbrido de dados é a rede de computadores.

Blocos funcionais de um computador.

Barramentos

Para interligar todos esses dispositivos existe uma placa de suporte especial, a placa-mãe, que através de barramentos, fios e soquetes conecta todos os dispositivos. Sua função inclui também a conexão de placas auxiliares que sub-controlam os periféricos de entrada e saída, como a placa de som (conecta-se com a caixa de som), a placa de vídeo (conecta-se com o monitor), placa de rede (conecta-se com a LAN) e o fax-modem (conecta-se com a linha telefônica).

Nota-se que o barramento entre os componentes não constitui uma conexão ponto-a-ponto; ele pode conectar logicamente diversos componentes utilizando o mesmo conjunto de fios. O barramento pode utilizar uma interface serial ou uma interface paralela.

Outros equipamentos adicionais usados em conjunto com a placa-mãe são o dissipador, um pequeno ventilador para resfriar o processador, e a fonte de energia, responsável pela alimentação de energia de todos os componentes do computador.

Arquitetura de software

Instruções

A principal característica dos computadores modernos, o que o distingue de outras máquinas, é que pode ser programado. Isto significa que uma lista de instruções pode ser armazenada na memória e executa posteriormente.

Diagrama de linguagem de programação compilada em linguagem de máquina.

As instruções executadas na ULA discutidas acima não são um rico conjunto de instruções como a linguagem humana. O computador tem apenas um limitado número de instruções bem definidas. Um exemplo típico de uma instrução existente na maioria dos computadores é "copie o conteúdo da posição de memória 123 para a posição de memória 456", "adicione o conteúdo da posição de memória 510 ao conteúdo da posição 511 e coloque o resultado na posição 507" e "se o conteúdo da posição 012 é igual a 0, a próxima instrução está na posição 678".

Instruções são representadas no computador como números - o código para "copiar" poderia ser 007, por exemplo. O conjunto particular de instruções que um computador possui é conhecido como a linguagem de máquina do computador. Na prática, as pessoas não escrevem instruções diretamente na linguagem de máquina mas em uma linguagem de programação, que é posteriormente traduzida na linguagem de máquina através de programas especiais, como interpretadores e compiladores. Algumas linguagens de programação se aproximam bastante da linguagem de máquina, como o assembly (linguagem de baixo nível); por outro lado linguagens como o Prolog são baseadas em princípios abstratos e se distanciam bastante dos detalhes da operação da máquina (linguagens de alto nível).

A execução das instruções é tal como ler um livro. Apesar da pessoa normalmente ler cada palavra e linha em sequência, é possível que algumas vezes ela volte para pontos anteriores do texto de interesse ou passe sessões não interessantes. Da mesma forma, um computador que segue a arquitetura de von Neumann executa cada instrução de forma sequencial, da maneira como foram armazenadas na memória. Mas, através de instruções especiais, o computador pode repetir instruções ou avançá-las até que alguma condição seja satisfeita. Isso é chamado controle do fluxo e é o que permite que o computador realize tarefas repetitivamente sem intervenção humana.

Uma pessoa usando uma calculadora pode realizar operações aritméticas como somar número apertando poucos botões. Mas somar sequencialmente os números de um a mil iria requerer apertar milhares de vezes os botões, com uma alta probabilidade de erro em alguma iteração. Por outro lado, computadores podem ser programados para realizar tal tarefa com poucas instruções, e a execução e extremamente rápida.

Mas os computadores não conseguem pensar, eles somente executam as instruções que fornecemos. Um humano instruído, ao enfrentar o problema da adição explicado anteriormente, perceberia em algum momento que pode reduzir o problema usando a seguinte equação:

e chegar na mesma resposta correta com pouco trabalho. Alguns computadores modernos conseguem tomar algumas decisões para acelerar a execução dos programas ao prever instruções futuras e reorganizar a ordem de instruções sem modificar seu significado. Entretanto, os computadores ainda não conseguem determinar instintivamente uma maneira mais eficiente de realizar sua tarefa, pois não possuem conhecimento para tal [4].

Programas


Programas são simplesmente grandes listas de instruções para o computador executar, tais com tabelas de dados. Muitos programas de computador contêm milhões de instruções, e muitas destas instruções são executadas repetidamente. Um computador pessoal típico (no ano de 2003) podia executar cerca de dois a três bilhões de instruções por segundo. Os computadores não têm a sua extraordinária capacidade devido a um conjunto de instruções complexo. Apesar de existirem diferenças de projeto com CPU com um maior número de instruções e mais complexas, os computadores executam milhões de instruções simples combinadas, escritas por bons "programadores". Estas instruções combinadas são escritas para realizar tarefas comuns como, por exemplo, desenhar um ponto na tela. Tais instruções podem então ser utilizadas por outros programadores.

Hoje em dia, muitos computadores aparentam executar vários programas ao mesmo tempo, o que é normalmente conhecido como multitarefa. Na realidade, a CPU executa as instruções de um programa por um curto período de tempo e, em seguida, troca para um outro programa e executa algumas de suas instruções. Isto cria a ilusão de vários programas sendo executados simultaneamente através do compartilhamento do tempo da CPU entre os programas. Este compartilhamento de tempo é normalmente controlado pelo sistema operacional. Nos casos em que o computador possui dois núcleos de processamento, cada núcleo processa informações de um programa, diminuindo assim o tempo de processamento.

Sistema operacional


Um computador sempre precisa de no mínimo um programa em execução por todo o tempo para operar. Tipicamente este programa é o sistema operacional (ou sistema operativo), que determina quais programas vão executar, quando, e que recursos (como memória e E / S) ele poderá utilizar. O sistema operacional também fornece uma camada de abstração sobre o hardware, e dá acesso aos outros programas fornecendo serviços, como programas gerenciadores de dispositivos ("drivers") que permitem aos programadores escreverem programas para diferentes máquinas sem a necessidade de conhecer especificidades de todos os dispositivos eletrônicos de cada uma delas.

Impactos do computador na sociedade

Visualização gráfica de várias rotas em uma porção da Internet mostrando a escalabilidade da rede

Segundo Pierre Lévy, no livro "Cibercultura", o computador não é mais um centro, e sim um nó, um terminal, um componente da rede universal calculante. Em certo sentido, há apenas um único computador, mas é impossível traçar seus limites, definir seu contorno. É um computador cujo centro está em toda parte e a circunferência em lugar algum, um computador hipertextual, disperso, vivo, fervilhante, inacabado: o ciberespaço em si.

O computador evoluiu em sua capacidade de armazenamento de informações, que é cada vez maior, o que possibilita a todos um acesso cada vez maior a informação. Isto significa que o computador agora representa apenas um ponto de um novo espaço, o ciberespaço. Essas informações contidas em computadores de todo mundo e presentes no ciberespaço, possibilitam aos usuários um acesso a novos mundos, novas culturas, sem a locomoção física. Com todo este armazenamento de textos, imagens, dados, etc.

Houve também uma grande mudança no comportamento empresarial, com uma forte redução de custo e uma descompartimentalização das mesmas. Antes o que era obstante agora é próximo, as máquinas, componentes do ciberespaço, com seus compartimentos de saída, otimizaram o tempo e os custos.

Classificação dos computadores

Computadores podem ser classificados de acordo com a função que exercem ou pelas suas dimensões (capacidade de processamento). A capacidade de processamento é medida em flops.

Quanto à Capacidade de Processamento

  • Microcomputador - Também chamado Computador pessoal ou ainda Computador doméstico. Segundo a Lista Top 10 Flops, chegam atualmente aos 107,58 GFlops[5] (Core i7 980x da Intel).
  • Console ou videogame - Ao mesmo tempo função e capacidade. Não chega a ser um computador propriamente dito, mas os atuais PlayStation 3 e Xbox 360 alcançam 218 e 115 GFlops respectivamente.
  • Mainframe - Um computador maior em tamanho e mais poderoso. Segundo a Lista Top500 de jun/2010, ficam na casa dos TFlops (de 20 a 80 TFlops), recebendo o nome comercial de servidores (naquela lista), que na verdade é a função para a qual foram fabricados e não sua capacidade, que é de mainframe.
  • Supercomputador - Muito maior em dimensões, pesando algumas toneladas e capaz de, em alguns casos, efetuar cálculos que levariam 100 anos para serem calculados em um microcomputador. Seu desempenho ultrapassa 80 TFlops, chegando a 1.750 TFlops (1,75 PFlops)[6].

Quanto às suas Funções

  • Console ou videogame - Como dito não são computadores propriamente ditos, mas atualmente conseguem realizar muitas, senão quase todas, as funções dos computadores pessoais.
  • Servidor (server) - Um computador que serve uma rede de computadores. São de diversos tipos. Tanto microcomputadores quanto mainframes são usados como servidores.
  • Estação de trabalho (workstation) - Serve um único usuário e tende a possuir hardware e software não encontráveis em computadores pessoais, embora externamente se pareçam muito com os computadores pessoais. Tanto microcomputadores quanto mainframes são usados como estações de trabalho.
  • Sistema embarcado, computador dedicado ou computador integrado (embedded computer) - De menores proporções, é parte integrante de uma máquina ou dispositivo. Por exemplo uma unidade de comando da injeção eletrônica de um automóvel, que é específica para atuar no gerenciamento eletrônico do sistema de injeção de combustível e ignição. Eles são chamados de dedicados pois executam apenas a tarefa para a qual foram programados. Tendem a ter baixa capacidade de processamento, às vezes inferior aos microcomputadores.

Notas e referências

  1. ↑ SILVEIRA (2004) Inclusão Digital e Software Livre, p. 74.
  2. ↑ (em inglês) Karl Kempf (1961) Historical Monograph: Electronic Computers Within the Ordnance Corps, cap. 2, pp. 19-39. (Exército dos Estados Unidos da América)
  3. ↑ Alguns computadores, em especial PDAs, consideram a tela (considerada um monitor), também um dispositivo de entrada, sob forma de ecrã táctil.
  4. ↑ Existem tentativas para resolver essa limitação, e o campo de atuação de aprendizagem de máquina é conhecido na Ciência da Computação como Inteligência Artifical.
  5. ↑ Ranking do site Tom's Hardware (em inglês), medido com o SiSoftware Sandra 2010 Pro, com uma vasta gama de CPUs usadas em microcomputadores.
  6. ↑ Lista Top500 de jun/2010 (em inglês), com relação dos 500 mais poderosos supercomputadores.

Ver também

  • Computador doméstico
  • Computador pessoal
  • Mainframe
  • Notebook
  • Servidor
  • Sistema operacional
  • Supercomputador
  • Teoria da computação
  • Reciclagem de computadores

Ligações externas

  • O que é um computador? (em português)
  • Fotos e história de alguns modelos de computadores (em inglês)

Obtida de "http://pt.wikipedia.org/w/index.php?title=Computador&oldid=27757070"

Software

 

O teste de penetração é um método que avalia a segurança de um sistema de computador ou de uma rede, simulando um ataque de uma fonte maliciosa. O processo envolve uma análise nas atividades do sistema, que envolvem a busca de alguma vulnerabilidade em potencial que possa ser resultado de uma má configuração do sistema, falhas em hardwares/softwares desconhecidas, deficiência no sistema operacional ou técnicas contramedidas. Todas as análises submetidas pelos testes escolhidos são apresentadas no sistema, junto com uma avaliação do seu impacto e muitas vezes com uma proposta de resolução ou de uma solução técnica.

Índice

  • 1 Objetivo
  • 2 Testes caixa branca vs. caixa preta
  • 3 Sua aplicação
  • 4 Ver também
  • 5 Referências

Objetivo

O objetivo do teste de penetração é determinar a viabilidade de uma ataque e mensurar o seu impacto, caso seja bem sucedido se descoberto. Ele age como um componente na auditoria de segurança.

Testes caixa branca vs. caixa preta

Diagrama caixa-preta

Os testes de penetração podem ser realizados de várias maneiras.[1] A diferença mais comum é a quantidade de detalhes da implementação do sistema a ser testado, que estão disponíveis para os testadores.

O teste da caixa preta assume que não existe qualquer conhecimento prévio da infra-estrutura a ser testada. Sendo que o primeiro teste deve determinar a localização e extensão dos sistemas antes de iniciar a análise.

O teste da caixa branca assume que o testador possui total conhecimento da infra-estrutura a ser testada, incluindo o diagrama da rede, endereçamento IP e qualquer informação complementar.

Teste de caixa preta simulam um ataque de alguém que esteja familiarizado com o sistema, enquanto um teste de caixa branca simula o que pode acontecer durante o expediente de um trabalho ou depois de um "vazamento" de informações, em que o invasor tenha acesso ao código fonte, esquemas de rede e, possivelmente, até mesmo de algumas senhas.

Sua aplicação

Os serviços oferecidos por empresas contratadas para usar o teste de penetração, podem ser uma simples varredura na organização dos endereços IP, abrir/fechar portas ou fazer uma auditoria completa no escopo da rede em busca de vulnerabilidade.

Ver também

  • Backtrack Brasil http://www.backtrack.com.br
  • Backtrack
  • Segurança da informação

Referências

  1. ↑ http://msdn.microsoft.com/pt-br/magazine/cc507646.aspx
Obtida de "http://pt.wikipedia.org/w/index.php?title=Teste_de_penetra%C3%A7%C3%A3o&oldid=23832765"

Software

 

A Gestão de riscos (termo também conhecido como Risk Management) é um processo/disciplina utilizado há muito tempo no mundo dos negócios e que busca sempre o melhor equilíbrio entre riscos e custos de operações. Na área de TI ela é utilizada avaliando-se questões como tempo de downtime de operações e abrangendo diversas áreas que vão desde a parte lógica - softwares específicos que não podem ficar sem acesso (como banco de dados) até a parte estrutural (como rede/internet, servidores, armazenamento de dados e etc), além das questões de custos x benefícios a nível de investimento financeiro.

Fontes

  • http://www.virtue.com.br/blog/?p=26
  • http://en.wikipedia.org/wiki/Risk_management
  • http://www.itautec.com.br/iPortal/pt-BR/d6fb5de6-2f60-4750-b8e9-971d1fe0f635.htm
Obtida de "http://pt.wikipedia.org/w/index.php?title=Gest%C3%A3o_de_riscos_em_TI&oldid=21763491"

Software

 

O outsourcing em gestão é uma ferramenta administrativa em que o terceririzado realiza a atividade de gestão de recursos e atividades.

Índice

  • 1 Diferenças entre outsourcing convencional e de gestão
  • 2 Departamentos típicos de uma gestão terceirizada
  • 3 Ver também
  • 4 Ligações externas

Diferenças entre outsourcing convencional e de gestão

Enquanto que o outsourcing convencional é uma terceirização de serviços repetitivos - as chamadas "commodities", as atividades do outsourcing de gestão estão mais ligadas às questões gerenciais, incluindo formulação de orçamentos, auditoria, gerenciamento de contratos, etc.

Departamentos típicos de uma gestão terceirizada

Os departamentos que são os maiores alvos de uma gestão terceirizada de recursos e atividades são aquelas onde não fazem parte do core business da empresa e entre eles podemos citar:

  • Jurídico;
  • Compras/Procurement;
  • Segurança Corporativa;
  • Prevenção de perdas;
  • RH/Recrutamento/Seleção;
  • Logística.

Ver também

  • Gestão de riscos
  • Segurança corporativa
  • Segurança patrimonial

Ligações externas

  • White Paper - Outsourcing em Gestão de Segurança Corporativa v.2.0
  • White Paper - Segurança Condominial/Diretrizes para uma segurança eficaz
  • Citado em "Gestão Criativa: aprendendo com os mais bem-sucedidos empreendedores do mundo" / Victor Mirshawka, Victor Mirshawka Jr.. São Paulo: DVS Editora
Obtida de "http://pt.wikipedia.org/w/index.php?title=Outsourcing_em_gest%C3%A3o&oldid=23256978"

Software

 

AJAX (acrônimo em língua inglesa de Asynchronous Javascript and XML, em português "Javascript e XML Assíncronos") é o uso metodológico de tecnologias como Javascript e XML, providas por navegadores, para tornar páginas Web mais interativas com o usuário, utilizando-se de solicitações assíncronas de informações. Foi inicialmente desenvolvida pelo estudioso Jessé James Garret e mais tarde por diversas associações.

Índice

  • 1 Descrição
  • 2 Os quatro princípios de Ajax
    • 2.1 O navegador hospeda uma aplicação, e não conteúdo
    • 2.2 O servidor fornece dados, e não conteúdo
    • 2.3 A interação do utilizador com a aplicação pode ser flexível e contínua
    • 2.4 A codificação real requer disciplina
  • 3 Algumas tecnologias que fazem uso de AJAX
  • 4 Ver também
  • 5 Ligações externas

Descrição

AJAX não é um novo modelo para desenvolvimento web. Os navegadores implementam essa tecnologia desde o ano 2000(no mínimo). Porém sua popularização nos últimos anos tem também trazido consigo muitas outras melhorias para a Web. Tem estimulado a construção de aplicações Web mais dinâmicas e criativas. AJAX não é uma tecnologia, mas um conjunto de tecnologias conhecidas trabalhando juntas, cada uma fazendo sua parte, oferecendo novas funcionalidades. AJAX incorpora em seu modelo:

  • Exposição e interação dinâmica usando o DOM;
  • Intercâmbio e manipulação de dados usando XML e XSLT;
  • Recuperação assíncrona de dados usando o objeto XMLHttpRequest e XMLHttpResponse;
  • JavaScript fazendo a junção entre os elementos.

O modelo clássico de aplicação web trabalha assim: a maioria das ações do usuário na interface dispara uma solicitação HTTP para o servidor web. O servidor processa algo, recuperando dados, realizando cálculos, conversando com vários sistemas legados, e então retorna uma página HTML para o cliente. É um modelo adaptado do uso original da Web como um agente de hipertexto, porém o que faz a web boa para hipertexto não necessariamente a faz boa para aplicações de software.

Com a popularização de sistemas que funcionam inteiramente na Web e também com o aumento da velocidade das conexões banda larga, o problema da espera pelo envio e retorno da página inteira se tornou muito mais evidente para o usuário. Obviamente, se nós estivéssemos projetando a Web a partir do zero para aplicações, não faríamos com que os usuários esperassem em vão. Uma vez que a interface está carregada, por que a interação do usuário deveria parar a cada vez que a aplicação precisasse de algo do servidor? Na realidade, por que o usuário deveria ver a aplicação ir ao servidor toda vez?

As principais vantagens das aplicações que utilizam AJAX para determinadas requisições é que os dados trafegados pela rede são reduzidos e o usuário não precisa aguardar a página ser recarregada a cada interação com o servidor.

A popularização das tecnologias que o AJAX reúne foi muito importante para a criação do conceito Web 2.0, que até hoje gera grandes divisões entre os maiores pensadores da Web.

Apesar de não possuir nada inovador em sua essência, o uso de AJAX revolucionou a Web inteira, trazendo à tona muitos conceitos importantes para o desenvolvimento web.

Os quatro princípios de Ajax

O modelo clássico de aplicação baseado em páginas está relacionado com muitas das estruturas que nós usamos, e também em nossas maneiras de pensar. Vamos fazer uma análise de alguns minutos para descobrir o que são estas suposições essenciais e como necessitamos repensar estas idéias para entendermos Ajax suficientemente.

O navegador hospeda uma aplicação, e não conteúdo

Numa aplicação web clássica baseada em páginas, o navegador é efectivamente um terminal burro. Ele não sabe nada sobre o que o utilizador está realmente realizando em suas ações conseqüentes. Todas essas informações são retidas no servidor web, tipicamente na sessão do utilizador. Sessões de utilizador no lado servidor são comuns atualmente. Se a aplicação foi escrita em PHP, Plataforma Java, .NET, Ruby on Rails ou outra linguagem utilizada no desenvolvimento de aplicações para Web, a sessão no lado servidor faz parte da API padrão, assim como o controle de solicitações, respostas, e tipos de conteúdo (MIME).

Quando o utilizador entra ou de outra maneira inicia uma sessão, vários objetos são criados no servidor, representando, por exemplo, a cesta de compras e as credenciais de cliente do utilizador. Ao mesmo tempo, a página inicial é servida ao navegador, em um fluxo de marcações HTML que mistura um anúncio de apresentação padrão e dados específicos do utilizador juntos com o conteúdo, como por exemplo, uma lista de itens exibidos recentemente.

Toda vez que o utilizador interage com o sítio, um outro documento é enviado para o navegador, contendo a mesma mistura de cabeçalhos e dados. O navegador retira o documento anterior e exibe o novo, porque ele não sabe que o outro documento produz um resultado muito semelhante.

Quando o utilizador efetua a saída ou fecha o navegador, a aplicação sai e a sessão é destruída. Qualquer informação que o utilizador necessite ver na próxima vez que ele entrar terá que ser passada para a camada de persistência de dados em cada visita. Já em uma aplicação AJAX, parte da lógica da aplicação é movida para o navegador.

Neste novo cenário, quando o utilizador entra, um documento mais complexo é entregue ao navegador, uma grande proporção do qual é código JavaScript. Este documento permanecerá com o utilizador por toda a sessão, ainda que ele resolva provavelmente alterar sua aparência consideravelmente, enquanto o utilizador está interagindo com ele. Ele sabe como responder às informações inseridas pelo utilizador e é capaz de decidir se manipula a entrada do utilizador ele mesmo ou se passa uma solicitação para o servidor web (o qual tem acesso ao banco de dados do sistema e outros recursos), ou ainda, se faz uma combinação de ambos.

Ele também pode armazenar o estado, porque o documento continua persistindo sobre toda a sessão do usuário. Por exemplo, o conteúdo de uma cesta de compras pode ser armazenado no navegador, em vez de ser armazenado na sessão do servidor.

O servidor fornece dados, e não conteúdo

Como observamos, uma aplicação web clássica oferece a mesma mistura de alegorias, conteúdos e dados em todos os passos. Quando nosso usuário adiciona um item na cesta de compras, tudo que precisamos realmente é responder com o valor atualizado da cesta ou informar se alguma coisa deu errado.

Um carrinho de compra baseado em Ajax pode comportar-se de forma mais inteligente, por meio de remessas de solicitações assíncronas ao servidor. O cabeçalho, o histórico de navegação, e outras características do layout da página estão todas carregadas, portanto o servidor necessita enviar de volta somente os dados relevantes.

Uma aplicação AJAX poderia fazer isto de vários modos, como por exemplo, devolver um fragmento de JavaScript, um fluxo de texto simples, ou um pequeno documento XML. Nós mostraremos em detalhes as vantagens e desvantagens de cada um, mais a frente. É suficiente dizer por agora que qualquer um destes formatos será muito menor que a mistura de informações devolvida pela aplicação web clássica.

Em uma aplicação Ajax, o tráfego tem sua maior intensidade no início, com um largo e complexo cliente sendo entregue em uma única explosão, quando o usuário entra. As comunicações subseqüentes com o servidor são muito mais eficientes, de qualquer forma. Para uma aplicação breve, o tráfego cumulativo pode ser menor em uma aplicação de página web convencional. Mas conforme o tamanho médio do tempo de interação aumentar, o custo de largura de banda da aplicação Ajax torna-se menor do que sua aplicação clássica equivalente.

A interação do utilizador com a aplicação pode ser flexível e contínua

Um navegador web oferece duas maneiras de enviar entradas de dados para um outro computador: com os enlaces e formulários HTML.

Os hyperlinks podem ser carregados com parâmetros CGI (Common Gateway Interface – Interface de Comunicação Comum) apontando para páginas dinâmicas ou servlets. Eles podem estar vinculados com imagens e folhas de estilo (CSS) para oferecer uma pequena melhoria na interface, como por exemplo, definir efeitos quando o mouse estiver sobre eles.

Os controles de formulário oferecem um subconjunto básico de componentes padrões de interface com o usuário: caixas de texto, caixas de checagem e botões de rádio, além de listas de seleção. Entretanto estes controles não são suficientes. Não existem controles de seleção em árvores, grades para edição, ou caixas de combinação. Os formulários, assim como os hyperlinks, apontam para URLs residentes no servidor.

Alternativamente, os hyperlinks e os controles de formulário podem apontar para funções JavaScript. Isto é uma técnica comum em páginas web para prover uma validação de formulário rudimentar em JavaScript, verificando por campos vazios, valores fora de intervalo, e assim por diante, antes de submeter os dados para o servidor. Estas funções JavaScript existem somente enquanto a própria página existe e é substituída quando a página efetuar o seu envio.

Enquanto a página está sendo enviada, o usuário aguarda a sua resposta. A página anterior pode ainda estar visível por algum tempo, e o navegador pode até permitir que o usuário clique em qualquer um dos links visíveis, mas se assim for feito, produzirá resultados imprevisíveis e até entornar em uma confusão com a sessão no servidor. O usuário está normalmente aguardando a página ser atualizada que, frequentemente, possuem quase que as mesmas informações que lhes foram apanhadas instantes atrás. Adicionando um par de calças à cesta de compras não é razoável modificar as categorias em um nível acima por “roupas masculinas”, “roupas femininas”, “infantis” e “acessórios”.

Voltemos ao exemplo do carrinho de compras novamente. Devido ao facto de que nosso carrinho de compras em Ajax pode enviar dados assíncronamente, os utilizadores podem soltar os objectos dentro dele tão rápido quanto eles podem clicar. Se o código de nosso carrinho no lado cliente for robusto, ele tratará esta tarefa facilmente, e os usuários podem continuar com o que eles estão fazendo.

É claro que não existe nenhum carrinho para colocarmos as coisas, somente um objeto em sessão no servidor. Mas os usuários não querem saber sobre objetos de sessão enquanto estão fazendo compras, e a metáfora do carrinho provê uma descrição do mundo real mais confortável do que está acontecendo. Troca de contextos entre a metáfora e o acesso direto ao computador é uma distração para usuários. Aguardar uma página ser atualizada levará o usuário à realidade de estar sentado em um computador por um curto tempo, e nossa implementação em Ajax evita que isto ocorra. Fazer compras é uma atividade transitória, mas se considerarmos um domínio de negócios diferente, por exemplo, um cenário de assistência e atendimento intensivo ou uma tarefa de planejamento complexa, então o custo de interrupção da seqüência de trabalho em alguns poucos segundos, com uma atualização de página, é algo inviável.

A segunda vantagem de Ajax é que podemos associar eventos a um maior número de ações do usuário. Os conceitos mais sofisticados de interface com o usuário, assim como "arrastar e soltar", se tornam praticáveis, trazendo as experiências dessas interfaces em pé de igualdade com os controles de aplicações desktop. Da perspectiva de usabilidade, esta liberdade é importante não somente porque ela permite exercer nossa imaginação, mas porque nos permite combinar a interação do usuário e as solicitações ao servidor de maneira mais completa.

Para comunicar com o servidor em uma aplicação web clássica, necessitamos clicar em um hyperlink ou submeter um formulário, e então aguardar. No entanto, este método interrompe a interação com o usuário. Em contraste, a possibilidade de se comunicar com o servidor em resposta a um movimento ou arraste do mouse, ou até quando digitamos, habilita o servidor a trabalhar juntamente com o usuário. O Google Suggest é um exemplo muito simples e efetivo disto: responder às teclas pressionadas enquanto ele digita dentro da caixa de pesquisa, e então, comunicar com o servidor para recuperar e exibir uma lista de possíveis finalizações para as expressões, baseada nas pesquisas feitas por outros usuários do mecanismo de busca em todo o mundo.

A codificação real requer disciplina

Neste momento, as clássicas aplicações web fazem uso de JavaScript em certas ocasiões, para adicionar características avançadas de um programa, agregando-as nas páginas. O modelo baseado em páginas impede qualquer uma destas melhorias que provoque em um atraso longo demais, limitando sua utilidade. Isto fez com que JavaScript recebesse injustamente, uma reputação de algo banal – por má sorte da linguagem – e não sendo bem vista pelos desenvolvedores sérios.

Codificar uma aplicação Ajax é algo completamente diferente. O código que você fornece quando os usuários iniciam a aplicação deve executar até que eles encerrem-na, sem interrupção, sem diminuição de velocidade, e sem produção de escapes de memória. Se estivermos mirando no mercado de aplicações poderosas, então temos em vista muitas horas de intenso uso. Para atingirmos este objetivo, devemos escrever códigos de alto desempenho, e manuteníveis, usando a mesma disciplina e entendimento que é aplicado com sucesso às camadas do servidor.

A base de código será tipicamente mais ampla que qualquer código escrito para uma aplicação web clássica. Boas práticas na construção da base de código se tornam muito importantes. O código deve tornar-se, de preferência, responsabilidade de uma equipe do que apenas um indivíduo, criando edições de manutenibilidade, separações de interesses, e estilos e padrões de codificação comum. Uma aplicação Ajax, portanto, é uma porção de código funcionalmente complexa que comunica eficientemente com o servidor enquanto o usuário continua com seu trabalho. Ela é claramente uma descendência da aplicação clássica baseada em páginas.

Algumas tecnologias que fazem uso de AJAX

  • Google earth
  • Google maps
  • AWB

Ver também

  • ExtJS, framework de código aberto em Javascript com objetos para implementação de aplicações em Ajax
  • Mootools, framework de código aberto em Javascript para implementação de aplicações em Ajax
  • Rico, framework de código aberto para implementação de aplicações em Ajax
  • Prototype, framework de código aberto em Javascript com objetos para implementação de aplicações em Ajax
  • Jquery, framework de código aberto em Javascript
  • ScriptCase, framework para desenvolvimento de aplicações em PHP com Ajax
  • EasyAjaxTool, Framework de Código Aberto Ferramenta leve para usar ajax com qualquer linguagem de servidor.

Ligações externas

  • AJAX - Visão Conceitual
  • Cloning Google Suggest with AjaxAC
  • Ajax Tutorial Get, post, text, XML.
  • AJAX DWR tutorial
  • Wiki de padrões ajax (inglês)
  • AJAX Tool Framework de Código Aberto leve para usar ajax com qualquer linguagem de servidor.

Obtida de "http://pt.wikipedia.org/w/index.php?title=AJAX_(programa%C3%A7%C3%A3o)&oldid=27741809"

Software

 
Origem: Wikipédia, a enciclopédia livre.
Ruby on Rails


Boas vindas do Rails
Desenvolvedor Rails Core Team
Lançado em julho de 2004
Versão estável 3.0 (29 de agosto de 2010)
Idioma(s) inglês
Escrito em Ruby
Sistema Operacional Multiplataforma
Gênero(s) Framework Web
Licença Licença MIT
Estado do desenvolvimento Ativo
Página oficial rubyonrails.org
Portal das Tecnologias de informação

Ruby on Rails é um framework livre que promete aumentar velocidade e facilidade no desenvolvimento de sites orientados a banco de dados (database-driven web sites), uma vez que é possível criar aplicações com base em estruturas pré-definidas. Frequentemente referenciado como Rails ou RoR, o Ruby on Rails é um projeto de código aberto escrito na linguagem de programação Ruby. As aplicações criadas utilizando o framework Rails são desenvolvidas com base no padrão de projeto MVC (Model-View-Controller).

Índice

  • 1 História
  • 2 Componentes
    • 2.1 Active Record
    • 2.2 Action Pack
    • 2.3 Action Mailer
    • 2.4 Active Support
    • 2.5 Action WebServices
  • 3 Tempo de desenvolvimento
    • 3.1 DRY
    • 3.2 Convention over configuration
  • 4 Escalabilidade
  • 5 Ver também
  • 6 Ligações externas

História

Ruby on Rails foi uma extração de David Heinemeier Hansson de um projeto seu, o gerenciador de projetos Basecamp. Foi lançado a público pela primeira vez em julho de 2004.

Componentes

O Rails é um "meta-framework" (ou seja, um framework de frameworks), composto pelos seguintes frameworks:

Active Record

O Active Record é uma camada de mapeamento objeto-relacional (object-relational mapping layer), responsável pela interoperabilidade entre a aplicação e o banco de dados e pela abstração dos dados.

Action Pack

Compreende o Action View (geração de visualização de usuário, como HTML, XML, JavaScript, entre outros) e o Action Controller (controle de fluxo de negócio).

Action Mailer

O Action Mailer é um framework responsável pelo serviço de entrega e até mesmo de recebimento de e-mails. É relativamente pequeno e simples, porém poderoso e capaz de realizar diversas operações apenas com chamadas de entrega de correspondência.

Active Support

Active Support é uma coleção de várias classes úteis e extensões de bibliotecas padrões, que foram considerados úteis para aplicações em Ruby on Rails.

Action WebServices

Provê uma maneira de publicar APIs interoperaveis com o Rails, sem a necessidade de perder tempo dentro de especificações de protocolo. Implementa WSDL e SOAP.

O Action Web Service não estará mais presente na versão 2.0 no Rails, visto que o mesmo está voltando-se para a utilização do modelo REST. Mesmo assim, aos ainda interessados em utilizá-lo, será possível fazê-lo através da instalação de um plugin.

Tempo de desenvolvimento

Ruby on Rails segue dois conceitos que visam aumentar a produtividade do desenvolvedor: DRY e Convention over Configuration. Estes métodos estão implementados por todo o Rails, mas podem ser mais notados nos "pacotes" do Active Record (ORM, Object Relational Mapper) e Action Pack (MVC)

DRY

DRY (Don't Repeat Yourself, Não se repita) é o conceito por trás da técnica de definir nomes, propriedades e códigos em somente um lugar e reaproveitar essas informações em outros.

Por exemplo, ao invés de ter uma tabela Pessoas e uma classe Pessoa, com uma propriedade, um método "leitor" (getter) e um "modificador" (setter) para cada campo na tabela, tem-se apenas no banco de dados. As propriedades e métodos necessários são "injetados" na classe através de funcionalidades da linguagem Ruby.

Com isso, economiza-se tempo, já que não é necessário alterar a tabela, o "bean", o "form bean", o "local home", o "home", o "session", ... Alterando apenas no banco de dados, tudo o que se baseia nessas informações é atualizado automaticamente.

Convention over configuration

Na maioria dos casos, usamos convenções no dia-a-dia da programação, em geral para facilitar o entendimento e manutenção por parte de outros desenvolvedores. Sabendo disso, e sabendo que o tempo gasto para configurar XML em alguns frameworks de outras linguagens é extremamente alto, decidiu-se adotar esse conceito.

Ele diz basicamente que deve-se assumir valores padrão onde existe uma convenção. Se o desenvolvedor quiser, pode-se sobrescrever essa convenção com o valor necessário. Por exemplo, uma classe User pode ter seus dados armazenados na tabela Customer. Seguindo a convenção, seria na tabela Users. Com isso, o tempo de desenvolvimento cai ainda mais.

Escalabilidade

A maioria dos sites não necessita de esquemas sofisticados de escalabilidade, bastando alguns aceleradores. Em sites menores ou normais, uma configuração padrão do servidor web consegue suportar uma boa quantidade de carga, principalmente se forem usados o FastCGI, LightTPD ou Mongrel, que são necessários para obter uma velocidade aceitável de abertura da página. Comparando uma aplicação com FastCGI e sem FastCGI (rodando Ruby direto como CGI), a diferença é perceptível em qualquer aplicação. O processamento do código (sem contar o tempo de download) em CGI ocorre em no mínimo 10 segundos mesmo em servidores Quad Core, enquanto que em FastCGI o desempenho é notável: em no máximo 1 segundo a página é processada, tal qual linguagens web como PHP.

Existem casos de sites feitos em Rails que suportaram 5 milhões de visitas em um mês, ou seja, aproximadamente 115 por minuto, uma performance considerada suficiente para 90% das aplicações atuais[carece de fontes?]. Nestes sites, uma questão frequente é sobre a escalabilidade de aplicações escritas em Rails. Ao contrário de outras tecnologias, você não precisa fazer um código específico para que o sistema esteja preparado para "escalar". Quando necessário pode-se adotar uma das táticas disponíveis para escalabilidade em Rails. Vale notar que o único problema da escalabilidade é a manutenção de sessões entre servidores. Portanto, a saída mais óbvia é guardar estas sessões em volumes NFS, acessíveis por todos os servidores de aplicação. Outra tática é usar o armazenamento de sessões diretamente no banco de dados. Uma terceira, seria salvar a sessão em um cookie na máquina do usuário.

Ver também

  • Framework
  • Django

Ligações externas

  • Página oficial (em inglês)
  • Página oficial (em português)
  • Tutoriais e vídeos para iniciantes em Ruby on Rails (em português)
  • Ruby-Doc: Ajuda e documentação sobre a linguagem Ruby (em inglês)
  • API Dock: Documentação de Ruby e Rails organizada de forma fácil e interativa
  • Rails Brain: API implementada com AJAX, para facilitar utilização
  • Rails Help: busca dinâmica na API (em inglês)
  • Ruby Brasil (em português)
  • Ruby Portugal (em português)
Obtida de "http://pt.wikipedia.org/w/index.php?title=Ruby_on_Rails&oldid=27467744"

Software

 

JavaScript
Paradigma Multi-paradigma: com base em protótipo funcional
imperativo
scripts
Surgido em 1995
Última versão 1.8.5 (27 de julho de 2010[1])
Criado por Brendan Eich
Estilo de tipagem: Dinâmica, fraca e implícita
Dialetos: ISO/IEC C++ 1998
ISO/IEC C++ 2003
Influenciada por Self, C, Scheme, Perl, Python, Java
Influenciou JScript, ActionScript, JScript .NET, Objective-J, TIScript
Página oficial developer.mozilla.org/en/JavaScript

Índice

  • 1 História
  • 2 Características
    • 2.1 Imperativa e Estruturada
    • 2.2 Dinâmica
      • 2.2.1 Tipagem dinâmica
      • 2.2.2 Baseada em objetos
      • 2.2.3 Avaliação em tempo de execução
    • 2.3 Funcional
      • 2.3.1 Funções de primeira classe
      • 2.3.2 Funções aninhadas
      • 2.3.3 Fechamentos
    • 2.4 Baseada em Protótipos
      • 2.4.1 Protótipos
      • 2.4.2 Funções e métodos
  • 3 Uso em páginas Web
    • 3.1 Exemplo
    • 3.2 Compatibilidade
    • 3.3 Acessibilidade
    • 3.4 Segurança
      • 3.4.1 Vulnerabilidades inter-sites
  • 4 Exemplos de scripts
    • 4.1 Scripts Simples
    • 4.2 Comentários
    • 4.3 Funções
    • 4.4 Hierarquia do objeto
    • 4.5 Números Perfeitos
  • 5 Versão
  • 6 Referências
  • 7 Ver também
  • 8 Ligações externas

JavaScript é uma linguagem de script baseada em ECMAScript padronizada pela Ecma international nas especificações ECMA-262[2] e ISO/IEC 16262 e é atualmente a principal linguagem para programação client-side em navegadores web. Foi concebida para ser uma linguagem script com orientação a objetos baseada em protótipos, tipagem fraca e dinâmica e funções de primeira classe. Possui suporte à programação funcional e apresenta recursos como fechamentos e funções de alta ordem comumente indisponíveis em linguagens populares como Java e C++.

História

JavaScript foi originalmente desenvolvido por Brendan Eich da Netscape sob o nome de Mocha, posteriormente teve seu nome mudado para LiveScript e por fim JavaScript. LiveScript foi o nome oficial da linguagem quando foi lançada pela primeira vez na versão beta do navegador Netscape 2.0 em setembro de 1995, mas teve seu nome mudado em um anúncio conjunto com a Sun Microsystems em dezembro de 1995 quando foi implementado no navegador Netscape versão 2.0B3.

A mudança de nome de LiveScript para JavaScript coincidiu com a época em que a Netscape adicionou suporte à tecnologia Java em seu navegador (Applets). A escolha final do nome causou confusão dando a impressão de que a linguagem foi baseada em java, sendo que tal escolha foi caracterizada por muitos como uma estratégia de marketing da Netscape para aproveitar a popularidade do recém-lançado Java.

JavaScript rapidamente adquiriu ampla aceitação como linguagem de script client-side de páginas web. Como consequência, a Microsoft desenvolveu um dialeto compatível com a linguagem de nome JScript para evitar problemas de trademark. JScript adicionou novos métodos para consertar métodos do Javascript relacionados a data que apresentavam problemas[carece de fontes?]. JScript foi incluído no Internet Explorer 3.0, liberado em Agosto de 1996. Javascript e Jscript são tão similares que os dois termos são comumente usados de forma intercambiável. A Microsoft entretanto declara muitas características nas quais JScript não conforma com a especificação ECMA.

Em novembro de 1996 a Netscape anunciou que tinha submetido JavaScript para Ecma internacional como candidato a padrão industrial e o trabalho subsequente resultou na versão padronizada chamada ECMAScript.

JavaScript tem se transformado na linguagem de programação mais popular da web. Inicialmente, no entanto, muitos profissionais denegriram a linguagem pois a mesma tinha como alvo principal o público alvo leigo. Com o advento do Ajax, JavaScript teve sua popularidade de volta e recebeu mais atenção profissional. O resultado foi a proliferação de frameworks e bibliotecas, práticas de programação melhoradas e o aumento no uso do JavaScript fora do ambiente de navegadores bem como o uso de plataformas de JavaScript server-side.[3]

Em janeiro de 2009 o projeto CommonJS foi fundado com o objetivo de especificar uma biblioteca padrão para desenvolvimento JavaScript fora do navegador.

Características

As seguintes características são comuns a todas as implementações conformantes com o ECMAScript.

Imperativa e Estruturada

JavaScript suporta os elementos de sintaxe de programação estruturada da linguagem C (por exemplo, if, while, switch). Uma exceção é a questão do escopo: o escopo em blocos ao estilo do C não é suportado, em seu lugar JavaScript utiliza escopo a nível de função. JavaScript 1.7, entretanto, suporta escopo a nível de bloco através do comando let. Como C, JavaScript faz distinção entre expressões e comandos. Uma diferença sintática do C é que a quebra de linha termina automaticamente o comando, sendo o ponto-e-vírgula opcional ao fim do comando.

Dinâmica

Tipagem dinâmica

Como na maioria das linguages de script, tipos são associados com valores, não com variáveis. Por exemplo, a variável x poderia ser associada a um número e mais tarde associada a uma string. JavaScript suporta várias formas de testar o tipo de um objeto, incluindo ducktyping.

Baseada em objetos

JavaScript é quase inteiramente baseada em objetos. Objetos JavaScript são arrays associativos, aumentados com protótipos. Os nomes da propriedade de um objeto são strings: obj.x = 10 e obj["x"] = 10 são equivalentes, o ponto neste exemplo é apenas açúcar sintático. Propriedades e seus valores podem ser adicionadas, mudadas, ou deletadas em tempo de execução. A maioria das propriedades de um objeto (e aqueles em sua cadeia de herança via protótipo) pode ser enumerada usando-se uma estrutura de repetição for...in. Javascript possui um pequeno número de objetos padrão da linguagem como window e document.

Avaliação em tempo de execução

JavaScript inclui a função eval que consegue executar em tempo de execução comandos da linguagem que estejam escritos em uma string.

Funcional

Funções de primeira classe

No JavaScript as funções são de primeira classe, isto é, são objetos que possuem propriedades e métodos, e podem ser passados como argumentos, serem atribuídos a variáveis ou retornados como qualquer outro objeto.

Funções aninhadas

Funções 'internas' ou 'aninhadas' são funções definidas dentro de outras funções. São criadas cada vez que a função que as contém(externa) é invocada. Além disso, o escopo da função externa, incluindo constantes, variáveis locais e valores de argumento, se transforma parte do estado interno de cada objeto criado a partir da função interna, mesmo depois que a execução da função interna é concluída.

Fechamentos

JavaScript permite que funções aninhadas sejam criadas com o escopo léxico no momento de sua definição e possui o operador () para invocá-las em outro momento. Essa combinação de código que pode ser executado fora do escopo no qual foi definido, com seu próprio escopo durante a execução, é chamado dentro da ciência da computação de fechamento.

Baseada em Protótipos

Protótipos

JavaScript usa protótipos em vez de classes para o mecanismo herança. É possível simular muitas características de orientação a objetos baseada em classes com protótipos.

Funções e métodos

Diferente de muitas linguagens orientadas a objetos, não há distinção entre a definição de uma função e a definição de um método no JavaScript. A distinção ocorre durante a chamada da função; a função pode ser chamada como um método. Quando uma função é chamada como método de um objeto, a keyword this da função é associada àquele objeto via tal invocação.

Uso em páginas Web

O uso primário de JavaScript é escrever funções que são embarcadas ou incluídas em páginas HTML e que interagem com o Document Object Model(DOM) da página. Alguns exemplos deste uso são:

  • abrir uma nova janela com controle programático sobre seu tamanho, posição e atributos;
  • validar valores de um formulário para garantir que são aceitáveis antes de serem enviados ao servidor;
  • mudar imagens à medida que o mouse se movimenta sob elas.

Pelo fato do código JavaScript rodar localmente no navegador do usuário, e não em um servidor remoto, o navegador pode responder a tais ações rapidamente, fazendo uma aplicação mais responsiva. Além disso, o código JavaScript pode detectar ações de usuário que o HTML sozinho não pode, tais como teclas pressionadas individualmente. Aplicações como Gmail tomam vantagem disso: muito da lógica da interface do usuário é escrita em JavaScript, e o JavaScript envia requisições de informação, tais como o conteúdo de um correio eletrônico, para o servidor. A tendência mais ampla de programação em Ajax explora de maneira similar este ponto forte.

Uma JavaScript engine (também conhecida como interpretador JavaScript ou uma implementação JavaScript) interpreta código fonte JavaScript e o executa de forma adequada. A primeira implementação JavaScript foi criada por Brendan Eich na Netscape Communications Corporation, para o Navegador Netscape. A implementação, nomeada SpiderMonkey, é implementada em C e vem sendo atualizada para conformar com a edição 3 do ECMA-262. A implementação Rhino, criada primariamente por Norris Boyd(ex-empregado da Netscape; agora no Google) é uma implementação de JavaScript em Java. Rhino, como SpiderMoneky, é conformante com a terceira edição do ECMA-262.

Por ser o JavaScript a única linguagem que a maioria dos navegadores populares suportam, tem se tornado uma linguagem alvo para muitos frameworks em outras linguagens, a despeito do fato de não ter sido planejado para tal. Não obstante as limitações de desempenho inerente à sua natureza dinâmica, a crescente velocidade das implementações JavaScript tem feito da mesma uma prática linguagem intermediária.

Exemplo

Um exemplo minimalista de uma página conformante com padrões web (utilizando a sintaxe HTML5) que contém JavaScript pode ser representado pelo seguinte código:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Página simples</title>
  </head>
  <body>
    <script>
      // <[CDATA[
      document.write("Olá, Mundo!");
      // ]]>
    </script>
    <noscript>
      <p>Seu navegador não suporta JavaScript, ou ele está desativado.</p>
    </noscript>
  </body>
</html>

No script acima, pode-se trocar o método document.write por window.alert, para que a mensagem seja exibida em uma caixa de diálogo em vez de aparecer na própria página. Também no script acima, vimos que existe uma tag chamada <noscript>, ela está neste código JavaScript porque é um meio de acessibilidade com o cliente, pois ela apresenta um texto substituto na página quando o navegador não conseguir ler.

Compatibilidade

Já que JavaScript roda em ambientes variáveis, uma parte importante do teste e depuração de seu código consiste na verificação de compatibilidade entre navegadores.

As interfaces DOM para a manipulação de páginas web não são parte do padrão ECMA, ou do próprio JavaScript. Oficialmente, são definidas por um esforço de padronização da W3C; na prática, implementações de navegadores diferem do padrão de uma para as outras, e nem todos navegadores executam JavaScript.

Para lidar com essas diferenças, programadores JavaSCript com frequência tentam escrever códigos que conformam com o padrão comum a maioria dos navegadores; não sendo possível isso, tentam escrever de maneira ad-hoc um código que verifique a presença de certos recursos e que se comporte de maneira adequada caso tais recursos não estejam disponíveis. Em alguns casos, dois navegadores podem ambos implementarem uma funcionalidade com comportamentos diferentes, e programadores podem achar prático detectar qual navegador está rodando e mudar o comportamento de seus scripts para se adequar a isso. Programadores podem também usar bibliotecas ou ferramentas que abstraem tais diferenças entre navegadores.

Além disso, scripts podem não funcionar para alguns usuários. Por exemplo, um usuário pode:

  • Usar um navegador antigo ou raro com suporte DOM incompleto ou incomum.
  • Usar um navegador de um PDA ou telefone móvel que não está apto a executar JavaScript.
  • Ter a execução do JavaScript desabilitada por normas de segurança.

Para suportar tais usuários, programadores web tentam criar páginas que sejam robustas a agentes que não suportem o JavaScript da página. Em particular, uma página deve funcionar a despeito das funcionalidades extras que um JavaScript provê. Uma abordagem alternativa que muitos acham preferível é a página se desenvolvida por primeiro a partir de tecnologias básicas que funcionem em todos os navegadores, e então aprimorá-la para os usuários que possuam JavaScript.

Acessibilidade

Assumindo que o usuário não tenha desabilitado sua execução, pode-se utilizar JavasScript do lado cliente para melhorar a experiência de um usuário como deficiência física ou visual.

Leitores de tela utilizados por pessoas cegas ou com visão parcial podem detectar a presença de JavaScript e dessa forma acessar e ler o DOM da página depois que seus scripts foram executados. Nestes casos recomenda-se que o HTML seja o mais conciso, navegável e rico semanticamente possível, tendo a página scripts ou não. Não se recomenda que o código JavaScript de uma página seja totalmente dependente do eventos provenientes do mouse já que usuários que não conseguem ou optam por não usar o mouse não estarão aptos a colher os benefícios de tal código. Da mesma forma, embora hyperlinks e webforms possam ser navegados e operados do teclado, JavaScript voltado para acessibilidade não deve requerer um teclado para acessar tais eventos. JavaScript conta com eventos independentes do dispositivo de usuário tais como onfocus e onchange que são mais recomendados na maioria dos casos.

Não se recomenda utilizar JavaScript de um jeito que seja confuso ou desorientador para qualquer usuário da internet. Por exemplo, usar JavaScript para alterar ou desabilitar a funcionalidade normal de um navegador, tal como mudar a forma com que o botão direito ou o evento de atualização funcionam, deve ser evitado. Da mesma forma, eventos de interrupção que o usuário pode não estar ciente reduz a sensação de controle do usuário assim como scripts inesperados que mudam o conteúdo da página.

Frequentemente o processo de fazer páginas web complexas tão acessíveis quanto possível se transforma em um problema não trivial onde certas decisões se transformam em assunto de debate e opinião. Entretanto, tecnologias assistivas estão constantemente evoluindo e novos recomendações e informações relevantes vem sendo continuamente publicadas na web.

Segurança

JavaScript e o DOM representam uma potencialidade para programadores maliciosos escreverem scripts para rodarem em um cliente via web. Navegadores são projetados para conter este risco de duas maneiras. A primeira é que scripts são rodados em uma sandbox na qual só podem executar ações relacionadas à internet, não tarefas de programação de propósito geral como criar arquivos. A segunda é que scripts são limitados pela regra da mesma origem: scripts de um web site não têm acesso a informações como nomes de usuário, senhas ou cookies enviados de outro site. A maioria dos bugs em JavaScript relacionados à segurança são brechas de uma das regras.

Vulnerabilidades inter-sites

Um problema comum relacionado à segurança é a escrita de scripts inter-sites, ou XSS, uma violação da regra da mesma origem. Tais vulnerabilidades ocorrem quando um atacante está apto a causar em um site alvo, como um site de banco, a inclusão de um script malicioso na página web apresentada à vítima. O script neste exemplo pode então acessar a aplicação do banco com privilégios da vítima, potencialmente revelando informações secretas ou transferindo dinheiro sem a autorização da vítima.

Alguns navegadores incluem proteção parcial contra ataques XSS refletidos, no qual o atacante fornece uma URL incluindo o script malicioso. No entanto, mesmo usuários destes sites estão vulneráveis a outros ataques XSS, como aqueles onde o código malicioso é guardado em um banco de dados. Apenas o correto desenho de aplicações web no servidor pode prevenir inteiramente ataques XSS.

Vulnerabilidades XSS também podem ocorrer por causa de erros de implementação por parte de programadores de navegadores.

Outra vulnerabilidade inter-sites é a falsificação de requisição inter-sites ou CSRF. No CSRF, o código no site de um atacante faz com que o navegador da vítima tome ações não desejadas pelo usuário em um site alvo (como transferência de dinheiro em um banco). Ela funciona porque, se o site alvo conta apenas com cookies para autenticar requisições, então requisições iniciadas pelo código no site do atacante levarão as mesmas credenciais legítimas de login que as requisições iniciadas pelo usuário. Em geral a solução para CSRF é requerer um valor de autenticação em um campo webform escondido, e não somente nos cookies, para autenticar qualquer requisição que possa ter efeitos duradouros. Verificar o cabeçalho do HTTP Referrer também pode ajudar.

"Sequestro JavaScript" é um tipo de ataque CSRF no qual uma tag <script> no site do atacante explora uma página no lado da vítima que retorna informação privada tal como JSON ou JavaScript. Soluções possíveis incluem requerer um token de autenticação nos parâmetros POST e GET para qualquer resposta que retorne um JSON privado (mesmo que não tenha efeitos colaterais); utilizar POST e nunca GET para requisições que retornem um JSON privado; e modificar a resposta de forma que não possa ser usada via uma tag <script> (através, por exemplo, de um wrapping de um JSON em um comentário JavaScript).

Exemplos de scripts

Scripts Simples

alert("Cuidado");
 
// Mostra um alerta de Confirmar e Cancelar.
if (confirm("Escolha \"Ok\" ou \"Cancelar\" para ver a mensagem correspondente.")) {
    alert("Mensagem 01"); // mostra um alerta para resposta OK
} else {
    alert("Mensagem 02"); // mostra um alerta para resposta Cancelar
}
 
// escreve na barra de status do navegador
window.defaultStatus = "Mensagem que será mostrada";

Comentários

Em Javascript, podemos utilizar comentários de duas formas

  • Comentários de única linha;
  • Comentários de múltiplas linhas.

Exemplos de comentários:

// Este comentário ocupa uma única linha
 
/* Já este comentário
é mais longo e utiliza
várias linhas */

Funções

Criando uma função simples:

function nomeDaFunção(parametro) {
    alert(parametro);
}
// A função imprime na tela um alerta com a palavra 'Exemplo';
nomeDaFunção('Exemplo');

Hierarquia do objeto

var objeto = new Teste();
 
function Teste() {
    this.propriedade = 'Eu sou uma propriedade';
}
// Imprime na tela 'Eu sou uma propriedade'
document.write(objeto.propriedade);
 
var objeto = new Teste2();
 
function Teste2() {
    this.metodo = function (arg) {
        document.write(arg);
    }
}
// Imprime na tela um alerta com 'Exemplo de um metodo'
objeto.metodo('Exemplo de um metodo');

Números Perfeitos

var MAX = 30000,
    som = 0,
    n = 2,
    i;
 
while ( n < MAX ) {
    var metade = n / 2;
 
    for ( i = 1; i <= metade; i++ ) {
        if ( (n % i) === 0 ) {
            som += i;
        }
    }
 
    if ( som == n ) {
        document.write( 'Numero Perfeito = ' + n + '<br />' );
        som = 0;
        n++;
    }
}

Versão

Versão[4] Data da publicação Equivalente para Netscape
Navigator
Mozilla
Firefox
Internet
Explorer
Opera Safari Google
Chrome
1.0 March 1996
2.0
3.0


1.1 August 1996
3.0




1.2 June 1997
4.0-4.05




1.3 October 1998 ECMA-262 1st edition / ECMA-262 2nd edition 4.06-4.7x
4.0


1.4

Netscape
Server





1.5 November 2000 ECMA-262 3rd edition 6.0 1.0 5.5 (JScript 5.5),
6 (JScript 5.6),
7 (JScript 5.7),
8 (JScript 5.8)
6.0,
7.0,
8.0,
9.0,
10.0
3.0,
3.1,
3.2,
4.0
1.0
1.6 November 2005 1.5 + Array extras + Array and String generics + E4X
1.5



1.7 October 2006 1.6 + Pythonic generators + Iterators + let
2.0



1.8 June 2008 1.7 + Generator expressions + Expression closures
3.0



1.8.1
1.8 + Native JSON support + Minor Updates
3.5



1.8.2
1.8.1 + Minor updates
3.6



1.9
1.8.1 + ECMAScript 5 Compliance
4



Referências

  1. New in JavaScript 1.8.5. mozilla.org. Página visitada em August 10, 2010.
  2. ECMAScript Language Specification.
  3. ↑ http://www.eweek.com/c/a/IT-Management/10-Programming-Languages-You-Should-Learn-Right-Now/
  4. ↑ John Resig. Versions of JavaScript. Ejohn.org. Página visitada em 2009-05-19.

Ver também

  • ECMAScript
  • JScript

Ligações externas

  • Página oficial (em inglês)
  • Standard ECMA-262 (em inglês)
  • Introduction to JavaScript (em inglês)
Obtida de "http://pt.wikipedia.org/w/index.php?title=JavaScript&oldid=27813214"

Software

 

C♯
Paradigma Orientação a objetos
estruturado
imperativo
Surgido em 2001
Última versão 4.0 (12 de abril de 2010)
Criado por Microsoft
Estilo de tipagem: estática e dinâmica, forte, segura e insegura
Compiladores .NET Framework, Mono, DotGNU
Dialetos:
Influenciada por Java,[1] C++, Eiffel, Modula-3, Object Pascal[2]
Influenciou D, F♯, Fantom, Java 5,[3] Nemerle, Vala
Licença: Domínio público / CLR Proprietária
Página oficial msdn.microsoft.com

C♯, também escrito como C# ou C Sharp (em português lê-se "cê charp"), é uma linguagem de programação orientada a objetos, fortemente tipada, desenvolvida pela Microsoft como parte da plataforma .NET. A sua sintaxe orientada a objetos foi baseada no C++ mas inclui muitas influências de outras linguagens de programação, como Object Pascal e Java.

Índice

  • 1 História
  • 2 Etimologia
  • 3 Características
    • 3.1 Passagem de parâmetros
  • 4 Exemplos de código
  • 5 Bibliotecas
  • 6 Política
  • 7 Referências
  • 8 Ver também
  • 9 Ligações externas

História

Durante o desenvolvimento da plataforma .NET, as bibliotecas foram escritas originalmente numa linguagem chamada Simple Managed C (SMC), que tinha um compilador próprio. Mas, em Janeiro de 1999, uma equipe de desenvolvimento foi formada por Anders Hejlsberg, que fora escolhido pela Microsoft para desenvolver a linguagem. Dá-se inicio à criação da linguagem chamada Cool. Um pouco mais tarde, em 2000, o projeto .NET era apresentado ao público na Professional Developers Conference (PDC), e a linguagem Cool fora renomeada e apresentada como C#.

A criação da linguagem, embora tenha sido feita por vários programadores, é atribuída principalmente a Anders, hoje um Distinguished Engineer na Microsoft. Ele fora o arquiteto de alguns compiladores da Borland, e entre suas criações mais conhecidas estão o Turbo Pascal e o Delphi.

A Microsoft submeteu o C# à ECMA para uma padronização formal. Em Dezembro de 2001 a associação liberou a especificação ECMA-334 Especificação da Linguagem C#. Em 2003 tornou-se um padrão ISO (ISO/IEC 23270). Há algumas implementações em desenvolvimento, destacando-se a Mono, implementação open source da Novell, o dotGNU e o Portable.NET, implementações da Free Software Foundation, e o BDS 2008, implementação da CodeGear.

A Microsoft anunciou planos de adicionar o suporte a tipos parciais, generics e outras características. A padronização pela ECMA/ISO destas características foi solicitada, mas ainda não são parte da versão padrão da linguagem.

Etimologia

A nota dó sustenido em clave de sol

Pensava-se que o nome C# viria duma sobreposição de quatro símbolos +, dando a impressão de ++++, uma alusão à continuação do C++. Entretanto, o # de C# se refere ao sinal musical sustenido (♯), pronunciado sharp em inglês, que aumenta em meio tom uma nota musical.[4]

Porém, devido a limitações técnicas (fontes padrões, navegadores, etc) e o fato do símbolo do sustenido (♯) não estar presente nos teclados, o cerquilha (#) foi escolhido para ser usado no nome escrito.[5] Essa convenção é refletida no ECMA-334 C# Language Specification, a especificação técnica da linguagem.[6] Entretanto, em determinados lugares, como em propagandas e capas de livros, é usado o símbolo sustenido.[7]

Características

A linguagem suporta ponteiros através da palavra reservada unsafe (código não-seguro), que é obrigatório. Seu uso não é aconselhável, e blocos de códigos que o usam geralmente requisitam permissões mais altas de segurança para poderem ser executados. As operações aritméticas são verificadas contra transbordamento de dados. C# também suporta as operações aritméticas básicas como adição, subtracção, multiplicação e divisão. Esses símbolos são chamados operadores, e "operam" os valores das variáveis.

Um coletor de lixo também é suportado, um processo usado para a manutenção de memória. Com este recurso, é possível recuperar a zona de memória que um programa já não utiliza. Quando isto não ocorre pode acontecer a chamada perda de memória, um erro comum que pode levar ao término não desejado do programa em execução por esgotamento da memória livre.

Em C# não existe herança múltipla, ou seja, cada classe só pode herdar apenas uma outra classe e não mais do que uma, no entanto é possível simular herança múltipla utilizando interfaces. Assim, através da herança reduzimos código através da sua reutilização.

Os gabaritos não são suportados, mas a linguagem possui um suporte abrangente a generics. Nela podem se usar tipos genéricos para a maximização da reutilização de código, segurança de tipo, e desempenho. A utilização mais frequente é para a criação de classes. Pode criar as suas próprias interfaces genéricas, métodos, classes, eventos e delegates. As classes genéricas podem ser utilizadas para permitir acesso aos métodos usando tipos de dados específicos. Informações sobre os tipos usados em um tipo de dados genérico podem ser obtidas em tempo de execução por meio de reflexão.

Passagem de parâmetros

Há três tipos de passagem de parâmetros em C#, por valor, por referência e por saída. Na passagem por valor é feita uma cópia do argumento da chamada do método para o parâmetro do mesmo. Isso significa que as alterações que ocorrem nas variáveis passadas por cópia dentro do método não se refletem fora dele. Na passagem por referência toda alteração feita na variável passada por referência dentro do método alterará também seu valor fora dele.

Por padrão todo objeto e vetor são passados por referência e toda estrutura e variáveis primitivas são passadas por valor. Para se forçar a passagem por referência, tanto a chamada do método como a declaração dele devem estar com os argumentos e parâmetros precedidos pelas palavras reservadas ou ref ou out. A primeira é usada para se manipular um parâmetro já inicializado antes da chamada do método, de forma a somente editá-lo. A segunda é usada para se inicializar um parâmetro durante a execução do método, retornando o resultado para o método que o chamou.

Exemplos de código



Segue, abaixo, o programa teste Olá Mundo, que exibe a frase "Olá, Mundo!":

using System;
 
namespace HelloWordApplication
{
   class HelloWorldApp
   {
      public static void Main()
      {
         Console.WriteLine("Olá, Mundo!");
      }
   }
}

Bibliotecas

Captura de tela do Banshee, um media player desenvolvido em C#

Ao contrário das outras linguagens de programação, nenhuma implementação de C# actualmente inclui qualquer conjunto de bibliotecas de classes ou funções. Mesmo assim, esta linguagem está muito vinculada à plataforma .NET, da qual obtém as suas classes ou funções de execução. O código é organizado num conjunto de espaços de nomes que agrupam as classes com funções semelhantes. Por exemplo, System.Windows.Forms contém o sistema Windows Forms; System.Console é usado para entrada/saída de dados.

Um nível de organização superior é fornecido pelo conceito de montador, que pode ser um simples arquivo ou múltiplos arquivos ligados juntos que podem conter muitos espaços de nomes ou objetos. Programas que precisam de classes para realizar uma função em particular podem se referenciar aos montadores como System.Drawing.dll e System.Windows.Forms.dll assim como a biblioteca core (conhecida como mscorlib.dll na implementação da Microsoft).

Política

Muitos dos produtos e iniciativas da Microsoft geram polêmica no campo político e a criação e desenho da C# não foi excepção. Devido à natureza fechada do C# com uma instituição comercial, a discussão política continua em relação à legitimidade da sua normalização, as suas semelhanças com Java, o seu futuro como uma linguagem de uso geral e outros assuntos. Alguns peritos em segurança se encontram cépticos em relação à eficácia do mecanismo de segurança do CLR e criticam a sua complexidade.

Ao contrário de linguagens proprietárias tal como a Visual Basic, a Microsoft optou por submeter a C# a um processo de normalização. No entanto, a empresa continua a ser a principal força a induzir mudanças e inovação na linguagem. Além disso, a Microsoft tornou bem claro que a C#, tal como outras linguagens .NET, é uma parte importante da sua estratégia de software, tanto para uso interno e para consumo externo. A Microsoft leva a cabo um papel activo em publicitar a linguagem como uma componente da sua estratégia global de negócios.

Referências

  1. Why Microsoft's C# isn't (em inglês). Página visitada em 26 de agosto de 2010.
  2. The A-Z of Programming Languages: C# (em inglês). Página visitada em 26 de agosto de 2010.
  3. Java 5 catches up with C# (em inglês). Página visitada em 26 de agosto de 2010.
  4. C#/.NET History Lesson (em inglês). Página visitada em 24 de agosto de 2011.
  5. Microsoft C# FAQ (em inglês). Página visitada em 24 de agosto de 2011.
  6. C# Language Specification (em inglês). Página visitada em 24 de agosto de 2011.
  7. Visual C#.net Standard (em inglês). Página visitada em 24 de agosto de 2011.

Ver também

  • Anexo:Lista de exemplos de código C♯
  • ASP.NET
  • Common Language Runtime
  • Microsoft .NET
  • Microsoft XNA
  • Mono (projeto)

Ligações externas

  • Página oficial (em português)
  • Visual C# 2010 Express (em inglês)
  • C♯ no Open Directory Project
Obtida de "http://pt.wikipedia.org/w/index.php?title=C%E2%99%AF&oldid=27712828"

Software

 
PHP
Paradigma procedural, reflexão, orientação a objetos, funcional
Surgido em 1995
Última versão 5.3.8 (23 de agosto, 2011)
Criado por Rasmus Lerdorf
Estilo de tipagem: dinâmica
Compiladores Linguagem interpretada
Influenciada por C, C++, Perl, Java, Tcl
Página oficial www.php.net

PHP (um acrônimo recursivo para "PHP: Hypertext Preprocessor", originalmente Personal Home Page) é uma linguagem interpretada livre e utilizada para gerar conteúdo dinâmico na World Wide Web.[1]

Índice

  • 1 Histórico
  • 2 Principais características
  • 3 Vetores e matrizes
  • 4 PHP 5
    • 4.1 Indução de tipo
    • 4.2 Visibilidade
  • 5 Polimorfismo
    • 5.1 Polimorfismo Paramétrico
    • 5.2 Polimorfismo por Inclusão
    • 5.3 Polimorfismo por Coerção
  • 6 Extensões
  • 7 Referências
  • 8 Ver também
  • 9 Bibliografia
  • 10 Ligações externas

Histórico

A linguagem surgiu por volta de 1994, como um pacote de programas CGI criados por Rasmus Lerdorf, com o nome Personal Home Page Tools, para substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua página pessoal. Em 1997 foi lançado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, um interpretador de comandos SQL. Mais tarde, Zeev Suraski desenvolveu o analisador do PHP 3 que contava com o primeiro recurso de orientação a objetos, que dava poder de alcançar alguns pacotes, tinha herança e dava aos desenvolvedores somente a possibilidade de implementar propriedades e métodos.[2][3] Pouco depois, Zeev e Andi Gutmans, escreveram o PHP 4, abandonando por completo o PHP 3, dando mais poder à máquina da linguagem e maior número de recursos de orientação a objetos. O problema sério que apresentou o PHP 4 foi a criação de cópias de objetos, pois a linguagem ainda não trabalhava com apontadores ou handlers, como são as linguagens Java, Ruby e outras. O problema fora resolvido na versão atual do PHP, a versão 5, que já trabalha com handlers. Caso se copie um objeto, na verdade copiaremos um apontador, pois, caso haja alguma mudança na versão original do objeto, todas as outras também sofrem a alteração, o que não acontecia na PHP 4.[4]

Trata-se de uma linguagem extremamente modularizada, o que a torna ideal para instalação e uso em servidores web. Diversos módulos são criados no repositório de extensões PECL (PHP Extension Community Library) e alguns destes módulos são introduzidos como padrão em novas versões da linguagem. É muito parecida, em tipos de dados, sintaxe e mesmo funções, com a linguagem C e com a C++. Pode ser, dependendo da configuração do servidor, embarcada no código HTML. Existem versões do PHP disponíveis para os seguintes sistemas operacionais: Windows, Linux, FreeBSD, Mac OS, OS/2, AS/400, Novell Netware, RISC OS, AIX, IRIX e Solaris.

Construir uma página dinâmica baseada em bases de dados é simples com PHP, (em parte, vale lembrar), este provê suporte a um grande número de bases de dados: Oracle, Sybase, PostgreSQL, InterBase, MySQL, SQLite, MSSQL, Firebird, etc., podendo abstrair o banco com a biblioteca ADOdb, entre outras. A Wikipédia funciona sobre um software inteiramente escrito em PHP, usando bases de dados MySQL: o MediaWiki.[4]

PHP tem suporte aos protocolos: IMAP, SNMP, NNTP, POP3, HTTP, LDAP, XML-RPC, SOAP. É possível abrir sockets e interagir com outros protocolos. E as bibliotecas de terceiros expandem ainda mais estas funcionalidades. Existem iniciativas para utilizar o PHP como linguagem de programação de sistemas fixos. A mais notável é a PHP-GTK. Trata-se de um conjunto do PHP com a biblioteca GTK, portada do C++, fazendo assim softwares inter-operacionais entre Windows e Linux. Na prática, essa extensão tem sido muito pouco utilizada para projetos reais.[4]

Principais características

A linguagem PHP é uma linguagem de programação de domínio específico, ou seja, seu escopo se estende a um campo de atuação que é o desenvolvimento web, embora tenha variantes como o PHP-GTK. Seu propósito principal é de implementar soluções web velozes, simples e eficientes. Características:[carece de fontes?]

  • Velocidade e robustez
  • Estruturado e orientação a objetos
  • Portabilidade - independência de plataforma - escreva uma vez, rode em qualquer lugar
  • Tipagem dinâmica
  • Sintaxe similar a C/C++ e o Perl
  • Open-source

Vetores e matrizes

Os vetores e matrizes em PHP, diferente do que ocorre em C/C++ e Pascal, é uma estrutura dinâmica, o que pode facilitar muito o trabalho do programador.

Um exemplo:

<?php
 
  $vet01 = array();
  $vet01[] = "Sistemas operacionais";
  $vet01[] = "Compiladores";
  $vet01[] = "Bancos de dados";
 
  $vet02 = array(1, 2, 3, 4, 5);
 
  $vet03 = array( 0 => 0, 2 => 3, 10 => "item 10");
 
  for ($i = 0; $i < count($vet01); $i++) {
    echo $vet01[$i] . "<br />";
  }
 
?>

O exemplo acima demonstra três maneiras diferentes de declarar vetores.

PHP 5

Em junho de 2004 foi lançada a versão 5 do PHP, introduzindo um novo modelo de orientação a objeto, incluindo a reformulação dos construtores e adição de destrutores (ver exemplo contextualizado em anexo), visibilidade de acesso, abstração de objeto e interfaces de objetos.[5]

O tratamento de objetos do PHP foi completamente reescrito, permitindo um desempenho melhor e mais vantagens. Enquanto na versão anterior era preciso muito esforço para atender à orientação a objetos e aos padrões de projectos (alguns não eram possíveis), o PHP 5 veio para sanar essa deficiência. Ainda sofre nesse sentido, contudo, por problemas devido a ser uma linguagem de tipagem fraca.[5]

Indução de tipo

Nesse sentido, foi adicionada uma característica chamada de indução de tipo, de acordo com a qual podemos ter uma certa tipagem quando passamos objetos aos parâmetros de uma função (ou método), algo inconcebível na versão anterior. Ver exemplo contextualizado em anexo.[carece de fontes?]

Visibilidade

A visibilidade de uma propriedade ou método pode ser definida com os seguintes modificadores de acesso: public, protected ou private. Itens declarados como públicos podem ser acessados pelo objeto (instância da classe). Membros protegidos estão acessíveis às classes filhas (herdadas). A visibilidade privada limita a apenas a classe que define o atributo ou método. Ver exemplo contextualizado em anexo.[carece de fontes?]

Polimorfismo


Polimorfismo Paramétrico

No polimorfismo paramétrico, um mesmo objeto pode ser utilizado uniformemente como parâmetro em diferentes contextos sem necessidade de alterações. Um método que exibe polimorfismo paramétrico (também chamada de método genérico) permite que o tipo do seu argumento seja determinado por um parâmetro de tipo implícito ou explícito, executando uma mesma operação, independente do tipo do argumento. O PHP não requer (ou suporta) a definição de tipo explícita na declaração de variáveis: o tipo de uma variável é determinado pelo:[carece de fontes?]

  • contexto em que a variável é utilizada. Isto significa que, se você atribuir um valor string para a variável $var, $var se torna uma string
  • Se você então atribuir um valor inteiro para $var, ela se torna um inteiro. Por isso o PHP não adota este tipo de polimorfismo, pois não possui parâmetros genéricos

Polimorfismo por Inclusão

No polimorfismo por inclusão um objeto pode ser visto como pertencendo a diferentes classes que não precisam ser disjuntas. O PHP adota esse tipo de polimorfismo, pois é uma linguagem orientada a objeto que permite recursos de herança.[carece de fontes?]

Polimorfismo por Coerção

O PHP também suporta o polimorfismo por coerção, no qual a linguagem dispõe de uma operação semântica para converter um argumento para um tipo esperado por uma função, em uma situação que de outra forma resultaria em um erro de tipo.[carece de fontes?]

Extensões

Extensões do PHP:

  • Funções de compressão de bzip2
  • Funções de conversão de Calendar
  • Funções de ClibPDF
  • Funções de crack
  • Família de funções ctype
  • Biblioteca de rotinas de cliente URL - CURL
  • Funções de pagamento Cybercash
  • Funções DBM
  • Camada de funções de abstração de banco de dados DBA
  • Funções de dBase
  • Funções dbx
  • Funções DOM XML
  • Funções .NET
  • Funções EXIF
  • Funções FrontBase
  • Funções de formato de dados de formulários (Forms Data Format) FDF.
  • Funções de filePro
  • Funções de FTP
  • Funções da biblioteca de imagens GD
  • Funções de Gettext
  • Funções de HyperWave
  • Conversão de tabela de caracteres ICONV
  • Funções de Informix
  • Funções de manuseio de IIS
  • Funções de IMAP POP3 e NNTP
  • Funções de Ingres II
  • Funções de InterBase
  • Funções de Java
  • Funções de LDAP
  • Funções de Multi-Byte String
  • Funções de Mcrypt Encryption
  • Funções de Mhash
  • Funções de Mimetype
  • Funções de Ming para Flash
  • Funções de mSQL
  • Funções de MSSQL
  • Funções de MySQL
  • Funções de MySQLi
  • Funções de Oracle 8
  • Funções de OpenSSL
  • Funções de Oracle
  • Funções de sobrecarga de objectos
  • Funções de PDF
  • Funções de PostgreSQL
  • Funções de impressora
  • Funções de memória Compartilhada
  • Funções de get and walk de SNMP
  • Funções de SOAP
  • Funções de socket
  • Funções de Sybase
  • Funções de Tidy
  • Funções de Tokenizer
  • Funções de W32api
  • Funções de XML-RPC
  • Funções de XSLT
  • Funções do YAZ
  • Funções para Arquivos Zip
  • Funções de compressão de ZLib

Referências

  1. Manual oficial do PHP - Prefácio (em português). php.net. Página visitada em 7 de fevereiro de 2011.
  2. ↑ PHP on Hormones de Rasmus Lerdorf
  3. ↑ slides for 'PHP on Hormones' talk por Lerdorf
  4. a b c PHP 6. The PHP project. Página visitada em 2010-03-27.
  5. a b PHP 5.3 migration guide. The PHP project. Página visitada em 2009-07-03.

Ver também

  • Anexo:Lista de exemplos de código PHP
  • MySQL
  • Servidor Apache
  • Perl
  • PHP-GTK
  • WAMP5
  • EasyPHP
  • ScriptCase
  • XAMPP
  • XPTO

Bibliografia

  • SICA, Carlos. PHP COM TUDO. 1 ed. Rio de Janeiro - RJ: Ciência Moderna, 2011. 552 p. 1 vol. vol. 1. ISBN 978-85-399-0002-2
  • SICA, Carlos. PHP Orientado a Objetos: Fale a Linguagem da Internet. 1 ed. Rio de Janeiro - RJ: Ciência Moderna, 2006. 216 p. 1 vol. vol. 1. ISBN 978-85-7393-553-0
  • SICA, Carlos. Programação Segura Utilizando PHP: Fale a Linguagem da Internet. 1 ed. Rio de Janeiro - RJ: Ciência Moderna, 2007. 100 p. 1 vol. vol. 1. ISBN 978-85-7393-608-7
  • DALL'OGLIO, Pablo. PHP Programando com Orientação a Objetos: Inclui Design Patterns. 1 ed. São Paulo: Novatec, 2007. 576 p. ISBN 978-85-7522-137-2
  • DALL'OGLIO, Pablo. PHP-GTK Criando Aplicações Gráficas com PHP. 2 ed. São Paulo: Novatec, 2007. 445 p. ISBN 978-85-7522-110-5
  • MELO, Alexandre Altair de; NASCIMENTO, Mauricio G. F. PHP Profissional: Aprenda a desenvolver sistemas profissionais orientados a objetos com padrões de projeto. 1 ed. São Paulo: Novatec, 2007. 464 p. ISBN 978-85-7522-141-9

Ligações externas

  • Página oficial (em inglês)
  • PHP no Open Directory Project

Obtida de "http://pt.wikipedia.org/w/index.php?title=PHP&oldid=27721438"

Software

 
Origem: Wikipédia, a enciclopédia livre.
C++

Programa Olá Mundo, escrito em C++.
Paradigma Abstração de dados,
Orientação a objeto,
Programação genérica,
Programação procedural
Surgido em 1985
Última versão ISO/IEC 14882:2011 (setembro de 2011)
Criado por Bjarne Stroustrup
Estilo de tipagem: Estática, fraca ou forte, insegura
Compiladores C++ Builder, G++, MinGW, Microsoft Visual C++, Xcode
Dialetos: ISO/IEC 14882:1998
ISO/IEC 14882:2003
ISO/IEC 14882:2011
Influenciada por Ada 83, ALGOL 68, C, CLU, ML, Simula
Influenciou Ada 95, C♯, D, Java, PHP, Squirrel

O C++ (em português lê-se "cê mais mais") é uma linguagem de programação multi-paradigma e de uso geral. A linguagem é considerada de médio nível, pois combina características de linguagens de alto e baixo níveis. Desde os anos 1990 é uma das linguagens comerciais mais populares, sendo bastante usada também na academia por seu grande desempenho e base de utilizadores.

Bjarne Stroustrup desenvolveu o C++ (originalmente com o nome C with Classes,[1] que significa C com classes em português) em 1983 no Bell Labs como um adicional à linguagem C. Novas características foram adicionadas com o tempo, como funções virtuais, sobrecarga de operadores, herança múltipla, gabaritos e tratamento de exceções. Após a padronização ISO realizada em 1998 e a posterior revisão realizada em 2003, uma nova versão da especificação da linguagem foi lançada em setembro de 2011, conhecida informalmente como C++11 ou C++0x.[2][3][4]

Índice

  • 1 História
    • 1.1 A evolução da linguagem
    • 1.2 Etimologia
    • 1.3 Trabalhos futuros
  • 2 Características
    • 2.1 Filosofia
    • 2.2 Biblioteca padrão
    • 2.3 Operadores
    • 2.4 Pré-processador
    • 2.5 Gabaritos
    • 2.6 Objetos
      • 2.6.1 Encapsulamento
      • 2.6.2 Herança
    • 2.7 Polimorfismo
      • 2.7.1 Estático
      • 2.7.2 Dinâmico
      • 2.7.3 Regra dos três
    • 2.8 Tratamento de exceções
    • 2.9 Espaço de nomes
    • 2.10 Ponteiros e referências
    • 2.11 Incompatibilidade com C
    • 2.12 Análise sintática do código fonte
  • 3 Exemplos de código
  • 4 Críticas
  • 5 Comunidade de desenvolvimento
    • 5.1 Pessoas notáveis
    • 5.2 Bibilioteca Boost
  • 6 Ferramentas
    • 6.1 Ambientes de desenvolvimento
    • 6.2 Aplicativos desenvolvidos em C++
  • 7 Notas
  • 8 Referências
  • 9 Ver também
  • 10 Ligações externas
    • 10.1 Grupos de discussão e de suporte
    • 10.2 Material de estudo
    • 10.3 Bibliotecas e repositórios de código

História

A evolução da linguagem

O C++ foi inicialmente desenvolvido por Bjarne Stroustrup dos Bell Labs, durante a década de 1980 com o objectivo implementar uma versão distribuída do núcleo Unix.[1] Como o Unix era escrito em C, dever-se-ia manter a compatibilidade, ainda que adicionando novos recursos. Alguns dos desafios incluíam simular a infraestrutura da comunicação entre processos num sistema distribuído ou de memória compartilhada e escrever drivers para tal sistema. Stroustrup percebeu que a linguagem Simula 67 possuía características bastante úteis para o desenvolvimento de software, mas que era muito lenta para uso prático. Por outro lado, a linguagem BCPL era rápida, mas possuía demasiado baixo nível, dificultando sua utilização no desenvolvimento de aplicações. A partir de sua experiência de doutorado, começou a acrescentar elementos do Simula 67 no C, especialmente os recursos de criação e manipulação de objetos. O C foi escolhido como base de desenvolvimento da nova linguagem pois possuía uma proposta de uso genérico, era rápido e também portável para diversas plataformas. Algumas outras linguagens que também serviram de inspiração para o cientista da computação foram ALGOL 68, Ada, CLU e ML.

Bjarne Stroustrup, idealizador da linguagem C++

Ainda em 1983 o nome da linguagem foi alterado de C with Classes para C++. Antes implementada usando um pré-processador, a linguagem passou a exigir um compilador próprio, escrito pelo próprio Stroustrup.[1] Novas características foram adicionadas, como funções virtuais,[1] sobrecarga de operadores e funções,[1] referências, constantes, gerenciamento manual de memória, melhorias na verificação de tipo de dado e estilo de comentário de código de uma linha (//). Em 1985 foi lançada a primeira edição do livro The C++ Programming Language, contendo referências para a utilização da linguagem, já que ainda não era uma norma oficial. A primeira versão comercial foi lançada em outubro do mesmo ano.[5] Em 1989 a segunda versão foi lançada, contendo novas características como herança múltipla, classes abstratas, métodos estáticos, métodos constantes e membros protegidos, incrementando o suporte a orientação a objeto. Em 1990 foi lançado o livro The Annotated C++ Reference Manual, que tornou-se base para o futuro padrão. Outras adições na linguagem incluem gabaritos, tratamento de exceções, espaço de nomes, conversão segura de tipo de dado e o tipo booleano.

Assim como a linguagem, sua biblioteca padrão também sofreu melhorias ao longo do tempo. Sua primeira adição foi a biblioteca de E/S, e posteriormente a Standard Template Library (STL); ambas tornaram-se algumas das principais funcionalidades que distanciaram a linguagem em relação a C. Criada primordialmente na HP por Alexander Stepanov[6] no início da década de 1990 para explorar os potenciais da programação genérica, a STL foi apresentada a um comitê unificado ANSI e ISO em 1993 à convite de Andrew Koenig. Após uma proposta formal na reunião do ano seguinte, a biblioteca recebe o aval do comitê.

Depois de anos de trabalho, o mesmo comitê ANSI/ISO padronizou o C++ em 1998 (ISO/IEC 14882:1998). Após alguns anos foram reportados defeitos e imprecisões no documento, e uma correção foi lançada em 2003.[7]

Por muito tempo, o C++ foi encarado como um superconjunto do C.[nota 1] Entretanto, em 1999 o novo padrão ISO para a linguagem C tornou as duas linguagens ainda mais diferentes entre si. Devido a essas incompatibilidades, muitas empresas que desenvolvem compiladores não oferecem suporte à versão mais recente da linguagem C.

Pode-se dizer que C++ foi a única linguagem entre tantas outras que obteve sucesso como uma sucessora à linguagem C, inclusive servindo de inspiração para outras linguagens como Java, a IDL de CORBA e C♯.

Etimologia

Durante sua fase inicial de desenvolvimento, a linguagem era chamada "novo C", "C84" ou ainda "C com classes".[1] O termo "C++" é creditado a Rick Mascitti,[8] e foi utilizado pela primeira vez em dezembro de 1983. Ele é uma referência ao operador de incremento ++, significando um acréscimo (uma evolução) à linguagem C. Em tom humorado, desenvolvedores software e especialistas em informática no início da década de 1990 costumavam relacionar o ++ do nome à grande insistência dos programadores em utilizar o C++ da mesma forma que a linguagem C, não usufruindo das novas facilidades que a linguagem poderia fornecer. Assim como o ++ estava sendo aplicado de maneira pós-fixa à letra C, a linguagem C++ era uma evolução do C pós-fixada, que só tornar-se-ia realidade em algum futuro remoto, não naquele momento.

Trabalhos futuros

A linguagem continua evoluindo de forma a fornecer novas funcionalidades. O grupo de desenvolvimento Boost.org trabalha para evoluir a biblioteca padrão, informando o comitê oficial da linguagem quais facilidades possuem maior retorno positivo dos usuários, seja por qualidade ou por utilidade, e quais ainda devem ser desenvolvidas. Tudo indica que o C++ continuará com sua natureza multiparadigma. Por exemplo, o trabalho da Boost.org dedica-se a acrescentar as qualidades da programação funcional e genérica. O padrão C++ não define a implementação para a definição de nomes e tratamento de exceções, entre outras facilidades específicas, o que frequentemente torna incompatíveis códigos objeto produzidos por diferentes compiladores. Apesar disso, existem padrões periféricos específicos para certas plataformas ou sistemas operacionais para padronizar compiladores dessas plataformas, como por exemplo o C++ ABI.[nota 2]

As empresas de desenvolvimento de compiladores ainda se esforçam para suportar inteiramente o padrão, especialmente na área de gabaritos. Uma das disputas se refere à palavra reservada export, que permite que a definição de um gabarito seja separada de sua declaração. O primeiro compilador a implementar export foi o Comeau C++ em 2003 (cinco anos após o lançamento do padrão), e no ano seguinte uma versão beta do Borland C++ Builder X também suportava a facilidade. Interessante notar que ambos os compiladores são baseados na versão EDG do C++. Muitos livros fornecem exemplos de códigos para implementar export[nota 3] que não são compiláveis, mas não há referências para o problema mencionado. Outros compiladores como o Microsoft Visual C++ e o GCC não suportam a facilidade. O secretário do comitê oficial do C++ Herb Sutter recomendou que a palavra fosse removida de versões futuras do padrão da linguagem,[9] mas após discussão a decisão final foi mantê-la.[10]

Outras disputas relativas a gabaritos se referem à especialização parcial, que foi pouco suportada por muitos anos depois que o C++ padrão foi lançado.

Atualmente a linguagem tem uma nova especificação, conhecida por C++11 e publicada como 14882:2011.[11]

Características

Filosofia

No livro In The Design and Evolution of C++ (1994), Bjarne Stroustrup descreve algumas regras que ele utiliza para desenvolver a linguagem, como exemplificado abaixo:

  • C++ é desenvolvido para ser uma linguagem tipada estaticamente e de propósito geral que é tão eficiente e portátil quanto o C.
  • C++ é desenvolvido para suportar múltiplos paradigmas.
  • C++ é desenvolvido para fornecer ao programador escolhas, mesmo que seja possível ao programador escolher a opção errada.
  • C++ é desenvolvido para ser o mais compatível com C possível, fornecendo transições simples para código C.
  • C++ evita fornecer facilidades que são específicas a certas plataformas ou a certos grupos de desenvolvedores.
  • C++ não exige overhead para facilidades que não são utilizadas.
  • C++ é desenvolvido para ser utilizado mesmo sem um ambiente de desenvolvimento sofisticado.

Stanley B. Lippman documenta em seu livro Inside the C++ Object Model (1996)[12] como compiladores convertem código de programas C++ em mapeamentos de memória. Lippman trabalhou implementando e mantendo o C-front, a implementação original do C++ nos Bell Labs.

Stroustrup sempre desejou que o C++ fosse mantido como uma linguagem de especificação pequena, apesar de pressões externas para adições de novas funcionalidades na especificação da própria linguagem ao invés da codificação de novas bibliotecas para a biblioteca padrão. Brian Kernighan notou que enquanto em C existe geralmente uma maneira de resolver problemas, em C++ existem várias. Na maioria das linguagens de programação, um padrão ou um conjunto bastante restrito de padrões de projeto de software é escolhido para o desenvolvimento. Entretanto, isso não acontece em C++, pois a escolha é delegada ao desenvolvedor. É um conceito que prega que não existe paradigma de programação ou padrão de desenvolvimento que resolva todos os problemas, por isso a pluralidade e generalidade de aplicações para a linguagem. Tal filosofia assusta iniciantes e professores, que sentem que a linguagem deveria ser de fácil aprendizado, algo que o C++ não é.

Biblioteca padrão



A biblioteca padrão do C++ incorpora a biblioteca padrão do C com algumas pequenas modificações para trabalhar melhor com as novas funcionalidades criadas pela linguagem. Outra grande parte da biblioteca é composta pela biblioteca padrão de gabaritos (STL). Ela fornece ferramentas úteis como containers (vetores, listas, entre outros), algoritmos (filtragem de elementos de container, busca, ordenação, entre outros) e iteradores (ponteiros inteligentes genéricos para acessar tais containers e interligá-los aos algoritmos). Usando gabaritos é possível escrever algoritmos genéricos que funcionam para qualquer container ou sequência definida por iteradores. Tendo em vista que um iterador nada mais é que um ponteiro encapsulado, é possível também utilizar os algoritmos genéricos em vetores C, utilizando-se ponteiros comuns para tal. Como em C, os módulos da biblioteca são acessadas utilizando a diretiva #include; ao todo são fornecidos 69 cabeçalhos-padrão, dos quais 19 estão em depreciação.

Devido ao fato da biblioteca padrão ter sido desenvolvida por especialistas e de já ter sido amplamente utilizada comercialmente e academicamente, é recomendado utilizar seus componentes ao invés de componentes próprios. Por exemplo, utilizar std::vector e std::string ao invés de declarar vetores herdados do C não somente torna o desenvolvimento mais simples, como também traz mais segurança e escalabilidade para o sistema.

A biblioteca STL foi originalmente desenvolvida pela HP[6] e posteriormente pela SGI, antes de sua incorporação na biblioteca padrão do C++. O padrão não a define como "STL", mas ainda utiliza-se esse termo para distingui-la do resto da biblioteca. O projeto STLPort mantém uma implementação atualizada da biblioteca, e é baseado na SGI STL. O projeto Boost fornece elementos adicionais à STL, dos quais alguns já são considerados a serem parte da biblioteca padrão no futuro.

Operadores


Os operadores em C++ são um conjunto de todos os operadores do C mais novas adições à linguagem. Um grupo de novos operadores do C++ são os relativos à conversão de tipo de dado, e consistem em const_cast, static_cast, dynamic_cast e reinterpret_cast. Eles são uma evolução a conversão de dados utilizada em C, que limitava-se a oferecer um método para conversão tal qual static_cast. dynamic_cast refere-se diretamente ao suporte de herança e polimorfismo oferecido pela linguagem, e está relacionado a outro novo operador, typeid, que retorna informações sobre o tipo de dado derivado pelo operando. Ambos os operadores requerem a habilitação de RTTI para funcionar. Outro grupo de novos operadores são os relativos à alocação de memória, e consistem em new e delete. Assemelham-se às funções malloc e free respectivamente, que estão presentes na biblioteca padrão do C. Outro novo operador é o de resolução de âmbito, ::, e que refere-se diretamente ao suporte de espaço de nomes e orientação a objeto oferecido pela linguagem. Com ele é possível declarar e acessar espaços de nomes, e também declarar classes e acessar objetos.

O C++ define que alguns dos operadores podem ser sobrecarregados, o que permite, assim como na sobrecarga de funções, que diferentes tipos de dados sejam passados para um operador de forma a produzir diferentes resultados. Essa técnica também permite que classes definidas por utilizadores também possam usufruir de operadores próprios, tornando possível que uma classe Lista possa sobrecarregar o operador de apêndice += para que diversos elementos possam ser adicionados a lista, como elementos ou outras listas. Alguns operadores de classes definidas pelo utilizador devem ser obrigatoriamente sobrecarregados (definidos) a fim de poderem ser utilizados pela STL. Por exemplo, uma classe Funcionario deve fornecer o operador menor que (<) para ser utilizada pela função de ordenação (sort). De acordo com o padrão atual da linguagem, este requerimento é implícito durante a compilação: caso a função sort seja invocada para a um container da classe Funcionario e esta não define o operador <, há erro de compilação. Para padrões futuros planeja-se introduzir os "conceitos", que auxiliaram a programação genérica na especificação dos requerimentos de um tipo de dado para que ele seja usado em uma função. Por exemplo, os iteradores passados para sort estarão associados ao conceito "tipo de dado comparável", isto é, um tipo de dado que declara o operador <. Ao explicitar essa relação o código se torna mais consistente, e o compilador é auxiliado a fim de retornar uma mensagem de erro mais adequada ao utilizador caso haja problemas durante a compilação.

Pré-processador


O C++ é compilado em três fases: pré-processamento, compilação propriamente dita (tradução para código objeto) e ligação.[13][14] Durante a primeira fase, as diretivas de pré-processamento são aplicadas através de transformações léxicas no próprio código fonte, que então alimenta as próximas fases de compilação. Elas são identificadas no código através do caractere #. O pré-processamento é utilizado para substituir partes de código, para inutilizar partes de código e para importar módulos externos.

Por exemplo, o código #define PI 3.1415926535897932384626433 fará com que sempre que PI aparecer no código, este será substituído por 3.1415926535897932384626433 e isso ocorre antes de começar a compilar, é como se o usuário tivesse digitado o valor de PI ao invés do texto PI. Outro uso do pré-processador é o que segue: #include <iostream> fará com que seja incluído (importado) todo o conteúdo da cabeçalho iostream da biblioteca libc.

Gabaritos

Os gabaritos são diferentes de macros de programação (que também podem ser usadas em C++, um artifício herdado do C): enquanto ambas as facilidades podem ser utilizadas para produzir código em tempo de compilação, gabaritos não restringem-se à substituições léxicas. Eles possuem conhecimento da semântica e do sistema de tipagem da linguagem, e são utilizados principalmente para polimorfismo estático (ver exemplo em anexo) e programação genérica. Um gabarito também é uma máquina de Turing completa.

No campo de programação genérica, um tipo de dado parametrizado em C++ é chamado uma classe gabarito. Ela define através de parâmetros como devem ser os tipos de dado internos utilizados ao instanciar o objeto. Dessa maneira é possível codificar uma classe genérica arranjo, que ao ser instanciada pode tornar-se um arranjo de números inteiros ou um arranjo de carros de corrida (desde que carro de corrida esteja definido no âmbito da instancialização).

Objetos


O C++ introduziu alguns conceitos de orientação a objetos ao C, como exemplificado pelas classes, que apresentam quatro características comumente presentes em linguagens de programação orientadas a objeto: abstração, encapsulamento, herança e polimorfismo. Cada vez que uma classe é instanciada é criado um objeto na memória, que é basicamente um conjunto de atributos e operações reunidos.

Encapsulamento


O encapsulamento permite que os atributos de classes possam ser declarados como públicos, privados ou protegidos. Um atributo público (o menos restrito) pode ser acessado a partir de qualquer método que tenha acesso ao objeto. Um atributo privado (o mais restrito) só pode ser acessado por métodos da própria classe e por métodos explicitamente declarados como permitidos para tal (utilizando a palavra reservada friend). Atributos protegidos só podem ser acessados por métodos da mesma classe, por métodos de classes herdadas e por métodos explicitamente declarados (utilizando a palavra reservada friend). É considerado como uma boa prática de programação restringir ao máximo o acesso aos atributos, de forma a isolar detalhes de implementação de uma classe, tornando públicas somente as funções membro que realizam uma interface mínima da classe com outros componentes.

O isolamento dos dados proposto pelo encapsulamento não é infalível, podendo ser contornado ao realizar operações de baixo nível em objetos. Dessa maneira, um atributo privado pode ser acessado e modificado a partir de um ponteiro para seu endereço de memória sem problemas, ainda que isso seja considerado uma má prática de programação. Tal característica, herdada da linguagem C, é reflexo direto da liberdade que o C++ fornece ao desenvolvedor em relação a padrões de projeto de software, cabendo a ele decidir qual é o mais adequado para seu algoritmo. O desenvolvedor tanto pode esquecer tal característica, atendo-se somente a detalhes de especificação em alto nível, quanto adequar tais características em sua especificação de forma mais baixo nível, visando desempenho ou algum outro objetivo.

Herança


A herança de uma classe para com outra pode ser declarada como pública, protegida ou privada. Isso determina o quão relacionadas as classes serão entre si. Somente a herança pública corresponde ao conceito usual de herança, pois permite acesso total aos atributos da classe-base. Entretanto, pode-se também declarar heranças protegidas e privadas, com características parecidas como as detalhadas anteriormente sobre encapsulamento. Essa funcionalidade adicionou ao C++ a possibilidade de criação de classes abstratas, que não podem ser instanciadas, mas que oferecem interfaces de funcionamento para suas respectivas classes herdadas. Ela é um princípio básico da orientação a objeto para a reutilização de código, pois permite que classes (possivelmente escritas por outros desenvolvedores e então não modificáveis) possam ser herdadas de forma a ser incrementadas em funcionalidade.

A herança múltipla é uma das características do C++ mais controversas. Ela permite que uma classe possa ser derivada de mais de uma classe base, o que pode resultar em um complicado grafo de herança e relacionamento entre classes. Por exemplo, uma classe Gato voador pode ser derivada tanto das classes Gato quanto Mamífero voador. A mistura de heranças reflete em uma mistura de espaços de nomes na classe herdada, o que pode ser resolvido através da declaração local de espaço de nomes, como explicado adiante.

Polimorfismo


Polimorfismo é a capacidade de usar um operador ou uma função de diferentes maneiras, permitir fornecer diferentes significados de acordo com o contexto. Uma vez que um aplicativo é escrito utilizando o conceito de polimorfismo, pode ser facilmente estendido, oferecendo novos objetos que estejam em conformidade com a interface original. Não é necessário recompilar programas originais, adicionando novos tipos. Apenas a re-vinculação é necessária para expor as novas mudanças juntamente com a antiga aplicação. Ele auxilia na reutilização de código e contribui para a criação de aplicações robustas. C++ suporta diversos tipos de polimorfismos, sejam estáticos (resolvidos em tempo de compilação de código) ou dinâmicos (resolvidos em tempo de execução de código).

Estático

A sobrecarga de funções é um polimorfismo estático que permite que um programa possa declarar várias funções com o mesmo nome, diferenciando entre si pela quantidade de parâmetros apresentados e por seus respectivos tipos de dado. Assim, o mesmo nome de função pode referir-se a diferentes funções dependendo do contexto em que ela é usada. O tipo retornado pela função não é utilizado para distinguir funções sobrecarregadas. A sobrecarga de operadores também é um polimorfismo estático que permite que a definição de certos operadores resultem em uma chamada de função que depende dos tipos de dado dos operadores sendo utilizados.

O C++ também suporta argumentos padrão para os parametros das funções, o que permite omitir tal parâmetro na invocação da função. Quando uma função é chamada com menos argumentos que o esperado e os argumentos explícitos são compatíveis com os parâmetros da esquerda à direita, os últimos parâmetros são atribuídos de acordo com o argumento padrão. Semanticamente parecida com a sobrecarga de funções, essa técnica permite simplificar situações em que uma função é declarada somente para invocar uma sobrecarga dela própria com algum parâmetro especificado.

O C++ implementa polimorfismo paramétrico através de gabaritos, que fazem o compilador gere uma instância separada da classe ou função usada como gabarito para cada permutação de parâmetros de tipo usado com ele, o que pode levar a dificultar a depuração de código. Um benefício que os gabaritos C++ têm sobre Java e C♯ é permitir a metaprogramação por gabaritos, uma forma de pré-avaliação de parte do código em tempo de compilação ao invés de tempo de execução.

Os gabaritos em C++ fornecem um mecanismo sofisticado para a criação de código genérico polimórfico. Em particular, por meio da técnica Curiously Recurring Template Pattern é possível implementar uma forma de polimorfismo estático que imita a sintaxe para substituir as funções virtuais. Uma vez que gabaritos são sensíveis aos tipos de dados e também são Turing completos, também podem ser usados para permitir que o compilador resolva condicionais recursivas e gerar programas substanciais através de metaprogramação por gabaritos.

Entre os usos de polimorfismo estático, inclui-se funções com o mesmo nome mas que tratam de diferentes parâmetros, como soma(int, int) e soma(double, double) (o que, entretanto, ignora as facilidades dos gabaritos.) Também, versões novas da mesma função que recebem parâmetros adicionais, como ExportarDados(void* buffer, int tamanho) e ExportarDados(void* buffer, int tamanho, unsigned long opcoes). Mais um uso é um mesmo nome de método para atribuir ou obter o valor de uma propriedade, como Classe::Propriedade(int x) e int x Class::Property() const.

Dinâmico

O polimorfismo por herança é um exemplo de polimorfismo dinâmico no qual ponteiros de uma classe base podem referenciar objetos de classes derivadas, o que permite que uma chamada de função virtual seja resolvida em tempo de execução de código. Ponteiros e referências de uma classe base podem referenciar objetos de qualquer classe derivada de si, o que permite que arranjos e outros containers de um dado tipo possam armazenar ponteiros de diversos tipos de dados, o que não poderia ser feito de outra maneira em C++. Como não é possível descobrir se a conversão do tipo base para o tipo derivado é segura em tempo de compilação, a verificação deve ser feita durante a execução do código. Para isso é fornecido o operador dynamic_cast, que permite tentar a conversão segura de uma classe mais abstrata (classe base) para outra mais específica (classe derivada). Para sua utilização a linguagem dispõe do RTTI, uma técnica para manter em memória informações sobre o tipo de dado de objetos. Caso a conversão não seja possível uma exceção específica é lançada.

Normalmente, quando uma função em uma classe derivada substitui uma função em uma classe base, a função chamada é determinada pelo tipo do objeto. Uma dada função é sobrescrita quando não existe nenhuma diferença no número ou tipo de parâmetros, entre duas ou mais definições para aquela função. Assim, em tempo de compilação pode não ser possível determinar o tipo do objeto e, portanto, a função a ser chamada, tendo apenas um ponteiro de classe base, a decisão é adiada até o tempo de execução. Isso é chamado de despache dinâmico. Funções ou métodos virtuais permitem a implementação mais específica da função a ser chamada, de acordo com o tipo do objeto em tempo real. Em C++, isto é geralmente feito usando tabelas de funções virtuais. Se o tipo de objeto é conhecido, isso pode ser contornado, antecipando o nome da classe antes da chamada de função, mas, em geral chamadas de funções virtuais são resolvidas em tempo de execução.

Além das funções de membro padrão, sobrecargas do operador e destrutores podem ser virtuais. A regra geral é que, se todas as funções da classe são virtuais, o destrutor também deve ser assim. Como o tipo de criação de um objeto é conhecido em tempo de compilação, construtores de cópia e de extensão, não pode ser virtuais. No entanto pode acontecer de uma cópia de um objeto ser criado quando um ponteiro para um objeto derivado é passado como um ponteiro para um objeto base. Nesse caso, uma solução comum é criar um clone() (ou similar) e declarar que a função como virtual. O método clone() cria e retorna uma cópia da classe quando chamado.

Um membro da função também pode ser declarado puramente virtual, acrescentando = 0 após o parêntese de fechamento e antes do ponto e vírgula. Os objetos não podem ser criados de uma classe com uma função virtual pura e são chamados de tipos de dados abstratos. Esses tipos de dados abstratos só podem ser derivados. Qualquer classe derivada herda a função virtual pura deve apresentar uma definição não-pura (e todas as outras funções virtuais puras), antes de objetos da classe derivada poderem ser criados.

Regra dos três

Uma regra informal no desenvolvimento orientado a objeto em C++ clama que se uma classe ou estrutura possui um dos seguintes itens, ela provavelmente deveria ter todos os três:[15] destrutor, construtor de cópia e operador de atribuição (=).

Esse três métodos são funções membros especiais criadas pelo compilador automaticamente se não são definidas pelo desenvolvedor.[nota 4] Se um desses métodos é definido explicitamente pelo desenvolvedor, isso significa que a versão gerada pelo compilador não serve para um dos casos, e portanto muito provavelmente também não serve para os outros casos.

Um adendo a essa regra diz respeito à técnica RAII:[16] se ela for usada então o destrutor pode ser deixado sem definição (também conhecida como "regra dos dois"[17]).

Tratamento de exceções


O tratamento de exceção é um mecanismo desenvolvido para lidar com a ocorrência de algumas condições (chamadas exceções) que alteram o funcionamento normal do fluxo de um programa de computador. O C++ suporta tal tratamento, de forma que o estado atual de um programa após uma exceção é alterado automaticamente para outro estado pré-definido para a recuperação do sistema.

Para isso foram adicionadas à linguagem as palavras reservadas try e catch. A primeira especifica um bloco de código que será vigiado em relação à exceções, de forma que se uma for identificada, o fluxo de programa será desviado para um bloco especificado pela segunda palavra reservada. Para um dado bloco try podem existir diversos blocos catch, capturando exceções de diferentes tipos de dado. Alternativamente, a sintaxe catch(…) foi introduzida para especificar um bloco de tratamento de exceção independente do tipo da exceção, genérico.

O conceito puro da ciência da computação para tratamento de exceções ainda inclui o bloco de instruções finally, que indica um bloco de código executado após um bloco try caso nenhuma exceção tenha sido lançada, indicando sucesso na operação. Tal abordagem não foi adicionada ao C++, sendo substituível por outras técnicas como RAII[16][18]. De qualquer forma, é possível que essa funcionalidade seja adicionada na próxima especificação da linguagem.

Espaço de nomes


O C++ introduziu os espaços de nomes para a organização das bibliotecas, e sua função é agrupar um contexto para identificadores (variáveis, funções, classes, estruturas, entre outros). No contexto de sistemas operativos, o espaço de nomes poderia ser representado por diretórios. Toda a biblioteca padrão está contida no espaço de nomes std (abreviação de standard, que em inglês significa padrão). Para utilizar um espaço de nomes pode ser feita tanto uma declaração global dos espaços quanto local. Uma declaração global é normalmente inserida no início dos módulos, após a importação dos módulos externos, utilizando a palavra reservada using (como em using namespace std;, ver exemplo contextualizado em anexo). Ela também pode ser usada em um âmbito pré-determinado por um bloco de código. Uma declaração local é inserida antes de invocar o identificador envolvido, utilizando o operador de resolução de âmbito :: (como em std::cout, ver exemplo contextualizado em anexo). A declaração global é útil para reduzir a quantidade de código produzido, sub entendendo a origem dos identificadores utilizados em todo um âmbito. Apesar disso, ela deixa margem à ambiguidades, pois é possível que um mesmo identificador esteja presente em mais de um espaço de nome importado no módulo. Para eliminar esse problema deve-se, além de utilizar a declaração global, declarar o identificador ambíguo localmente cada vez que ele for utilizado.

Em determinadas ocasiões, espaços de nome não considerados durante a primeira verificação do espaço de nomes de uma função podem também ser utilizados na busca, dependendo dos tipos de dados utilizados nos argumentos. A técnica, chamada busca de nomes dependente de argumento ou Koening lookup, ocorre quando a busca explícita pela função não encontra correspondente, começando então a procurar por espaços de nomes associados. Um padrão muito utilizado pela Standard Template Library é declarar sobrecarga de operadores que somente são encontrados pelo compilador através dessa técnica.

Ponteiros e referências



O C++ herdou a funcionalidade de ponteiros do C e toda a aritmética de ponteiros disponível para aquela linguagem: tratando um ponteiro como um tipo inteiro é possível mover-se facilmente por regiões de memória. A instância de um ponteiro em C++ é uma variável que armazena um endereço de memória, e que pode ser nula. A biblioteca padrão ainda fornece auto_ptr, uma espécie de ponteiro inteligente para contagem de referências que pode ser utilizado em algumas situações como uma alternativa segura aos ponteiros primitivos do C, automatizando o processo de desalocação de memória do objeto apontado pelo ponteiro.

Por questões de segurança, o C++ introduziu também o tipo de dado referência, um tipo mais restrito de ponteiro. Uma referência definida para outro objeto não pode ser mais referenciada, qualquer ocorrência do nome no código diz respeito ao objeto referenciado. Como consequência, não é possível realizar "aritmética de referências". Outra consequência é que não é possível alterar uma referência para que ela defina outro objeto; após definida, essa relação vale para todo o tempo de vida. Em contrapartida, um mesmo ponteiro frequentemente aponta para diferentes áreas de memória.

Apesar de teoricamente possível[nota 5], a existência de referências nulas não é considerada, podendo-se assumir que uma referência sempre indica um objeto válido em memória.

Incompatibilidade com C

É incorreto considerar o C++ como um super conjunto de C, isto é, uma linguagem que implementa o C completamente e que adiciona novas funcionalidades.[19] Grande parte de código C pode ser perfeitamente compilado em C++, mas existem algumas pequenas diferenças sintáticas e semânticas entre as linguagens que tornam alguns trechos de código C válidos em código C++ inválido, ou códigos que exibem comportamentos diferentes em cada linguagem.[20]

Talvez a diferença mais comum é que C permite a conversão implícita entre o tipo de dado void* para ponteiros para outros tipos, algo que o C++ não permite. Logo, o seguinte código em C é válido:

int *i = malloc(sizeof(int) * 5);         /* conversão implícita de void* para int* */

Para assegurar-se que o código funcione tanto em C quanto C++ é necessário explicitar a conversão:

int *i = (int *) malloc(sizeof(int) * 5); /* conversão explícita de void* para int* */

Outra questão de portabilidade entre as linguagens é o fato do C++ adicionar várias novas palavras reservadas, como new e class, que podem ser utilizadas como identificadores (por exemplo nomes de variáveis) em C, gerando incompatibilidade.

Algumas outras incompatibilidades foram removidas no padrão C99, que agora suporta facilidades como comentários por //.[20] Tanto C99 quanto C++ definem o tipo de dado bool e suas respectivas constantes true e false. Apesar disso, enquanto a definição no C++ é embarcada na própria linguagem, tornando tais elementos palavras reservadas, em C tais identificadores são declarados através da biblioteca padrão stdbool.h.

Algumas construções sintáticas são válidas tanto em C quanto C++, mas produzem resultado diferente. Por exemplo, o valor literal 'a' possui tipo de dado int em C e char em C++, o que significa que uma chamada sizeof('a'), que retorna a quantidade de bytes ocupada pelo identificador, pode resultar em resultados diferentes entre as duas linguagens. Na prática, esse exemplo específico não é realmente um problema já que caracteres literais são convertidos para o tipo int implicitamente pelo compilador tanto em C quanto em C++.

Análise sintática do código fonte

Como a gramática C++ é bastante complexa, é difícil construir um bom analisador sintático para código fonte C++ utilizando algoritmos clássicos como o LALR(1).[21] Por exemplo, com o LALR é possível analisar código Java.[22] A flexibilidade da linguagem também é fruto de ambiguidades que um analisador simples não consegue distinguir. Por esse motivo, existem poucas ferramentas para análise e transformação não trivial de código, como refatoração. Em suas primeiras especificações o C++ era uma gramática LALR, entretanto, com a adição de funcionalidades como espaço de nomes, exceções, gabaritos e o tipo bool, essa característica logo se tornou inválida.[21]

A análise sintática não é a tarefa mais difícil na construção de uma ferramenta C++. Outras tarefas incluem entender o significado dos identificadores do programa que um compilador deve possuir. Sistemas práticos de processamento não devem somente analisar o código fonte, mas também compreender exatamente cada identificador em diferentes usos, lidando com as regras de âmbito de identificadores (ver um código contextualizado em anexo).

O grupo Boost possui um projeto para a construção de um analisador sintático C++ com base na biblioteca Spirit,[23] de forma que se torna um método padrão e livre de análise sintática para a linguagem.

Exemplos de código


Exemplo de um programa que imprime na tela "Olá, Mundo!".

#include <iostream>
int main() {
   std::cout << "Olá, Mundo!" << std::endl;
   return 0;
}

Críticas

C faz com que dar um tiro no pé seja fácil; C++ torna isso mais difícil, mas quando nós o fazemos arrebentamos com a perna toda.
Bjarne Stroustrup

A citação de Stroutrup trata com humor o fato de o C++, ao possibilitar a programação de alto nível, ter facilitado a codificação de algoritmos e organização de projetos em relação ao C, uma linguagem que requer constante atenção contra erros lógicos de programação devido à sua alta flexibidade. Por outro lado, o C++ possui nuances da sintaxe e semântica da linguagem muito sutis, difíceis de serem identificados, e que quando não percebidos podem levar a comportamentos indesejados no código.

Pontos positivos do C++ incluem a produção de código o quanto mais eficiente possível, fazendo uso de otimizações agressivas e sofisticadas dos compiladores. Entretanto, a linguagem ainda mantem alta flexibilidade, portabilidade e consistência. Um exemplo da flexibilidade é a possibilidade de programação de alto e baixo nível. Outro exemplo é a possibilidade de metaprogramação e programação genérica. Mais um ponto positivo é ampla disponibilidade e suporte, devido principalmente à grande base de desenvolvedores. Além disso, a compatilidade com C, resultando em vasta base de código. Fora do lado técnico, um positivo é que a linguagem não está sob o domínio duma empresa (em contraste do Java — Sun Microsystems (atualmente pertencente a Oracle Corporation) ou Visual Basic — Microsoft); a padronização é responsabilidade da ISO.

Por outro lado, pontos negativos do C++ incluem grande período para o aprendizado devido à complexidade da linguagem. Também, os compiladores atuais, que nem sempre produzem o código mais otimizado, tanto em velocidade quanto tamanho do código, e que geralmente produzem mensagens de erro difíceis de serem interpretadas em problemas relacionados com gabaritos. Ainda relacionado a aprendizado e uso, a biblioteca padrão não cobre áreas importantes da programação, como threads, conexões TCP/IP, interface gráfica e manipulação de sistemas de arquivos, o que implica na necessidade de criação de bibliotecas próprias para tal, que pecam em portabilidade e padronização. Apesar da ampla base de código legada do C, o C++ também herdou daquela linguagem problemas de entendimento de sintaxe do mesmo. Mais um ponto negativo é que devido à grande flexibilidade no desenvolvimento, é recomendado o uso de padrões de programação mais amplamente que em outras linguagens.

Comunidade de desenvolvimento

Pessoas notáveis

O desenvolvimento da linguagem C++ é fruto do trabalho de milhares de pessoas associadas à academia e à indústria de software, e pode consistir na utilização da linguagem, em seu ensino, na construção de bibliotecas de rotinas ou na participação no comitê de padronização, entre outras atividades. Algumas pessoas tiveram participação fundamental durante a história para o desenvolvimento.[24] Primeiramente, o próprio Bjarne Stroustrup, criador da linguagem e de seu primeiro compilador.[1] O cientista ainda participa na padronização e divulga o C++ no meio acadêmico. Andrew Koenig é outro pesquisador notável, bastante atuante na padronização e creditado pela técnica Koenig lookup (demonstrada em anexo). Já Scott Meyers é um doutor em ciência da computação, e escritor de diversos livros sobre o desenvolvimento de software utilizando a linguagem. Assim como Meyers, Herb Sutter é escritor de diversos livros sobre C++ e centenas de colunas e artigos, e um notável pesquisador sobre programação concorrente e multitarefa. Andrei Alexandrescu é considerado um dos maiores especialistas em programação C++ avançada. Na área de programação genérica destaca-se o programador russo Alexander Stepanov, a figura chave na criação da Standard Template Library.

Bibilioteca Boost


Parte da comunidade de desenvolvimento do C++ foi responsável pela criação da Boost, um conjunto de bibliotecas que estendem a funcionalidade da linguagem, mais especificamente, da bibilioteca padrão. O processo de disponibilização de bibliotecas da Boost é mais rápido do que o do comitê de padronização da linguagem, e o projeto acaba servindo como uma forma de teste em campo das bibliotecas, que eventualmente podem ser migradas para a especificação da linguagem. Para o TR1 do C++0x, pelo menos dez bibliotecas já foram aceitas.[25] A base de usuários da Boost é grande, o que reflete no controle de qualidade. Funcionalidades oferecidas vão desde bibliotecas gerais como smart_ptr[26] a abstrações do sistema operacional como o filesystem[27] a bibliotecas para usuários avançados como a MPL.[28]

Ferramentas

Ambientes de desenvolvimento

Abaixo é mostrada uma lista dos principais ambientes de desenvolvimento C++, sejam eles compiladores ou ambientes de desenvolvimento integrado (IDE).

Nome Comentário Tipo de licença É compilador? É IDE? É depurador? Plataformas
G++ Um componente do GCC, compilador padrão do Projecto GNU Livre
Unix, Linux, Mac OS X, Windows e AmigaOS
Dev-C++ IDE livre famosa entre iniciantes. Seu compilador é o MinGW, uma versão do G++ para Windows. Livre Windows[nota 6]
Ultimate++ U++ é um framework C++ multi-plataforma, para desemvolvimento rápido de aplicações, focado na produtividade de programadores. Livre Unix, Linux, Mac OS X e Windows
Intel C++ Produz código otimizado para processadores Intel Proprietária
Windows e Linux
Microsoft Visual C++ É o mais conhecido para a plataforma Windows, com ferramentas e tecnologias auxiliares para desenvolvimento nessa plataforma (como MFC, ATL, COM, entre outras). Oferece ainda uma versão gratuita com restrições de uso[29] Proprietária
Windows
C++ Builder Ferramenta da Embarcadero(era da Borland) que compartilha a mesma IDE do Delphi chamada de RAD Studio, sendo possível a utilização dos mesmos componentes visuais do Delphi(VCL) em um código C++. Já teve as versões 1, 2, 3, 4(1998), 5, 6(2002), 2006, 2007, 2009, 2010 e XE(2011). Proprietária Windows
Qt Creator IDE especializada em (mas não restrita a) desenvolvimento na plataforma Qt. Utiliza o g++ como compilador e o gdb como depurador (ou seus equivalentes para MinGW em Windows). Livre/Proprietária Linux, Windows e Mac OS X
Open Watcom Suporta plataformas antigas, até então sem suporte completo à biblioteca padrão Livre
DOS, Windows, OS/2 e Netware
Comeau C++ Pode ser experimentado pela Internet[30] Proprietária
Windows, Linux e Solaris
Turbo C++ Possui versão gratuita[31] no sítio oficial e também uma versão paga.[32] É similar ao C++ Builder. Proprietária
Windows
Eclipse Disponível para C++ através da extensão CDT.[33] Livre Windows, Linux, JVM
Anjuta Suporta muitas capacidades avançadas como gerenciamento de projetos e um poderoso editor de código fonte. Uma nova versão do Anjuta (Anjuta 2.*) que integra o Glade está em desenvolvimento ativo. Livre Linux
Code::Blocks Ambiente aberto e multi-plataforma, em sua versão para Windows utiliza o compilador MinGW, apesar de também suportar outros compiladores como o Visual C++, Digital Mars, Borland C++ 5.5 e Open Watcom.[34] Livre Windows, Linux, Mac OS X
Digital Mars
Proprietária
Windows, DOS
Codelite
Livre
Windows, Linux, Mac OS X
Geany
Livre Windows, Linux
GNAT Programming Studio Utiliza o compilador GCC Livre
Windows, Linux, Solaris
KDevelop Utiliza o compilador GCC Livre Windows, Linux

Aplicativos desenvolvidos em C++

Abaixo segue uma lista de exemplos de aplicativos parcial ou totalmente escritos em C++, de acordo com Bjarne Stroustrup, que não garante sua precisão e veracidade, ainda que seja responsável por sua publicação.[35]

  • Adobe Acrobat
  • Adobe Illustrator
  • Adobe Photoshop
  • Amazon
  • BeOS
  • Blender
  • Common Desktop Environment
  • Doom III (motor de jogo)
  • eMule
  • Motores de busca Google, em especial Googlebot[36]
  • Série Half-Life
  • Internet Explorer
  • iPod (GUI)
  • KDE (Qt)
  • Lunar Magic
  • Mac OS X
  • Maya
  • Mars Pathfinder, Opportunity e outras sondas da NASA
  • Microsoft Office
  • Microsoft Visual Studio (Visual Basic, Visual FoxPro, Visual C++)
  • Microsoft Windows (diversas versões)
  • Mozilla Firefox
  • Mozilla Thunderbird
  • MySQL
  • Máquina virtual Java
  • LibreOffice
  • Outlook Express
  • PCSX2 (Emulador de Playstation 2)
  • SETI@home
  • Symbian OS
  • Winamp
  • Tibia

Notas

  1. ↑ Uma discussão sobre o tema encontra-se na seção de incompatibilidades.
  2. ↑ Mais informações sobre o C++ ABI podem ser obtidas no sumário sobre a extensão (em inglês)
  3. ↑ Um exemplo é o livro de Ivor Horton:
    Ivor Horton. Beginning ANSI C++. 3 ed. [S.l.]: APRESS, 2004. 827 p. ISBN 1-59059-227-1
  4. ↑ O construtor padrão também é criado automaticamente pelo compilador caso o desenvolvedor não tenha definido nenhum outro construtor para a classe.
  5. ↑ Dado um tipo de dado T, uma referência pode ser definida para nulo através de T& var = *(T*)0;. Notar entretanto que obter o conteúdo de nulo resulta em comportamento indefinido, o que indica má prática de programação.
  6. ↑ Uma versão para Linux começou a ser desenvolvida, mas foi abandonada em 2002

Referências

  1. a b c d e f g Naomi Hamilton (25 de junho de 2008). The A-Z of Programming Languages: C++ (em inglês). Entrevista com Bjarne Stroustrup. Computerworld. Página visitada em 25 de junho de 2008.
  2. ↑ Bjarne Stroustrup (maio de 2005). The Design of C++0x (PDF) (em inglês). C/C++ Users Journal.
  3. Doc No. 2697: ISO/IEC DTR 19768 (June 15, 2008) Minutes of WG21 Meeting June 8-15, 2008 (em inglês). Página visitada em 26 de agosto de 2010.
  4. We have an international standard: C++0x is unanimously approved (em inglês). Página visitada em 25 de novembro de 2011.
  5. ↑ Bjarne Stroustrup. Quando o C++ foi inventado? (em inglês). FAQ de Bjarne Stroustrup.
  6. a b Alexander Stepanov e Meng Lee (7 de março de 1994). The Standard Template Library (em inglês). Hewlett-Packard, Technical Report X3J16/94-0095, WG21/N0482.
  7. ↑ Descrição da norma (em inglês)
  8. ↑ Bjarne Stroustrup. Where did the name "C++" come from?. FAQ de Bjarne Stroustrup. Página visitada em 8 de março de 2007.
  9. ↑ Herb Sutter, Tom Plum (3 de março de 2003). Why We Can’t Afford Export (em inglês). Sítio oficial do comitê de padronização do C++. Página visitada em 10 de setembro de 2007.
  10. ↑ J16 Reunião 36/WG21, realizada entre 7 e 11 de abril de 2003 (em inglês)
  11. ISO/IEC 14882:2011 (em inglês). sítio ISO (2 de setembro de 2011). Página visitada em 25 de novembro de 2011.
  12. Stanley B. Lippman. Inside the C++ Object Model. [S.l.]: Addison-Wesley Professional, 1996. 304 p. ISBN 978-0201834543
  13. ↑ Processo de compilação explicado pela IBM (em inglês)
  14. ↑ Processo de compilação explicado pela HP (em inglês)
  15. Marshall P. Cline; Greg Lomow; Mike Girou. C++ FAQs. 2 ed. [S.l.]: Addison-Wesley Professional, 1998. 624 p. ISBN 978-0201309836
  16. a b Bjarne Stroustrup. resource acquisition is initialization (em inglês). Glossário de Bjarne Stroustrup.
  17. ↑ Bjorn Karlsson e Matthew Wilson (1 de outubro de 2004). The Law of The Big Two (em inglês). C++ Source. Página visitada em 21 de abril de 2007.
  18. ↑ Herb Sutter realiza uma comparação entre as técnicas RAII e Dispose (que depende do conceito de finally) em seu blog pessoal:
    Herb Sutter (31 de agosto de 2004). C++ RAII compared with Java Dispose pattern (em inglês). Página pessoal do autor. Página visitada em 29 de setembro.
  19. ↑ Bjarne Stroustrup. Is C a subset of C++? (em inglês). FAQ no sítio pessoal do autor. Página visitada em 7 de fevereiro de 2008.
  20. a b David R. Tribble (5 de agosto de 2001). Incompatibilities Between ISO C and ISO C++ (em inglês). Sítio pessoal do autor. Página visitada em 28 de setembro de 2007.
  21. a b Andy (Março de 2001). Parsing C++ (em inglês). Página visitada em 7 de fevereiro de 2008.
  22. The Java Language Specification LALR(1) Grammar (em inglês). The Java Language Specification. Sun Microsystems (3 de abril de 1998). Página visitada em 7 de fevereiro de 2008.
  23. Boost.Spirit based C++ parser (library) (em inglês). Grupo Boost. Página visitada em 29 de abril de 2007.
  24. ↑ Scott Meyers (30 de agosto de 2006). The Most Important C++ People…Ever (em inglês). Artima Developer. Página visitada em 30 de setembro de 2007.
  25. Library Technical Report (em inglês). Comitê de padronização do C++ (2 de julho de 2003). Página visitada em 18 de outubro de 2008.
  26. Boost: Smart Pointers (em inglês). Sítio oficial da Boost (25 de setembro de 2005). Página visitada em 17 de fevereiro de 2008.
  27. Boost: Boost Filesystem Library (em inglês). Sítio oficial da Boost (3 de junho de 2007). Página visitada em 17 de fevereiro de 2008.
  28. THE BOOST MPL LIBRARY (em inglês). Sítio oficial da Boost (15 de novembro de 2004). Página visitada em 17 de fevereiro de 2008.
  29. Visual Studio Express (em inglês). MSDN, sítio da Microsoft Corporation. Página visitada em 25 de outubro de 2007.
  30. Test Drive Comeau C++ Online (em inglês). Comeau Computing (31 de março de 2007). Página visitada em 7 de fevereiro de 2008.
  31. ↑ David Intersimone. Antique Software: Turbo C++ version 1.01 (em inglês). Página visitada em 24 de outubro de 2007.
  32. Turbo C++ (em inglês). Borland. Página visitada em 24 de outubro de 2007.
  33. Eclipse C/C++ Development Tooling - CDT (em inglês). Eclipse Foundation. Página visitada em 24 de outubro de 2007.
  34. Code::Blocks Features (em inglês). Sítio oficial do Code::Blocks. Página visitada em 24 de outubro de 2007.
  35. ↑ Bjarne Stroustrup. C++ Applications (em inglês). Sítio pessoal de Stroustrup. "I (Bjarne Stroustrup) don't make any guarantees about the accuracy of the list. I believe that it's accurate -- I trust the people who sent me examples, but I have not seen the source code myself."
  36. ↑ Descrição do Googlebot, desenvolvido em C++ (em inglês)
  • Bjarne Stroustrup. The Design and Evolution of C++. [S.l.]: Addison-Wesley, 1994. ISBN 0-201-54330-3
  • Andrei Alexandrescu e Herb Sutter. C++ Design and Coding Standards: Rules and Guidelines for Writing Programs. [S.l.]: Addison-Wesley, 2004. ISBN 0-321-11358-6

Ver também

  • Biblioteca padrão do C++
  • Biblioteca Boost
  • Operadores em C e C++
  • Standard Template Library
  • Anexo:Lista de exemplos de código C++

Ligações externas

Grupos de discussão e de suporte

  • Grupo de usuários C & C++ Brasil (em português)

Material de estudo

  • Página oficial do comitê C++ — JTC1/SC22/WG21 (em inglês)
  • Happy Codings (em inglês) — algoritmos em C++
  • Comparativo entre compiladores (em inglês)
  • Problemas de compatibilidade binária em C++ (em inglês)
  • Exemplos de compatibilidade binária em C++ (em inglês)

Bibliotecas e repositórios de código

  • Poco Project (em inglês) — conjunto de bibliotecas C++ revisadas por especialistas.
  • csourcesearch.net (em inglês) — repositório de código livre C e C++
  • CommonCPP (em inglês) — classes fundamentais portáveis da GNU
  • STLSoft (em inglês) — bibliotecas livres, compostas somente de cabeçalhos, com o intuito de servir como extensão à STL
  • C/C++ Reference (em inglês) — referências de C e C++
Obtida de "http://pt.wikipedia.org/w/index.php?title=C%2B%2B&oldid=27756995"

Software

 

C
Paradigma Programação estruturada
Programação imperativa
Programação procedural
Programação genérica
Surgido em 1972
Última versão C99 (1999)
Criado por Dennis Ritchie
Estilo de tipagem: Estática, Fraco
Compiladores Borland C, GNU GCC, Microsoft Visual Studio, Turbo C, Watcom C, Tiny C Compiler
Dialetos: ANSI C, C99, ISO C, K&R C
Influenciada por ALGOL 68, Assembly, B, BCPL, CPL, Fortran, PL/I
Influenciou AWK, BitC, C++, C♯, C Shell, D, Euphoria, Go, Java, JavaScript, Limbo, Logic Basic, Objective-C, Perl, PHP
Licença: Dependente de implementação

C é uma linguagem de programação compilada de propósito geral, estruturada, imperativa, procedural, padronizada pela ISO, criada em 1972, por Dennis Ritchie, no AT&T Bell Labs, para desenvolver o sistema operacional Unix (que foi originalmente escrito em Assembly).[1]

C é uma das linguagens de programação mais populares[2][3] e existem poucas arquiteturas para as quais não existem compiladores para C. C tem influenciado muitas outras linguagens de programação,[4] mais notavelmente C++, que originalmente começou como uma extensão para C.

Índice

  • 1 História
    • 1.1 K&R C
    • 1.2 ANSI C e ISO C
    • 1.3 C99
    • 1.4 C1X
  • 2 Visão geral
    • 2.1 Tipos de dados
  • 3 Relações com C++
  • 4 Exemplos
    • 4.1 Programa Olá Mundo
    • 4.2 Matemática
    • 4.3 Estruturas de dados
  • 5 Ferramentas de programação
  • 6 Referências
  • 7 Ver também
  • 8 Ligações externas

História

Ken Thompson e Dennis Ritchie (da esquerda para direita), os criadores das linguagens B e C, respectivamente.

O desenvolvimento inicial de C ocorreu no AT&T Bell Labs entre 1969 e 1973. Não se sabe se o nome "C" foi dado à linguagem porque muitas de suas características derivaram da linguagem B e C é a letra conseguinte no alfabeto, ou porque "C" é a segunda letra do nome da linguagem BCPL, da qual derivou-se a linguagem B.

C foi originalmente desenvolvido para a implementação do sistema Unix (originalmente escrito em PDP-7 Assembly, por Dennis Ritchie e Ken Thompson). Em 1973, com a adição do tipo struct, C tornou-se poderoso o bastante para a maioria das partes do núcleo do Unix, serem reescritas em C. Este foi um dos primeiros sistemas que foram implementados em uma linguagem que não o Assembly, sendo exemplos anteriores os sistemas: Multics (escrito em PL/I) e TRIPOS (escrito em BCPL). Segundo Ritchie, o período mais criativo ocorreu em 1972.

K&R C

Em 1978, Brian Kernighan e Dennis Ritchie publicaram a primeira edição do livro The C Programming Language. Esse livro, conhecido pelos programadores de C como "K&R", serviu durante muitos anos como uma especificação informal da linguagem. A versão da linguagem C que ele descreve é usualmente referida como "K&R C". A segunda edição do livro cobriu o padrão posterior, o ANSI C. K&R C introduziu as seguintes características na linguagem:

  • Biblioteca padrão de E/S
  • Tipos de dado struct
  • Tipos de dado long int
  • Tipos de dado unsigned int
  • O operador =+ foi alterado para +=, e =- para -= (o analisador léxico do compilador fazia confusão entre i =+ 10 e i = +10. O mesmo acontecia com =-)

K&R C é frequentemente considerado a parte mais básica da linguagem, cujo suporte deve ser assegurado por um compilador C. Durante muitos anos, mesmo após a introdução do padrão ANSI C, K&R C foi considerado o "menor denominador comum", em que programadores de C se apoiavam quando uma portabilidade máxima era desejada, já que nem todos os compiladores eram actualizados o bastante para suportar o padrão ANSI C.

Nos anos que se seguiram à publicação do K&R C, algumas características "não-oficiais" foram adicionadas à linguagem, suportadas por compiladores da AT&T e de outros vendedores. Estas incluíam:

  • Funções void e tipos de dados void *
  • Funções que retornam tipos struct ou union
  • Campos de nome struct num espaço de nome separado para cada tipo struct
  • Atribuição a tipos de dados struct
  • Qualificadores const para criar um objecto só de leitura
  • Biblioteca padrão, que incorpora grande parte da funcionalidade implementada por vários vendedores
  • Enumerações
  • Cálculos de ponto-flutuante em precisão simples (no K&R C, os cálculos intermediários eram feitos sempre em double, porque era mais eficiente na máquina onde a primeira implementação do C foi feita)

ANSI C e ISO C

Durante os finais da década de 1970, a linguagem C começou a substituir a linguagem BASIC como a linguagem de programação de microcomputadores mais usada. Durante a década de 1980, foi adaptada para uso no PC IBM, e a sua popularidade começou a aumentar significativamente. Ao mesmo tempo, Bjarne Stroustrup, juntamente com outros nos laboratórios Bell, começou a trabalhar num projecto onde se adicionavam construções de linguagens de programação orientada por objectos à linguagem C. A linguagem que eles produziram, chamada C++, é nos dias de hoje a linguagem de programação de aplicações mais comum no sistema operativo Windows da companhia Microsoft; C permanece mais popular no mundo Unix.

Em 1983, o instituto norte-americano de padrões (ANSI) formou um comité, X3J11, para estabelecer uma especificação do padrão da linguagem C. Após um processo longo e árduo, o padrão foi completo em 1989 e ratificado como ANSI X3.159-1989 "Programming Language C". Esta versão da linguagem é frequentemente referida como ANSI C. Em 1990, o padrão ANSI C, após sofrer umas modificações menores, foi adotado pela Organização Internacional para Padronização (ISO) como ISO/IEC 9899:1990, também conhecido como C89 ou C90. Um dos objetivos do processo de padronização ANSI C foi o de produzir um sobreconjunto do K&R C, incorporando muitas das características não-oficiais subsequentemente introduzidas. Entretanto, muitos programas tinham sido escritos e que não compilavam em certas plataformas, ou com um certo compilador, devido ao uso de bibliotecas de funções não-padrão e ao fato de alguns compiladores não aderirem ao ANSI C.

C99

Após o processo da padronização ANSI, as especificações da linguagem C permaneceram relativamente estáticas por algum tempo, enquanto que a linguagem C++ continuou a evoluir. (em 1995, a Normative Amendment 1 criou uma versão nova da linguagem C mas esta versão raramente é tida em conta.) Contudo, o padrão foi submetido a uma revisão nos finais da década de 1990, levando à publicação da norma ISO 9899:1999 em 1999. Este padrão é geralmente referido como "C99". O padrão foi adoptado como um padrão ANSI em Março de 2000. As novas características do C99 incluem:

  • Funções em linha
  • Remoção de restrições sobre a localização da declaração de variáveis (como em C++)
  • Adição de vários tipos de dados novos, incluindo o long long int (para minimizar problemas na transição de 32-bits para 64-bits), um tipo de dado boolean explicito (chamado _Bool) e um tipo complex que representa números complexos
  • Vetores de dados de comprimento variável (o vetor pode ter um tamanho diferente a cada execução de uma função, mas não cresce depois de criado)
  • Suporte oficial para comentários de uma linha iniciados por //, emprestados da linguagem C++
  • Várias funções de biblioteca novas, tais como snprintf()
  • Vários ficheiros-cabeçalho novos, tais como stdint.h

O interesse em suportar as características novas de C99 parece depender muito das entidades. Apesar do GCC e vários outros compiladores suportarem grande parte das novas características do C99, os compiladores mantidos pela Microsoft e pela Borland suportam pouquíssimos recursos do C99, e estas duas companhias não parecem estar muito interessadas em adicionar tais funcionalidades, ignorando por completo as normas internacionais. A Microsoft parece preferir dar mais ênfase ao C++.[5]

C1X

Em 2007, se iniciou o trabalho em antecipação de outra revisão do padrão de C, informalmente chamada "C1X". O comitê dos padrões de C adotou regras para limitar a inserção de novos recursos que não tenham ainda sido testados por implementações existentes.[6]

Visão geral

C é uma linguagem imperativa e procedural, para implementação de sistemas. Seus pontos de design foram para ele ser compilado, fornecendo acesso de baixo nível à memória e baixos requerimentos do hardware. Também foi desenvolvido para ser uma linguagem de alto nível, para maior reaproveitamento do código. C foi útil para muitas aplicações que foram codificadas originalmente em Assembly.

Essa propriedade não foi acidental; a linguagem C foi criada com o objectivo principal em mente: facilitar a criação de programas extensos com menos erros, recorrendo ao paradigma da programação procedural, mas sobrecarregando menos o autor do compilador, cujo trabalho complica-se ao ter de realizar as características complexas da linguagem. Para este fim, a linguagem C possui as seguintes características:

  • Uma linguagem extremamente simples, com funcionalidades não-essenciais, tais como funções matemáticas ou manuseamento de ficheiros (arquivos), fornecida por um conjunto de bibliotecas de rotinas padronizada
  • A focalização no paradigma de programação procedural
  • Um sistema de tipos simples que evita várias operações que não fazem sentido
  • Uso de uma linguagem de pré-processamento, o pré-processador de C, para tarefas tais como a definição de macros e a inclusão de múltiplos ficheiros de código fonte
  • Ponteiros dão maior flexibilidade à linguagem
  • Acesso de baixo-nível, através de inclusões de código Assembly no meio do programa C
  • Parâmetros que são sempre passados por valor para as funções e nunca por referência (É possível simular a passagem por referência com o uso de ponteiros)
  • Definição do alcance lexical de variáveis
  • Estruturas de variáveis, (structs), que permitem que dados relacionados sejam combinados e manipulados como um todo

Algumas características úteis, que faltam em C, podem ser encontradas em outras linguagens, que incluem:

  • Segurança de tipo
  • Coletor de lixo (mais comum em linguagens interpretadas)
  • Vetores que crescem automaticamete
  • Classes ou objetos com comportamento (ver Orientação a objetos)
  • Closures
  • funções aninhadas
  • Programação genérica
  • Sobrecarga de operadores
  • Meta-programação
  • Apoio nativo de multithreading e comunicação por rede

Apesar da lista de características úteis que C possui não ser longa, isso não tem sido um impedimento à sua aceitação, pois isso permite que novos compiladores de C sejam escritos rapidamente para novas plataformas, e também permite que o programador permaneça sempre em controle do que o programa está a fazer. Isto é o que por várias vezes permite o código de C correr de uma forma mais eficiente que muitas outras linguagens. Tipicamente, só código de Assembly "afinado à mão" é que corre mais rapidamente, pois possui um controle completo da máquina, mas avanços na área de compiladores juntamente com uma nova complexidade nos processadores modernos permitiram que a diferença tenha sido rapidamente eliminada. Uma consequência da aceitação geral da linguagem C é que frequentemente os compiladores, bibliotecas e até intérpretes de outras linguagens de nível maior sejam eles próprios implementados em C.

C tem como ponto forte, a sua eficiência, e é a linguagem de programação preferida para o desenvolvimento de sistemas e softwares de base, apesar de também ser usada para desenvolver programas de computador. É também muito usada no ensino de ciência da computação, mesmo não tendo sido projetada para estudantes e apresentando algumas dificuldades no seu uso. Outra característica importante de C, é sua proximidade do código de máquina, que permite que um projetista seja capaz de fazer algumas previsões de como o software irá se comportar, ao ser executado.

C tem como ponto fraco, a falta de proteção que dá ao programador. Praticamente tudo que se expressa em um programa em C, pode ser executado, como por exemplo, pedir o vigésimo membro de um vetor com apenas dez membros. Os resultados são muitas vezes totalmente inesperados, e os erros, difíceis de encontrar.

Tipos de dados

C tem um sistema de tipos semelhante ao de alguns descendentes da linguagem ALGOL, tais como Pascal. Possui tipos para números inteiros de vários tamanhos com e sem sinal, números de ponto flutuante, caracteres e estruturas (structs). C usa extensivamente ponteiros, um tipo muito simples de referência que guarda o endereço de memória da variável. O ponteiro pode ser desreferenciado, uma operação que busca o objecto que se encontra na morada da memória que o ponteiro possui, morada essa que pode ser manipulada através de aritmética de ponteiros. Durante o tempo de execução, o ponteiro é simplesmente uma morada de máquina tais como aquelas manipuladas em Assembly, mas em tempo de compilação possui um tipo complexo que indica o tipo do objecto para onde ele aponta, permitindo que se verifique o tipo de expressões, incluindo ponteiros. Os ponteiros são usados extensivamente em C. O tipo linha de texto de C é simplesmente um ponteiro para um vetor de caracteres e alocação dinâmica de memória, descrita abaixo, é efectuada através de ponteiros.

Os ponteiros em C possuem um valor reservado especial, NULL, que indica que não estão a apontar para uma morada. O uso desse valor como morada é muito útil na construção de várias estruturas de dados, mas causa comportamento não-definido (possivelmente uma falha de sistema) ao ser desreferenciado. Um ponteiro que possui o valor NULL é chamado ponteiro nulo. Os ponteiros são declarados (e desreferenciados) com um * (asterisco), portanto o tipo int* denota um ponteiro para número(s) inteiro(s). A linguagem C também fornece um tipo especial de ponteiros, o void*, que se traduz num ponteiro que aponta para um objecto de tipo desconhecido.

A linguagem C também tem apoio a nível de linguagem para vetores estáticas (de dimensão fixa) de tipos. As disposições de tipos podem parecer ter mais que uma dimensão apesar de serem tecnicamente disposições de disposições de tipos. Em memória, tais estruturas são posicionadas com as linhas uma depois da outra (a alternativa seria armazenar os dados em colunas, usado em outras linguagens). O acesso a disposições de tipos é feito através de ponteiros e aritmética de ponteiros; o nome da disposição é tratado como se fosse um ponteiro que aponta para o início da disposição. Em certas aplicações não é razoável usarem-se disposições de tipos de dimensão fixa e por isso a alocação dinâmica de memória pode ser usada para criar disposições de tipos de dimensão variável.

Como a linguagem C é regularmente usada em programação de baixo-nível de sistemas, há casos em que é necessário tratar um número inteiro como sendo um ponteiro, um número de ponto flutuante como sendo um número inteiro ou um tipo de ponteiro como sendo outro. Para estes casos, a linguagem C fornece a capacidade de "moldagem" (também denominado "conversão de tipo" ou casting), uma operação que, caso seja possível, força a conversão de um objecto de um tipo para outro. Apesar de ser por vezes necessário, o uso de conversões de tipo sacrifica alguma segurança oferecida pelo sistema de tipos.

int

O tipo de dado int (inteiro) serve para armazenar valores numéricos inteiros. Existem vários tipos de inteiros, cada um de um tamanho diferente (dependendo do sistema operacional e/ou arquitetura do processador):

  • int, pode possuir 16 bits, 32 bits ou 64 bits
  • short int, deve possuir tamanho de no mínimo 16 bits e não pode ser maior que int
  • long int, deve possuir tamanho mínimo de 32 bits
  • long long int, deve possuir tamanho mínimo de 64 bits

Todos estes tipos de inteiros podem ainda ser declarados precedidos da cláusula unsigned, o que faz com que só suporte números positivos. Isto faz com que, com o mesmo tamanho, uma variável suporte mais números positivos do que um signed (todos os inteiros são signed por omissão).

char

O tipo char ocupa 1 byte, e serve para armazenar caracteres ou inteiros. Isso significa que o programa reserva um espaço de 8 bits na memória RAM ou em registradores do processador para armazenar um valor (char de tamanho maior que 8 bits é permitido pela linguagem, mas os casos são raros). Com vetores do tipo char é possível criar cadeias de caracteres (strings).

float

O tipo de dado float serve para armazenar números de ponto flutuante, ou seja, com casas decimais. O padrão mais utilizado nos últimos 10 anos é o IEEE 754-1985.

double

O tipo de dado double serve para armazenar números de ponto flutuante de dupla precisão, normalmente tem o dobro do tamanho do float e portanto o dobro da capacidade. O padrão mais adotado também é o IEEE 754-1985.

struct

Em C podem ser usadas estruturas (chamados de registos em outras linguagens de programação). As estruturas são grupos de variáveis organizadas arbitráriamente pelo programador. Uma estrutura pode criar um novo tipo de variável caso typedef seja usado em sua declaração.

Relações com C++

A linguagem de programação C++ foi originalmente derivada do C para suportar programação orientada a objetos. À medida que as linguagens C e C++ foram evoluindo independentemente, a divisão entre as duas veio a aumentar. O padrão C99 criou um número de características que entram em conflito. Hoje, as principais diferenças entre as duas linguagens são:

  • inline - em C++, funções em linha encontram-se no espaço global enquanto que em C encontram-se no espaço local. Por outras palavras, isso significa que, em C++, qualquer definição de qualquer função em linha (sem ser a respeito da sobrecarga de funções de C++) tem de estar em conformidade com a "regra de uma definição" da linguagem C++. Mas em C, a mesma função em linha pode ser definida de maneira diferente em diferentes arquivos (ou ficheiros)
  • A palavra-chave bool, igual à usada em C++, em C99 necessita que se inclua o ficheiro-cabeçalho <stdbool.h> (_Bool está sempre disponível). Padrões anteriores de C não definiam um tipo booleano e vários (e incompatíveis) métodos foram usados para simular um tipo booleano

Algumas características originalmente desenvolvidas em C++ também apareceram em C. Entre elas encontram-se:

  • protótipos de função (com declaração de tipos de parâmetros) e remoção do "int" implícito
  • comentários de linha, indicados por //; comentários de linha terminam com um carácter de nova-linha
  • a palavra-chave inline
  • tipagem mais forte

Exemplos

Programa Olá Mundo


A seguinte aplicação foi publicada na primeira edição de C de K&R, e tornou-se no programa de introdução padrão da maior parte dos livros sobre C. O programa envia o texto "Olá, Mundo!" para a saída padrão, que é normalmente o console, mas que também pode ser um ficheiro (ou arquivo), um outro dispositivo qualquer, ou até mesmo um bit bucket, dependendo de como a saída-padrão é mapeada na altura em que o programa é executado.

int main()
{
   printf("Olá, Mundo!\n");
}

Apesar do programa acima correr corretamente, atualmente origina algumas mensagens de aviso quando compilado com C ANSI. Essas mensagens podem ser eliminadas efectuando umas pequenas alterações no programa original:

#include <stdio.h> /* Pacotes com funções de entrada e saída */
 
int main(void)
{
   printf("Olá, Mundo!\n");
   return 0; /* Retorna 0, pois main retorna um int */
}
/* Nova linha após fechar a chave principal */

A primeira linha do programa é uma diretiva de pré-processamento #include, que causa com que o pré-processador substitua aquela linha pela totalidade do conteúdo do arquivo qual diretiva se refere. Neste caso o arquivo padrão stdio.h (que contém protótipos de funções para trabalho com entrada e saída) irá substituir a linha. Os caracteres < e > indicam que o arquivo stdio.h encontra-se no local em que, quando da configuração do compilador, se definiu como padrão para localização dos ficheiros de inclusão (header files, geralmente com a extensão .h).

A linha (não-vazia) seguinte indica que uma função denominada main será definida. A função main tem um significado especial nos programas de C, pois é a função que é inicialmente executada ou em inglês entry point. Os caracteres { e } delimitam a extensão da função. O termo int define a função main como sendo uma função que retorna um número inteiro. O termo void indica que a função não aceita parâmetros. A função main, normalmente aceita parâmetros, que são passado pela linha de comando. Os compiladores e sistemas operacionais atuais reconhecem as seguintes declarações de main:

int main(int argc, char ** argv) 
int main(int argc, char * argv[])

A linha seguinte "chama", ou executa uma função chamada printf; o arquivo incluído, stdio.h, contém a informação que descreve a forma como a função printf deve ser chamada. Nesta chamada, é passado à função printf um único argumento, a linha de texto constante "Olá, Mundo!\n". A função printf retorna um valor, um int, mas como não é usado ela é descartada pelo compilador. O comando return retorna o valor 0 para o sistema, que é interpretado pelo mesmo como que a função main() foi executada e encerrada com sucesso (sem erros). Por fim, o caracter } indica o fim da função main. Note-se que texto rodeado por /* e */ (comentários de texto) é ignorado pelo compilador. Os compiladores que obedecem à norma C99 também aceitam como comentários as linhas de texto que são precedidos por //.

Matemática

O seguinte código realiza seis operações matemáticas, adição, subtração, multiplicação, divisão, exponenciação e radiciação, e em seguida envia os seus respectivos resultados para a saída padrão (normalmente o console).

#include <math.h>  // necessária para pow() e sqrt()
#include <stdio.h> // necessária para printf() e getchar()
 
int main()
{
   int a = 2, b = 3;
 
   printf("%d + %d = %d\n", a, b, a + b);
   printf("%d - %d = %d\n", a, b, a - b);
   printf("%d x %d = %d\n", a, b, a * b);
   printf("%d / %d = %0.1f\n", a, b, (float) a / b); // resultado fracionário
   printf("%d elevado a %d = %0.1f\n", a, b, pow(a, b)); // pow(base, expoente)
   printf("raiz quadrada de %d = %0.1f\n", a, sqrt(a));
 
   getchar();
   return 0;
}

Estruturas de dados

No exemplo seguinte, é criada uma estrutura composta por 3 elementos de tipos diferentes. Após ser declarada uma variável "x" do tipo struct "y", onde "y" é o nome da estrutura, para se acessar os elementos usa-se a seguinte sintaxe: x.elemento.

#include <stdio.h>
 
struct Pessoa 
{
   char nome[64]; // vetor de 64 chars para o nome
   unsigned short int idade;
   char rg[13];
};
 
int main()
{
   struct Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declaração da variável "exemplo"
 
   printf("Nome: %s\n", exemplo.nome);
   printf("Idade: %hu\n", exemplo.idade);
   printf("RG: %s\n", exemplo.rg);
 
   getchar(); // desnecessário, mas comumente utilizado em ambientes windows para "segurar" o terminal aberto
   return 0;
}

Ou, equivalente:

#include <stdio.h>
 
typedef struct Pessoa 
{
   char nome[64]; // vetor de 64 chars para o nome
   unsigned short int idade;
   char rg[13];
} Pessoa;
 
int main()
{
   Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declaração da variável "exemplo"
 
   printf("Nome: %s\n", exemplo.nome);
   printf("Idade: %hu\n", exemplo.idade);
   printf("RG: %s\n", exemplo.rg);
 
   getchar();
   return 0;
}

Ferramentas de programação

  • Bloodshed Dev-C++
  • Code::Blocks
  • GNU Compiler Collection
  • Make

Referências

  1. History of the C Programming Language (em inglês). Página visitada em 23 de maio de 2010.
  2. Programming Language Popularity (em inglês). Página visitada em 23 de maio de 2010.
  3. TIOBE Programming Community Index (em inglês). Página visitada em 23 de maio de 2010.
  4. C – The Influence Factor of Many Popular Programming Languages (em inglês). Página visitada em 23 de maio de 2010.
  5. Microsoft dá mais ênfase ao C++ (em inglês). Página visitada em 23 de maio de 2010.
  6. Grupo de trabalho do ISO C (em inglês). Página visitada em 23 de maio de 2010.

Ver também

  • Linguagem compilada
  • Linguagem de programação
  • Linguagem de programação de alto nível
  • Lista de linguagens de programação
  • Unix
  • Compiladores

Ligações externas

  • Página oficial do ISO C Working Group (em inglês)
  • C no Open Directory Project
Obtida de "http://pt.wikipedia.org/w/index.php?title=C_(linguagem_de_programa%C3%A7%C3%A3o)&oldid=27800415"

Software

 
NetBeans
Desenvolvedor Oracle Corporation
Plataforma x86 e x64
Lançado em 1 de dezembro de 2000 (11 anos) (3.1)
Versão estável 7.0.1 (2 de Agosto de 2011)
Idioma(s) 5 Idiomas (Padrão)
18 Idiomas (Comunidade)
Escrito em Java
Sistema Operacional Windows, Linux, Solaris e MacOS
Gênero(s) ambiente de desenvolvimento integrado
Licença Freeware
Estado do desenvolvimento Ativo
Página oficial netbeans.org
Tamanho 244 MB (Instalador completo)
Portal das Tecnologias de informação

Evento sobre a tecnologia Java

O NetBeans IDE é um ambiente de desenvolvimento integrado (IDE) gratuito e de código aberto para desenvolvedores de software nas linguagens Java, C, C++, PHP, Groovy, Ruby, entre outras. O IDE é executado em muitas plataformas, como Windows, Linux, Solaris e MacOS. O NetBeans IDE oferece aos desenvolvedores ferramentas necessárias para criar aplicativos profissionais de desktop, empresariais, Web e móveis multiplataformas.

Índice

  • 1 História
  • 2 Recursos
  • 3 Ver Também
  • 4 Ligações Externas
  • 5 Referências

História

O NetBeans foi iniciado em 1996 por dois estudantes tchecos na Universidade de Charles, em Praga, quando a linguagem de programação Java ainda não era tão popular como atualmente. Primeiramente o nome do projeto era Xelfi, em alusão ao Delphi, pois a pretensão deste projeto era ter funcionalidades semelhantes aos IDEs então populares do Delphi que eram mais atrativas por serem ferramentas visuais e mais faceis de usar, porém com o intuito de ser totalmente desenvolvido em Java.

Em 1999 o projeto já havia evoluído para uma IDE proprietário, com o nome de NetBeans DeveloperX2, nome que veio da idéia de reutilização de componentes que era a base do Java. Nessa época a empresa Sun Microsystems havia desistido de sua IDE Java Workshop e, procurando por novas iniciativas, adquiriu o projeto NetBeans DeveloperX2 incorporando-o a sua linha de softwares.

Por alguns meses a Sun mudou o nome do projeto para Forte for Java e o manteve por um bom tempo como software proprietário, porém, em junho de 2000 a Sun disponibilizou o código fonte do IDE NetBeans tornando-o uma plataforma OpenSource. Desde então a comunidade de desenvolvedores que utilizam e contribuem com o projeto não parou de crescer, tornando-se uma das IDEs mais populares atualmente.

Recursos

A IDE NetBeans auxilia programadores a escrever, compilar, debugar e instalar aplicações, e foi arquitetada em forma de uma estrutura reutilizável que visa simplificar o desenvolvimento e aumentar a produtividade, pois reúne em uma única aplicação todas estas funcionalidades. Totalmente escrita em Java, mas que pode suportar qualquer outra linguagem de programação que desenvolva com Swing, como C, C++, Ruby e PHP. Também suporta linguagens de marcação como XML e HTML.

O NetBeans fornece uma base sólida para a criação de projetos e módulos, possui um grande conjunto de bibliotecas, módulos e APIs (Application Program Interface, um conjunto de rotinas, protocolos e ferramentas para a construção de aplicativos de software) além de uma documentação vasta — inclusive em português — bem organizada. Tais recursos auxiliam o desenvolvedor a escrever seu software de maneira mais rápida. A distribuição da ferramenta é realizada sob as condições da SPL (Sun Public License), uma variação da MPL (Mozilla Public License). Esta licença tem como objetivo garantir a redistribuição de conhecimento à comunidade de desenvolvedores quando novas funcionalidades forem incorporadas à ferramenta.

Atualmente está distribuído em diversos idiomas e isto tem o tornado cada vez mais popular, facilitando o acesso a iniciantes em programação e possibilitado o desenvolvimento de aplicativos multilíngüe.

Como o NetBeans é escrito em Java, é independente de plataforma, funciona em qualquer sistema operacional que suporte a máquina virtual Java (JVM).

Alguns dos seus principais recursos são:

  • editor de código fonte integrado, rico em recursos para aplicações Web (Servlets e JSP, JSTL, EJBs) e aplicações visuais com Swing que é uma API (Interface de Programação de Aplicativos) Java para interfaces gráficas. A API Swing procura desenhar por contra própria todos os componentes, ao invés de delegar essa tarefa ao sistema operacional, como a maioria das outras APIs de interface gráfica trabalham;
  • visualizador de classes integrado ao de interfaces, que gera automaticamente o código dos componentes de forma bem organizada, facilitando assim o entendimento de programadores iniciantes;
  • suporte ao Java Enterprise Edition, plataforma de programação de computadores que faz parte da plataforma Java voltada para aplicações multicamadas, baseadas em componentes que são executados em um servidor de aplicações;
  • plugins para UML, Unified Modeling Language, linguagem de modelagem não proprietária de terceira geração, e desenvolvimento remoto em equipes; interface amigável com CVS ou Concurrent Version System (Sistema de Versões Concorrentes) é um sistema de controle de versão que permite que se trabalhe com diversas versões de arquivos organizados em um diretório e localizados local ou remotamente, mantendo-se suas versões antigas e os logs de quem e quando manipulou os arquivos;
  • CSS, algumas funcionalidades para editar folhas de estilos como destaques, recursos de auto-completar, análise de código;
  • help local e on-line; debug apurado de aplicações e componentes;
  • auto-completar avançado; total suporte ao ANT, ferramenta de automatização da construção de programas e TOMCAT, servidor de aplicações Java para web;
  • integração de módulos;
  • suporte a Database (banco de dados), Data view e Connection wizard que são os módulos embutidos na IDE; geração de Javadoc: a ferramente permite a geração automática de arquivos javadoc em HTML a partir dos comentários inseridos no código, além de recursos que facilitam a inclusão de comentários no código.

Ver Também

  • BlueJ
  • JCreator
  • jEdit
  • Eclipse (IDE)
  • JBuilder
  • JDeveloper

Ligações Externas

  • Site Oficial

Referências

 

Obtida de "http://pt.wikipedia.org/w/index.php?title=NetBeans&oldid=26362926"

Software

 

JBuilder, é uma IDE para desenvolvimento de aplicações na tecnologia Java criada pela Borland e mais tarde continuada pela empresa CodeGear. Esta IDE é utilizada para criar aplicações mais gráficas, a partir de JFrames, ainda se encontra na sua versão 2008,mas já está pra ser lançada sua versão 2009(juntamente com as novas versões do C++ Builder e do Delphi), com funções e atualizações que prometem impressionar os desenvolvedores Java.


Edições do JBuilder 2008

JBuilder 2008 Enterprise

JBuilder 2008 Enterprise fornece um IDE Java completo de classe corporativa com suporte ao desenvolvimento e colaboração de equipe baseado nas funcionalidades do TeamInsight™ e ProjectAssist™, suporte total a modelagem UML 2.0 e arquitetura de código e as recém introduzidas Application Factories, que fornecem produtividades e reutilização de código sem precedentes. O JBuilder 2008 Enterprise também inclui a nova capacidade Progress Tracker que capacita as equipes de desenvolvimento a monitorar e medir continuamente o impacto das mudanças de performance, permitindo a comparação de snapshots visuais de seu progresso; a nova capacidade de filtro de raiz de CPU, que permite que os desenvolvedores isolem e limitem o profiling; e a nova funcionalidade ProbeKit que permite a instrumentação dinâmica e estática de uma aplicação.

JBuilder 2008 Professional

O JBuilder 2008 Professional inclui suporte ampliado para a plataforma Java EE 5 e desenvolvimento visual de Web services incluindo designers EJB, JPA e Web services, assim como suporte à distribuição para os principais servidores de aplicação Java, comerciais ou de código aberto. Além disso, o JBuilder 2008 Professional inclui ferramentas profiling de memória e de CPU, ferramentas de tuning de performance, capacidades sofisticadasde de design de Swing, funções básicas de modelagem UML and LiveSource® para Java com diagramação total mão dupla de código e código visual.

JBuilder 2008 Turbo

O JBuilder 2008 Turbo está disponível como um pacote gratuito e completo do Eclipse que fornece as características e funções básicas para criar e distribuir aplicações Java para os principais servidores de aplicação, comerciais e de código aberto. O mais novo membro da renomeada família do JBuilder da CodeGear, o JBuilder 2008 Turbo pode ser facilmente aperfeiçoado com poderosas ferramentas de desenvolvimento como os plug-ins JGear para adicionar produtividade RAD gráfica, funções de profiling e depuração de performance e de colaboração de equipes.

fonte de pesquisa: http://www.codegear.com/br/products/jbuilder

Obtida de "http://pt.wikipedia.org/w/index.php?title=JBuilder&oldid=27088594"

Software

 

Eclipse é um IDE desenvolvido em Java, seguindo o modelo open source de desenvolvimento de software. O projeto Eclipse foi iniciado na IBM que desenvolveu a primeira versão do produto e doou-o como software livre para a comunidade. O gasto inicial da IBM no produto foi de mais de 40 milhões de dólares[carece de fontes?]. Hoje, o Eclipse é o IDE Java mais utilizado no mundo[carece de fontes?]. Possui como características marcantes o uso da SWT e não do Swing como biblioteca gráfica, a forte orientação ao desenvolvimento baseado em plug-ins e o amplo suporte ao desenvolvedor com centenas de plug-ins que procuram atender as diferentes necessidades de diferentes programadores.

Com o uso de plugins, pode ser usado não só para desenvolver em Java, mas também em C/C++,PHP,ColdFusion e até mesmo Python.

  • Imagem da IDE Eclipse.

Ligações externas

  • Página oficial do Eclipse (em inglês)
  • Página de plugins do Eclipse (em inglês)
  • Tutorial do Eclipse (em inglês)

Bibliografia

  • LUCKOW, Décio Heinzelmann; MELO, Alexandre Altair de. Programação Java para a Web: Aprenda a desenvolver uma aplicação financeira pessoal com as ferramentas mais modernas da plataforma Java. 1 ed. São Paulo: Novatec, 2010. 640 p. ISBN 978-85-7522-238-6
Obtida de "http://pt.wikipedia.org/w/index.php?title=Eclipse_(software)&oldid=27156949"

Software

 
Firewall separando redes LAN e WAN
A Wikipédia possui o portal:
Portal das tecnologias de informação

Firewall (em português: muro anti-chamas) é um dispositivo de uma rede de computadores que tem por objetivo aplicar uma política de segurança a um determinado ponto da rede. O firewall pode ser do tipo filtros de pacotes, proxy de aplicações, etc. Os firewalls são geralmente associados a redes TCP/IP.

Este dispositivo de segurança existe na forma de software e de hardware, a combinação de ambos normalmente é chamado de "appliance". A complexidade de instalação depende do tamanho da rede, da política de segurança, da quantidade de regras que controlam o fluxo de entrada e saída de informações e do grau de segurança desejado.

Índice

  • 1 História
    • 1.1 Primeira Geração - Filtros de Pacotes
      • 1.1.1 Regras Típicas na 1ª Geração
    • 1.2 Segunda Geração - Filtros de Estado de Sessão
      • 1.2.1 Regras Típicas na 2ª Geração
    • 1.3 Terceira Geração - Gateway de Aplicação
      • 1.3.1 Regras Típicas na 3ª Geração
    • 1.4 Quarta Geração e subsequentes
  • 2 Classificação
    • 2.1 Filtros de Pacotes
    • 2.2 Proxy Firewall ou Gateways de Aplicação
      • 2.2.1 Desvantagens
    • 2.3 Stateful Firewall (ou Firewall de Estado de Sessão)
    • 2.4 Firewall de Aplicação
      • 2.4.1 Vantagens
      • 2.4.2 Desvantagens
  • 3 Notas
  • 4 Ligações externas

História

Os sistemas firewall nasceram no final dos anos 80, fruto da necessidade de criar restrição de acesso entre as redes existentes, com políticas de segurança no conjunto de protocolos TCP/IP. Nesta época a expansão das redes acadêmicas e militares, que culminou com a formação da ARPANET e, posteriormente, a Internet e a popularização dos primeiros computadores tornando-se alvos fáceis para a incipiente comunidade hacker.

Casos de invasões de redes e fraudes em sistemas de telefonia começaram a surgir, e foram retratados no filme Jogos de Guerra ("War Games"), de 1983. Em 1988, administradores de rede identificaram o que se tornou a primeira grande infestação de vírus de computador e que ficou conhecido como Internet Worm. Em menos de 24 horas, o worm escrito por Robert T. Morris Jr disseminou-se por todos os sistemas da então existente Internet (formado exclusivamente por redes governamentais e de ensino), provocando um verdadeiro "apagão" na rede.

O termo em inglês firewall faz alusão comparativa da função que este desempenha para evitar o alastramento de acessos nocivos dentro de uma rede de computadores a uma parede anti-chamas, que evita o alastramento de incêndios pelos cômodos de uma edificação.

Primeira Geração - Filtros de Pacotes

  • A tecnologia foi disseminada em 1988 através de pesquisa sustentada pela DEC;
  • Bill Cheswick e Steve Bellovin da AT&T desenvolvem o primeiro modelo para Prova de Conceito;
    • O modelo tratava-se de um filtro de pacotes responsável pela avaliação de pacotes do conjunto de protocolos TCP/IP;
    • Apesar do principal protocolo de transporte TCP orientar-se a um estado de conexões, o filtro de pacotes não tinha este objetivo inicialmente (uma possível vulnerabilidade);

Até hoje, este tipo de tecnologia é adotada em equipamentos de rede para permitir configurações de acesso simples (as chamadas "listas de acesso"). O ipchains é um exemplo recente de um firewall que utiliza a tecnologia desta geração. Hoje o "ipchains" foi substituído pelo iptables que é nativo do Linux e com maiores recursos.

Regras Típicas na 1ª Geração

  • Restringir tráfego baseado no endereço IP de origem ou destino;
  • Restringir tráfego através da porta (TCP ou UDP) do serviço.

Segunda Geração - Filtros de Estado de Sessão

  • A tecnologia foi disseminada a partir de estudo desenvolvido no começo dos anos 90 pelo Bell Labs;
  • Pelo fato de o principal protocolo de transporte TCP orientar-se por uma tabela de estado nas conexões, os filtros de pacotes não eram suficientemente efetivos se não observassem estas características;
  • Foram chamados também de firewall de circuito.

Regras Típicas na 2ª Geração

  • Todas as regras da 1ª Geração;
  • Restringir o tráfego para início de conexões (NEW);
  • Restringir o tráfego de pacotes que não tenham sido iniciados a partir da rede protegida (ESTABLISHED);
  • Restringir o tráfego de pacotes que não tenham número de sequência corretos.

Firewall Statefull: Armazena o estado das conexões e filtra com base nesse estado. Existe três estados para uma conexão: - NEW: Novas conexões; - ESTABLISHED: Conexões já estabelecidas, e; - RELATED: Conexões relacionadas a outras existentes.

Terceira Geração - Gateway de Aplicação

  • Baseado nos trabalhos de Gene Spafford (co-autor do livro Practical Unix and Internet Security), Marcos Ranum (fundador da empresa TIS), e Bill Cheswick;
  • Também são conhecidos como "Firewall de Aplicação" ou "Firewall Proxy";
  • Foi nesta geração que se lançou o primeiro produto comercial em 13 de Junho de 1991—o SEAL da DEC;
  • Diversos produtos comerciais surgiram e se popularizaram na década de 90, como os firewalls Raptor, Gauntlet (que tinha sua versão gratuita batizada de TIS) e Sidewinder, entre outros;
  • Não confundir com o conceito atual de ''Firewall'' de Aplicação: firewalls de camada de Aplicação eram conhecidos desta forma por implementarem o conceito de Proxy e de controle de acesso em um único dispositivo (o Proxy Firewall), ou seja, um sistema capaz de receber uma conexão, decodificar protocolos na camada de aplicação e interceptar a comunicação entre cliente/servidor para aplicar regras de acesso;

Regras Típicas na 3ª Geração

  • Todas as regras das gerações anteriores;
  • Restringir acesso FTP a usuários anônimos;
  • Restringir acesso HTTP para portais de entretenimento;
  • Restringir acesso a protocolos desconhecidos na porta 443 (HTTPS).

Quarta Geração e subsequentes

  • O firewall consolida-se como uma solução comercial para redes de comunicação TCP/IP;
  • Diversas empresas como StoneSoft, Fortinet, SonicWALL, Juniper, Checkpoint, BRconnection e Cisco desenvolvem soluções que ampliam características anteriores:
    • Stateful Inspection para inspecionar pacotes e tráfego de dados baseado nas características de cada aplicação, nas informações associadas a todas as camadas do modelo OSI (e não apenas na camada de rede ou de aplicação) e no estado das conexões e sessões ativas;
    • Prevenção de Intrusão para fins de identificar o abuso do protocolo TCP/IP mesmo em conexões aparentemente legítimas;
    • Deep Packet Inspection associando as funcionalidades do Stateful Inspection com as técnicas dos dispositivos IPS;
  • A partir do início dos anos 2000, a tecnologia de Firewall foi aperfeiçoada para ser aplicada também em estações de trabalho e computadores domésticos (o chamado "Firewall Pessoal"), além do surgimento de soluções de firewall dedicado a servidores e aplicações específicas (como servidores Web e banco de dados), ou mesmo usuários.

Classificação

Os sistemas firewall podem ser classificados da seguinte forma:

Filtros de Pacotes


Estes sistemas analisam individualmente os pacotes à medida que estes são transmitidos, verificando as informações das camada de enlace (camada 2 do modelo ISO/OSI) e de rede (camada 3 do modelo ISO/OSI).

As regras podem ser formadas indicando os endereços de rede (de origem e/ou destino) e as portas TCP/IP envolvidas na conexão. A principal desvantagem desse tipo de tecnologia para a segurança reside na falta de controle de estado do pacote, o que permite que agentes maliciosos possam produzir pacotes simulados (com endereço IP falsificado, técnica conhecida como IP Spoofing), fora de contexto ou ainda para serem injetados em uma sessão válida. Esta tecnologia foi amplamente utilizada nos equipamentos de 1a.Geração (incluindo roteadores), não realizando nenhum tipo de decodificação do protocolo ou análise na camada de aplicação.

Proxy Firewall ou Gateways de Aplicação

Os conceitos de gateways de aplicação (application-level gateways) e "bastion hosts" foram introduzidos por Marcus Ranum em 1995. Trabalhando como uma espécie de eclusa, o firewall de proxy trabalha recebendo o fluxo de conexão, tratando as requisições como se fossem uma aplicação e originando um novo pedido sob a responsabilidade do mesmo firewall (non-transparent proxy) para o servidor de destino. A resposta para o pedido é recebida pelo firewall e analisada antes de ser entregue para o solicitante original.

Os gateways de aplicações conectam as redes corporativas à Internet através de estações seguras (chamadas de bastion hosts) rodando aplicativos especializados para tratar e filtrar os dados (os proxy firewalls). Estes gateways, ao receberem as requisições de acesso dos usuários e realizarem uma segunda conexão externa para receber estes dados, acabam por esconder a identidade dos usuários nestas requisições externas, oferecendo uma proteção adicional contra a ação dos crackers.

Desvantagens

  • Para cada novo serviço que aparece na Internet, o fabricante deve desenvolver o seu correspondente agente de Proxy. Isto pode demorar meses, tornando o cliente vulnerável enquanto o fabricante não libera o agente específico. A instalação, manutenção e atualização dos agentes do Proxy requerem serviços especializados e podem ser bastante complexos e caros;
  • Os proxies introduzem perda de desempenho na rede, já que as mensagens devem ser processadas pelo agente do Proxy. Por exemplo, o serviço FTP manda um pedido ao agente do Proxy para FTP, que por sua vez interpreta a solicitação e fala com o servidor FTP externo para completar o pedido;
  • A tecnologia atual permite que o custo de implementação seja bastante reduzido ao utilizar CPUs de alto desempenho e baixo custo, bem como sistemas operacionais abertos (Linux), porém, exige-se manutenção específica para assegurar que seja mantido nível de segurança adequado (ex.: aplicação de correções e configuração adequada dos servidores).

Stateful Firewall (ou Firewall de Estado de Sessão)

Os firewalls de estado foram introduzidos originalmente em 1991 pela empresa DEC com o produto SEAL, porém, não foi até 1994, com os israelenses da Checkpoint, que a tecnologia ganharia maturidade suficiente. O produto Firewall-1 utilizava a tecnologia patenteada chamada de Stateful Inspection, que tinha capacidade para identificar o protocolo dos pacotes transitados e "prever" as respostas legítimas. Na verdade, o firewall guardava o estado de todas as últimas transações efetuadas e inspecionava o tráfego para evitar pacotes ilegítimos.

Posteriormente surgiram vários aperfeiçoamentos, que introduziram o Deep Packet Inspection, também conhecido como tecnologia SMLI (Stateful Multi-Layer Inspection), ou seja Inspeção de Total de todas as camadas do modelo ISO/OSI (7 camadas). Esta tecnologia permite que o firewall decodifique o pacote, interpretando o tráfego sob a perspectiva do cliente/servidor, ou seja, do protocolo propriamente dito e inclui técnicas específicas de identificação de ataques.

Com a tecnologia SMLI/Deep Packet Inspection, o firewall utiliza mecanismos otimizados de verificação de tráfego para analisá-los sob a perspectiva da tabela de estado de conexões legítimas. Simultaneamente, os pacotes também vão sendo comparados a padrões legítimos de tráfego para identificar possíveis ataques ou anomalias. A combinação permite que novos padrões de tráfegos sejam entendidos como serviços e possam ser adicionados às regras válidas em poucos minutos.

Supostamente a manutenção e instalação são mais eficientes (em termos de custo e tempo de execução), pois a solução se concentra no modelo conceitual do TCP/IP. Porém, com o avançar da tecnologia e dos padrões de tráfego da Internet, projetos complexos de firewall para grandes redes de serviço podem ser tão custosos e demorados quanto uma implementação tradicional.

Firewall de Aplicação

Com a explosão do comércio eletrônico, percebeu-se que mesmo a última tecnologia em filtragem de pacotes para TCP/IP poderia não ser tão efetiva quanto se esperava. Com todos os investimentos dispendidos em tecnologia de stateful firewalls, os ataques continuavam a prosperar de forma avassaladora. Somente a filtragem dos pacotes de rede não era mais suficiente. Os ataques passaram a se concentrar nas características (e vulnerabilidades) específicas de cada aplicação. Percebeu-se que havia a necessidade de desenvolver um novo método que pudesse analisar as particularidades de cada protocolo e tomar decisões que pudessem evitar ataques maliciosos contra uma rede.

Apesar de o projeto original do TIS Firewall concebido por Marcos Ranum já se orientar a verificação dos métodos de protocolos de comunicação, o conceito atual de Firewall de Aplicação nasceu principalmente pelo fato de se exigir a concentração de esforços de análise em protocolos específicos, tais como servidores Web e suas conexões de hipertexto HTTP. A primeira implementação comercial nasceu em 2000 com a empresa israelense Sanctum, porém, o conceito ainda não havia sido amplamente difundido para justificar uma adoção prática.

Se comparado com o modelo tradicional de Firewall -- orientado a redes de dados, o Firewall de Aplicação é frequentemente instalado junto à plataforma da aplicação, atuando como uma espécie de procurador para o acesso ao servidor (Proxy).

Alguns projetos de código-aberto, como por exemplo o ModSecurity[1] para servidores Apache, têm por objetivo facilitar a disseminação do conceito para as aplicações Web.

Vantagens

  • Pode suprir a deficiência dos modelos tradicionais e mapear todas as transações específicas que acontecem na camada da aplicação Web proprietária;
  • Por ser um terminador do tráfego SSL, pode avaliar hipertextos criptografadas (HTTPS) que originalmente passariam despercebidos ou não analisados por firewalls tradicionais de rede;

Desvantagens

  • Pelo fato de embutir uma grande capacidade de avaliação técnica dos métodos disponibilizados por uma aplicação (Web), este tipo de firewall exige um grande poder computacional—geralmente traduzido para um grande custo de investimento;
  • Ao interceptar aplicações Web e suas interações com o cliente (o navegador de Web), pode acabar por provocar alguma incompatibilidade no padrão de transações (fato que exigirá, sem sombra de dúvidas, um profundo trabalho de avaliação por parte dos implementadores);
  • Alguns especialistas ou engenheiros de tecnologia refutam o firewall de aplicação baseando-se nas seguintes argumentações:
    • A tecnologia introduz mais um ponto de falha sem adicionar significativos avanços na tecnologia de proteção;
    • O firewall e o IDS/IPS já seriam suficientes para cobrir grande parte dos riscos associados a aplicação Web;
    • A tecnologia ainda precisa amadurecer o suficiente para ser considerada um componente indispensável de uma arquitetura de segurança;

Certamente esses argumentos serão bastante discutidos ao longo dos próximos anos como um imperativo para determinar a existência desta tecnologia no futuro.

 

Notas

  1. ModSecurity.

Ligações externas

  • Artigo de 1994 do Marcus Ranum - Thinking about Firewalls
  • Artigo da SecurityFocus Firewall Evolution - Deep Packet Inspection

Obtida de "http://pt.wikipedia.org/w/index.php?title=Firewall&oldid=27570754"

Software

 

Zope
Desenvolvedor Zope Corporation
Plataforma multiplataforma
Versão estável 3.3.1 (14 de janeiro de 2007)
Gênero(s) servidor de aplicação
Licença Zope Public License
Página oficial www.zope.org
Portal das Tecnologias de informação

Zope é um servidor de aplicações web de código aberto escrito na linguagem Python. Seu nome significa "Z Object Publishing Environment" (em português, "Ambiente de Publicação de Objetos Z"). Muitas tarefas de administração de um servidor Zope podem ser realizadas através de uma interface web. Os objetos que o Zope publica na Web são escritos em linguagem Python, e tipicamente armazenados num banco de dados orientado a objetos, o ZODB, que é integrado ao sistema. Objetos básicos tais como documentos, imagens e modelos de páginas podem ser criados ou modificados via web. Objetos especializados, tais como wikis, blogs, e galerias de fotos estão disponíveis como componentes adicionais (chamados products), e existe uma comunidade pujante de pequenas empresas criando aplicações web como produtos.

Índice

  • 1 História
  • 2 Características técnicas
  • 3 Zope 3 / BlueBream
  • 4 Zope Page Templates
  • 5 Ver também
  • 6 Ligações externas

História

O que hoje se conhece como Zope surgiu em 1998, quando a empresa Digital Creations (atual Zope Corporation) abriu o fonte de seus principais produtos sob uma licença de código aberto. A decisão foi influenciada por Hadar Pedhazur, principal investidor da empresa. A combinação de Bobo e Principia foi renomeada para Zope naquela época. Esta decisão transformou a Digital Creations numa empresa de serviços, e proporcionou muito mais visibilidade e interesse em torno do Zope do que o Principia jamais teve.

Características técnicas

Um sítio em Zope é formado por objetos em um banco de dados em vez de arquivos, como é comum em muitos outros servidores de aplicação web. Esta abordagem permite alavancar as vantagens do paradigma de objetos, como encapsulamento. Zope associa URLs a objetos utilizando a hierarquia de partes (composição); os métodos são considerados como partes dos objetos. Por exemplo, http://www.zope.org/Products/visual é uma forma de acessar app.Products.visual.

O Zope inclui o Zope Object Database (ZODB), que persiste transparentemente objetos Python de forma transacional. A transparência está no fato de que os desenvolvedores raramente precisam escrever código para ler ou salvar os objetos no ZODB de forma explícita.

Uma característica particularmente inovadora do Zope é o uso em larga escala de aquisição. Aquisição é uma técnica paralela à herança de classes, através da qual objetos 'herdam' comportamentos de seu contexto na hierarquia de composição, além da hierarquia de classes. Isto possibilita novas formas de organizar a aplicação, muito adequadas ao paradigma da web onde os sites são organizados em pastas e sub-pastas, ou seções e sub-seções. Um uso frequente de aquisição é a organização dos componentes visuais das páginas de forma que elementos comuns possam ser adquiridos de um repositório central, sem se perder a possibilidade de substituir qualquer elemento por uma versão local mais adequada ao contexto. Por outro lado, o modo como a aquisição é implementada no Zope 2 também e visto como uma fonte de erros, produzindo comportamentos inesperados em alguns casos. O uso de aquisição foi bastante reduzido no Zope 3.

O Zope fornece dois mecanismos para a criação de modelos de páginas: Dynamic Template Markup Language (DTML: Linguagem Dinâmica de Marcação de Modelos), e Zope Page Templates (ZPT: Modelos de Páginas Zope). O DTML é uma linguagem de marcação que permite implementar lógica simples em modelos, através de laços, condicionais e inserção de variáveis. No entanto, o DTML apresenta alguns problemas comuns às linguagens deste tipo: os modelos não podem ser verificados por validadores HTML, e a inclusão indiscriminada de lógica nos modelos resulta em código pouco legível e difícil de manter.

ZPT é uma tecnologia que ataca estes problemas. Modelos ZPT são formadas por XML ou HTML válido, nas quais toda a codificação é feita através de atributos dentro das etiquetas já existentes nestas linguagens. Tais atributos utilizam um espaço de nomes especial, denominado tal: Template Attribute Language (Linguagem de Atributos para Modelos), e assim são compatíveis com as especificações do W3C e com as principais ferramentas de edição de HTML. ZPT proporciona apenas um conjunto limitado de recursos, estimulando os programadores a implementar a lógica em scripts Python à parte, que são apenas invocados (e não incluídos) nos modelos. ZPT também fornece suporte à internacionalização e localização de aplicativos web, propiciando a substituição de mensagens por versões previamente traduzidas em múltiplas línguas.

O Zope 2 fornece a infraestrutura para gerenciadores de conteúdo como Plone, Silva (CMS) e Nuxeo CPS, bem como grandes portais desenvolvidos pela Zope Corp.

Zope 3 / BlueBream


Uma nova versão do Zope, o Zope 3, vem sendo desenvolvida desde 2001. Embora o Zope 2 tenha comprovado seu valor como framework para o desenvolvimento de aplicações web, ele não está livre de problemas. Por exemplo, criar um novo produto para estender o Zope envolve o reuso de muito código "mágico" que simplesmente precisa estar lá, e a lógica do domínio da aplicação é inevitavelmente "contaminada" pela lógica da própria infraestrutura. O Zope 3 é uma recriação total do sistema, com ampla participação da comunidade de desenvolvedores que se especializou na plataforma. O objetivo é resolver estes problemas sem perder as vantagens que deram ao Zope sua atual popularidade. O Zope 3 é baseado numa arquitetura de componentes, que visa facilitar por um lado o uso de componentes externos dentro do Zope, e por outro lado o uso de componentes isolados do Zope em projetos que não necessitam de toda a infraestrutura do servidor de aplicações. A primeira versão de produção, chamada Zope X3, foi lançada em 6 de novembro de 2004.

Zope Page Templates

Os Modelos de Páginas Zope (Zope Page Templates) são documentos XHTML propdiamente ditos, o que significa que podem ser visualizados e editados utilizando-se editores HTML ou ferramentas compatíveis com XHTML (uma grande vantagem comparada com outras linguagens de modelo usadas para aplicações web). Os modelos (templates) também podem ser verificados para a conformidade XHTML, para que possam ser razoavelmente seguros de que irão se expandir automaticamente em XHTML adequado.

No entanto, esses modelos de páginas não se destinam a serem processados como são. Em vez disso, são marcados com elementos e atributos adicionais nos espaços de nomes XML especiais (ver abaixo). Esta informação adicional é usada para descrever como o modelo de página deverá vir a ser processado.

A seguir estão alguns exemplos básicos. Para incluir condicionalmente um elemento específico, como um elemento div, basta adicionar o atributo tal:condition para o elemento da seguinte forma:

<div tal:condition="...">
  ...
</div>

Para controlar o que aparece dentro de um elemento, use o atributo tal:content como este:

<h1><span tal:content="..."/></h1>
...

Finalmente, para introduzir ou substituir valores de atributos use o atributo tal:attributes da seguinte forma: o poder do Python poderá também ser utilizado para alterar dinamicamente a href durante a execução.

<a href="" tal:attributes="href python:'http://algumaurl.com/%s'%algumobjeto">...</a>

Esta é uma explicação muito superficial de Modelos de Páginas Zope. Seu comportamento é quase completamente descrito por uma linguagem de modelos, determinados em espicificações TAL, TALES, e METAL:

  • Template Attribute Language (TAL),
  • Template Attribute Language Expression Syntax (TALES),
  • Macro Expression Template Attribute Language (METAL).

Ver também

  • Zope CMF
  • Plone
  • Sistema de gerenciamento de conteúdo

Ligações externas

  • Sítio central da comunidade Zope
  • Comunidade Zope brasileira
Obtida de "http://pt.wikipedia.org/w/index.php?title=Zope&oldid=27467270"

Software

 
Java

Duke, o mascote do Java
Paradigma Orientação a objetos, estruturada, imperativa
Surgido em 1995
Última versão 1.7.1 (18 de outubro de 2011)
Criado por James Gosling e Sun Microsystems
Estilo de tipagem: estática, forte
Compiladores GCJ, Javac
Influenciada por Ada 83, C++, C♯,[1] Eiffel, Generic Java, Mesa, Modula-3, Object Pascal, Objective-C, UCSD Pascal, Smalltalk
Influenciou Ada 2005, BeanShell, C♯,[2] Clojure, D, ECMAScript, Fantom, Groovy, J#, JavaScript, PHP, Python, Scala
Licença: GNU General Public License/Java Community Process
Página oficial www.oracle.com/technetwork/java/index.html

Java é uma linguagem de programação orientada a objeto desenvolvida na década de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Diferentemente das linguagens convencionais, que são compiladas para código nativo, a linguagem Java é compilada para um bytecode que é executado por uma máquina virtual. A linguagem de programação Java é a linguagem convencional da Plataforma Java, mas não sua única linguagem.

Índice

  • 1 História
    • 1.1 Padronização
  • 2 Características
    • 2.1 Licença
  • 3 Exemplos de código
    • 3.1 Método main
    • 3.2 Classes
      • 3.2.1 Classes internas
    • 3.3 Interfaces
    • 3.4 Objetos anônimos
  • 4 Ferramentas
    • 4.1 Frameworks
    • 4.2 Ambientes de desenvolvimento
    • 4.3 Extensões
  • 5 Certificações
  • 6 Comunidade
  • 7 Bibliografia
  • 8 Referências
  • 9 Ver também
  • 10 Ligações externas

História

Em 1991, na Sun Microsystems, foi iniciado o Green Project, o berço do Java, uma linguagem de programação orientada a objetos. Os mentores do projeto eram Patrick Naughton, Mike Sheridan, e James Gosling. O objetivo do projeto não era a criação de uma nova linguagem de programação, mas antecipar e planejar a “próxima onda” do mundo digital. Eles acreditavam que, em algum tempo, haveria uma convergência dos computadores com os equipamentos e eletrodomésticos comumente usados pelas pessoas no seu dia-a-dia.

Para provar a viabilidade desta ideia, 13 pessoas trabalharam arduamente durante 18 meses. No verão de 1992 eles emergiram de um escritório de Sand Hill Road, no Menlo Park, com uma demonstração funcional da ideia inicial. O protótipo se chamava *7 (lê-se “StarSeven”), um controle remoto com uma interface gráfica touchscreen. Para o *7, foi criado um mascote, hoje amplamente conhecido no mundo Java, o Duke. O trabalho do Duke no *7 era ser um guia virtual ajudando e ensinando o usuário a utilizar o equipamento. O *7 tinha a habilidade de controlar diversos dispositivos e aplicações. James Gosling especificou uma nova linguagem de programação para o *7. Gosling decidiu batizá-la de “Oak”, que quer dizer carvalho, uma árvore que ele podia observar quando olhava pela sua janela.

O próximo passo era encontrar um mercado para o *7. A equipe achava que uma boa ideia seria controlar televisões e vídeo por demanda com o equipamento. Eles construíram uma demonstração chamada de MovieWood, mas infelizmente era muito cedo para que o vídeo por demanda bem como as empresas de TV a cabo pudessem viabilizar o negócio. A ideia que o *7 tentava vender, hoje já é realidade em programas interativos e também na televisão digital. Permitir ao telespectador interagir com a emissora e com a programação em uma grande rede de cabos, era algo muito visionário e estava muito longe do que as empresas de TV a cabo tinham capacidade de entender e comprar. A ideia certa, na época errada.

Entretanto, o estouro da internet aconteceu e rapidamente uma grande rede interativa estava se estabelecendo. Era este tipo de rede interativa que a equipe do *7 estava tentando vender para as empresas de TV a cabo. E, da noite para o dia, não era mais necessário construir a infra-estrutura para a rede, ela simplesmente estava lá. Gosling foi incumbido de adaptar o Oak para a internet e em janeiro 1995 foi lançada uma nova versão do Oak que foi rebatizada para Java. A tecnologia Java tinha sido projetada para se mover por meio das redes de dispositivos heterogêneos, redes como a internet. Agora aplicações poderiam ser executadas dentro dos navegadores nos Applets Java e tudo seria disponibilizado pela internet instantaneamente. Foi o estático HTML dos navegadores que promoveu a rápida disseminação da dinâmica tecnologia Java. A velocidade dos acontecimentos seguintes foi assustadora, o número de usuários cresceu rapidamente, grandes fornecedores de tecnologia, como a IBM anunciaram suporte para a tecnologia Java.

Desde seu lançamento, em maio de 1995, a plataforma Java foi adotada mais rapidamente do que qualquer outra linguagem de programação na história da computação. Em 2004 Java atingiu a marca de 3 milhões de desenvolvedores em todo mundo. Java continuou crescendo e hoje é uma referência no mercado de desenvolvimento de software. Java tornou-se popular pelo seu uso na internet e hoje possui seu ambiente de execução presente em navegadores, mainframes, sistemas operacionais, celulares, palmtops, cartões inteligentes etc.

Padronização

Em 1997 a Sun Microsystems tentou submeter a linguagem a padronização pelos órgãos ISO/IEC e ECMA, mas acabou desistindo.[3][4][5] Java ainda é um padrão de fato, que é controlada através da JCP Java Community Process.[6] Em 13 de novembro de 2006, a Sun lançou a maior parte do Java como Software Livre sob os termos da GNU General Public License (GPL). Em 8 de maio de 2007 a Sun finalizou o processo, tornando praticamente todo o código Java como software de código aberto, menos uma pequena porção da qual a Sun não possui copyright.[7]

Características

A linguagem Java foi projetada tendo em vista os seguintes objetivos:

  • Orientação a objetos - Baseado no modelo de Simula67
  • Portabilidade - Independência de plataforma - "escreva uma vez, execute em qualquer lugar" ("write once, run anywhere")
  • Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP, como HTTP e FTP
  • Segurança - Pode executar programas via rede com restrições de execução

Além disso, podem-se destacar outras vantagens apresentadas pela linguagem:

  • Sintaxe similar a C/C++
  • Facilidades de Internacionalização - Suporta nativamente caracteres Unicode
  • Simplicidade na especificação, tanto da linguagem como do "ambiente" de execução (JVM)
  • É distribuída com um vasto conjunto de bibliotecas (ou APIs)
  • Possui facilidades para criação de programas distribuídos e multitarefa (múltiplas linhas de execução num mesmo programa)
  • Desalocação de memória automática por processo de coletor de lixo
  • Carga Dinâmica de Código - Programas em Java são formados por uma coleção de classes armazenadas independentemente e que podem ser carregadas no momento de utilização

Licença

A Sun disponibiliza a maioria das distribuições Java gratuitamente e obtém receita com programas mais especializados como o Java Enterprise System. Em 13 de novembro de 2006, a Sun liberou partes do Java como software livre, sob a licença GNU General Public License.[8] A liberação completa do código fonte sob a GPL ocorreu em maio de 2007.[9]

Exemplos de código

Método main

O método main é onde o programa inicia. Pode estar presente em qualquer classe. Os parâmetros de linha de comando são enviados para o array de Strings chamado args.

public class OlaMundo {
   /**
   * Método que executa o programa
   * public = É visto em qualquer lugar da aplicação
   * static = é iniciado automaticamente pela JVM, sem precisar de uma instância
   * void = Método sem retorno (retorno vazio)
   * main = Nome do método, que é obrigatorio ser este. Recebe como parâmetro um array de String.
   * String[] args = Array de argumentos que podem ser repassados na chamada do programa.
   */
   public static void main(String[] args) {
      System.out.println("Olá, Mundo!"); //Imprime na tela a frase
   }
}

Classes

Exemplo:

public abstract class Animal {
   public abstract void fazerBarulho();
}
 
public class Cachorro extends Animal {
   public void fazerBarulho() {
      System.out.println("AuAu!");
   }
}
 
public class Gato extends Animal {
   public void fazerBarulho() {
      System.out.println("Miau!");
   }
}

O exemplo acima cria a classe Animal e duas classes derivadas de Animal. É importante observar que nas classes derivadas temos a redefinição do método fazerBarulho(). Esta redefinição é classificada como uma sobreposição (override) de métodos. O conceito de sobreposição somente pode ser identificado e utilizado quando temos classes dispostas em um relacionamento de herança.

Java não suporta herança múltipla, devido a possibilidade de uma classe pai ter um método com o mesmo nome de outra classe pai, e gerar possíveis falhas ao chamar o método, e todas as classes em Java derivam de da classe Object. A única possibilidade de se ver herança múltipla em Java é no uso de interfaces, pois uma classe pode herdar várias interfaces.

Classes internas

Java pode ter classes internas. Exemplos:

public class Cavalo extends Animal {
   public void fazerBarulho() {
      System.out.println("RIINCH!");
   }
 
   // Classe interna e privada. Existe só no contexto da classe "Cavalo".
   private class Parasita extends Animal { 
      public void fazerBarulho() {
         System.out.println("SQRRT");
      }
   }
}

Interfaces

Uma interface modela um comportamento esperado. Pode-se entendê-la como uma classe que contenha apenas métodos abstratos. Embora uma classe não possa conter mais de uma super classe, a classe pode implementar mais de uma interface. Exemplo:

public interface Pesado {
   double obterPeso();
}
 
public interface Colorido {
   Color obterCor();
}
 
public class Porco extends Animal implements Pesado, Colorido {
   public void fazerBarulho() {
      System.out.println("Óinc!");
   }
 
   // Implementação da interface Pesado
   public double obterPeso() {
      return 50.00;
   }
 
   // Implementação da interface Colorido
   public Color obterCor() {
      return Color.BLACK;
   }
 
   // Uma propriedade só do porco
   public boolean enlameado() {
      return true;
   }
}

Objetos anônimos

Podemos ter também objetos anônimos, aonde não é necessário instanciar o objeto em uma variável para utilizá-lo. Exemplo:

public class MostraBarulho {
   public static void main(String args[]) {
      new Cavalo().fazerBarulho(); // Objeto anônimo.
 
      // Abaixo um objeto e classe anônimos!
      new Animal() {
         public void fazerBarulho() {
            System.out.println("QUAC!");
         }
      }.fazerBarulho();
   }
}

Ferramentas

Frameworks

É possível utilizar frameworks para facilitar o desenvolvimento de aplicações. Dentre os mais utilizados pode-se destacar:

  • Hibernate ferramenta para ORM
  • Junit ferramenta para auxiliar na criação de testes unitários
  • Log4j ferramenta para facilitar a criação de logs na aplicação
  • Spring ferramenta que auxilia principalmente implementação de injeção de dependências e inversão de controle
  • Struts controlador MVC (Model 2) web

Ambientes de desenvolvimento

É possível desenvolver aplicações em Java através de vários ambientes de desenvolvimento integrado (IDEs). Dentre as opções mais utilizadas pode-se destacar:

  • BlueJ — um ambiente desenvolvido por uma faculdade australiana (considerado muito bom para iniciantes)
  • JCreator — (gratuito/shareware) — um ambiente desenvolvido pela Xinox (recomendado para programadores iniciantes)
  • jEdit — (recomendado para programadores iniciantes)
Emulador do Android no Eclipse, exibindo um simples "Hello World", escrito em JAVA e XML
IDEs completas (recomendado para programadores profissionais)
  • Eclipse — um projeto aberto iniciado pela IBM
  • IntelliJ IDEA (comercial) — uma IDE desenvolvida pela JetBrains
  • JBuilder — um ambiente desenvolvido pela empresa Borland
  • JDeveloper (gratuito OTN) — uma IDE desenvolvida pela empresa Oracle
  • NetBeans (software livre) — uma IDE desenvolvida pela Sun Microsystems
Outras IDEs (menos populares)
  • Gel (IDE) — open source
  • Greenfoot — bem parecido com o BlueJ
  • JGRASP — bom para intermediários, feito pela equipe do Projeto GRASP
  • Java Studio Creator/Enterprise (gratuito SDN) um ambiente criado pela empresa Sun Microsystems
  • Workshop for WebLogic (comercial/desenvolvedor) um ambiente criado pela empresa Oracle
  • WebSphere Studio Application Developer um ambiente criado pela empresa IBM

Extensões

Extensões em Java:

  • J2ME (Micro-Edition for PDAs and cellular phones)
  • J2SE (Standard Edition)
  • J3D (A high level API for 3D graphics programming)
  • JAAS (Java Authentication and Authorization Service)
  • JAIN (Java API for Integrated Networks)
  • Java Card
  • JMX (Java Management Extensions)
  • JavaFX
  • JSF (JavaServer Faces)
  • JSP (JavaServer Pages)
  • JavaSpaces
  • JCE (Java Cryptography Extension)
  • JDBC (Java Database Connectivity)
  • JDMK (Java Dynamic Management Kit)
  • JDO (Java Data Objects)
  • JEE (Enterprise Edition)
  • Jini (a network architecture for the construction of distributed systems)
  • Jiro
  • JMF (Java Media Framework)
  • JMI (Java Metadata Interface)
  • JMS (Java Message Service)
  • JNDI (Java Naming and Directory Interface)
  • JNI (Java Native Interface)
  • JOGL (A low level API for 3D graphics programming, using OpenGL)
  • JSML (Java Speech API Markup Language)
  • JXTA (open source-based peer-to-peer infrastructure)
  • MARF (Modular Audio Recognition Framework)
  • OSGi (Dynamic Service Management and Remote Maintenance)
  • SuperWaba (JavaVMs for handhelds)

Certificações

Existem 8 tipos de certificações[10] da Sun Microsystems para Java:

  • Sun Certified Enterprise Architect (SCEA)
  • Sun Certified Mobile Application Developer (SCMAD)
  • Sun Certified Developer For Java Web Services (SCDJWS)
  • Sun Certified Business Component Developer (SCBCD)
  • Sun Certified Web Component Developer (SCWCD)
  • Sun Certified Java Developer (SCJD)
  • Sun Certified Java Programmer (SCJP)
  • Sun Certified Java Associate (SCJA)

Cada certificação testa algum tipo de habilidade dentro da plataforma e linguagem Java. Todos os testes são realizados pela empresa Person VUE[11] e são reconhecidos internacionalmente.

Comunidade

A comunidade de desenvolvedores Java reúne-se em grupo denominados JUGs (Java User Groups). No Brasil o movimento de grupos de usuários expandiu-se bastante e tem formado alguns dos maiores grupos de usuários Java do mundo[carece de fontes?], como por exemplo o PortalJava, GUJ e o JavaFree.

Bibliografia

  • Harvey M. Deitel. Java: Como Programar. 6 ed. São Paulo: Pearson education do Brasil, 2005. 1097 p.
  • Apostila Java e Orientação a Objetos, licença Creative Commons, 7ª edição, pela Caelum.

Referências

  1. Java 5 catches up with C# (em inglês). Universidade de Oxford. Página visitada em 10 de janeiro de 2010.
  2. Why Microsoft's C# isn't (em inglês). CNET. Página visitada em 10 de janeiro de 2010.
  3. ↑ Java Study Group
  4. ↑ Why Java™ Was - Not - Standardized Twice
  5. ↑ What is ECMA--and why Microsoft cares
  6. ↑ Java Community Process website
  7. ↑ open.itworld.com - JAVAONE: Sun - The bulk of Java is open sourced
  8. Sun begins releasing Java under the GPL (em inglês). Página visitada em 6 de julho de 2010.
  9. JavaOne opening keynote notes and comments (em inglês). Página visitada em 6 de julho de 2010.
  10. ↑ Java Certification
  11. Person VUE.

Ver também

  • C♯
  • Microsoft .NET
  • Plataforma Java

Ligações externas

  • Página oficial (em inglês)
  • Página oficial (em português)
  • Tutoriais oficiais (em inglês)
  • GUJ - notícias, artigos e fórum (em português)
  • Java no Open Directory Project

Obtida de "http://pt.wikipedia.org/w/index.php?title=Java_(linguagem_de_programa%C3%A7%C3%A3o)&oldid=27810569"

Software

 

Sistema de Gestão de Conteúdo (SGC) - do inglês Content Management Systems (CMS) mas igualmente designada como Conversational Monitor System [nota 1] - é um sistema gestor de websites, e intranets que integra ferramentas necessárias para criar, gerir (inserir e editar) conteúdos em tempo real sem a necessidade de programação de código, cujo objetivo é estruturar e facilitar a criação, administração, distribuição, publicação e disponibilidade da informação. Sua maior característica é a grande quantidade de funções presentes através de complementos (galerias de fotos, gerenciadores de enquetes, gerenciadores de formulários) que podem ser agregados ao SGC.

Podemos dizer que um SGC é semelhante a um framework (um esqueleto) de website pré-estruturado, com recursos básicos de: usuabilidade, visualização e administração já prontamente disponíveis. É um sistema que permite a criação, armazenamento e administração de conteúdos de forma dinâmica, através de uma interface de acesso via Internet.

Um CMS permite que a empresa tenha total autonomia sobre o conteúdo e evolução da sua presença na internet e dispense a assistência de terceiros ou empresas especializadas para manutenções de rotina. Nem mesmo é preciso um funcionário dedicado (webmaster), pois cada membro da equipe poderá gerir seu próprio conteúdo, diminuindo os custos com recursos humanos e ajuda a suplantar barreiras potenciais à comunicação web reduzindo o custo da criação, contribuição e manutenção de conteúdo. A habilidade necessária para trabalhar com um CMS não vai muito além dos conhecimentos necessários para um usuário de um simples editor de texto.

A aparência de um website criado com um SGC é personalizável, através da utilização de temas que podem ser facilmente mudados.

Exemplo de SGC é o Wordpress, um sistema em PHP, Open Source e de altíssima qualidade para gerir blogs ou portais cada vez mais completos. Outros exemplos de SGC são o Liferay e o Joomla, onde é facilmente realizada a edição de conteúdos a partir do próprio site, podendo também ser usado para o gerenciamento de intranet.

Índice

  • 1 Ambientes educacionais baseados em SGC
  • 2 Lista de CMS
  • 3 Literatura
  • 4 Ligações externas
  • 5 Notas

Ambientes educacionais baseados em SGC

Tem-se observado que ferramentas como Gestores de Conteúdo podem se tornar excelentes ambientes para o processo de ensino e aprendizagem e para a organização da informação produzida em ambientes com fins educacionais. Sejam eles em ambientes acadêmicos, sejam em empresariais.

A própria wikipédia pode ser considerada um "gerenciador de conteúdo", assim fomentando a busca, localização e criação de conhecimento em um ambiente distribuído e colaborativo.

Lista de CMS

  • Ver Categoria: Sistemas de gestão de conteúdo

Literatura

  • ECM Enterprise Content Management, Ulrich Kampffmeyer. Hamburg 2006, ISBN 978-3-936534-09-8. Definitions, Scope, Architecture, Components and ECM-Suites in English, French, and German: PDF.

Ligações externas

  • Diretório e teste de sistemas de CMS (em inglês)
  • Joomla! Mitos e Verdades
  • O que é CMS e porque você precisa de um
  • Escolha seu CMS
  • Conheça o CMS Joomla! e Faça um Curso Prático
  • Artigo comparando três dos CMS mais populares: Drupal, Joomla e Wordpress

Notas

  1. ↑ Ver Discussão:Máquina_virtual
Obtida de "http://pt.wikipedia.org/w/index.php?title=Sistema_de_gerenciamento_de_conte%C3%BAdo&oldid=27043970"

Software

 
Plone


Screenshot da instalação padrão
Desenvolvedor Alan Runyan, Alexander Limi, Vidar Andersen e o Plone Team
Versão estável 3.3.1 (9 de Setembro de 2009)
Sistema Operacional Multiplataforma, Zope
Gênero(s) Gerenciamento de conteúdo (CMS)
Licença GNU General Public License
Página oficial plone.org
Portal das Tecnologias de informação

Plone é um Sistema de Gerenciamento de Conteúdo (CMS, de Content Management System) escrito na linguagem Python e que roda sobre um Servidor de Aplicações Zope e sobre o framework CMF (Content Management Framework).

O Plone pode ser usado para a construção de portais de informação em intranets, extranets e na Internet. Pode ser usado também para construir sistemas de publicação de documentos ou até como ferramenta para trabalho colaborativo. O Plone roda em praticamente qualquer plataforma.

Índice

  • 1 Histórico
  • 2 Tutoriais
  • 3 Ver também
  • 4 Ligações externas

Histórico

O projeto Plone surgiu em 1999, com Alan Runyan, Alexander Limi e Vidar Andersen. Em 2004 surgiu a Fundação Plone, para proteger e promover seu uso. É desenvolvido em código aberto, adotado por milhares de desenvolvedores no mundo todo, inclusive pelo website do FBI.

Tutoriais

  • Comunidade Zope Brasileira
  • Artigos sobre Plone

Ver também

  • Framework
  • Django outro framework para Web em Python
  • Turbogears outro framework para Web em Python
  • [Streaming SERPRO[1] Vídeo da palestra do Comitê Técnico de Implementação de Software Livre

Ligações externas

  • Página oficial
Obtida de "http://pt.wikipedia.org/w/index.php?title=Plone_(software)&oldid=27467249"

Software

 

MAIS INFORMAÇÕES DO SETOR DE SOFTWARE

Governança em T.I (Governança corporativa)

Governança corporativa (português brasileiro) ou governo das sociedades ou das empresas (portuguê [ ... ]


Microsoft SharePoint Designer

Microsoft SharePoint Designer Desenvolvedor Microsoft Plataforma x86 e x64  [ ... ]


Processo de desenvolvimento de software

Um processo de desenvolvimento de software é um conjunto de atividades, parcialmente ordenadas, c [ ... ]


Software colaborativo

Software colaborativo (ou groupware) é um software que apoia o trabalho em grupo, coletivamente.  [ ... ]


Hardware

O hardware pode ser definido como um termo geral para equipamentos como chaves, fechaduras, dobra [ ... ]


Model-view-controller (MVC)

article thumbnail


Um diagrama simples exemplificando a relação entre Model, View e Controller. As linhas sól [ ... ]


Computação em nuvem

article thumbnail

A nuvem (cloud) é o símbolo da Internet. O conceito de computação em nuvem (em inglê [ ... ]


Indústria de software

A Indústria de Software é o conjunto dos negócios que envolvem o desenvolvimento, a manutençã [ ... ]


Plone

article thumbnail

Plone

Screenshot da instalação padrão Desenvolvedor Alan Runyan, Alexander L [ ... ]


XMI (ou XML Metadata Interchange)

XMI (ou XML Metadata Interchange) é um padrão da OMG (grupo de gerenciamento de objetos) para tr [ ... ]


Firewall

article thumbnail

Firewall separando redes LAN e WAN A Wikipédia possui o portal:
Portal das tecno [ ... ]


UML

article thumbnail

A Unified Modeling Language (UML) é uma linguagem de modelagem não proprietária de terceira gera [ ... ]


Blog corporativo

Blogs Corporativos podem ser traduzidos em: uso de blogs dentro do cotidiano das empresas. O Blog  [ ... ]


CRM - Customer relationship management

Customer Relationship Management (CRM) é uma expressão em inglês que pode ser traduzida para a l [ ... ]


dotProject

Software Livre - dotProject
dotProject Desenvolvedor Adam Donnison, Karen Chisholm, Gregor Er [ ... ]


ITILv3

A versão 3 da biblioteca ITIL foi lançada mundialmente em maio de 2007 como uma atualização comp [ ... ]


Algoritmos

article thumbnail

Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das q [ ... ]


ArgoUML

ArgoUML é uma aplicação open source que usa UML para modelar o desenho de software de computado [ ... ]


Gerenciamento de serviços de TI

O gerenciamento de serviços de TI tem por objetivo prover um serviço de TI com qualidade e alinh [ ... ]


Software

article thumbnail


OpenOffice.org Writer. Software, logiciário ou suporte lógico é uma sequência de in [ ... ]


Melhoria de Processos do Software Brasileiro

O MPS.BR ou Melhoria de Processos do Software Brasileiro é simultaneamente um movimento para a melh [ ... ]


Banco de dados

article thumbnail

Bancos de dados, ou bases de dados (em Portugal), são coleções de informações que se relacion [ ... ]


Desenvolvimento web

article thumbnail

Desenvolvimento web é o termo utilizado para descrever o desenvolvimento de sítios, na Internet  [ ... ]


Sistema de gerenciamento de conteúdo

Sistema de Gestão de Conteúdo (SGC) - do inglês Content Management Systems (CMS) mas igualmente d [ ... ]


Teoria de sistemas

A teoria de sistemas estuda, de modo interdisciplinar, a organização abstrata de fenômenos, indep [ ... ]


PHP

article thumbnail

PHP Paradigma procedural, reflexão, orientação a objetos, funcional Surg [ ... ]


Sharepoint

Plataforma de colaboraçãoO Windows Sharepoint Services (WSS) é uma plataforma de colaboração vo [ ... ]


Software livre nos governos

Nos últimos anos a questão do software livre nos governos está na ordem do dia. Alguns governos c [ ... ]


Hierarquia DIKW

DIKW é uma hierarquia informacional utilizada principalmente nos campos da Ciência da Informação [ ... ]


NF-e ou Nota fiscal eletrônica

article thumbnail

Pela definição oficial brasileira, uma nota fiscal eletrônica (NF-e) é "um documento de existên [ ... ]


C♯

article thumbnail


C♯ Paradigma Orientação a objetos
estruturado
imperativo Surgido em 2001  [ ... ]


Rede social

article thumbnail


Rede social Uma rede social é uma estrutura social composta por pessoas ou organizaçõ [ ... ]


Computador

article thumbnail

Um assistente pessoal digital. Um computador pessoal. Columbia, um supercomp [ ... ]


Modelo em cascata

article thumbnail

O modelo em cascata é um modelo de desenvolvimento de software seqüencial no qual o desenvolvime [ ... ]


Kohana Framework

Kohana é um framework para aplicações web de código aberto, escrito em PHP 5 que adota o padr [ ... ]


Gestão estratégica de empresas

Gestão estratégica de empresas (em língua inglesa: strategic enterprise management — SEM) é um [ ... ]


Zope


Zope Desenvolvedor Zope Corporation Plataforma multiplataforma Versão es [ ... ]


ISO da segurança da informação

ISO 27001 Origem: Wikipédia, a enciclopédia livre. ISO/IEC 27001 é um padrão para sistema de g [ ... ]


Comércio eletrônico

Comércio eletrônico (português brasileiro) ou comércio electrónico (português europeu) ou e-co [ ... ]


Sistema de informação de gestão

Sistema de informação de gestão ou sistema de informações gerenciais (SIG; do inglês, manageme [ ... ]


Nanotecnologia do carbono

article thumbnail

A nanotecnologia do carbono é o ramo da nanotecnologia que estuda a manipulação de estruturas de  [ ... ]


CMMI

O CMMI (Capability Maturity Model Integration) é um modelo de referência que contém práticas (Ge [ ... ]


Lotus Notes

article thumbnail

Lotus Tipo Corporação privada Indústria Software Produtos Ver lista com [ ... ]


IBM Rational Unified Process

O RUP, abreviação de Rational Unified Process (ou Processo Unificado Racional), é um processo pro [ ... ]


Novas tecnologias de informação e comunicação

Comunicação Novas tecnologias de informação e comunicação Tipos Social • M [ ... ]


Business Intelligence - Inteligência empresarial

Inteligência empresarial (em inglês Business Intelligence), refere-se ao processo de coleta, orga [ ... ]


Desenvolvimento de software

Na computação, o desenvolvimento de software é o ato de elaborar e implementar um sistema computa [ ... ]


Miniaturização

Miniaturização é o processo de produção de objetos de consumo cada vez menores (miniaturas), in [ ... ]


ERP

Sistemas Integrados de Gestão Empresarial (SIGE ou SIG), em inglês Enterprise Resource Planning (E [ ... ]


Antivírus

article thumbnail

Os antivírus são programas de computador concebidos para prevenir, detectar e eliminar vírus de [ ... ]


Artigos Relacionados

Pluriverso - Inteligência em Tecnologia

Pluriverso - Inteligência em Tecnologia


Ed.Centro Sul, 2°Andar, SCIA, Qd. 14, Conj. 07, Lt 1, S. Ind.
CEP: 71.250-135, Brasília-DF.  
Como Chegar
| Atendimento  


+55 (61) 4141.5555

Serviços

Desenvolvimento de Software
Oursourcing de T.I
Consultoria em Tecnologia
Licitação com o Governo

Produtos

ERP, CRM, Colaboração
Cloud Computing

Soluções
Soluções em Outsourcing de Tecnologia
Integração de Software
Avaliação de nível tecnológico
Cálculo de custos de T.I
Softwares customizados


Porque escolher a Pluriverso

Blog Corporativo
Blog do Software

Conheça a Pluriverso
quem somos
verticais de atuação
portifólio
casos de sucesso

Atendimento
contatos
sala de imprensa
como chegar
Trabalhe conosco

desenvolvimento de software