INSTITUTO FEDERAL DO PARANÁ MATHEUS ANDRÉ MARQUES DA SILVA MATHEUS OLIVEIRA SILVA Sistema de Gerenciamento Imobiliário PARANAGUÁ 2012 MATHEUS ANDRÉ MARQUES DA SILVA MATHEUS OLIVEIRA SILVA Sistema de Gerenciamento Imobiliário Trabalho de Conclusão de Curso apresentado ao Curso Técnico de Informática do Instituto Federal do Paraná – Campus Paranaguá, como requisito parcial de avaliação. Orientador: Gil Eduardo de Andrade. PARANAGUÁ 2012 “Primeiro a Deus e depois aos nossos pais e avós” AGRADECIMENTOS Agradecemos primeiramente a Deus, pois ele é o criador de todo esse universo, tem todo o poder, e foi ele quem deu toda a força e segurança para chegarmos até aqui. Os nossos pais pelo suporte, carinho, apoio, confiança e suprimento de necessidades básicas desde sempre. Ao nosso querido orientador Prof. Gil que se manteve sempre disponível, flexível e disposto a ajudar e apoiar, com criticas muito construtivas e fundamentais. A todos os professores que passaram por nós desde o ensino primário até o 3º ano do Ensino Médio, cada uma tem sua parcela de contribuição. Por fim as amizades que adquirimos no decorrer desses três anos, que sempre nos deram muito apoio para a conclusão deste projeto. “A alegria esta na luta, no sofrimento envolvido e não na vitória propriamente dita”. (Mahatma Gandhi) “Choramos ao nascer porque chegamos a este imenso cenário de dementes.” (William Shakespeare) RESUMO Atualmente é visto nas imobiliárias da região que o controle interno na realização de suas operações e feito de maneira rudimentar, faltando confiabilidade no armazenamento de dados e na garantia de serviços. Contudo verificando uma escassa eficiência na realização das operações da imobiliária, dando a perceber que não há controle interno automatizado e/ou informatizado. Então para solucionar estes problemas surge o software deste projeto, realizado na plataforma Java devido a sua portabilidade, gerará otimização da produção, confiabilidade de informações, garantia de serviços e geração de metas de produção. Palavras-chaves: Rudimentar, informatizado, garantia. ABSTRACT It's currently seen in real estates in the region that internal control in conducting their operations have been done in a rudimentary way, lacking reliability in data storage and warranty services. But checking a low efficiency in the transactions, giving the impression that there is no internal control automated and / or computerized. So, to solve these problems, this software project has been developed, performed on the Java platform due to its portability, generate production optimization, reliability of information, assurance services and generation of production goals. Keywords: Rudimentary, warranty, automated. SUMÁRIO 1. INTRODUÇÃO .................................................................................................................. 12 1.1 MOTIVAÇÃO ................................................................................................................. 12 1.2 DESAFIO ....................................................................................................................... 12 1.3 OBJETIVO ..................................................................................................................... 13 1.4 2. 2.1 2.2 1.3.1 GERAL ................................................................................................................. 13 1.3.2 ESPECÍFICO ....................................................................................................... 13 CONTRIBUIÇÕES ESPERADAS ................................................................................. 13 FUNDAMENTAÇÃO TEÓRICA ........................................................................................ 14 ENGENHARIA DE SOFTWARE ................................................................................... 14 2.1.1 CICLO DE VIDA CLÁSSICO ............................................................................... 14 2.1.2 PROTOTIPAÇÃO ................................................................................................ 16 2.1.3 O MODELO ESPIRAL ......................................................................................... 17 2.1.4 TÉCNICAS DE QUARTA GERAÇÃO ................................................................. 19 2.1.5 ESTUDO DE VIABILIDADE ................................................................................ 20 2.1.6 ANÁLISE DE RISCOS ......................................................................................... 21 2.1.7 PRA QUE REALIZAR A MODELAGEM DO SISTEMA?..................................... 22 UNIFIED MODELING LANGUAGE (UML) .................................................................... 23 2.2.1 HISTÓRIA ............................................................................................................ 23 2.2.2 DIAGRAMA DE CLASSES .................................................................................. 24 2.2.3 DIAGRAMA DE CASOS DE USOS ..................................................................... 24 2.3 ORIENTAÇÃO A OBJETOS ......................................................................................... 26 2.4 JAVA .............................................................................................................................. 28 2.5 BANCO DE DADOS ...................................................................................................... 30 3. 3.1 2.5.1 MODELO CONCEITUAL ..................................................................................... 31 2.5.2 MODELO ENTIDADE-RELACIONAMENTO ....................................................... 32 2.5.3 MODELO RELACIONAL ..................................................................................... 33 METODOLOGIA ............................................................................................................... 34 ESTUDO DE VIABILIDADE .......................................................................................... 34 3.2 REQUISITOS ................................................................................................................ 35 3.3 FUNCIONAMENTO DA IMOBILIARIA .......................................................................... 36 3.4 GERAÇÃO DE RELATÓRIOS PDF .............................................................................. 37 3.4.1 FUNCIONAMENTO DA ITEXPDF 5.1.3 .............................................................. 38 3.4.2 MÉTODOS ........................................................................................................... 38 3.4.3 VISUALIZAÇÃO DE ARQUIVO PDF NO SISTEMA ........................................... 39 3.4.4 CÓDIGO .............................................................................................................. 40 3.5 DIAGRAMA DE CASO DE USO ................................................................................... 41 3.6 DIAGRAMA DE CLASSES ............................................................................................ 43 3.7 MODELO ENTIDADE RELACIONAMENTO ................................................................. 43 3.8 MODELO RELACIONAL ............................................................................................... 45 4. RESULTADOS OBTIDOS ................................................................................................ 46 5. CONCLUSÃO ................................................................................................................... 59 6. REFERÊNCIAS ................................................................................................................. 60 SUMÁRIO DE FIGURAS Figura 1 Ciclo de vida clássico<engenhariadompedroii. blogspot.com> ................................. 15 Figura 2 Protipação<centraldaengenharia. wordpress.com> .................................................. 17 Figura 3 modelo espiral <centraldaengenharia.wordpress.com> ............................................ 18 Figura 4 Técnicas da quarta geração (4GT)<tec4rup. wordpress.com> ................................. 20 Figura 5 Exemplo de diagrama de classes .............................................................................. 24 Figura 6 Exemplo de diagrama de casos de uso ..................................................................... 25 Figura 7 Ator diagrama de casos de uso ................................................................................. 25 Figura 8 Caso de uso digrama casos de uso ........................................................................... 26 Figura 9 Associação diagrama de casos de uso...................................................................... 26 Figura 10 Exemplo de classe ................................................................................................... 27 Figura 11 Exemplo de código em Java .................................................................................... 30 Figura 12 Entidade do Modelo ER ........................................................................................... 32 Figura 13 Atributo do Modelo ER ............................................................................................. 32 Figura 14 Exemplo de tabelas no MER <renan-m-levy.blogspot.com> ................................... 33 Figura 15 Classes para geração PDF ...................................................................................... 38 Figura 16 Exemplo de código para geração de um documento PDF ...................................... 39 Figura 17 Classes importadas do PDFView ............................................................................. 39 Figura 18 Exemplo de código para visualizar um documento PDF ......................................... 40 Figura 19 Diagrama de casos de uso do SGI .......................................................................... 42 Figura 20 Diagrama de classes do SGI ................................................................................... 43 Figura 21 MER do SGI ............................................................................................................. 44 Figura 22 MR do SGI ................................................................................................................ 45 Figura 23 Tela de Login SGI .................................................................................................... 46 Figura 24 Tela inicial do SGI .................................................................................................... 47 Figura 25 Tela Inserir Imóvel Comercial .................................................................................. 48 Figura 26 Tela Inserir Imóvel Residencial ................................................................................ 49 Figura 27 Tela de busca dos imóveis ....................................................................................... 50 Figura 28 Tela laudo parte Objeto da Avaliação ...................................................................... 51 Figura 29 Tela laudo parte Especificações Técnicas ............................................................... 52 Figura 30 Tela laudo parte Anexo de Arquivos ........................................................................ 53 Figura 31 Tela Inserir Pessoa Física ........................................................................................ 54 Figura 32 Tela Inserir Pessoa Jurídica ..................................................................................... 55 Figura 33 Tela Inserir Corretor ................................................................................................. 56 Figura 34 Tela Operação Venda .............................................................................................. 57 Figura 35 Tela Operação Locação ........................................................................................... 58 12 1. INTRODUÇÃO 1.1 MOTIVAÇÃO A modernidade trás a ideia que se deve sempre buscar a automação, a informatização do maior número de processos decorrentes no dia-a-dia, para garantir praticidade, segurança e eficiência. Com base nesse paradigma, propõe-se o desenvolvimento de um software para a imobiliária Família Feliz, situada na cidade de Paranaguá. Atualmente a imobiliária conta apenas com um simples site para divulgação de imóveis. Não existe nenhum controle em relação às operações em que esta imobiliária realiza juntamente com os objetos que participam delas, ou seja, não existe informatização alguma. Procura-se a maior praticidade, segurança e eficiência dos processos que nela são realizados, o que torna viável o desenvolvimento do sistema, pelo fato de solucionar estes problemas (falta de praticidade, segurança, eficiência), informatizando a empresa e abrindo horizontes a ela no mercado. 1.2 DESAFIO Os desafios aqui são dois: Atender a todos os requisitos apresentados pelo cliente. Apresentar o sistema funcionado e cumprindo com as expectativas do cliente. 13 1.3 OBJETIVO 1.3.1 GERAL Construir um sistema capaz de gerenciar as principais funções realizadas por uma imobiliária na atualidade. 1.3.2 ESPECÍFICO O sistema possuirá: Cadastro de pessoas (clientes, funcionários, corretores); Cadastro de imóveis; Cadastro de operações; Cadastro de laudos feitos por corretores Geração de relatórios pdf referente as operações e objetos nelas envolvidos (pessoas e imóveis); 1.4 CONTRIBUIÇÕES ESPERADAS Verifica-se atualmente grande informatização em diversas áreas no mundo real. E observa-se a falta desta informatização nas imobiliárias do litoral do Paraná, resultando em ineficiência, falta de segurança e pouca garantia em funções básicas como uma locação ou venda imobiliária. Entretanto o Sistema de Gerenciamento Imobiliário(SGI) tem como premissa, auxiliar de forma eficiente a gestão interna de uma imobiliária, pois irá contribuir com a garantia dos serviços básicos, dando respaldo para que haja segurança e eficiência nos serviços prestados. 14 2. FUNDAMENTAÇÃO TEÓRICA 2.1 ENGENHARIA DE SOFTWARE A engenharia de software é o estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais. (Bauer1, 1969, citado por PRESSMAN, 1995). A engenharia de software é uma semente da Engenharia de hardware e sistemas. Nela observam-se três essenciais elementos: métodos, ferramentas e procedimentos. Sobre estes elementos (Pressman, 1995, p.31-32) Os métodos de engenharia de software proporcionam os detalhes de “como fazer” para construir o software(...). As ferramentas de engenharia de software proporcionam apoio automatizado ou semi-automatizado aos métodos (...). Os procedimentos de engenharia de software constituem elo que mantém juntos os métodos e as ferramentas e possibilita o desenvolvimento racional e oportuno do software de computador.·. A engenharia de software contempla diversas etapas que são o envolvimento destes métodos, ferramentas e procedimentos. Estas diversas etapas que podem ser chamadas de paradigmas da engenharia de software. O paradigma a ser seguido é escolhido de acordo com os aspectos que estão presentes no projeto do software como um todo. A seguir quatro paradigmas principais serão abordados. 2.1.1 CICLO DE VIDA CLÁSSICO Na Figura 1 observa-se o ciclo de vida clássico da engenharia de software. Em alguns momentos é chamado de modelo cascata, deve ser abordado de modo sistemático, sequencial de acordo com o desenvolvimento do software. A seguir as atividades que contém nele. 1 BAUER, F. Conferência NATO Science Committee. 1969. 15 Figura 1 Ciclo de vida clássico<engenhariadompedroii. blogspot.com> 1. Análise e engenharia de sistemas Há o estabelecimento dos requisitos para todos os elementos do sistema, depois se faz a atribuição de algum subconjunto desses requisitos ao software. É uma visão fundamental do sistema, já que o software comunica-se com outros elementos(hardware, pessoas, banco de dados). Há uma pequena intensidade de coleta de requisitos. 2. Análise de requisitos de software É intensificado o processo de coletas de requisitos e concentra-se basicamente no software. Para entender qual será o tipo de sistema a ser construído deve-se, dominar as informações, funções, desempenho e interface requisitados pelo software. 3. Projeto Processo que constitui vários passos, e concentra-se em quatro diferentes atributos do programa: estrutura de dados, arquitetura de software, detalhes procedimentais e caracterização de interface. 4. Codificação 16 O projeto é traduzido de uma forma que a máquina compreenda. Conhecida como etapa de implementação, em o desenvolvedor escreve linhas de código. 5. Testes Após o sistema ser codificado, existe a etapa de testes, em que se faz a verificação das funções do sistema, observado se estão de acordo com o planejado ou caso não esteja o porque isso não ocorre. 6. Manutenção Etapa em que é feita a alteração do sistema, seja pelo fato de erros que foram encontrados na etapa de testes, ou devido a uma nova necessidade do cliente ou do meio onde o software está inserido. Sobre o ciclo de vida clássico (Pressman, 1995, p.34) O ciclo de vida clássico é o paradigma mais antigo e o mais amplamente usado da engenharia de software. Porém, no decorrer da última década, as críticas ao paradigma fizeram com que até mesmo seus defensores questionassem sua aplicabilidade em todas as situações. 2.1.2 PROTOTIPAÇÃO Quando o cliente define corretamente os objetivos gerais para o software, mas não identifica os requisitos, ou quando o desenvolvedor não tem a certeza da eficiência do software, a melhor forma é realizar o paradigma de prototipação. Este processo da permissão ao desenvolvedor a criação de um modelo do software que será implementado. Há três formas possíveis que o modelo pode assumir: 1. Protótipo revelando as relações do homem com a máquina, dando grande respaldo para se entender quantas e quais serão as relações no sistema. 2. Protótipo revelando as funções requisitadas pelo software. 3. Um software já existente que desempenha as mesmas funções, ou parte delas, que serão melhoradas neste novo software. A sequência de eventos que ocorre neste paradigma é descrita na Figura 2. 17 Figura 2 Protipação<centraldaengenharia. wordpress.com> Sobre a prototipação (Pressman, 1995, p.37): Idealmente, o protótipo serve como um mecanismo para identificar os requisitos de software. Se um protótipo de trabalho for construído, o desenvolvedor tentará usar fragmentos de programas existentes ou aplicará ferramentas (por exemplo, geradores de relatórios, gerenciadores de janelas etc.) que possibilitem que programas de trabalho sejam gerados rapidamente. 2.1.3 O MODELO ESPIRAL O modelo espiral é uma junção dos melhores aspectos dos outros dois paradigmas citados acima (ciclo de vida clássico e prototipação), com o acréscimo da análise de riscos que não contém nestes outros dois paradigmas. Nos quatro quadrantes da Figura 3, há a abordagem das quatro fundamentais atividades do modelo espiral, que são: 1 Planejamento: formalização de objetivos, opções e restrições. 2 Análise de riscos: análise de opções e revelação/resolução dos riscos. 3 Engenharia: construção do produto no “próximo nível”. 4 Avaliação do cliente: julgamento dos resultados da engenharia. 18 Figura 3 modelo espiral <centraldaengenharia.wordpress.com> Sobre o modelo espiral (Pressman, 1995, p.40): “O paradigma de modelo espiral para a engenharia de software atualmente é a abordagem mais realística para o desenvolvimento de sistemas e de software em grande escala. Ele usa uma abordagem “evolucionária” à engenharia de software, capacitando o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva. O modelo espiral usa a prototipação como um mecanismo de redução de riscos, mas, o que é mais importante, possibilita que o desenvolvedor aplique a abordagem de prototipação em qualquer etapa da evolução do produto. Ele mantém a abordagem de passos sistemáticos sugerida pelo ciclo de vida clássico, mas incorpora-a numa estrutura iterativa que reflete mais realisticamente o mundo real. O modelo espiral exige uma consideração direta dos riscos técnicos em todas as etapas do projeto e, se adequadamente aplicado, deve reduzir os riscos antes que eles se tornem problemáticos.” Por fim observa-se que este paradigma requer grande experiência e conhecimento por parte do(s) desenvolvedor(es). Vê-se também a dificuldade de convencer o cliente do fato da abordagem ser evolutiva e controlável. 19 2.1.4 TÉCNICAS DE QUARTA GERAÇÃO São várias ferramentas de software que dão possibilidade para o desenvolvedor especificar certo atributo do software em alto nível e, com esta especificação por parte do desenvolvedor a ferramenta constrói automaticamente um código-fonte. Observa-se que quanto mais alto o nível de especificação mais rápido será obtido o software. Este paradigma é a capacidade de se especificar certo código a uma máquina de uma forma que este código esteja o mais perto possível da linguagem natural. Este paradigma tem inicio igual a dos outros paradigmas, que é a coleta de requisitos. O cliente revela quais são os requisitos e estes são transformados em modelos operacionais. Mais isto é muito complicado, pois o cliente pode não conseguir descrever de maneira real o que ele quer, ou haver duplo sentido no que ele diz e por fim não haja como especificar de modo que uma ferramenta 4GT compreenda. Em pequenas aplicações existe a possibilidade de passar da etapa que há coleta de exigências, utilizando uma ferramenta 4GT para implementação, fazendo o uso da linguagem de quarta geração(4GL). Mas para maiores aplicações é necessário o desenvolvimento de um projeto, mesmo que seja feita a utilização de uma 4GL. A utilização da 4GL em grandes aplicações sem planejamento resulta nos mesmos problemas daqueles de desenvolvedores usando abordagens convencionais. A seguir na Figura 4 observa-se o modelo das técnicas de quarta geração: 20 Figura 4 Técnicas da quarta geração (4GT)<tec4rup. wordpress.com> Sobre as técnicas da quarta geração(Pressman, 1995, p.42): A implementação usando uma 4GL possibilita que o desenvolvedor de software represente os resultados desejados de uma forma que resulte em geração automática de código para produzir esses resultados. Obviamente prontamente acessível pela 4GL. Por fim observa-se que o desenvolvedor, para transformar a 4GL em um produto deve realizar testes cuidados e minuciosos, bem como uma documentação completa e significativa. Realizar também todas as etapas existentes nos outros paradigmas da engenharia de software. Escolhendo um paradigma para seguir, parte-se para o estudo de viabilidade do sistema. 2.1.5 ESTUDO DE VIABILIDADE Todos os projetos são viáveis (PRESSMAN, 1995, p.200), se for analisado de forma coerente desde o seu início: as datas de entrega de certas funções do sistema, o pessoal necessário, o material utilizado, o custo, entre outros fatores. Isso é fundamental e necessário para o desenvolvimento de um software, pois meses, anos, recursos financeiros, podem ser desperdiçados caso o software não seja analisado antes de seu inicio. 21 Existe grande relação entre o estudo de viabilidade e análise de riscos (seção 2.1.6), pois havendo grandes riscos para o desenvolvimento do sistema, resultará em uma viabilidade baixa de se produzir um software qualificado. Existem quatro áreas de grande importância: Viabilidade econômica: Uma análise dos custos do sistema com os lucros/benefícios que o mesmo resultará. Viabilidade técnica: Análise das restrições que possam acarretar em falhas nas etapas de desenvolvimento do sistema. Viabilidade responsabilidade legal: legal Análise que de possam possíveis acarretar violações, em falhas restrições nas etapas ou de desenvolvimento do sistema. Alternativas: Análise de diversas maneiras de se desenvolver o sistema. Sobre o estudo de viabilidade(Pressman, 1995, p.200): “Um estudo de viabilidade não tem razão de ser para sistemas em que a justificação econômica seja óbvia, os riscos técnicos sejam baixos, poucos problemas jurídicos sejam esperados e não exista nenhuma alternativa razoável. Entretanto, se faltar qualquer uma das condições precedentes, o estudo deve ser realizado.“ Juntamente com o estudo de viabilidade deve-se realizar a parte de análise de riscos. 2.1.6 ANÁLISE DE RISCOS Para (Pressman, 1995, p.58): Sempre que um programa de computador for construído haverá áreas de incerteza. As necessidades do computador são de fato atendidas? As funções que devem ser implementadas podem ser antes do prazo final do projeto? Surgirão problemas técnicos difíceis que atualmente estão fora de nossa visão? As mudanças que invariavelmente ocorrem durante qualquer projeto farão com que a programação se desvie muito do curso? Para que haja um gerenciamento de qualidade e futuramente se conclua um software de excelência é necessário o conhecimento de todos os riscos de um projeto como um todo. Para finalmente saber se a junção de todos os riscos torna 22 viável a construção do software e assim partir para a etapa de realizar a modelagem deste software. 2.1.7 PRA QUE REALIZAR A MODELAGEM DO SISTEMA? A modelagem é uma cópia do sistema que pode ser verificada antes da implementação ser iniciada, com isso pode-se notar os problemas e riscos possíveis. Basicamente é a modelagem que vai dizer tudo sobre o que se deve fazer; qual o caminho mais eficiente, visando a maior otimização possível do sistema (poupando recursos), o pessoal necessário, o real foco do sistema, as ferramentas necessárias e adequadas, e o tempo necessário para a contemplação do sistema. A capacidade humana é limitada para entender coisas complexas como sistemas de alto desempenho. Com a modelagem, faz-se uma síntese do projeto, assim observando que os problemas grandes são divididos em menores, para focar e conquistar(resolver) um por vez. Muitas vezes programadores, que de uma maneira informal fazem a sua modelagem, com rabiscos, desenhos e outros recursos próprios. Isso pode vir a funcionar, mas o grande problema disto é que esta modelagem só será conhecida por ele ou por sua equipe. Se futuramente, outros forem fazer manutenção ou expansão no sistema, será incompreensível a modelagem, logo, como realmente o software funciona. Por isso a utilização da linguagem padronizada e internacional UML, que é conhecida por grande parte do grupo de desenvolvedores do mundo. Para se representar o sistema na UML existem diagramas que são uma apresentação gráfica de uma serie de elementos utilizados na linguagem UML, que são para representar, através de gráficos de vértices(itens) e arcos(relacionamentos). Sobre a modelagem UML (Booch, Rumbaugh, Jacobson, 1999, p. 6): Com a modelagem, alcançamos quatro objetivos. 1. Os modelos ajudam a visualizar o sistema como ele é ou como desejamos que seja. 2. Os modelos permitem especificar a estrutura ou o comportamento de um sistema. 23 3. Os modelos proporcionam um guia para a construção do sistema. 4. Os modelos documentam as decisões tomadas. A seguir fala-se sobre as representações gráficas da UML, ou seja, os diagramas para representar diversos aspectos do sistema. 2.2 UNIFIED MODELING LANGUAGE (UML) O estilo dos diagramas que o projeto refletirá e da UML, que é um padrão de para se construir e elaborar projetos de softwares. Pode ser usada na parte visual, especificação, a construção e documentação. 2.2.1 HISTÓRIA Na década de 90 existiam várias maneiras de se projetar um sistema, ou seja, diversos métodos que eram utilizados para os projetos de softwares como: Booch, OOSE, OMT entre outros. Cada um deles tinham suas especificidades, certo método era bom para certo tipo de sistema, tinham suas vantagens e desvantagens. Na metade de 1990 os líderes de cada empresa responsável pelos métodos Booch, OOSE, OMT, começaram a inserir as ideias de orientação a objetos em seus métodos. Então eles se sentiram motivados a criar uma linguagem unificada, que fosse única utilizada por todos, pois seus métodos estavam se unindo independentemente, ou seja, um estava completando o outro. Então não havia motivo para ficarem separados. A grande vantagem seria um maior entendimento por parte dos usuários e o fortalecimento do mercado orientado a objetos. Sobre a unificação (Booch,Rumbaugh, Jacobson, 1999, p. XVII): Ao iniciar a unificação, estabelecemos três objetivos para o nosso trabalho: 1. Fazer a modelagem de sistemas, do conceito ao artefato executável, com a utilização de técnicas orientadas a objetos. 2. Incluir questões de escala, inerentes a sistemas complexos e de tarefas críticas. 3. Criar uma linguagem de modelagem a ser utilizada por seres humanos e por máquinas. 24 Esse novo método seria a UML que se iniciou oficialmente em outubro de 1994, e em 1995 saiu a primeira versão. Daí por diante surgiram outras versões da UML. 2.2.2 DIAGRAMA DE CLASSES Diagrama de classes(Figura 5) segundo (Booch, Rumbaugh, Jacobson, 1999, p. 104): Os diagramas de classes são os diagramas encontrados com maior frequência na modelagem de sistemas orientados a objetos. Um diagrama de classes mostra um conjunto de classes, interfaces e colaborações e seus relacionamentos. Figura 5 Exemplo de diagrama de classes 2.2.3 DIAGRAMA DE CASOS DE USOS Os diagramas de casos de uso têm um papel central para a modelagem do comportamento de um sistema, de um subsistema ou de uma classe. Cada um 25 mostra um conjunto de casos de uso e atores e seus relacionamentos. (Booch, Rumbaugh, Jacobson, 1999, p. 231). Figura 6 Exemplo de diagrama de casos de uso O diagrama de casos de uso tem como objetivo relatar, quais são as funcionalidades do sistema. Observa-se na Figura 6 um exemplo do diagrama de casos de uso, que contem: Atores É um usuário do sistema, podendo ser um ser humano, ou um sistema computacional. A seguir na Figura 7 a representação de um ator. Figura 7 Ator diagrama de casos de uso Caso de uso É representado por uma elipse(Figura 8), e define uma grande função do sistema. Existe a possibilidade de que uma função seja estruturada em outras, com isso o caso de uso será estruturado. 26 Figura 8 Caso de uso digrama casos de uso Relacionamentos Descrevem os casos de uso entre: Ator e caso de uso(Figura 9) Figura 9 Associação diagrama de casos de uso 2.3 ORIENTAÇÃO A OBJETOS De acordo com Pablo Dall’Oglio (2007, p. 86) A orientação a objetos é um paradigma que representa toda uma filosofia para construção de sistemas. Em vez de construir um sistema formado por um conjunto de procedimentos e variáveis nem sempre agrupadas de acordo com o contexto, como se fazia em linguagens estruturadas (Cobol, Clipper, Pascal), na orientação a objetos utilizamos uma ótica mais próxima do mundo real. Lidamos com objetos, estruturas que já conhecemos do nosso dia-a-dia e sobre as quais possuímos maior compreensão. Há duas estruturas principais na orientação a objetos, que são as classes e os objetos. A classe é uma estrutura que define um tipo de informação a ser trabalhada, existindo a possibilidade de conter atributos, que são propriedades dessa classe e métodos que são funções desempenhadas por essa classe. O objeto é uma classe em instância, ou seja, no momento de execução do sistema a classe sendo algo dinâmico. A seguir (Figura 10) um exemplo de uma classe, contendo os atributos: cod, nome, endereco e telefone. Possui os métodos getNome e setNome, que são funções que esta classe quando instanciada, se tornando um objeto realizará. 27 Figura 10 Exemplo de classe Por muitas vezes é complicado se ter uma noção de como se dará a programação de um software. Sua complexidade faz com que se torne árduo o trabalho de programar em linguagem estruturada. Uma das soluções para este problema é utilizar o paradigma orientado a objetos. A orientação a objetos é um paradigma que visa o desenvolvimento de um projeto mais enxuto enquanto código e diagramas. Ele foi criado em um determinado momento no qual o paradigma estruturado não estava mais satisfazendo as necessidades dos programadores. Os algoritmos começaram a se tornar muito complexos, sendo que só existia uma maneira de desenvolvimento. É necessário o entendimento do nosso mundo real para facilitar a compreensão deste jeito de se programar. Na dimensão em que vivemos somos apenas objetos que nos relacionamos entre nós mesmos. Esse ambiente por nós habitado depende das nossas ações e suas respectivas reações, o que é chamado de cadeia de eventos. Alguns autores representam a orientação a objetos e essas relações como um mundo, “o mundo OO”. Completamente diferente do “mundo estruturado”, de onde devemos nos desligar por completo, trazendo apenas a lógica de programação para o “mundo OO”. Por serem relações de objetos, não será mais usado o termo programa, mas sim, classes implementadas. Essas classes são moldes lógicos dos objetos e suas funções. Por exemplo, a planta de um imóvel é sua classe, a ideia original. Portanto, a aplicação dessa ideia, ou seja, o imóvel construído, a parte física da relação seria o objeto. 28 Para a obtenção do sucesso na construção de códigos orientados a objetos é fundamental que se conheça o conceito de abstração. Essa abstração consiste em analisar friamente as necessidades do usuário e programar de acordo a supri-las. Por exemplo, antes de todo projeto existe uma análise de tudo aquilo que o usuário deseja. Como o usuário não tem o conhecimento suficiente para conseguir transformar essas informações em classes para implementação. O papel do desenvolvedor em reuniões com o usuário, onde ele fala das suas necessidades, é justamente interpretar esses problemas e modelar eles de maneira lógica de forma que facilite o desenvolvimento do software mais tarde. Essa tradução de informações do mundo real para o segmento orientado a objetos é chamada de abstração. Todos os programadores que começam a trabalhar com o paradigma Orientado a Objetos tem sempre a mesma dificuldade num primeiro momento. O objetivo com a utilização deste paradigma para o desenvolvimento deste sistema, é que com a experiência adquirida em outros momentos do curso se saiba identificar os momentos onde será viável a programação em objetos, desta maneira diminuindo os custos de tempo e aprimorando um conhecimento já utilizado. A partir do momento que se compreende o paradigma(maneira/modo) que será desenvolvido o sistema, se parte para a linguagem na qual será realizado o desenvolvimento do sistema. 2.4 JAVA No início da década de 90, quando a Sun Microsystems projetava desenvolver uma plataforma que permitisse o controle de computadores e eletrodomésticos à distância, e com o aumento das necessidades e consequentemente dos gastos, esse projeto já não estava mais sendo viável. Então, em 1995, John Cage apresentou ao mundo a plataforma Java como uma linguagem para aplicações voltadas para Internet. As características da linguagem Java: 29 Orientada a Objetos. Há possiblidade da inserção de todos os fundamentos presentes no paradigma orientado a objetos. Robusta e Segura. simultaneamente(multithreading) Realiza diversos processos e as classes protegem o SO e o ambiente em que está sendo executado o software utilizando a linguagem. Distribuída e Portátil. Existe a opção de um objeto ser acessado de uma máquina que não é a que ele se encontra e também a linguagem roda em mainframes e celulares. Arquitetura Neutra. Tem como linguagem-mãe o C++, possuindo mais simplicidade no código. Em suas classes existe somente uma porta de entrada. Interpretada, mas de Alto Desempenho. Roda sobre uma máquina virtual, sendo interpretada por Bytecodes. Simples. Contém apenas seis comandos(dois de decisão, três de repetição e um para proteção do código). A partir dessas características da linguagem Java, ela foi compreendida como uma evolução. Conhecendo os conceitos de Orientação a Objetos, é possível definir alguns fundamentos em Java: A classe deverá ter extensão .java e deverá seguir o molde, de definição de pacote de classes, definição de importação de classes provenientes de outros pacotes e definição da própria classe. A geração do arquivo de classe .class será interpretado pela JVM (Java Virtual Machine) que interpretará os dados e os executará corretamente. Assim, uma aplicação Java poderá ser compilada em qualquer máquina que possua a JVM. Deixou de lado a múltipla herança da sua linguagem-mãe C++ facilitando a associação de classes de um mesmo pacote, assim a troca de informações de classe para classe será dada através de apenas um ponto de entrada. 30 Abaixo na Figura 11 exemplo de um código simples em Java. Figura 11 Exemplo de código em Java Sobre a linguagem Java (Anselmo, 2005, p.18): Resumidamente, o que isto significa é que, ao criarmos um programa em linguagem Java e o compilarmos, podemos enviá-lo para qualquer lugar que tenha uma JVM. Esta então se encarregará de executá-lo no Sistema Operacional(não importando o qual) que ela estiver instalada. Definida a linguagem de programação Java, parte-se para o banco de dados, o qual receberá todas as informações do sistema programado em Java. 2.5 BANCO DE DADOS O Banco de Dados é uma maneira de transformar informações provenientes do mundo real em dados virtuais. Esses sistemas de banco de dados são desenvolvidos para gerir a manipulação de grandes volumes de informação. Para o gerenciamento desses dados são desenvolvidas SGBDs (Sistemas Gerenciadores de Banco de Dados), que administram de maneira lógica essa abstração do mundo real. Para que se possa interpretar o mundo real como um conceito lógico e virtual, três modelos foram criados: Modelo Conceitual, o Modelo Entidade-Relacionamento, e o Modelo Lógico Relacional. 31 Segundo Antônio Ricardo (2004, p. 5): “De acordo com a intenção do modelador, um banco de dados pode ser modelado (descrito) há vários níveis de abstração. Um modelo de dados que servirá para explicar a um usuário qual é a organização de um banco de dados provavelmente não conterá detalhes sobre a representação em meio físico das informações. Já um modelo de dados usado por um técnico para otimizar a performance de acesso ao banco de dados conterá mais detalhes de como as informações estão organizadas internamente e portanto será menos abstrato.” 2.5.1 MODELO CONCEITUAL Segundo Antônio Ricardo (2004, p.5): “Um modelo conceitual é uma descrição do banco de dados de forma independente da implementação em um SGBD. O modelo conceitual registra que dados podem aparecer no banco de dados, mas não registra como estes dados estão armazenados a nível de SGBD.” O modelo conceitual é o primeiro passo para o desenvolvimento de um projeto de banco de dados. Ele visa descrever as interações reais existentes e transcrevê-las para que se possa implementar o sistema de banco de dados. Pode ser dividido em três níveis: Físico, Lógico e de Visão. Físico: Apenas descreve como esses dados estão armazenados. Estruturas de dados são descritas detalhadamente de forma física, na sua maioria das vezes em formato de bytes. Lógico: Descreve os dados de maneira racional e mostra suas interações. É utilizado pelos desenvolvedores de sistemas de bancos de dados por ser mais simples que o nível físico, assim conseguindo interpretar o problema e transformá-lo em uma sequencia de código que relacione essas informações sem distorção de dados do mundo real. De visão: É o banco de dados do ponto de vista do usuário. Apenas descreve as interações e informações de acordo como foi projetada no modelo lógico. Também abrange a questão de segurança de um banco de dados. Um usuário não necessita saber todas as informações existentes em um banco de 32 dados. O modelo de visão mostrará somente parte do banco de dados, definindo assim, o nível de visão para o usuário. 2.5.2 MODELO ENTIDADE-RELACIONAMENTO O uso desse tipo de modelo é para esboçar o projeto de modo que facilite a sua implementação mais tarde. A tradução do mundo real para o papel será realizada nesta fase do desenvolvimento. Será pensado um diagrama que seja o mais fiel possível àquilo que acontece na realidade. Este diagrama será composto por: Entidades, Atributos e Relações. Entidade(Figura 12): É onde se agrupam objetos por semelhança de estrutura. Uma entidade tem um conjunto de propriedades, que caracterizam esse grupo. Por exemplo, pessoas são entidades, que tem propriedades como: CPF, nome, peso, altura, data de nascimento, entre outros. Figura 12 Entidade do Modelo ER Atributo(Figura 13): Atributos são propriedades descritivas de um conjunto de entidades. A designação de atributos para cada conjunto de entidades fará com que se armazenem dados similares a cada entidade, assim dando o estereótipo para este conjunto. No entanto cada entidade possuirá seu valor para cada atributo, assim diferenciando de objeto para objeto. Por exemplo, uma pessoa terá o atributo data de nascimento, porém não necessariamente todas as entidades do conjunto pessoas terão a mesma data de nascimento. Figura 13 Atributo do Modelo ER Relacionamento: Será a interação entre uma ou várias entidades. Vamos tomar como exemplo: “Pessoa” poderá se relacionar com “Conta Bancária”. Essas relações terão um mapeamento em função de suas cardinalidades. A cardinalidade 33 de uma relação é quantos objetos de cada conjunto de entidades se associarão. No nosso exemplo, a cardinalidade será de um para um, ou seja, uma pessoa poderá se relacionar no máximo com uma conta. Existem outros tipos de cardinalidade, como um para muitos, onde, por exemplo, uma pessoa possui vários telefones, porém esses telefones pertencem apenas a essa pessoa; ou muitos para muitos: por exemplo, numa empresa uma pessoa trabalha em vários projetos e cada projeto desses contém várias pessoas trabalhando nele. 2.5.3 MODELO RELACIONAL O modelo relacional ascende do MER (Modelo Entidade-Relacionamento), onde eram feitas as interações reais. Consiste em tabelas(Figura 14), cada uma com um nome único. Essas tabelas foram representadas anteriormente em forma de entidades. As colunas desta tabela serão seus atributos, e suas linhas conterão os valores armazenados para cada objeto do conjunto. Esses valores poderão conter relações entre tabelas, e será dado pelos valores únicos de uma entidade, por exemplo, o CPF de uma pessoa como atributo único. Figura 14 Exemplo de tabelas no MER <renan-m-levy.blogspot.com> 34 3. METODOLOGIA Neste capítulo será discutido como acontecerá o desenvolvimento do software SGI. Nele mostra-se como serão aplicados os conhecimentos aprofundados na fundamentação teórica e como que o projeto se encaixaria numa implantação real. Também será uma parte importante do projeto tendo em vista a otimização da implementação, sendo que aqui serão mostrados diagramas, modelos e formas de se organizar o progresso do software. 3.1 ESTUDO DE VIABILIDADE Esse módulo do projeto mostrará como que o SGI irá facilitar no funcionamento da Imobiliária Família Feliz. Foi pesquisado na Imobiliária Família Feliz como é feito o controle interno da imobiliária, como gerenciamento das transações de imóveis e também a gestão financeira que envolveria percentagens de lucro em cima de imóveis vendidos, etc. O foco principal na ideia do projeto seria no desenvolvimento de um sistema de divulgação da imobiliária através da internet. Porém, essa imobiliária já tivera uma solução para esse problema. A consulta dos clientes interessados em imóveis pode ser dada através de um website já existente, onde ele pode manter contato com o dono atual do produto pretendido. Sendo assim, seria uma contradição desenvolver este tipo de sistema. Com o passar do tempo, e dos contatos com a empresa para verificar quais os principais aspectos a serem melhorados no seu gerenciamento, vimos que a imobiliária sente a falta de um sistema de controle interno. A inviabilidade de não existir um controle interno é muito grande. Por isso, hoje o escopo do projeto é outro. Algumas facilitações que um sistema interno traria: Condições de trabalho off-line 35 Aproximação com o que acontece na imobiliária em termos de transações e especulações. Controle financeiro e percentagens em cima dos valores de imóveis Viabilização da contratação de funcionários Hoje, a imobiliária contém apenas dois funcionários, pelo fato de que ela fora criada apenas alguns meses atrás. Com isso, a avaliação dos terrenos é feita por corretores autônomos que fazem a interface entre o vendedor e a imobiliária e ganham comissões em cima da venda e aluguel dos imóveis por ele avaliado. Também foi discutida a possibilidade de implantação real do sistema no funcionamento da imobiliária. Seus gerentes concordaram que esse tipo de gerência aperfeiçoaria o tempo e funcionamento interno da imobiliária. Com isso, pode-se afirmar que o desenvolvimento deste projeto seria viável, tanto para os alunos que irão fazê-lo, como para a imobiliária que usufruiria do sistema proposto. 3.2 REQUISITOS Depois da viabilidade de se construir o projeto ser estudada, passou-se a tratar, nas conversas com a proprietária da imobiliária sobre o desempenho e funcionalidades que o sistema traria. Essas funcionalidades chamadas de requisitos do sistema nos darão uma visão mais detalhada sobre cada um dos módulos que estarão no software. Os requisitos serão: • Acesso Restrito: Consistirá em existir um login e senha para que o administrador possa controlar o sistema sem que outro funcionário qualquer possa ter acesso a parte administrativa do sistema. • Manter Imóveis: Os funcionários poderão cadastrar os imóveis de clientes, modificar os já existentes no sistema e também fazer a exclusão deles do banco de dados, caso o cliente decida tirá-lo desta imobiliária. 36 • Manter Funcionários: Com o administrador tendo acesso a módulos que outros funcionários não têm, só ele poderá fazer a manutenção de funcionários, como cadastrá-los (admissão) e exclui-los (demissão). • Manter Clientes: Quando um cliente tem interesse em colocar seu imóvel disponível para venda ou locação, o funcionário responsável pelo sistema deverá se utilizar deste módulo do sistema para cadastrá-lo antes de cadastrar o imóvel. Também fará alterações e definirá clientes inativos. • Operação: Inserção das operações que realizada a imobiliária, junto com objetos possivelmente relacionados, acarretando na construção de diversos relatórios. • Avaliação: Se utiliza do cadastro dos funcionários e dos imóveis para que corretores façam a avaliação do imóvel, gerando seus respectivos laudos. 3.3 FUNCIONAMENTO DA IMOBILIARIA Com o tema principal deste projeto sendo o desenvolvimento de um software que consiga fazer de maneira eficaz o controle interno de uma imobiliária, foi necessário que houvesse uma pesquisa minuciosa sobre como, atualmente, funcionam as imobiliárias quanto ao seu software de gerenciamento. Para a compreensão do cotidiano de uma imobiliária, foram feitas visitadas a Imobiliária Família Feliz, situada na cidade de Paranaguá e a partir destas visitas foi feito este levantamento sobre o funcionamento da mesma por meio de acompanhamentos no dia-a-dia da empresa. Escolheu-se esta imobiliária, pois existe a possibilidade do software ser implantado. Com a colaboração da proprietária do estabelecimento, conseguimos extrair algumas informações sobre como se dá o controle de vendas e alugueis de imóveis, como: 1. Corretores não são funcionários contratados. São autônomos e fazem a angariação de imóveis por conta própria. A imobiliária apenas se aproveita dos imóveis avaliados por eles para fazer a relação entre comprador e vendedor. 37 2. Uma parte da percentagem que a imobiliária ganha em cima da venda e aluguel de imóveis irá para o corretor que fez a avaliação. 3. O corretor ou a imobiliária terão de zelar e cobrar a entrega do imóvel nas condições em que foram apresentadas na avaliação. 4. Corretor fará a interface entre o cliente-vendedor e a imobiliária interessada na venda deste imóvel. Também foi pesquisado quanto à comissão de venda/aluguel que como bônus, é recomendado pelo CRECI (Conselho Regional de Corretores de Imóveis) que o primeiro aluguel de uma locação feita pela imobiliária seja inteiramente direcionado a imobiliária e que os demais sofram um honorário de 10% em relação à comissão de imobiliária/corretor. Porém, nem todas as imobiliárias funcionam dessa maneira, e esses percentuais podem variar de valor durante a vida da imobiliária. Portanto, será necessária a criação de opções dentro do software que tragam a possibilidade de mudança quanto a isso. Outras informações que não de conhecimento especifico de gerencia de imobiliária sobre como será feito cadastro de clientes, cadastro de corretores, entre outros, não será abordada nesta seção. 3.4 GERAÇÃO DE RELATÓRIOS PDF Uma imobiliária necessita da geração de muitos relatórios. Por vezes esses relatórios precisam ser armazenados em arquivos separados por data, por exemplo. Nas séries anteriores deste curso, a alternativa para gerar uma amostra de dados era a criação de tabelas dentro do software que continham informações. Mas, em uma imobiliária séria, a visualização de informações não pode ser dada desta maneira. Para isso serão gerados relatórios em formato PDF. Esses relatórios serão gerados automaticamente no sistema, para isso será necessário alguns conhecimentos a mais, por exemplo, a biblioteca utilizada para fazer esta conversão de informação do banco de dados em PDF será a itexpdf-5.1.3. 38 Essa biblioteca contém todas as classes e métodos necessários para a conversão dos arquivos em PDF. 3.4.1 FUNCIONAMENTO DA ITEXPDF 5.1.3 A API itexpdf tem diversas funcionalidades que não cabem discutir uma a uma, haja vista que nem todas serão utilizadas no desenvolver do software Para uma simples geração de relatório serão utilizadas as classes PDFWriter, Document, DocumentException e Paragraph: - PDFWriter: Cria um objeto que instancia um escritor de PDF. Sua função é abrir, alterar, manter informações e salvar arquivos. - Document: Cria um documento PDF para inserir e alterar dados. - DocumentException: Trata as exceções que possam vir a ocorrer na abertura, na modificação ou ao salvar o arquivo. - Paragraph: Objeto que cria uma string em forma de parágrafo e a converte para formato PDF. Na Figura 15 relata-se como ocorre a importação dessas classes para o projeto. Figura 15 Classes para geração PDF Com essas classes importadas, já é possível estudar os métodos e suas funções. 3.4.2 MÉTODOS Os métodos(Figura 16) da API itexpdf v5.1.3 são chamados através das classes já apresentadas. Esses métodos chamam as funções da API que fazem a manutenção do arquivo. São utilizados: - getInstance(Document a, FileOutputStream file): Chamado pela classe PDFWriter, cria a instância do documento formato PDF que será 39 criado/aberto/manipulado e insere as informações do file no documento. A variável file conterá as informações desse arquivo como nome e diretório. - document.open(): Método onde document é um objeto da classe Document. Esse método só será chamado depois da getInstance(), onde document receberá as informações do arquivo que será modificado. Tem como função abrir o arquivo para manipulá-lo. - document.add(Paragraph para): Criação do parágrafo será dada através de uma string que será o parâmetro do construtor da classe Paragraph. Este método irá adicionar o parágrafo criado ao arquivo PDF. - document.close(): Fechamento e salvamento do arquivo dado por esse método. Figura 16 Exemplo de código para geração de um documento PDF 3.4.3 VISUALIZAÇÃO DE ARQUIVO PDF NO SISTEMA Sabendo como se criar e modificar os arquivos PDF no sistema, também se faz necessário mostrar o relatório gerado dentro do sistema. Para tal tarefa será utilizada a biblioteca pdfviewer.jar As classes(Figura 17) da API chamadas para fazer a visualização do relatório são: PDFFile, PDFPage e PagePanel. Além disso, outras classes da API do Java são chamadas como a ByteBuffer e a FileChannel. Figura 17 Classes importadas do PDFView 40 3.4.4 CÓDIGO Alguns métodos e construtores são chamados para que ocorra o funcionamento pleno desse módulo do sistema. Sendo eles: - new RandomAccessFile(file, "r"): Com file sendo o arquivo que será acessado, a classe RandomAccessFile trará um objeto que servirá de consulta para acesso do arquivo. - raf.getChannel(): Traz a posição do canal de ligação com o arquivo. Irá apontar onde está o arquivo no sistema. - channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size()): Aponta o ‘mapa’ do arquivo para o ByteBuffer. Trará todas as informações necessárias para o acesso do arquivo. - new PDFFile(buf): Criará um objeto da classe PDFFile, passando por parâmetro uma instancia de ByteBuffer, que recebera o channel.map(), como anunciado no item anterior. - PDFPage page = pdffile.getPage(0): Recebe a pagina em formato PDF do PDFFile. - panel.showPage(page): Sendo panel um painel de uma janela, chamará a instancia page, da classe PDFPage, mostrando este relatório numa janela do sistema. Esses métodos(Figura 18) contribuirão para que seja mostrado os relatórios em uma janela do sistema, sem a necessidade da abertura em outro software como Adobe Reader. Figura 18 Exemplo de código para visualizar um documento PDF 41 3.5 DIAGRAMA DE CASO DE USO Como mencionado na seção 2.2.3, o diagrama de caso de uso servirá de apoio para a construção das funcionalidades do sistema. Ele mostrará como se dá as relações entre atores externos ao sistema e seus envolvimentos quanto aos módulos de serviço do projeto. Na figura 19 pode-se notar a existência de quatro atores: Imóvel, Funcionário, Corretor, Cliente. Os casos de uso são baseados na análise de requisitos, feita na secção anterior a esta. A diagramação de casos de uso (Figura 19) nos mostra o ator Funcionário tendo que, necessariamente, realizar um login para que possa executar funções como Manter Pessoas ou Manter Imóveis, cadastrar operações e avaliações de imóveis que venham a ser feitas. Outros atores como Imóvel e Cliente apenas participarão como objetos do sistema. Por exemplo, o Cliente poderá ser cadastrado pelo Funcionário, ou participar de uma Operação, seja como vendedor, seja como comprador/locador. O Imóvel participará de quatro ações distintas: Gera Histórico, armazenando todas as informações de determinado imóvel; Manter Imóveis, sendo este imóvel cadastrado no banco de dados por um funcionário; Avaliação, onde serão relatadas as observações do corretor após visita ao imóvel; e Operação, participando como objeto de negociação entre dois clientes (vendedor e comprador). Outras funções como GeraContrato e GeraRelatorio serão apenas executadas quando forem chamadas por Operação e Avaliação respectivamente. 42 Figura 19 Diagrama de casos de uso do SGI 43 3.6 DIAGRAMA DE CLASSES A Figura 20 mostra o diagrama de classes do software desenvolvido. Figura 20 Diagrama de classes do SGI Neste diagrama podem-se observar todas as classes que existem no SGI, suas relações e seus atributos, tentando traduzir o que ocorrem na realidade de uma imobiliária em linguagem orientada a objetos. 3.7 MODELO ENTIDADE RELACIONAMENTO Este diagrama(Figura 20), criado para facilitar a tradução do que será armazenado no banco de dados (secção 2.5.2), nos mostra um esboço das tabelas que serão criadas para armazenar dados. Sendo a principal função do SGI a operação (venda/locação) de imóveis entre clientes, é de suma importância que se guarde tudo que pode ocorrer entre eles. 44 O Imóvel, para participar de uma Operação, terá que ser avaliado por um Corretor, que gerará um Laudo sobre ele, podendo este Imóvel ser Residencial ou Comercial. A Operação fará a interface entre Clientes e Imóvel para que haja uma negociação, podendo ela ser Definitiva (Venda/Compra), ou Locação. A Locação gerará um Contrato, com informações legais sobre o estado da locação, tais como data de inicio e fim, valor do aluguel, entre outros. O cadastro dessas informações no sistema só poderá ser dado por um Funcionário cujo Login é válido. A entidade Pessoa dará origem aos Clientes, Funcionários e Corretores. Figura 21 MER do SGI 45 3.8 MODELO RELACIONAL Como retratou a seção 2.5.3, o modelo relacional derivará do modelo de entidade-relacionamento. A diferença entre eles é a criação de chaves estrangeiras (atributos de entidades que existem em outras para caracterizar uma relação) e de chaves primarias (atributos que dão a identificação de um objeto no banco). Segue na Figura o modelo relacional do SGI: Figura 22 MR do SGI Modelo Relacional designando a existência de chaves primárias e de chaves estrangeiras. Este diagrama é o último passo rumo ao desenvolvimento do projeto e da base de dados. 46 4. RESULTADOS OBTIDOS O Sistema de Gerenciamento Imobiliário foi desenvolvido base na modelagem apresentada neste documento, incluindo objetivos, análises e levantamentos de requisitos. O sistema foi implementado na plataforma Java, utilizando a IDE Netbeans, para manipulação e comunicação com o banco de dados utilizou-se a linguagem SQL, com o sistema gerenciador de banco de dados MySql, utilizando a ferramenta phpMyAdmin. A figura 23 apresenta a tela de login do SGI. Figura 23 Tela de Login SGI A figura 24 apresenta a tela inicial do SGI, e é a partir dela que o usuário pode realizar todas as funções previstas neste documento. 47 Figura 24 Tela inicial do SGI Uma das principais funções deste sistema por se tratar de uma imobiliária, é a de manutenção e busca dos imóveis. A partir de conversas com o cliente foi definida a divisão dos imóveis em dois grandes grupos: comercial e residencial. Para o tal temos as Figuras 25 e 26, representando as janelas de inserção destes imóveis. 48 Figura 25 Tela Inserir Imóvel Comercial 49 Figura 26 Tela Inserir Imóvel Residencial Outra função de extrema importância no sistema é a busca dos imóveis (Figura 27), visto que se gera grande praticidade para o dia-a-dia da imobiliária. Nesta tela existe a possibilidade, através de filtros, de efetuar-se uma pesquisa refinada, ou seja, em outras palavras, montar um imóvel desejado. Vê-se grande importância nesta função no momento em que clientes forem visitar a imobiliária a procura de imóveis, sabendo os requisitos do cliente essa busca será realizada com eficiência. 50 Figura 27 Tela de busca dos imóveis Outra função referente aos imóveis é a criação de laudos técnicos por meio dos corretores para avaliar diversos aspectos dos imóveis, em outras palavras o imóvel é avaliado de maneira minuciosa por um profissional responsável. Tudo isso é definido pelo CRECI, a partir desses padrões e de reuniões com o cliente dividiuse o laudo em três principais etapas, essas mostradas nas figuras 28, 29 e 30. 51 Figura 28 Tela laudo parte Objeto da Avaliação 52 Figura 29 Tela laudo parte Especificações Técnicas 53 Figura 30 Tela laudo parte Anexo de Arquivos Agora tendo feita a manutenção e busca dos imóveis, outro resultado alcançado é a manutenção das pessoas(Figura 31, 32 e 33) que junto com os imóveis geram as operações(Figura 34 e 35). Novamente por meio de reuniões com o cliente foi definida que existem três grupos de pessoas. 54 Figura 31 Tela Inserir Pessoa Física A figura 31 mostra o painel para que o usuário cadastre pessoas físicas. 55 Figura 32 Tela Inserir Pessoa Jurídica A figura 32 está no mesmo painel tabulado que o de manter pessoa física, mas na especificação de pessoa jurídica. 56 Figura 33 Tela Inserir Corretor A figura 33 mostra o painel tabulado de manutenção de pessoas, direcionado a inserção de corretores. 57 Figura 34 Tela Operação Venda A figura 34 mostra como que o usuário poderá cadastrar uma operação no sistema. Neste caso uma venda. 58 Figura 35 Tela Operação Locação Na figura 35 está exposto o que o usuário deverá inserir de informações para a conclusão de uma operação do tipo locação. 59 5. CONCLUSÃO A imobiliária Família Feliz utilizava para realizar suas atividades diárias métodos um tanto quanto ultrapassados e inseguros. Simplesmente não havia controle interno, o que no mercado imobiliário torna-se um grande problema. A partir de uma analise criteriosa observou-se a oportunidade de resolver esse problema utilizando a informatização do processo. E foi através de reuniões com o cliente, discussões e análises, que desenvolvemos esse software. Não esperamos que ele seja apenas para essa imobiliária mais se torne um software modelo para área, com isso vemos que há grandes chances de extensão deste sistema. 60 6. REFERÊNCIAS ANSELMO. Fernando. APLICANDO LÓGICA ORIENTADA A OBJETOS EM JAVA. Florianópolis: VisualBooks Editora, 2005 – 2ª Edição Atualizada e Ampliada. <http://www.dsc.ufcg.edu.br/~sampaio/cursos/2007.1/Graduacao/SIII/Uml/diagramas/usecases/usecases.htm>Acesso em 29 de abr. 2012. BOOCH. G.; RUMBAUGH. J.; JACOBSON. I. UML GUIA DO USUÁRIO. 1999 PRESSMAN, S. Roger. ENGENHARIA DE SOFTWARE. São Paulo: Makron Books do Brasil Editora, 1995 – 3ª Edição. OLIVEIRA, Antonio Ricardo. MODELAGEM DE DADOS. Rio de Janeiro: Editora SENAC, 2004 – 3ª Reimpressão. DALL’OGLIO, Pablo. PHP PROGRAMANDO COM ORIENTAÇÃO A OBJETOS. São Paulo: Novatec Editora, 2007.