aula 07 ferramentas de desenvolvimento - puc-rioinf1628/docs/2016_2/inf1301_aula07_ferramen… ·...

31
Aula 07 Ferramentas de desenvolvimento Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio Setembro 2016

Upload: others

Post on 28-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Aula 07Ferramentas de desenvolvimento

Alessandro Garcia

Alexander Chávez

LES/DI/PUC-Rio

Setembro 2016

Page 2: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 2 / 40Alexander Chávez López - LES/DI/PUC-Rio

Especificação

• Objetivo dessa aula

– Apresentar algumas das ferramentas utilizadas ao desenvolver

programas modulares.

Referências complementares:

– Ierusalimschy, R.; Programming in Lua; Rio de Janeiro:

Lua.org; 2004.

– Staa, A.v.; Utilitário GMAKE: Gerador de diretivas MAKE; LES -

Laboratório de Engenharia de Software, Departamento de

Informática, PUC-Rio; 2006

Page 3: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Especificação

• Ambientes de engenharia de software.

• Atividades do desenvolvimento modular.

• A ferramenta MAKE.

• A ferramenta GMAKE.

• Ferramentas “feitas em casa”.

Setembro 2016 3 / 40Alexander Chávez López - LES/DI/PUC-Rio

Page 4: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 4 / 40Alexander Chávez López - LES/DI/PUC-Rio

Ambientes de engenharia de software

• Processos de desenvolvimento

– documentos descrevendo, passo a passo, o que e quando deve

ser realizado

• Procedimentos (métodos)

– documentos descrevendo como devem ser realizadas as

atividades do processo

• Padrões

– conjuntos de regras, recomendações e diretrizes a serem

obedecidas ao desenvolver determinada classe de artefatos

• Técnicas

– formas de apresentar ou habilidades de fazer algo

Page 5: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 5 / 40Alexander Chávez López - LES/DI/PUC-Rio

Ambientes de engenharia de software

• Plataformas de desenvolvimento

– hardware

– rede

– sistema operacional

– software de suporte

– . . .

• Repositórios

– arquivos organizados contendo todas as informações relativas

aos sistemas objetivo

• Ferramentas

– software de apoio ao desenvolvimento

– CASE – Computer aided software engineering

Page 6: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 6 / 40Alexander Chávez López - LES/DI/PUC-Rio

Ambientes de engenharia de software

• Papéis

– descrições das funções a serem desempenhadas por pessoas.

• Pessoas com

– proficiência

- experiência professional

- formação

- know how

- habilitação

Page 7: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 7 / 40Alexander Chávez López - LES/DI/PUC-Rio

Atividades do desenvolvimento modular

Page 8: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 8 / 40Alexander Chávez López - LES/DI/PUC-Rio

Ferramentas básicas

• Editor de texto

– editor convencional

– editor sensível à sintaxe

• Editor de linguagens de representação gráficas

– editor de diagramas

• Processador de linguagem

– compilador de programas, pode gerar:

- linguagem nativa

- byte code

• Interpretador

– puro, ex. batch;

– byte code

Page 9: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Processo de compilação simples

Setembro 2016 9 / 30Alexander Chávez López - LES/DI/PUC-Rio

Page 10: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 10 / 40Alexander Chávez López - LES/DI/PUC-Rio

Ferramentas básicas

• Bibliotecas e frameworks

– Framework de apoio aos testes

• Compositor de bibliotecas (LIB)

– compõe uma biblioteca de módulos objeto

• Ligador (LINK)

• MAKE

– controla a reconstrução de artefatos compostos

• Depurador (debugger)

– executa um programas compilado de modo que se possa

controlar, visualizar e modificar o progresso da execução

• Backup

Page 11: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 11 / 40Alexander Chávez López - LES/DI/PUC-Rio

Make

• Problema

– tenho 1000 módulos, altero o módulo m512 o que fazer para

reconstruir o programa?

• Recompilar tudo é

– muito caro

– desnecessário: grande parte dos componentes não varia de

uma compilação para outra

Page 12: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 12 / 40Alexander Chávez López - LES/DI/PUC-Rio

Make

• Problema

– tenho 1000 módulos, altero o módulo m512.c o que fazer para

reconstruir o programa?

- recompilar m512

- ligar tudo

– tenho 1000 módulos, altero o módulo m512.h o que fazer para

reconstruir o programa?

- procurar todos os clientes de m512 e recompilá-los

- recompilar m512

- ligar tudo

– Risco: não recompilar todos que deveriam ser recompilados

– Risco: recompilar vários que não deveriam ser recompilados

– Custo: trabalho para descobrir quem deve ser recompilado

• Que tal desenvolver uma ferramenta?

Page 13: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 13 / 40Alexander Chávez López - LES/DI/PUC-Rio

Make

Page 14: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 14 / 40Alexander Chávez López - LES/DI/PUC-Rio

Make

Page 15: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Exemplo de um arquivo make 1 / 3

Setembro 2016 15 / 30Alexander Chávez López - LES/DI/PUC-Rio

Page 16: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Exemplo de um arquivo make 2 / 3

Setembro 2016 16 / 30Alexander Chávez López - LES/DI/PUC-Rio

Page 17: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Exemplo de um arquivo make 3 / 3

Setembro 2016 17 / 30Alexander Chávez López - LES/DI/PUC-Rio

Page 18: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Processo de compilação simples

Setembro 2016 18 / 30Alexander Chávez López - LES/DI/PUC-Rio

Page 19: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 19 / 40Alexander Chávez López - LES/DI/PUC-Rio

Exemplo de um arquivo make: .build

• Diretivas .build são utilizadas pelo linker

• Exemplo

Page 20: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Março 2016 20 / 40Alexander Chávez López - LES/DI/PUC-Rio

GMAKE - Gerador de script de make

• Redigir um script de make tende a ser enfadonho e sujeito a

erros

• Solução:

– desenvolver uma ferramenta que gere o script make a partir de:

- um script de composição (específico para um construto)

– um script de plataforma de desenvolvimento (genérico para

todos os construtos de um projeto)

Page 21: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 21 / 40Alexander Chávez López - LES/DI/PUC-Rio

GMAKE exemplo de composição

Page 22: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

GMAKE exemplo de composição

• [Diretorios]: Seção obrigatória e necessariamente a

primeira seção do arquivo <ArqConst>. Define o nome do

construto e a estrutura padrão de diretórios.

• [Modulos]: Seção obrigatória. Contém a lista de arquivos

origem (em geral arquivos contendo módulos de

implementação), a partir dos quais deve ser gerado o

construto.

• [BuildInicio]: Seção opcional. As diretivas desta seção

contém as linhas do script que devem anteceder a lista de

módulos componentes do artefato a ser composto pelo LINK

ou LIB. Estas diretivas serão gravadas no arquivo

<construto>.build. Estas diretivas informam tipicamente os

parâmetros de composição a serem utilizados pelo LINK ou

LIB.

Setembro 2016 22 / 40Alexander Chávez López - LES/DI/PUC-Rio

Page 23: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 23 / 40Alexander Chávez López - LES/DI/PUC-Rio

Exemplo de script make gerado

Page 24: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 24 / 40Alexander Chávez López - LES/DI/PUC-Rio

Exemplo de script make gerado

Page 25: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 25 / 40Alexander Chávez López - LES/DI/PUC-Rio

Exemplo de script make gerado

Page 26: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 26 / 40Alexander Chávez López - LES/DI/PUC-Rio

Exemplo de script make gerado

Page 27: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 27 / 40Alexander Chávez López - LES/DI/PUC-Rio

Exemplo de script make gerado

Page 28: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Ferramentas “feitas em casa”: .bat

• O que é um arquivo Batch (.bat)?

Setembro 2016 28 / 40Alexander Chávez López - LES/DI/PUC-Rio

Page 29: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Setembro 2016 29 / 40Alexander Chávez López - LES/DI/PUC-Rio

Ferramentas “feitas em casa”: .bat

• Exemplo de batch file

Page 30: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Novo projeto

• Visual Studio 2008 ou 2010 – Editor

– Criar Projeto > Aplicação de Console – Win32

– Importar Arquivos

• ArcabouçoTeste.lib

• CESPDIN.H

• CONTA.H

• GENERICO.H

• LERPARM.H

• TST_ESPC.H

• MODULO - .H, .C e TST.C

– Build da Aplicação

– \debug\.exe

• GMake – Compilação via prompt

Setembro 2016 30 / 40Alexander Chávez López - LES/DI/PUC-Rio

Page 31: Aula 07 Ferramentas de desenvolvimento - PUC-Rioinf1628/docs/2016_2/INF1301_Aula07_Ferramen… · Setembro 2016 Alexander Chávez López - LES/DI/PUC-Rio 16 / 30 Exemplo de um arquivo

Aula 07Ferramentas de desenvolvimento

Alessandro Garcia

Alexander Chávez

LES/DI/PUC-Rio

Setembro 2016