Upload
wagner-zaparoli
View
121
Download
2
Embed Size (px)
Citation preview
Técnicas de Implementação
Wagner [email protected]
AgendaLinguagens 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çãoProgramaçã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 - ParadigmaRefere-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árioFornecem 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
PositionNov 2010
PositionNov 2009
Programming Language
RatingsNov 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) Basi
c5.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
PositionNov 2010
PositionNov 2005
PositionNov 1995
PositionNov 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 [email protected]