Gerador de código fonte para PHP

download Gerador de código fonte para PHP

If you can't read please download the document

description

O trabalho proposto descreve a crição de um componente, que utilza coleções de items, feito em delphi. Download do código fonte em http://code.google.com/p/indigophp/downloads/list

Transcript of Gerador de código fonte para PHP

1

10 1. INTRODUO A cada ano que passa mais pessoas tem contato com a internet, e novas ferramentas e servios so criados para suprir as necessidades criadas por estes internautas. Com o avano e aprimoramento das tecnologias web(linguagens de programao e recursos udio visuais) e o aumento da largura de banda, muitas aplicaes do desktop1 tem migrado para plataforma web, outras tm sido desenvolvidas exclusivamente para esta, como o caso do google, que disponibiliza a seus usurios uma sute de escritrio via web, contendo os principais recursos de uma sute para desktop como o Open Office, outro exemplo so os conversores de vdeos online como o keepvid.com, sendo que com os sistemas de gerenciamento ou sistema de apoio a tomada de decises no diferente. Os benefcios das aplicaes web so vrios, entre eles o espao em disco, pois geralmente no necessrio instalar nada, os arquivos da aplicao so alocados em uma mquina remota e executados a partir da mesma, disponibilidade e acesso dos dados em qualquer parte do mundo, total independncia de sistema operacional e atualizaes centralizadas apenas no servidor. A grande dificuldade e frustrao 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 cdigo, alm de desenvolver as funcionalidades da aplicao, isso tudo torna o desenvolvimento uma tarefa bastante trabalhosa, cansativa e montona. Outras ferramentas atravs de uma interface grfica, e com alguns click's conseguem gerar todo o leiaute porm o cdigo fonte todo sujo e cheio de coisas desnecessrias, o que prejudica o desempenho e sua manuteno quase impossvel. 1.1 Justificativa Estas dificuldades de aprendizado e inovao das Soft-Houses e dos programadores levam a uma necessidade de oferecer uma ferramenta que elabore partes de um sistema de apoio a tomada de deciso para a plataforma Web (coleta e manuteno de dados) atravs de um modelo padro de leiaute, simples e de fcil manuteno, e que esta ferramenta seja de cdigo fonte aberto, facilitando a troca do leiaute padro ou at mesmo a linguagem de cdigo fonte gerado (alvo) que PHP, por alguma outra, como Ruby, Phyton, JSP, etc, oferecer ao1 rea de trabalho nesse caso se refere a plataforma de computadores pessoais.

11 programador a opo de adicionar mais funcionalidades tornando-o personalizado para atender, suas prprias necessidades, alm de servir como material de estudo e aprimoramento. O cdigo fonte e outros componentes esto disponvel em http://code.google.com/p/indigophp/ e http://br.geocities.com/shini_quake/indigophp.html 1.2 Objetivos 1.2.1 Objetivo geral Construir uma ferramenta de cdigo fonte aberto, que automatize alguns processos repetitivos na construo de websites que utilizem tecnologia PHP com banco de dados relacional. 1.2.2 Objetivos especficosUtilizar Utilizar Agilizar

tecnologia orientada a objetos tanto na anlise quanto na programao. threads para melhorar o desempenho do software; o desenvolvimento de aplicaes web atravs um modelo padro bem estruturado, um aplicativo que tenha total independncia de qualquer banco de dados;

simples e fcil de manuteno;Desenvolver

12

2. REVISO LITERRIA2.1 Linguagem de Programao. No geral uma linguagem um conjunto de smbolos e regras que um determinado grupo usa para comunicar-se internamente ou externamente com outros grupos distintos, por meio de uma linguagem que ambos tenham conhecimento. Com a linguagem de programao no diferente, ela responsvel pelo intercmbio entre o programador e o dispositivo (computador, celular, PDA2 etc) a ser programado. Pode-se resumir as principais caractersticas de uma linguagem de programao em poucas palavras, porm estas informaes, expresso muito do seu funcionamento e de uma forma generalizada como um compilador trata seus aspectos intrnsecos.Tipagem

esttica: A linguagem dita tipada de forma esttica quando a verificao dos tipos Dinmica: A linguagem dita tipada de forma dinmica quando verificao dos fraca: quando os tipos de dados no so bem definidos ou se misturam, no

de dados(variveis, objetos), feita em tempo de compilao.Tipagem

tipos de dados feito em tempo de execuo(runtime).Tipagem

necessrio associar o tipo de dado h varivel, pois o compilador/interpretador se encarrega de faze esse tipo de verificao.Tipagem

forte: quando os tipo de dados so bem definidos, tambm necessrio de forma

explicita associar o tipo de dado h varivel. Outra caracterstica importante forma do artefato gerado, em linguagens interpretadas, so gerados bytecodes3, que so interpretados por uma maquina virtual e que posteriormente sero traduzidos em linguagem de maquina. A grande vantagem de linguagens interpretadas escrever um cdigo fonte para diversas plataformas com pouca ou nenhuma mudana no mesmo. J linguagens compiladas geram arquivos executveis especificamente para uma plataforma, isso garante uma alta performance de velocidade sobre as linguagens interpretadas porm isso impede sua portabilidade, deve-se ao fato de que o cdigo compilado ser executado sem passar por um intermedirio(maquina virtual). O numero de paradigmas que a linguagem oferece relevante, algumas linguagens de programao tem diversas2 Personal digital assistant assistente pessoal digital. 3 Arquivo intermedirio entre linguagem natural estruturada e linguagem de maquina

13 finalidades e so utilizadas para desenvolver qualquer tipo de programa, outras so bem restritas como caso de lisp e prolog que so utilizadas na rea de inteligencia artificial. 2.2 Paradigma Orientado a Objetos. O conceito de programao orientada por objetos no novo. No final da dcada de 60, a linguagem Simula67, desenvolvida na Noruega, introduzia conceitos hoje encontrados nas linguagens orientadas a objetos como encapsulamento. Em meados de 1970, o Centro de Pesquisa da Xerox (PARC) desenvolveu a linguagem Smalltalk, a primeira totalmente orientada a objetos. No incio da dcada de 80, a AT&T lanaria a Linguagem C++, uma evoluo da linguagem C em direo orientao a objetos. A programao orientada a objetos simula atributos e comportamentos(mtodos) de coisas do mundo real, tirando apenas a caracterstica principais, dessa forma se constri um objeto que ira se relacionar/comunicar com outros dentro de um sistema . Diferente da programao estruturada onde tudo se baseia em funes, parmetros de retorno e a descentralizao, (caso ocorra um mudana em alguma funo sera necessrio mudar em todas as outras que tiverem alguma dependncia dessa funo subprincipal, por exemplo onde um parmetro era do tipo int e agora passou a ser string as mudanas sero em varias partes do cdigo acarretando na prtica mais erros ou incompatibilidades. J na programao orientada a objetos basta apenas mudar o tipo dos atributos, pois todas as classes descendentes iro herdar a mudana de tipo ou ainda sobrecarregar o mtodo afim de manter compatibilidade com verses antigas do mesmo. A programao orientada a objetos tem como principais objetivos reduzir a complexidade no desenvolvimento de software e aumentar sua produtividade. A anlise, projeto e programao orientadas a objetos so as respostas para o aumento da complexidade dos ambientes computacionais que se caracterizam por sistemas heterogneos, distribudos em redes, em camadas e baseados em interfaces grficas. 2.2.1 Conceitos. Visibilidade: existem trs tipos de visibilidade para atributos/mtodos so eles private, protected e public.

14

Private: O mais restrito de todos, mtodos/atributos.

apenas a classe proprietria pode acessar seu

Protected: O meio termo entre private e public, somente a classe proprietria e suas descendentes pode visualizar esse tipo atributos/mtodos. Public: De livre acesso ou seja, qualquer classe pode acessar seus atributos/mtodos. Abstrao: Criao de um modelo de dados abstraindo(coletando/observando) as principais caractersticas e comportamentos de um objeto do mundo real. Classe: Coleo de atributos e mtodos de uma abstrao da realidade, que definem o objeto e seu comportamento. So divididas em dois grupos classes concretas que geram instancias e classes abstratas que no 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 mtodos sejam privados de determinada classe, sendo que somente ela ter acesso a tais, Dessa forma garante o isolando de um possvel erro no propagando-o. O mecanismo de encapsulamento a forma de restringir o acesso ao comportamento interno do objeto. (BEZERA, 2003, pg.9). Herana: Reutilizao de atributos e mtodos comum entre classes. Existem diversas similaridades entre diferentes classes. Com muita freqncia duas ou mais classes compartilharam os mesmo atributos e/ou os mesmo mtodos. Pelo fato de no querermos ter que fica escrevendo o mesmo cdigo varias vezes, necessitamos tirar vantagens destas similaridades. (AMBLER, 1998, pg.8). Polimorfismo: A capacidade do objeto/atributo/mtodo, de ter varias formas distintas porm pertencendo a mesma classe(sobrecarga) ou hierarquia(sobrescrita). O polimorfismo indica a capacidade de abstrair varias implementaes diferentes em uma nica interface (BEZERA, 2003, pg.10). Polimorfismo geralmente expressado por uma relao de generalizao ou especializao sobre um(a) classe/objeto/mtodo. Mensagem: A forma como os objetos comunicam-se uns com os outros. Persistncia: Garante a integridade (estado atual) do objeto, aps ser destrudo da memoria, quando o objeto foi instanciado novamente ele carregar todos os valores de atributos que tinha antes de ser destrudo. Um bom exemplo restaurao de abas do

4 Programao orienta a objetos. 5 Anlises orientada a objetos.

15 firefox6. A persistncia descreve as questes de como salvar os objetos para armazenamento permanente (AMBLER, 1998, pg.9).

Coeso: Ocorre quando uma classe interage com outra porm no conhece os detalhes de implementao dessa ultima. Acoplamento: a medida de quanto uma classe depende de outra. Em um projeto orientado a objetos recomendvel tem baixo acoplamento e alta coeso, pois a manuteno de cdigo ser mais fcil e flexvel a algumas mudanas.

2.3 UML. A UML7 se originou de vrias metodologias distintas, tendo forte influncia de trs. O mtodo Booch de Grady Booch, a Tcnica de Modelagem de Objetos(OMT) de co-autoria de James Raumbaugh e OOSE 8de Ivar Jacobson, tambm conhecidos com os trs amigos. Eles elaboraro a primeira verso da UML em 1994, j em 1997 ela, foi aceita pelo OMG9. Atualmente a UML se encontra na verso 2.0. UML uma linguagem, ou seja (ela possui semntica e sintaxe), para especificao, documentao, visualizao e construo de sistemas orientados a objetos, provendo vrios diagramas que tratam da parte esttica e dinmica do sistema. Esttica diagrama de classes, componentes, estrutura composta, objetos, implantao e artefatos. Dinmica diagrama de caso de uso, seqncias, comunicao, grfico de estados e atividades. A UML apenas uma linguagem e, portanto somente uma parte de um mtodo para desenvolvimento de software.( BOOCH; RUMBAUGH; JACOBSON, 2005, pg.13). 2.3.1 Principais diagramas. la finalidade de los diagramas es presentar diversas perspectivas de un sistema, a la cuales se le conece como modelo.(SCHMULLER, 2000, pg.8).

Diagrama de classes : Esse diagrama mostra de forma esttica todas as classes, seus mtodos e atributos e seus respectivos relacionamentos. Alguns exemplos de relacionamentos so agregao, composio e associao.

6 7 8 9

Navegador web. Unified Modeling Language Object Oriented Software Enginnering. Object Manager Group.

16

Diagrama de caso de uso: Tem a funo de mostrar os requisitos funcionais do sistema independente da implementao. documento narrativo que descreve a seqncia de eventos de um ator que usa um sistema para completar um processo (BOOCH; RUMBAUGH; JACOBSON, 2005, pg.13). Diagrama de estado: Documenta o comportamento de classes/objetos/atributos, sistemas e subsistemas e a comunicao dos mesmos com agentes externo, sua idia principal lembra o funcionamento de automato. Diagrama de interao: Responsvel por ilustrar a comunicao entre os objetos. Diagramas de interao tem seu foco em mensagens especificas entre objetos e em como essas mensagens vem juntas para realizar um funcionalidade(PILONE, 2006, pg.125).

2.4 Ferramenta Case. Alguns dos principais objetivos de uma ferramenta case10 so documentar a anlise e automatizar tarefas triviais ou repetitivas no desenvolvimento de um software. Algumas ferramentas so capazes de gerar cdigo fonte baseado na anlise, enquanto outras apenas documentam anlise. Existem trs tipo de ferramentas case.Lower Upper

case - ferramentas de codificao. case - ferramentas de anlise, projeto e implementao . case - unio de upper e lower case.

Integrated

2.5 PHP. PHP acrnimo recursivo para PHP hypertext preprocessor, uma linguagem de programao interpretada, de tipagem fraca e dinmica e oferece suporte orientao a objetos, que ao final gera scripts11 tendo eles as mais diversas finalidades desde um simples captcha12 a complexas instrues SQL's, diferentemente de linguagens compiladas como o C que geram um executvel. Entretanto o PHP tem pouca ou nenhuma relao com leiaute da pgina, seu trabalho 10 Computer-Aided Software Engineering - Engenharia de Software Auxiliada por Computador 11 Cdigo fonte interpretado. 12 Mecanismo usando em antispams, e autenticaes. Que teoricamente somente um humano pode resolver.

17 invisvel para o usurio final. O PHP executa seus scripts no lado servidor da aplicao ou seja, o cliente somente recebe uma pgina com o cdigo HTML resultante da execuo do PHP. Como a pgina resultante contm unicamente cdigo HTML, compatvel com todos os navegadores. Dentro de uma pgina HTML, voc pode embutir cdigo PHP que ser executado toda a vez que pgina for visitada. O cdigo PHP interpretado no servidor Web e gera HTML ou outra sada que o visitante ver(WELLING, LUKE, 2002, pg.XXVII). 2.6 Banco de Dados Relacional. O banco de dados relacional um banco de dados visto pelos usurios como um conjunto de tabelas (e nada alm de tabelas).(DATE, 1990, pg.100). Existem trs conceitos bsicos empregados pelo modelo de entidade-relacionamento, so eles, conjunto de entidades (database), conjunto de relacionamentos e atributos.

Entidade: Consiste no processo de identificar objetos concretos ou abstratos do mundo real que tem alguma entidades importncia so coisas dentro da de um contexto que so especifico(negcio). As realidade,

transpostas(abstrao) para um modelo computacional/conceitual, sendo apenas coletado suas caractersticas principais. Defini-se entidade como aquele objeto que existe no mundo real com uma identificao distinta e com um significado prprio. So coisas que exitem no negcio, ou ainda descrevem o negcio em si.(RODRIGUES, ABREU, 1996, pg.32).

Atributos: Tambm conhecidos como campos. Nada mais que as caractersticas de um objeto ou de uma entidade, tendo como exemplo o documento CPF seus atributos so: nome do portador, nmero de inscrio e data de nascimento ou de modo mais clssico entidade cliente: nome, endereo, data de nascimento, rg, cpf entre outros atributos. Relacionamentos: Ou cardinalidade. a forma como duas ou mais entidades se relacionam. Existem trs tipos: um-para-um: Neste grau de relacionamento, cada elemento de uma entidade relaciona-se com um e somente um elemento de outra entidade(RODRIGUES, ABREU, 1996, pg.54). Exemplo um filho(a) tem apenas uma nica me biolgica. Uma-para-muitos: Encontrado com maior freqncia no

18 processo de modelagem. Um elemento da entidade A relaciona-se com vrios outros elementos da entidade B. Tomando o exemplo filho/me, na primeira viso temos a seguinte afirmativa, uma me pode ter vrios filho(a)s, j na segunda viso, um filho(a) pode ter somente uma nica me biolgica. E o ultimo muitospara-muitos. Onde vrios elementos da entidade A se relacionam com vrios outros elementos de B. Exemplo: muitos acadmicos cursam muitas disciplinas, mas alguns acadmicos podem estar cursando uma nica ou mais disciplinas. Uma disciplina cursado por muitos acadmicos, ou nenhum. O relacionamento de muitos-para-muitos, logo ser quebrado pelas normativas e se tornara um relacionamento de um-para-muitos. Alguns atributos podem ter certas restries como aceitar ou no valores nulos, ter uma valor padro caso valor seja nulo, existe tambm um atributo que recebe o nome de chave primaria que capaz identificar exclusivamente cada ocorrncia de uma entidade, sendo que uma chave primaria nunca pode ter um valor nulo. * Dependncia de existncia. * Dependncia de identificador. Dizemos que uma entidade fraca se um desses dois tipos de dependncia se verificar entre uma entidade A e uma entidade B.(COUGO, 1997, pg.53). 2.7 Normalizao de Banco de Dados. O conceito de normalizao foi introduzido para o modelo relacional por Edgar. F. Codd em 1970 (primeira forma normal). Esta tcnica um processo matemtico que tem seus fundamentos na teoria dos conjuntos.(MACHADO, 2001, pg.88). Ao todo existem 6 formas normais, que tem o objetivo de filtrar anomalias de incluso, alterao e excluso, como redundncia dados, e tambm possveis dependncias etc. Neste trabalho apenas apresentado as trs primeiras. Existem quatro tipos de dependncias:

Dependncia

funcional:

um

relacionamento

entre

dois

ou

mais

atributos(campos) de uma mesma entidade, que o valor de um atributo identifique o valor para cada um dos outros atributos.

Dependncia funcional total: Ocorre apenas quando a chave primria for composta

19 por vrios atributos, ou seja um atributo ou conjunto depende de forma total desta chave primria concatenada. Quando a dependncia de parte dessa chave primria concatenada denomina-se dependncia funcional parcial.

Dependncia funcional transitiva: Ocorre quando um atributo X depende de outro Y que no faa parte da chave primria, porm Y dependente funcional da mesma.

2.7.1 Primeira forma normal (1FN).A 1FN caracteriza-se por remover grupos repetitivos de uma determinada entidade. Para cada tabela, eliminar os grupos repetitivos gerando uma nova tabela na qual cada um dos itens repetitivos dar origem a uma nova linha e na qual a chave primria ser a concatenao da chave da tabela original com uma nova coluna que identifique de modo unvoco a linha. (COUGO, 1997, pg.191).

2.7.2 Segunda forma normal (2FN). Os critrios para um entidade estar na segunda forma normal so, primeiramente estar na primeira formal e no possuir atributos que tenham dependncia parcial dessa chave. 2.7.3 Terceira forma normal (3FN). Podemos afirmar que uma estrutura est na terceira Forma Normal, se ela estiver na segunda Forma Normal e no possuir campos dependentes de outros campos no chaves.(MACHADO, 2001, pg92). 2.8 SQL. SQL uma linguagem de quarta gerao, um padro para manipulao de banco de dados, diferente de outras linguagens como C, Java, PHP etc, em SQL o programador diz o que deve ser feito e no como. Em 1974 nasceu na IBM13 o SEQUEL14 um prottipo de linguagem para banco de dados, posteriormente SEQUEL/2 e finalmente SQL, Com o peso do nome IBM por trs desses produtos, ela consegue fazer com que 'sua' linguagem de consulta estruturada SQL torne-se o padro de mercado.(MANZANO, 2002, pg.18).13 Internacional Business Machine 14 Structured English Query Language.

20 Com o amplo uso de banco da dados a partir da dcada de 80, muito fabricantes comearam a introduzir dialetos de SQL nos seus produtos, distorcendo o padro inicial. Uma nova padronizao foi proposta pela ANSI15, denominado SQL/86. No ano de 1987 a ISO16 passa a trabalhar com ANSI na padronizao do SQL, aps dois anos outro padro 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 instrues conforme o autor, no presente trabalho ser adotada a abordagem de 4 grupos so eles:

DDL

17

(Data Definition Language). Permite ao administrador de banco dados cria,

alterar e excluir entidades ou grupos de entidades, seus principais comandos so, 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 privilgios de acesso dos usurios. 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 porm o existe varias clausulas que oferecem maiores opes para manipulao de dados facilitando a vida do DBA.21 Algumas clausulas so: where, distinct, like, count, sum, between, entre outros. O select comando mais usado em SQL.

2.9 Gerao de Cdigo. Mas o que exatamente seria uma gerador de cdigo fonte? uma tcnica de construo 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 construo e manipulao de base de dados ou procedimentos remotos. A idia15 16 17 18 19 20 21 American National Standards Institute. Internacional Standards Organizations. Linguagem de Definio de Dados. Linguagem de Manipulao de Dados . Linguagem de Controle de Dados. Linguagem de Consulta a Dados. Administrador de Banco de Dados.

21 central criar um cdigo consistente, de alto nvel e genrico, pois sua reutilizao 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 cdigo, est em usar um templete22 bsico e dar ao usurio algumas opes, a criao do cdigo final feita de modo instantneo, a estrutura do cdigo gerado de fcil manipulao e depurao ou seja qualidade de cdigo, com isso a produtividade de criao de um software23 ou pagina web24 bem maior. 2.10 Ciclo de Vida do Software. O ciclo de vida, refere-se a todas as atividades realizadas para idealizao e construo do software, o termino ocorre quando no mais possvel manter o software no mercado, diversos fatores podem acarretar ou acelerar sua morte, dentre os principais podemos citar a dificuldade na manuteno de um cdigo fonte arcaico, aspectos legais, inovaes da concorrncia, altos requisitos de hardware, etc. As etapas do ciclo de vida de um software so as seguintes:

Concepo: Surgimento de um conceito ou soluo para um determinado problema. Construo: Anlise e codificao. Implantao: Nessa etapa ocorrem testes, e o cliente tem os primeiros contatos com software. Os desenvolvedores ou o analista de negcios ensinam o mtodo de como trabalhar com a ferramenta. Implementaes: Ajustes em alguns requisitos, correo de bug25's. pice: Utilizao plena com o minimo de erros possveis, funcionalidades e conceitos bem desenvolvidos. Declnio: Requisitos funcionais j ultrapassados, dificuldade ou falta comunicao com novos sistemas ou aplicativos. Manuteno: Re-analise das regras de negocio e um possvel estudo de sua viabilidade

22 23 24 25

Molde ou modelo padro. Programa de computador. Relativo a internet. Erros.

22 de implementao(codificao) e seus efeitos colaterais.

Morte: Pode ocorrer por no mais atender as necessidades do cliente ou descontinuidades de atualizaes por parte dos desenvolvedores. Desde primrdios, o software, construdo/elaborado de forma artesanal devido a

complexidade das duas primeiras geraes de linguagens de programao, primeira gerao: (linguagem de maquina), o programador era obrigado a trabalhar com o mais baixo nvel, ou seja registradores, bit's e muitas seqncias de zeros e uns conseqente a depurao desse cdigo era extremamente cansativa e sujeita a novos erros. Segunda gerao: (linguagens de montagem ou simblica)Para minimizar as dificuldades da programao em notao binaria. Cdigos de operao e endereos binrios foram substitudos por mnemnicos. Nas linguagens de montagem, a maioria das instrues so representaes simblicas de instrues de maquina(PRICE; TOSCANO, 2005, pg.2).

Mesmo com o advento das linguagens de 3 gerao (linguagens procedurais, declarativas ou imperativas), que propiciavam um maior nvel de abstrao deixando os programadores/analistas preocuparem-se mais com a modelagem das regras de negocio do que a complexidade de implementar uma determinada funo em notao binaria, entre outros aspectos de baixo nvel. Com grande freqncia o processo de desenvolvimento do software estourava o prazo imposto e por conseqncia disso seu custo dobrava ou at mesmo quadruplicava, para tenta resolver esse problema e tentar industrializar o processo de desenvolvimento de software(da mesma forma que a revoluo industrial mudou a forma do processo de produo que era realizado de forma artesanal e passou a ser industrializado com a ajuda de maquinas, essa mesmo conceito de cria linhas produo seria aplicado de forma eficiente no processo de desenvolvimento de software, quanto na Inglaterra do sculo XVIII?) Foram propostos alguns modelos de ciclo de vida, entre eles:

Modelo linear ou cascata: Proposto por Royce na dcada de 70 foi a primeira tentativa de padronizar o processo de concepo do software, esse modelo sugere cinco etapas sendo elas viabilidade, requisitos, projeto, implementaes, testes. Caso ocorra alguma mudana o processo deve recomear, sendo que todas as suas etapas so executas de forma no paralela. Prototipagem: O objetivo desse modelo analisar e implementar um fragmento dos requisitos funcionais em um curto espao de tempo e exibir esse prottipo ao cliente, com isso possvel observar se os requisitos funcionais implementados pelos

23 programadores, so os mesmos desejados ou prximos do esperado pelo cliente, a principal vantagem sobre o modelo em cascata o tempo em relao as interaes e a continua validao dos requisitos funcionais e no funcionais impostos pelo cliente.

Modelo Espiral: O modelo em espiral pode levar ao desenvolvimento em paralelo de mltiplas partes do projeto, cada uma sendo abordada de modo diferenciado, por isso necessrio o uso de tcnicas especficas para estimar e sincronizar cronogramas, bem como para determinar os indicadores de custo e progresso mais adequados.

3. METODOLOGIAS DE DESENVOLVIMENTO

24

3.1 Levantamento de Dados 3.1.1 Tipo de pesquisa.

O presente trabalho de natureza aplicada, tem como objetivo o desenvolvimento de um software, um codegen26.

3.1.2 Arquitetura do Programa.

Monousurio. A atual verso executada em plataforma Win3227. No da suporte a rede, sendo executado na mquina local. Uso de threads28 em algumas tarefas.

3.1.3 Requisitos Funcionais de Software. O programa deve possuir um mecanismo para criao de um novo projeto. O programa deve possuir um recurso para edio de um projeto. O programa deve possuir um mecanismo para salvar todas as informaes do projeto em um arquivo.

O programa deve prover um mecanismo para abrir um projeto salva anteriormente. O programa deve prover um mecanismo, que contenha todas as restries para se criar uma entidade, como por exemplo: ter uma chave primaria, no possuir campos com o mesmo nome, etc. O programa deve prover uma estrutura para a criao de entidades. O programa deve prover uma estrutura para a remoo de entidades. O programa deve prover um mecanismo para adio de um novo campo na entidade. O programa deve prover um mecanismo para edio de campo j existente na entidade.

26 Gerador de cdigo. 27 Referente ao sistemas operacional Windows 28 Processos leves, no Unix seria um processo filho.

25

O programa deve prover um mecanismo para remoo de um campo em uma determinada entidade. O programa deve oferecer uma forma para salvar os scrips SQL's em forma de arquivo. O programa deve prover um mecanismo para criao de um formulrio. O programa deve prover um mecanismo para criao de um arquivo de listagem, conforme os critrios de seleo do usurio. O programa deve prover um mecanismo para criao de um arquivo que contenha as instrues de adicionar, remover e remover registros de uma determinada entidade. O programa deve prover um mecanismo para configurao de configurao das strings de conexo do banco de dados. O programa deve oferecer um mecanismo para apenas a adio de arquivos CSS29. O programa deve oferecer um recurso para edio do ttulo da pagina, o uso desse recurso extensvel tanto para o formulrio quanto para a listagem. O programa deve oferecer uma estrutura para criao de um novo formulrio, sendo que este ter uma listagem e um arquivo do UID30. O programa deve prover um mecanismo para remoo de um formulrio. O programa deve prover um recurso para adio de uma novo tag, em um determinado formulrio. O programa dever oferecer uma maneira de o usurio editar tag's, sendo apenas edita uma por vez. O programa deve prover uma forma para remover tag's. O programa deve prover um mecanismo que por finalidade gerar os arquivos os trs PHP's no diretrio escolhido pelo usurio. Deve haver um mecanismo que evita o usurio fechar o programa enquanto as modificaes de um determinado item no sejam concludas.

3.1.4 Requisitos No Funcionais. O programa dever ter como cor de fundo o branco seguindo o padro industrial do windows xp/vista, para facilitar interao do usurio com software.29 Cascading Style Sheets, 30 Update, insert e Delete.

26

O programa deve oferecer teclas de atalho para algumas tarefas, pois geralmente usurios avanados tem maior preferencia por teclas de atalho. O programa dever mostrar metforas das principais funcionalidades, para torna a interface grfica, mais agradvel e facilitar memorizao/associao das funcionalidades, dessa forma o aprendizado do usurio mais rpido. em outras palavras tornar a interface mais intuitiva possvel.A idia bsica que j que os computadores esto substitudo muitas ferramentas formalmente utilizadas pelas pessoas de negcios pastas de arquivos para arquivar papeias com informaes, cadernos com nmeros de de telefones, agendas para organizar compromissos e cesta lixo para descartar objetos desnecessrios ento seus sistema deveria se parecer com as ferramentas que est substituindo. Isso far com que seja mais fcil 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 grfico(botes, caixas de texto, combos etc). Utilizar threads. O programa deve oferecer suporte dois ou mais idiomas, sendo a lngua natural o padro(portugus-BR), o segundo o ingls. O programa dever possuir um splash31. O programa deve possuir um arquivo de ajuda.

3.1.5 Ferramentas Utilizadas. Object Pascal, linguagem para o desenvolvimento do software. StarUML, Ferramenta case para criao dos diagramas UML. Jude, Ferramenta case para criao dos diagramas UML. Visual Paradign,Ferramenta case para criao dos diagramas UML. Help & manual, para criao do arquivo de ajuda.

3.2 Anlise do Software. Devido a escolha de desenvolver um aplicativo com tecnologia orientada a objetos, a linguagem utilizada para diagramao ser a UML, pois a notao padro para modelos31 Splash/Splash screen Tela de abertura.

27 orientados a objetos alm de oferece vrios nveis(vises) de detalhamento sobre o projeto do software .

28 3.2.1. Diagrama de Classe.

29

Ilustrao 1 - Diagrama de classe

30

3.2.2. Diagrama de Caso de Uso, demostrando todos os requisitos funcionais de software.

31

Ilustrao 2 - Diagrama de casos de uso

3.2.3. Diagrama de caso de uso, demonstrando os casos de uso do software.

32

Ilustrao 3 - Diagrama de casos de uso

3.2.4. Diagrama de seqncia, do caso de uso CarregarProjeto. 3.2.5. Diagrama de Seqncia, caso de uso NovaEntidade.

Ilustrao 4 - Diagrama de seqncia CarregarProjeto

33

Ilustrao 5 - Diagrama de seqncia NovaEntidade 3.2.6. Diagrama de Seqncia, do caso de uso NovoModulo.

34

Ilustrao 6 - Diagrama de seqncia NovoModulo 3.2.7. Diagrama de Estado.

Ilustrao 7: Ilustrao- Diagrama de estado Devido a ausncia de classes/objetos e grupo de atributos/mtodos relevantes para se modelar estados, a ltima alternativa foi modelar o comportamento de um sistema/subsistema.

35 De uma forma simplificada ilustrado o funcionamento do sistema.:

Esse estertipo refere-se a finalizao da tarefa independente de sucesso ou )>> e : Neste diagrama de estado entende-se como

falha, o sistema ficar 'inativo' esperando uma nova ao/tarefa do usurio.