outubro/2008 engenharia do computação sistema de gestão de manutenção desenvolvimento equipe...
TRANSCRIPT
Outubro/2008Engenharia do Computação
Sistema de Gestão de Manutenção
Desenvolvimento
Equipe
Antônio DeyvysonDiego NascimentoPaollo MacielMarcelo PereiraRafael Pinto
Outubro/2008Engenharia do Computação
Arquitetura do Software
PROJ ETO MMS
M C V
Active Record
Nhibernate
Nvelocity J avaScript
HTML
Banco de Dados
Outubro/2008Engenharia do Computação
Padrão MVC
PROJ ETO MMS
M C V
Active Record
Nhibernate
Nvelocity J avaScript
HTML
Banco de Dados
Outubro/2008Engenharia do Computação
Características do MVC
Arquitetura Dividida basicamente em 3 camadas (Model, View e Controller).
Separa a lógica de negócios(Model) da lógica de apresentação(View).
Diminui a complexidade da aplicação
Facilita a manutenção do código.
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Fluxo de uma aplicação MVC
1. Usuário gera um evento (Ex: aperta um botão).2. Controller solicita dados do Model.3. Model envia os dados para o controller.4. Controller trata os dados e envia para a view.5. View exibe o resultado para o usuário.
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Fluxo de uma aplicação MVC
1. Usuário gera um evento (Ex: aperta um botão).2. Controller solicita dados do Model.3. Model envia os dados para o controller.4. Controller trata os dados e envia para a view.5. View exibe o resultado para o usuário.
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Fluxo de uma aplicação MVC
1. Usuário gera um evento (Ex: aperta um botão).2. Controller solicita dados do Model.3. Model envia os dados para o controller.4. Controller trata os dados e envia para a view.5. View exibe o resultado para o usuário.
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Fluxo de uma aplicação MVC
1. Usuário gera um evento (Ex: aperta um botão).2. Controller solicita dados do Model.3. Model envia os dados para o controller.4. Controller trata os dados e envia para a view.5. View exibe o resultado para o usuário.
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Fluxo de uma aplicação MVC
1. Usuário gera um evento (Ex: aperta um botão).2. Controller solicita dados do Model.3. Model envia os dados para o controller.4. Controller trata os dados e envia para a view.5. View exibe o resultado para o usuário.
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Fluxo de uma aplicação MVC
1. Usuário gera um evento (Ex: aperta um botão).2. Controller solicita dados do Model.3. Model envia os dados para o controller.4. Controller trata os dados e envia para a view.5. View exibe o resultado para o usuário.
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Projeto Castle MonoRail
Provê um framework MVC para .NET 2.0
Baseado no framework Ruby On Rails para linguagem ruby
Compatível com Mono (Framework .NET para Linux)
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Estrutura - MonoRail
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Fluxo - MonoRail
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Exemplo: Validação do Usuário - Evento
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Exemplo: Validação do Usuário - Controller
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Camada Model
PROJ ETO MMS
M C V
Active Record
Nhibernate
Nvelocity J avaScript
HTML
Banco de Dados
Outubro/2008Engenharia do Computação
Métodos de Consulta
Aplicação WEB
Open connect Database ..
BANCO DE
DADOS
Consultas SQL
Repetições de Códigos;
Consultas complexas;
Tratamento das consultas SQL é feita por parte do desenvolvedor;
Difícil debug das consultas;
Outubro/2008Engenharia do Computação
ORM – Mapeamento Objeto Relacional
Permite utilização de POO (Programação Orientado a Objeto);
Abstração do Bando de Dados;
Impedância objeto/Relacional – diferença que existe entre os modelos de dados relacionais e orientados a objeto;
Modelo Orientado a Objetos
BANCO DE DADOS
Modelo Relacional
?
Outubro/2008Engenharia do Computação
ORM – Mapeamento Objeto Relacional
Modelo Orientado a Objetos BANCO DE DADOS
Modelo Relacional?
- Organiza todos os dados em linhas e colunas;
- Cada linha representa um registro, e as colunas representam os diversos dados contidos em um registro;
- Tabelas adicionais são criadas para conter as informações “relacionadas”;
- Não está limitado a manter as informações em linhas e colunas;
- O desenvolvedor cria classe de informação;
- Cada registro (objeto) é uma instância específica daquela classe;
- São definidos métodos, que agem sobre os dados descritos pela classe.
Outubro/2008Engenharia do Computação
ORM – Mapeamento Objeto Relacional
Modelo Orientado a Objetos BANCO DE DADOS
Modelo RelacionalO RM
ORM tem por objetivo diminuir as diferenças entre objetos e tabelas de um SGBD;
Oferece formas para o desenvolvedor definir como que seus objetos serão persistidos (salvos), como podem ser obtidos e manipulados do banco de dados;
Outubro/2008Engenharia do Computação
Tecnologias ORM
As tecnologias utilizadas:
NHibernate;
Castle Active Record;
Outubro/2008Engenharia do Computação
NHibernate
Ferramenta open-source;
Otimizações para cada SGBD que suporta;
Segurança contra SQL Injection;
Suporte a Lazy Loading;
Ferramenta sólida, baseada no Hibernate, utilizado
pelos desenvolvedores Java.
Outubro/2008Engenharia do Computação
Maquina.csXML+
Maquina.hbm.xml
Hibernate.cfg.xml
NHibernate - Implementação
tab_maquina
NHibernate
Outubro/2008Engenharia do Computação
NHibernate - Implementação
T ab_ m ach ine
Outubro/2008Engenharia do Computação
Maquina.cs
NHibernate - Implementação
namespace MMS.Models{ using System; using NHibernate.Expression;
public class Maquina { private int id; private string codigo; private DateTime dataAquisicao; private DateTime dataGarantia; private float tensaoOperacao; private float correntePartida; private float correnteNominal; private float frequencia; private float coeficientePartida; private string informacaoExtra;
namespace : espaço de nome onde conterá as classes com os métodosda camada model.
NHibernate
Outubro/2008Engenharia do Computação
Maquina.cs
NHibernate - Implementação
NHibernate
public int Id { get { return id; } set { id = value; } }
public string Codigo { get { return codigo; } set { codigo = value; } }
public DateTime DataAquisicao { get { return dataAquisicao; } set { dataAquisicao = value; } }
Definição dos métodos da classe máquina
Outubro/2008Engenharia do Computação
XMLM ach in e.h bm .xm l
NHibernate - Implementação
<?xml version="1.0" encoding="utf-8" ?><hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly=“MMS" namespace=“MMS.Model">
<class name=“tab_maquina"> <id name=“id"> <generator class=“increment" /> </id> <property name=“codigo" /> <property name=“data_aquisicao" /> <property name=“data_garantia" /> <property name=“tensao_operacao" /> <property name=“corrente_partida" /> <property name=“corrente_nominal" /> ... </class>
</hibernate-mapping>
.hbm :é uma convenção usada pelo NHibernate para reconhecer automaticamente o arquivo como um arquivo de mapeamento
Outubro/2008Engenharia do Computação
Hibernate.cfg.xml
NHibernate - Implementação
<?xml version="1.0" encoding="utf-8" ?><hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider </property> <property name="dialect">NHibernate.Dialect.MySQLDialect </property> <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver </property> <property name="connection.connection_string">Data Source=MMS.sdf </property> <property name="show_sql">true </property> </session-factory> </hibernate-configuration>
Outubro/2008Engenharia do Computação
Castle Active Record
Faz parte do Castle Project;
Não há necessidade de implementação
de arquivos xml, para mapear as tabelas
do bando de dados;
Encapsulamento do NHibernate e XML;
Aumento na produtividade;
Outubro/2008Engenharia do Computação
Active Record - Implementação
XML+ Maquina.csMaquina.hbm.xml
Web.config
Active Record Maquina.cs
tab_maquina
NHibernate
Outubro/2008Engenharia do Computação
Active Record - Implementação
Maquina.csMaquina.hbm.xmlM aquina.csMaquina.cs
namespace MMS.Models{ using System; using Castle.ActiveRecord; using NHibernate.Expression;
public class Maquina { private int id; private string codigo; private DateTime dataAquisicao; private DateTime dataGarantia; private float tensaoOperacao; private float correntePartida; private float correnteNominal; private float frequencia; private float coeficientePartida; private string informacaoExtra;
Outubro/2008Engenharia do Computação
Active Record - Implementação
Maquina.csMaquina.hbm.xmlM aquina.csMaquina.cs
[PrimaryKey(“id”)] public int Id { get { return id; } set { id = value; } }
[Property(“codigo”)] public string Codigo { get { return codigo; } set { codigo = value; } }
[Property(“data_aquisicao”)] public DateTime DataAquisicao { get { return dataAquisicao; } set { dataAquisicao = value; } }
XML
NHibernate
Outubro/2008Engenharia do Computação
Active Record - Implementação
Web.config
<activerecord isWeb="true"> <config> <add key="hibernate.connection.driver_class" value="NHibernate.Driver.MySqlDataDriver" /> <add key="hibernate.dialect" value="NHibernate.Dialect.MySQLDialect" /> <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" /> <add key="hibernate.connection.connection_string" value="Database=mms;Data Source=192.168.0.100;User Id=root;Password=" />
</config> </activerecord>
Outubro/2008Engenharia do Computação
Camada View
PROJ ETO MMS
M C V
Active Record
Nhibernate
Nvelocity J avaScript
HTML
Banco de Dados
Outubro/2008Engenharia do Computação
Chamadas de Páginas
Outubro/2008Engenharia do Computação
Página WEB - HTML
Principal – Ex: User
Shared – User_form
Camada – View Camada – Controller
UserController.cs
Camada – Model
User.cs
Outubro/2008Engenharia do Computação
Tecnologias da VIEW
NVelocity
Linguagem CSS
Linguagem HTML
Linguagem Java Script
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
NVelocity
É uma ferramenta que possibilita gerar código a partir de templates, seja código C#, SQL, páginas Web, PostScript entre outros;
O NVelocity é uma Template Language, que possibilita de uma forma simples incorporar conteúdos dinâmicos;
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
NVelocity
Usa referências para inserir conteúdos dinâmicos; Ex: #set ( $a = “Midgard” )
Código para editar usuário:#set ($formTitle = "Atualização de Dados (Usuário do
Sistema)")#set ($formAction = "update")#set ($updateId = "user.Id")#parse ("shared/forms/user_form.vm")
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Linguagem CSS
CSS é uma linguagem para estilos que define o layout de documentos;
É usado para formatar conteúdos estruturados;
Controle do layout de vários documentos a partir de uma simples folha de estilos;
Maior precisão no controle do layout;
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Linguagem CSS
Aplicação de diferentes layouts para servir diferentes mídias (tela, impressora, etc.);
Emprego de variadas, sofisticadas e avançadas técnicas de desenvolvimento.
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Linguagem CSS
Código CSS para definição de topo de página.
div#top{
background-image:url(../images/topo_fundo.jpg);background-color: #fff;width: 100%;height: 85px;
}
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Linguagem HTML
Significa Hyper Text Markup Language;
É a linguagem de marcação do hipertexto, na qual são escritas as páginas web;
Define exatamente a estrutura da página;
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Linguagem HTML
Código HTML da página principal:...<div id="center"> <table class="center"><tr> <td class="menu"> <div> #submenu_begin("Administração do Sistema") #submenu_item("Cadastro de Setores" "sector" "new") #submenu_item("Cadastro de Funcionários" "employee"
"new") #submenu_item("Cadastro de Usuário" "user" "new") #submenu_end()...
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Linguagem JavaScript
Validação dos formulários;
Interação com a página;
Oferece tipagem dinâmica;
Oferece bom suporte a expressões;
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Estrutura da View
Outubro/2008Engenharia do Computação
Código CSS
Outubro/2008Engenharia do Computação
Estrutura da View
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Estrutura da View
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Sistema
Outubro/2008Engenharia do Computação
Outubro/2008Engenharia do Computação
Banco de Dados
PROJ ETO MMS
M C V
Active Record
Nhibernate
Nvelocity J avaScript
HTML
Banco de Dados