CI1163 – Design de software
CI0163 – Projeto de Software
Segundo Semestre de 2019
Página com informações gerais da disciplina: ementa, datas das provas, bibliografia, exercícios, etc.
Avisos
====================
- Resultado final disponível.
- Para alunos que participarão do LATINOWARE: a prova substitutiva será realizada dia 04/dezembro, as 15h30, na sala CT-03.
- Dia 08/11: aula prática no LAB12
- Notas da prova 1 disponíveis.
- Especificação do trabalho 2 disponível neste link.
- Dia 11/10 – aula prática no LAB12. Exercícios sobre diagrama de sequência
- Notas do trabalho 1 disponívels neste link.
- Dia 02/10 – não haverá aula
- Página com organização detalhada do conteúdo está disponível neste link.
- Dia 13/09 – aula prática no LAB12
- A especificação do trabalho 1 está disponível neste link: https://docs.google.com/spreadsheets/d/13h-bvjlyu2v38x0SJbruS15RhafuyEwApezgcVfPb80/edit?usp=sharing
====================
Material de aula
Organização do conteúdo detalhada, por tópico e com bibliografia
Material complementar
Abaixo há uma lista de bom material complementar que pode ser usado como suporte para a disciplina, além da bibliografia.
- Resumo de projeto de software, Diagramas de sequência de sistema, Diagramas de interação (prof. Andrey)
- Introdução a projeto de software, Introdução à Arquitetura, Estilos arquiteturais, (prof. Silvia)
- Slides do Sommerville, (capítulos 6 (arquitetura) e 18 (Service-oriented Architecture) )
- Microserviços: resumo
- Slides sobre MVC
- Padrão orientado a objetos e UML
- Exercícios Diagrama de classes
- Exercícios para prova 1
- Slides do Livro Model Driven Engineering in Practice:
- Capítulos 7 (desenvolvendo sua linguagem de projeto), 8 (geração de código) e 10 (gestão de diferentes tipos de modelos)
- Exercícios sobre diagrama de sequência
- Exercícios para a prova 2
- Slides com decisões de projeto do sistema de ensalamento
- Princípios SOLID
- Resumo estrutura de projeto – Loopback 3.0
Criação de modelos e metamodelos para um projeto de software
Criação de diagramas de sequência usando os plug-ins Papyrus (Eclipse)
- Executar o Eclipse a partir do seu home: /home/soft/linux/eclipsemodeling/eclipse/eclipse -vm /usr/lib/jvm/java-8-oracle/bin/
- Criar um novo “Papyrus Project” , escolher um nome para o projeto, e selecionar “Sequence Diagrams”. A paleta de elementos possíveis encontra-se à direita do editor
- A partir desse ponto a criação de diagramas pode iniciar.
- Outros diagramas UML também podem ser criados usando este editor. Selecionar: Novo -> “Papyrus Model”: estará disponível para seleção todos os modelos suportados.
Executando o Loopback (3 e 4) nos servidores do Departamento
- Baixar o NodeJs versão 8.9 ou superior: https://nodejs.org/download/release/v8.9.2/ Escolher o arquivo node-v8.9.2-linux-x64.tar.gz
- curl https://nodejs.org/download/release/v8.9.2/node-v8.9.2-linux-x64.tar.gz -o node.tar.gz
- tar -zxvf node.tar.gz
- O diretório de execução dos 2 próximos comandos será o <dir_descompactado>/bin. O diretório de execução pode ser outro, desde que os binários do node estejam no PATH
- cd node-v8.9.2-linux-x64/bin
- export PATH=${PATH}:${PWD}
- ./npm init
- ./npm i loopback-cli –> para instalar o Loopback 3, ou ./npm i @loopback/cli, para Loopback 4
- export PATH=${PATH}:${PWD}/node_modules/.bin/
- Executar “lb”, e escolher um nome de projeto
- Escolher o exemplo “hellor world”, ou seguir as instruções do “Getting Started” para uma aplicação mais completa
- Executar o “npm start” dentro do diretório do projeto criado pelo lb
- Para executar as opções do LB, verificar a documentação do Loopback
- Principal opção : lb model, para criar novas classes
- Versão 3.x https://loopback.io/doc/en/lb3/Getting-started-with-LoopBack.html
- Exemplos iniciais: https://loopback.io/doc/en/lb3/Getting-started-with-LoopBack.html
- Versão 4: https://loopback.io/doc/en/lb4/
- Problemas comuns
- Estouro de quota: excluir arquivos
- Node já instalado com outra versão: excluir diretório HOME/.npm
- Caso não encontre o db.datasource.json ao executar:
- Copiar o arquivo de src/datasources/db.datasources.json para dist/datasources/.
- Exemplo de diagrama para ser implementado: Diagrama do ensalamento
Horário
- Quartas: 15:30h – ct03
- Sextas: 15:30h – ct03
Ensalamento
http://ensalamento.c3sl.ufpr.br/?tipo=nd&disciplina=ci163
Datas
- Trabalho 1: 27 de setembro de 2019
- A especificação do trabalho 1 está disponível neste link: https://docs.google.com/spreadsheets/d/13h-bvjlyu2v38x0SJbruS15RhafuyEwApezgcVfPb80/edit?usp=sharing
- Trabalho 2: 20 de novembro de 2019
- Prova 1 : 09.outubro.2019
- Prova 2 : 29.novembro.2019
- Final : 11.dezembro.2019
- Segunda chamada e reaproveitamento: 11.dezembro.2019
Avaliação
- Duas provas e 2 trabalhos (ver datas acima).
- Cálculo da Média Parcial: T1*0.20+ P1*0.30 +T2*0,30+ P2*0.20
- Cálculo da média final:
- igual à média parcial, se esta é igual ou superior a 7.0 ou inferior a 4.0,
- média aritmética entre a média parcial e a nota no exame final, caso contrário.
- Será aprovado o aluno que apresentar freqüência mínima igual ou superior a 75% das aulas e obtiver média final igual ou superior a 5.0.
Bibliografia
- Model-Driven Software Engineering in Practice by Marco Brambilla, Jordi Cabot, Manuel Wimmer Morgan & Claypool, 2012, 182 pages
- Larman, C. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design Prentice-Hall, New Jersey – USA, 1997
- Bezerra, E. Princípios de Análise e Projeto de Sistemas com UML. Ed. Campus – Elsevier, Rio de Janeiro, 2007
- Pressman, R.B. Engenharia de Software: Uma Abordagem Profissional Bookman McGraw-Hill, Sexta Edição, 2011, Porto Alegre, RS
- Booch, G.; Rumbaugh, J. and Jacobson, I., The Unified Modeling Language User Guide. Addison-Wesley, 1999
- Garlan, D., Software Architecture: a Roadmap. Carnegie Mellon University, 2000. CMU-CS-94-166
- Wazlawick, R.S. Engenharia de Software: Conceitos e Práticas Elsevier, Rio de Janeiro, RJ, 2013
- Sommerville, I., Software Engineering. Addison-Wesley, 1996
- Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides. Padrões de Projeto: Soluções Reutilizáveis de Software Orientado a objetos. Bookman
- (o mesmo livro acima em inglês) Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides. Elements of Reusable Object-Oriented Software. Addison-Wesley Professional;