Engenharia de Requisitos - Eduardo Magno

terça-feira, agosto 08, 2006

Agora é Requisitos

Olá visitante,

O blog mudou de nome mas continua discutindo assuntos da disciplina do professor Júlio. Agora o assunto é Engenharia de Requisitos e não mais Evolução de Software.

Obrigado pela visita!

quarta-feira, junho 14, 2006

Tradução das cartas de Engenheiros de Software

No link abaixo se encontra a tradução das cartas de engenheiros de software:

Cartas de Engenheiros

Falta fazer a arte (ilustração) das cartas. Este trabalho eu deixo para outra pessoa que tenha mais habilidade nesta área ;-)

Enquanto fazia a tradução pensei que poderíamos pensar em funcionários que se enquadram melhor para determinada função. Esta idéia surgiu do jogo anterior, pois no jogo original P&P tinha um programador (Brian, número 86) que era consultor e sofria penalidade menor quando trabalhava no código de outros programadores.

Em contrapartida, poderíamos criar engenheiros de software que, por exemplo, aumentasse sua habilidade quando trabalhava nos requisitos (e/ou desenho). Enquanto poderíamos ter um outro engenheiro de software que fosse mais produtivo quando trabalhasse na rastreabilidade do projeto. Da mesma forma, poderíamos ter aqueles que fossem penalizados quando trabalhassem em fases que não são especialistas.

sexta-feira, junho 09, 2006

An Experimental Card Game for Teaching Software Engineering Processes

Achei este artigo do jogo P&P, publicado no "Journal of Systems of Software", muito bom e de fácil leitura. Especialmente para nós (turma de Evolução) que conhecemos as regras do jogo. Sugiro fortemente a leitura, pois ele discute alguns pontos bem interessantes e relevantes para o nosso artigo.

Clique no link para este artigo JSS2004.pdf

Este mesmo artigo aponta um site bem interessante, vale a pena dar uma olhada. O site lista 86 "Fundamental Rules of Software Engineering". Se tivermos tempo, seria legal discutirmos algumas destas regras em aula. O endereço é:

Fundamental Rules of Software Engineering

Finalmente, o artigo possui uma referência que parece interessante, especialmente para Cidiane que se candidatou a dar uma olhada na literatura relacionada a jogos/informática para educação. Infelizmente não consegui o artigo. Se alguém tiver mais sorte me mande o artigo.

Referência:
Randel, J.M., et al., 1992.
The Effectiveness of Games for Educational Purposes: A Review of Recent Research, Simulation and Gaming. 23 (3), 261-276.

domingo, maio 21, 2006

Jogo Programadores e Problemas: Tradução das Cartas

Segue abaixo as traduções das cartas que me foram atribuídas. Estou usando os templates da postagem anterior.

Cartas de problemas:
cards-problems-eduardo.doc

Cartas de Conceitos:
cards-concepts-eduardo.doc


Jogo Programadores e Problemas: Template das Cartas

Estava meio perdido sobre como fazer a tradução das cartas que me foram atribuídas, então fiz templates no Word para estas cartas.

Se alguém quiser utilizar os mesmos templates para padronizar as cartas, estou disponibilizando nos seguintes endereços:

Cartas de problemas:
cards-template-problems.doc

Cartas de Conceitos:
cards-template-concepts.doc

quarta-feira, maio 10, 2006

Jogo Programadores e Problemas: Sugestões

Com o propósito principal de introduzir conceitos de evolução de software no jogo Programadores e Problemas, mas também com outros objetivos em relação à melhoria do jogo. A turma levantou algumas possíveis alterações ao jogo:

A) Definir melhor o número de pessoas. Uma sugestão foi que o jogo fosse jogado por até 9 pessoas, ou em uma faixa entre 4 e 9 pessoas. Em favor de um número maior de pessoas, se encontra o fato de que o jogo foi inicialmente proposto para ser jogado em sala de aula. Como geralmente uma turma tem muitos alunos, mais jogadores significa mais pessoas envolvidas no aprendizado. Por outro lado, um número elevado de jogadores torna o jogo demasiadamente lento.

B) Com o intuito de agilizar o jogo e melhorar sua dinâmica, foram feitas algumas propostas. Por exemplo:
(i) Jogar em equipe (dupla, por exemplo). Esta proposta além fazer com que o jogo tenha um fim mais próximo, também pode ajudar a desenvolver o espírito de coletividade dos jogadores.
(ii) Simplificação dos bugs e código ruim/bom. O jogo oferece possibilidades de simplificações sem que estas alterem seu objetivo principal (educacional). Por exemplo, os bugs poderiam ser de somente um tipo, eliminando a classificação entre “Simples”, “Normal” e “Grave”. Também, a diferenciação entre “Código Ruim” e “Código Bom” poderia ser removida.

C) Criar um catálogo bibliográfico anexo ao jogo. Este catálogo permitiria aos jogadores aumentar o conhecimento sobre determinado assunto. Por exemplo, quando aparecesse um problema relacionado à “Requisitos Unclear”, poderia haver referências que explicassem melhor a importância de uma análise de requisitos bem feita. Um problema com esta proposta é em relação a justamente a dificuldade de montar e manter um catálogo de referências. Para isto, precisaria de uma vasta – huge ;-) – revisão bibliográfica e que novas referências pudessem ser facilmente adicionadas.

D) Para introduzir o conceito de rastreabilidade de requisitos (um conceito muito importante para evolução de software) foram sugeridas cartas de rastreabilidade. Duas propostas foram feitas: (i) que estas cartas poderiam explicitamente indicar qual documentação esta relacionada à qual trecho de código; ou (ii) simplesmente existir cartas de rastreabilidade e jogadores que não às possuísse seriam penalizados.

E) Criar uma classificação para as cartas de documentação (especialmente requisitos), de tal forma que elas pudessem (i) trazer mais conceitos de Engenharia de Software e (ii) aumentar a dinâmica inicial do jogo. Por exemplo, foram sugeridas pelo menos dois novos tipos de carta de documentação: rastreabilidade e requisitos não funcionais (segurança, por exemplo). Em especial, as cartas de requisitos não funcionais poderiam alterar a forma de atuação do jogador.

F) Criar um tabuleiro de jogo para cada jogador. Esta proposta visa organizar melhor a fases do desenvolvimento e organizar a área de jogo de cada jogador. A área de jogo é apresentada na versão original deste jogo, mas não é explicitamente sugerida para os jogadores.

G) Limitar o número de problemas que podem ser jogados para cada pessoa. O número inicial seria um máximo de 3 problemas e os oponentes que sucedessem o jogador seriam responsáveis por apresentar os problemas.


Jogo Programadores e Problemas: Algumas Deficiências

Em nossa discussão na última aula, foram levantados alguns possíveis problemas com o jogo que pretendemos evoluir. São elas:

1) A dinâmica inicial do jogo (Fase de Requisitos e Fase de Projeto) não entusiasma muito o jogador. Parece um período maçante em que o jogador tem que passar até chegar à parte mais interessante (Fase de Implementação).

2) Para alguns de nós jogadores, o jogo pareceu ser muito demorado, provavelmente devido ao modelo cascata utilizado. Em nossa primeira experiência, jogando durante duas aulas e só chegamos a Fase de Implementação porque “atropelamos” um pouco as outras fases. Ou seja, não fizemos documentação adequada nas fases de requisitos e projeto.

3) O jogo não define claramente quantas pessoas devem jogar. Em nossa experiência, jogamos em 6 pessoas. Um problema relacionado a isso é que muito problemas eram lançados para cada jogador (até 5). Com este elevado número de problemas, torna-se difícil para qualquer jogador evoluir (e ganhar o jogo).

4) O jogo não fornece muitas informações (bibliografia) sobre seus fundamentos principais. Como este é um jogo educativo, acreditamos que os jogadores deveriam ser induzidos a procurar mais informações sobre conceitos de Engenharia de Software / Desenvolvimento de Software.