MC437 Projeto de Sistemas de Informação Instituto de Computação UNICAMP 1o. Semestre de 2014 Profa. Cecilia M. F. Rubira, sala 13, cmrubira@ic.unicamp.br PED: Gustavo Waku, sala 91 (LSD), gustavo.waku@gmail.com PAD: Bruno Carvalho 1 Apresentação do Curso 1.1 Ementa (Versão 2.0 26/2/2014) Análise e Projeto de Sistemas de Informação usando técnicas de Bancos de Dados, Interface Humano-Computador e Engenharia de Software. 1.2 Programa Levantamento de requisitos funcionais e não-funcionais. Projeto arquitetural. Projeto dos componentes do sistema. Integração e testes dos componentes do sistema. 1.3 Desenvolvimento da Disciplina Para a realização do programa será utilizado um estudo de caso real, que será desenvolvido usando uma metodologia ágil de desenvolvimento[12]. O objetivo da disciplina é fazer com que o aluno aplique as recomendações e práticas da Engenharia de Software, sem perda de agilidade no processo de desenvolvimento. Os trabalhos serão feitos em grupos. O número de componentes de cada grupo é definido de acordo com o tamanho da turma, dando preferência para um número par para facilitar a aplicação da técnica de pair programming da metodologia XP extreme Programming[13]. Todo aluno deve pertencer a um grupo. A implementação do projeto consistirá de 2 sprints de 4 semanas para implementar código, seguido de mais 1 sprint dedicado essencialmente para as atividades de testes do sistema desenvolvido. Ao final de cada sprint, o sistema rodando deve ser mostrado para o dono do produto (product owner). O código desenvolvido por cada equipe deve ficar disponível num repositório com suporte para versionamento de código e acesso dos formadores. 2 Horário da Disciplina, Salas, PED e PAD Horário da disciplina: Prática: quarta das 14h-16h Sala: CC16 Lab: CC04
Laboratório: sexta das 14-16h Sala: CC16 Lab: CC02 Onde me achar: cmrubira@ic.unicamp.br prédio IC1, sala 13 Monitor: Gustavo Waku (PED) gustavo.waku@gmail.com prédio IC2, sala 91, LSD Monitor: Bruno Vargas Versignassi De Carvalho (PAD) e-mail: b116330@dac.unicamp.br 3 Horário de Atendimento Enviar uma mensagem para o professor solicitando o agendamento de atendimento, assim como para o PED e PAD. Combinar um horário fixo adequado para os estudantes. 4 O Projeto 4.1 O Tema O tema do projeto está relacionado com e-commerce, mais especificamente envolve a análise, projeto e implementação de uma Loja de Suplementos Alimentares pela Internet. Os modelos criados para esse projeto (modelos de casos de uso, modelos de classes, modelos de comunicação, modelo arquitetural) estão disponivéis no EA. 4.2 As Equipes O Projeto será desenvolvido por equipes de no máximo 6 alunos. Mais especificamente, recomendase a formação de: 3 equipes de seis alunos 2 equipes de quatro alunos Total: 5 equipes 4.3 Plataforma de Desenvolvimento : As seguintes exigências técnicas devem ser atendidas: desenvolver uma aplicação Web. usar o método baseado em componentes chamado UML Components[1] para a criação de uma arquitetura componentizada. usar a plataforma Java[3] para o desenvolvimento de código. usar a ferramenta Bellatrix[10] para a geração de código Java da arquitetura componentizada. usar o ambiente de desenvolvimento integrado (IDE: Integrated Development Environment) Eclipse ou equivalente. 2
usar o servidor de aplicação Tomcat para a implementação do servidor de aplicação. usar ferramentas para a construção de modelos UML. usar o framework Hibernate e um banco de dados relacional para a implementação da camada de persistência com objetos DAO (Data Acess Objects) (sugestão). Ferramentas de Desenvolvimento: - Java Development Kit - JDK 1.6 ou superior http://www.oracle.com/technetwork/java/javase/downloads/index.html - IDE de Desenvolvimento - Eclipse J2EE Kepler http://eclipse.org/downloads/ http://eclipse.org/downloads/ - Framework para Desenvolvimento Web - Google Web Toolkit (GWT 2.6) http://www.gwtproject.org/ - Ferramenta para scripts - Apache Ant 1.8 ou superior http://ant.apache.org/ http://ftp.unicamp.br/pub/apache//ant/binaries/apache-ant-1.9.3-bin.zip - Tomcat 6.0 http://tomcat.apache.org/ Ferramentas de Controle de Versões: - Ferramenta de versionamento de código - GIT http://git-scm.com/downloads - Ferramenta para hospedagem de código na Web - BITBUCKET https://bitbucket.org (similar ao github, mas tem um bugtracking melhor, fazer o cadastro no site ) - Banco de dados HSQLDB ( http://hsqldb.org/ ) - Ferramentas Modelagem UML: Papyrus (plugin para eclipse) https://www.eclipse.org/papyrus/updates/index.php Umbrello http://umbrello.kde.org/ sudo apt-get install umbrello Astah Professional (licença gratuita para estudantes) http://astah.net/download - Ferramentas para Testes: 3
JUnit (incluído no Eclipse) https://github.com/junit-team/junit/wiki/getting-started Tutorial JUnit: http://www.vogella.com/tutorials/junit/article.html Cobertura de código: Coverlipse Jabuti (da USP-São Carlos) Geração de casos de teste a partir de modelos de estado: ModelJUnit. 5 Etapas (Milestones) O projeto consiste das seguintes grandes etapas: Etapa 1 Engenharia de Requisitos: modelo de especificação de requisitos e modelo de casos de uso acompanhado de uma descrição sucinta de cada caso de uso. Etapa 2 Análise OO Estática: modelodecasosdeusocomescoporeduzido(diagramade casos de uso, descrição completa de cada caso de uso com os seus fluxos básico e alternativos) e modelo conceitual (diagrama de classes de análise). Etapa 3 Análise OO Dinâmica: modelo de classes de análise com classes de controle e diagramas de sequência de análise (um diagrama para cada caso de uso). Etapa 4 Projeto Arquitetural: especificação do modelo arquitetural baseado em componentes arquiteturais usando o método UML Components com diagramas de comunicação[1] e conectores arquiteturais. Etapa 5 Projeto Detalhado e Implementação: refinamento da arquitetura, aplicação de padrões de projeto, uso de componentes de terceiros (Tomcat, Hibernate, etc.) e implementação de componentes da arquitetura usando o modelo de implementação de componentes chamado COSMOS[11]. Etapa 6 Implantação: integração dos componentes e implantação do sistema. Etapa 7 Testes: teste dos componentes e do sistema. 5.1 SCRUM A metodologia de desenvolvimento ágil será composta por: 1. Pré-jogo: Etapa 1, Etapa 2, Etapa 3, Etapa 4 2. Jogo: Etapa 5, Etapa 6 e Etapa 7 3. Pós-jogo: Lições Aprendidas 4
5.2 Jogo O Jogo será composto por 3 sprints de duração 4 semanas: Sprint1: Etapa 5, Etapa 6, Etapa 7 Sprint2: Etapa 5, Etapa 6, Etapa 7 Sprint3: Etapa 7 Para cada sprint, cada equipe deverá: (a) Definir o backlog do sprint com as user stories(estórias de usário- versão simplificada de um use case) priorizadas pelo cliente; (b) Definir testes de aceitação das user stories / Validação com o Cliente; (c) Gravar registro da reunião de scrum semanal; (d) Realizar demo de 15min por grupo; 6 Critério de Avaliação 6.1 Média M = (N otaentregaarq + N otaentregasprint1 + N otaapressprint1 + N otaentregaetapa2 + N otaapressprint2 + N otaentregasprint3 + N otaapressprint3) sendo que: NotaEntregaArq vale 1.0 NotaEntregaSprint 2.0 NotaApresSprint 1.0 1. Entrega do Projeto da arquitetura componentizada (EntregaArq): dia 13/mar de 2014, quinta. 2. A entrega de cada sprint significa mostrar código rodando para o seu cliente e validar os testes de aceitação. O grupo terá 15 minutos para apresentar as funcionalidades implementadas no sprint. EntregaSprint1 + ApresSprint1: 16/abr, EntregaSprint2 + ApresSprint2: 23/mai. EntregaSprint3 + ApresSprint3: 13/jun. 3. Critérios para Avaliação das Demos/Apresentações: participação dos integrantes do grupo na apresentação, pontualidade e observação do tempo de apresentação, conteúdo e qualidade do material utilizado, comunicação das idéias. 5
6.2 Sobre o Exame Um aluno com Média M (3 <= M < 5) e que tenha pelo menos 75% de presença no curso, poderá fazer o exame. Neste caso, a Média Final MF será calculada como a média entre M e a nota do exame. Data do Exame: 11 de julho (sexta). 7 Datas Importantes 13 de março, quinta: entrega da arquitetura componentizada. 16 de abril, quarta: EntregaSprint1 + ApresSprint1 23 de maio, sexta: EntregaSprint2 + ApresSprint2 13 de junho, sexta: EntregaSprint3 + ApresSprint3 11 de julho, sexta: exame 8 Cronograma Detalhado S T Q Q S S D Fevereiro 21 26 28 - (26/2 aula UMLComp) e (28/2 lab GWT) Março 5 7 - (5/3 feriado) (7 aula SCRUM) 12 14 - (13/3 EntregaArq) (14 aula SCRUM) 19 21 - (17/3 seg inicio Sprint1) 26 28 Abril 2 4 9 11 16 18 -(16/4 Entrega+ApresSprint1) (18/4 feriado) 23 25 -(22/4 ter início Sprint2) 30 2 -(2/5 feriado) Maio 7 9 14 16 21 23 -(23/5 Entrega+ApresSprint2) 28 30 -(24/5 sab inicio Sprint3) Junho 4 6 11 13 - (13/6 Entrega+ApresSprint3) 6
9 Bibliografia Recomendada Roger S. Pressman, Engenharia de Software, 6a. edição, 2006, McGraw-Hill, São Paulo. Roger S. Pressman, Software Engineering: A Practitioner s Approach, fifth edition, McGraw-Hill, 2001. I.Sommerville, Software Engineering: (Update) (8th edition), Addison Wesley, 8th edition, 2007. I.Sommerville, Software Engineering, Addison-Wesley, sixth edition, 2001. A. Carvalho& T. Chiossi, Introdução à Engenharia de Software, Editora da UNICAMP, 2001. C.M.F.Rubira, Apostila Introdução à Análise Orientada a Objetos e Projeto Arquitetural, IC-UNICAMP, 2013. K.Arnold & J.Gosling, The Java Programming Language, second edition, Addison- Wesley, 1997. C.Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design, Prentice-Hall, 1998. M.Grand, Patterns in Java, Wiley, 1998. E.Gamma et al., Design Patterns: Elements of reusable OO Software, Addison-Wesley, 1995. J.Cheesman& J.Daniels, UML Components: A Simple Process for Specifying Component- Based Software, Addison-Wesley, 2001. Orit Hazzan and Yael Dubinsky. Agile Software Engineering (Undergraduate Topics in Computer Science). Springer London; 1 edition (February 28, 2009) Ken Schwaber and Mike Beedle. Agile Software Development with Scrum. Prentice Hall, Upper Saddle River, New Jersey, 2002. Mary Poppendieck and Tom Poppendieck. Lean Software Development: An Agile Toolkit. Addison-Wesley, 2003. Mike Cohn. User Stories Applied: For Agile Software Development. Addison-Wesley, 2004 10 Páginas Importantes: Ensino Aberto http://www.unicamp.br/ea Página do livro do Sommerville: http://www.comp.lancs.ac.uk/computing/resources/ians/se8/index.html Agile Manifesto http://agilemanifesto.org/iso/ptbr/ Scrum Guide, versão de 2011 em português http://www.scrum.org/storage/scrum Guide 2011 - PTBR.pdf 7
Scrum Master in Under 10 Minutes video http://www.axosoft.com/ontime/videos/scrum/#scrum-diagram Referências [1] J. Cheesman & J. Daniels, UML Components: A Simple Process for Specifying Component-Based Software,Addison-Wesley, 2001. [2] Microsoft Corporation, Microsoft.net homepage, acessado em agosto 2006, http://www.microsoft.com/net/. [3] Sun Microsystems, Java Technology, acessado em agosto 2006, http://java.sun.com/. [4] Change Vision, Inc., UML Modeling Tool- JUDE, acessado em agosto 2006, http://jude.changevision.com/jude-web/index.html. [5] Omondo, EclipseUML, acessado em agosto 2006, http://www.omondo.com/ [6] K. Arnold & J. Gosling, The Java Programming Language, second edition, Addison-Wesley, 1997. [7] C. Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design, Prentice-Hall, 1998. [8] M. Grand, Patterns in Java, Wiley, 1998. [9] E. Gamma et al., Design Patterns: Elements of reusable OO Software, Addison-Wesley, 1995. [10] R.Tomita, F.Castor Filho, P.A.C. Guerra, and C.M.F.Rubira. Bellatrix: Um Ambiente para Suporte Arquitetural ao Desenvolvimento Baseado em Componentes. In Proceedings of the IV Brazilian Workshop on Component-Based Development (WDBC 2004). João Pessoa, PB, Brazil, 15-17/9/2004, pp. 43-48. [11] L.A.Gayard, C.M.F.Rubira and P.A.C. Guerra. COSMOS: a COmponent System MOdel for Software Architectures. In English, Number IC-08-04, 58 pages, February 2008. [12] Ken Schwaber and Mike Beedle. Software Development with Scrum. Prentice Hall, Upper Saddle River, New Jersey, 2002. [13] Kent Beck with Cynthia Andres. Extreme Programming Explained: Embrace Change, 2nd edition, Addison-Wesley, 2004. 8