Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
engenharia
de software
Edio 44 - Ano 04
Processo
Conhea os modelos
de processo pessoal
Processo
Uma viso geral
do CMMI
Agilidade
Requisitos para
alcanar agilidade
Agilidade
Scrum e o gerenciamento
de projetos - Parte 3
Requisitos
Gerenciando mudanas
a partir de requisitos
Desenvolvimento
Desenvolvimento de aplicaes de
realidade aumentada
Desenvolvimento
Conhea tcnicas para manter
seu cdigo limpo Parte 6
maraujo@devmedia.com.br
Doutor e Mestre em Engenharia de Sistemas e Computao pela COPPE/UFRJ - Linha de Pesquisa
em Engenharia de Software, Especialista em Mtodos Estatsticos Computacionais e Bacharel em
Matemtica com Habilitao em Informtica pela UFJF, Professor e Coordenador do curso de Bacharelado em Sistemas de Informao do Centro de Ensino Superior de Juiz de Fora, Professor do
curso de Bacharelado em Sistemas de Informao da Faculdade Metodista Granbery, Professor e
Diretor do Curso Superior de Tecnologia em Anlise e Desenvolvimento de Sistemas da Fundao
Educacional D. Andr Arcoverde, Analista de Sistemas da Prefeitura de Juiz de Fora, Colaborador
da Engenharia de Software Magazine.
Corpo Editorial
Editor
Rodrigo Oliveira Spnola
Colaboradores
Marco Antnio Pereira Arajo
Eduardo Oliveira Spnola
Jornalista Responsvel
Kaline Dolabella - JP24185
eduspinola@gmail.com
Colaborador das revistas Engenharia de Software Magazine, Java Magazine e SQL Magazine. bacharel em Cincias da Computao pela Universidade Salvador (UNIFACS) onde atualmente cursa o
mestrado em Sistemas e Computao na linha de Engenharia de Software, sendo membro do GESA
(Grupo de Engenharia de Software e Aplicaes).
Na Web
www.devmedia.com.br/central
(21) 3382-5038
Atendimento ao Leitor
A DevMedia conta com um departamento exclusivo para o atendimento ao leitor. Se
voc tiver algum problema no recebimento do seu exemplar ou precisar de algum
esclarecimento sobre assinaturas, exemplares anteriores, endereo de bancas de
jornal, entre outros, entre em contato com:
www.devmedia.com.br/mancad
(21) 2220-5338
Publicidade
Para informaes sobre veiculao de anncio na revista ou no site entre em
contato com:
publicidade@devmedia.com.br
EDITORIAL
como tema de capa Anlise de Ponto de Funo. Para isto, trazemos um artigo
projees.
Inicialmente no se tem conhecimento de todas as caractersticas do produto
bem como da sua real dimenso, por esse motivo necessrio utilizar tcnicas
APF (Anlise de Ponto de Funo) uma delas. Esse mtodo no tem como
objetivo realizar estimativas de prazo, custo e esforo para implementao
de sistema, mas sim avaliar o tamanho de um sistema em termos de suas
funcionalidades. Resulta desta avaliao o tamanho funcional do sistema
expresso em Pontos de Funo (unidade de medida do mtodo). A partir do
tamanho funcional, podem ser derivadas estimativas adicionais, como tempo
e custo.
NDICE
Agilidade
06 - Requisitos para agilidade no desenvolvimento de software
Flavio S. Mariotti
Engenharia Aplicada
20 - Estimativas de tamanho em projetos de software utilizando pontos de funo
Jhoney da Silva Lopes e Jos Luis Braga
Engenharia Fundamentos
32 - CMMI Uma viso Geral
Lenildo Morais
Arquitetura e Desenvolvimento
42 - Introduo ao desenvolvimento de aplicaes de realidade aumentada
Andr Luis Tosato, Victor Angelo Marcorin, Thiago Salhab Alves e Paulo Barreto da Silva
Agilidade
Nesta seo voc encontra artigos voltados para as prticas e mtodos geis.
Flavio S. Mariotti
flaviomariotti@gmail.com
desenvolvimento de software
se tornou um dos fatores mais
importantes da tecnologia.
O software que produzido hoje se torna rapidamente um item fundamental
para organizaes e usurios finais no
intuito de acelerar e auxiliar a execuo
de diferentes tarefas.
Nos ltimos 50 anos diferentes grupos,
especialistas e pesquisadores da rea de
Resumo DevMan
Este artigo discute o tema requisitos para agilidade
no desenvolvimento de software. Para isso, ser
apresentado, sob diferentes perspectivas, como
a questo da agilidade pode ser considerada em
equipes de projetos de software que trabalhem
considerando os princpios da agilidade.
agilidade
Nota do DevMan 1
Scrum: Scrum um framework para gerenciamento de projetos geis muito
utilizado na rea de desenvolvimento de software. Uma das principais caractersticas
do Scrum permitir o desenvolvimento de produtos complexos de uma forma
incremental e iterativa, contribuindo para decompor um grande produto complexo,
em pequenos subprodutos mais simples, mais rpidos e mais fceis de serem
desenvolvidos e entregues. No Scrum estas iteraes so chamadas de Sprints, e uma
caracterstica marcante de sua estrutura e aplicao o controle sobre os trabalhos
realizados, e a possibilidade de correo e adaptao rpida, permitindo que a equipe
altere sua forma de agir ou de pensar o mais breve possvel, evitando que problemas
ou erros causem danos maiores ao projeto.
Nota do DevMan 2
XP: O eXtreme Programming ou XP um modelo gil de desenvolvimento de
software criado em 1996 por Kent Bech no Departamento de Computao da
montadora de carros Daimler Chrysler. Ele possui muitas diferenas em relao
a outros modelos, podendo ser aplicado a projetos de alto risco e com requisitos
dinmicos (vagos ou em constante mudana), conduzidos por equipes de tamanho
mdio e pequeno.
Como todo mtodo gil, o XP procura responder com velocidade s mudanas nas
especificaes do projeto, com base em princpios, valores e prticas bem definidos.
Este mtodo enfatiza o desenvolvimento rpido garantindo a satisfao do cliente
e cumprindo as estimativas do projeto. O XP baseia-se em cinco valores para guiar
o desenvolvimento: Comunicao, Coragem, Feedback, Respeito e Simplicidade.
Segundo Beck, o mtodo oferece ainda 12 prticas, a saber: i) Jogo do planejamento;
ii) Verses pequenas; iii) Metfora; iv) Projeto simples; v) Teste; vi) Refatorao; vii)
Programao em pares; viii) Propriedade coletiva do cdigo; ix) Integrao contnua;
x) 40 horas de trabalho semanal; xi) Cliente presente; e xii) Padres de codificao.
Nota do DevMan 3
FDD: O FDD uma metodologia que serve tanto para o gerenciamento de projetos
quanto para a Engenharia de Software. Isto a torna mais complexa quando comparada
com outras metodologias geis. Por exemplo, o RUP (Rational Unified Process) da IBM,
uma metodologia considerada tradicional, trata o gerenciamento de projetos como
uma disciplina dentro do seu framework, j que o seu foco est na Engenharia de
Software em si. J o SCRUM, tem no papel do Scrum Master, uma figura parecida com
a de um Gerente de Projetos formal, mas que tem seu foco na facilitao dos trabalhos
por parte da equipe tcnica. O foco dessa metodologia est na auto-organizao da
equipe e, para isso, so necessrios analistas seniores.
O ponto forte da metodologia FDD est na capacidade de realizar features. Para esta
metodologia, uma pequena feature possui um alto valor para o cliente. O exemplo de
uma feature est em um caso de uso com a funo de calcular a mdia de salrio dos
gestores, ou de realizar um relatrio integrado de vendas e assim por diante. Veja
que no estranha a meno do termo caso de uso para exemplificar uma feature,
j que a ideia similar. Essa descrio do requisito que o FDD chama de feature so
os casos de uso no RUP e as estrias utilizadas no XP. O site www.agilemodeling.
com/essays/fdd.htm destaca que uma lista de features inicialmente indicada para
que seja elaborado o planejamento do projeto com estimativas de esforo para sua
execuo. Basicamente, esta a proposta do FDD.
Desenvolvedores e Testadores
A equipe se completa com os desenvolvedores e testadores.
Geralmente o tamanho de uma equipe gil limitada entre
4 at 6 desenvolvedores e de 1 at 3 testadores, idealmente
trabalhando juntos.
Desenvolvedores
Figura 1. Ilustrao do nvel de equipes
Proprietrio do produto
Como j definido no Scrum, o proprietrio do produto tem
como caracterstica atuar como a nica funo arbitrria, ou
seja, esse papel responsvel por determinar e priorizar as
necessidades dos utilizadores e gerenciar os itens acumulados
(product backlog). importante lembrar que esse artigo no
descreve Scrum como metodologia a ser seguida. Independente da metodologia que sua equipe adotou como gil,
recomendada a aplicao da funo proprietrio do produto,
j que esse papel vem mostrando verdadeiros avanos na
simplificao do trabalho exercido pela equipe.
Contudo, as responsabilidades do proprietrio do produto so ainda maiores. Segundo o princpio Agile Manisfesto
#4 - Homens de negcio e desenvolvedores devem trabalharem
juntos diariamente durante o andamento do projeto. Com base
nesse princpio, o proprietrio do produto a funo ideal
para orientar a equipe e participar diariamente com a mesma
em suas atividades no intuito de direcionar e definir suas
prioridades.
Podemos dizer ento que o proprietrio do produto o principal responsvel pela definio e priorizao de requisitos.
Portanto, a funo proprietrio do produto responsvel pelas
seguintes atribuies:
Trabalhar com todos stakeholders (gerentes, analistas, clientes
e interessados) do projeto para determinar os requisitos;
Priorizar as atividades com base no valor relativo do
cliente;
Definir motivos para iterao, atuar e elaborar relatrios,
participar e revisar processos buscando melhoria contnua.
Testadores
Os testadores so parte fundamental e integrante da equipe
gil. Os testadores estaro presentes logo no primeiro cdigo a
ser liberado, e se faz necessrio passar pela aplicao de testes
e aprovao do time de testadores. A principal responsabilidade atribuda a essa funo a liberao do cdigo fonte para
produo ou continuidade do fluxo de trabalho. de extrema
importncia o cumprimento desse requisito para se obter
qualidade e agilidade no desenvolvimento de software. Outras
responsabilidades atribudas a essa funo so:
Criar casos de testes e aprovao;
Interface com os desenvolvedores e proprietrio do produto
para garantir e certificar o entendimento das funcionalidades
requeridas;
Executar os testes de aprovao;
Desenvolver teste de aprovao para a atualizao de componentes no ambiente de produo.
Responsvel gil
Especialistas
agilidade
Conceito gil
Sabendo que o intuito de desenvolver software com agilidade
no exclui a principal necessidade de criar aplicativos eficientes que agregue valor ao cliente, precisamos assegurar que
as equipes geis estejam aplicando modelos simples, porm
abrangendo todos os requisitos possveis. Uma vez escutei uma
frase que dizia: O difcil fazer o simples, o complexo todo mundo
faz. Resumindo, o significado dessa frase : neste momento
precisamos garantir que a equipe no esteja sendo sobrecarregada com requisitos desnecessrios que no agregam valor
ao cliente e no geram resultado para a equipe.
Histrias de usurios
Essa funo originada do modelo XP. Histrias de usurios (User Stories) vem com a proposta de substituir o famoso
requisitos de software. Este item gil atualmente faz parte
dos modelos Scrum, XP e na maioria das outras metodologias
geis. A responsabilidade e definio desse usurio se resume
em: Uma breve descrio dos principais objetivos que levam as
necessidades dos clientes atravs de fluxo de valor.
Ao contrrio de requisitos que definem o que o sistema deve
fazer na maioria das vezes como obrigao contratual, histrias
de usurios so breves declaraes de usurios expressando
suas intenes que descrevem um recurso que o sistema precisa fazer para alguns usurios ou departamento.
A principal proposta dessa funo transmitir equipe de
desenvolvimento o que realmente traz benefcios ao usurio
agregando valor ao produto, ensinando a equipe a se concentrar no que realmente agrega valor ao negcio do usurio.
Backlog
A ltima funo que integra uma equipe gil o backlog.
O produto backlog consiste em acumular todos os recursos
necessrios a serem implementados, identificados pela equipe
gil com base em todas as histrias de usurios.
A responsabilidade dessa funo acumular os itens a serem
desenvolvidos com base nas histrias dos usurios. Embora
existam diversas tarefas a serem executas como: itens de configurao, requisitos de infraestrutura, entre outras atividades,
o principal objetivo do backlog concentrar a ateno da equipe
nas histrias de usurio.
Equipes recursos
Uma equipe de recursos ou em ingls Feature Team, basicamente um time com diferentes habilidades, ou seja, uma
equipe composta com profissionais de diversas competncias
para desenvolver um recurso de ponta a ponta.
Para ilustrar a diferena entre equipes de recursos e equipes
de componentes, vamos imaginar um cenrio tpico nos projetos corporativos. Em uma arquitetura como a apresentada na
Figura 2 em que as equipes se organizam em torno de camadas,
teramos neste momento seis equipes, sendo uma para cada
camada. O modelo organizacional por equipes de componentes
dirige o time para uma variedade de problemas como:
Nvel de comunicao reduzida em todas as camadas;
Trabalha com o sentimento de que o projeto apresentado no
contrato o suficiente;
Finaliza o desenvolvimento da camada sem um produto
potencialmente utilizvel.
Equipes componentes
Embora seja fortemente recomendado o uso de equipes de
recursos, existem situaes em que a equipe de componentes
apropriada. Como seu prprio nome, uma equipe de componente aquela que desenvolve um software para ser entregue
a uma outra equipe do projeto, em vez de diretamente ao
cliente. Um exemplo seria uma equipe de componente desenvolvendo uma camada de mapeamento entre a aplicao e o
banco de dados.
O gerenciamento de equipe de componentes nem sempre
uma tarefa fcil. Geralmente as equipes de componentes
trabalham paralelas s equipes de recursos. importante
garantir que a equipe de componentes tenha conhecimento
10
A equipe de sistemas
Como visto, as equipes geis so os motores de produo
de um software. Aprendemos que cada equipe precisa ter
habilidades necessrias para especificar, projetar, codificar e
testar os componentes e recursos de seu domnio.
agilidade
Roteiro ou Roadmap
A equipe de gerenciamento e liberao no final de cada frum
resulta nos dados do planejamento da verso que so usados
para atualizar a planilha de roadmap.
O roteiro deve ser composto com as datas planejadas para
os lanamentos de cada soluo, cada qual com o consultor de
recursos priorizando conforme a necessidade do negcio. A
Figura 4 representa o modelo de um roadmap.
O roteiro est sujeito a alteraes em qualquer fase do produto, essas alteraes podem ser causadas por questes como:
prioridade de negcio, fatores tcnicos entre outros fatores
imprevisveis, portanto, no se deve fazer compromissos externos com planos alm do prximo lanamento.
Requisitos no-funcionais
A viso tambm precisa conter os requisitos no-funcionais,
tais como: confiabilidade, desempenho, qualidade, compatibilidade e etc. Os requisitos no-funcionais devem ser descritos no
11
importante que essa administrao ocorra de forma contnua em cada um dos nveis apresentados.
Requisitos de investimento
12
Feedback
eu
sobre e
s
Links
D
s
edio
ta
Concluso
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
Fbio Cruz
fabiorcruz@gmail.com
Resumo
Para se gerenciar projetos de desenvolvimento de
softwares preciso estar constantemente atualizado com as informaes do projeto, e ao mesmo
tempo comunicar a todos os interessados com a
frequncia necessria. Este artigo mostra como
aliar os artefatos de uma abordagem gil como o
Scrum ao gerenciamento de projetos tradicional,
gerando benefcios e melhorando a comunicao
do projeto em vrias direes.
13
ltimas realizaes do perodo, principais riscos, situao financeira atual do projeto, entre outras informaes relevantes
que podem variar um pouco de acordo com o projeto e com a
necessidade de informao das gerncias.
Quando o projeto est no incio, ou quando est tudo bem
controlado e o cliente satisfeito, a comunicao visando posicionar e informar costuma ser desvalorizada, feita de uma
forma resumida demais e deixando de ser um valor real para
quem as recebe, ou seja, deixando de informar aos interessados dados importantes sobre o projeto. Este comportamento
faz parecer que a comunicao no necessria quando tudo
est indo bem.
Por outro lado, quando o projeto est com problemas, ou
em fases crticas, um simples relatrio de situao do projeto
(Status Report) pode ser um drama para um gerente ou para
uma equipe despreparada, e que principalmente no estava
informando e posicionando desde o incio do projeto. Sendo
assim, o primeiro recado que a comunicao deve ser realizada sempre, durante todo o ciclo de vida do projeto.
A tarefa de comunicar e informar sobre o andamento do
projeto deve ser simples, e obrigatria para qualquer gerente.
Porm, esta atividade que deveria ser simples, pode se tornar
um pesadelo pelo simples fato da equipe de gerenciamento
no manter informaes atualizadas e bem documentadas
sobre o projeto. Esta falta de informao centralizada faz com
a equipe tenha que sair correndo atrs dos dados no dia da
apresentao do Status Report, ou aps a ligao da gerncia
snior pedindo informaes atualizadas.
Buscando evitar este tipo de problema e facilitar a comunicao geral de um projeto, este artigo se prope a apresentar
um modelo de unio de alguns artefatos de comunicao do
gerenciamento tradicional, com outros existentes no gerenciamento gil, mais especificamente no framework do Scrum,
com o objetivo de interligar todas as partes interessadas de um
projeto atravs de informaes corretas e bem distribudas.
14
Scrum. Porm, no iremos comparar o Scrum a nenhuma abordagem tradicional especfica, mas sim tratar o gerenciamento
de projetos como uma rea de conhecimento geral, com seus
aspectos comuns em vrias abordagens de mercado.
A primeira parte tratou de papis e responsabilidades, a
segunda falou das prticas, ferramentas e tcnicas. Por fim,
nesta terceira parte, falaremos dos artefatos existentes nas duas
abordagens, agindo de forma complementar e influenciando
diretamente no resultado da comunicao do projeto.
Gerenciamento d e Projetos
Artefatos do Scrum
Estrias do usurio
Uma estria do usurio (user story) uma descrio resumida
que representa um item do Backlog, devendo ser sempre do
ponto de vista do usurio final do produto. Em alguns casos um
item de Backlog poder dar origem a mais de uma estria, por
questes de entendimento, ou para uma melhor visualizao ou
at por uma estratgia de abordagem gerencial e de execuo.
Um item de Backlog pode possuir diversos documentos associados a ele, alm de especificaes detalhadas. Entretanto,
uma estria resume em poucas palavras o que a funcionalidade deve fazer, servindo como um timo item para controle e
acompanhamento. aqui que comeamos a ter artefatos para
melhorar a comunicao, principalmente no nvel gerencial.
Um exemplo para um fcil entendimento um cadastro
de livros, que um item de Backlog possuindo prottipo de
tela, modelo de dados, especificao de regra de negcio e
caso de uso. Estes so todos os documentos que compem o
item de Backlog cadastro de livros, porm, para controle e
Tarefas
Na primeira parte desta reunio de planejamento, o time
entende as estrias e determina o tamanho de cada uma. Esta
estimativa servir como artefato para medir o desempenho
dos trabalhos no futuro. J na segunda parte, o time detalha
melhor as estrias, decompondo-as em tarefas menores.
Estas tarefas devem ter um tamanho apropriado para que
possam ser determinadas em horas para concluso, e devem
ser independentes de outras atividades para que sejam consideradas finalizadas.
O resultado desta decomposio das estrias em tarefas
menores ser um dos mais importantes artefatos de controle
que usaremos ao longo do projeto, pois estas tarefas menores
sero utilizadas para que toda a equipe do projeto saiba o que
precisa ser realizado, o que est sendo trabalhado e o que j
foi concludo.
Uma estria uma macro atividade, que resume um conjunto
de trabalhos. Este conjunto de trabalhos poder ser ilustrado
atravs de vrias tarefas associadas, que por sua vez vo compor a estria, como ilustrado na Figura 2.
15
16
Grfico de Burndown
A Sprint a principal iterao no Scrum, e ela nos ajuda a dimensionar os trabalhos e controlar o projeto em ciclos menores
Gerenciamento d e Projetos
de at um ms. Maiores detalhes sobre as Sprints podem ser encontrados na Edio 42 da Engenharia de Software Magazine.
A Sprint contm um conjunto de trabalhos a ser realizado em
um determinado espao de tempo, por isso ela muito til para
acompanhar a evoluo do projeto. Porm, como fazer este acompanhamento e saber se o projeto est atrasado ou adiantado?
A resposta no to difcil quanto parece, principalmente
depois de termos falado sobre o Backlog da Sprint, estrias
e tarefas.
Todas as tarefas que precisam ser realizadas dentro da Sprint
esto no taskboard, no entanto apenas olhar para o quadro de tarefas no diz a equipe de gerenciamento se o projeto est em dia ou
no. Para resolver este problema entra em ao o ltimo artefato
do Scrum que nos interessa aqui, o grfico de Burndown.
O Scrum como abordagem gil se preocupa com o esforo
restante para se terminar o trabalho, e no com o que j foi
concludo. Em outras palavras, o que importa no controle
do Scrum a quantidade de tarefas que ainda precisam ser
completadas at o final da Sprint.
O grfico de Burndown representa visualmente a soma
das estimativas dos esforos restantes para se terminar os
trabalhos contidos no Backlog da Sprint. Por isso, olhando o
grfico ilustrado na Figura 4, temos esquerda uma coluna
com a quantidade de trabalho que precisa ser completada,
sendo que no primeiro dia da Sprint o trabalho restante ser
igual ao trabalho total.
Os dias esto na linha inferior do grfico, e o acompanhamento simples. Em resumo, o dia atual deve ter menos trabalho
restante do que o dia anterior. Visualmente podemos fazer uma
comparao fcil que nos ajudar muito na identificao da
evoluo dos trabalhos, permitindo saber se esto adiantados
ou atrasados, da seguinte forma:
1. No primeiro dia da Sprint, monte o grfico colocando na
coluna da esquerda a quantidade de trabalho necessrio para
completar a Sprint;
2. Na linha inferior coloque os dias em que a Sprint ocorrer;
3. Por fim, trace uma linha ligando o total de trabalhos que
precisam ser completados (coluna esquerda) ao ltimo dia da
Sprint ( direita). Esta linha representar a velocidade mdia
do time para atingir a meta da Sprint;
Comunicao visual
Seguindo as etapas descritas, e principalmente usando os
artefatos sugeridos pelo Scrum, teremos uma comunicao
visual muito eficiente. A equipe de execuo e gerncia do
projeto, bem como a gerncia snior que tenha acesso ao quadro de tarefas e ao grfico de Burndown, ter total acesso ao
andamento do projeto.
Informaes como quantidade de trabalho estimado e realizado, equipe alocada, planejamento, imprevistos, velocidade,
riscos e atrasos podero ser visualizados por todos, mantendo
todas as informaes relevantes claras e transparentes.
O impacto visual tem ainda uma caracterstica importantssima. Provavelmente muitas pessoas olham para estas evidncias destacadas e pensam: Mas com isso os meus erros e os da
minha equipe ficaro a mostra!. Exatamente! E por isso que
este modelo de trabalho se torna to interessante.
Os problemas e falhas realmente ficaro evidenciados, se
tornando um problema para os times que no buscam melhorar
e corrigir seus defeitos. Para os demais, os resultados sero os
melhores possveis, porque a prpria equipe buscar a cada
iterao (Sprint) melhorar os seus resultados.
Os bons times buscaro transformar o taskboard em uma
evidncia de seu bom trabalho, e no em um problema que
mostra para todos os seus erros. Esta qualidade que o Scrum
proporciona pode ser entendida como um processo de melhoria contnua.
Comunicao formal
Com os trabalhos sendo realizados conforme as definies
do tradicional plano de gerenciamento do projeto e seguindo
as cerimnias, regras e artefatos do Scrum descritos at agora,
17
18
Gerenciamento d e Projetos
Concluso
Links
Introduo ao Scrum, blog FabioCruz.com
www.fabiorcruz.wordpress.com/outros/introducao
Introduo ao PMBOK, blog FabioCruz.com
www.fabiorcruz.wordpress.com/pmbok%c2%ae/introducao
Scrum Guide 2011, escrito por Ken Schwaber e Jeff Sutherland
www.scrum.org/scrumguides
Feedback
eu
www.devmedia.com.br/esmag/feedback
19
sobre e
s
D
s
edio
ta
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
20
Resumo
Estimativa de software com derivaes em custo, prazo e esforo uma necessidade comum entre as empresas de TI. Nesse contexto, o objetivo deste artigo
apresentar de forma simples, por meio de exemplos,
o uso de um mtodo poderoso para a soluo destes
problemas recorrentes, a APF (Anlise de Ponto de
Funo).
Anlise de Ponto de Funo um mtodo de medio
do tamanho funcional de um software, com base em
operaes extradas dos requisitos funcionais. A partir
dessa medio inicial de tamanho, derivam-se outras
medidas como, por exemplo, o tempo necessrio para
desenvolvimento, e uma estimativa inicial de custos.
APF tem por definio medir o que o software deve
fazer, e no como ele deve ser construdo, portanto o
processo de medio fundamentado em uma avaliao padronizada dos requisitos lgicos do usurio.
Na fase inicial de um projeto, a necessidade em obter o custo, prazo e o esforo observado em todas
as empresas, pois as mesmas precisam gerar um
oramento para os seus clientes e avaliar uma srie
de projees. Este artigo organiza de forma simples e introdutria conhecimentos sobre a Anlise
de Ponto de Funo.
Inicialmente no se tem conhecimento de todas as
caractersticas do produto bem como da sua real
dimenso, por esse motivo necessrio utilizar
tcnicas de extrao de requisitos para realizar um
levantamento inicial dos mesmos e compreender
melhor o problema. Os requisitos so condies, caractersticas ou capacidades necessrias para atingir
uma finalidade, categorizados na implementao
de sistemas em funcionais e no funcionais como
forma de estabelecer critrios de qualidade.
Uma vez definidos os requisitos, pode-se ento
avaliar o tamanho do sistema em termos de suas
funcionalidades. Existem vrios mtodos de estimativa, a APF (Anlise de Ponto de Funo) uma
delas. Esse mtodo no tem como objetivo realizar
estimativas de prazo, custo e esforo para implementao de sistema, mas sim avaliar o tamanho
de um sistema em termos de suas funcionalidades.
Resulta desta avaliao o tamanho funcional do
sistema expresso em Pontos de Funo (unidade
de medida do mtodo). A partir do tamanho funcional, podem ser derivadas estimativas adicionais, como tempo e custo.
Engenharia de Software Magazine - Estimativas de tamanho em projetos de software utilizando pontos de funo
Gerenciamento d e Projetos
Nota do DevMan 2
Funcionalidade: Funcionalidade o conjunto de tarefas fornecidas pelo sistema para
poder realizar transao, processamento e armazenamento dos dados dos usurios.
Como foi dito, a APF um mtodo que visa medir o tamanho funcional de um software do ponto de vista do usurio e
possui como unidade de medida o ponto de funo (PF) (ler
Nota do DevMan 1).
Nota do DevMan 1
Usurio: Em Anlise de Ponto de Funo, usurio possui um conceito mais amplo:
qualquer entidade que se relacione com o sistema ou que produza um nus ao mesmo. Ex: Pessoa, aplicao, leis, restries, etc.
importante perceber que para a APF o usurio no somente a pessoa que interage com o sistema.
21
Nota do DevMan 3
Requisitos: So as necessidades e caractersticas que o sistema deve ter para atingir as expectativas do cliente. A extrao dos requisitos consiste em uma parte crtica
na elaborao de uma proposta, ela parte determinante do sucesso ou fracasso de
um projeto.
Nota do DevMan 4
Funes de Converso: Para um entendimento considere o exemplo: um sistema
A possui uma lista de funcionrios cadastrados, o sistema B sendo contado dever
incluir todos esses funcionrios em sua base de dados, essa funcionalidade ser disparada uma nica vez que durante a instalao do sistema, sendo caracterizada como
funo de converso.
Nota do DevMan 5
Escopo do Projeto: Escopo do projeto o trabalho que precisa ser realizado para
entregar um produto, servio ou resultado com as caractersticas e funes especificadas (PMBOK, 2004), o escopo da contagem tudo aquilo que deve ser contado.
Aplicao
Entende-se por contagem do tipo aplicao um software
instalado, ou seja, a contagem aps o trmino de um projeto
de desenvolvimento. Neste caso, no se leva em considerao
as funes do tipo converso.
22
Engenharia de Software Magazine - Estimativas de tamanho em projetos de software utilizando pontos de funo
Gerenciamento d e Projetos
Nota do DevMan 6
Aplicao Contada: Como visto, um projeto pode ser composto por vrias aplicaes internas que interagem umas com as outras, conforme a Figura 2. Quando um
projeto possui mais de uma aplicao, diz-se da aplicao sendo contada a que no
momento est sendo analisada, j projetos que possuem apenas uma aplicao, o
termo aplicao sendo contada refere-se a todo o projeto.
No exemplo:
Dados armazenados na aplicao sendo contada e utilizados
por uma aplicao externa. Nesse caso a sua aplicao possui
um ALI e outra aplicao reconhece esses dados vindos de
um AIE.
Determinao da complexidade e da contribuio
Complexidade o grau de influncia que um arquivo lgico
tem para o tamanho funcional do sistema. A contribuio
a converso do grau de complexidade em pontos de funo.
A complexidade calculada a partir da contagem dos tipos de
dados e dos tipos de registro.
Tipos de dados (TD)
um campo no recursivo de dado, nico e reconhecido pelo
usurio, em uma viso geral e limitada. Por exemplo, poderiam
ser os atributos de uma tabela.
Tipos de Registro (TR)
caracterizado por ser um subgrupo de dados.
Em uma anlise mope, quando um agrupamento de tabelas
reconhecido pelo usurio como um nico arquivo lgico,
ALI ou AIE, a tabela reconhecida pelo usurio contada e as
demais se tornam simplesmente tipos de registro, ou seja, essas
tabelas extras no pertencem viso do negcio, pois o usurio
no as reconhece. Mas seus atributos so reconhecidos e, por
este motivo, devem gerar um impacto na contagem, sendo
denominado subgrupo de dados. Esses campos pertencentes
viso do negcio e reconhecidos pelo usurio so atribudos
aos demais arquivos lgicos que esto relacionados com esses
tipos de registro.
Considera-se como exemplo uma especializao, onde a
Figura 3 representa essa especializao na viso do usurio,
com os seguintes campos: id_func (cdigo de identificao do
funcionrio), salrio, cro (nmero do registro para dentistas),
bolsa (bonificao no salrio dos auxiliares).
Na modelagem, foram separados os diferentes tipos de funcionrios, como pode ser visto na Figura 4.
Neste exemplo contam-se os funcionrios como uma ALI ou
AIE, pois como foi apresentado, o usurio no reconhece funcionrios como entidades diferentes, mas para a modelagem o
desenvolvedor optou por separar estes funcionrios devido aos
atributos que os especializam. Como estas entidades criadas na
viso do desenvolvedor possuem atributos reconhecidos pelo
23
Tabela de contribuio
A tabela de contribuio padronizada pelo IFPUG, e todos
os usurios do mtodo de anlise de pontos de funo utilizam
os mesmos valores.
Aps identificar a complexidade de cada ALI e AIE do
sistema, possvel determinar a contribuio desses para a
contagem dos pontos de funo.
Aps verificar na Tabela 1 a complexidade do ALI ou AIE, a
tarefa para estabelecer a contribuio muito simples, basta
saber a complexidade do seu arquivo lgico e se o mesmo
um ALI ou AIE e verificar o valor na Tabela 2.
Tipo de Funo
Baixa
Mdia
Alta
7 PF
10 PF
15 PF
5 PF
7 PF
10 PF
Tipos de Registro
Tabela de complexidade
A tabela de complexidade padronizada pelo IFPUG, todos
os usurios do mtodo de anlise de pontos de funo utilizam
os mesmos valores.
Aps o entendimento sobre tipo de dados e tipo de registro,
os mesmos sero utilizados para definir a complexidade do
arquivo lgico. Realiza-se a contagem dos tipos de registro e
tipos de dados de cada arquivo lgico, depois se verifica na
Tabela 1 o valor de cada um e o intervalo que pertence. Com
isso, define-se a ALI ou AIE como sendo de complexidade
baixa, mdia ou alta.
1
25
>5
Tipos de Dados
< 20
20 50
Baixa
Baixa
Baixa
Mdia
Mdia
Alta
24
> 50
Mdia
Alta
Alta
Engenharia de Software Magazine - Estimativas de tamanho em projetos de software utilizando pontos de funo
Gerenciamento d e Projetos
Descrio
Tipo
Qtd. TDs
Qtd. TRs
Complexidade
Usurio
ALI
Baixa
Cliente
ALI
Baixa
Carro
ALI
Baixa
Tabela 5. Complexidade
Tipo
Usurio
ALI
Cliente
ALI
Carro
ALI
Descrio
Na Figura 7 as tabelas Usurio, Cliente e Carro foram caracterizadas como arquivo lgico interno e Aluga foi definida
como tipo de registro de Cliente e Carro, pois a mesma no
reconhecida pelo usurio, mas os seus atributos so.
b) Faz-se uma anlise da todas as tabelas que no esto na
viso do negcio:
Se a tabela no pertence viso do negcio, mas os seus
tipos de dados pertencem, deve-se cont-la como um tipo de
registro para cada arquivo lgico relacionado a ela, e atribuir
os seus tipos de dados a cada um deles;
Se nem a tabela nem os seus tipos de dados pertencem viso
do negcio, deve ser descartada da contagem.
A tabela Aluga foi considerada um tipo de registro, pois na
viso do negcio, os campos hora_aluguel e data_aluguel so
reconhecidos pelo usurio e por este motivo eles foram somados
aos tipos de dados de Cliente e Carro, conforme a Tabela 4.
Descrio
Tipo
Qtd. TDs
Qtd. TRs
Usurio
ALI
Cliente
ALI
Carro
ALI
Tipo
Qtd. TDs
Qtd. TRs
Complexidade
Contribuio
Usurio
ALI
Baixa
Cliente
ALI
Baixa
Carro
ALI
Baixa
21
25
26
Arquivo Referenciado (AR)
Um arquivo referenciado todo arquivo lgico lido, pode ser
um ALI ou AIE, ou todo arquivo lgico mantido, nesse caso
s pode ser um ALI. Um tipo de registro no um arquivo
lgico, ele pertence a um arquivo lgico. No se deve contar
tipos de registro e arquivos lgicos lidos vrias vezes. Esses
so contados apenas uma nica vez.
Engenharia de Software Magazine - Estimativas de tamanho em projetos de software utilizando pontos de funo
Gerenciamento d e Projetos
Arquivos Referenciados
Tabela de complexidade
A tabela de complexidade padronizada pelo IFPUG, todos
os usurios do mtodo de anlise de pontos de funo utilizam
os mesmos valores.
Aps o entendimento sobre tipo de dado e arquivo referenciado, pode-se utiliz-lo para definir a complexidade do processo
elementar. Realiza-se a contagem dos tipos de dados e dos
arquivos referenciados de cada processo elementar, depois
verifica-se na Tabela 7 ou na Tabela 8 o valor de cada um e o
intervalo a que ele pertence, com isso definindo a EE, SE ou
CE como sendo de complexidade baixa, mdia ou alta.
Tipos de Dados
<5
5 15
> 15
<2
Baixa
Baixa
Mdia
2
>2
Baixa
Mdia
Mdia
Alta
Alta
Alta
Arquivos
Referenciados
<2
23
>3
Tipos de Dados
<6
6 19
Baixa
Baixa
Baixa
Mdia
Mdia
Alta
> 19
Mdia
Alta
Alta
Baixa
Mdia
Alta
Entrada Externa
3 PF
4 PF
6 PF
Sada Externa
4 PF
5 PF
7 PF
Consulta Externa
3 PF
4 PF
6 PF
27
Descrio
Tipo
Descrio
Tipo
Qtd. TDs
Qtd. ARs
Complexidade
Incluir Cliente
EE
Incluir Cliente
EE
Baixa
Excluir Cliente
EE
Excluir Cliente
EE
Baixa
Alterar Cliente
EE
Alterar Cliente
EE
Baixa
Incluir Usurio
EE
Incluir Usurio
EE
Baixa
Excluir Usurio
EE
Excluir Usurio
EE
Baixa
Alterar Usurio
EE
Alterar Usurio
EE
Baixa
Incluir Automveis
EE
Incluir Automveis
EE
Mdia
Excluir Automveis
EE
Excluir Automveis
EE
Baixa
Alterar Automveis
EE
Alterar Automveis
EE
Baixa
Registrar Locao
EE
Registrar Locao
EE
Baixa
Finalizar Locao
EE
Finalizar Locao
EE
Baixa
SE
SE
Baixa
CE
CE
Baixa
CE
CE
Baixa
CE
CE
Baixa
CE
CE
Mdia
CE
CE
Baixa
CE
CE
Baixa
Tipo
Qtd. TDs
Qtd. ARs
Descrio
Tipo
Qtd. TDs
Contribuio
Incluir Cliente
EE
Incluir Cliente
EE
Baixa
Excluir Cliente
EE
Excluir Cliente
EE
Baixa
Alterar Cliente
EE
Alterar Cliente
EE
Baixa
Incluir Usurio
EE
Incluir Usurio
EE
Baixa
Excluir Usurio
EE
Alterar Usurio
EE
Excluir Usurio
EE
Baixa
Incluir Automveis
EE
Alterar Usurio
EE
Baixa
Excluir Automveis
EE
Incluir Automveis
EE
Mdia
Alterar Automveis
EE
Excluir Automveis
EE
Baixa
Registrar Locao
EE
Alterar Automveis
EE
Baixa
Finalizar Locao
EE
Registrar Locao
EE
Baixa
SE
Finalizar Locao
EE
Baixa
CE
CE
Baixa
CE
CE
Baixa
CE
CE
CE
Baixa
CE
Baixa
Mdia
Baixa
Baixa
28
Engenharia de Software Magazine - Estimativas de tamanho em projetos de software utilizando pontos de funo
57
Gerenciamento d e Projetos
No ser feita anlise para esta etapa, uma vez que a mesma
instituda opcional pelo IFPUG e pode aumentar o erro na
estimativa.
Para o nosso exemplo, deve-se considerar:
Valor de ponto de funo no ajustado (VAF) = 1;
Contribuio
21 PF
57 PF
78 PF
Onde:
DFP: Nmero de pontos de funo do projeto de desenvolvimento;
UFP: Nmero de pontos de funo no ajustados das funes disponveis aos usurios aps a
instalao;
CFP: Nmero de pontos de funo no ajustados das funes de converso, ou seja, as funes
transitrias que so inutilizadas aps a instalao;
VAF: Valor do fator de ajuste.
Tabela 15. Tabela da frmula dos pontos de funo de projeto de
desenvolvimento
Derivaes
Neste ponto j se possui o tamanho funcional da aplicao,
agora sero apresentadas as derivaes que podem ser realizadas com ele.
29
Produtividade Mnima
Java
15 h/PF
10 h/PF
PHP
11 h/PF
JSP
13 h/PF
HTML
7 h/PF
Cold Fusion
11 h/PF
Delphi
9 h/PF
Crystal reports
9 h/PF
PL/SQL
9 h/PF
Visual Basic
9 h/PF
Utilizar bases de editais (sem o conhecimento sobre o projeto) ou de outras empresas, constitui um risco muito grande,
pois a produtividade intrnseca de cada empresa, pois essas
possuem funcionrios e processos diferenciados.
Custo
A estimativa do custo de um projeto a informao primordial na hora de elaborar uma proposta, este no pode exceder
30
s expectativas do cliente e nem ter um valor inferior ao necessrio para o funcionamento da empresa.
Como na determinao do esforo, o custo tambm estimado a partir de dados da empresa, neste caso necessrio ter o
conhecimento do custo da hora da equipe de desenvolvimento
ou o valor de um ponto de funo para sua empresa.
O custo de um Ponto de Funo dado por:
Custo por hora vezes a quantidade de horas necessrias para
produzir um Ponto de Funo (C/H x H/PF).
Prazo
O prazo um fator crtico a ser determinado pois, para
estimativas, pode-se supor que o prazo uma funo linear
com o recurso, o que uma suposio falha. Por exemplo, se
um projeto desenvolvido por dois desenvolvedores gasta um
prazo de dois meses, alocar mais dois desenvolvedores para
o projeto no necessariamente implica que o mesmo ir durar
apenas um ms.
A anlise emprica mostra que essa linearidade no existe,
uma mulher demora nove meses para gerar um beb, nove mulheres no geram um beb em um ms (VAZQUEZ, 2009).
Quanto maior o tamanho funcional de um projeto, maior ser
o prazo e maior ser o erro. Para projetos pequenos o erro
aceitvel, mas novamente volta-se ao ponto de que a melhor
maneira de evitar esses erros possuir uma base histrica dos
projetos desenvolvidos.
O prazo derivado da seguinte forma:
Prazo a relao de esforo por recurso (Prazo= Esforo/
Recurso).
Engenharia de Software Magazine - Estimativas de tamanho em projetos de software utilizando pontos de funo
Gerenciamento d e Projetos
Prazo
Foi definido que o esforo necessrio para produzir a aplicao de 390 horas ou trs meses. Suponha que esta empresa
possua dois funcionrios habilitados a desenvolver o projeto
na tecnologia estabelecida.
Utilizando dessas informaes conclui-se que o prazo
para a entrega do sistema ser de um ms e meio, conforme
a Tabela 20.
Referncias
1. VAZQUEZ,C.E. , SIMES,G.S. , ALBERT,R.M. Anlise de ponto de funo medio, estimativa e
gerenciamento de projetos de software. So Paulo, Editora rica, 2009
Consideraes finais
Elaborao
20%
30%
Construo
65%
50%
Transio
10%
10%
Feedback
eu
www.devmedia.com.br/esmag/feedback
31
sobre e
s
6. DEKKERS, C. Pontos de Funo e Medidas - O Que um Ponto de Funo?. QAI Journal, dez. 1998
D
s
Esforo
Programao
Concepo
5%
10%
edio
ta
A APF pode ser usada para estimar desenvolvimento, melhoria e aplicao. Todas as formas de estimativa e derivaes so
referentes fase de construo, mas de conhecimento que na
produo de um sistema, tm-se ainda as fases de concepo,
elaborao e transio. importante dizer que as dicas que
sero passadas no possuem nenhuma ligao com o mtodo
de APF, mas sim uma observao de como extrapolar os valores derivados de esforo, prazo e custo em todo o processo
de produo do sistema.
Embora o ciclo de vida varie muito por empresas e projetos
diferentes, um projeto mdio, possui a distribuio de esforo
e programao como apresentado na Tabela 21.
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
Lenildo Morais
lenildojmorais@gmail.com
32
Resumo
Este artigo tem como propsito apresentar
uma viso geral sobre maturidade dos processos de desenvolvimento de software, visando a
qualidade do produto gerado e a consequente
satisfao dos seus clientes, atravs do modelo de referncia CMMI. Trata-se de um modelo
internacional, desenvolvido pelo Software Engineering Institute SEI, que pode dar suporte
s organizaes que procuram aprimorar seus
processos de desenvolvimento de software,
tornando-se assim mais competitivas.
processo
Nota do DevMan
CMMI e MPS.BR: Desde a dcada de 1990, vrios modelos de maturidade de
processos vm sendo propostos com o objetivo de auxiliar na melhoria da qualidade
dos processos de software adotados pelas organizaes. Entre eles podemos citar os
modelos CMM, Spice ISO/IEC 15504, CMMI e mais recentemente, no Brasil, o MPSBR. Atualmente as organizaes que desenvolvem software esto atentas s necessidades da adoo de processos de desenvolvimento de software melhor definidos, e
observam-se movimentos dessas organizaes em busca de certificaes de qualidade de processos de software, notadamente as certificaes CMMI e/ou MPS.BR.
O MPS.BR define um modelo de melhoria e avaliao de processos de software
com o foco nas pequenas e mdias empresas brasileiras, de modo a atender as suas
necessidades de negcio e ser reconhecido nacional e internacionalmente como um
modelo aplicvel indstria de software. Ele estabelece um modelo de processos de
software e um mtodo de avaliao de processos de modo a garantir que o MPS.BR
est sendo empregado de forma coerente com as suas definies.
Representaes do CMMI
O CMMI possui duas representaes: a estagiada e a contnua. A representao estagiada permite que as organizaes
melhorem um conjunto de processos inter-relacionados e, de
forma incremental, tratem sucessivos conjuntos de PAs. A representao contnua, por sua vez, permite que as organizaes
melhorem de forma incremental os processos correspondentes
a uma ou mais PAs, sendo a empresa responsvel por selecionar em que reas de processo ela ser avaliada.
A seg ui r apresenta mos u ma descr io para estas
representaes:
Representao por Estgios: Esta representao preocupa-se
com os processos da organizao como um todo, oferecendo
uma abordagem estruturada e sistemtica para a melhoria
de um estgio por vez. Atingir um estgio significa que uma
estrutura de processo adequada foi estabelecida como base
para o prximo estgio.
As reas de processo (PAs) so organizadas por nveis de
maturidade. Elas vo do nvel inicial (nvel 1) ao nvel em
otimizao (nvel 5), e sugerem uma ordem para a implementao das reas de processo. Cada nvel possui vrias PAs,
e cada PA possui objetivos, prticas genricas e especficas,
assegurando assim uma base de melhoria adequada para o
prximo nvel de maturidade.
33
Na representao por estgios, quando uma organizao atinge as prticas necessrias para estar em um nvel, subentendese que ela atingiu todos os requisitos necessrios dos nveis
imediatamente anteriores.
Os nveis esto descritos da seguinte forma:
a) Nvel 1 Inicial. o nvel de maturidade CMMI mais baixo.
Em geral, as organizaes desse nvel tm processos imprevisveis que so pobremente controlados e reativos. Neste nvel
de maturidade no h PAs, os processos so normalmente imprevisveis e caticos, e a organizao geralmente no fornece
um ambiente estvel;
b) Nvel 2 Gerenciado. Neste nvel, os projetos da organizao tm a garantia de que os requisitos so gerenciados,
planejados, executados, medidos e controlados. Quando essas
prticas so adequadas, os projetos so executados e controlados de acordo com o planejado. O gerenciamento de projetos
o foco principal deste nvel;
c) Nvel 3 Definido. Nvel em que todos os objetivos especficos e genricos atribudos para os nveis de maturidade 2 e 3
foram alcanados, e os processos so mais bem caracterizados,
alcanando melhor entendimento, sendo descritos em padres,
procedimentos, ferramentas e mtodos. O foco neste nvel a
padronizao do processo;
d) Nvel 4 - Quantitativamente Gerenciado. Neste nvel, os
objetivos especficos e genricos atribudos para os nveis
de maturidade 2, 3 e 4 foram alcanados e os processos so
medidos e controlados. O foco neste nvel o gerenciamento
quantitativo;
e) Nvel 5 Em Otimizao. o nvel mais alto de maturidade
CMMI, onde uma organizao atinge todos os objetivos especficos atribudos para os nveis de maturidade 2, 3, 4 e 5. Neste nvel
os processos tm como foco principal a melhoria contnua.
Representao Contnua: Na representao contnua, o foco
ou componentes principais so as reas de processo. Existem
metas e prticas de dois tipos: especficas a uma determinada
rea de processo, e genricas, aplicveis indistintamente a
todas as reas de processo.
Nesta representao, as reas de processo so agrupadas por
categorias afins que renem caminhos de melhoria indicando
a evoluo para cada uma destas reas.
A representao contnua contempla quatro disciplinas: Gerncia de Processos, Gerncia de Projeto, Engenharia e Suporte.
As reas de processo relativas disciplina de Gerncia de Processos contm atividades relacionadas para definir, planejar,
implantar, monitorar, controlar, medir e melhorar processos.
As reas de processo relativas categoria de Gerncia de Projeto contm as atividades de planejar, monitorar e controlar o
projeto. A categoria de Engenharia refere-se s atividades de
desenvolvimento de sistemas de software. Por fim, as atribuies de fornecer suporte ao desenvolvimento e manuteno
de produtos so relativas categoria de Suporte.
A partir da avaliao e do atendimento dessas prticas e metas, possvel classificar o nvel de capacidade de cada rea de
processo em uma escala de 0 a 5 do seguinte modo [3]:
34
processo
Representao Contnua
Permite livre escolha da sequncia de melhorias, de forma a melhor satisfazer aos Permite que as organizaes tenham um caminho de melhoria pr-definido e testado.
objetivos estratgicos e mitigar as reas de risco da organizao.
Permite visibilidade crescente da capacidade alcanada em cada rea de processo.
Foca em um conjunto de processos que fornece organizao uma capacidade especfica caracterizada por cada
nvel de maturidade.
Permite que melhorias em diferentes processos sejam realizadas em diferentes nveis. Resume os resultados de melhoria de processo em uma forma simples: um nico nmero que representa o nvel
de maturidade.
Reflete uma abordagem mais recente que ainda no dispe de dados para demonstrar Baseia-se em uma histria relativamente longa de utilizao, com estudos de casos e dados que demonstram o
seu retorno do investimento.
retorno do investimento.
Tabela 1. Comparao entre as representaes contnua e por estgios
A utilizao de metodologias em desenvolvimento de software, mais do que uma ferramenta, condio obrigatria
para se obter a melhoria nos processos, a qualidade necessria
Feedback
eu
www.devmedia.com.br/esmag/feedback
35
sobre e
s
Concluses
Links
D
s
edio
ta
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
jazimermann@gmail.com
Rodrigo.devmedia@gmail.com
36
Resumo
Este artigo trata do assunto gesto de mudanas.
Este assunto ser analisado sob a perspectiva da
engenharia de requisitos. Assim, inicialmente
so apresentados conceitos importantes para
o entendimento do assunto como: engenharia
de requisitos, gerncia de requisitos, matriz de
rastreabilidade e gesto de mudanas. Ao final,
apresentada uma abordagem que pode ser
utilizada nas atividades de gesto de mudanas
com o objetivo de priorizar e avaliar as mudanas solicitadas por clientes nos requisitos.
requisitos
Alguns fundamentos
Nesta seo discutiremos alguns fundamentos tericos importantes ao estudarmos o assunto gesto de mudanas no
contexto da engenharia de requisitos. Para isso, descreveremos
inicialmente as fases de um processo de desenvolvimento de
software e a gerncia de requisitos. Em seguida, so explicados os benefcios da gesto de mudanas em um projeto,
mostrando os estgios em que ela deve ser executada. Feito
isto, apresentaremos o conceito e as funcionalidades da rastreabilidade de requisitos e artefatos. Por fim, apresentamos
a metodologia AHP, enfatizando o seu funcionamento e como
pode ser aplicada.
Processos de desenvolvimento de software
Um processo de software pode ser definido como sendo uma
srie de atividades e resultados que possui como finalidade
gerar um produto de software. Os processos de softwares so
complexos e devem seguir uma srie de procedimentos a fim
de garantir um produto que atenda as diversas necessidades
do cliente. Neste sentido, existem diversos processos que tm
como caractersticas comuns as seguintes fases:
37
38
mudana estimado em termos das modificaes no documento de requisitos e, se apropriado, no projeto de sistemas
e na implementao. Desta maneira, entende-se que muito
importante possuir o documento de requisitos e o projeto de
software constantemente atualizados.
Rastreabilidade de requisitos
A rastreabilidade uma tcnica que prov o relacionamento
entre diversos requisitos, projeto e a sua implementao. ela
quem auxilia no entendimento dos relacionamentos que existem entre os requisitos e o projeto de software desenvolvido.
Em resumo, podemos dizer que a rastreabilidade a habilidade
de descobrir o histrico de cada funcionalidade do sistema.
Neste sentido, a rastreabilidade permite garantir como e
porque os artefatos atendem os requisitos dos clientes, sendo
uma forma fundamental para entender os relacionamentos
existentes entre requisitos e outros artefatos que fazem parte
do processo de software. Desta maneira, a elaborao de
um projeto de software deve produzir requisitos que sejam
rastreveis, ou seja, que sejam capazes de serem rastreados a
partir da sua origem.
Por outro lado, temos tambm que um dos maiores desafios
da engenharia de requisitos criar um mecanismo que possibilite a criao de links entre os requisitos e os cdigos fontes.
Desta maneira, um dos benefcios que a rastreabilidade oferece
a possibilidade de se cruzar as informaes especificadas na
fase de projeto (requisitos) e os itens desenvolvidos na fase de
implementao, que so os cdigos fontes.
A rastreabilidade permite que as estimativas de custos das
alteraes em requisitos de um projeto possam ser mais precisas. Tambm permite que as mudanas possam ocorrer sem
a dependncia do engenheiro ou programador de conhecerem
as reas afetadas por tais mudanas.
possvel afirmar que a manuteno da rastreabilidade
pode ser um trabalho penoso, extenso e at mesmo invivel,
quando no auxiliado por uma ferramenta especializada. Isso
explicado por Richardson e Green que afirmam que programadores so relutantes em manter os documentos do projeto
atualizados, quebrando assim, o mecanismo que possibilita
ocorrer a rastreabilidade.
Classificao da rastreabilidade
Segundo Genvigir, existem duas maneiras de se efetuar a
rastreabilidade:
forward: rastreabilidade efetuada em um requisito at seus
refinamentos;
backward: rastreabilidade efetuada de um refinamento at
sua origem.
Ainda de acordo com Genvigir, um processo de rastreabilidade falho caso no seja possvel realizar um destes dois
tipos de rastreabilidade. Isto est ligado ao fato de que estas
capacidades so propriedades bsicas para a realizao da
atividade de rastreabilidade. possvel classificar ainda a
rastreabilidade quanto aos seus tipos:
requisitos
horizontal: rastreabilidade efetuada entre verses ou variaes de uma base de artefatos. Ocorre em uma determinada
fase do ciclo de vida do projeto;
vertical: rastreabilidade que ocorre entre requisitos e artefatos
produzidos pelo processo de desenvolvimento do projeto.
Uma viso sobre os tipos de rastreabilidade apresentada na
Figura 1. Perceba que ao trabalharmos com a rastreabilidade
vertical estamos lidando com artefatos presentes em diferentes
atividades do desenvolvimento. Por outro lado, ao trabalharmos com a rastreabilidade horizontal, estamos mapeando
conceitos dentro de uma mesma atividade ou artefato base.
Agora que conhecemos alguns dos fundamentos da engenharia de requisitos relacionados gesto de mudanas, vamos
apresentar uma abordagem que pode ser utilizada na tarefa
de definio de prioridades a partir das informaes contidas
na matriz de rastreabilidade.
Conhecendo a metodologia AHP
A metodologia AHP foi criada por Saaty com o objetivo de
ponderar as caractersticas qualitativas, permitindo assim, a
ponderao e priorizao de cada um dos requisitos de um
projeto que esto inseridos no projeto. O funcionamento deste
processo se d pela atribuio de pesos a fatores individuais,
do menos influente ao mais influente. AHP utiliza-se de uma
matriz quadrada que permite avaliar a importncia de uma
caracterstica sobre a outra. A partir disso, o processo permite
obter o valor percentual de cada um dos requisitos e assim,
mapear o valor das fases do projeto.
Segundo Tocchetto, o processo AHP permite obter o valor
em percentual de cada requisito que faz parte do projeto,
39
Escala
Definio
Descrio
Menos importante
Importncia pequena
Importncia absoluta
A evidncia favorece uma atividade em relao outra com o mais alto grau de certeza
2, 4, 6, 8
Valores intermedirios. Se na atividade j (coluna) recebe um dos Quando se deseja maior compromisso. uma designao razovel
valores acima, quando comparada com a atividade j (coluna),
ento j (coluna) tem o mesmo valor recproco de i (linha)
Razo da escala
Se a consistncia tiver de ser forada para obter n valores numricos para completar a matriz.
Racionais
Para tal, ser considerado um projeto que contm trs requisitos, os quais so:
requisito 1;
requisito 2;
requisito 3.
Requisito 2
Requisito 3
Requisito
Requisito 1
a12
a13
Requisito 2
a21 = 1/a12
a23 = 1/a32
Requisito 3
a31 = 1/a13
a32
Requisito 2
Requisito 3
Requisito 1
1/3
Requisito 2
Requisito 3
1/5
40
Requisito
A partir da definio e conhecimento das frmulas apresentadas nas Figuras 4 e 5, pode-se exemplific-las, aplicando as
frmulas para o Requisito 1, que :
somatrio da coluna do Requisito 1: T = 1 + 3 + 0,5 = 4,5;
primeira linha da primeira coluna normalizada: (1 * 100) /
4,5 = 22,22 / 100 = 0,22;
segunda linha da primeira coluna normalizada: (3 * 100) /
4,5 = 66,66 / 100 = 0,66;
terceira linha da primeira coluna normalizada: (0,5 * 100) /
4,5 = 11,11 / 100 = 0,11.
Este processo de normalizao deve ser feito com todos
os requisitos envolvidos no processo. Segundo Tocchetto, a
utilizao do vetor T normalizado serve para quantificar e
ponderar a importncia de vrias caractersticas de um requisito. Voc pode acompanhar o resultado da normalizao
do vetor na Tabela 4.
Requisito
Requisito 1
Requisito 2
Requisito 3
Resultado
Requisito 1
0,22
0,21
0,25
0,68
Requisito 2
0,67
0,65
0,63
1,95
Requisito 3
0,11
0,13
0,12
0,36
requisitos
Requisito normalizado
Importncia (%)
1/3
0,68
22,44
1/3
1,95
64,35
1/3
0,36
11,88
Concluso
A engenharia de requisitos define, sem dvida, um dos mais
importantes conjuntos de atividades a serem realizadas em
Feedback
eu
www.devmedia.com.br/esmag/feedback
Referncias
APACHE SOFTWARE FOUNDATION.Apache log4j 1.2.[S.l.], 2011.<http://logging.apache.org/log4j/1.2//>.
BATISTA, Raphael M. Ferramenta de gerncia de requisitos de software integrada com Enterprise
Architect. 2007. 67 f. Trabalho de Concluso de Curso (Bacharelado em Cincias da Computao)
Centro de Cincias Exatas e Naturais, Universidade Regional de Blumenau, Blumenau. <http://
campeche.inf.furb.br/tccs/2007-I/2007-1raphaelmarcosbatistavf.pdf>.
BELTRO FILHO, Mauro F. de H. Gingway uma ferramenta para criao de aplicaes GingaNCL interativas para TV digital. 2008. 59 f. Monografia (Bacharelado em Cincia da Computao)
Centro de Informtica, Universidade Federal de Pernambuco, Recife. <http://www.cin.ufpe.
br/~tg/2008-2/mfhbf.pdf>.
Computao Aplicada Instituto Nacional de Pesquisas Espaciais, So Jos dos Campos. <http://
mtc-m18.sid.inpe.br/col/sid.inpe.br/mtc-m18%4080/2009/03.02.14.17/doc/publicacao.pdf>.
HAMILTON,Vivien L.;BEEBY,Martin.Issues of traceability in integration tools.In:IEE COLLOQUIUM ON TOOLS
ANDTECHNIQUES FOR MAINTAININGTRACEABILITY DURING DESIGN,1.,1991,Londres.Procedings. Londres:
IEEE, 1991. p. 4/1-4/2. <http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=182212>.
HAROLD, Elliotte R. Processing XML with Java. [S.l.], 2001. <http://www.cafeconleche.org/books/xmljava/>.
HAZAN, Claudia; LEITE, Julio C. S. P. Indicadores para a gerncia de requisitos. In: WORKSHOP EM
ENGENHARIA DE REQUISITOS, 6., 2003, Piracicaba. Anais eletrnicos... Rio de Janeiro: PUC-RIO, 2003. No
paginado. <http://wer.inf.puc-rio.br/WERpapers/artigos/artigos_WER03/claudia_hazan.pdf>.
HENKELS, Andr. Drawcode: um plugin do eclipse para gerao de cdigo a partir de diagramas de
classe e diagramas N-S. 2007. 101 f. Trabalho de Concluso de Curso (Bacharelado em Cincias da
Computao) - Centro de Cincias Exatas e Naturais, Universidade Regional de Blumenau, Blumenau.
BON, Jonas; VASSEUR, Alexandre. AspectWerkz: plain Java AOP 2.0 API. [S.l.], 2005. <http://
aspectwerkz.codehaus.org>.
BURNETTE, Ed. Eclipse IDE guia de bolso. Traduo Joo Torello. Porto Alegre: Bookman, 2006.
LOPES, Luiz H. C. Sistema web para gesto de pautas e atas de reunies. 2008. 55 f. Monografia (Curso
de Especializao em Informtica Empresarial) Universidade Estadual Paulista, Guaratinguet.
<http://www.feg.unesp.br/ceie/Monografias-Texto/CEIE0805.pdf>.
MARINS, Cristiano S.; SOUZA, Daniela de O.; BARROS, Magno da S. O uso do mtodo de anlise
hierrquica (AHP) na tomada de decises gerenciais: um estudo de caso. In: SIMPSIO BRASILEIRO
DE PESQUISA OPERACIONAL - PESQUISA OPERACIONAL NA GESTO DO CONHECIMENTO, 41., 2009,
Porto Seguro. Anais eletrnico... Rio de Janeiro: Universidade Federal Fluminense, 2009. p. 17781788. <http://www.ic.uff.br/~emitacc/AMD/Artigo%204.pdf>.
OLIVEIRA, Fabricio. Software de apoio gerncia de solicitao de mudanas. 2006. 72 f. Trabalho
de Concluso de Curso (Bacharelado em Cincias da Computao) Centro de Cincias Exatas e
Naturais, Universidade Regional de Blumenau, Blumenau.
41
sobre e
s
D
s
Fator 1/n
edio
ta
Arquitetura e Desenvolvimento
Nesta seo voc encontra artigos voltados para diferentes
abordagens de apoio ao desenvolvimento de projetos de software
Introduo ao desenvolvimento de
aplicaes de realidade aumentada
De que se trata o artigo?
andreluistosatoo@gmail.com
paulo.b@aedu.com
42
Este artigo apresenta os conceitos de desenvolvimento de sistemas que adotam o conceito de Realidade Aumentada. Este artigo serve como base para
estudantes e profissionais da rea de computao
que estejam interessados em conhecer os aspectos
fundamentais da Realidade Aumentada como ferramenta de apoio.
Resumo
A Realidade Aumentada pode ser definida como uma
combinao do ambiente real com o ambiente virtual.
Neste contexto, este artigo apresenta conceitualmente o tema e, na sequncia, faz uma introduo ao desenvolvimento de aplicaes desta natureza.
Arquitetura e Desenvolvimento
Nota do DevMan 1
Aprendizagem de Anatomia Humana
Segundo Braz [1], vrios alunos ingressantes em cursos que possuem a matria de
Anatomia Humana passam por vrias dificuldades no entendimento da matria devido a vrios motivos: a dificuldade do aluno com a terminologia anatmica, o pequeno
tamanho das estruturas, o preparo inadequado das peas e vrios fatores individuais
como falta de motivao, ateno e o medo ou receio existente quando o aluno se
depara com os cadveres humanos.
Em uma experincia de aula, uma professora dividiu 132 alunos do Curso de Farmcia em duas turmas, onde em uma, ela aplicou os mtodos de ensino tradicionais e na
outra, foram utilizados os mesmos mtodos, s que aps a aula, os alunos permaneciam no laboratrio para interagir com as estruturas estudadas em sala, e aps essa
interao foi proposto para os alunos que explicassem as estruturas para o professor
e colegas.
Ao final do estudo, a primeira turma teve uma mdia de 35,17% e a segunda turma
obteve uma mdia de 56,67%, ento chegou-se concluso que tendo-se mais contato e mais facilidade para ver as estruturas a serem estudadas, o aluno tem um maior
aproveitamento do curso.
Contextualizando
Realidade Aumentada mais um das vertentes da Realidade
Virtual, porm enquanto a Realidade Virtual tem como princpio a insero do usurio em um ambiente fictcio gerado
por computador, isentando este de todo ou quase todos os
sentidos reais, a Realidade Aumentada insere objetos virtuais
em um ambiente real sem ocultar do usurio o que est a sua
volta. Como o prprio nome diz, seu objetivo aumentar a
complexidade do mundo real inserindo objetos virtuais e tudo
isto em tempo de execuo real.
Esta tecnologia est cada vez mais inserida em nosso cotidiano, pois j existem aplicaes em celulares, jogos, simuladores,
inclusive aplicaes na rea mdica e artstica.
Realidade aumentada uma especializao da realidade virtual, baseada na insero de objetos virtuais em uma cena real,
podendo o usurio interagir com o objeto em tempo real.
Realidade Aumentada
A Realidade Aumentada uma tecnologia que possibilita a
incluso de objetos virtuais interativos em um ambiente real,
Medicina
A Realidade Aumentada j est ajudando pessoas que sofrem
de varizes. Dr. KasuoMiyake (Especialista no tratamento de
varizes) ajustou o equipamento VeinViewer, uma espcie de
viso de raios X, que auxilia na coleta de sangue e na medicao intravenosa, e o adaptou utilizando RA para auxiliar no
tratamento de varizes, dispensando cirurgia. Segundo Miyake,
esta tcnica j evitou cirurgias em 86% dos casos desde 2007
(ver Figura 2).
Aps analisar a aplicabilidade da realidade aumentada no
cotidiano das pessoas, Sabbatini [6] concluiu que j existe
disponvel no mercado uma vasta gama de equipamentos
43
A disposio do objeto pode ser interferida de vrias maneiras, como brilho de luz sobre a parte escura do marcador, colocar qualquer objeto que esconda esta mesma parte do marcador
tambm ocasiona a perda da imagem, e para movimentos mais
rpidos necessrio o uso de um objeto de captura de grande
preciso (ver Figura 6).
44
Figura 6. Amostra da RA
Arquitetura e Desenvolvimento
ARToolKit
O ARToolKit uma biblioteca Open Source desenvolvido em
linguagem C e C++ para o desenvolvimento de aplicaes em
realidade aumentada. No site http://www.hitl.washington.
edu/artoolkit/download/ pode ser feito o download do pacote
de desenvolvimento.
Segundo o site oficial do ARToolKit escrito por Phillip Lamb,
o desenvolvimento do ARToolKit comeou em 1999 quando
Hirokazo Kato chegou ao instituto HITLab (Human Interface
Tecnology Laboratory) da Universidade de Washington.
O ARToolKit foi apresentado pela primeira vez no SIGGRAPH Special Interest Group on GRAPHics and Interactive
Techniques (conferncia de profissionais em computao
grfica iniciada em 1974), uma verso para Windows usando
o directshow (uma biblioteca de rotinas prontas, uma API, desenvolvida pela Microsoft).
Hirokazo Kato e M. Billinghurst, os dois principais criadores
do ARToolKit, ainda trabalham no projeto.
Arquitetura do ARToolKit
Figura 7. Aplicao usando FLARToolkit
45
Funo
Descrio
ARMarkerInfo
Principal estrutura utilizada em marcadores para guardar as informaes do contorno do marcador depois que este foi detectado.
ARMarkerInfo2
Estrutura interna usada para a deteco dos marcadores: armazena as informaes do contorno dos marcadores.
ARMat
ARMultiEachMakerInfoT
Estrutura para vrios marcadores. Possui estrutura similar ao ARMakerInfo porm para mltiplos marcadores.
ARMultiMarkerinfoT
ARParam
ArPrevinfo
ARVec
Concluso
46
www.devmedia.com.br/esmag/feedback
sobre e
s
Feedback
eu
edio
ta
D
s
Arquitetura e Desenvolvimento
Nesta seo voc encontra artigos voltados para diferentes
abordagens de apoio ao desenvolvimento de projetos de software
Resumo
Aborda o tema Cdigo Limpo com o objetivo de mostrar como o desenvolvedor pode us-lo para melhorar
a qualidade do cdigo-fonte de suas aplicaes. Neste
sentido, este artigo prov conhecimento ao desenvolvedor sobre como transformar cdigos considerados
ruins em bons cdigos demonstrando atravs de
exemplos prticos as teorias aqui abordadas.
47
Limites
Nesta seo abordaremos a importncia de estabelecer limites
para testar aplicaes. Esta seo d nfase a cdigo de terceiros
que muita das vezes so inseridos em algumas aplicaes devido, entre outras coisas, a necessidade de adquirir, por exemplo,
um componente de terceiros. Ao se conhecer os limites que o
cdigo ou componente de terceiros possuem, torna-se possvel
conhecer seu funcionamento e suas limitaes. Com base nestas informaes fica mais fcil saber quando uma nova verso
do cdigo ou componente de terceiros mais recomendada
ao projeto atual do que a verso antiga dos mesmos que est
sendo mantida no projeto.
Evitar que uma verso do cdigo ou componente permanea no projeto sem se ter a certeza que realmente til por
satisfazer alguma das necessidades do projeto uma prtica
que contribui para se ter um cdigo limpo. Dentre todos os
objetivos desta seo, manter o cdigo limpo, incluindo o
limite entre a aplicao e os cdigos de terceiros, o objetivo
principal.
Estabelecendo os limites entre o cdigo criado e o cdigo
de terceiros
Conceitua-se cdigo criado como o cdigo que est sendo implementado ou foi implementado em uma aplicao.
Conceitua-se cdigo de terceiros como qualquer cdigo que foi
implementado por outra empresa, equipe ou desenvolvedor,
cujo propsito satisfaz a alguma necessidade que se tem no
momento, e a razo pela qual o cdigo est sendo comprado/
obtido para ser utilizado.
Cdigos de terceiros geralmente so genricos, isto , tendem
a abranger grande quantidade de necessidades, podendo ser
utilizado em muitos cenrios diferentes. Isso faz com que o
48
cdigo de terceiros muitas das vezes tenha mais funcionalidades do que normalmente se precisa quando se opta por
utiliz-lo.
Caso seja possvel refator-lo, isto , modific-lo a fim de
remover cdigos que no sero utilizados no instante em que
se deseja apenas uma funcionalidade, aconselhvel que o
faa, mas nem sempre se pode alterar tais cdigos.
Existem diversos tipos de cdigo de terceiros, dentre eles os
que so oferecidos em forma de componentes e classes, entre
outras formas.
Partindo do princpio de que no se pode alterar o cdigo de
terceiros que se est utilizando, ser definido um exemplo de
como utilizar o cdigo de terceiros sem expor mais funcionalidades do que o necessrio.
Considerando uma classe de uma biblioteca de classes que
disponibilizada juntamente com um ambiente de desenvolvimento Java ou .Net, pode-se ter vrios mtodos de diferentes
funes, das quais apenas algumas precisam ser utilizadas.
Como exemplo, considere o cdigo da Listagem 1.
Listagem 1. Cdigo da classe Aluno.
Engenharia de Software Magazine - Boas prticas para escrita de mtodos, funes e procedimentos Parte 6
Arquitetura e Desenvolvimento
1. ...
2. aluno.adicionarAlunoLista(aluno);
3. ...
4. ArrayList lista = aluno.recuperarListaAlunos();
5. ...
1. ...
2. alunoJose.adicionarAlunoLista(aluno);
3. ...
4. ArrayList lista = aluno.recuperarListaAlunos();
5. ...
49
Testes de unidade
Esta seo se faz necessria devido a um problema encontrado em casos de testes escritos para testes de unidade: cdigo
ilegvel. Manter um cdigo limpo inclui manter o cdigo dos
casos de testes limpos tambm. De certa forma, manter apenas o cdigo do sistema limpo no garantia de facilidade
de interpretao. O tempo gasto para entender e manter o
cdigo fonte de um sistema pode ser maior se o cuidado que
o desenvolvedor teve em mant-lo limpo no for o mesmo
como o cdigo utilizado para testes unitrios. Assim, escrever
casos de testes limpos o objetivo desta seo. Caso o leitor
no esteja familiarizado com testes unitrios utilizando NUnit,
recomendada a leitura do artigo sobre testes unitrios com
NUnit na prtica (ver Nota do DevMan 1).
Recomendaes para se obter bons casos de testes
A tarefa de definir cdigo de teste unitrio deve seguir algumas recomendaes, segundo (MARTIN, 2009). A primeira das
recomendaes gira em torno da velocidade com que um teste
executado. Um teste no deve ser lento para executar, isto , deve
ser escrito de tal forma que possa ser executado de forma rpida.
Caso um teste no execute de forma rpida, possivelmente ser
necessria a limpeza do cdigo de teste rapidamente.
A segunda recomendao revela que o acoplamento entre
cdigos de teste deve ser reduzido, de preferncia eliminado.
Um trecho de cdigo de teste no deve estar contido no corpo
de outro cdigo de teste. Cada mtodo de teste deve testar
um mtodo da aplicao, e no pode ser utilizado no todo ou
em partes para testar outros mtodos que no seja o que por
natureza foi definido para ser testado por ele.
A terceira recomendao acerca da portabilidade dos casos
de teste. Um teste deve poder ser executado sobre o projeto
desenvolvido, em qualquer lugar onde o projeto esteja, no
somente em um local especfico, como a mquina do desenvolvedor. importante se ter uma estratgia que permita que os
testes sejam executados em um sistema mesmo que o sistema
no esteja na mquina na qual foi concebido.
Outras duas recomendaes sobre como os casos de teste devem ser concebidos e mantidos giram em torno da capacidade
de validao de um caso de teste e sobre o momento ideal para
se definir um caso de teste.
Sobre a capacidade de validao de um caso de teste, deve-se
atentar para o tipo de sada que o teste fornece. A comparao
deve ser bem clara, bem como a sada que o teste fornece. Deve
ser possvel identificar rapidamente, caso o teste falhe, o motivo
50
OperacoesMatematicas possui um mtodo chamado dividirDoisNumeros. Esse mtodo simples, consiste em apenas
efetuar uma operao de diviso entre dois nmeros. Esse o
cenrio inicial para aplicao de um caso de teste, no qual posteriormente ser possvel ver a aplicao de algumas tcnicas
de cdigo limpo. O mtodo OperacoesMatematicas possui um
fluxo normal, caso os dados inseridos sejam corretos no sentido de permitir a diviso de forma natural, e outros fluxos de
Engenharia de Software Magazine - Boas prticas para escrita de mtodos, funes e procedimentos Parte 6
Arquitetura e Desenvolvimento
exceo, que permitem que, caso alguma exceo seja levantada, a mesma seja capturada e envie uma mensagem ao usurio
sobre o ocorrido. Testes neste sentido devem ser capazes de
identificar se o mtodo funciona com o esperado.
A Listagem 7 possui uma classe chamada TOperacoesMatematicas, que possui os casos de teste escritos para testar o
mtodo dividirDoisNumeros da Listagem 6.
Na Listagem 7, linha 3, tem-se a instanciao de um objeto
da classe OperacoesMatematicas, classe que possui o mtodo
dividirDoisNumeros, mtodo que ser testado. A instanciao
desse objeto permitir a comunicao com a classe OperacoesMatematicas. A classe da Listagem 7 recebeu o mesmo nome
da classe da Listagem 6, a diferena est na primeira letra, T,
que ser utilizado para deixar claro que a classe uma classe
que possui cdigo de teste.
Na classe da Listagem 7 existem quatro mtodos de teste. O
primeiro deles, linhas 5 a 11, permite descobrir se o clculo de
diviso ser feito de forma correta. Para isso, espera-se que o
resultado seja 5, em relao ao resultado da diviso do numero
10 por 2 (linha 9). O segundo mtodo, linhas 13 a 26, permitir descobrir se ser levantada uma exceo, caso o segundo
nmero da diviso for zero. O mtodo de teste das linhas 28
a 41 permitir o teste do cenrio onde uma exceo ser lanada caso seja inserido algum valor que no um nmero. J
o ltimo caso de teste, linhas 43 a 56, permite descobrir se o
mtodo a ser testado realmente emite mensagem de tentativa
de diviso com nmeros negativos.
Todos os casos de teste escritos para o mtodo dividirDoisNumeros (Listagem 6) passam no teste, o que indica que o mtodo
escrito funciona como o esperado. Os casos de teste escritos
cumpriram seus objetivos. Muitas equipes de desenvolvimento
os descartariam neste momento, mas o melhor a fazer mantlos guardados para futuros testes neste mesmo mtodo.
Cdigo Limpo (MARTIN, 2009) sugere que os casos de teste
sejam mantidos, isto , sejam armazenados, mas que, alm
disso, tambm possam evoluir assim como o cdigo dos mtodos da aplicao. Essa evoluo diz respeito limpeza do
cdigo dos casos de teste. Deve-se atentar para que as tcnicas
de limpeza de cdigo sejam sempre aplicadas no s ao cdigo
da aplicao, mas tambm ao cdigo de teste.
Alm da aplicao das tcnicas de cdigo limpo, os casos de
teste tambm devem estar de acordo com as recomendaes
descritas nesta seo, em Recomendaes para se obter bons
casos de testes. Analisando os casos de teste apresentados na
Listagem 7, pode-se perceber que a primeira recomendao
se encaixa nestes testes. Os testes da Listagem 7 executam
rapidamente.
Sobre a segunda recomendao, pode ser visto que os
casos de teste executam de forma independente, isto , no
precisam do resultado um do outro para executar. A terceira
recomendao revela que os casos de teste devem permitir
a execuo em outros locais e no somente a mquina em
que foi concebido. Essa recomendao se aplica a esses casos
de teste, pois possvel rodar esses testes em outro local.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57. }
UInt32 n1 = Convert.ToUInt32(sdsd);
UInt32 n2 = 2;
UInt32 result = n1 / n2;
}
catch (FormatException)
{
operacao.setMensagem( No foi possivel a diviso. Entrada
Invlida);
}
Assert.AreEqual( No foi possivel a diviso. Entrada Invlida,
operacao.obterMensagem());
}
[Test]
public void test4()
{
try
{
UInt32 n1 = Convert.ToUInt32(-10);
UInt32 n2 = 2;
UInt32 result = n1 / n2;
}
catch (OverflowException)
{
operacao.setMensagem( No foi possivel a diviso com
nmeros Negativos);
}
Assert.AreEqual( No foi possivel a diviso com nmeros
Negativos, operacao.obterMensagem());
}
51
52
Engenharia de Software Magazine - Boas prticas para escrita de mtodos, funes e procedimentos Parte 6
Arquitetura e Desenvolvimento
Concluso
A srie sobre Cdigo Limpo vem cumprindo seu objetivo
que o de prover conhecimento sobre como melhorar a qualidade de cdigo das aplicaes. A cada novo artigo, diferentes
sees vm sendo apresentadas, cada uma com um propsito
especfico, mas todas contribuindo para a obteno de cdigo
considerado limpo.
Neste artigo foram apresentadas as sees Limites e Teste de
Unidade. A seo Limites contribui para a melhoria do cdigo
que estabelece os limites existentes entre a aplicao e o cdigo
de terceiros, e a seo Teste de Unidade destaca a importncia
de manter guardados os casos de teste escritos, mas mais importante do que isto, mant-los sempre limpos, fazendo com que a
qualidade do cdigo de teste evolua sempre juntamente com a
qualidade do cdigo da aplicao que ele testa.
Referncia
D
s
MARTIN, Robert C, 2009. Cdigo Limpo: Habilidades Prticas do Agile Software, 1ed. Rio de
Janeiro: Alta Books, 2009.
Feedback
eu
www.devmedia.com.br/esmag/feedback
53
sobre e
s
edio
ta
54
Engenharia de Software Magazine - Boas prticas para escrita de mtodos, funes e procedimentos Parte 6