Sistemas de Informação I Apresentação da disciplina Nazareno Andrade
Objetivo Discutir técnicas avançadas de Análise e Projeto de Software empregadas no desenvolvimento de software focando em melhorar o reuso e a flexibilidade de software desenvolvido com Orientação a Objetos. 2
Saber programar saber fazer bom software A propósito, o que é bom software?
Nosso objetivo é software extensível, reutilizável e com desempenho adequado Queremos desenvolvê-lo em pouco tempo
Orientação a objetos garante isso?
Um bom projeto (OO) garante
Motivação para o curso Cenário caótico Seu patrão lhe solicita um módulo de software pra amanhã: Projeto Macarrão... você perdeu o emprego!!! 01010101 01010101 01010101 0101 0101010 1010101 0101010 1010101... você tem que refazer boa Projeto Alterado parte do projeto... Você reutiliza... algum mas seu código projeto não é copiando flexível e colando... o suficiente para suportar o novo módulo... 01010101 01010101 01010101 0101... você não consegue terminar até amanhã... 7
Os clientes realizam compras nas lojas cadastradas no shopping e as compras são repassadas às lojas que realmente vendem os produtos. Outro cenário
Motivação para o curso Casos de uso Adicionar/Remover produtos ao carrinho Gerenciar produtos Gerenciar estoque Cliente Efetuar compra Receber notificação de promoções Gerente da loja Definir preços Verificar balanço Gerenciar lojas Gerente do VSC Verificar balanço
Você implementou o sistema... Mas e se agora: Shoppings pudessem ser compostos? Fosse criada uma promoção de Natal, sendo todos os preços R$1,99? Novas formas de pagamento se tornassem disponíveis? Itens de promoção fossem criados? (3 em 1: sabonete, condicionador e creme!!!) O gerente também tiver que ser avisado das promoções? Um serviço de busca de produtos tivesse que ser disponibilizado só aos clientes? O gerente de uma loja fosse cliente de outra loja??? A forma de armazenamento dos dados fosse alterada?...
Motivação para o curso Criar um projeto flexível é o segredo para gerenciar melhor as alterações de software Mudança de requisitos são freqüentes Mudança é a norma, não a exceção! A expressão E SE... deve ser algo presente durante o projeto do software E se algum ator for adicionado? E se uma nova funcionalidade for adicionada? E se o sistema for utilizado em outro contexto? E se? E se? E se??
Claro que problemas se repetem E nós não queremos reinventar a roda sempre É fundamental ter um repertório de soluções, de Padrões de Projeto
O objetivo é colocar conceitos de padrões de projeto na sua cabeça Entender, não decorar Esse é o pontapé inicial para lhe tornar um bom desenvolvedor Use a bibliografia se realmente quiser ser bom Conteúdo avançado? O livro clássico é de 1995!
Programa Análise e projeto OO Análise x projeto Análise e projeto em um processo de desenvolvimento Introdução a padrões GRASP Expert, Creator... Padrões arquiteturais Layers, MVC... Padrões de projeto 11 padrões Frameworks Créditos: Prof. Jacques Sauvé Prof. Hyggo Oliveira
Ao final, você deve saber Projetar uma arquitetura de software Transformar o resultado de uma análise orientada a objetos em um projeto flexível e reutilizável Usar de forma crítica um vocabulário de padrões de projeto Reconhecer situações onde padrões devem ser aplicados Saber projetar uma API e um framework
Para começar, você deve Programar bem Entender orientação a objetos OO, e não Java! Entender bem hierarquia de tipos e polimorfismo
e UML Unified Modeling Language Linguagem padrão para modelagem de software OO Vocês devem aprender sozinhos!!! Modelo conceitual Diagrama de classes Diagrama de pacotes Etc... 17
Avaliação Mini-testes A qualquer momento (=quase sempre) 60% da nota final Você pode faltar 25% deles sem zeros Projeto 3 milestones 40% da nota final (15%, 15%, 10%) Informações no site da disciplina 18
Página da disciplina Programa Lista de discussão (não estar na lista == não estar no curso) Descrição do projeto Datas importantes Critérios de avaliação Divulgação de notas Bibliografia Link:
Mais sobre a lista Vocês não aprendem apenas comigo E eu não sei de tudo! Usem a lista para interagir com seus colegas Dúvidas Materiais Exemplos...
FAQ Tudo isso professor? Só isso, professor? O Sr (...)? Posso faltar suas aulas? Pode ter grupo de 432 pessoas? Estudar pelos slides é suficiente? Contato: nazareno@computacao.ufcg.edu.br