UNIVERSIDADE DO ESTADO DE SANTA CATARINA – UDESC CENTRO DE EDUCAÇÃO SUPERIOR DO ALTO VALE DO ITAJAÍ – CEAVI PLANO DE ENSINO DEPARTAMENTO: Sistemas de Informação DISCIPLINA: Engenharia de Software Aplicada PROFESSOR: Pablo Schoeffel CARGA HORÁRIA TOTAL: 72 h/a SIGLA: ESA E-MAIL: [email protected] TEORIA: PRÁTICA: 72 h/a CURSO(S): Bacharelado em Sistemas de Informação SEMESTRE/ANO: 2013/2 PRÉ-REQUISITOS: OBJETIVO GERAL DO CURSO: O curso de Bacharelado em Sistemas de Informação objetiva formar profissionais críticos, criativos, investigativos, éticos e empreendedores. Além disso, deverão ser capazes de atuar em ambientes gerais de informática, como no desenvolvimento, análise, implementação, gerenciamento, gestão de contratos, modelagem e gestão de projetos. Inclusive, os profissionais deverão ter a capacidade de desenvolver soluções apoiadas em tecnologias de informação (computação e comunicação), dados e sistemas que abordem processos administrativos e de negócios das organizações. EMENTA: Modelagem de sistemas: a especificação da arquitetura do sistema, componentes de software. Modelagem UML (diagramação, dicionário de dados e modelagem de dados). Projeto físico de Software: estudo de hardware. Ferramentas Case. Reengenharia. Especificação/ Implementação de um projeto de software. Técnicas de teste de software. OBJETIVO GERAL DA DISCIPLINA: Permitir ao aluno concretizar seu conhecimento em análise e projeto de sistemas partindo da definição do problema, definindo os requisitos, elaborando um projeto lógico a fim de implementar um software a partir da documentação resultante. OBJETIVOS ESPECÍFICOS/DISCIPLINA: i) Relembrar e reforçar os principais conceitos de Engenharia de Software ii) Levantar os requisitos de sistema; iii) Gerar documentação de projeto de software (diagramação UML); iv) Aplicar ferramentas CASE; v) Realizar engenharia reversa; vi) Conhecer e aplicar técnicas de testes; vii) Avaliar a qualidade do software desenvolvido. viii) Conhecer as práticas dos métodos ágeis CRONOGRAMA DAS ATIVIDADES: Nro. Data Horário Conteúdo 1 2 29/07 31/07 18:50 – 20:30 20:40 – 22:20 3 05/08 18:50 – 20:30 4 5 07/08 12/08 20:40 – 22:20 18:50 – 20:30 6 14/08 20:40 – 22:20 7 19/08 18:50 – 20:30 8 21/08 20:40 – 22:20 9 10 11 12 13 14 26/08 28/08 02/09 04/09 09/09 11/09 18:50 – 20:30 20:40 – 22:20 18:50 – 20:30 20:40 – 22:20 18:50 – 20:30 20:40 – 22:20 15 16 17 18 16/09 18/09 23/09 25/09 18:50 – 20:30 20:40 – 22:20 18:50 – 20:30 20:40 – 22:20 19 30/09 18:50 – 20:30 20 21 22 22 23 24 25 26 27 28 29 02/10 07/10 09/10 14/10 16/10 21/10 23/10 30/10 04/11 06/11 11/11 20:40 – 22:20 18:50 – 20:30 20:40 – 22:20 18:50 – 20:30 20:40 – 22:20 18:50 – 20:30 20:40 – 22:20 18:50 – 20:30 20:40 – 22:20 18:50 – 20:30 18:50 – 20:30 30 31 32 13/11 18/11 20/11 20:40 – 22:20 18:50 – 20:30 20:40 – 22:20 33 25/11 18:50 – 20:30 34 35 36 27/11 02/12 04/12 20:40 – 22:20 18:50 – 20:30 20:40 – 22:20 37 09/12 11/12 18:50 – 20:30 20:40 – 22:20 Apresentação da Disciplina / Motivação para Modelagem de Sistemas Modelagem de sistemas: modelagem no contexto dos ciclos de vida de desenvolvimento (Cascata, Iterativo Incremental, Ágil) Modelagem de sistemas: processo de projeto de software Modelagem de sistemas: projeto lógico x projeto físico Modelagem de sistemas: Técnicas de elicitação de requisitos Modelagem de sistemas: Conceitos e Visão Geral da UML Ferramentas CASE: conceito, introdução e demonstração do EA Projeto Lógico: Especificação de requisitos (Diagrama de Requisitos, Histórias) Projeto Lógico: Diagrama de Casos de Uso (atores, estrutura do diagrama, conectores, pacotes, boundary) Projeto Lógico: Diagrama de Casos de Uso (cenários, pré e pós condições, rastreabilidade com requisitos) Projeto Lógico: Diagrama de Casos de Uso (exercícios) Projeto Lógico: Diagrama de Casos de Uso (exercícios) Projeto Lógico: Diagrama de Casos de Uso (exercícios) Projeto Lógico: Prototipação (conceitos e ferramentas) Projeto Lógico: Prototipação (exercícios) Projeto Lógico: Diagrama de Atividades (negócio, cenários) Projeto Lógico: Diagrama de Estados Projeto Lógico: Diagrama de Classes (domínio) Projeto Lógico: Diagrama de Classes (Exercícios) Projeto Lógico: Diagrama de Objetos Projeto Lógico: Modelo de dados (mapeamento oo/relacional) Projeto Lógico: Modelo de dados (exercício) Trabalho 1 (parte 1): Especificação de um projeto de software: Entrega e Apresentação do Trabalho Prova 1 (P1) Projeto Físico: Diagrama de Sequencia (geração dos cenários) Projeto Físico: Diagrama de Sequencia (MVC) Projeto Físico: Diagrama de Sequencia (Exercícios) Projeto Físico: Diagrama de Componentes Projeto Físico: Diagrama de Implantação Projeto Físico: Realização de UC / Diagrama Geral de Interação Ferramentas CASE: Gerando artefatos Modelagem de sistemas: engenharia reversa e reegenharia Prova 2 (P2) Técnicas de Testes de Software: conceitos, tipos, fases e processos de teste. Trabalho 1 (parte 2): Entrega Técnicas de Testes de Software: Testes caixa-branca (unitários) Técnicas de Testes de Software: TDD (conceito e exercícios) Técnicas de Testes de Software: Testes caixa-preta (funcionais, casos de teste) Técnicas de Testes de Software: Automação de testes (conceitos e ferramentas) Técnicas de Testes de Software: Automação de testes (exercício) Prova 3 (P3) Trabalho 1: Revisão e avaliação do trabalho. Revisão e entrega da Prova 3. Fechamento da disciplina e divulgação das médias Exame Final METODOLOGIA PROPOSTA: A disciplina visa revisar rapidamente alguns conceitos de Engenharia de Software, através da exposição de slides e exercícios. Após isso, o foco principal está na aplicação dos conceitos e técnicas aprendidos, através da utilização prática de uma ferramenta CASE (Enterprise Architect) para modelagem de software. Nesse estágio, as aulas serão expositivas, sendo que os alunos aplicarão em seguida os conceitos na ferramenta utilizando um estudo de caso, além de desenvolverem um trabalho completo interdisciplinar, cuja especificação será utilizada para o desenvolvimento em outra disciplina. Para as atividades de testes, serão demonstradas ferramentas e realizados aplicações práticas também. Para o assunto de métodos ágeis, serão realizadas algumas dinâmicas para facilitar o aprendizado e um trabalho prático para exemplificar o funcionamento dos métodos. AVALIAÇÃO: A disciplina será avaliada por diversos instrumentos, conforme a seguir: Trabalho 1 (T1): trabalho em grupo de projeto e especificação de um software, com objetivo de aplicar as práticas de Engenharia de Software. O T1 será composto de 2 entregas, sendo que a nota será composta da seguinte forma: 50% - Entrega1; 50% - Entrega2. Para alunos matriculados nas disciplinas de PAI e INA será um projeto interdisciplinar, para os demais um outro projeto a ser desenvolvido. Trabalhos de aula (T2): exercícios e trabalhos realizados em sala de aula durante todo o semestre e que deverão ser entregues para compor a nota de T2. A nota final de T2 será igual à quantidade de trabalhos entregues / quantidade total de trabalhos realizados. Prova 1 (P1): prova objetiva e, eventualmente, com questões subjetivas, referente ao conteúdo explanado até o momento da avaliação. Poderá ser utilizada ferramenta CASE para resolução da avaliação Prova 2 (P2): prova objetiva e, eventualmente, com questões subjetivas, referente ao conteúdo explanado até o momento da avaliação. Poderá ser utilizada ferramenta CASE para resolução da avaliação Prova 3 (P3): prova objetiva e, eventualmente, com questões subjetivas, referente ao conteúdo explanado até o momento da avaliação. Poderá ser utilizada ferramenta CASE para resolução da avaliação FÓRMULA: ((T2 * 15) + (P1 * 15) + (P2 * 15) + (P3 * 15) + (T1 * 4))/100 BIBLIOGRAFIA BÁSICA: 1. CONALLEN, Jim. Desenvolvendo aplicações WEB com UML. Rio de Janeiro: Campus, 2003. 476 p. 2. GUEDES, Gilleanes T. A. UML 2: uma abordagem prática. São Paulo: Novatec, 2009. 485 p. 3. LARMAN, Craig. Utilizando UML e padrões: uma introdução à análise e ao projeto orientados a objetos e ao desenvolvimento iterativo. 3. ed. Porto Alegre: Bookman, 2007. 695 p. 4. PAULA FILHO, Wilson de Pádua. Engenharia de software: fundamentos, métodos e padrões. 3.ed. Rio de Janeiro: LTC, c2009. 1248 p. 5. PRESSMAN, Roger S. Engenharia de software. 6. ed. São Paulo: McGraw-Hill, 2006. 720 p. 6. SOMMERVILLE, Ian; MELNIKOFF, Selma Shin Shimizu; ARAKAKI, Reginaldo; BARBOSA, Edilson de Andrade. Engenharia de software. 8. ed. São Paulo: Pearson, c2007. 552 p. BIBLIOGRAFIA COMPLEMENTAR: 7. CARNEGIE MELLON UNIVERSITY. CMMI for development, version 1.2. Pittsburgh, 2006. 573 p. 8. MAGELA, Rogério. Engenharia de software aplicada: fundamentos. Rio de Janeiro: Alta Books, 2006. 418 p. 9. MAGELA, Rogério. Engenharia de software aplicada: princípios. Rio de Janeiro: Alta Books, 2006. 337 p. 10. PFLEEGER, Shari Lawrence; FRANKLIN, Dino. Engenharia de software: teoria e prática. 2. ed. São Paulo: Prentice Hall, 2004. 537 p. 11. SWEBOK. Guide to the Software Engineering Body of Knowlegment, IEEE, 2004. 12. SOFTEX. MPS.BR - Melhoria de processo do software brasileiro: guia geral. [S.l], 2009. 56 p.