introdução ao desenvolvimento de software

Upload: dbmatos

Post on 06-Jul-2015

326 views

Category:

Documents


0 download

DESCRIPTION

No decorrer dos anos os softwares começaram a se popularizar e ficar mais acessíveis no mercado, tendo uma boa parcela de importância em relação à evolução na área de tecnologia que acompanhamos. Em paralelo é possível observar que além de contribuir com o crescimento mundial, a área de desenvolvimento de softwares tem oferecido bastantes oportunidades de crescimento pessoal através de um mercado que se mantém aquecido há um bom tempo. Ao longo desse trabalho, será abordado um pouco mais a fundo as questões por trás desse “mundo” que para muitos é desconhecido, será apresentada a área de uma forma resumida, explicada superficialmente as fases de desenvolvimento, funções envolvidas e ferramentas e tecnologias utilizadas na sua engenharia, como também uma abordagem sobre mercado de trabalho e tendências nesse meio.

TRANSCRIPT

ABORDAGEM GERAL SOBRE A REA DE DESENVOLVIMENTO DE SOFTWARE

Itabuna, outubro de 2009

ABORDAGEM GERAL SOBRE A REA DE DESENVOLVIMENTO DE SOFTWARE

Trabalho

elaborado

pelo

graduando Duilio Benjoino da disciplina Sistemas Introduo de a

Informao,

orientado pelo professor Jlio Oliveira, da Faculdade de

Tecnologia e Cincias, 3 ano.

Itabuna, outubro de 2009

1

ndice1. Introduo ........................................................................................................... 3 2. Desenvolvimento de software ............................................................................. 4 3. Engenharia de software....................................................................................... 7 3.1 Fases do desenvolvimento de um software ................................................... 7 3.2 Modelos de Desenvolvimento ........................................................................ 8 3.2.1 Modelo Cascata ...................................................................................... 9 3.2.2 Modelo em Espiral................................................................................... 9 3.2.3 Modelo de Prototipagem por estgios ................................................... 10 3.2.4 Modelo de Entrega por estgios............................................................ 11 3.2.5 Modelo de Entrega Evolutiva................................................................. 11 3.3 Padres de Projeto ...................................................................................... 12 3.4 Paradigmas de programao ....................................................................... 12 3.5 Linguagens de Programao ....................................................................... 14 3.6 Banco de Dados .......................................................................................... 15 4. Mercado de Trabalho ........................................................................................ 16 5. Tendncias ........................................................................................................ 19 6. Concluso ......................................................................................................... 20 7. Referncias Bibliogrficas ................................................................................. 21

2

1. Introduo

No decorrer dos anos os softwares comearam a se popularizar e ficar mais acessveis no mercado, tendo uma boa parcela de importncia em relao evoluo na rea de tecnologia que acompanhamos. Em paralelo possvel observar que alm de contribuir com o crescimento mundial, a rea de desenvolvimento de softwares tem oferecido bastantes oportunidades de crescimento pessoal atravs de um mercado que se mantm aquecido h um bom tempo. Ao longo desse trabalho, ser abordado um pouco mais a fundo as questes por trs desse mundo que para muitos desconhecido, ser apresentada a rea de uma forma resumida, explicada superficialmente as fases de desenvolvimento, funes envolvidas e ferramentas e tecnologias utilizadas na sua engenharia, como tambm uma abordagem sobre mercado de trabalho e tendncias nesse meio.

3

2. Desenvolvimento de softwareO desenvolvimento de software pode ser descrito como o ato de elaborar e implementar um sistema computacional, ou seja, transformar uma necessidade pr-estabelecida em uma soluo automatizada utilizando a computao. O processo que envolve a engenharia de um software o conjunto de atividades parcialmente ordenadas com a finalidade de obter um produto final, embora em boa parte dos projetos de software o produto final se estenda em verses tornando o processo ininterrupto. Hoje em dia podemos encontrar muitos tipos de software e com as mais diversas funcionalidades, contudo normalmente possvel categoriz-los de acordo a sua finalidade maior. Abaixo seguem os tipos de softwares mais comuns:

Operacionais: Utilizado geralmente no apoio operao e tomada de deciso do corpo tcnico ou operacional das organizaes, tem como caracterstica: tarefas repetitivas e simples, coleta dados e relatrios simples.

Gerenciais: Sistema que manipula informaes para a tomada de deciso do corpo gestor, as informaes so apresentadas em grupos ou sintetizadas de forma que agreguem maior valor na tomada de decises.

Estratgicos: Auxilia na tomada de deciso da alta administrao das organizaes, tem como caractersticas: Informaes nas formas grficas, apresentadas de forma macro e com grande agilidade.

Baseados em Conhecimento: Esses sistemas esto associados ao campo da inteligncia artificial. Contm grande quantidade de conhecimentos para utilizao em determinadas tarefas.

Especialistas: Tm embutidos o conhecimento e a capacidade que os tornam capazes de funcionar como um especialista.

4

Softwares de Baixo nvel: Utilizados na comunicao mais prxima com os hardwares, necessrio elevado conhecimento por parte dos implementadores. Ex.: Sistemas Operacionais (Windows, Linux, Macintosh).

Fatores como segurana, portabilidade, produtividade, manutenibilidade, confiabilidade e qualidade fazem do desenvolvimento de software um processo cauteloso envolvendo diversas funes que podem dividas em:

Gerencia de Projetos: Gerenciar e alocar recursos de toda a equipe tcnica, prestar contas junto administrao superior, encaminhar problemas identificados no decorrer do projeto;

Analista de Sistemas: Responsvel por levantar os requisitos, analis-los, modelar, ou seja, abstrair o que se deseja fazer e transformar em algo que realmente possa ser implementado;

Projetista: Elabora o projeto de construo do software baseado nos requisitos que foram modelados pelo analista de sistema. Responsvel por definir as fases e modelos de desenvolvimento;

Administrador de Banco de Dados: responsvel pelas tarefas mais importantes relacionadas aos bancos de dados, dentre outras, por autorizar o acesso, coordenar e monitorar sua utilizao, controlar toda a parte da segurana (somente projetos que envolvam banco de dados);

Programador: Responsvel por implementar e testar os cdigos (usando uma linguagem de programao);

Auditor de Qualidade: Responsveis por garantir que o sistema ser desenvolvido de acordo com os vrios padres internos e externos da organizao.

5

Algumas das funes citadas acima podem ser acumuladas por um s profissional como muito comum, em projetos de pequeno porte, analistas atuarem tambm como programadores e s vezes at como projetistas.

6

3. Engenharia de software

Segundo Fritz Bauer, autor da primeira definio do termo, "Engenharia de software a criao e a utilizao de slidos princpios de engenharia a fim de obter software de maneira econmica, que seja confivel e que trabalhe eficientemente em mquinas reais", esses princpios se referem especificao, desenvolvimento e manuteno de sistemas de software aplicando tecnologias e prticas da computao, gerncia de projetos e outras disciplinas, objetivando produtividade e qualidade. Esse trabalho ir se concentrar em explanar sobre as principais fases do desenvolvimento de um software e nas principais tecnologias utilizadas atualmente.

3.1 Fases do desenvolvimento de um software Para obter um produto final de qualidade necessrio levar diversos quesitos em considerao, dentre eles esto o cumprimento de todas as fases envolvidas no processo de desenvolvimento, abaixo segue as principais fases :

Levantamento de requisitos: Primeira tarefa na criao de um software, o levantamento de requisitos, trata da extrao das informaes necessrias para a construo do software, pode ser visto como uma previso do projeto que ser usado para conduzir o restante das fases.

Anlise e especificao: Analisa os requisitos levantados afim de gerar uma especificao estruturada do projeto, a tarefa de descrever precisamente o software que ser escrito.

Arquitetura de Software: A arquitetura de um sistema de software remete a uma representao abstrata de como ser o sistema, sua principal funo tentar garantir que o sistema de software ir ao encontro de requisitos

7

levantados, como tambm assegurar que futuros requisitos possam ser atendidos. Implementao (ou codificao): a transformao do que foi especificado e arquitetado em um sistema atravs da codificao. Teste: onde ser testado o que foi codificado afim de encontrar imperfeies para que possam ser reescritas. Documentao: uma fase importante, apesar de ser desmerecida por muitos desenvolvedores, tem como objetivo documentar tudo que foi construdo de modo que facilite a compreenso no futuro e/ou por outros desenvolvedores. Suporte e Treinamento de Software: Depois de construdo, testado e documentado hora de oferecer ao cliente, porm no podemos esperar que ele j saiba como deve manejado, por isso deve ser considerada a fase de suporte e treinamento. Manuteno: A manuteno e melhoria de software lidam com a descoberta de novos problemas e requisitos, podendo ser na correo de erros ou ampliar novas funcionalidades.

3.2 Modelos de Desenvolvimento

No projeto de construo de um software, o atendimento dos requisitos esperados de suma importncia, porm pode acontecer desse projeto diferir dos resultados almejados, tal acontecimento traz diversos problemas e conseqncias suficientemente ruins a ponto de at ter que recomear o projeto, portanto preciso dispor muita ateno ao que se deseja construir, para tanto existem alguns modelos de ciclo de vida que auxiliam no desenvolvimento dos mais diversos projetos de software, pois suas particularidades se encaixam em realidades diferentes, bastando ao desenvolvedor escolher qual delas se adapta melhor no seu projeto. Abaixo ser descrito um pouco sobre cada uma delas:

8

3.2.1 Modelo Cascata

Fonte: OLIVEIRA, Rafael Calmon. Sistemas de Informaes Gerencias - Aula 6

um modelo de desenvolvimento de software onde as fases so executadas em sequncia no qual o desenvolvimento visto como um fluir constante, uma fase comea quando a outra termina.O maior ponto positivo que permite demarcar pontos de controle por fase, que facilitam a gesto, e o grande problema dificuldade de deteco de falhas antes do trmino do projeto, fazendo com que o reparo seja mais complicado

3.2.2 Modelo em Espiral

Fonte: OLIVEIRA, Rafael Calmon. Sistemas de Informaes Gerencias - Aula 6

9

Nesse modelo cada nova iterao corresponde a uma volta na espiral, grosseiramente falando, quer dizer que para cada novo recurso so executadas as diversas fases envolvidas. Permite construir produtos em prazos curtos, onde novas caractersticas e recursos so agregados na medida em que se descobre sua necessidade, seu principal problema que requer gesto sofisticada e permanente o que faz com que no seja indicado em projetos pequenos.

3.2.3 Modelo de Prototipagem por estgios

Fonte: OLIVEIRA, Rafael Calmon. Sistemas de Informaes Gerencias - Aula 6

Consiste em desenvolver um sistema ou um componente dele num curto espao de tempo sem evidenciar especificaes muito formais. uma variante do modelo espiral onde o produto desenvolvido completamente e a cada nova verso corresponde a um prottipo. Tem como vantagem o feedback muito mais relevante para os implementadores, o principal problema a preocupao para que o produto no degenere ao longo dos prottipos.

10

3.2.4 Modelo de Entrega por estgios

Fonte: OLIVEIRA, Rafael Calmon. Sistemas de Informaes Gerencias - Aula 6

Nesse modelo a entrega ao cliente feito em liberaes parciais do produto final o que aumenta a visibilidade do projeto. Esse modelo apresenta problemas parecidos do modelo cascata.

3.2.5 Modelo de Entrega Evolutiva

Fonte: OLIVEIRA, Rafael Calmon. Sistemas de Informaes Gerencias - Aula 6

a combinao dos modelos Cascata e Prototipagem, facilita o acompanhamento do progresso do projeto, tem como problema a dificuldade de produzir o desenho inicial.

11

3.3 Padres de Projeto A constante luta pela qualidade de software vem a anos construindo padres e tcnicas diferentes que auxiliam na construo de sistemas, visando auxiliar no desenvolvimento de software livre de defeitos, na implementao mais gil e na manuteno mais fcil e organizada. A comunidade de software ao longo do tempo criou diversos livros que documentam padres de desenvolvimento de software, abordando melhores praticas para o processo de analise e

desenvolvimento, para projetos de alto nvel, bem como solues para problemas recorrentes. Padres de projetos (Design Patterns) so solues para problemas que algum um dia teve e resolveu aplicando um modelo que foi documentado e que voc pode adaptar integralmente ou de acordo com a necessidade de sua soluo. Apesar de serem bastante indicados os designs patterns no tornaro o projeto isento de falhas, mas se forem bem implementados, ajudaro muito no desenvolvimento e manuteno do software.

3.4 Paradigmas de programao Um paradigma de programao fornece a viso que o programador possui sobre a execuo do programa, a forma como o programador enxerga a soluo do problema, falar de paradigmas falar em tcnicas diferenciadas de programao, tem haver com a estrutura e metodologias utilizadas. Diferentes linguagens de programao propem diferentes paradigmas de programao, algumas linguagens foram desenvolvidas para suportar um paradigma especfico, outras linguagens suportam mltiplos paradigmas. Abaixo sero abordados os principais paradigmas:

12

Estruturado: O programa uma estrutura que se subdivide em subestruturas mais simples, onde problemas complexos so divididos em problemas mais simples. A combinao das solues das etapas mais simples acaba solucionando as etapas mais complexas. Preconiza que todos os programas possveis podem ser reduzidos a apenas trs estruturas: sequncia, deciso e iterao. Foi o paradigma mais utilizado durante muito tempo, sendo bastante encontrado atualmente, at mesmo porque ele est presente em outros paradigmas. So exemplos de linguagens de programao que podem atuar de forma estruturada: C, Pascal, Visual Basic;

Funcional: Neste paradigma os problemas so tratados como funes matemticas. Enfatiza a aplicao de funes, em contraste da programao imperativa, que enfatiza mudanas no estado do programa. Esse tipo de paradigma tem sido mais utilizado academicamente;

Orientada a Objetos: A orientao a objeto aproxima o mundo real do mundo do software, quando o programador implementa no procedimentos, mas objetos que solucionem os problemas. Tem sido bastante adotado pela comunidade de programadores pois esse paradigma facilita o desenvolvimento em equipe, a reutilizao e manuteno de cdigo. Smaltalk, Java e C# so exemplos de linguagens que suportam esse paradigma.

Lgico: um paradigma que faz uso da lgica matemtica, costumase utilizar na inteligncia artificial e em pequenos programas infantis. Trata-se de uma programao baseada no clculo de predicados (uma teoria matemtica que permite conseguir que um computador baseando-se em fatos e regras lgicas, dar solues inteligentes). Prolog um exemplo de linguagem de programao que suporta esse paradigma.

13

Existem outras maneiras de descrever os paradigmas de programao, porm esses so os mais utilizados e a maioria dos outros so variaes dos citados acima. Outro fato importante a ser considerado que em um programa pode ser encontrado prticas pertinentes a mais de um paradigma, como por exemplo, em um programa desenvolvido de forma orientada a objeto pode ser encontrada rotinas pertinentes ao paradigma estruturado.

3.5 Linguagens de Programao A passagem da soluo do problema em instrues que possam ser realizadas pelo computador o ato de programar, essa soluo descrita atravs das linguagens de programao, que so um conjunto de regras sintticas e semnticas usadas para definir um programa de computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados sero armazenados ou transmitidos e quais aes devem ser tomadas sob vrias circunstncias. As linguagens de programao categorizam-se por nveis, levando em considerao o quo prximas elas interagem com a arquitetura do computador. Podemos classific-las assim:

Baixo nvel: Conhecida como binria, composta de zeros e uns, ininteligvel pelo ser humano e executada diretamente pela mquina;

Mdio nvel: Composta de smbolos muito simples, num meio caminho entre a compreenso humana e a execuo direta pela mquina;

Alto nvel: Composta de smbolos mais complexos, inteligvel pelo ser humano e no-executvel diretamente pela mquina.

Para que o computador compreenda o que foi escrito, necessrio algo que transforme as instrues atravs da compilao e/ou interpretao dos comandos, para isso existem os compiladores e interpretadores, que so programas escritos utilizando uma linguagem de programao de nvel inferior, no 14

intuito de traduzir o cdigo fonte de uma linguagem de programao de nvel mais alto para uma linguagem de programao de nvel mais baixo. Existem inmeras linguagens de programao, com as mais diversas caractersticas, um pouco mais a frente sero citadas algumas dessas, porm o importante no focar em qual linguagem escolher, e sim em desenvolver uma boa lgica de programao e aprender corretamente os paradigmas envolvidos, pois com isso fica mais simples utilizar qualquer linguagem.

3.6 Banco de Dados Dados podem ser conceituados como fatos conhecidos que podem ser registrados e possuem significado implcito, o banco de dados por sua vez pode ser definido como uma coleo de dados relacionados que possuem significado inerente e objetivo especifico. A maioria dos softwares atuais utilizam bancos de dados como base, estes bancos atuam como principal repositrio de dados que geralmente so adquiridos atravs da interao dos usurios com o software, podendo ser trabalhados e transformados retornando ao usurio em forma de informaes consistentes. Para ajudar no processo de construo e manuteno, existem os SGBD (Sistema de Gerenciamento de Banco de Dados) que so uma coleo de programas que possibilitam a criao e manuteno de um banco de dados. A comunicao do aplicativo com o banco se d atravs de uma linguagem de pesquisa declarativa chamada SQL (no portugus, Linguagem de Consulta Estruturada), atravs dela possvel inserir, editar, excluir e pesquisar dados no banco de dados. Existem diversos SGBDs no mercado, livres ou proprietrios, dentre muitos o Oracle, SQL Server, PotsgreeSQL MySQL, Firebird, Access so alguns dos mais conhecidos, bastando ao profissional de desenvolvimento definir qual melhor se adapta ao seu projeto ou realidade especfica.

15

4. Mercado de TrabalhoO mercado de trabalho para rea de desenvolvimento de software vem crescendo muito e rapidamente, hoje j se encontra bem aquecido, h vagas na rea de desenvolvimento de aplicativos para solues em desktop,

principalmente para aplicativos web, dispositivos mveis e para integrao de tecnologias (celular com internet, TV com internet). Encontram-se bastantes vagas de trabalho, principalmente, em mdias e grandes empresas nacionais, como tambm multinacionais, possvel tambm atuar como autnomo e prestando servios de Free-Lancer. O perfil desejado para profissionais dessa rea de um profissinal prativo, como pr-disposio para o crescente e contnuo aprendizado, inclusive de novas tecnologias, com facilidade para atuao em equipe e com um domnio, pelo menos intermedirio, de no mnimo a lngua inglesa. Outro fato que cada vez mais pedido que o profissional rena o conhecimento tcnico com a viso de negcios e de projetos da anlise. No Brasil geralmente no possvel encontrar cargos sem que estejam associados a alguma tecnologia, no mercado de desenvolvimento de aplicativos que rodam localmente, em desktops, observa-se vrias tecnologias para se trabalhar, porm hoje algumas se destacam, so elas a plataforma .NET com o C# e o Visual Basic, o Delphi (com a linguagem Pascal), COBOL (rea de Mainfraimes) e o JAVA JSE (muito por conta da portabilidade). Para o desenvolvimento na web, existe a linguagem de marcao, o HTML, que juntamente com o XML, o CSS, e a linguagem de programao cliente Javascript so primordiais para quem deseja aventurar-se nessa rea. Em relao a linguagens de programao encontram-se diversas, destaque para o JAVA JEE, PHP, asp.NET, Python, Perl e Ruby. Nos aplicativos mveis, apesar de existirem algumas plataformas que suportam algumas linguagens, como o .NET e o Symbian, a plataforma Java com o JME lidera esse nicho de mercado.

16

O ndice de popularidade das linguagens de programao medido todos os anos pela consultoria de programao TIOBE. Este ndice atualizado periodicamente atravs de informaes obtidas nos principais sites da internet como Yahoo e Google alm de pesquisas em cursos e no mercado de trabalho. Abaixo segue a lista atualizada em outubro de 2009.

Fonte: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Analisando a tabela acima podem-se destacar o lder do ranking, o Java, que apesar de sofrer seguidas quedas de popularidade, acumula seu posto atual h alguns anos, a queda do C++ e o avano do C, que apesar de serem da

17

mesma famlia, so utilizadas em situaes diferentes (o C continua predominando por ser uma linguagem estruturada de nvel um pouco inferior e bastante utilizada academicamente, enquanto o C++, que apesar de ser bastante utilizado orientado a objetos, compete com poderosas linguagens de alto nvel da moda), pode-se destacar tambm o aumento de popularidade do PHP e do C# que contam com uma grande comunidade de colaboradores na internet. Apesar de entrar no mrito, as tecnologias de programao a serem utilizadas pelo desenvolvedor, mesmo sendo importantes no so primordiais, pois para todas elas existem vagas de trabalho para quem bom no que se prope, sendo muito mais importantes outras habilidades j mencionadas. Existem diversas vagas no campo de desenvolvimento e implementao de softwares, porm os cargos mais valorizados so os de Gerncia de Projetos, Diretor de Software, Analista de Negcio, CEO, especialista em segurana da informao, dentre outros cargos de gerncia e superviso. Contudo so cargos que exigem experincia e na maioria dos casos valorizam-se profissionais que possuem certificaes em tecnologias e/ou padres de projeto.

18

5. TendnciasFalar sobre tendncias quase sempre gera muita discusso, quando o tema referido tecnologia da informao, onde as mudanas ocorrem muito rapidamente, fica ainda mais difcil. Contudo, observando o que vm ocorrendo nos ltimos anos e mantendo foco em projetos de desenvolvimento de software e numa anlise a curto e mdio prazo, possvel apostar com alguma chance assertiva sobre as tendncias nessa rea. Existem alguns acontecimentos que provavelmente continuaro como tendncia nos prximos anos, sendo alguns deles: Cada vez mais, a mobilidade ganha mais importncia, por isso projetos embarcados e mveis tendem a continuar ocupar grande espao; Projetos que envolvem Bussines Intelligence com minerao de dados e inteligncia artificial devem ganhar mais popularidade em solues ERP nas grandes empresas; Como muito j se pode ouvir atualmente, a Cloud Computing (Computao em nuvem) juntamente com SaaS (software como servio), ganharo grande espao o que nos leva a projetos web cada vez mais completos, havendo ai uma ateno especial no quesito segurana da informao; Outro foco que naturalmente estar presente num futuro prximo, so projetos que envolvem TI Verde, por conta da crescente

responsabilidade social das empresas, como no pode ser diferente; Podemos imaginar tambm, uma maior aceitao de projetos Open Source, como j vem acontecendo ao longo dos tempos; No Brasil, projetos envolvendo a TV digital, certamente estaro presentes nos prximos anos, pois uma tecnologia recm implantada no pas, no qual o prprio vem se destacando, podendo at ser referncia na Amrica do Sul.

19

6. Concluso

Atualmente, inclusive no Brasil, possvel perceber que muitas pessoas j entenderam o poder transformador da tecnologia da informao, incluindo o papel do software nesse processo. Esse trabalho teve como inteno, apresentar ao leitor sobre a rea de desenvolvimento de software, sua importncia e como funciona superficialmente. De posse de tal conhecimento e sabendo que o mercado de trabalho vem demonstrando carncia de mo de obra especializada na rea, enxerga-se uma boa oportunidade de investimento de esforos, tanto por investidores como por profissionais envolvidos.

20

7. Referncias Bibliogrficas

GOMES, Elizabeth Brito Llamosas. Anlise de Sistemas - Aula 3. 13 Slides

GOMES, Elizabeth Brito Llamosas. Anlise de Sistemas - Aula 4. 6 Slides GOMES, Elizabeth Brito Llamosas. Anlise de Sistemas - Aula 5. 21 Slides

OLIVEIRA, Rafael Calmon. Sistemas de Informaes Gerencias - Aula 4. 33 Slides

MODESTO, Llia Marta Brando Soussa. Banco de Dados I - Aula 2. 20 Slides

JOS, Alfredo. Conceitos de Linguagens de Programao Introduo. 38 Slides

. Acesso em 17 out. 2009, 15:21:55

. Acesso 17 out. 2009, 15:42:30 . Acesso 17 out. 2009, 16:20:20

UOL. Tendncias das empresas de TI at 2012. Disponvel em . Acesso 17 out. 2009, 16:15:10

Wikipdia. Desenvolvimento de Software. Disponvel em . Acesso 18 out. 2009, 11:10:30

Wikipdia. Processo de Desenvolvimento de Software. Disponvel em . Acesso 18 out. 2009, 11:31:10

21

Wikipdia. Paradigmas de Programao. Disponvel em . Acesso 18 out. 2009, 11:40:44

Wikipdia. Engenharia de Software. Disponvel em . Acesso 18 out. 2009, 14:13:50

Wikipdia. Linguagens de Programao. Disponvel em . Acesso 18 out. 2009, 15:01:08

TIOBE. ndice de popularidade das Linguagens de Programao. . Acesso 18 out. 2009, 15:29:49

22