Documente Academic
Documente Profesional
Documente Cultură
P S - G R A D UA O
Engenharia de Software:
Desenvolvimento Java
Engenharia de Software:
Desenvolvimento .NET
G R A D UA O
Engenharia de Computao
Anlise e Desenv. de Sistemas
FORMAES
Desenvolvedor Java
Desenv. Java: Sist. Distribudos
Gestor de TI
Desenvolvedor Web .NET 2008
MCITP Server Administrator
SQL Server 2008
r/esti
Acesse nosso site e conhea todos os nossos programas: www.infnet.edu.br/esti
TURMAS
NO RIO DE
JANEIRO
www.infnet.edu.br - cursos@infnet.edu.br - Central de Atendimento: (21) 2122-8800
EDITORIAL
utomatizar os testes nada mais do que repassar para o computador as atividades de testes que normalmente so realizadas de forma manual. A automao de
testes deve ser iniciada a partir de um processo manual de teste j estabelecido e
Impresso no Brasil
Corpo Editorial
torna automtica algumas tarefas do processo de testes, mas ela no faz milagres. Como
assim? Uma ferramenta de testes apenas automatiza o nosso conhecimento tcnico sobre
Colaboradores
Rodrigo Oliveira Spnola
Marco Antnio Pereira Arajo
Eduardo Oliveira Spnola
Capa
Romulo Araujo - romulo@devmedia.com.br
Diagramao
Janete Feitosa
matrias:
Automao dos Testes: um lobo na pele de cordeiro?: cujo objetivo apresentar uma
Coordenao Geral
Daniella Costa - daniella@devmedia.com.br
reflexo sobre os cuidados que devem ser levados em considerao na aplicao da au-
Revisor e Supervisor
Thiago Vincenzo - thiago.v.ciancio@devmedia.com.br
tomao de testes.
Processo e automao de testes de Software: cujo objetivo apresentar uma expecom base na Programao Exploratria, utilizando ferramentas para automao de testes.
Alm destas matrias, esta edio traz mais seis artigos:
Na Web
www.devmedia.com.br/esmag
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:
Daniela Maciel e Flvia Aparecido Atendimento ao Leitor
www.devmedia.com.br/mancad
(21) 2220-5338
Kaline Dolabella
Gerente de Marketing e Atendimento
kalined@terra.com.br
(21) 2220-5338
Publicidade
Para informaes sobre veiculao de anncio na revista ou no site entre em
contato com:
Cristiany Queiroz
publicidade@devmedia.com.br
Caro Leitor,
NDICE
Por trs do obvio
06 O dia em que virei um Ninja
Glnio Cabral
Agilidade
07 - Acompanhamento de projetos geis distribudo atravs do Daily Meeting
Engenharia
15 - Requisitos em SOA Parte 2
Joo Caldas Jnior
Tipo: Processo
Ttulo: Atividades da Gerncia de Projetos Partes 10 a 14
Autor: Rodrigo Oliveira Spnola
Mini-Resumo: A gerncia de projetos possui um conjunto de atividades
associadas aos processos da gerncia. Nesta srie de 5 vdeo aulas conheceremos algumas dessas principais atividades destacando seus objetivos,
tarefas desempenhadas e resultados esperados. Alguns dos assuntos tratados
sero: planejamento de cronograma, planejamento de recursos humanos e
planejamento de riscos.
34 - Qualidade de Software
Lenildo Morais
Desenvolvimento
39 - Diagramas de Sequncia: Uma Abordagem Prtica
Geraldo Magela Dutra Gonalves
Existem coisas
que no conseguimos
ficar sem!
...s pra lembrar,
sua assinatura pode
estar acabando!
AMIGO
Renove J!
www.devmedia.com.br/renovacao
Para mais informaes:
www.devmedia.com.br/central
Glnio Cabral
gleniocabral@yahoo.com.br
D
s
Administrador de Empresas, ps-graduado em Gesto de Pessoas e msico. Idealizador do site de educao infantil www.novainfancia.com.br.
Feedback
eu
sobre e
s
edio
ta
oi uma noite inesquecvel. L estava eu, louco pra sentarme na primeira fila para assistir a palestra Tcnicas Ninja
para sua empresa. O palestrante era um japons que se
dizia mestre das artes marciais e que agora aplicava as tcnicas
de luta para gerenciar melhor os seus negcios. Todo mundo
dizia que sua empresa dera um salto de produo depois disso,
por isso o auditrio estava lotado. Assim que entrei fui logo recepcionado por um homem trajado como um ninja, com espada
e tudo. Ele deu um grito estarrecedor, comeou a gesticular
freneticamente e me entregou uma espada de madeira, dizendo
IAKI!. Sentei me sentindo um Karat Kid.
Olhei para a espada de madeira em minha mo e disse pra
mim mesmo: abra a mente, abra a mente. De repente, as luzes
do auditrio se apagaram. Um som ao fundo dizia pra gritarmos como nunca havamos gritado antes em nossas vidas. Era
engraado observar aqueles engravatados empunhando uma
espada de madeira aos berros, como se fossem criaturas bizarras sadas de um RPG. Depois de dez segundos da mais pura
histeria, o palestrante apareceu no palco encoberto por uma
nuvem de fumaa e empunhando uma espada gigantesca. Pausadamente, ele falou: Sou o mestre Okhaio, e a partir de agora
convoco o esprito de Shaulim para batiz-los e transform-los
em Ninjas Guerreiros. Assim que terminou de falar isso, um
caldeiro de gua misturada com flores foi derramado sobre
todos ns, sabe-se l de onde. Pronto, fomos batizados pelo
esprito de Shaulim. S ento o palestrante comeou a exibir
uma srie de golpes de artes marciais mostrando como poderamos aplic-los ao nosso dia-dia nas organizaes.
Sinceramente, no vi sentido algum em nada daquilo. Pra
falar a verdade, estava me sentindo um perfeito idiota, todo
encharcado e com uma espada de brinquedo na mo.
Apesar disso, aprendi preciosas lies com essa experincia.
Primeiro, que h muita picaretagem no universo das palestras
Agilidade
Nesta seo voc encontra artigos voltados para as prticas e mtodos geis.
Em paralelo ao crescimento dos mtodos geis, o desenvolvimento distribudo de software vem ganhando cada
vez mais adeptos. Dentre as razes pela
Engenharia de Software Magazine - Acompanhamento de projetos geis distribudo atravs do Daily Meeting
AGILIDADE
10
Assembla
Assembla uma ferramenta de gerenciamento gil de projetos baseado no Scrum que permite criar Sprints, criar as estrias e associ-las a uma Sprint, assim como criar as tarefas. Ela
tambm permite que os membros acompanhem o progresso
das tarefas atravs do suporte ao Daily Meeting.
Para apoiar o Daily Meeting, a ferramenta tem um espao
no qual o usurio pode preencher as respostas referentes s
trs perguntas da reunio diria e ver as respostas de outros
membros. As respostas so registradas para criar um histrico
com o trabalho realizado pela equipe todos os dias. A fim de
lembrar a equipe para responder pergunta, um e-mail de
alerta enviado em um horrio agendado. A ferramenta tambm fornece um chat para permitir que os desenvolvedores
discutam entre eles sobre os impedimentos.
Desse modo, Assembla fornece comunicao assncrona
baseada na resposta das trs questes e comunicao sncrona atravs do chat; ambas ajudam os membros durante o
Daily Meeting. No entanto, esta soluo no oferece recursos
Engenharia de Software Magazine - Acompanhamento de projetos geis distribudo atravs do Daily Meeting
AGILIDADE
ScrumWorks
ScrumWorks um software de gesto gil de projetos que
tem duas licenas, diferenciadas pelo nmero de recursos
oferecidos. A primeira licena o Basic ScrumWorks, que
prev apenas o gerenciamento do projeto, das Sprints e alguns
relatrios. A segunda licena, o ScrumWorks Pro, fornece um
conjunto mais completo de funcionalidades que permite aos
membros gerenciar os usurios, o acesso a diferentes tipos de
relatrio, o acesso ao quadro de horrios (Timesheet), e usar
um Taskboard drag-and-drop.
No entanto, esta ferramenta no fornece um ambiente para
reunio diria. Ele s possui o Taskboard, que permite aos
membros da equipe monitorar o progresso das tarefas, e no
possui recursos de colaborao, tais como vdeo-conferncia,
o que permitiria aos membros interagir em torno do Taskboard, apoiando assim a discusso sobre as trs questes da
reunio diria.
VersionOne
VersionOne uma ferramenta de gesto de projetos que apoia
algumas metodologias de desenvolvimento gil, tais como
Scrum, XP, Kanban, AgileUP e DSDM.
Esta ferramenta permite que a equipe planeje e gerencie as
estrias e os objetivos de vrios projetos, produtos e Sprints. Ela
tambm permite adicionar Sprint, estrias, defeitos, tarefas,
testes e impedimentos, alm de possibilitar que a equipe acompanhe o andamento do projeto usando Storyboard, Taskboard,
Testboard e Burndown charts.
Embora a ferramenta fornea e compartilhe informaes
importantes para a reunio diria, tais como o TaskBoard e o
Burndown, estas informaes no so atualizadas em tempo
real, ou seja, quando um membro atualiza o status de uma tarefa, essa alterao no aparece no Taskboard de outro membro
no mesmo espao de tempo. Isto um empecilho para equipes
distribudas fazerem uma reunio diria sncrona. Portanto,
esta soluo no fornece um ambiente para os membros se
reunirem todos os dias e discutir o andamento do sprint.
TargetProcess
TargetProcess tambm um software integrado de gesto
de projetos que apoia todas as atividades de desenvolvimento
Scrum. Ele permite criar estrias, priorizar o Product Backlog,
e seguir o progresso das tarefas atravs do TaskBoard e do
grfico Sprint Burndown.
Esta soluo web e ajuda a integrar as equipes distribudas
de modo que trabalhem juntas em um nico projeto. O Taskboard apoia a reunio diria atravs da atualizao do status
das tarefas em tempo real pelos seus membros. No entanto,
FireScrum
O FireScrum uma ferramenta cdigo livre de gerenciamento gil de projetos focada no Scrum. Foi desenvolvida com o
objetivo de apoiar equipes distribudas, motivada por lacunas
nas propostas semelhantes (ScrumWorks, TargetProcess,
VersionOne, Assembla). A ferramenta foi desenvolvida por
alunos de Engenharia de Software da Universidade Federal
de Pernambuco. A fim de facilitar o uso, a ferramenta foi projetada para que os membros trabalhem de forma semelhante
a um ambiente fsico. O Taskboard foi concebido como um
quadro branco eletrnico, permitindo o uso de post-its para
criar tarefas, e mov-los atravs das colunas do Taskboard,
alterando assim o seu status. Outra preocupao foi a interao
face-a-face defendida pelas metodologias geis, o que exigiu
a utilizao de recursos multimdia, possibilitando maior
interao entre os membros remotos, mas que no entanto s
est disponvel no mdulo Planning Poker.
O FireScrum uma aplicao web, o que significa que
acessvel remotamente atravs de um browser via Internet ou
Intranet, e possui interfaces simples para o uso baseado nos
conceitos de Rich Internet Applications (RIA), provendo maior
usabilidade ao usurio. A ferramenta foi desenvolvida com
uma arquitetura modular de modo facilitar a manuteno e
extenso, permitindo adicionar novas funcionalidades.
Na verso atual do FireScrum, o apoio dado ao Daily Meeting
atravs do Taskboard atualizvel em tempo real. No entanto,
exige que os membros definam um horrio para a reunio e
se encontrem todos os dias em frente ao Taskboard. Durante
a reunio cada membro deve alterar o status das tarefas refletindo as trs perguntas dirias. Entretanto, essa soluo no
permite que os membros interajam, uma vez que o Taskboard
no possui comunicao escrita (por chat) nem oral (por videoconferncia). A ferramenta tambm no permite controlar a
durao da reunio, e no possibilita que os membros vejam
ao mesmo tempo outras informaes necessrias, tais como o
Sprint burndown para acompanhar o andamento do projeto.
11
Assembla
ScrumWorks
VersionOne
TargetProcess
FireScrum
Agendamento da reunio
Envio de lembrete aos usurios
Comunicao Assncrona
X
X
Taskboard ou TaskView
X
X
12
Engenharia de Software Magazine - Acompanhamento de projetos geis distribudo atravs do Daily Meeting
AGILIDADE
13
14
Boehm, Barry.A view of 20th and 21st century software engineering.ICSE 06:Proceedings of the 28th
international conference on Software engineering. 2006.
Cavalcanti, Eric; Maciel, Teresa; Albuquerque, Jones. Ferramenta OpenSource para Apoio ao Uso do
Scrum por Equipes Distribudas. Workshop de Desenvolvimento Distribudo de Software (WDDS).
2009.
Damian, Daniela; Marczak, Sabrina; Dascalu, Madalina; Heiss, Michael; Liche, Adrian.Using a Real-Time
Conferencing Tool in Distributed Collaboration: An Experience Report from Siemens IT Solutions and
Services. ICGSE 09: Proceedings of the 2009 Fourth IEEE International Conference on Global Software
Engineering. 2009.
French, A.; Layzell, P.A Study of Communication and Cooperation in Distributed Software Project
Teams. ICSM 98: Proceedings of the International Conference on Software Maintenance. 1998.
Herbsleb, James D.; Moitra, Deependra. Guest Editors Introduction: Global Software Development.
IEEE Software. 2001.
Highsmith, Jim Agile Project Management - Creating Innovative Products. Pearson Education. 2004.
Karolak, Dale Walter.Global Software Development: Managing Virtual Teams and Environments. IEEE
Computer Society Press. 1999.
Lee, Seiyoung; Yong, Hwan-Seung. Distributed agile: project management in a global environment.
Empirical Software Engineer. 2010.
Dubakov, Michael; Stevens, Peter. TargetProcess. Agile Tools. The Good, the Bad and the Ugly. http://
www.targetprocess.com/download/whitepaper/agiletools.pdf. 2008.
ScrumWorks. ScrumWorks Pro 4. http://www.danube.com/docs/ ScrumWorks_Pro_Datasheet.pdf.
2009.
Singleton. Accelerate with a Daily Scrum. Assembla. http://blog.assembla.com/assemblablog/
tabid/12618/bid/2424/Accelerate-with-a-Daily-Scrum.aspx. 2007.
Sutherland, Jeff; Schoonheim, Guido; Rustenburg, Eelco; Rijk, Maurits. Fully Distributed Scrum: The
Secret Sauce for Hyperproductive Offshored Development Teams. Agile 2008 Conference. 2008.
Sutherland, Jeff; Viktorov, A.; Blount, J.; Puntikov, N. Distributed Scrum: Agile Project Management
with Outsourced Development Teams. Hawaii International Conference on Software Systems, Big
Island, Hawaii. 2007.
Takeuchi, Hirotaka; Nonaka, Ikujiro. The New New Product Development Game. Harvard Business
Review. 1986.
Chalegre,Virgnia C..Santos,Wylliams B.; Souza, Leandro O.; Munoz, Hernan J.; Meira, Silvio R.L.Estudo
de Caso da Utilizao de Scrum no Desenvolvimento Distribudo de Software. Conferncia Brasileira
sobre Mtodos geis de Desenvolvimento de Software. 2010.
Versionone. The State of Agile Development Survey Results. http://www.versionone.com/
pdf/3rdAnnualStateOfAgile_FullDataReport.pdf. 2008.
Williams, Wes; Stout, Mike. Colossal, Scattered, and Chaotic (Planning with a Large Distributed Team.
AGILE Conference. 2006.
Engenharia de Software Magazine - Acompanhamento de projetos geis distribudo atravs do Daily Meeting
Feedback
eu
sobre e
s
Beck, Kent et al. Manifesto for agile software development. Fev. 2001. Disponvel em http://www.
agilemanifesto.org.
D
s
Concluso
Referncias
edio
ta
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
N
Joo Caldas Jnior
caldasjr@gmail.com
15
16
Nota do DevMan 1
Padronizando os Padres (Erl [1])
O padro SOAP utilizado pelos Web Services e responsvel por definir o
modelo da troca de mensagens. Para isso utiliza um arquivo XML que define envelopes e os ns intermedirios da comunicao.
O padro WSDL responsvel por identificar o protocolo e o endereo no qual
um servio est publicado, assim como seus parmetros de entrada e sada.
O padro UDDI permite que os servios sejam categorizados, porm sem fornecer uma riqueza de textos para que buscas por um servio especfico sejam
feitas.
O padro ESB permite customizaes no servio de mensagens, isto , ele funciona como um Mediador. A partir dele possvel fazer validaes e roteamento
de mensagens baseado no contedo da mensagem. Um barramento ESB permite um baixo acoplamento entre sistemas visto que um sistema de origem no
precisa conhecer o sistema de destino.
17
18
Os consumidores de servio utilizam um contrato de servio para invocar um servio e interagir com ele. Havendo
essa confiana, o contrato de um servio deve permanecer
estvel com o passar do tempo. Os contratos devem ser projetados da forma mais explcita possvel, ao mesmo tempo
tirando proveito da natureza extensvel do esquema XML
e do modelo de processamento SOAP.
O maior desafio da terceira caracterstica sua continuidade. Depois que um contrato de servio publicado,
extremamente difcil modific-lo e ao mesmo tempo
minimizar o impacto sobre antigos consumidores do servio. A linha entre as representaes de dados interna e
externa fundamental para a implantao e a reutilizao
bem-sucedida de determinado servio. Os dados pblicos
(dados passados entre servios) devem se basear em padres
organizacionais ou verticais, garantindo ampla aceitao
entre diferentes servios. Os dados privados (dados dentro
de um servio) so encapsulados em um servio. De alguma
maneira, os servios so como representaes menores de
uma organizao que conduz transaes de e-business.
Assim como uma organizao deve mapear uma Ordem
de compra externo em seu formato interno de OC, um
servio tambm deve mapear uma representao de dados
sob contrato em seu formato interno. As experincias com
encapsulamento de dados OO podem ser reutilizadas para
ilustrar um conceito semelhante: a representao interna
dos dados de um servio s pode ser manipulada por meio
do contrato do servio.
Feitas essas consideraes, vo aqui alguns princpios de
design simples que o ajudam a garantir a compatibilidade
com a terceira caracterstica:
Garantir que o contrato de um servio permanea estvel
para minimizar o impacto sobre os consumidores do servio.
O contrato nesse sentido se refere representao de dados
pblica (dados), ao padro de troca de mensagens (WSDL) e
a recursos e nveis de servio configurveis (diretriz);
Os contratos devem ser o mais explcitos possvel, visando
minimizar a m interpretao. Alm disso, os contratos
devem acomodar a futura verso do servio por meio da
extensibilidade da sintaxe XML e do modelo de processamento SOAP;
Evitar transpor a fronteira entre as representaes de
dados pblica e privada. O formato interno dos dados de
um servio deve ficar oculto para os consumidores e o
esquema de dados pblico deve preferencialmente seguir
um padro organizacional;
Servios de verso quando h alteraes no contrato de
servio so inevitveis. Essa abordagem minimiza a ruptura
de implementaes do antigo consumidor.
Concluso
As demandas de uma arquitetura orientada a servios em
termos de disponibilidade, escalabilidade, desempenho,
confiabilidade e assim por diante so ainda mais importantes quando postas frente s mudanas tecnolgicas na
Links
[1] Erl,, T.Introduction to Web Services Technologies: SOA, SOAP, WSDL and UDDI
Prentice Hall PTR, Upper Saddle River, NJ, 2007 - www.thomaserl.com
[2] Rodriguez, T. Demsak, T.Lightweight SOAs: Exploring Patterns and Principles of a New
Generation of SOA Solutions - http://msdn.microsoft.com/en-us/architecture/bb426891.aspx
[3] Smartsec SOA - Service Oriented Architecture - http://www.smartsec.com.br/soa.html
[4 ] TI INSIDE, Converge Comunicaes Segurana ponto crtico em SOA e servios web
http://www.tiinside.com.br/News.aspx?ID=102376&C=262
Feedback
eu
edio
ta
D
s
www.devmedia.com.br/esmag/feedback
19
sobre e
s
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
O
Daniel Scaldaferri Lages
dlages@gmail.com
20
Este artigo apresenta uma reflexo sobre os cuidados que devem ser levados em considerao na
aplicao da automao de testes. Muitas vezes
essa atividade vista como a salvao em termos de custo, prazo e produtividade para os projetos. O artigo apresenta situaes que mostram
que, caso a automao no seja bem implementada, s ir prejudicar.
Automao de Testes
Automatizar os testes nada mais do que repassar para
o computador as atividades de testes que normalmente so
realizadas de forma manual. A automao de testes deve ser
iniciada a partir de um processo manual de teste j estabelecido
e maduro. Vrias so as ferramentas disponveis no mercado
para as empresas, entre pagas e gratuitas.
A automao de testes possui alta capacidade para reduzir
esforos. Em contrapartida, possui alta propenso a falhas. A
Tabela 1 apresenta os resultados de sucesso e insucesso da
automao de testes.
SUCESSO
INSUCESSO
Reduo de custos
Tempo desperdiado
Testes melhorados
Dinheiro desperdiado
Resultados precisos
Resultados imprecisos
Equipe desmoralizada
Produtividade reduzida
quais esto bloqueados e o motivo. Normalmente essas ferramentas se integram com as ferramentas de gesto de incidentes para
que seja possvel o rastreamento das falhas. Um bom exemplo
a ferramenta Testlink, que pode ser integrada com qualquer uma
das ferramentas de gesto de incidentes citadas.
Especificao de Testes
A especificao dos casos de testes pode ser feita em uma
planilha do Excel, em um documento do Word ou at mesmo
em uma ferramenta Wiki. Entretanto, no so boas opes, pois
no possuem algumas funcionalidades interessantes que esto
presentes nas ferramentas especficas. Essas possuem muitas
vantagens em relao s planilhas e documentos, aumentando
a produtividade e a reutilizao dos casos de testes.
Existem vrias opes, como por exemplo, Testlink, HP Quality
Center e o IBM Rational Test Manager. Os principais benefcios
dessas ferramentas so:
Centralizao dos casos de testes;
Reutilizao dos casos de testes;
Customizao dos formulrios de criao dos casos de
testes;
Facilidade de rastreamento de falhas, casos de testes, casos
de uso e requisitos;
Facilidade na busca de casos de testes;
Integraes com outras ferramentas;
Histrico de alteraes.
Testes Estticos
Os testes estticos so aqueles que, diferentemente dos testes
dinmicos, os objetos testados no so executados, mas sim
analisados. Esta anlise pode ser feita por uma pessoa, como
por exemplo, numa simples reviso informal, ou por diversas
pessoas, em uma inspeo formal ou em um walkthrough.
As ferramentas para testes estticos so teis por encontrarem
defeitos mais cedo, ou seja, nas fases iniciais dentro do processo
de desenvolvimento, evitando a proliferao do defeito para
a fase de construo. Essas ferramentas so utilizadas sobre
especificaes formais, por exemplo, modelos de desenho. Normalmente so customizveis o que permite s organizaes
verificarem seus prprios padres e boas prticas. Um exemplo
o check model da ferramenta CASE IBM Rational Rose.
21
Testes Dinmicos
Sempre que se pensa em ferramentas de testes, o que vem em
mente so as ferramentas de automao da execuo dos testes,
mais especificamente os testes funcionais, de caixa preta, que
so categorizadas como ferramentas de testes dinmicos. Nos
prximos itens esse tipo de teste ser destacado.
Um outro tipo de testes que tambm tem uma forte ligao
com a automao so os testes unitrios (caixa branca). So em
sua maioria automatizados, pois teste de unidade um pedao
de cdigo que chama outro pedao de cdigo para verificar seu
comportamento. Existem diversos frameworks que, atravs das
suas APIs, facilitam a criao e a anlise dos resultados. Os frameworks so especficos para cada linguagem de programao.
Atualmente existem mais de 150 para diferentes linguagens.
Entre eles, o JUnit (www.junit.org), bastante conhecido na comunidade Java. Uma lista deles pode ser encontrada no site:
http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks.
Testes No Funcionais
Os requisitos no funcionais tambm so suportados por
ferramentas. Os exemplos mais clssicos so as ferramentas
de automao de testes de performance, testes de stress, de
tempo de resposta, de carga e volume. Sem essas ferramentas,
executar estes testes seria praticamente impossvel. Alguns
exemplos so JMeter e Webload. Elas so capazes de:
Simular um grande nmero de requisies e transaes
em paralelo. possvel definir o nmero de solicitaes ao
longo do tempo, assim como o padro de comportamento de
solicitaes;
Medir o tempo de resposta de solicitaes, como consultas e
relatrios. Alm do tempo de reposta, vrios outros parmetros podem ser medidos, como por exemplo, throughput (bytes
por segundo);
Medir a capacidade mxima do sistema, em termos de memria, CPU, swap etc.;
Identificar os gargalos (bottleneck) do sistema.
Este tipo de ferramenta exige grande capacidade analtica do
profissional de testes. Na maioria das vezes ele ir necessitar
da ajuda de vrios outros profissionais, como por exemplo,
especialistas em rede, em banco de dados e arquitetos e programadores. Aps a identificao do gargalo, quem realmente
ir atuar sero os especialistas.
A automao de testes no escopo do restante deste artigo
tratar apenas da execuo automatizada dos testes dinmicos,
mais especificamente, os testes funcionais.
22
Cuidados
23
forma, devem-se automatizar apenas os mdulos e funcionalidades j estveis para que sejam retestados sempre que
uma nova verso for gerada ou uma nova funcionalidade for
integrada ao sistema. Como j esto estveis, diminui-se a
frequncia de manuteno. Portanto, assegure-se que a maturidade do sistema j se encontre em um estgio em que h
uma minimizao de manuteno dos scripts de testes.
Alm do cenrio de teste de regresso j citado, ideal para
um projeto com entregas incrementais. Aps uma entrega homologada, os testes dessa parte do sistema so automatizados.
Antes da prxima entrega, executam-se os testes automticos
para verificar se a primeira parte j homologada no sofreu
nenhum impacto colateral. Automatizar o sistema ao mesmo
tempo em que desenvolvido no vivel.
4. A execuo dos testes automticos no substitui a execuo dos testes manuais. Eles se complementam. Talvez essa
seja a maior falha das pessoas leigas a respeito da automao
de testes!
Adotando apenas os testes automticos a qualidade dos testes
cai consideravelmente, pois se perde a criatividade e percepo
humana na execuo manual. Os testes automticos testam apenas aquilo que foi programado para ser testado. Qualquer outra
alterao e variao no software testado no so percebidas por
ele. Normalmente, na execuo manual guiada por um caso de
testes escrito, muitas falhas perifricas ao objetivo principal
do caso de teste so encontradas, devido, principalmente, capacidade analtica e a curiosidade do testador. E isso perdido
se apenas forem executados testes automticos. Alm disso, esse
efeito negativo ampliado se o responsvel pelo script no tiver
experincia em testes, pois como no pensa como um testador,
no ir conseguir traduzir para o seu script as boas ideias.
5. invivel automatizar todos os testes. Isto se deve a dois
fatores principais. O primeiro o custo, que seria muito alto.
No existe projeto que se daria ao luxo de automatizar tudo que
um testador normalmente testa de forma manual. Normalmente
se automatiza o fluxo principal e os mais importantes fluxos
alternativos. Algumas mensagens ao usurio (erros, alertas e
informaes) e regras de negcios (principalmente clculos)
tambm so comumente automatizadas. Justamente o necessrio para um teste de regresso, como dito anteriormente.
O segundo fator devido a restries de tecnologia. Por
exemplo, testar valores apresentados em grficos na forma de
imagens, aplicativos em flash, ou layouts de relatrios em PDF.
Alguns podem at dizer ser possvel, mas no vale a pena.
6. A automao aumenta a probabilidade de falha nos testes,
pois a falha pode estar no prprio script de automao. Dessa
forma deve-se ter rigor ao criar os scripts de testes, para evitar:
Falsos negativos: Os testes automticos acusam falhas no
sistema, mas na verdade no existe falha alguma;
Falsos positivos: Os testes omitem falhas que existem no
sistema.
O primeiro caso menos problemtico, pois como a falha
acusada, torna-se possvel verificar que realmente no uma
falha, e o script pode ser corrigido a tempo. No segundo, a
24
Concluso
A ideia que deve ficar clara na cabea de todos que s vale
a pena automatizar os testes se os mesmos forem executados
vrias vezes. No tem sentido automatizar os testes para
que sejam executados apenas uma, duas ou trs vezes, pois
o custo de automatizar um teste bem maior que realiz-lo
manualmente. Essa diferena depende do produto e da tcnica
utilizada. Dessa forma, o teste automtico s ser pago se
www.devmedia.com.br/esmag/feedback
sobre e
s
Referncias
BACH, James; Test Automation Snake Oil - v2.1. Windows Tech Journal, 1996.
BOEHMER Bill; PATTERSON Bea; Software Test Automation Developing an Infrastructure
Designed for Success. Siemens Building Technologies, Inc. 1999.
CAMPOS, Fernando; NETO, N. Signorini; Pitfalls and Strategies in automated Testing, Instituto de
Pesquisas Tecnolgicas do Estado de So Paulo.
DAIGL, Matthias; The Road to Successful Test Automation - 10 Pitfalls Test Managers Should be
Aware of. Imbus AG, Moehrendorf, Germany, 2002.
FEWSTER, Mark; Common Mistakes in Test Automation. Grove Consultants Llandeilo, UK, 2001.
GARTNER, Magic Quadrant for Integrated Software Quality Suites, Gartner RAS Core Research
Note G00169077, Thomas E. Murphy, 31 July 2009.
Feedback
eu
edio
ta
D
s
HENDRICKSON, Elisabeth; The Differences Between Test Automation Success and Failure, Quality
Tree Consulting, San Diego, CA: 1998.
MARICK, Brian; When Should a Test Be Automated? Testing Foundations, 1998.
KANER, Cem; Improving the Maintainability of Automated Test Suites. Quality Week, 1997.
25
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
Eliane Collins
elianecollins@gmail.com
Luana Lobo
lulobaum@gmail.com
26
Programao Exploratria
A Programao Exploratria um tipo
de Modelo Evolucionrio de desenvolvimento de software o qual tem como base
desenvolver um sistema apresentando
as verses ao usurio, que far comentrios para o aprimoramento e modificaes at que o sistema seja considerado
adequado.
Processo de Testes
O processo de testes para o ProjetoSW foi organizado de
modo que as funcionalidades definidas pelo usurio a cada
verso do sistema pudessem ser atendidas, garantindo que
os aprimoramentos feitos no afetariam o funcionamento de
todo o sistema, ou seja, testes de regresso seriam atividades
essenciais. A cada liberao de verso, extra ou oficial, a equipe
de teste se comunicava com a equipe de desenvolvimento para
saber se requisitos anteriores tinham sido modificados e se tinham sido desenvolvidas novas funcionalidades. Isso era feito
pela falta de uma documentao de referncia do sistema.
Em paralelo implementao foi iniciado o planejamento das
atividades de teste onde foram definidos os recursos alocados,
mtricas, estratgia de teste, as ferramentas e os artefatos a serem usados para o projeto. As atividades de teste seriam feitas
por uma analista de teste responsvel pelo processo, anlise e
documentao e uma testadora responsvel por automatizar
os casos de teste. As ferramentas, todas opensource, escolhidas de acordo com a experincia da equipe e a plataforma do
projeto foram:
TestLink: ferramenta para gerenciamento do Plano de Teste.
Com ela possvel criar e gerenciar facilmente os Casos de
Teste e o ciclo de execuo do seu Plano de Teste;
27
28
A Figura 2 traz as configuraes da aba Project, onde possvel configurar o nome, diretrio, descrio e o tipo de script
do projeto de teste. Para o ProjetoSW, a linguagem de script
escolhida foi Jython.
A Figura 3 mostra a aba Main. nesta tela que as principais
configuraes do projeto a ser testado so informadas ao Marathon. Para o ProjetoSW a nica configurao necessria foi
a localizao da classe principal do projeto.
A Figura 4 mostra a aba Class Path. Nesta aba devem ser
acrescentados as libs e jar necessrios para a execuo da
aplicao. Observe que deve ser gerado um .jar do projeto
(7.0.2CPFRFileGenerator.jar) a ser testado. Este deve ser adicionado no classpath do projeto de teste. no classpath que
o Marathon vai buscar a classe principal informada na aba
Main.
Ao fazer todas as configuraes necessrias, o projeto salvo
e a interface grfica do Marathon exibida (Figura 5). Neste
momento um arquivo chamado defaul.py criado automaticamente para o projeto. Trata-se de uma fixture, um recurso do
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
29
# {{{
#
Continuao
# }}}
if window(CPFR File Generator):
select(mapping_main2, true)
for i in range(0, 4):
if window(CPFR File Generator):
doubleclick(Table+str(i+1), {+ str(i) +, Customer Product Code})
sleep(1)
select(Table+str(i+1), map, {+ str(i) +, Customer Product Code})
close() # end if
close() # end for
close() # end if
# {{{
#
Continua na prxima listagem
# }}}
30
# {{{
#
Continuao
# }}}
i f window(CPFR File Generator):
s elect(export_main2, true)
c lick(bot_folder_normal21)
i f window(Open):
s elect(FileChooser, C:/Users/llobao/Desktop)
c lose()
c lick(bot_export_normal2)
i f window(Message):
c lick(OK)
c lose()
close()
# {{{
#
Fim
# }}}
31
Resultados obtidos
Com a adio do processo de testes, foi observado no decorrer
do projeto ganhos, primeiramente, no sentido de aumentar
a segurana da equipe e do cliente, alm de assegurar que o
que foi desenvolvido estava funcionando corretamente e em
conformidade com o que havia sido solicitado.
Atravs da automao de testes ganhamos tempo na execuo
conseguindo cobrir 100% das funcionalidades solicitadas pelo
cliente e ainda realizar testes exploratrios visando usabilidade da interface. No entanto, vale destacar que no decorrer
do projeto, com as vrias mudanas nos requisitos funcionais,
muitos scripts tiveram que ser reescritos.
Mesmo com a necessria atualizao dos scripts de teste,
a prtica no prejudicou a equipe e nem o teste das novas
verses. Isso ocorreu pelo fato da regresso ser maior para
scripts de funcionalidades j estveis. Com o ganho do tempo
na execuo da regresso destes scripts estveis, foi possvel
utilizar o tempo restante para corrigir e/ou criar scripts para
funcionalidades ainda em fechamento.
32
Concluso
Neste artigo foi mostrado um processo de teste adequado
a um projeto de software desenvolvido a partir da Programao Exploratria. Isso precisava ser feito para que fosse
possvel atingir um nvel mnimo de qualidade. Um dos
mais importantes ajustes foi a deciso de automatizar as
atividades de teste. Portanto, o planejamento do Processo
de Teste e a Execuo dos seus ciclos foram automatizados,
o que garantiu a otimizao no tempo da equipe de teste
na execuo de todo o processo.
Outra adequao feita foi sobre o conceito de verso
intermediria existente na Programao Exploratria. Atividades do Processo de Teste foram feitas nessas verses,
o que possibilitou o amadurecimento e estabilidade do
sistema. Isso facilitou a identificao de muitos defeitos
atravs da regresso automtica e dos testes exploratrios,
fazendo com que a cada entrega a verso final ficasse mais
estvel.
Com a mudana de requisitos do Projeto de Software,
tambm previsto na Programao Exploratria, houve uma
Feedback
eu
edio
ta
D
s
www.devmedia.com.br/esmag/feedback
Referncias
Sommerville, I., Engenharia de Software, 6 edio, 2004
Silva, D., Alves, R., Pimentel, R., Uma Anlise Das Recomendaes dos Nveis G e F do MPS.BR para
a Implemnetao do Programa de Qualidade, 2008.
http://www.cci.unama.br/margalho/portaltcc/tcc20081s/pdf/tfg1032008.pdf
TestLink Documentation.TEAMST - Home of TestLink developers Community - http://www.teamst.org/
Madalena, M., Pachecho, R., Uma metodologia para o desenvolvimento de sistemas de descoberta
de conhecimento, Maring, v. 27, n. 1, p. 61-72, Jan./June, 2005
http://periodicos.uem.br/ojs/index.php/ActaSciTechnol/article/viewFile/1500/857
Rios, E., Usando o MPS.BR para amadurecimento das equipes de teste de software - http://
www.iteste.com.br/Portals/0/Avaliando%20o%20n%C3%ADvel%20de%20maturidade%20das%20
equipes%20de%20teste%20de%20software%20usando%20o%20modelo%20MPS%20v%204.pdf
33
sobre e
s
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
Qualidade de Software
Desvendando um requisito essencial no processo de desenvolvimento
Lenildo Morais
lenildojmorais@gmail.com
34
Qualidade de Software
Conceituar qualidade de fato uma tarefa complexa, mas
ela pode ser vista como um mtodo gerencial que atravs de
procedimentos disseminados por toda a organizao, busca
garantir um produto final que satisfaa s expectativas do
cliente, dentro daquilo que foi acordado inicialmente.
No contexto de desenvolvimento de software, qualidade pode
ser entendida como um conjunto de caractersticas a serem
satisfeitas, de modo que o produto de software atenda s necessidades de seus usurios. Entretanto, tal nvel de satisfao nem
sempre alcanado de forma espontnea, devendo ser continuamente construdo. Assim, a qualidade do produto depende
fortemente do seu respectivo processo de desenvolvimento.
Devido ao processo de globalizao e consequente aumento
de empresas concorrentes, a qualidade, hoje em dia, crtica
para a sobrevivncia e o sucesso no mercado de software.
Portanto, uma organizao no se destacar neste mercado
a menos que produza software de boa qualidade e que seus
clientes percebam isso nos seus produtos e servios. Neste
contexto, h algumas razes que devem ser consideradas:
Qualidade competitividade: Uma forma do produto se
destacar atravs da qualidade do software e do suporte que
fornecido com ele. Com o amadurecimento do mercado,
os usurios no querem apenas que a empresa fale que tem
qualidade, mas que mostre a todos que a tem atravs de certificao internacional. No ter uma certificao pode acarretar
em desvantagem competitiva;
Qualidade essencial para a sobrevivncia: Clientes esto
buscando por qualidade. Se a empresa no tiver habilidade de
sobreviver em um mercado altamente competitivo, ela est em
dbito com o mercado. A maioria das grandes organizaes
est reduzindo o nmero de fornecedores, e um meio de escolher os fornecedores verificando quais deles tm certificaes
de qualidade;
Qualidade essencial para o mercado internacional: O
mercado de software est cada vez mais se expandindo, se
tornando global. A habilidade das empresas de mostrar qualidade possibilita sua colocao no mercado;
Qualidade custo/benefcio: Um sistema de qualidade
direciona para o aumento da produtividade e permanente
reduo de custos, dando nfase preveno de inconsistncias no desenvolvimento e, consequentemente, de defeitos.
A maior parte das empresas sabe que corrigir defeitos aps
o desenvolvimento do software mais dispendioso do que
identific-los e corrigi-los antes;
Qualidade retm consumidores e aumenta lucros: Pouca qualidade normalmente custa muito mais. A maioria dos clientes no
35
36
COMENTRIOS
ISO 9126
NBR 13596
ISO 14598
ISO 12119
IEEE P1061
ISO 12207
NBR ISO 9001
NBR ISO 9000-3
NBR ISO 10011
CMMI
CARACTERSITICAS
SUBCARACTERSTICAS
Funcionalidade
Adequao
O conjunto de funes satisfazem as necessidades explcitas e implcitas Acurcia
Interoperabilidade
para a finalidade a que se destina o produto?
Segurana de acesso
Conformidade
Confiabilidade
Maturidade
O desempenho se mantm ao longo do tempo e em condies Tolerncia a falhas
Recuperabilidade
estabelecidas?
Usabilidade
Inteligibilidade
Apreensibilidade
fcil utilizar o software?
Operacionalidade
Eficincia
Comportamento em relao ao tempo
Os recursos e os tempos utilizados so compatveis com o nvel de Comportamento em relao aos recursos
desempenho requerido para o produto?
Manutenibilidade
H facilidade para correes, atualizaes e alteraes?
Portabilidade
possvel utilizar o produto em diversas plataformas com pequeno
esforo de adaptao?
Analisabilidade
Modificabilidade
Estabilidade
Testabilidade
Adaptabilidade
SIGNIFICADO
Prope-se a fazer o que apropriado?
Gera resultados corretos ou conforme acordados?
capaz de interagir com os sistemas especificados?
Evita o acesso no autorizado, acidental ou deliberado a programas
e dados?
Est de acordo com normas e convenes previstas em leis e
descries similares?
Com que frequncia apresenta falhas?
Ocorrendo falhas como ele reage?
capaz de recuperar dados aps uma falha?
fcil entender os conceitos utilizados?
fcil aprender a usar?
fcil de operar e controlar a operao?
Qual o tempo de resposta e de processamento?
Quanto recurso utiliza?
fcil encontrar uma falha quando ocorre?
fcil modificar e remover defeitos?
H grandes riscos de bugs quando se faz alteraes?
fcil testar quando se faz alteraes?
fcil adaptar a outros ambientes sem aplicar outras aes ou
meios alm dos fornecidos para esta finalidade no software
considerado?
fcil instalar em outros ambientes?
fcil substituir por outro software?
Est de acordo com padres ou convenes de portabilidade?
37
NORMA
ISO/IEC 14598
PROCESSO
1) Viso Geral A primeira parte da norma ensina a utilizar as outras normas do grupo. Ela apresenta a estrutura de funcionamento da srie de normas para a avaliao da qualidade do
produto de software, assim como apresenta a definio de termos tcnicos utilizados no modelo.
Deve ser usada em conjunto com a ISO/IEC 9126 por todos aqueles que necessitem verificar a qualidade do produto de software.
2) Planejamento e Gerenciamento A segunda parte apresenta como fazer uma avaliao, de forma geral. A norma apresenta requisitos, recomendaes e orientaes para a funo de
suporte ao processo de avaliao do produto de software. O suporte refere-se ao planejamento e a gesto do processo de avaliao e a tecnologia necessria para realizao da avaliao.
3) Guia para Desenvolvedores A terceira parte da norma prope como avaliar sob o ponto de vista de quem desenvolve. Para isso, o desenvolvedor define as condies sob as quais as
medies sero executadas.
Esta norma tem o objetivo de definir, acompanhar e monitorar a qualidade durante o processo de desenvolvimento do software.
4) Guia para Aquisio Avaliar sob o ponto de vista de quem vai adquirir o software. Esta quarta parte da norma divide-se em duas outras partes. A primeira refere-se aquisio de
software de prateleira, e a segunda aquisio de software sob encomenda ou manuteno de softwares existentes.
muito usada na aceitao ou seleo de um produto de software.
5) Guia para Avaliao O guia de avaliao apoia as empresas certificadoras no processo de avaliao sob o ponto de vista de quem certifica. Fornecendo requisitos e recomendaes para
implementao prtica da avaliao do software. Deve ser usada para a definio e acompanhamento de um processo de avaliao.
38
Feedback
eu
sobre e
s
Referncias
D
s
Concluso
edio
ta
Desenvolvimento
Nesta seo voc encontra artigos voltados para diferentes
abordagens de apoio ao desenvolvimento de projetos de software
Diagramas de Sequncia
Uma Abordagem Prtica
De que se trata o artigo?
39
Todavia, de uma forma quase absoluta, trs dos tipos disponveis de diagramas devem sempre fazer parte da documentao de projeto de um sistema: os Diagramas de Casos de
Uso, juntamente com as respectivas descries detalhadas,
os Diagramas de Classes, e um de dois tipos de diagramas de
interao: os Diagramas de Comunicao ou os Diagramas de
Sequncia. Embora esses dois tipos de diagramas tenham a
mesma semntica, a prtica parece ter consagrado a escolha
dos diagramas de sequncia, por serem mais facilmente interpretados e compreendidos. Entretanto, nos meios acadmico e
profissional detecta-se, ainda hoje, uma grande dificuldade ao
adotar a criao de Diagramas de Sequncia.
Diagramas de Sequncia so muito teis em fornecer suporte real implementao e em constituir rica documentao de
alto nvel. Eles representam os objetos participantes de uma
colaborao enquanto emitem e recebem mensagens no intuito de realizar um caso de uso. As mensagens so apresentadas
em sua ordem temporal, o que facilita a compreenso do fluxo
de controle do caso de uso. A maior dificuldade associada
sua criao parece estar relacionada ao grau de detalhamento
a ser aplicado a esses diagramas. Mas pode-se adotar uma
perspectiva prtica para criao de uma documentao realmente til, e que no se torne uma tarefa ainda mais rdua
do que a prpria codificao do sistema.
Identificando as dificuldades
O problema tem duas perspectivas diferentes. No ambiente
organizacional, de produo, observa-se que o desenvolvimento de diagramas de sequncia muito detalhados tornase uma atividade penosa e contra producente. O tempo
despendido nessa atividade acaba por tornar-se superior
ao da prpria codificao. Ainda aqui, o principal causador
do grande tempo demandado parece ser o detalhamento
exagerado dos diagramas. Faz-los completos e detalhados
trabalhoso e difcil, alm de gerar documentao volumosa
e quase sempre preterida, em favor de um processo mais
gil de desenvolvimento.
O resultado de sua supresso radical dos artefatos do
sistema igualmente danosa, pois permite equipe de
programao, entre diversos outros problemas, resolver de
modo diferente diversas situaes de programao onde a
padronizao traria benefcios inequvocos. Uma concluso incipiente sobre sua utilizao ou no, aponta para a
necessidade de equacionar de forma mais pragmtica seu
uso nos projetos.
No ambiente acadmico, a principal dificuldade encontrada est fundamentada na total falta de unanimidade sobre
criao de diagramas de sequncia descrita na literatura
tcnica, assim como em centenas de exemplos de utilizao
disponveis atravs da Internet. Uma primeira anlise se
refere ao escopo de utilizao dos Diagramas de Sequncia.
Algumas fontes demonstram a utilizao desses diagramas
em um nvel exageradamente macro, aproximando-os dos
antigos Diagramas de Contexto da Anlise Estruturada. Um
exemplo dessa utilizao pode ser visto na Figura 1.
40
O diagrama apresentado utiliza de forma incorreta ou inadequada uma srie de elementos da notao de Diagramas de
Sequncia, notadamente a representao do prprio sistema
como um objeto, alm do banco de dados inteiro da mesma
forma. Todavia, esta no a viso mais til e correta dos Diagramas de Sequncia. A verdadeira utilidade de tais diagramas est na representao do fluxo de comunicao entre
objetos de uma comunidade, chamada de colaborao, com
o intuito de realizar um caso de uso. Entretanto, necessrio
que se adote aqui uma perspectiva prtica e gil de maneira
a garantir produtividade no desenvolvimento e ainda assim
gerar documentao til.
PROJETO
41
CriarMatcula (CSU001)
Sumrio: O aluno solicita do sistema, sua matrcula em uma determinada disciplina. O sistema verifica se o aluno possui os pr-requisitos necessrios e em caso afirmativo registra a matrcula.
Ator Primrio: Aluno
Pr-condies: O aluno est logado no sistema.
Figura 4. Disposio inicial dos objetos participantes da colaborao
Fluxo Principal
1. O aluno solicita o formulrio (tela) de matrcula.
2. O sistema solicita um cdigo de disciplina.
3. O aluno fornece um cdigo de disciplina.
4. O sistema exibe o nome completo (descrio) da disciplina.
5. O sistema verifica a grade do curso para conhecer os pr-requisitos para aquela disciplina.
6. O sistema verifica o histrico do aluno para determinar se ele
possui os pr-requisitos necessrios.
7. Se sim, o sistema registra a nova matrcula, emite uma mensagem
de aceitao.
8. O sistema oferece alternativa de mais matrculas ou de encerramento.
10. O aluno seleciona encerramento e o caso de uso se encerra.
Fluxo Alternativo: O aluno seleciona mais matrculas e o caso de
uso retorna ao passo 2 (pode acontecer no passo 8).
Fluxo de exceo: O aluno no possui os pr-requisitos (pode
acontecer no passo 6).
1. O sistema reporta essa situao e retorna ao passo 8.
Ps-condies: As matrculas efetuadas tornam-se disponveis aos
coordenadores de curso para avaliao.
Regras de Negcio: Um aluno no pode se matricular em disciplinas
que no tenha cursado seus pr-requisitos.
Quadro 1. Especificao do caso de uso CriarMatrcula
42
PROJETO
Representando os retornos
As linhas que aparecem abaixo dos objetos participantes so
de duas naturezas. Uma delas, pontilhada, a linha de vida
do objeto e representa o perodo de tempo em que o objeto
vive. Quando um caso de uso inicia, a presena de diversos
objetos emparelhados com o ator principal significa que tais
objetos foram instanciados e/ou materializados em algum
momento antes do incio do caso de uso e, na ausncia de
uma mensagem explcita de destruio (destroy), os objetos
permanecem em memria aps a finalizao do caso de uso.
bom lembrar aqui que um objeto s existe em tempo de
execuo, uma entidade puramente dinmica. Se um objeto
precisa ser instanciado durante o transcorrer do caso de uso,
uma mensagem especial de criao (create) emitida e o objeto
posiciona-se abaixo daqueles j existentes. Create um mtodo
construtor de uma determinada classe. Outro elemento sobre
a linha de vida uma barra retangular denominada foco de
controle. Ela representa o tempo durante o qual o objeto sobre
ela realiza tarefas solicitadas por outros objetos. Na prtica,
enquanto o objeto est ativo podem existir focos de controle
simultneos. Nos Diagramas de Sequncia, fluxos de controle
simultneos aparecem como barras de foco de controle paralelas e contnuas.
A mesma Figura 5 anterior apresenta esses elementos identificados atravs de notas explicativas, um mecanismo bsico
da UML para melhorar a legibilidade de quaisquer elementos
da linguagem.
Existem duas maneiras de representar retornos nos Diagramas de Sequncia. Uma delas por intermdio da adio
de uma linha pontilhada com direo de retorno, e outra a
interrupo do foco de controle sobre a linha de vida de um
objeto. Na verdade, a cada interrupo do foco de controle,
fica implcito um retorno, motivo pelo qual ele no tem representao obrigatria. A Figura 6 apresenta os retornos sendo
representados das duas maneiras citadas, para exemplificao.
A ferramenta CASE StarUML no faz qualquer distino entre
mensagens sncronas e assncronas.
43
Conforme citado anteriormente, o fluxo de controle associado a uma sequncia como um script de coordenao de
aes destinadas a realizar um caso de uso. Detalhes desse
fluxo de controle podem ser representados nos Diagramas de
Sequncia utilizando-se um elemento grfico denominado
fragmentos combinados. Atravs dele, define-se o fluxo de
controle da interao.
A notao para fragmentos a mesma dos quadros, mas com
operadores diferentes: um retngulo com uma aba superior
esquerda. Dentro da aba, usa-se um operador que reger a
operao descrita dentro do quadro. Embora existam outros
operadores, os mais comumente usados so: alt para estruturas se-ento-seno, opt para estruturas se-ento, e loop para
estruturas de repetio. Dependendo do operador sendo utilizado na aba, o retngulo pode ser dividido em sub-quadros
denominados operandos. Quando existirem operandos, eles
so separados por linhas tracejadas dentro do retngulo principal, e cada um deles deve conter uma expresso denominada
expresso de guarda. Uma expresso de guarda representa
uma condio necessria para que os aes dentro de um
operando sejam executadas.
44
frmMatricula
: Aluno
1 : Iniciar()
ctrMatricula
: Disciplina
: Historico
: Grade
: Matricula
2 : Matricular()
3 : codDisc
4 : getDescDisc()
5 : DescDisc
6 : getPreReq()
7 : getHist()
8 : ret
alt
9 : setMatricula()
[ret=TRUE]
[ret=FALSE]
10 : MSG-OK
11 : MSG-NOTOK
PROJETO
Concluso
A UML uma riqussima coleo de ferramentas de modelagem de sistemas. Entretanto, para gerar diagramas coesos
e teis, deve-se adotar um grau de detalhamento adequado
ao projeto em questo, como forma de propiciar correo e
agilidade, mantendo o projeto dentro de seu cronograma, sem
sacrificar a sua documentao.
Qualquer ferramenta de modelagem deve ter seu uso customizado ao projeto onde empregada. No se faz necessrio, principalmente nas organizaes, empregar de forma absoluta todas
as suas potencialidades. Usam-se as caractersticas consideradas
teis e produtivas, sem descaracterizar o seu emprego.
A grande maioria dos projetos de sistemas de informao
nas reas administrativa e comercial, pode ser especificada
com seis diagramas UML: um Diagrama de Casos de Uso,
um Diagrama de Classes, um Modelo de Interaes composto
de Diagramas de Sequncia, um Diagrama de Mquina de
Estados, quando aplicvel, um Diagrama de Atividades e um
Diagrama de Implantao.
Nesse contexto, os Diagramas de Sequncia so os mais
numerosos, o que justifica a adoo de uma estratgia de simplificao de seu uso de modo a torn-los utilizveis.
Toda e qualquer combinao de notaes teis so sempre bem
vindas ao projeto em execuo. Usando a linguagem com bom
senso e com critrio, notaes e prticas diferentes podem ser
combinadas e testadas pelas equipes de desenvolvimento visando sempre a produtividade e a qualidade do produto final.
Referncias
BEZERRA, Eduardo. Princpios de anlise e projeto de sistemas com UML. 2.ed. Rio de Janeiro:
Elsevier, 2007. 370p.
BOOCH, Grady; RUMBAUGH, James; Jacobson, IVAR. UML: Guia do Usurio. 2.ed. Rio de Janeiro:
Campus, 2006. 474p.
Feedback
eu
edio
ta
D
s
FOWLER, Martin. UML essencial: um breve guia para a linguagem padro de modelagem de
objetos. 3.ed., Porto Alegre: Bookman, 2006. 160p.
www.devmedia.com.br/esmag/feedback
45
sobre e
s
Desenvolvimento
Nesta seo voc encontra artigos voltados para diferentes
abordagens de apoio ao desenvolvimento de projetos de software
46
DESENVOLVIMENTO
Nota do DevMan 1
Refatorao relembrando conceitos importantes
Refatorao (do ingls Refactoring) o processo de modificar um sistema de
software para melhorar a estrutura interna do cdigo sem alterar seu comportamento externo.
O uso desta tcnica aprimora a concepo (design) de um software e evita a deteriorao to comum durante o ciclo de vida de um cdigo. Esta deteriorao
geralmente causada por mudanas com objetivos de curto prazo ou por alteraes
realizadas sem a clara compreenso da concepo do sistema.
Outra consequncia a melhora no entendimento do cdigo, o que facilita a
manuteno e evita a incluso de defeitos. Esta melhora no entendimento vem da
constante alterao do cdigo com objetivo de facilitar a comunicao de motivaes, intenes e objetivos por parte do programador.
Nota do DevMan 2
Substituir Construtores por Mtodos de Criao.
No artigo da edio de numero 28 da revista Engenharia de Software Magazine,
foi apresentada a primeira das 27 tcnicas de refatorao para padres, Substituir
Construtores por Mtodos de Criao. Seguindo uma sequencia, neste artigo ser
apresentada a segunda e a terceira tcnicas de refatorao para padres, Mover
Conhecimento de Criao para Factory e Encapsular Classes com Factory.
Mover Mtodo
As tcnicas de refatorao para padres que sero apresentadas neste artigo, Mover conhecimento de criao para
Factory e Encapsular classes com Factory, possuem, assim
como as demais, uma srie de passos que demonstram como
aplic-las, e um dos passos envolve a aplicao da tcnica de
refatorao Mover Mtodo. Dessa forma, faz-se necessrio
que o desenvolvedor veja um exemplo prtico da aplicao
desta refatorao.
Resumo: Mover mtodo uma refatorao indicada para
momentos em que o desenvolvedor se depara com mtodos
que esto fazendo uso excessivo de informaes vindas de
outras classes. Nesse contexto, esta refatorao permite que o
mtodo seja movido para outra classe, a fim de que ele passe
a pertencer classe que mais prov informaes para que ele
funcione.
Motivao: Classes que possuem diversas funcionalidades
podem acabar carregando informaes alm das que naturalmente deveriam conter. Alguns mtodos existentes nessas
classes acabam fazendo com que ela seja usada mais do que o
normal, e isso a torna mais complexa de ser analisada. Neste
contexto, movem-se os mtodos que no devem fazer parte de
uma classe para outra classe.
Mecnica:
O primeiro passo consiste em analisar a classe que contm
o mtodo que ser movido. Neste caso, busca-se por recursos
47
Extrair Mtodo
Extrair Mtodo, outra tcnica de refatorao, utilizado no
processo de aplicao da tcnica de refatorao para padres
Encapsular classes com Factory. Por conta disto, precisamos
entend-lo antes de analisar a refatorao para padro Encapsular classes com Factory.
Resumo: A refatorao Extrair Mtodo permite a criao
de novos mtodos com nomes compatveis com a funo do
mtodo.
Motivao: muito comum encontrar em trechos de cdigo
alguns mtodos que esto como mais responsabilidades do
que deveriam ter. Com isso, torna-se complicado entender
qual o real objetivo do mtodo. Extrair mtodo sugere que
um novo mtodo seja extrado deste trecho de cdigo e que
o mesmo passe a possuir parte do cdigo do mtodo que se
est refatorando, permitindo que cada mtodo possua uma
responsabilidade.
Mecnica:
Identifica-se um mtodo que possua mais de uma responsabilidade. Cria-se um novo mtodo com um nome compatvel com a responsabilidade extra do mtodo que se est
analisando.
O cdigo que possui a responsabilidade que se est retirando
do mtodo analisado, agora deve ser copiado para o mtodo
recm criado.
Analisa-se o cdigo movido e verifica-se se h variveis que
esto declaradas no mtodo original. Se sim, o mtodo criado
deve ter parmetros como os das variveis encontradas.
No mtodo novo, deve-se verificar a existncia de declarao
de variveis. Se existir, devem ser modificadas para que sejam
destrudas aps a execuo do mtodo.
No lugar do cdigo que foi extrado do mtodo original, agora
deve haver uma chamada ao novo mtodo. Terminado todo o
processo, deve-se compilar o cdigo e testar a aplicao.
Exemplo: O exemplo de cdigo que ser apresentado pertence a um software financeiro. Em uma determinada classe
foi encontrado um mtodo que recebe como parmetro um
ArrayList de notas e calcula a mdia dessas notas, como mostra
a Listagem 4.
Analisando o mtodo da Listagem 4, percebe-se que ele
possui duas responsabilidades: uma a de calcular a mdia
e a outra a de exibir os resultados. Nota-se que o nome do
mtodo diz que ele calcula a mdia, mas no quer dizer que
48
DESENVOLVIMENTO
12.
13.
14.
15.
16.
17.
18.
}
public void ExibeResultados(Int32 quantidadeNotas, Decimal mdia)
{
Console.WriteLine(Quantidade de notas: + quantidadeNotas);
Console.WriteLine(Mdia : + mdia);
Console.Read();
}
Desvantagens: Aumenta a complexidade do cdigo em situaes onde instanciar o objeto diretamente ao invs de usar uma
Factory suficiente.
Mecnica:
1. Dada a definio de instanciador, que uma referncia a classes
que ajudam outras classes no momento de instanciar um objeto,
verifica-se se ele o faz atravs de um mtodo de criao ou um
construtor. Caso no seja um mtodo de criao, deve ser modificado para um. Compila-se a aplicao e executam-se os testes.
2. Cria-se uma classe Factory (classe que ser a responsvel por
carregar as informaes sobre como instanciar seus objetos).
Deve-se cuidar para que o nome da classe Factory seja condizente
com sua responsabilidade.
3. Aplica-se a refatorao Mover Mtodo com intuito de levar o
mtodo de criao para a classe Factory. Caso o mtodo movido
seja esttico, pode-se defini-lo como no-esttico, caso necessrio.
Compila-se a aplicao.
4. Depois da compilao do passo 3, os instanciadores agora
no mais sero capazes de instanciar um objeto, pois o mtodo
ao qual eles fazem referncia no est mais na classe que antes
estava, portanto deve-se ajust-los para que passem a referenciar
a classe Factory.
5. Procura-se por outras classes no sistema, mtodos e informaes que fazem parte do processo de instanciao de um objeto.
Se encontrado, move-se todo esse cdigo para a classe Factory.
Exemplo: Considere a classe Funcionarios. Ela contm
um mtodo instanciador que responsvel por instanciar
um objeto Funcionrio, dependendo do seu tipo. Caso o
49
50
DESENVOLVIMENTO
51
Depois de aplicada esta refatorao, a superclasse da hierarquia agora tambm uma classe Factory, que passa a ter a
responsabilidade de ser o nico ponto de acesso que se pode
usar para instanciar objetos de uma das suas subclasses que,
a partir de ento, esto encapsuladas.
Concluso
O padro Factory traz muitos benefcios para quem o utiliza. Muitos desenvolvedores apenas o implementam quando
esto criando cdigo novo e percebem a sua importncia no
projeto.
As refatoraes para padres apresentadas neste artigo,
aliadas s tcnicas de refatorao Mover Mtodo e Extrair
Mtodo, mostram uma nova forma de trabalhar com uma
Factory, que implementando-a a partir da refatorao de
cdigo j em uso.
Referncias Bibliogrficas
KERIEVSKY, Joshua. Refatorao para Padres, 1ed. Porto Alegre: Bookman, 2008.
D
s
FOWLER, Martin. Refatorao: aperfeioando o projeto de cdigo existente, 1ed. Porto Alegre:
Bookman, 2004.
Feedback
eu
edio
ta
52
GAMMA, Erich, 2000. Padres de Projeto: solues reutilizveis de software orientado a objetos,
1ed. Porto Alegre: Bookman, 2000.
sobre e
s
DESENVOLVIMENTO
53
54