Programação Modular - DI PUC-Rio

Propaganda
3/2/2016
Programação Modular
Alessandro Garcia
DI/PUC-Rio
Março 2016
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 Programacao
Modular; 2008.
Mar 2009
Alessandro Garcia © LES/PUC-Rio
2 / 18
1
3/2/2016
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
– Lancaster University, Inglaterra, 2005 – Jan 2009
• Sétimo ano lecionando na PUC-Rio...
Alessandro Garcia © LES/PUC-Rio
Mar 2009
3 / 18
Á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
– 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)
– ...
Mar 2009
Alessandro Garcia © LES/PUC-Rio
4 / 18
2
3/2/2016
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...
Alessandro Garcia © LES/PUC-Rio
Mar 2009
5 / 18
Professores envolvidos…
• Prof. Alessandro Garcia responsável desta turma
([email protected])
• Alexander Lopes
– Monitoria
• Dúvidas de aulas e trabalhos: por email
• Outra turma: Flavio Bevilacqua
Mar 2009
Alessandro Garcia © LES/PUC-Rio
6 / 18
3
3/2/2016
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?
Mar 2009
Alessandro Garcia © LES/PUC-Rio
7 / 18
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
Mar 2009
Alessandro Garcia © LES/PUC-Rio
8 / 18
4
3/2/2016
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
– custo do software será mais alto
Mar 2009
Alessandro Garcia © LES/PUC-Rio
9 / 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 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
Mar 2009
Alessandro Garcia © LES/PUC-Rio
10 / 18
5
3/2/2016
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
Mar 2009
Alessandro Garcia © LES/PUC-Rio
11 / 18
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
desentendimentos podem ocorrer e devem ser solucionados
Mar 2009
Alessandro Garcia © LES/PUC-Rio
12 / 18
6
3/2/2016
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”
Alessandro Garcia © LES/PUC-Rio
Mar 2009
13 / 18
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
– levante o braço antes de fazer sua pergunta
Mar 2009
Alessandro Garcia © LES/PUC-Rio
14 / 18
7
3/2/2016
Organização
• Seqüência das aulas: página 7
• Toda a comunicação deverá ser feita eletronicamente
– e-mail: [email protected]
• 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, Alexander Lopes: dúvidas das aulas e
trabalhos por email
• Monitoria: 9º andar do prédio Pe. Leonel Franca
– Horário a definir
Mar 2009
Alessandro Garcia © LES/PUC-Rio
15 / 18
Critério de aprovação
• 2 provas, com consulta – questões teóricas, práticas e/ou
relacionadas aos trabalhos
– P1: 04/05, quarta, 13:00
– P2: 22/06, quarta, 13:00
• 4 trabalhos, prazos – pág. 6
– T1: exercícios e workshops em sala de aula
– T2: 09/05, distribuição: aprox. 28/03
– T3: exercícios e workshops em sala de aula
– T4: 27/06, distribuição: aprox. 15/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
Mar 2009
Alessandro Garcia © LES/PUC-Rio
16 / 18
8
3/2/2016
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
• Não é objetivo verificar se o aluno conhece todas as
sutilezas da linguagem de programação, ou dos algoritmos
empregados
Alessandro Garcia © LES/PUC-Rio
Mar 2009
17 / 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.
Mar 2009
Alessandro Garcia © LES/PUC-Rio
18 / 18
9
3/2/2016
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
grupo
Alessandro Garcia © LES/PUC-Rio
Mar 2009
19 / 18
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.
Mar 2009
Alessandro Garcia © LES/PUC-Rio
20 / 18
10
3/2/2016
Perguntas?
Mar 2009
Alessandro Garcia © LES/PUC-Rio
21 / 18
Programação Modular
Alessandro Garcia
DI/PUC-Rio
Março 2016
11
Download