44
Técnicas de Implementação Wagner Zaparoli [email protected]

Técnicas_Implementação

Embed Size (px)

Citation preview

Page 1: Técnicas_Implementação

Técnicas de Implementação

Wagner [email protected]

Page 2: Técnicas_Implementação

AgendaLinguagens de Programação 2

Page 3: Técnicas_Implementação

Fundamentos

Linguagens de Programação 3

Page 4: Técnicas_Implementação

Linguagens de Programação 4

Duas entidades

Page 5: Técnicas_Implementação

Linguagens de Programação 5

O obstáculo

Page 6: Técnicas_Implementação

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

Page 7: Técnicas_Implementação

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

Page 8: Técnicas_Implementação

Linguagens de Programação 8

A comunicação

Linguagem humana

Algoritmo Código Fonte

Código Intermediário

Linguagem Máquina

Page 9: Técnicas_Implementação

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

Page 10: Técnicas_Implementação

Linguagens de Programação 10

Classificação Linguagens

ACM – Association for Computing Machinery

Paradigma

Estrutura de Tipos

Grau de Abstração

Geração

Page 11: Técnicas_Implementaçã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

Page 12: Técnicas_Implementação

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

Page 13: Técnicas_Implementação

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.

Page 14: Técnicas_Implementaçã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

Page 15: Técnicas_Implementação

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.

Page 16: Técnicas_Implementação

Aplicação

Linguagens de Programação 16

Page 17: Técnicas_Implementação

Sistema

Linguagens de Programação 17

Aplicativo

Software

Utilitário

Page 18: Técnicas_Implementação

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

Page 19: Técnicas_Implementação

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

Page 20: Técnicas_Implementação

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

Page 21: Técnicas_Implementação

Engenharia

Linguagens de Programação 21

Page 22: Técnicas_Implementação

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

Page 23: Técnicas_Implementação

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.

Page 24: Técnicas_Implementação

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”

Page 25: Técnicas_Implementação

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;

Page 26: Técnicas_Implementação

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

Page 27: Técnicas_Implementação

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

Page 28: Técnicas_Implementação

Implementação

Linguagens de Programação 28

Page 29: Técnicas_Implementação

Lógica – O algoritmo

Narrativa

Fluxograma

Pseudocódigo

Linguagens de Programação 29

Page 30: Técnicas_Implementação

Lógica – As expressões

Expressões Aritméticas

Expressões Lógicas

Expressões Relacionais

Linguagens de Programação 30

Page 31: Técnicas_Implementação

Lógica – As estruturas

Sequência

Repetição

Condicional

Linguagens de Programação 31

Page 32: Técnicas_Implementação

Dados – Tipologia

Numérico

Lógico

Literal

Linguagens de Programação 32

Page 33: Técnicas_Implementação

Dados – Armazenamento

Estruturas Voláteis (memória)

Estruturas Persistentes (arquivos)

Linguagens de Programação 33

Page 34: Técnicas_Implementação

Documentação

Linguagens de Programação 34

Page 35: Técnicas_Implementação

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.

Page 36: Técnicas_Implementaçã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.

Page 37: Técnicas_Implementação

Tecnologia

Linguagens de Programação 37

Page 38: Técnicas_Implementação

Apresentação Aplicação Dados

Linguagens de Programação 38

Tecnologia – Camadas

Page 39: Técnicas_Implementação

Apresentação Aplicação Dados

Linguagens de Programação 39

Tecnologia – Camadas

Page 40: Técnicas_Implementação

Tecnologia – Camadas

Apresentação Aplicação Dados

Linguagens de Programação 40

Page 42: Técnicas_Implementação

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

Page 43: Técnicas_Implementação

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

Page 44: Técnicas_Implementação

Técnicas de Implementação

Wagner [email protected]