MC437 – Projeto de Sistemas de Informa¸c˜ao Instituto de Computac¸˜ao — 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
(Vers˜ao 2.0 – 26/2/2014)
1
Apresenta¸c˜
ao do Curso
1.1 Ementa
An´alise e Projeto de Sistemas de Informa¸c˜ao usando t´ecnicas de Bancos de Dados, Interface Humano-Computador e Engenharia de Software.
1.2 Programa
Levantamento de requisitos funcionais e n˜ao-funcionais. Projeto arquitetural.
Projeto dos componentes do sistema.
Integra¸c˜ao e testes dos componentes do sistema.
1.3 Desenvolvimento da Disciplina
Para a realiza¸c˜ao do programa ser´a utilizado um estudo de caso real, que ser´a desenvolvido usando uma metodologia ´agil de desenvolvimento[12]. O objetivo da disciplina ´e fazer com que o aluno aplique as recomenda¸c˜oes e pr´aticas da Engenharia de Software, sem perda de agilidade no processo de desenvolvimento.
Os trabalhos ser˜ao feitos em grupos. O n´umero de componentes de cada grupo ´e definido de acordo com o tamanho da turma, dando preferˆencia para um n´umero par para facilitar a aplica¸c˜ao da t´ecnica de pair programming da metodologia XP – eXtreme Programming[13]. Todo aluno deve pertencer a um grupo.
A implementa¸c˜ao do projeto consistir´a de 2 sprints de 4 semanas para implementar c´odigo, seguido de mais 1 sprint dedicado essencialmente para as atividades de testes do sistema desen-volvido. Ao final de cada sprint, o sistema rodando deve ser mostrado para o dono do produto (product owner).
O c´odigo desenvolvido por cada equipe deve ficar dispon´ıvel num reposit´orio com suporte para versionamento de c´odigo e acesso dos formadores.
2
Hor´
ario da Disciplina, Salas, PED e PAD
Hor´ario da disciplina:
Laborat´orio: sexta das 14-16h Sala: CC16 Lab: CC02 Onde me achar:
cmrubira@ic.unicamp.br pr´edio IC1, sala 13 Monitor: Gustavo Waku (PED)
gustavo.waku@gmail.com pr´edio IC2, sala 91, LSD Monitor: Bruno Vargas Versignassi De Carvalho (PAD) e-mail: b116330@dac.unicamp.br
3
Hor´
ario de Atendimento
Enviar uma mensagem para o professor solicitando o agendamento de atendimento, assim como para o PED e PAD. Combinar um hor´ario fixo adequado para os estudantes.
4
O Projeto
4.1 O Tema
O tema do projeto est´a relacionado com e-Commerce, mais especificamente envolve a an´alise, projeto e implementa¸c˜ao 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¸c˜ao, modelo arquitetural) est˜ao disponiv´eis no EA.
4.2 As Equipes
O Projeto ser´a desenvolvido por equipes de no m´aximo 6 alunos. Mais especificamente, recomenda-se a forma¸c˜ao de:
3 equipes de seis alunos 2 equipes de quatro alunos Total: 5 equipes
4.3 Plataforma de Desenvolvimento
:
As seguintes exigˆencias t´ecnicas devem ser atendidas: • desenvolver uma aplica¸c˜ao Web.
• usar o m´etodo baseado em componentes chamado UML Components[1] para a cria¸c˜ao de uma arquitetura componentizada.
• usar a plataforma Java[3] para o desenvolvimento de c´odigo.
• usar a ferramenta Bellatrix[10] para a gera¸c˜ao de c´odigo Java da arquitetura componentizada. • usar o ambiente de desenvolvimento integrado (IDE: Integrated Development Environment)
• usar o servidor de aplica¸c˜ao Tomcat para a implementa¸c˜ao do servidor de aplica¸c˜ao. • usar ferramentas para a constru¸c˜ao de modelos UML.
• usar o framework Hibernate e um banco de dados relacional para a implementa¸c˜ao da camada de persistˆencia com objetos DAO (Data Acess Objects) (sugest˜ao).
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˜oes:
- Ferramenta de versionamento de c´odigo - GIT http://git-scm.com/downloads
- Ferramenta para hospedagem de c´odigo na Web - BITBUCKET
https://bitbucket.org (similar ao github, mas tem um bugtracking melhor, fazer o cadas-tro 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¸ca gratuita para estudantes) http://astah.net/download
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´odigo:
Coverlipse
Jabuti (da USP-S˜ao Carlos)
Gera¸c˜ao 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¸c˜ao de requisitos e modelo de casos de uso acompanhado de uma descri¸c˜ao sucinta de cada caso de uso.
Etapa 2 – An´alise OO Est´atica: modelo de casos de uso com escopo reduzido (diagrama de casos de uso, descri¸c˜ao completa de cada caso de uso com os seus fluxos b´asico e alternativos) e modelo conceitual (diagrama de classes de an´alise).
Etapa 3 – An´alise OO Dinˆamica: modelo de classes de an´alise com classes de controle e diagramas de sequˆencia de an´alise (um diagrama para cada caso de uso).
Etapa 4 – Projeto Arquitetural: especifica¸c˜ao do modelo arquitetural baseado em com-ponentes arquiteturais usando o m´etodo UML Components com diagramas de comunica¸c˜ao[1] e conectores arquiteturais.
Etapa 5 – Projeto Detalhado e Implementa¸c˜ao: refinamento da arquitetura, aplica¸c˜ao de padr˜oes de projeto, uso de componentes de terceiros (Tomcat, Hibernate, etc.) e imple-menta¸c˜ao de componentes da arquitetura usando o modelo de implementa¸c˜ao de componentes chamado COSMOS[11].
Etapa 6 – Implanta¸c˜ao: integra¸c˜ao dos componentes e implanta¸c˜ao do sistema. Etapa 7 – Testes: teste dos componentes e do sistema.
5.1 SCRUM
A metodologia de desenvolvimento ´agil ser´a composta por: 1. Pr´e-jogo: Etapa 1, Etapa 2, Etapa 3, Etapa 4
2. Jogo: Etapa 5, Etapa 6 e Etapa 7 3. P´os-jogo: Li¸c˜oes Aprendidas
5.2 Jogo
O Jogo ser´a composto por 3 sprints de dura¸c˜ao 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:
(a) Definir o backlog do sprint com as user stories (est´orias de us´ario - vers˜ao simplificada de um use case) priorizadas pelo cliente;
(b) Definir testes de aceita¸c˜ao das user stories / Valida¸c˜ao com o Cliente; (c) Gravar registro da reuni˜ao de scrum semanal;
(d) Realizar demo de 15min por grupo;
6
Crit´
erio de Avalia¸c˜
ao
6.1 M´edia
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´odigo rodando para o seu cliente e validar os testes de aceita¸c˜ao. O grupo ter´a 15 minutos para apresentar as funcionalidades implementadas no sprint.
EntregaSprint1 + ApresSprint1: 16/abr, EntregaSprint2 + ApresSprint2: 23/mai. EntregaSprint3 + ApresSprint3: 13/jun. 3. Crit´erios para Avalia¸c˜ao das Demos/Apresenta¸c˜oes:
participa¸c˜ao dos integrantes do grupo na apresenta¸c˜ao, pontualidade e observa¸c˜ao do tempo de apresenta¸c˜ao, conte´udo e qualidade do material utilizado,
6.2 Sobre o Exame
Um aluno com M´edia M (3 <= M < 5) e que tenha pelo menos 75% de presen¸ca no curso, poder´a fazer o exame. Neste caso, a M´edia Final MF ser´a calculada como a m´edia entre M e a nota do exame.
Data do Exame: 11 de julho (sexta).
7
Datas Importantes
• 13 de mar¸co, 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¸co
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
9
Bibliografia Recomendada
Roger S. Pressman, Engenharia de Software, 6a. edi¸c˜ao, 2006, McGraw-Hill, S˜ao 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 edi-tion, 2007.
I.Sommerville, Software Engineering, Addison-Wesley, sixth edition, 2001.
A. Carvalho & T. Chiossi, Introdu¸c˜ao `a Engenharia de Software, Editora da UNICAMP, 2001.
C.M.F.Rubira, Apostila Introdu¸c˜ao `a An´alise Orientada a Objetos e Projeto Arquite-tural, 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´
aginas Importantes:
Ensino Aberto http://www.unicamp.br/ea P´agina 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˜ao de 2011 em portuguˆes
Scrum Master in Under 10 Minutes video
http://www.axosoft.com/ontime/videos/scrum/#scrum-diagram
Referˆ
encias
[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.change-vision.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˜ao 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 Soft-ware 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.