Centro Universitário Metodista Benne1 Rio de Janeiro, Dezembro de 2009 Rafael Polo e Sabrina Arêas
Contexto 60 s - Primeiros sistemas de informação corporativos. 70 s Desenvolvimento e comercialização do microprocessador. Crise do Software. 80 s Popularização dos PCs. A informática perde seu único status de técnica industrial. 90 s Início da World Wide Web. Comércio eletrônico e interação multimídia. HTTP e URLs. 2000 Redes Sociais e REST. Crescimento exponencial, 20% da população mundial online.
Bem- vindo ao Século XXI Comunicação Instantânea Mais PCs que TVs Participação/Colaboração APIs Ecossistema de Informação Softwares migram pra Web Economia Digital Mobilidade Governo Eletrônico Online integra o Offline Web 2.0
Web 2.0 Novas técnicas para os novos usos da recuperação e representação da informação. URLs + REST um mundo de recursos Transferência de Estado Representacional (Representational State Transfer) é uma técnica de engenharia de software para sistemas hipermídia distribuídos, como é a própria World Wide Web. Sistemas RESTful maximizam o uso de interfaces bem definidas pré- existentes e minimizam a necessidade de novas camadas de abstração ao sistema. Javascript + XML requisições assíncronas Os navegadores contemporâneos com eficazes interpretadores javascript, manipulam o DOM (Document Object Model) permitindo interfaces dinâmicas tão poderosas quanto os sistemas desktops.
Agilidade Andar sob a água e concluir os requisitos de um software é tarefa fácil se ambos estão congelados. A Engenharia de Software não para de se renovar em suas breves quatro décadas de existência. Hoje, boa parte do mercado vêm exigindo agilidade na abordagem do desenvolvimento de sistemas de informação. Os sistemas devem se adaptar aos modelos de negócio, não o contrário. E os requisitos mudam com frequência. Metodologias ágeis vêm conquistando espaço e demonstrando eficiência ao diminuir o número de decisões a serem tomadas no ciclo de desenvolvimento. Novas técnicas e conceitos como Convenção sobre Configuração para ganhar simplicidade sem perder flexibilidade.
Ruby on Rails É um Meta- framework Open- Source Inspiração em UNIX. (scripts de console, gem, rake) Arquitetura MVC DRY (Don t Repeat Yourself) Ótima documentação, uma comunidade engajada Utilitários de testes e geração de documentação Sistema de Roteamento, Cache e Template Auxiliadores de AJAX Repositório global de métodos (rubyforge.org) Baixa curva de aprendizado Escalável e em continua melhoria
Estudo de Caso mostre.me Um sistema de redirecionamento de URLs com estatísticas na Web em apenas 12 horas.
Estudo de Caso - baixogavea.com Um sistema colaborativo na Web em apenas 35 horas de modelagem e desenvolvimento.
Estudo de Caso - baixogavea.com Um sistema colaborativo na Web em apenas 35 horas de modelagem e desenvolvimento.
Arquitetura MVC no Rails
Banco de dados Esquema universal e um único arquivo para alterar entre todos os SGBDs. config/databases.yml db/schema.rb
AcIve Record Abstração, manipulação e persistência dos modelos do domínio. O Active Record trabalha criando um mapeamento objetorelacional (ORM) entre os objetos Ruby da aplicação e as tuplas das tabelas no banco de dados. Os nomes das tabelas são entendidos como sendo o plural da classe do objeto manipulado. O Active Record determina os campos da tabela, eliminando a necessidade de definir métodos básicos de acesso para cada campo. Chaves estrangeiras (foreign keys) recebem seus nomes baseado no nome da tabela seguido por _id. Após a criação de um objeto, um novo registro é adicionado na tabela, quando um objeto é atualizado, o registro correspondente na tabela também é atualizado. Elimina a necessidade de usar SQL para manipular os dados.
Voto < AcIveRecord Abstração, manipulação e persistência dos votos.
Console: Banda < AcIveRecord Abstração, manipulação e persistência das bandas.
User < AcIveRecord Abstração, manipulação e persistência dos usuários.
User < AcIveRecord Abstração, manipulação e persistência dos usuários.
Roteamento Solicite o que queres e encaminharei a quem sabe. O Roteamento no Rails é um dos conceitos mais inovadores e importantes do framework, que conecta as requisições HTTP aos controladores do sistema. URLs devem apontar recursos. http://baixogavea.com/bandas/r http://baixogavea.com/chico- buarque http://baixogavea.com/the- beatles/rubber- soul http://baixogavea.com/usuario/sabrina Análogo à: Bandas.index() Bandas.index(:letra) Bandas.show(:banda) Albuns.show(:banda, :album) Users.show(:user) config/routes.rb
Controladores Em geral, um controlador possui ações referentes aos métodos CRUD de um dado modelo. Cada método de um controlador corresponde a uma ação, que gera uma saída através dos templates. Ação show(:banda) de BandasController
Controle Ações login e logout em UserController e filtro em ApplicationController para toda ação new. /app/controllers/users_controller.rb /app/controllers/application_controller.rb
Templates Camada visual e representação dos modelos. /app/views/layouts/geral.rhtml
Templates Camada visual e representação dos modelos. /app/views/bandas/show.rhtml
Conclusão Tudo são objetos Ruby Não precisa reiniciar servidor com mudanças no código Separação entre ambiente de desenvolvimento, teste e produção Foco na lógica dos modelos do domínio da aplicação Projeto integrado, mesma linguagem para: Configuração do Projeto Banco de Dados Template Tasks Código- fonte: http://extrapolo.com/opensrc/baixogavea/ http://extrapolo.com/opensrc/mostre/