Técnicas de Implementação
Wagner Zaparoli
wzaparoli@gmail.com
Agenda
Linguagens de Programação 2
Fundamentos
Linguagens de Programação 3
Linguagens de Programação 4
Duas entidades
Linguagens de Programação 5
O obstáculo
Tecnologia da
Informação
Linguagens de Programação 6
A solução
Servidores
Infra-estrutura
Componentes
Metodologias
Linguagens de
Programação
Itens de
QualidadeTécnicas
Banco de
Dados
Design
Patterns
Ferramentas
Case
Linguagens de Programação 7
Conceitos
Linguagem de programação é um conjunto de regras sintáticas e
semânticas usadas para definir um programa de computador
Programa de computador é a formalização de um algoritmo em
qualquer linguagem capaz de ser transformada em instruções
que serão executadas por um computador gerando os
resultados esperados
Algoritmo é a descrição de um conjunto de ações que
obedecidas, resultam uma sucessão finita de passos para atingir
um objetivo
Linguagens de Programação 8
A comunicação
Linguagem
humana
Algoritmo Código
Fonte
Código
Intermediário
Linguagem
Máquina
Linguagens de Programação 9
Técnicas Programação
Programação Linear: proposta para resolver problemas na forma de
maximização ou minimização de funções lineares, sujeitas a um conjunto de
restrições que podem ser expressos sob a forma de inequações ou equações
lineares
Programação Modular: paradigma de programação no qual o desenvolvimento
das rotinas de programação é feito através de módulos, que são interligados
entre si através de uma interface comum
Programação Estruturada: forma de programação de computadores que
preconiza que todos os programas possíveis podem ser reduzidos a apenas três
estruturas: sequência, decisão e iteração
Programação Orientada a Objetos: paradigma de análise, projeto e
programação de sistemas de software baseado na composição e interação entre
diversas unidades de software chamadas de objetos
Linguagens de Programação 10
Classificação Linguagens
ACM – Association for Computing Machinery
Paradigma
Estrutura de Tipos
Grau de Abstração
Geração
Linguagens de Programação 11
Classificação - ACM
Fundada em 1947 como a primeira sociedade cientifica e educacional
dedicada a computação, é composta por grupos denominados capítulos
(chapters), grupos especiais e universidades e faculdades ao redor do mundo
Linguagens de Programação 12
Classificação - Paradigma
Refere-se a visão que o programador possui sobre a estruturação e execução do
programa. A programação OO pode ser abstraída como uma coleção de objetos que
interagem entre si. Já a programação funcional pode ser abstraída como uma sequência
de funções executadas de forma empilhada
Linguagens de Programação 13
Classificação – Estrutura de Tipos
• Fracamente tipada - tipo da variável muda dinamicamente conforme a
situação.
• Fortemente tipada - tipo da variável, uma vez atribuído, se mantém o
mesmo até ser descartada da memória.
• Dinamicamente tipada - tipo da variável é definido em tempo de execução.
• Estaticamente tipada - tipo da variável é definido em tempo de compilação.
Linguagens de Programação 14
Classificação – Grau de Abstração
• Linguagem de programação de baixo nível - cujos simbolos são uma
representação direta do código de máquina que será gerado.
• Linguagem de programação de médio nível - possui símbolos que podem
ser convertidos diretamente para código de máquina (goto, expressões
matemáticas, atribuição de variáveis), mas também símbolos complexos que
são convertidos por um compilador
• Linguagem de programação de alto nível - composta de símbolos mais
complexos, inteligível pelo ser humano e não-executável diretamente pela
máquina, no nível da especificação de algoritmos
Linguagens de Programação 15
Classificação - Geração
• Primeira Geração – conhecida como linguagem de máquina (ou binária), que usa apenas 0 (zero)
e 1 (um) para programar softwares.
• Segunda Geração – linguagem de montagem, que é uma notação legível por humanos para o
código de máquina que uma arquitetura de computador específica usa.
• Terceira Geração – linguagem de programação projetada para ser facilmente entendida pelo ser
humano, incluindo coisas como variáveis com nomes.
• Quarta Geração – linguagens não-procedimentais que descreve o que quer que seja feito
(derivativas do SQL, por exemplo).
• Quinta Geração – linguagem declarativa que limita-se a fornecer uma descrição do problema que
se pretende computar, usando a base de dados, as regras relacionais e o mecanismo de
unificação para produzir a solução.
Aplicação
Linguagens de Programação 16
Sistema
Linguagens de Programação 17
Aplicativo
Software
Utilitário
Software de Sistema
Responsabilidades
• Gerenciar memória.
• Controlar a comunicação entre
componentes de HW.
• Ler e interpretar entradas do
teclado.
• Executar tarefas básicas de um
sistema: copiar, mover, renomear,
etc.,
Define o padrão de comportamento do
hardware, tornando-o utilizável
Tipos
• Sistema Operacional: alocador
de recursos que permite ao
computador trabalhar de forma
eficiente e segura.
• Tradutor: responsáveis pela
transformação de uma linguagem
de programação em linguagem de
máquina.
Linguagens de Programação 18
Software Aplicativo
Tipos
• Uso geral: são programas que
podem ser utilizados em vários
tipos de aplicações, como editores
de texto, gráficos, planilhas,
gerenciadores de banco de dados,
etc.
• Uso específico: se destinam
exclusivamente a um único tipo de
aplicação, como folha de
pagamento, crediário, imposto de
renda, cadastro, contas a pagar e
receber, etc.
Voltados para a solução de problemas
relacionados ao usuário final
Linguagens de Programação 19
Software Utilitário
Fornecem o complemento necessário para
uma ferramenta básica de gerenciamento do
SO
Exemplos
• Backup.
• Compactador de disco.
• Desfragmentador de disco.
• Anti-vírus.
Linguagens de Programação 20
Engenharia
Linguagens de Programação 21
Linguagens de Programação 22
Características das Linguagens*
Facilidade Projeto  Código
Eficiência do Compilador
Portabilidade do Código
Disponibilidade de ferramentas
Manutenabilidade
* Pressman, 2002
Linguagens de Programação 23
Características das Linguagens
Linguagem
(implementa)
• Construções estruturadas;
• Estruturas de dados sofisticadas;
• E/S especializadas;
• Construção orientadas a objeto.
Linguagens de Programação 24
Características das Linguagens
Quando um requisito não funcional de
desempenho for crítico é importante pensar na
utilização de compiladores “otimizantes”
Linguagens de Programação 25
Características das Linguagens
Portabilidade
• Código-fonte pode ser transportado
de processador e compilador;
• Código-fonte permanece imutável
quando o ambiente muda;
• Código-fonte pode ser integrado a
diferentes pacotes de software;
Linguagens de Programação 26
Características das Linguagens
• Ferramentas de depuração;
• Ferramentas para controle do código fonte;
• Ferramentas de engenharia reversa;
• Ferramentas de testes.
Buscar um ambiente de desenvolvimento de
software avançado, que inclua ferramentas
convencionais e automatizadas
Linguagens de Programação 27
Características das Linguagens
O quão fácil o código-fonte é entendido e
modificável
Vislumbrar características de
autodocumentação da linguagem, bem como
um processo que a permita
Implementação
Linguagens de Programação 28
Lógica – O algoritmo
Narrativa
Fluxograma
Pseudocódigo
Linguagens de Programação 29
Lógica – As expressões
Expressões Aritméticas
Expressões Lógicas
Expressões Relacionais
Linguagens de Programação 30
Lógica – As estruturas
Sequência
Repetição
Condicional
Linguagens de Programação 31
Dados – Tipologia
Numérico
Lógico
Literal
Linguagens de Programação 32
Dados – Armazenamento
Estruturas Voláteis (memória)
Estruturas Persistentes (arquivos)
Linguagens de Programação 33
Documentação
Linguagens de Programação 34
Linguagens de Programação 35
Identificadores significativos para nomes (rotinas, variáveis,
constantes, etc.).
Interna - Código
Comentários:
• No início do bloco – título e objetivos;
• No corpo do bloco – declarações de variáveis, comandos
complexos, interfaces, integrações;
• No final do bloco – autor, revisor, histórico de manutenção.
Uso de endentação.
Linguagens de Programação 36
Externa – Especificação Técnica
Rotina/funções/stored procedure/Serviços:
• Identificação;
• Parâmetros de entrada/saída;
• Pré-condições;
• Exceções;
• Lógica.
Tela/Relatório :
• Identificação do objeto;
• Finalidade;
• Modo de Operação;
• Nome do Campo;
• Descrição do Campo;
• Tipo do Campo;
• Tamanho do Campo;
• Quebras;
• Totalizadores.
• Objetivos;
• Escopo;
• Restrições;
• Armazenamento;
• Versionamento.
Tecnologia
Linguagens de Programação 37
Apresentação Aplicação Dados
Linguagens de Programação 38
Tecnologia – Camadas
Apresentação Aplicação Dados
Linguagens de Programação 39
Tecnologia – Camadas
Tecnologia – Camadas
Apresentação Aplicação Dados
Linguagens de Programação 40
Tecnologia – Popularidade*
Linguagens de Programação 41
Position
Nov 2010
Position
Nov 2009
Programming
Language
Ratings
Nov 2010
Delta
Nov 2009
1 1 Java 18.509% +0.14%
2 2 C 16.717% -0.60%
3 4 C++ 9.497% -0.50%
4 3 PHP 7.813% -2.36%
5 6 C# 5.706% +0.36%
6 7 Python 5.679% +1.01%
7 5 (Visual) Basic 5.470% -2.70%
8 13 Objective-C 3.191% +2.30%
9 8 Perl 2.472% -1.02%
10 10 Ruby 1.907% -0.50%
11 9 JavaScript 1.664% -1.25%
12 11 Delphi 1.638% -0.49%
13 17 Lisp 1.087% +0.47%
14 23 Transact-SQL 0.793% +0.38%
15 15 Pascal 0.784% +0.13%
* TIOBE Nov/2010
Tecnologia – Popularidade*
Linguagens de Programação 42
* TIOBE Nov/2010
Programming
Language
Position
Nov 2010
Position
Nov 2005
Position
Nov 1995
Position
Nov 1985
Java 1 1 - -
C 2 2 1 1
C++ 3 3 2 8
PHP 4 4 - -
C# 5 7 - -
Python 6 8 10 -
(Visual) Basic 7 5 3 4
Objective-C 8 42 - -
Perl 9 6 5 -
Ruby 10 24 - -
Lisp 13 14 12 2
Ada 16 17 6 3
Sugestões Bibliográficas
• Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of
Reusable Object-Oriented Software. 1 ed. Estados Unidos da América: Addison-Wesley, 1995.
• Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and
Design and Iterative Development. 1 ed. Estados Unidos da América: Prentice Hall, 2004.
• Fowler, Martin. Refactoring: Improving the Design of Existing Code. Massachusetts: Addison
Wesley, 2006.
• Meyer, B. Object-Oriented Software Construction. New Jersey: Prentice Hall, 1988.
• Pressman, R. S. Engenharia de Software. 5. ed. São Paulo: Makron Books, 2002.
• Kosanski, N., Woods, E.. Software Systems Architecture: working with stakeholders using view
points and perspectives. New Jersey: Addison-Wesley, 2005.
• Manzano, José Augusto N. G., Algoritmos – Lógica para Desenvolvimento de Programas – São
Paulo, Ed. Érica, 1999.
• Xavier, Gley Fabiano Cardoso. Lógica de Programação - Editora SENAC-SP, 2001.
• Saliba, W. Luiz Caran, Técnicas de Programação – Uma abordagem Estruturada – São Paulo,
Ed. Makron Books, 1992.
Linguagens de Programação 43
Técnicas de Implementação
Wagner Zaparoli
wzaparoli@gmail.com

Técnicas_Implementação

  • 1.
    Técnicas de Implementação WagnerZaparoli wzaparoli@gmail.com
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
    Tecnologia da Informação Linguagens deProgramação 6 A solução Servidores Infra-estrutura Componentes Metodologias Linguagens de Programação Itens de QualidadeTécnicas Banco de Dados Design Patterns Ferramentas Case
  • 7.
    Linguagens de Programação7 Conceitos Linguagem de programação é um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador Programa de computador é a formalização de um algoritmo em qualquer linguagem capaz de ser transformada em instruções que serão executadas por um computador gerando os resultados esperados Algoritmo é a descrição de um conjunto de ações que obedecidas, resultam uma sucessão finita de passos para atingir um objetivo
  • 8.
    Linguagens de Programação8 A comunicação Linguagem humana Algoritmo Código Fonte Código Intermediário Linguagem Máquina
  • 9.
    Linguagens de Programação9 Técnicas Programação Programação Linear: proposta para resolver problemas na forma de maximização ou minimização de funções lineares, sujeitas a um conjunto de restrições que podem ser expressos sob a forma de inequações ou equações lineares Programação Modular: paradigma de programação no qual o desenvolvimento das rotinas de programação é feito através de módulos, que são interligados entre si através de uma interface comum Programação Estruturada: forma de programação de computadores que preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas: sequência, decisão e iteração Programação Orientada a Objetos: paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos
  • 10.
    Linguagens de Programação10 Classificação Linguagens ACM – Association for Computing Machinery Paradigma Estrutura de Tipos Grau de Abstração Geração
  • 11.
    Linguagens de Programação11 Classificação - ACM Fundada em 1947 como a primeira sociedade cientifica e educacional dedicada a computação, é composta por grupos denominados capítulos (chapters), grupos especiais e universidades e faculdades ao redor do mundo
  • 12.
    Linguagens de Programação12 Classificação - Paradigma Refere-se a visão que o programador possui sobre a estruturação e execução do programa. A programação OO pode ser abstraída como uma coleção de objetos que interagem entre si. Já a programação funcional pode ser abstraída como uma sequência de funções executadas de forma empilhada
  • 13.
    Linguagens de Programação13 Classificação – Estrutura de Tipos • Fracamente tipada - tipo da variável muda dinamicamente conforme a situação. • Fortemente tipada - tipo da variável, uma vez atribuído, se mantém o mesmo até ser descartada da memória. • Dinamicamente tipada - tipo da variável é definido em tempo de execução. • Estaticamente tipada - tipo da variável é definido em tempo de compilação.
  • 14.
    Linguagens de Programação14 Classificação – Grau de Abstração • Linguagem de programação de baixo nível - cujos simbolos são uma representação direta do código de máquina que será gerado. • Linguagem de programação de médio nível - possui símbolos que podem ser convertidos diretamente para código de máquina (goto, expressões matemáticas, atribuição de variáveis), mas também símbolos complexos que são convertidos por um compilador • Linguagem de programação de alto nível - composta de símbolos mais complexos, inteligível pelo ser humano e não-executável diretamente pela máquina, no nível da especificação de algoritmos
  • 15.
    Linguagens de Programação15 Classificação - Geração • Primeira Geração – conhecida como linguagem de máquina (ou binária), que usa apenas 0 (zero) e 1 (um) para programar softwares. • Segunda Geração – linguagem de montagem, que é uma notação legível por humanos para o código de máquina que uma arquitetura de computador específica usa. • Terceira Geração – linguagem de programação projetada para ser facilmente entendida pelo ser humano, incluindo coisas como variáveis com nomes. • Quarta Geração – linguagens não-procedimentais que descreve o que quer que seja feito (derivativas do SQL, por exemplo). • Quinta Geração – linguagem declarativa que limita-se a fornecer uma descrição do problema que se pretende computar, usando a base de dados, as regras relacionais e o mecanismo de unificação para produzir a solução.
  • 16.
  • 17.
    Sistema Linguagens de Programação17 Aplicativo Software Utilitário
  • 18.
    Software de Sistema Responsabilidades •Gerenciar memória. • Controlar a comunicação entre componentes de HW. • Ler e interpretar entradas do teclado. • Executar tarefas básicas de um sistema: copiar, mover, renomear, etc., Define o padrão de comportamento do hardware, tornando-o utilizável Tipos • Sistema Operacional: alocador de recursos que permite ao computador trabalhar de forma eficiente e segura. • Tradutor: responsáveis pela transformação de uma linguagem de programação em linguagem de máquina. Linguagens de Programação 18
  • 19.
    Software Aplicativo Tipos • Usogeral: são programas que podem ser utilizados em vários tipos de aplicações, como editores de texto, gráficos, planilhas, gerenciadores de banco de dados, etc. • Uso específico: se destinam exclusivamente a um único tipo de aplicação, como folha de pagamento, crediário, imposto de renda, cadastro, contas a pagar e receber, etc. Voltados para a solução de problemas relacionados ao usuário final Linguagens de Programação 19
  • 20.
    Software Utilitário Fornecem ocomplemento necessário para uma ferramenta básica de gerenciamento do SO Exemplos • Backup. • Compactador de disco. • Desfragmentador de disco. • Anti-vírus. Linguagens de Programação 20
  • 21.
  • 22.
    Linguagens de Programação22 Características das Linguagens* Facilidade Projeto  Código Eficiência do Compilador Portabilidade do Código Disponibilidade de ferramentas Manutenabilidade * Pressman, 2002
  • 23.
    Linguagens de Programação23 Características das Linguagens Linguagem (implementa) • Construções estruturadas; • Estruturas de dados sofisticadas; • E/S especializadas; • Construção orientadas a objeto.
  • 24.
    Linguagens de Programação24 Características das Linguagens Quando um requisito não funcional de desempenho for crítico é importante pensar na utilização de compiladores “otimizantes”
  • 25.
    Linguagens de Programação25 Características das Linguagens Portabilidade • Código-fonte pode ser transportado de processador e compilador; • Código-fonte permanece imutável quando o ambiente muda; • Código-fonte pode ser integrado a diferentes pacotes de software;
  • 26.
    Linguagens de Programação26 Características das Linguagens • Ferramentas de depuração; • Ferramentas para controle do código fonte; • Ferramentas de engenharia reversa; • Ferramentas de testes. Buscar um ambiente de desenvolvimento de software avançado, que inclua ferramentas convencionais e automatizadas
  • 27.
    Linguagens de Programação27 Características das Linguagens O quão fácil o código-fonte é entendido e modificável Vislumbrar características de autodocumentação da linguagem, bem como um processo que a permita
  • 28.
  • 29.
    Lógica – Oalgoritmo Narrativa Fluxograma Pseudocódigo Linguagens de Programação 29
  • 30.
    Lógica – Asexpressões Expressões Aritméticas Expressões Lógicas Expressões Relacionais Linguagens de Programação 30
  • 31.
    Lógica – Asestruturas Sequência Repetição Condicional Linguagens de Programação 31
  • 32.
  • 33.
    Dados – Armazenamento EstruturasVoláteis (memória) Estruturas Persistentes (arquivos) Linguagens de Programação 33
  • 34.
  • 35.
    Linguagens de Programação35 Identificadores significativos para nomes (rotinas, variáveis, constantes, etc.). Interna - Código Comentários: • No início do bloco – título e objetivos; • No corpo do bloco – declarações de variáveis, comandos complexos, interfaces, integrações; • No final do bloco – autor, revisor, histórico de manutenção. Uso de endentação.
  • 36.
    Linguagens de Programação36 Externa – Especificação Técnica Rotina/funções/stored procedure/Serviços: • Identificação; • Parâmetros de entrada/saída; • Pré-condições; • Exceções; • Lógica. Tela/Relatório : • Identificação do objeto; • Finalidade; • Modo de Operação; • Nome do Campo; • Descrição do Campo; • Tipo do Campo; • Tamanho do Campo; • Quebras; • Totalizadores. • Objetivos; • Escopo; • Restrições; • Armazenamento; • Versionamento.
  • 37.
  • 38.
    Apresentação Aplicação Dados Linguagensde Programação 38 Tecnologia – Camadas
  • 39.
    Apresentação Aplicação Dados Linguagensde Programação 39 Tecnologia – Camadas
  • 40.
    Tecnologia – Camadas ApresentaçãoAplicação Dados Linguagens de Programação 40
  • 41.
    Tecnologia – Popularidade* Linguagensde Programação 41 Position Nov 2010 Position Nov 2009 Programming Language Ratings Nov 2010 Delta Nov 2009 1 1 Java 18.509% +0.14% 2 2 C 16.717% -0.60% 3 4 C++ 9.497% -0.50% 4 3 PHP 7.813% -2.36% 5 6 C# 5.706% +0.36% 6 7 Python 5.679% +1.01% 7 5 (Visual) Basic 5.470% -2.70% 8 13 Objective-C 3.191% +2.30% 9 8 Perl 2.472% -1.02% 10 10 Ruby 1.907% -0.50% 11 9 JavaScript 1.664% -1.25% 12 11 Delphi 1.638% -0.49% 13 17 Lisp 1.087% +0.47% 14 23 Transact-SQL 0.793% +0.38% 15 15 Pascal 0.784% +0.13% * TIOBE Nov/2010
  • 42.
    Tecnologia – Popularidade* Linguagensde Programação 42 * TIOBE Nov/2010 Programming Language Position Nov 2010 Position Nov 2005 Position Nov 1995 Position Nov 1985 Java 1 1 - - C 2 2 1 1 C++ 3 3 2 8 PHP 4 4 - - C# 5 7 - - Python 6 8 10 - (Visual) Basic 7 5 3 4 Objective-C 8 42 - - Perl 9 6 5 - Ruby 10 24 - - Lisp 13 14 12 2 Ada 16 17 6 3
  • 43.
    Sugestões Bibliográficas • ErichGamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. 1 ed. Estados Unidos da América: Addison-Wesley, 1995. • Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development. 1 ed. Estados Unidos da América: Prentice Hall, 2004. • Fowler, Martin. Refactoring: Improving the Design of Existing Code. Massachusetts: Addison Wesley, 2006. • Meyer, B. Object-Oriented Software Construction. New Jersey: Prentice Hall, 1988. • Pressman, R. S. Engenharia de Software. 5. ed. São Paulo: Makron Books, 2002. • Kosanski, N., Woods, E.. Software Systems Architecture: working with stakeholders using view points and perspectives. New Jersey: Addison-Wesley, 2005. • Manzano, José Augusto N. G., Algoritmos – Lógica para Desenvolvimento de Programas – São Paulo, Ed. Érica, 1999. • Xavier, Gley Fabiano Cardoso. Lógica de Programação - Editora SENAC-SP, 2001. • Saliba, W. Luiz Caran, Técnicas de Programação – Uma abordagem Estruturada – São Paulo, Ed. Makron Books, 1992. Linguagens de Programação 43
  • 44.
    Técnicas de Implementação WagnerZaparoli wzaparoli@gmail.com