Computação: do ábaco aos dias atuais Rodrigo Assad Agenda • • • • Introdução O Inicio Grandes áreas O que vem por ai .... Introdução • Atualmente a sociedade não vive mais sem a utilização de computadores e os seus sistemas de informação. • Mas o que é um computador? Introdução • Para muitos um computador simboliza o futuro. • No cinema e na televisão vemos maquinas grandes, complexas, cheias de luzes • Geralmente o computador tem personalidade: frio, calculista, impessoal. • O operador do computador é visto como gênio, misterioso uma pessoa diferente. Introdução • Mas o que é verdade Introdução • O cenário é bem teatral • O computador não é resultado de um cientista maluco • Ele surgiu da necessidade crescente de se fazer cálculos • Os ancestrais do computador tem mais de 3000 anos O Início • Se levarmos em conta que o termo COMPUTAR, significa fazer cálculos, contar, efetuar operações aritméticas, COMPUTADOR seria então o mecanismo ou máquina que auxilia essa tarefa, com vantagens no tempo gasto e na precisão. O Início • Inicialmente o homem utilizou seus próprios dedos para essa tarefa, dando origem ao sistema DECIMAL e aos termos DIGITAL e DIGITO . Para auxílio deste método, eram usados gravetos, contas ou marcas na parede O Início • Tábuas de argila foram desenterradas por arqueólogos no Oriente Médio, próximo à Babilônia, contendo tabuadas de multiplicação e recíprocos, acredita-se que tenham sido escritas por volta de 1700 a.C. e usavam o sistema sexagesimal (base 60), dando origem às nossas atuais unidades de tempo O Início TimeLine Grandes áreas • • • • • Engenharia de Software Arquitetura de Computadores Redes e Sistemas Distribuídos Teoria da Computação Inteligência Artificial Grandes áreas • Engenharia de software – Não mais aprendemos uma linguagem que atenda uma determinada necessidade – Atualmente temos plataformas de desenvolvimento – Uma briga enorme entre Java e .NET – Funcionam em quase qualquer dispositivo Grandes áreas Programação OO • OO significa orientada a objetos • Não vemos mais programas como rotinas mas sim como objetos • O código fica mais fácil • A manutenção fica mais fácil • A reusabilidade fica mais fácil • É o paradigma mais utilizado atualmente • Java e VB são bons exemplos Novos paradigmas • Temos a programação orientada a agentes – Vemos o mundo como unidades que podem interoperar • Programação orientada a aspectos – Os aspectos do mundo são quem nos interessam Conceitos • Como vemos programar é a arte de representar situações do mundo real dentro de um software • Para isso o ferramental esta ai • Agora so basta escolher seu compilador e começar???? • Será so isso? Linguagens • • • • • • • • C : Para programação baixo nível Assembler : Para programação baixo nível Java : sistemas servidores e embarcados .Net : sistemas servidores, sistemas em descktop e embarcados (especialmente C#) Delphi : sistemas em descktop Visual Basic : sistemas em descktop PHP: Web Natural e Cobol: Para Mainframes Frameworks • Inicialmente se escrevia código em uma linguagem e este código so funcionava em uma plataforma • As linguagens foram portadas para as plataformas mas parte dos códigos precisavam ser rescritos • Isso é custoso mas já é bom Frameworks • Os frameworks de desenvolvimento estão facilitando as escrita de apenas um código que possa funcionar em qualquer tipo de dispositivo – Supercomputadores, servidores, PC’s, palmtops, celulares, smart cards Frameworks • Atualmente existe uma briga no mercado – Java x .NET – Para celuares: Java x .NET x Brew x Symbian • Cada uma tem seus pontos fortes e fracos mas sem dúvida serão as linguagens que terão mais espaço no mercado Ferramentas • Compiladores: usados para “compilar” o programa escrito em uma linguagem (Delphi, Visual C, Eclipse, JBuilder, WSAD, Visual Studio .NET, ...) • Gerencia de configuração: CVS, Clercase, Subversion, ... Ferramentas • Modelagem: Rose, together, visio, Jude, Erwin, ... • Acompanhamento de projeto: Bugzilla, Project, Xplanner, ... • Testes : Ant, JMeter, Wast, Junit, ... Metodologias • RUP • XP Processo • ProSCes, baseado no RUP • Define os entregáveis : modelos de dados, arquitetura de aplicação, ... • Em caso de uma falha no sistema entregue o processo auxilia a definir onde houve a falha e o que se deve fazer para que ela não ocorra mais Cargos • • • • • • • • Testador de software Engenheiro de software Arquiteto de software Arquiteto de teste Gerente de configuração Engenheiro de testes Analista de sistemas Gerente de projetos Componentes • Atualmente se quebra o software em componentes que podem ser reutilizados • Temos hoje componentes para a maioria das tarefas • Existem empresas que apenas produzem e vendem componentes no mercado Componentes • Sistemas operacionais se utilizam muito deste conceito • Facilitam a reutilização de código • Facilitam o desenvolvimento de grandes sistemas • Facilitam o desenvolvimento de softwares por empresas diferentes Grandes áreas • Arquitetura de computadores – Será que vem ai o computador quantico? – Novas tecnologias que permitam cada vez mais a miniatuarização e aumento da capacidade de processamento – Clusters – Processamento paralelo Grandes áreas • Redes e sistemas distribuídos – – – – – – – Segurança da Informação Protocolos de rede Wireless Topologias Sistemas redundantes Alta disponibilidade Tolerância a falhas Grandes áreas • Banco de Dados • Computadores são adequados para armazenar e manipular dados rapidamente • O SGBD (Sistema de Gerenciamento de Banco de Dados) é o software responsável por estas funcionalidades • Existes SGBD para cada tipo de aplicações: – Pequeno volume e pequenos sistemas: Access, FoxPro, Paradox, dBase IV, MySql, Postgres – Grande porte: Oracle, DB2, SQLServer, Ingres e Informix O SGBD • O SGBD é um programa que armazena os dados e permite que eles sejam acessados qualquer momento • SGBD’s podem armazenar vários Gb dados • Independente do tamanho dos arquivos de dados o acesso aos dados deve ser rápido • Outra vantagem do SGBD é a existência de uma linguagem de manipulação para os dados (SQL) O SGBD • Assim como os sistemas operacionais o SGBD pode ser acesso pelo usuário como por outro programa • O SGBD também possui um núcleo que tem a responsabilidade de manipular com os arquivos. Fundamentos de Bancos de Dados • Toda informação em um SGBD fica armazenado em uma tabela • Cada linha recebe o nome de registro • Cada coluna recebe o nome de campo, cada campo possui um tipo que é definido pelo pessoa que criou a tabela Fundamentos de Bancos de Dados • Mas um sistema não é composto apenas por uma tabela. Então como os dados passam a ter sentido? • Atualmente a maneira mais usual é a de se relacionar os dados utilizando funcionalidades do SGBD. • Tais bancos de dados são chamados de bancos de dados relacionais Fundamentos de Bancos de Dados • Além dos sistemas relacionais existem ainda modelos hierárquicos e orientados a objetos • Podemos relacionar os dados em uma tabela de várias maneiras: – Um pra um – Um pra muitos – Muitos para muitos Linguagem de manipulação de dados • SQL – É a linguagem que esta no coração do SGBD – É semelhante a uma linguagem de programação – Foi desenvolvida pela IBM Considerações finais • Os bancos de dados podem ser distribuídos – Permitem a utilização de dados localizados em servidores geograficamente distantes – Devido as limitações das redes geralmente esta distribuição e feita em servidores localizados na rede local Considerações finais • A utilização de um servidor de banco de dados favorece o modelo cliente servidor • Nele temos um servidor central de banco de dados sendo acessado por diversos programas localizados na estações de trabalho Grandes áreas • Inteligência Artificial – – – – Agentes inteligentes Jogos Sistemas especialistas Tomada de decisão O que vem por ai ... • • • • • • O mercado esta cada vez mais saturado Certificações são cada vez mais exigidas Comprovação de experiência Convergência , o que chamamos de NG TV Digital Sistemas estarão cada vez mais voltados a WEB • Centralização do processamento • Empresas de telefonia virando empresas de redes • ....