Documente Academic
Documente Profesional
Documente Cultură
10
1. INTRODUÇÃO
A cada ano que passa mais pessoas tem contato com a internet, e novas ferramentas e
serviços são criados para suprir as necessidades criadas por estes internautas. Com o avanço e
aprimoramento das tecnologias web(linguagens de programação e recursos áudio visuais) e o
aumento da largura de banda, muitas aplicações do desktop1 tem migrado para plataforma
web, outras têm sido desenvolvidas exclusivamente para esta, como é o caso do google, que
disponibiliza a seus usuários uma suíte de escritório via web, contendo os principais recursos
de uma suíte para desktop como o Open Office, outro exemplo são os conversores de vídeos
online como o keepvid.com, sendo que com os sistemas de gerenciamento ou sistema de
apoio a tomada de decisões não é diferente. Os benefícios das aplicações web são vários, entre
eles o espaço em disco, pois geralmente não é necessário instalar nada, os arquivos da
aplicação são alocados em uma máquina remota e executados a partir da mesma,
disponibilidade e acesso dos dados em qualquer parte do mundo, total independência de
sistema operacional e atualizações centralizadas apenas no servidor. A grande dificuldade e
frustração de alguns programadores desktop ao migrarem para a plataforma web é a falta de
ferramentas simples que realmente ajudem no processo de desenvolvimento, pois na
plataforma web o leiaute é criado a partir de código, além de desenvolver as funcionalidades
da aplicação, isso tudo torna o desenvolvimento uma tarefa bastante trabalhosa, cansativa e
monótona. Outras ferramentas através de uma interface gráfica, e com alguns click's
conseguem gerar todo o leiaute porém o código fonte é todo sujo e cheio de coisas
desnecessárias, o que prejudica o desempenho e sua manutenção é quase impossível.
1.1 Justificativa
1.2 Objetivos
Construir uma ferramenta de código fonte aberto, que automatize alguns processos
repetitivos na construção de websites que utilizem tecnologia PHP com banco de dados
relacional.
2. REVISÃO LITERÁRIA
•Tipagem estática: A linguagem é dita tipada de forma estática quando a verificação dos tipos
de dados(variáveis, objetos), é feita em tempo de compilação.
•Tipagem Dinâmica: A linguagem é dita tipada de forma dinâmica quando verificação dos
tipos de dados é feito em tempo de execução(runtime).
•Tipagem fraca: É quando os tipos de dados não são bem definidos ou se misturam, não é
necessário associar o tipo de dado há variável, pois o compilador/interpretador se encarrega
de faze esse tipo de verificação.
•Tipagem forte: É quando os tipo de dados são bem definidos, também é necessário de forma
explicita associar o tipo de dado há variável.
Outra característica importante é forma do artefato gerado, em linguagens
interpretadas, são gerados bytecodes3, que são interpretados por uma maquina virtual e que
posteriormente serão traduzidos em linguagem de maquina. A grande vantagem de linguagens
interpretadas é escrever um código fonte para diversas plataformas com pouca ou nenhuma
mudança no mesmo. Já linguagens compiladas geram arquivos executáveis especificamente
para uma plataforma, isso garante uma alta performance de velocidade sobre as linguagens
interpretadas porém isso impede sua portabilidade, deve-se ao fato de que o código compilado
ser executado sem passar por um intermediário(maquina virtual). O numero de paradigmas
que a linguagem oferece é relevante, algumas linguagens de programação tem diversas
2 Personal digital assistant – assistente pessoal digital.
3 Arquivo intermediário entre linguagem natural estruturada e linguagem de maquina
13
finalidades e são utilizadas para desenvolver qualquer tipo de programa, outras são bem
restritas como é caso de lisp e prolog que são utilizadas na área de inteligencia artificial.
2.2.1 Conceitos.
• Visibilidade: existem três tipos de visibilidade para atributos/métodos são eles private,
protected e public.
14
• Private: O mais restrito de todos, apenas a classe proprietária pode acessar seu
métodos/atributos.
• Protected: O meio termo entre private e public, somente a classe proprietária e suas
descendentes pode visualizar esse tipo atributos/métodos.
• Public: De livre acesso ou seja, qualquer classe pode acessar seus atributos/métodos.
• Abstração: Criação de um modelo de dados abstraindo(coletando/observando) as
principais características e comportamentos de um objeto do mundo real.
• Classe: Coleção de atributos e métodos de uma abstração da realidade, que definem o
objeto e seu comportamento. São divididas em dois grupos classes concretas que
geram instancias e classes abstratas que não geram instancias.
• Objeto: Em POO4 é uma instancia de classe, já na AOO5 pode ser qualquer coisa do
mundo real.
• Encapsulamento: Permite que tanto atributos e métodos sejam privados de
determinada classe, sendo que somente ela terá acesso a tais, Dessa forma garante o
isolando de um possível erro não propagando-o. “ O mecanismo de encapsulamento é
a forma de restringir o acesso ao comportamento interno do objeto”. (BEZERA, 2003,
pg.9).
• Herança: Reutilização de atributos e métodos comum entre classes. “Existem diversas
similaridades entre diferentes classes. Com muita freqüência duas ou mais classes
compartilharam os mesmo atributos e/ou os mesmo métodos. Pelo fato de não
querermos ter que fica escrevendo o mesmo código varias vezes, necessitamos tirar
vantagens destas similaridades”. (AMBLER, 1998, pg.8).
• Polimorfismo: A capacidade do objeto/atributo/método, de ter varias formas distintas
porém pertencendo a mesma classe(sobrecarga) ou hierarquia(sobrescrita). “O
polimorfismo indica a capacidade de abstrair varias implementações diferentes em
uma única interface” (BEZERA, 2003, pg.10). Polimorfismo geralmente é expressado
por uma relação de generalização ou especialização sobre um(a) classe/objeto/método.
• Mensagem: A forma como os objetos comunicam-se uns com os outros.
• Persistência: Garante a integridade (estado atual) do objeto, após ser destruído da
memoria, quando o objeto foi instanciado novamente ele carregará todos os valores de
atributos que tinha antes de ser destruído. Um bom exemplo é restauração de abas do
2.3 UML.
Alguns dos principais objetivos de uma ferramenta case10 são documentar a análise e
automatizar tarefas triviais ou repetitivas no desenvolvimento de um software. Algumas
ferramentas são capazes de gerar código fonte baseado na análise, enquanto outras apenas
documentam análise. Existem três tipo de ferramentas case.
•Lower case - ferramentas de codificação.
•Upper case - ferramentas de análise, projeto e implementação .
•Integrated case - união de upper e lower case.
2.5 PHP.
por vários atributos, ou seja um atributo ou conjunto depende de forma total desta
chave primária concatenada. Quando a dependência é de parte dessa chave
primária concatenada denomina-se dependência funcional parcial.
• Dependência funcional transitiva: Ocorre quando um atributo “X” depende de
outro ”Y” que não faça parte da chave primária, porém “Y” é dependente
funcional da mesma.
Os critérios para um entidade estar na segunda forma normal são, primeiramente estar
na primeira formal e não possuir atributos que tenham dependência parcial dessa chave.
“Podemos afirmar que uma estrutura está na terceira Forma Normal, se ela estiver na
segunda Forma Normal e não possuir campos dependentes de outros campos não
chaves.”(MACHADO, 2001, pg92).
2.8 SQL.
Com o amplo uso de banco da dados a partir da década de 80, muito fabricantes
começaram a introduzir dialetos de SQL nos seus produtos, distorcendo o padrão inicial. Uma
nova padronização foi proposta pela ANSI15, denominado SQL/86. No ano de 1987 a ISO16
passa a trabalhar com ANSI na padronização do SQL, após dois anos outro padrão é criado o
SQL/89, ao longo dos anos foram criados outras normativas SQL/92, SQL/99 e a última em
2003.
A linguagem SQL é composta por 3, 4 e até mesmo 5 grupos de instruções conforme o
autor, no presente trabalho será adotada a abordagem de 4 grupos são eles:
17
• DDL (Data Definition Language). Permite ao administrador de banco dados cria,
alterar e excluir entidades ou grupos de entidades, seus principais comandos são,
create, alter e drop.
• DML18(Data Manipulation Language). Possibilita manipular registros de uma
determinada entidade, seus principais comandos: insert, update e delete.
• DCL19 (Data Control Language). Restringe ou permite privilégios de acesso dos
usuários. Como por exemplo ter controle total sobre determinada entidade ou apenas
visualiza-la(somente leitura). Principais comandos grant e revoke.
• DQL20 (Data Query Language). Permite fazer consultas em grupos de entidades, a
DQL possui apenas um comando o select porém o existe varias clausulas que
oferecem maiores opções para manipulação de dados facilitando a vida do DBA.21
Algumas clausulas são: where, distinct, like, count, sum, between, entre outros. O
select é comando mais usado em SQL.
Mas o que exatamente seria uma gerador de código fonte? É uma técnica de
construção de programas para escrever outros programas, muitas vezes a linguagem usada
para desenvolver o gerador é diferente do produto final, um exemplo concreto disso é criar
geradores para construção e manipulação de base de dados ou procedimentos remotos. A idéia
central é criar um código consistente, de alto nível e genérico, pois sua reutilização será
maior, com isso algumas etapas triviais ou repetitivas do projeto podem ser executas com
maior rapidez.
“Code generation takes over the task of writing repetitive infrastructure code, leaving
more time for engineers to concentrate on the interesting programming challenges that they do
enjoy”(HERRINGTON, 2003, pg.XVII).
As vantagens de usar geradores de código, está em usar um templete22 básico e dar ao
usuário algumas opções, a criação do código final é feita de modo instantâneo, a estrutura do
código gerado é de fácil manipulação e depuração ou seja qualidade de código, com isso a
produtividade de criação de um software23 ou pagina web24 é bem maior.
3. METODOLOGIAS DE DESENVOLVIMENTO
24
• Monousuário.
• A atual versão é executada em plataforma Win3227.
• Não da suporte a rede, sendo executado na máquina local.
• Uso de threads28 em algumas tarefas.
• O programa dever ter como cor de fundo o branco seguindo o padrão “industrial” do
windows xp/vista, para facilitar interação do usuário com software.
• O programa deve oferecer teclas de atalho para algumas tarefas, pois geralmente
usuários avançados tem maior preferencia por teclas de atalho.
• O programa dever mostrar metáforas das principais funcionalidades, para torna a
interface gráfica, mais agradável e facilitar memorização/associação das
funcionalidades, dessa forma o aprendizado do usuário é mais rápido. em outras
palavras tornar a interface mais intuitiva possível.
“A idéia básica é que já que os computadores estão substituído muitas
ferramentas formalmente utilizadas pelas pessoas de negócios – pastas de
arquivos para arquivar papeias com informações, cadernos com números de
de telefones, agendas para organizar compromissos e cesta lixo para
descartar objetos desnecessários – então seus sistema deveria se parecer
com as ferramentas que está substituindo. Isso fará com que seja mais fácil
de ser compreendido e aprendido por qualquer pessoa que já esteja
familiarizada com as ferramentas do mundo real que ele esta
substituindo.”(AMBLER, 1998, pg.276).
• O programa deve exibir dicas de ajuda, quando o mouse passar sob um controle
gráfico(botões, caixas de texto, combos etc).
• Utilizar threads.
• O programa deve oferecer suporte à dois ou mais idiomas, sendo a língua natural o
padrão(português-BR), o segundo o inglês.
• O programa dever possuir um splash31.
• O programa deve possuir um arquivo de ajuda.
4. IMPLEMENTAÇÃO DO SOFTWARE
4.1 Tutorial
32 Restrições.
36
entidade.
• 2.3. A edição de um campo é feita da seguinte forma o usuário, executa um duplo
click sobre o campo que deseja modificar, para aplicar as modificações o usuário
dever clicar no quarto botão da esquerda para a direita que possui um engrenagem
e uma chave de fenda, concluindo assim o processo de edição do campo
selecionado.
• 2.4. A exclusão, pode ser tanto de uma entidade quanto de apenas um campo, o
usuário deve selecionar a entidade ou campo clicando sobre ela(e), e clicar no
terceiro botão que possui uma listra vermelha, no caso de uma entidade sera
exibido um aviso de confirmação, no caso de um campo o aviso não é exibido.
• 2.5. Após criada as entidades e seus respectivos campo, é possível gera os arquivos
contendo suas estruturas, exitem duas extensões .txt e .sql, clicando no quinto
botão da esquerda para direita, será mostrada um caixa de dialogo onde o usuário
deve escolher o diretório e o nome dos arquivos e clicar em salvar.
• 3.0. Novo Formulário.
• 3.1. O primeiro passo é criar um formulário, clicando no primeiro botão da esquerda
para a direita, que tem um pequeno sita de “+” verde, após isso será exibida uma caixa
de texto pedindo o nome do formulário.
• 3.2. O próximo passo é definir as strings de conexão, que estão cituadas na aba
“Conexão DB”, após o preenchimento deve-se clicar no botão que possui o ícone de
um plug de tomada, ele é o quinto botão da esquerda para direita, para concluir essa
etapa.
• 3.3. É possível configura um título tanto para o formulário quanto para listagem,
clicando na aba “Misc”, informando os respectivos títulos e clicando no botão “OK”.
• 3.4. Para adicionar uma tag, o usuário deve preencher todos os campos, e clicar no
segundo botão da esquerda para direita, para adicionar a nova tag.
• 3.5. Exclusão pode ser tanto de um formulário inteiro quanto de apenas uma tag,
usuário dever selecionar o formulário/tag, e clicar no terceiro botão da esquerda para
direita que possui o ícone de uma listra vermelha, no caso de um formulário sera
exibido um aviso de alerta, caso seja escolhida uma tag o aviso não é exibido.
• 3.6. A edição de uma tag, funciona da seguinte forma, o usuário executa um duplo
click sobre o item desejado, após as modificações o usuário deve clicar no quarto
37
botão da esquerda para a direita que possui um ícone de uma engrenagem e uma chave
de fenda para efetuar as mudanças.
• 3.7. Existe a opção de importar arquivos css para decorar o formulário e a listagem, o
usuário deve clicar no sétimo botão da esquerda para a direita que possui o ícone de
uma folha verde, após isso sera exibida um caixa de dialogo onde o usuário deve
indicar quais os arquivo que deseja importar e clicar em abrir para terminar essa etapa.
• 3.8. Para gerar os arquivos .php o usuário deve clicar no sexto botão da esquerda para
a direita, após isso sera exibida uma caixa de dialogo onde o usuário deve informar
qual o diretório será salvo os arquivo, e seus respectivos nomes, clicando em salvar,
para efetuar o termino dessa etapa.
4.2 Padronizações.
Objetos são reconhecidos no código tendo, uma abreviatura de seu tipo mais um
sublinhado '_', após o sublinhado '_' é descrito a finalidade do objeto. Ex: Btn_Fix: botão
responsável por aplicar as modificações.
Variáveis são reconhecidas pela seguinte padronização, tem suas duas primeiras letras
identificando o tipo de dado, diferente de um objeto a variável não possui um sublinhado '_',
ou seja o tipo de dado e o nome da variável ficam concatenado. Ex:InE: contador de entidades
no projeto sendo do tipo integer.
4.5.1. SplashScreen.
Ilustração 9 - SplashScreen
4.6.1. GeraHTML
4.6.2. CarregarProjeto.
53
4.6.3 GeraUID.
dados.
•Linha 55, é escrito no arquivo, os campo do banco de dados.
•Linha 86, é exibido a forma de criação da estrutura de um update, os passos são semelhantes
ao do insert.
•Linha 112, o arquivo é fechado com seu conteúdo já salvo.
57
5. CONCLUSÃO
devem ser elaboradas e mantidas para atende a grande parte das necessidades dos usuários e
uma pequena porção de especializações voltada para pouco ou nenhum publico. Em contra
partida uma arquitetura aberta oferece a possibilidade de personalização do software,
pequenas mudanças ou poucas funcionalidades podem realmente atender as necessidades
daquele usuário em especifico, outras vantagens são o tempo de correção de erros que é muito
menor ao ser comparado com um produto proprietário, diversidade de funcionalidades
criadas pelos membros da comunidade do software em questão pois varias pessoas ao redor
do mundo o utilizam e trabalham em sua manutenção.
6. REFERÊNCIA BIBLIOGRAFIA
AMBLER, W. S. Análise e projeto orientado a objetos: Seu guia para desenvolver sistemas
com tecnologia de objetos volume 2. 1.ed. Rio de Janeiro: IBPI Press, 1998.
MACHADO, F. N. R.; ABREU. Análise relaciona de sistemas. 1.ed. São Paulo: Érica. 2001.
MACHADO, F. N. R.; ABREU, M. Projeto de banco de dados uma visão prática. 5.ed. São
Paulo: Érica. 1996.
PILONE, D.; PITMAN, N. UML 2 Rápido e prático. 1.ed. Rio de Janeiro: Alta Books. 2006.
VELOSO DE MATOS, A . UML: Prático e descomplicado. 2.ed. São Paulo: Érica. 2002.
WELLING, L.; THOMSON, L. PHP Mysql Desenvolvimento web. 2.ed. : Campus. 2003.