ETEC ARMANDO BAYEUX DA SILVA ALESSANDRO SPATTI DOS SANTOS FLÁVIA DE ARRUDA FURLETTI KARIN DANIELE AGUIAR SANTOS MARIANA DOS SANTOS MARINA RATTIN BOMBINI MAYARA TALISSA SASS ROSANE BARBETTA O SOFTWARE DA DIRETORIA DE SERVIÇOS RIO CLARO DEZEMBRO/2009 ETEC ARMANDO BAYEUX DA SILVA ALESSANDRO SPATTI DOS SANTOS FLÁVIA DE ARRUDA FURLETTI KARIN DANIELE AGUIAR SANTOS MARIANA DOS SANTOS MARINA RATTIN BOMBINI MAYARA TALISSA SASS ROSANE BARBETTA O SOFTWARE DA DIRETORIA DE SERVIÇOS Projeto apresentado à ETEC Prof. Armando Bayeux da Silva sob a orientação da Prof (ª) Patrícia RIO CLARO DEZEMBRO/2009 ALESSANDRO SPATTI DOS SANTOS FLÁVIA DE ARRUDA FURLETTI KARIN DANIELE AGUIAR SANTOS MARIANA DOS SANTOS MARINA RATTIN BOMBINI MAYARA TALISSA SASS ROSANE BARBETTA Trabalho de Conclusão de Curso apresentado à ETEC Prof. Armando Bayeux da Silva para obtenção do título de técnico em Informática. Orientador(a): Prof. __________. O SOFTWARE DA DIRETORIA DE SERVIÇOS Orientador(a): ____________________________________________________ Examinador(a): ___________________________________________________ Rio Claro, ______ de __________________________ de 2010. A ferrovia que leva ao sucesso é construída em cima de um solo de humildade com pesados trilhos chamados erros que somente são fixados numa linha reta com maciços pregos de perseverança. (Eduardo Siqueira Filho) RESUMO NA LÍNGUA VERNÁCULA SUMÁRIO INTRODUÇÃO ....................................................................................... 7 1. PROGRAMAÇÃO ORIENTADA A OBJETOS ................................. 8 1.1 A Linguagem utilizada: Delphi ....................................................... 8 1.1.1 Programação Orientada a Eventos .................................................... 9 2. BANCO DE DADOS ...................................................................... 11 2.1 A Linguagem e o Sistema Gerenciador de banco de dados ........ 11 2.2 A Linguagem SQL ....................................................................... 12 3. INTERFACE GRÁFICA .................................................................. 14 4. QUALIDADE DE SOFTWARE ......................................................... 15 4.1 Requisitos de qualidade .............................................................. 15 4.2 Processo de software .................................................................. 16 4.3 Garantia de qualidade de software .............................................. 16 5. A IMPORTÂNCIA DE SOFTWARES ............................................... 19 BIBLIOGRAFIA ................................................................................... 20 7 INTRODUÇÃO Hoje em dia, a parcela da população que não possui um computador em casa, é relativamente pequena, deixando claro que este aparelho é uma ferramenta indispensável, tanto para o uso pessoal quanto profissional (em empresas, lojas, etc.). Com o passar do tempo (com a intensificação da informatização), o homem ficou, e vem ficando, cada vez mais dependente de um programa para auxiliar em seu trabalho, e este é justamente o objetivo do nosso trabalho. Criar um programa que auxilie e facilite o trabalho dos funcionários da diretoria de ensinos, e que dê todo tipo de apoio (todas as informações sobre fornecedores, mercadorias, funcionários, etc.) para que ele o realize da melhor maneira possível. Este software será desenvolvido em Delphi 7, visando facilitar o trabalho de funcionários que atuam na área de diretoria de Serviços em nossa escola. Esse software deverá conter informações que facilitem o funcionário na hora de consultar a cotação dos fornecedores, além de facilitar na hora de entrar em contato com os mesmos. Rever o segundo e terceiro parágrafos, pois estão repetindo algumas informações 8 1. PROGRAMAÇÃO ORIENTADA A OBJETOS Alan Kay criou a linguagem de programação Smalltalk, e deu origem ao termo “Programação Orientada a Objetos”. Porém, mesmo antes da criação do Smalltalk, algumas das idéias da POO (Programação Orientada a Objetos) já eram aplicadas. Ole Johan Dahl e Kristen Nygaard criaram em 1967 a linguagem Simula 67, que foi à primeira linguagem que realmente utilizou estas idéias. Apesar de esta programação ser bastante antiga, sua aceitação nas grandes empresas de Software só começou a crescer atualmente. As linguagens: Java, C++, Object Pascal (Delphi), Ruby, Python, Lisp, etc. são exemplos de linguagens modernas e são “universalmente” utilizadas por empresas em todo o mundo. No C++, por exemplo, as idéias são adotadas parcialmente, dando a opção de escolha para o programador escolher o antigo modelo de programação ou o novo, optando usar a Programação Orientada a Objetos ou não, ou seja, o programador fica à vontade para programar da forma tradicional. Neste tipo de linguagem a idéia é se basear em uma linguagem previamente existente e adicionar novas funcionalidades a ela. Outras são construídas “do zero” com o foco na orientação a objetos, por exemplo, a linguagem Smalltalk, Self e IO, onde TUDO é orientado a objetos. Definir linguagem de programação (em geral) e orientação a objetos, o texto a menciona mas não a define – Referencia de autor ??????? 1.1 A Linguagem utilizada: Delphi Borland Delphi, conhecido popularmente somente por Delphi, é um compilador, uma IDE (“Integrated Device Electronics”, Aparelho Eletrônico Integrado) e uma linguagem de programação. Antigamente a Borland Software Corporation era responsável pela sua produção, mas atualmente ele é feito pela Embarcadero. O Delphi é por origem direcionado para a plataforma Windows, ou seja, foi feito para rodar prioritariamente no Windows, porém ele também chegou a ser usado para desenvolvimento de aplicações em Linux e Mac OS. Atualmente um projeto chamado Lazarus possui uma interface muito semelhante ao Delphi e é multiplataforma, ou seja, roda tanto no Windows quanto no Linux. A origem do nome “Delphi” é uma homenagem à cidade de Delfos, na Grécia antiga, onde era possível consultar o “Oráculo de Delfos”. Este nome foi escolhido pelos programadores com a 9 intenção de criar uma ferramenta capaz de acessar o banco de dados “Oracle”, e vem daí o trocadilho: "a única maneira de acessar o oráculo é usando Delphi". Algumas áreas em que o Delphi é muito utilizado é no desenvolvimento aplicações desktop, aplicações multicamadas e aplicações cliente/servidor, ele é compatível com todos os bancos de dados mais conhecidos e utilizados do mercado. O Delphi pode ser utilizado para vários tipos de desenvolvimento de projeto. Seu ambiente para a criação de softwares possui características como: 1. Interface, a parte da estrutura do aplicativo Delphi que pode ser realizada com o auxílio de ferramentas visuais. 2. Orientação a Objeto, as classes, heranças e polimorfismo, tudo utilizado pela linguagem de programação do Delphi (Object Pascal). Porém, esta não é uma linguagem totalmente orientada a objetos como Smalltalk e Eiffel; 3. Orientação a Eventos, cada elemento da interface do aplicativo que é capaz de capturar e associar ações a uma série de eventos; 4. Compilação, geração de um código em linguagem de máquina que acelera a execução dos aplicativos. Referencia de autor ??????? 1.1.1 Programação Orientada a Eventos Esta programação segue um fluxo de controle padronizado.O controle de fluxo de programas orientados a eventos é guiado por indicações externas. Estas indicações são chamadas de eventos. A programação Orientada a Eventos é um estilo fundamental de se programar onde na execução a programação sofre uma intervenção de eventos. Esta programação é considerada base da criação de Interfaces com Usuário e na programação para web (web 2.0). É programado em sua base em um laço de repetição de eventos, que recebem repetidamente informações para processar e disparam uma função de resposta de acordo com o evento. É realizado em efeito de evento em cascata. 10 As entradas podem ser enfileiradas ou uma interrupção pode ser registrada na hora da reação, ou ainda ambos.Esse método é bastante flexível e permite um sistema assíncrono. Para se programar, não é necessário que esta seja puramente orientada a eventos ou puramente orientada a objetos, é possível “mesclar” os dois tipos de paradigmas na hora da programação. Referencia de autor ??????? 11 2. BANCO DE DADOS Todos nós sabemos que existem gigantescos bancos de dados gerenciando nossas vidas. De fato, sabemos que nossa conta bancária faz parte de uma coleção imensa de contas bancárias, ou que nosso Título Eleitoral, ou nosso CPF, certamente também estão armazenados em bancos de dados enormes. Sabemos, também, que quando sacamos dinheiro no caixa eletrônico de um banco, nosso saldo e as movimentações existentes em nossa conta bancária já estão à nossa disposição. Nessas situações sabemos que existe uma necessidade em se realizar o armazenamento de uma série de informações que não se encontram efetivamente isolada umas das outras, ou seja, existe uma ampla gama de dados que se referem a relacionamentos existentes entre as informações a serem manipuladas e atualizadas, e a melhor forma de se fazer isso é através do uso de tabelas. Um banco de dados contém os dados dispostos numa ordem pré-determinada, em função de um projeto de sistema, sempre para um propósito muito bem definido. Em informática, um banco de dados representará, e deverá representar sempre aspectos do mundo real. Sendo assim, a melhor forma de gerenciar e manipular todas as tabelas, e suas informações, é através de um sistema gerenciador de banco de dados, também conhecido como SGBD. 2.1 A Linguagem e o Sistema Gerenciador de banco de dados Um sistema gerenciador de banco de dados funciona como qualquer sistema normal, ou seja, é um conjunto de programas orientados para a administração de uma base de dados. Este sistema encarrega-se de efetuar a manutenção deste banco de dados, de manter o controle sobre as informações (dados) que entram (são adicionados) nesta base assim como informações que são delas extraídas. Quando se pensa em um SGBD (Sistema Gerenciador de Banco de Dados) a linguagem a ser utilizada é quão importante quanto o SGBD, tanto que o mesmo possui uma linguagem pré-definida. Cada linguagem possui uma forma própria para criar, deletar e alterar tabelas e banco de dados, assim como para fazer outras operações. Melhorar esse parágrafo 12 A linguagem utilizada para a criação do banco de dados deste trabalho foi a linguagem SQL e o Sistema Gerenciadores de Banco de Dados foi o MySQL. Assim como a linguagem, o sistema MySQL é um SGBD extremamente conhecido no mundo quando se fala em banco de dados, na informática, pois além de ser segura e permitir a armazenagem de uma gama de informações, ela consegue aliar todas essas características , e outras, à velocidade da consultas nos dados. Reescrever esse parágrafo – não confundir SQL é a linguagem que manipula os dados e SQL Server é um SGBD Referencia de autor ??????? 2.2 A Linguagem SQL Segundo Chamberlin, Navathe e Oliveira (1981, 2002), SQL é uma linguagem de pesquisa e declaração, para banco de dados. Suas principais características surgiram a partir do conceito de álgebra relacional. Esta linguagem começou a ser desenvolvida no início dos anos 70 pela IBM, em San Jose. Seu nome original era SEQUEL, acrônimo para "Strutured English Query Language" (Linguagem de Consulta Estruturada em Inglês), vindo daí o fato de, até hoje, a sigla, em inglês, ser comumente pronunciada "síquel" ao invés de "és-kiú-él", letra a letra. No entanto, em português, a pronúncia mais corrente é a letra a letra: "ése-quê-éle". A linguagem SQL compreende um grande padrão de banco de dados, isto porque, é simples e de fácil uso. Ela se diferencia de outras linguagens de consulta a banco de dados, no sentido de que uma consulta SQL especifica (vai diretamente) a forma do resultado e não o caminho para chegar a ele. Ela é uma linguagem declarativa em oposição a outras linguagens procedurais. Isto faz com que seja mais fácil de aprender esta linguagem. Mesmo o SQL tendo sido criado pela IBM, surgiram várias “cópias piratas” dessa linguagem, a partir disso, surgiu a necessidade de se criar um padrão comum de linguagem para todas essa derivações. Esta tarefa foi realizada pela American National Standards Institute (ANSI) em 1986 e ISO em 1987. 13 Embora tenha sido padronizado pela ANSI e ISSO existem muitas variações do tipo de linguagem entre esses programas, porém essas mudanças, nem sempre, são muito significativas. Outras modificações que diferenciam essas cópias é o fato de que muitas dessas “novas” linguagens interagem com outros tipos de linguagem (sejam elas linguagens de programação ou de banco de dados). São muitos os serviços e empresas que utilizam a linguagem SQL para gerenciar seus bancos de dados, o que torna a linguagem SQL uma ótima opção para quem quer um bom trabalho com banco de dados. 14 3. INTERFACE GRÁFICA Do inglês Graphical User Interface, GUI (interface gráfica do utilizador), mais popularmente conhecida por Interface Gráfica é uma parte muito importante de um software, assim como a programação. Ela foi criada para melhorar, facilitar e de certo modo, tornar menos árdua essa interação “homem x máquina”. O trabalho de um programador é tornar seus softwares mais funcionais e práticos para o cliente desfrutar das funcionalidades e benefícios que este software oferece. Uma interface deve ser ao mesmo tempo “bonita” e funcional. Isso não só para valorizar o software como garantir boa parte da satisfação do cliente, pois melhora a qualidade e o rendimento em seu trabalho. Sem a interface gráfica os programadores “sofriam” para criar cada vez mais funcionalidades para o software, já que não tinham a vantagem da interface gráfica, um evento quase que inevitável no mundo atual, onde querendo ou não, a aparência é essencial. A famosa frase “Não julgue nada pela sua aparência” não se aplica aqui. Alguns softwares são vendidos mais pela sua “beleza” do que pela sua própria funcionalidade. Por mais simples que essa tarefa pareça ser, é muito complicado agradar o gosto do consumidor, no caso o comprador do software, uma vez que existem vários estilos e gostos diversificados. Para que essa “missão” seja cumprida com sucesso, é necessário entrevistar seu cliente para conhecer a fundo o que lhe agrada ou não, e assim alcançar seu objetivo, deixando o cliente feliz e satisfeito. Referencia de autor ??????? 15 4. QUALIDADE DE SOFTWARE A qualidade de programatura ou qualidade de software é uma área de conhecimento da engenharia de software que objetiva garantir a qualidade do software através da definição e normatização de processos de desenvolvimento. Apesar dos modelos aplicados na garantia da qualidade de software atuarem principalmente no processo, o principal objetivo é garantir um produto final que satisfaça às expectativas do cliente, dentro daquilo que foi acordado inicialmente. Definir engenharia de software Segundo a norma ISO 9000 (versão 2000), a qualidade é o grau em que um conjunto de características inerentes a um produto, processo ou sistema cumpre os requisitos inicialmente estipulados para estes. No desenvolvimento de software, a qualidade do produto está diretamente relacionada à qualidade do processo de desenvolvimento, desta forma, é comum que a busca por um software de maior qualidade passe necessariamente por uma melhoria no processo de desenvolvimento. Para um melhor entendimento e estudo, o SWEBOK divide a qualidade de software em três tópicos, e cada tópico é subdividido em atividades, da seguinte forma: Fundamentos de qualidade de software, gerência do processo de qualidade de software, considerações práticas. Definir SWEBOK Ainda segundo o SWEBOK, a qualidade de software é um tema tão importante que é encontrado, de forma ubíqua, em todas as outras áreas de conhecimento envolvidas em um projeto. Além disso, ele deixa claro que essa área, como nele definida, trata do aspectos estáticos, ou seja, daqueles que não exigem a execução do software para avaliá-lo, em contraposição á área de conhecimento teste de software. Porém, é normal que se encontrem autores e empresas que afirmam serem os testes de software uma etapa da qualidade de software. 4.1 Requisitos de qualidade Requisitos de qualidade é um tópico por si dentro do assunto qualidade. Dentro da ótica desta última, espera-se que os requisitos sejam definidos de 16 maneira a caracterizar completamente o produto a ser construído. Nesse aspecto - e em relação à definição de Brooks (ano)- é evidente que as zonas de sombra dentro de uma especificação abrem margem a todo tipo de problemas de avaliação de produtos. Sommerville(ano) distingue requisitos funcionais e não funcionais. O modelo internacional mais recente Square, estabelecido pela norma ISO 25000, adota uma classificação um pouco diferente e utiliza uma descrição hierárquica. Dentro dessa descrição, "funcionalidade" é uma das seis divisões iniciais em que se classificam os requisitos de um produto de software. Idealmente, a especificação de requisitos deve permitir que o processo de fabricação do software seja controlado. Isso significa que idealmente a qualidade de produtos intermediários deve poder ser mensurada e que os dados obtidos devem trazer informação que possa levar ao controle de desvios, localização de defeitos e outras ocorrências negativas. 4.2 Processo de software Nas últimas décadas foram propostas dezenas de metodologias e processos adaptados a diferentes cenários e produtos. Embora se possa justificar essa multiplicidade por outra lei de Brooks - a ausência de "balas de prata", é um fato que a situação se mostra confusa. Rever esse parágrafo-confuso A situação deixa evidente que há um vácuo a ser preenchido - atacar a raiz do problema e identificar uma estrutura suficientemente geral, capaz de explicar o problema de qualidade e ser adaptada a todos os cenários diferentes. Se tal objetivo é possível resta a ser provado - assunto para novos artigos e teses. Referencia de autor ??????? 4.3 Garantia de qualidade de software A Garantia da Qualidade de Software (GQS) é a área-chave de processo do CMM cujo objetivo é fornecer aos vários níveis de gerência a adequada visibilidade dos projetos, dos processos de desenvolvimento e dos produtos gerados. A GQS atua como "guardiã", fornecendo um retrato do uso do Processo e não é responsável por executar testes de software ou inspeção em artefatos. Definir CMM 17 Obtendo a visibilidade desejada, a gerência pode atuar de forma pontual no sentido de atingir os quatro grandes objetivos de um projeto de desenvolvimento de software, que são: desenvolver software de alta qualidade, ter alta produtividade da equipe de desenvolvimento, cumprir o cronograma estabelecido junto ao cliente e não necessitar de recursos adicionais não previstos. Para facilitar o trabalho dos desenvolvedores e evitar geração de metodologias diversas, o Serpro desenvolveu o Processo Serpro de Desenvolvimento de Soluções (PSDS). O PSDS foi construído por pessoas das unidades da empresa que procuraram aproveitar as melhores práticas existentes e consagradas. Definir Serpro Referencia de autor ??????? 18 19 5. A IMPORTÂNCIA DE SOFTWARES Segundo Mattos (2009), os anos foram passando e conseqüentemente os softwares começaram a surgir e ficar mais populares e acessíveis no mercado. Todos os dias, novos software são desenvolvidos e lançados para objetivos e finalidades diferentes. Apesar destes fatos, muitas empresas, até hoje, utilizam planilhas eletrônicas ou até mesmo papéis para administrar e controlar seus processos principais como fluxo de caixa, movimentação de estoque, compras, vendas entre outros. Não podemos afirmar que esta forma de trabalho está errada ou afirmar que não funciona, pois existem muitas micro-empresas sobrevivendo e crescendo cada vez mais no mercado brasileiro. Muitas vezes os micro-empresários têm uma resistência enorme em adquirir um software de gestão, por muitos fatores. Um fator importante que deve ser trabalhado, é a famosa afirmação: “Em time que está ganhando, não se mexe!”. Mas será mesmo que a micro-empresa está “ganhando” com isso? Será que ela tem benefícios suficientes que justifiquem o controle por planilhas eletrônicas ou papéis? Apesar de parecer que sim, a resposta para essas questões é: NÃO! Podemos descrever algumas vantagens realmente significantes que empresas de pequeno porte terão se optarem pela aquisição de um software de gestão: Agilidade no trabalho como um todo; Controle 100% eficiente dos negócios; Informações reais sobre a situação da empresa (caixa, estoque, etc.); Leitura simplificada das informações por meio de relatórios e gráficos; Redução de mão-de-obra, conseqüentemente redução de custos; Redução de erros humanos, já que o trabalho é feito exclusivamente por máquinas. Os micro-empresários precisam ter consciência que um bom Software de gestão para substituir as planilhas seria uma ótima estratégia organizacional e que sua empresa estaria, verdadeiramente, “ganhando” muito com isso. 20 BIBLIOGRAFIA DAVID, Marcio Frayze. Programação Orientada a Objetos: uma introdução. Postado em 29 out. 2007. Disponível em: http://www.guiadohardware.net/artigos/programacao-orientada-objetos. Acesso em 13 nov. 2009. Interface gráfica do utilizador - Wikipédia, a enciclopédia livre. Atualizado em 29 nov. 2009. Disponível em: http://pt.wikipedia.org/wiki/Interface_gr%C3%A1fica_do_utilizador. Acessado em 13 nov. 2009. ROSA, Adriano. Conceito sobre banco de dados. Postado em 09 set. 2008. Disponível em: http://www.adrianorosa.com/artigos.asp?categoria=banco%20de%20dados&co d=495548&artigo=conceito-sobre-banco-de-dados. Acesso em 30 out. 2009. SQL - Wikipédia, a enciclopédia livre. Atualizado em 09 nov. 2009. Disponível em: http://pt.wikipedia.org/wiki/SQL. Acessado em 27 nov. 2009. Qualidade de software - Wikipédia, a enciclopédia livre. Atualizado em 2 dez. 2009. Disponível em: http://pt.wikipedia.org/wiki/Qualidade_de_software. Acesso em 03 dez. 2009.