• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
12
0
0

Texto

(1)

Programação Modular

Alessandro Garcia

DI/PUC-Rio Março 2013

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...

• Slides adaptados de: Staa, A.v. Notas de Aula em Programação Modular; 2008.

(2)

Mar 2009 Alessandro Garcia © LES/PUC-Rio 3 / 18

Quem sou eu?

• Prof. Alessandro Garcia, afgarcia@inf.puc-rio.br – Sala RDC 407

• 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: arquiteto e programador do TSpaces

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

– University of Waterloo, Canadá, 2001-2004

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

• Professor, Ciência da Computação

– Lancaster University, Inglaterra, 2005 – Jan 2009

• Quarto ano lecionando na PUC-Rio...

Áreas de Atuação e Projetos Desenvolvidos

• Áreas de pesquisa

– Técnicas avançadas de programação modular

• Ex.: programação orientada a aspectos

• novos mecanismos de tratamento de exceções

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

• Alguns projetos realizados e em andamento – 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 Siemens/SAP)

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

(3)

Professores envolvidos…

• Prof. Alessandro Garcia responsável desta turma (afgarcia@inf.puc-rio.br)

– Outros professores desta turma

• Prof. Eiji Barbosa (ebarbosa@inf.puc-rio.br)

– Algumas aulas

– Monitoria (a confirmar)

• Prof. Bruno Cafeo (bcafeo@inf.puc-rio.br)

– Algumas aulas

– Monitoria (a confirmar)

• Dúvidas de aulas e trabalhos: por email

• Outra turma: Flavio Bevilacqua

Mar 2009 Alessandro Garcia © LES/PUC-Rio 5 / 18

Quem são vocês?

• Nome?

• Período? • Curso? Ênfase?

• Já experiência com Programação OO?

• Trabalha? Estagiário? Envolvimento prévio com projetos de software?

(4)

Mar 2009 Alessandro Garcia © LES/PUC-Rio 7 / 18

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

– teste, documentação, modelos, assertivas, tratamento de exceções, métricas

– inspeção, instrumentação, estratégias de cobertura de teste, etc...

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 (p.e. 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

(5)

Mar 2009 Alessandro Garcia © LES/PUC-Rio 9 / 18

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

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

• 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

(6)

Mar 2009 Alessandro Garcia © LES/PUC-Rio 11 / 18

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 da ementa da disciplina)

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

• Saber utilizar as ferramentas de desenvolvimento – Visual Studio da Microsoft

– janela de linha de comando

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

(7)

Mar 2009 Alessandro Garcia © LES/PUC-Rio 13 / 18

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”

Convivência

• Pontualidade

– início as aulas, no máximo, às 13:15

• Sua participação é importante

– espero que sejam feitas perguntas

– sempre perguntas podem ser feitas

(8)

Mar 2009 Alessandro Garcia © LES/PUC-Rio 15 / 18

Organização

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

• Toda a comunicação deverá ser feita eletronicamente – e-mail: afgarcia@inf.puc-rio.br

• 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

• Dúvidas - Alessandro Garcia, Eiji Barbosa, Bruno Cafeo: dúvidas das aulas e trabalhos por email

• Monitoria: a ser confirmada – local e horário a ser divulgado

Critério de aprovação

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

– P1: 22/05, quarta, 13:00

– P2: 26/06, quarta, 13:00

• 4 trabalhos, prazos – pág. 6

– T1: exercícios e workshops em sala de aula

– T2: 17/05, distribuição: aprox. 02/04

– T3: exercícios e workshops em sala de aula

– T4: 01/07, distribuição: aprox. 31/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

(9)

Mar 2009 Alessandro Garcia © LES/PUC-Rio 17 / 18

Trabalhos

• O aprendizado também é adquirido e demonstrado através da realização de uma série 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

• Não é objetivo verificar se o aluno conhece todas as sutilezas da linguagem de programação, ou dos algoritmos empregados

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

– cuidado! prova detecta elementos “ausentes” do trabalho em

(10)

Mar 2009 Alessandro Garcia © LES/PUC-Rio 19 / 18

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

• Os programas devem ser compiláveis utilizando o compilador MS Visual C/C++ 2008

• Façam logo:

– tentem instalar o arcabouço

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

• Vide outras regras no documento...

[1]O Departamento de Informática tem uma licença de uso de software da Microsoft. Veja no LabGrad como conseguir as cópias.

Trabalhos

• Entrega: os trabalhos devem ser entregues via e-mail. • Vírus:

– caso a mensagem contenha vírus, a nota será 0 (zero)

– são utilizados diversos controladores de vírus

• Atrasos:

– será descontado 1 ponto por dia útil de atraso

– domingos e feriados não são dias úteis

• Critério:

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

(11)

Mar 2009 Alessandro Garcia © LES/PUC-Rio 21 / 18

Perguntas?

Programação Modular & Outras Disciplinas

• Programação I e II

– PM provê princípios e técnicas para lidar de forma modular com a implementação de estruturas de dados apresentadas nestas disciplinas

• Teste de software: aprofundamento no tópico – PM: introdução à testes

• Programação OO:

– PM serve de motivação para tal disciplina

• As seguintes disciplinas de Engenharia de Software são complementares à PM:

– Modelagem de Software

– Engenharia de Requisitos

– Especificação e Análise Formal de Sistemas

– Princípios de Engenharia de Software

(12)

Programação Modular

Alessandro Garcia

DI/PUC-Rio Março 2013

Referências

Documentos relacionados

Detectadas as baixas condições socioeconômicas e sanitárias do Município de Cuité, bem como a carência de informação por parte da população de como prevenir

Feitiço do Segredo: deposita um segredo numa pessoa de confiança, essa pessoa fica deposita um segredo numa pessoa de confiança, essa pessoa fica sendo o "Fiel do sendo o

complexa. De fato, o pensamento cartesiano opera a partir de causalidades simples. Assim, as políticas públicas apenas detectam uma variável e, com isso, tendem a perder

dois gestores, pelo fato deles serem os mais indicados para avaliarem administrativamente a articulação entre o ensino médio e a educação profissional, bem como a estruturação

Dessa forma, a partir da perspectiva teórica do sociólogo francês Pierre Bourdieu, o presente trabalho busca compreender como a lógica produtivista introduzida no campo

Estudar o efeito da plastificação do ATp com glicerol nas características físico-químicas da blenda PLA/ATp; Analisar a mudança na cristalinidade dos laminados submetidos a

O CES é constituído por 54 itens, destinados a avaliar: (a) cinco tipos de crenças, a saber: (a1) Estatuto de Emprego - avalia até que ponto são favoráveis, as

A luta das mulheres sul-africanas pelo reconhecimento como cidadãs iguais com igualdade de oportunidades é principalmente a luta contra o apartheid, pela libertação