• Nenhum resultado encontrado

Programação Modular Alessandro Garcia DI/PUC-Rio Março 2019

N/A
N/A
Protected

Academic year: 2022

Share "Programação Modular Alessandro Garcia DI/PUC-Rio Março 2019"

Copied!
24
0
0

Texto

(1)

Programação Modular

Alessandro Garcia

DI/PUC-Rio Março 2019

(2)

Programação Modular

• Quem sou eu? Quem são vocês?

• Qual é o problema abordado no curso?

• Qual é o objetivo do curso?

• Organização: aulas, avaliação - provas e trabalhos, etc...

(3)

Quem sou eu?

• Prof. Alessandro Garcia, [email protected]

Sala RDC 506

• Iniciei atividades em Computação em fevereiro de 1992

Programador em Cobol e Pascal: 1992 – 1993 Graduação (Pascal e C): 1994 – 1998

• Mestrado em C. Computação, UNICAMP, 1998 - 2000

Tema: “Tratamento de Exceções para Sistemas Concorrentes”

Uso de reflexão computacional: Guaraná – extensão da MV de Java

Prêmio da SBC em 2000

• IBM, San Jose, EUA: arquitetura e programação do TSpaces

• PhD em C. Informática pela PUC-Rio, em cooperação com:

University of Waterloo, Canadá, 2000-2004

Tese: “Programação Orientada a Aspectos para Sistemas Multiagentes”

• Professor, Ciência da Computação

(4)

Áreas de Atuação e Projetos Desenvolvidos

• Áreas de pesquisa

Manutenção de software, ex.: medição de software e detecção automática de anomalias de modularidade

Apoio automatizado para escrita de código robusto e seguro

• Alguns projetos realizados

Sistema de controle de alunos e disciplinas (UEM)

Mecanismo reflexivo modular de tratamento de exceções (Unicamp) TSpaces: arquitetura distribuída e tolerante à falhas de espaços de

tuplas (IBM)

e várias aplicações embarcadas

Linha de produto para gerência de dados em dispositivos móveis (projeto com SAP/Siemens)

Plataforma de desenvolvimento orientada a modelos (projeto com Marinha do Brasil)

. . .

(5)

Por que mencionar tudo isso?

• Não se percebe a necessidade de programação modular sem experiência com projetos de média e larga escala

– À priori, princípios desta disciplina podem não parecer importantes – Portanto: a disciplina consiste de trabalhos práticos

• Sem raciocínio e projeto cuidadoso não se desenvolve software de porte razoável

– decomposição em partes bem definidas (módulos)

– princípios: interfaces explícitas, separação de interesses, etc...

• Um dos objetivos do curso é capacitar os alunos a usarem técnicas de modularidade adequadas ao desenvolvimento de software reutilizável, manutenível e confiável

– modelos, teste, documentação, assertivas, tratamento de exceções – inspeção, estratégias de cobertura de teste, instrumentação, etc...

(6)

Professores envolvidos…

• Prof. Alessandro Garcia responsável desta turma ([email protected])

• Prof. Luiz Carvalho

([email protected])

Monitoria:

Luiz Carvalho ([email protected] )

Dúvidas de aulas e trabalhos: por email

• Outra turma: Flavio Bevilacqua

(7)

Quem são vocês?

• Nome?

• Período?

• Curso?

• Envolvimento prévio com projetos de software?

– Trabalha? Estagiário? Iniciação Científica?

– Experiência com Programação OO (Java, C#, etc...)?

(8)

O que é programação modular?

• Programação Modular (PM) é a base para se desenvolver programas de porte médio a muito grande a partir da garantia de qualidade de cada um dos módulos

• Estratégia básica: particionamento sistemático do programa em módulos (ex. agregado de funções) de tal forma a:

– facilitar a manutenção de software

software, cada vez mais, é desenvolvido de forma incremental

– possibilitar o reuso de módulos já desenvolvidos – possibilitar o trabalho em equipe

– facilitar a gerência do desenvolvimento

(9)

Problema abordado no curso

• Como desenvolver um programa complexo tendo certeza que de fato funcionará e será de qualidade?

– definir o que é esperado (especificar)

– organizar a solução em temos de módulos e interfaces bem definidos (arquitetura)

– decompor e programar cada módulo em funções e dados (projeto detalhado e implementação)

– assegurar continuamente a corretude

saber ler e criticar o código sendo lido  inspeções

testar de forma sistemática automatizar os testes

(10)

O que é programação modular?

• Quais são os outros elementos importantes da programação modular?

– necessidade de atitude visando produzir módulos isentos de defeitos

exemplo: não somente casos de teste para demonstrar que funções funcionam nos casos triviais

– cada módulo deve ser desenvolvido com o devido cuidado

disciplina: seguir convenções apropriadas de programação além dos princípios de modularidade

... também é importante que padrões de nomes e estruturação sejam seguidos

• Caso contrário:

– software dificilmente atingirá nível de qualidade satisfatório – custo do software será mais alto

(11)

Pré-requisitos esperados

• Conhecimento da Linguagem C

• Estruturas de dados

– básicas: ex. vetores e listas

– árvores e grafos: não são pré-requisitos obrigatórios, mas os trabalhos podem exigir (já que a coleta de novos requisitos faz parte dos objetivos do trabalho/disciplina)

vários exemplos em sala de aula são baseados nestas estruturas

• Saber utilizar as ferramentas de desenvolvimento

– P.e. Visual Studio da Microsoft – janela de linha de comando

(12)

Os deveres do aluno

• Ler o documento “Apresentação da Disciplina” ...

• Dedicar-se aos trabalhos práticos da disciplina

– não deixar para a última hora

– ser autodidata quando necessário

coleta de requisitos (ex. “novas” estruturas de dados)

• Assinar as listas de presença

• Comparecer nas aulas

– para os ausentes: não serão tiradas dúvidas sobre conceitos básicos já explicados em sala de aula

• Fazer os exercícios dados em sala de aula

• Entender como trabalhar em equipe

– respeitar os companheiros

– mas lembre: devem trabalhar com a hipótese que

(13)

Livro texto

• Staa, A.v.; Programação Modular; Rio de Janeiro: Campus;

2000

– não é necessário adquirir, mas obviamente ajuda

• Texto complementar

– algum livro que trate de programação usando a linguagem “C”

(14)

Convivência

• Pontualidade

– começamos as aulas, no máximo, às 13:15

• Sua participação é importante

– espero que sejam feitas perguntas – sempre perguntas podem ser feitas

– levante o braço antes de fazer sua pergunta

(15)

Organização

• Sítio (site) da disciplina: www.inf.puc-rio.br/~inf1301

– notas de aula disponíveis após as aulas – avisos diversos

provas são no horário de aula

– Software e documentos para download

• Seqüência das aulas: página 7

(16)

Documento: apresentação da disciplina

(17)

Organização

• Sítio (site) da disciplina: www.inf.puc-rio.br/~inf1301

– notas de aula disponíveis após as aulas – avisos diversos

provas são no horário de aula

– Software e documentos para download

• Seqüência das aulas: página 7

• Toda a comunicação deverá ser feita eletronicamente

– e-mail: [email protected]

• Dúvidas - dúvidas das aulas e trabalhos por email

• Monitoria: 9º andar do prédio Pe. Leonel Franca

– Horário a definir

(18)

Critério de aprovação

• 2 provas, com consulta – questões teóricas, práticas e/ou relacionadas aos trabalhos

– P1: 15/05 – P2: 03/07

• 4 trabalhos, prazos – pág. 6

– T1: exercícios e workshops em sala de aula – T2: 13/05, distribuição: aprox. 05/04

– T3: exercícios e workshops em sala de aula – T4: 01/07, distribuição: aprox. 19/05

• Cálculo da nota final

– G1 = ( P1 * 2 + T1 + T2 * 2 ) / 5 – G2 = ( P2 * 2 + T3 + T4 * 2 ) / 5

– GrauFinal = if ( G2 >= 3 ) then ( G1 + G2 ) / 2 else ( G1 + 3 * G2 ) / 4 fi

(19)

Trabalhos

• O aprendizado também é adquirido e demonstrado através da realização de trabalhos interdependentes

• O objetivo dos trabalhos não é escrever algum programa, mas, sim:

– desenvolver programas modulares de boa qualidade e que comprovadamente satisfaçam massas de teste previamente estabelecidas

– estamos pouco interessados no seu conhecimento sobre particularidades da linguagem de programação: C

(20)

Trabalhos

• Os trabalhos serão feitos em grupos de 2 ou 3 alunos

• Serão aceitos somente programas redigidos em C

• Os trabalhos serão corrigidos descritos na seção Critérios de Correção de Trabalhos

• Façam logo:

– tentem instalar o arcabouço

– ... para aproveitarem a aula de instalação e uso - arcabouço

• Vide outras regras no documento...

(21)

Trabalhos

• De maneira geral os trabalhos são bastante trabalhosos

– sua realização deve ser iniciada imediatamente ao receber o enunciado

– os enunciados deixarão margens para dúvidas

pressuposições e justificativas devem ser feitas nestes casos

• Intenção: simular o “mundo real” ao desenvolver programas em empresas

– ambigüidades, inconsistências e “incompletudes” são elementos naturais em especificações de requisitos – desenvolvimento incremental

• Recompensa: dedicação aos trabalhos se refletirá

naturalmente em bom desempenho também nas provas

(22)

Trabalhos

• Critério:

– leia com atenção o folheto de critérios de avaliação dos trabalhos em anexo

• Entrega: os trabalhos devem ser entregues via e-mail

• Atrasos:

– será descontado 1 ponto por dia útil de atraso – domingos e feriados não são dias úteis

• Vírus:

– caso a mensagem contenha vírus, a nota será 0 (zero) – são utilizados diversos controladores de vírus

(23)

Perguntas?

(24)

Programação Modular

Alessandro Garcia

DI/PUC-Rio Março 2019

Referências

Documentos relacionados

A revista cultural digital Vitrola&Jeans é um projeto desenvolvido por estudantes do curso de Comunicação Social com habilitação em Relações Públicas e Jornalismo da

Ap#s esta primeira manutenção, á é poss$vel com uma maior certe"a definir as pr#ximas paradas e também manutenção, á é poss$vel com uma maior certe"a definir

>>ENCARTE DE JOGADOR = contém Aventura-Solo para criação de personagem; regras de criação da carta para inserção no Baralho de Personagens; recomendações para criar

O trabalho científico propõe uma análise sobre como o plástico é um material propício à reciclagem, evidenciando os principais benefícios para o meio ambiente ao fazer o

O processo de transformação bacteriana utilizada na Biologia Molecular ocorre in vitro, e pode ser afetado pelo tamanho e conformação da molécula de DNA a ser introduzida na

21) Aos alunos da disciplina de Desenvolvimento de Projetos, motivação de leitura e de resolução de exercícios práticos sobre o padrão de projeto Strategy na linguagem de

Resumo da reunião mensal das Diretorias Regionais, Municipais, Distritais e Representantes Locais do Ciesp, realizada em 19 de março.. -Convênio Receita Federal e Corpo de Bombeiro:

Para iniciar esse breve relato sobre a disciplina de Projeto Avançado Usos e Impactos Socioambientais na graduação em Design PUC-Rio, seguem as premissas