Académique Documents
Professionnel Documents
Culture Documents
PS- GRADUAO
Engenharia de Software:
Desenvolvimento Java
Engenharia de Software:
Desenvolvimento .NET
GRADUAO
Engenharia de Computao
Anlise e Desenv. de Sistemas
F ORMAES
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
pais diferenas entre a atividade de testes antes e depois das metodologias geis
(principalmente o SCRUM). Estes pontos (diferenas) so citados com o intuito
Ano 3 - 34 Edio - 2011
Impresso no Brasil
Corpo Editorial
Colaboradores
Rodrigo Oliveira Spnola
Marco Antnio Pereira Arajo
Eduardo Oliveira Spnola
Pensar nos testes como uma atividade incremental desde o momento de estimar
para o bom andamento da sprint e para a mudana de viso dos profissionais
da rea.
Por fim, veremos neste artigo os benefcios encontrados na alocao de analistas
Capa e Diagramao
Romulo Araujo - romulo@devmedia.com.br
de testes dentro dos times geis que podem ser resumidos em: (1) Integrao
do time, (2) Participao mais direta e ativa do profissional que est testando o
Coordenao Geral
Daniella Costa - daniella@devmedia.com.br
software, (3) Profissionais que esto desenvolvendo cdigo tambm esto inte-
Revisor
Gregory Monteiro - gregory@clubedelphi.net
Caroline Velozo - carolinelopes@devmedia.com.br
Jornalista Responsvel
Kaline Dolabella - JP24185
Na Web
www.devmedia.com.br/esmag
ressados em aprender sobre testes, (4) Profissionais que esto testando cdigo
todo o time de desenvolvimento com testes, (6) Analistas de Teste deixaram de
ser reativos para serem pr-ativos.
Voc tem Semancol?
Alternativas para reduo de problemas na manuteno de software
Apoio
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:
Isabelle Macedo e Uellen Goulart 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
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.
Caro Leitor,
NDICE
Por trs do bvio
06 Voc tem Semancol?
Glnio Cabral
Agilidade
Engenharia
14 - Desenvolvimento de Software Apoiado por Groupware
Gabriella Castro Barbosa Costa e Marco Antnio Pereira Arajo
Tipo: Processo
Ttulo: Especificao de casos de uso na prtica Partes 16 a 20
Autor: Rodrigo Oliveira Spnola
Mini-Resumo: Definir requisitos no uma atividade trivial. Uma das
formas de realizar esta atividade atravs da especificao de casos de
uso. Neste sentido, nesta srie de vdeo aulas apresentaremos um conjunto
de especificaes de casos de uso. Os cenrios sero especificados passo
a passo considerando tpicos como fluxo principal, fluxo alternativo e
regras de negcios.
Desenvolvimento
38 - Refatorao para Padres Parte 7
Jacimar Fernandes Tavares e Marco Antnio Pereira Arajo
46 - Tratamento de Excees
Jacimar Fernandes Tavares e Marco Antnio Pereira Arajo
Administrador de Empresas, ps-graduado em Gesto de Pessoas e msico. Idealizador do site de educao infantil www.novainfancia.com.br.
amos falar sobre vitaminas. Sabemos que as vitaminas fornecem ao corpo humano uma grande
variedade de nutrientes fundamentais para o seu
bom funcionamento. A vitamina A, por exemplo, contm
substncias antioxidantes que auxiliam no combate ao processo de envelhecimento. J a vitamina D fundamental na
regulao da presso arterial, de modo que quando ingerida
corretamente mantm o sistema nervoso bem calmo.
E assim, cada vitamina tem sua importncia no sentido de
promover o bem estar e o equilbrio do nosso metabolismo. H,
no entanto, uma vitamina diferente, peculiar at. Descoberta
por este colunista que lhe escreve, esta vitamina no promove
necessariamente aes benficas ao nosso organismo. Em vez
disso, ela especialista em viabilizar relacionamentos saudveis e respeitadores entre as pessoas. Caro leitor, com muito
prazer que lhe apresento a Vitamina S. S de Semancol.
A vitamina Semancol responsvel pela produo de uma
enzima chamada senso do ridculo, tambm conhecida
como desconfimetro. A funo desta enzima fazer com
que cada um de ns, vez por outra, tenha a sensao de estar
se comportando ou de estar prestes a se comportar de forma
inconveniente e inadequada. como se essa peculiar vitamina provocasse um alarme, uma espcie de aviso dentro de
ns que nos alerta para o fato de que algo pode no acabar
muito bem se continuarmos agindo da forma que estamos.
Por isso, pessoas carentes desta vitamina costumam ser protagonistas de situaes embaraosas e inconvenientes. Elas
no percebem o vital aviso.
No a toa que vez por outra nos deparamos com indivduos assim, totalmente desprovidos deste complexo vitamnico.
Nos ambientes de trabalho, por exemplo, os efeitos colaterais
de tal abstinncia so facilmente percebidos. Vejamos alguns
exemplos:
1. Pessoas desprovidas de Semancol costumam falar em voz
alta ao celular dentro de um elevador abarrotado de gente. S
que as pessoas no tm nada a ver com seus assuntos particulares e muito menos so obrigadas a ouvi-los na ntegra.
No entanto, o que acontece.
2. Quando pessoas sem Semancol chegam atrasadas a reunies de trabalho, fazem questo de pedir desculpas em
alto e bom som, atrapalhando o andamento da reunio. Se
tivessem Semancol, se sentariam discretamente no lugar mais
prximo da porta e no primeiro intervalo se desculpariam
pessoalmente com o dirigente pelo atraso. Mas no, preferem
o estardalhao.
3. Por se acharem muito engraados, muitos abusam de piadas machistas e racistas durante o expediente, criando um
mal-estar generalizado. E o fazem aos risos escandalosos.
4. Coisas aparentemente pequenas tambm costumam causar grandes constrangimentos. Tive um colega que insistia
em usar uma caneta Bic na orelha esquerda o dia todo. No
tirava ela para nada. O cara parecia um padeiro. Nada contra
os padeiros, mas s vezes, enquanto ele atendia um cliente,
a tal caneta caia no cho e era aquela confuso para ach-la
em meio ao atendimento. Lembro-me de outro colega que
no cortava as unhas. As unhas dele pareciam as do Z do
D
s
Feedback
eu
www.devmedia.com.br/esmag/feedback
sobre e
s
edio
ta
Agilidade
Nesta seo voc encontra artigos voltados para as prticas e mtodos geis.
m treinamentos, normalmente
comeamos a falar sobre quais
os conceitos que no so mais
utilizados pela disciplina de testes
antes mesmo de falar sobre como ela
funciona em ambientes geis. Isto porque muita coisa mudou e o ideal que
todos possam ter um tempo para notar
as principais caractersticas e diferenas
do que era feito em Waterfall e de como
fazemos hoje, no Scrum. Esse tambm
foi considerado o jeito mais intuitivo de
comear este artigo.
M etodologias geis
do produto. A Figura 1 demonstra as duas estruturas, o modelo antigo de Equipes de Testes e o novo modelo, onde estes
profissionais j aparecem alocados dentro de seus novos times
multifuncionais.
Sprint 0
Os testes podem e devem ser iniciados desde o primeiro dia
da sprint, s vezes at antes da reunio de planejamento das
atividades (planning meeting). Como podemos fazer isto? O analista de testes deve ser o responsvel por revisar os requisitos
vindos do cliente para que a maior parte das dvidas seja retirada e as estrias do sprint que vir possam ser revisadas antes
de serem passadas para todo o time. Desta forma, no momento
da planning, o requisito j foi revisado e est claro o suficiente
para ser discutido, estimado e quebrado em estrias.
Ter este Sprint 0, isto , este momento antes da sprint de desenvolvimento, em que podemos conhecer melhor o negcio
, sem dvida, um dos pontos pelos quais pode-se observar
maior nmero de melhorias na qualidade dos projetos. Ter
um requisito mais trabalhado e um time que conhece mais do
negcio no qual est trabalhando algo que s contribui para
o resultado final da construo do software.
Esta ajuda tcnica tambm de grande valia no momento
da criao das estrias porque nem sempre podemos ter um
product owner com um perfil mais tcnico. Em casos em que o
cliente tem um perfil mais leigo, a ajuda de algum que tenha
uma viso crtica de negcios, mas ao mesmo tempo seja do
time, pode ser crucial. A Tabela 1 mostra quais as principais
caractersticas necessrias para uma boa estria.
ANTES
DEPOIS
Sprint 1
Sprint 2
Sprint 3
Sprint 4
Ambiente de Testes
Ambiente de Produo
Ambiente de Testes
Ambiente de Produo
Ambiente de Testes
Ambiente de Produo
39
10
Tabela 2. Comparao entre o nmero de defeitos antes e depois das alteraes em Testes
10
Documentao
A ideia de que metodologias geis no tm nenhuma documentao ainda persiste no conceito de vrias pessoas. Na
verdade, o que se prega que devemos dar mais importncia
comunicao entre as pessoas do time do que documentao, mas, nada se fala a respeito de no ter documentao.
necessrio ter o conceito de que a documentao sim muito
importante mesmo em projetos geis. A seguir, so descritos
exemplos claros que justificam a importncia desta documentao bsica de testes.
O fato de o time ser multifuncional o primeiro motivo da
necessidade de planejamento e documentao mnima de
testes. Todos os profissionais alocados dentro do time podem
precisar ajudar na execuo dos testes e, desta forma, vo
precisar do step by step de cada caso de teste. Claro que o
fato de estarmos executando os Testes Incrementais colabora
para que os profissionais de testes no fiquem sem trabalho no
comeo da sprint e muito atarefados no final dela, mas mesmo
assim, sempre existiro os casos em que a ajuda dos outros
membros do time se far necessria. Sempre que a demanda
de testes estiver muito alta, os documentos com a especificao
dos casos de testes e todo o planejamento sero cruciais.
M etodologias geis
Automao de Testes
Selenium: O Selenium IDE um ambiente integrado de desenvolvimento para scripts. Ele implementado como uma extenso do Firefox e permite gravar, editar e
depurar os testes. Esta ferramenta tambm permite que os usurios gravem e reproduzam os testes no ambiente real no qual sero executados. Pode ser usado para
testes de fumaa, regresso e funcionais em geral.
JMeter: Utilizado para testes de desempenho em aplicaes de diferentes tipos de servidores (HTTP/HTTPS, SOAP, JMS etc.). uma aplicao open source Java e foi
desenvolvida para executar load tests e testes de performance. Originalmente foi desenvolvido para aplicaes Web, mas agora est sendo utilizado tambm para outras
aplicaes.
Watir: Utilizado para testes automatizados para Web escritos na linguagem Ruby. Existem derivaes em .Net (WatN) e Java (WatJ). Basicamente para quem quer criar
testes fceis de entender e de manter. Os criadores da ferramenta prometem funcionamento perfeito com qualquer tecnologia.
FitNesse: Servidor web, Wiki e Ferramenta de Testes Automatizados para suportar testes de aceitao. O usurio pode criar critrios de aceitao de maneira colaborativa,
criar e executar testes automatizados e manter dados de teste.
11
Ferramenta
Jira
Bugzilla
Gratuita?
Descrio
Ferramenta para gesto de projetos e acompanhamento de tarefas e erros. relativamente fcil de usar, oferece grande flexibilidade,
NO (Apenas para projetos de forma que voc pode fazer o acompanhamento de todas as tarefas, desde sua criao at finalizao, assinalando o assunto e seu
open source)
responsvel. Existe a possibilidade de se fazer comentrios e capturas. O responsvel e o criador do ticket podem ser informados por
e-mail sobre todas as mudanas efetuadas.
Aplicao para gesto de erros. Esta aplicao permite que indivduos ou grupos de programadores acompanhem os relatrios de erros
SIM
ou pedidos de melhorias. uma ferramenta baseada em Web e e-mail, que d suporte ao desenvolvimento do projeto Mozilla, rastreando
defeitos e servindo tambm como plataforma para pedidos de recursos.
Testlink
SIM
QA Track
SIM
Ferramenta para automao do planejamento de testes e que apresenta interface grfica mais amigvel (user friendly).
Mercury TestDirector
NO
um aplicativo para Gesto de Testes Gerenciamento de Requisitos, Plano de Teste e Controle de Defeitos.
Rational TestManager
NO
um console central para as atividades de gerenciamento e relatrios de testes. Criado para ser extensvel, ele suporta tudo, desde
abordagens de teste manual at automatizados, incluindo testes unitrios, testes de regresso funcional e testes de desempenho.
times utilizam esta viso para se trabalhar com pair programming entre desenvolvedor e testador na criao dos scripts
automatizados.
Em muitos casos, a tcnica pode ser inicialmente considerada
mais demorada ou at mesmo mais cara, mas com o passar
do tempo, pode-se constatar a criao de softwares com os
seguintes benefcios:
Menos uso de um debugger;
Menor quantidade de defeitos;
Software feito de maneira mais rpida e com melhor
qualidade.
12
M etodologias geis
[2] CRISPIN, L; GREGORY, J. (2009). Agile Testing: A Practical Guide for Testers and Agile Teams.
Addison-Wesley Professional. ISBN 0321534468.
[3] COHN, M. (2004). User Stories Applied for Agile Software Development. Addison-Wesley
Professional. ASIN B000SEFH1A.
[4] BECK, KENT (2002). Test Driven Development: By Example. Addison-Wesley Professional.
ISBN 0321146530.
[5] Test Driven.com - Wrangling quality out of chaos.
http://www.testdriven.com/
Links
Endereo da pgina do Selenium
http://seleniumhq.org
Site do JMeter
http://jakarta.apache.org/jmeter/
Endereo da ferramenta Watir
http://watir.com
Site da ferramenta FitNesse
http://fitnesse.org/
Site do projeto Jira
http://www.ecore.com.br/atlassianbrasil/?gclid=CKrFuLL0-KYCFY4J2god-XSuCA
Site do Bugzilla
http://www.bugzilla.org/
Endereo da ferramenta Testlink
http://testlink.sourceforge.net/docs/testLink.php
Endereo da ferramenta QA Track
http://www.testmanagement.com/
Site do Mercury TestDirector
http://www.starbase.co.uk/products/hp-products/hp-testdirector.html
Site da Rational TestManager
http://www-01.ibm.com/software/awdtools/test/manager/
Feedback
eu
www.devmedia.com.br/esmag/feedback
13
sobre e
s
Este artigo apresentou um estudo sobre as principais diferenas entre a atividade de testes antes e depois das metodologias
geis (principalmente o SCRUM).
Estes pontos (diferenas) foram citados com o intuito de explicar como os testes esto sendo executados em projetos na
atualidade. O intuito de descrever estas diferenas deixar
claro que devemos ter em mente que os testes tambm so
parte do desenvolvimento como um todo. Tambm necessrio pensar nesta integrao quando planejamos a sprint e os
testes em si. Pensar nos testes como uma atividade incremental
desde o momento de estimar as estrias at o ponto em que
comeamos a execut-los , sem dvida, essencial para o bom
andamento da sprint e para a mudana de viso dos profissionais da rea.
Os benefcios encontrados na alocao de analistas de testes
dentro dos times geis podem ser resumidos em:
Integrao do time;
Participao mais direta e ativa do profissional que est
testando o software;
Profissionais que esto desenvolvendo cdigo tambm esto
interessados em aprender sobre testes;
Profissionais que esto testando cdigo tambm esto interessados em aprender sobre programao;
Agilidade: interao de todo o time de desenvolvimento
com testes;
Analistas de Teste deixaram de ser reativos para serem
pr-ativos.
D
s
Concluso
Referncias
edio
ta
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
Doutor e Mestre em Engenharia de Sistemas e Computao pela COPPE/UFRJ, Especialista em Mtodos Estatsticos Computacionais e Bacharel em Informtica pela
UFJF, professor dos Cursos de Bacharelado
em Sistemas de Informao do Centro de
Ensino Superior de Juiz de Fora, da Faculdade Metodista Granbery e da Universidade
Severino Sombra, professor do curso de
Bacharelado em Cincia da Computao
da FAGOC, professor 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, Editor da Engenharia de Software Magazine.
14
O Trabalho Colaborativo
Atravs do trabalho em grupo podem-se produzir melhores
resultados do que se os membros do grupo trabalhassem individualmente, j que h a possibilidade da complementao de
conhecimentos e do surgimento de pontos de vistas diferentes.
Com isso, a identificao de falhas na maneira escolhida para
a resoluo de problemas torna-se muito mais rpida e eficaz.
Outra grande vantagem do trabalho colaborativo a motivao
que este pode trazer aos membros participantes do grupo, j
que cada pessoa estar sendo observada e criticada pelos que
se encontram envolvidos no trabalho em comum.
Embora proporcione muitas vantagens, o trabalho em grupo
traz como principal desvantagem o fato de necessitar de uma
boa coordenao de seus membros para que os resultados sejam satisfatrios. Para que o trabalho colaborativo possa ocorrer de forma que as metas traadas inicialmente sejam, de fato,
alcanadas, alguns fatores como comunicao, coordenao,
- Comunicao
No trabalho em grupo, durante o processo de comunicao, os
participantes deste tm como principal objetivo compartilhar e
discutir suas ideias de forma a chegarem a um consenso. Nesta
etapa, o conhecimento individual e a maneira de express-lo
de cada integrante so de grande valia para que haja um bom
entendimento entre a pessoa que quer transmitir sua ideia e
os demais membros do grupo.
O meio utilizado para a comunicao entre o grupo tambm
pode exercer influncia na informao a ser transmitida. Quanto mais pessoal for o contato entre as pessoas, melhor ser o
aproveitamento da ideia transmitida. Por exemplo, reunies
presenciais podem ser mais eficazes do que conversas por
telefone, que por sua vez podem ser mais esclarecedoras do
que chats ou mensagens instantneas via web. Porm, muitas
vezes, no trabalho colaborativo no possvel a realizao
de reunies presenciais, para isto torna-se necessrio um
bom conhecimento de todos os membros do grupo sobre a
correta forma de utilizao das ferramentas de comunicao
e da linguagem e expresses a serem usadas no decorrer das
conversas.
No processo de colaborao, o mais importante no apenas
saber se o receptor recebeu a informao de forma adequada,
mas sim se teve um bom entendimento da mesma. Isso pode
ser percebido atravs das reaes do receptor em suas atitudes ou em sua fala.
Existem vrias possibilidades de comunicao entre os participantes de um grupo colaborativo, portanto, fica a cargo do
coordenador deste grupo analisar e definir a melhor e mais
apropriada ferramenta de comunicao para cada etapa ou
meta a ser cumprida.
As ferramentas de comunicao podem ser classificadas em
sncronas ou assncronas. As ferramentas sncronas possuem
como caracterstica a necessidade de interao em tempo
real, ou seja, membros do grupo devem estar presentes ou
conectados no momento em que ocorre a comunicao. Este
tipo de ferramenta deve ser usado quando se espera a interao entre os participantes do grupo, visto que o tempo de
resposta entre a ao de um participante e a reao de seus
companheiros curto. J as ferramentas de comunicao assncronas possuem como vantagem a interao entre pessoas
sem que estas estejam conectadas ao mesmo tempo, ou seja, a
mensagem desejada enviada, e permanece disponvel para
conhecimento dos destinatrios no momento em que estes se
conectam. Devem ser utilizadas quando h a necessidade de
uma melhor reflexo dos participantes, j que estes tero um
maior tempo disponvel antes de agir.
Como exemplos de ferramentas de comunicao podem
ser includas e-mail, lista de discusso, frum, ferramentas
de votao, mensagem instantnea, chat, vdeo conferncia e
telefone, sendo que algumas sero detalhadas e exemplificadas
no decorrer deste artigo.
15
- Coordenao
De forma a garantir que os objetivos traados pelo grupo sejam
alcanados, necessrio que haja uma boa coordenao das atividades a serem realizadas. Evitar que esforos de comunicao
e cooperao sejam perdidos e que as tarefas sejam realizadas
na ordem correta, de forma correta e no tempo correto, deve ser
uma atribuio do coordenador do grupo. Alm disso, devem
ser identificados e mapeados em tarefas os objetivos do grupo,
selecionados os participantes, distribudas as tarefas entre eles
e toda a realizao destas deve ser coordenada. Outra responsabilidade da coordenao a ser citada o tratamento de conflitos
que geralmente ocorrem devido a problemas de comunicao,
percepo ou interpretao, para que estes no acarretem em
competio, desorientao e problemas de hierarquia, que podem vir a prejudicar o grupo. Deve-se ressaltar a importncia
dos membros do grupo e os coordenadores devem sempre ter
cincia do trabalho que est sendo realizado pelos participantes,
assim possvel identificar e evitar esforos duplicados em prol
de um mesmo objetivo a ser alcanado e tambm se evita que
algum membro fique sem trabalho ou com tempo ocioso.
Atividades colaborativas sem a presena de um coordenador
apresentam um grande risco de que os participantes do grupo
desviem-se do foco principal ou se envolvam em tarefas repetitivas e ou conflitantes.
Como exemplos de ferramentas para suporte a atividades
de coordenao podem ser citadas: gerenciamento de fluxo
de trabalho (workflow) e ferramentas de desenvolvimento de
software colaborativo.
- Cooperao
a ao conjunta dos membros do grupo, como produo,
manipulao e organizao de informaes.
interessante que a maior parte do que for produzido pelo
grupo seja armazenada, de forma a garantir uma memria
do trabalho cooperativo que foi realizado. Essa memria
poder, posteriormente, fornecer auxlio, caso seja necessrio
checar os motivos ou ideias iniciais que levaram tomada de
alguma deciso para produo de um artefato ou mesmo no
caso da necessidade de alter-lo por mudana nos objetivos
iniciais.
Podem ser utilizadas ferramentas para auxiliar o trabalho
de cooperao que fornecem, por exemplo, registro e recuperao de verses e controle e permisses de acesso. Entre as
ferramentas para controle de verso enquadram-se o CVS e o
SVN, que sero descritas no decorrer deste artigo.
- Percepo
A percepo o ato de adquirir informao. essencial para
a comunicao, coordenao e cooperao em um grupo de
trabalho colaborativo.
Na interao entre pessoas face-a-face, a obteno de informaes maior, j que os sentidos esto presentes em sua
plenitude. J em ambientes virtuais, o suporte percepo
bem menor porque os meios de transmitir as informaes aos
rgos sensoriais dos seres humanos so restritos.
16
Groupware
O termo groupware, ou software colaborativo, refere-se a
uma famlia de aplicaes baseadas em computador que do
suporte a grupos de pessoas engajadas em uma tarefa comum
e que provm uma interface para compartilhar o ambiente,
especialmente ao nvel de comunicao, colaborao e suporte
deciso. O uso de groupware permite que pessoas, mesmo
estando em diferentes localidades possam compartilhar
ideias e interesses comuns para a resoluo dos problemas e
objetivos do grupo.
Groupware pode ser considerado uma ferramenta desenvolvida a partir dos conceitos abordados em CSCW, que a rea
que envolve o estudo de sistemas baseados em computador
para auxlio ao trabalho cooperativo.
A utilizao de ferramentas groupware nas organizaes tem
como principal objetivo a melhoria na eficcia administrativa,
dando assistncia na comunicao, colaborao e coordenao
das atividades dos grupos.
Como exemplos de aplicaes de groupware podem ser
citados:
Sistemas de e-mail: Permitem a troca de mensagens e arquivos pelo grupo;
Workflows: Permitem o acompanhamento do fluxo de trabalho
e de informaes da empresa;
Sistemas de gerenciamento de documentos: Permitem o
acesso de forma rpida aos documentos digitais da empresa;
Reunies eletrnicas: Permitem a realizao de encontros
dos membros do grupo colaborativo para a resoluo de
problemas;
Sistemas de co-autoria e projeto: Permitem o desenvolvimento simultneo de documentos e projetos mesmo que os
participantes do grupo estejam em locais distintos;
Vdeo conferncias: Permitem a realizao de encontros
atravs da transmisso simultnea de udio e vdeo;
Tele presena, avatares e realidade virtual: Permitem a criao de ambientes virtuais para que as pessoas possam interagir
a partir de locais remotos.
As aplicaes de groupware, levando em considerao as variveis espao e tempo podem ser classificadas em quatro
categorias, conforme exibido na Tabela 1.
As categorias podem ser descritas como:
Interao face a face: Diz respeito s aplicaes que so
executadas de maneira sncrona, sendo que os membros do
grupo de trabalho encontram-se em um mesmo local em um
mesmo tempo. Como exemplo de aplicao, pode ser citado um
sistema de autoria de projeto em grupo, que permite tanto a
engenheiros como desenvolvedores manipularem um mesmo
arquivo simultaneamente;
MESMO
DIFERENTE
MESMO
Interao Assncrona
DIFERENTE
TEMPO
ESPAO
Interao Distribuda Sncrona: As aplicaes que se enquadram nesta categoria necessitam da utilizao de recursos
de telecomunicaes de forma a possibilitar a comunicao
simultnea entre locais de trabalho diferentes. Enquadram-se
nesta categoria os chats e vdeo conferncias;
Interao Assncrona: Nas aplicaes desta categoria, embora os integrantes do grupo de trabalho estejam situados
em um mesmo local, a interao ocorre em tempos distintos.
Como exemplos podem-se citar o compartilhamento de computadores e arquivos;
Interao Distribuda Assncrona: Diz respeito s aplicaes
que so utilizadas em tempos e espaos distintos por parte dos
membros do grupo de colaborao. Estas aplicaes tm como
objetivo a distribuio e encaminhamento das informaes. O
e-mail o principal exemplo desta categoria.
Tecnologias Colaborativas
Tecnologias colaborativas oferecem um grande auxlio no
processo de desenvolvimento de sistemas. Como principais
funes destas, pode-se citar o fornecimento de um canal de
comunicao entre os participantes de um grupo, mecanismos de armazenamento e acompanhamento de verses dos
artefatos produzidos, ferramentas para controle de defeitos,
ferramentas para auxlio na gerncia de projetos e plataformas
para desenvolvimento colaborativo, exemplificadas a seguir.
- Ferramentas de Comunicao
Para as ferramentas de comunicao, o uso da Internet
torna-se indispensvel e tal fato deve ser considerado ao
adot-las. Entre estas, pode-se citar as listas de discusso,
17
portais e comunidades virtuais, fruns, mensagens instantneas, chats, blogs e wikis. A seguir so apresentados
alguns exemplos.
Para utilizao de Listas de Discusso, o Mailman - Sistema
para administrao de listas de discusso ou newsletters de
fcil configurao e administrao via Web (Figura 1). Entre
suas principais funcionalidades podem ser citados: filtros de
contedo, arquivamento das mensagens enviadas para a lista,
18
19
Links
Mailman
http://www.gnu.org/software/mailman/index.html
JoomlaClube
http://www.joomlaclube.com.br/site/comunidade.html
phpBB
http://www.phpbb.com/
WordPress
http://wordpress.com/
Jabber
http://www.jabber.org/
MediaWiki
http://www.mediawiki.org/wiki/MediaWiki
Bugzilla
http://www.bugzilla.org/
Scarab
http://scarab.tigris.org/
Microsoft Project
http://www.microsoft.com/project
Concluso
www.devmedia.com.br/esmag/feedback
20
SourceForge
http://sourceforge.net
Launchpad
https://launchpad.net/
Google Code
http://code.google.com/intl/pt-BR/
Referncias
Ellis, C.A., Gibbs, S.J., and Rein, G.L. Groupware - Some Issues and Experiences. Communications
of the ACM, v 34, n 1, 1991.
Grudin, J. Computer-Supported Cooperative Work: History and Focus. IEEE Computer, v 27 n 5,
1994.
Microsoft Project
http://www.microsoft.com/project
dotProject
http://dotproject.net/
SourceForge
http://sourceforge.net
sobre e
s
dotProject
http://dotproject.net/
Feedback
eu
edio
ta
D
s
cada vez maior o nmero de empresas que esto distribuindo seus processos de desenvolvimento de software em cidades,
estados ou pases diferentes, de forma a obter profissionais
cada vez mais experientes e qualificados. Portanto, o uso das
ferramentas de apoio ao desenvolvimento colaborativo de
grande utilidade.
Problemas de comunicao e coordenao so considerados
como os principais no desenvolvimento de software, onde
as ferramentas para apoio ao trabalho em grupo (groupware)
podem ser utilizadas como forma de minimizar os impactos causados por estes problemas. Alm disso, o trabalho
em grupo, quando bem planejado e gerenciado pode ser de
grande valia quando equiparado ao trabalho de uma nica
pessoa. O processo de desenvolvimento de software , em
sua maior parte, de carter cooperativo. Atravs da utilizao
de softwares colaborativos, a produtividade de uma equipe,
desde que bem gerenciada, tende a ser melhor, ficando a cargo
dos coordenadores do grupo a escolha das ferramentas mais
adequadas de acordo com o objetivo traado.
Launchpad
https://launchpad.net/
Google Code
http://code.google.com/intl/pt-BR/
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
N
Mateus Maida Paduelli
bacharel e mestre em computao pela
Universidade de So Paulo. J atuou em diversas organizaes com o tema manuteno de software e atualmente servidor
pblico federal.
a edio 33 da Engenharia de
Software Magazine, conhecemos as caractersticas, tipos e
desafios para a manuteno de software.
Alm disso, destacamos tambm as dificuldades encontradas na realizao das
atividades de manuteno de software.
Para isso, um estudo de observao
que foi conduzido com o objetivo de
verificar os problemas de manuteno
de software existentes em uma organizao empenhada no desenvolvimento
de software comercial.
21
Dando continuidade discusso sobre o assunto, apresentaremos neste artigo algumas alternativas de respostas para
os problemas de manuteno apresentados na edio anterior.
Estas alternativas esto embasadas em trs fontes distintas: na
norma ISO/IEC 12207, nas solues encontradas na organizao
analisada no estudo de caso, e nas propostas de outros autores
que se dedicaram ao assunto.
Acredita-se que a norma seja um excelente veculo para conduzir uma organizao de software pelas melhores prticas, j
que seu contedo resultado de um esforo fundamentado no
que poderia se chamar estado-da-arte da engenharia de software. Outra considerao importante diz respeito maneira
como a norma se apresenta. Ela no um modelo fechado que
diz como fazer e manter software da melhor forma, mas sim,
mostra o que deve ser considerado para que isso seja alcanado.
Dessa forma, a norma funciona como um guia para ser seguido
por organizaes interessadas em tratar sistematicamente seu
processo de software.
O estudo de caso apresentado no artigo da edio passada
ser estendido neste artigo, expondo agora prticas adotadas
pela organizao que trouxeram resultados satisfatrios para
a preveno ou conteno de problemas de manuteno de
software em seu ambiente de trabalho.
Metodologia
A metodologia aplicada na extenso do estudo de caso tambm
foi baseada em questionrios e entrevistas. O intuito principal
desses questionrios foi o de servirem para a abertura de uma
discusso na qual exemplos de solues eficientes fossem citados pelos entrevistados. Como o objetivo era que a organizao
mostrasse quais atitudes vinha adotando para tratar de maneira
satisfatria sua atividade de manuteno, no havia como
estipular questes prvias, por isso o questionrio reduzido
funcionou somente como recurso para incio de entrevista.
De fato, as solues citadas, bem como observaes e todas
as informaes relevantes para o contexto da entrevista, foram
registradas pelo entrevistador em documento a parte e posteriormente compiladas.
22
Solues Identificadas
Os resultados obtidos foram organizados e utilizados
para elaborar os itens a seguir, que apresentam solues
apontadas pelos entrevistados como favorveis para a
atividade de manuteno de software, contribuindo para
reduzir um ou mais dos problemas conhecidos.
Melhoria em treinamento: uma prtica relevante
adotada pela organizao diz respeito a treinamento. A
soluo considerada foi a de verificar entre os profissionais
interessados, quais eram as ferramentas de software que
gostariam de um aprofundamento em conhecimentos, por
meio de certificaes. A partir desse levantamento, a organizao se comprometeu em comprar os livros necessrios
preparao para alguns exames de certificao oficial.
Como exemplo, tem-se uma das modalidades de certificao de DBA SQL Server da Microsoft. O gerenciador de
banco de dados SQL Server corresponde ao utilizado pela
organizao, e sua configurao correta, seja em termos
de desempenho ou de funcionalidades, de fundamental
importncia. Assim, a organizao comprou os livros necessrios preparao, e que normalmente tm um custo
relativamente alto, se comprometendo ainda a reembolsar
o valor pago para realizao do exame, caso o profissional
fosse aprovado. No momento das entrevistas, algumas
pessoas j haviam conseguido aprovao no mdulo
inicial da certificao. Esse conhecimento adicional em
banco de dados de relevncia para manuteno, j que
o software da empresa tem muitas partes implementadas
na forma de stored procedures, e muitas das manutenes
so efetuadas nesses componentes;
Gerenciamento do conhecimento: ligado diretamente
ao problema da rotatividade elevada, a organizao vinha
se empenhando em sistematizar os problemas de manuteno, principalmente os problemas de atendimento ao
cliente via suporte e help-desk, montando uma base de
conhecimentos onde fosse possvel consultar as solues
possveis para um problema freqente. Para isso, uma
ferramenta web de colaborao on-line foi instituda, e nela
registrado, na forma de perguntas e respostas, as maneiras de abordar inmeros problemas. A atitude gerencial
inicial para a composio das primeiras questes dessa
base foi a obteno, junto equipe de suporte, de uma lista
de problemas mais comuns. O passo seguinte foi reunir
consultores da empresa que trabalham na cidade de So
Paulo, para em reunies conjuntas entre equipe de suporte
e consultores, elaborar as primeiras respostas lista de
problemas de suporte. Tais questes foram posteriormente
inseridas na ferramenta web, de forma que qualquer pessoa dentro da organizao pudesse ter acesso e editar seu
contedo, como forma de complementao;
Melhoria na documentao oferecida ao cliente: da
mesma forma que foi criado um repositrio de problemas
e solues para a prpria organizao, tambm se criou
algo semelhante em relao aos clientes. Com o uso da
mesma ferramenta web, uma interface de consulta foi
M anuten o
Consideraes Gerais
As solues encontradas pela organizao pesquisada no
representam o resultado do emprego de alguma norma ou
processo bem definido, como dito anteriormente.
Foi justamente esse fato que permitiu utilizar essas solues
como alternativas para abordar os problemas de manuteno
de software. Isso porque importante que seja mostrado
tanto o aspecto rigorosamente formal proposto pela norma
ISO/IEC 12207, como tambm alternativas de solues.
valioso destacar que alternativas como as aqui apresentadas
podem at mesmo serem mais viveis do que a adoo da
prpria norma, dependendo do porte da organizao e de
sua estruturao.
O fundamental que as organizaes de software se empenhem em compreender as caractersticas e dificuldades de si
prprias, buscando continuamente por falhas e possveis formas de trat-las, o que muitas vezes pode ocorrer pela simples
mudana de atitudes e controle mais rgido de tarefas. O uso
de ferramentas de software tambm um ponto importante,
e nesse exemplo houve o uso de ferramentas para auxlio no
tratamento de informaes.
23
Problema
Categoria Processos Fundamentais
Grupo de Processos de Aquisio
Preparao da Aquisio
Seleo do Fornecedor
Acordo Contratual
Monitoramento do Fornecedor
Aceitao pelo Cliente
Grupo de Processos de Fornecimento
Proposta do Fornecedor
Liberao de Produto
Apoio para Aceitao de Produto
Grupo de Processos de Engenharia
Elicitao de Requisitos
29. Falta de compreenso dos usurios a respeito de suas reais necessidades de software
Projeto de Software
Construo de Software
Integrao de Software
Teste de Software
Integrao de Sistema
Teste de Sistema
Instalao de Software
Manuteno de Software e Sistema
Gerncia Organizacional
Gerncia de Projeto
Gerncia de Qualidade
Gerncia de Riscos
Medio
Tabela 1. Processos da norma ISO/IEC 12207 e problemas de manuteno de software
24
M anuten o
Gerncia de Conhecimento
09. Experincias com manutenes anteriores no so disseminadas dentro da prpria organizao e entre novos membros da equipe
Infra-estrutura 1
Gerncia de Configurao
25
26
M anuten o
27
Objetivos: Capacitao dos processos de software necessrios organizao para prover produtos
de software e servios, de forma que fiquem consistentes com seus objetivos de negcios.
Resultados esperados de uma implementao com sucesso:
(1) Definio dos objetivos de negcios da organizao;
(2) Definio de seu framework de processos, que inclui uma srie de processos de software
necessrios para alcanar os objetivos de negcios da organizao;
(3) Elaborao de uma estratgia para definio, implementao e melhoria de processos;
(4) A misso da organizao, seus valores principais, vises e objetivos so apresentados a todos
os funcionrios;
(5) Comum viso da organizao pelos seus funcionrios, compartilhando o entendimento dos
objetivos de negcios para que possam realizar suas funes eficientemente;
(6) Cada indivduo na organizao deve entender seu papel para alcanar os objetivos de negcios
e avaliar se est apto a cumprir esse papel.
Tarefas necessrias
Estabelecer suporte do produto: estabelecer um servio por meio do qual o cliente possa apresentar
problemas e questes encontradas no uso do produto e receber ajuda para solucion-los.
Prover treinamento dos usurios: oferecer treinamento e documentao ao usurio, de forma que
o produto possa ser eficientemente utilizado.
Monitorar o desempenho: monitorar o desempenho operacional do produto, de forma a estar
ciente dos problemas que podem impactar no nvel de servio.
Determinar o nvel se satisfao do cliente: determinar o nvel de satisfao do cliente com os
produtos e servios oferecidos.
Comparar a satisfao do cliente: comparar e monitorar o nvel obtido de satisfao do cliente com
as indstrias do setor e, quando possvel, com os concorrentes diretos.
Tabela 6. Operao: processo de Suporte ao Cliente
Tarefas necessrias
Desenvolver uma viso estratgica: desenvolver uma viso estratgica para a organizao, que seja
capaz de identificar os objetivos de negcios e sua relao com funes de engenharia de software
e de sistemas.
Definir o framework de processos: identificar os processos que precisam ser executados para que
seja possvel alcanar os objetivos de negcios.
Prover comprometimento gerencial: prover suporte gerencial para a aplicao e melhoria
estratgica de processos.
Comunicar a viso e objetivos: explicar a viso e objetivos estratgicos da organizao para todos
os indivduos que trabalhem para ela, utilizando mecanismos adequados de comunicao e
gerenciamento.
Garantir o compartilhamento de uma viso comum: garantir que cada indivduo da organizao
compreenda a viso comum e se comprometa a cumprir sua funo individual com eficincia.
Permitir participao ativa: permitir que cada indivduo contribua para se alcanar os objetivos de
negcios e apresentar iniciativas de melhoria de processos.
Tabela 7. Gerncia: processo de Alinhamento Organizacional
28
M anuten o
29
30
M anuten o
31
Processo: Treinamento
Tarefas necessrias
Desenvolver a estratgia para treinamento: desenvolver a estratgia de treinamento, incluindo
como as necessidades de treinamento sero identificadas, como os treinamentos necessrios
sero desenvolvidos ou adquiridos, e como os treinamentos sero realizados.
Identificar necessidades de treinamento: identificar e avaliar habilidades e competncias para
prover e melhor-las atravs de treinamentos.
Desenvolver ou adquirir treinamentos: desenvolver ou adquirir treinamentos que representem
necessidades comuns de treinamento.
Preparar para a execuo do treinamento: identificar e preparar a execuo das sesses de
treinamento, incluindo disponibilidade de materiais e de pessoal a ser treinado.
Treinar o pessoal: treinar o pessoal para possurem conhecimento e habilidades necessrias
execuo de seus papis.
Manter registros de treinamentos: manter adequado registro de treinamentos completados.
Avaliar efetividade do treinamento: identificar e avaliar o valor adicionado oferecido por cada
sesso de treinamento, incluindo a avaliao do material de treinamento utilizado.
Tabela 13. Recursos e Infra-estrutura: processo de Treinamento
32
Tarefas necessrias
Estabelecer um sistema de gerenciamento do conhecimento: estabelecer e manter uma
infra-estrutura de gerenciamento do conhecimento, bem como mecanismos para suportar as
atividades de identificar, classificar, exportar e usar o conhecimento.
Criar uma rede de contribuidores de conhecimento: estabelecer uma rede de especialistas
provendo sua natural interao.
Desenvolver uma estratgia de gerenciamento do conhecimento: definir uma estratgia
apropriada de gerenciamento do conhecimento baseada em necessidades organizacionais,
individuais, de domnio e de projetos.
Capturar o conhecimento: identificar e registrar cada item de conhecimento de acordo com a
classificao estabelecida e critrio de disseminao.
Disseminar a propriedade do conhecimento: compartilhar o conhecimento com especialistas,
usurios e projetistas.
Melhorar o conhecimento disponvel: validar e enriquecer o conhecimento armazenado,
assegurando sua adequao aos valores da organizao.
Tabela 14. Recursos e Infra-estrutura: processo de Gerenciamento do
Conhecimento
M anuten o
problemas com sobreposio de arquivos, perda de modificaes e propagao de falhas. A soluo para esses problemas
no se resume em adotar um software de controle de verso. A
soluo precisa incluir uma separao entre desenvolvimento
e manuteno e principalmente processos para se conduzir
ambas as atividades.
conhecida a relativa dificuldade de se unir um projeto
modificado com o projeto paralelo em desenvolvimento. Isso
porque no mesmo instante em que um software esteja sendo
modificado em um determinado ponto, ele pode estar em
desenvolvimento por outra equipe, agregando-se funcionalidades novas, no necessariamente solicitadas pelos clientes,
mas como forma de sofisticao e complementao do software
original. Nesse momento surge a dificuldade de unir eventualmente mesmos arquivos modificados em locais diferentes.
Situaes como essas devem ser analisadas e amparadas por
ferramentas atravs de um processo de infraestrutura.
33
Tarefas necessrias
Tarefas necessrias
desse grupo que merecem destaque nesse contexto. O primeiro processo, documentao, apresentado na Tabela 16.
Comentrio sobre o processo:
A documentao de software uma das tarefas mais trabalhosas em manuteno de software. Isso porque cada manuteno individual deve ser documentada, e o projeto do software
como um todo atualizado. O desenvolvimento de documentos
padronizados e processos formais de atualizao de documentao podem no ser viveis para manutenes corriqueiras e
de pequeno porte. Enfrentar um processo burocrtico a cada
pequena manuteno acaba desestimulando a execuo dessa
atividade e conseqentemente levando progressiva desatualizao da documentao do projeto.
Cada organizao deve avaliar o produto de software que desenvolve do ponto de vista da documentao, estabelecendo-se
34
M anuten o
Propostas na Literatura
Alguns autores que se dedicaram a pesquisar problemas
de manuteno de software tambm mostraram propostas
de solues ou de reduo desses problemas.
As solues apresentadas so semelhantes e pode-se dizer
que esto muito bem resumidas e apresentadas em Dart et
al. (2001), que organizou suas propostas de interveno nos
problemas de manuteno em trs grandes grupos: recomendaes quanto a processos, quanto a pessoas e quanto
a ferramentas.
Propostas quanto aos processos:
Reexaminar polticas corporativas luz de ferramentas
CASE;
Enfatizar a importncia de garantir que todo cdigo esteja
completamente e cuidadosamente documentado;
Concluso
Os exemplos de solues possveis para os problemas de manuteno de software apresentados neste artigo, principalmente os
derivados da interpretao das recomendaes da norma, mostram como pode ser extenso e detalhadamente tratado o assunto.
35
D
s
Feedback
eu
edio
ta
www.devmedia.com.br/esmag/feedback
Referncias Bibliogrficas
Andrews, J. H.; Lutfiyya, H. L. (2000) Experiences with a software maintenance project course, IEEE
Transactions on Software Engineering (TSE), v. 43, n. 4, p. 383-388.
Basili, V. (1990) Viewing Maintenance as Reuse-Oriented Software Development, IEEE Software,
v. 7, n. 1, p. 19-25.
Beck, K. (1999) Extreme Programming Explained, First Edition. Addison-Wesley.
Bennett, K. H.; Rajlich, V. T. (2000) Software maintenance and evolution: a roadmap, In: Conference
on The Future of Software Engineering, Limerick, Ireland, June.
Bennett, K. H.; Ramage, M.; Munro, M. (1999) Decision Model for Legacy Systems,IEEE Proceedings
on Software (TSE), v.146, n. 3, p. 153-159.
Bhatt, P.; Shroff, G.; Misra, A. K. (2004) Dynamics of software maintenance, ACM SIGSOFT Software
Engineering Notes, v. 29, n. 5, p. 1-5.
Bhatt, P.; Williams, K.; Shroff, G.; Misra, A. K. (2006) Influencing Factors in Outsourced Software
Maintenance, ACM SIGSOFT Software Engineering Notes, v. 31, n. 3, p. 1-6.
Blasi, P. J. (1999) Overview of ACM. Disponvel em: <http://www.acm.org/about_acm/ov.html>.
Acesso em: 09 mai. 2006.
De Lucia, A., Pompella, E., Stefanucci, S. (2004) Effort estimation for corrective software
maintenance. In: 14th International Conference on Software Engineering and Knowledge
Engineering, Ischia, Italy, July.
Dias, M. G. B. (2004) Uma experincia no ensino de manuteno de software, In: Workshop de
Manuteno de Software Moderna (WMSWM04), Braslia, DF, Brasil, Outubro.
Ferreira, A. P. L.; Battaiola, A. L.; Souza, F. F.; Tori, R. (2001) Proposta de Plano Pedaggico:
Bacharelado em Cincia da Computao, Sociedade Brasileira de Computao (SBC). Disponvel
em: <http://www.sbc.org.br/index.php?subject=39>.
Ghezzi, C.; Mandrioli, D. (2005) The Challenges of Software Engineering Education, In: 27th
International Conference on Software Engineering, Saint-Louis, Missouri, USA, May.
Hazzan, O.; Dubinsky, Y. (2003) Teaching a Software Development Methodology: The case of
Extreme Programming, In: 16th Conference on Software Engineering Education and Training
(CSEE&T 2003), Madrid, Spain, March.
IEEE (1998) Std 1219 IEEE Standard for Software Maintenance, Institute of Electrical and
Eletronic Engineers, New York, NY, USA.
Boehm, B.; Basili, V. (2001) Software Defect Reduction Top 10 List, Computer, v. 34, n. 1.
ISO/IEC 12207 (1998) Standard for Information Technology - Software Lifecycle Processes,
International Standard Organization, New York, NY, USA.
Cardow, J.E. (1992) Can software maintenance be taught?, In: Conference on Software
Maintenance, Orlando, FL, USA, November.
ISO/IEC 12207 (2002) Standard for Information Technology - Software Lifecycle Processes/Amd.1,
International Standard Organization, New York, NY, USA.
Castro, J. F. B.; Gimenes, I. M. S.; Maldonado, J. C. (2000) Uma proposta de Plano Pedaggico para
a matria Engenharia de Software, In: II Curso de Qualidade de Cursos de Graduao da rea de
Computao e Informtica, Curitiba, PR, Brasil, Julho.
ISO/IEC 12207 (2004) Standard for Information Technology - Software Lifecycle Processes/Amd.2,
International Standard Organization, New York, NY, USA.
36
ISO/IEC 15504 (2003) Software Process Assessment, International Standard Organization, New
York, NY, USA.
Koskinen, J.; Salminen, A.; Paakki, J. (2004) Hypertext support for the information needs of
software maintainers, Journal of Software Maintenance and Evolution: Research and Practice, v.
16, n. 3 , p. 187-215.
Kung, H.; Hsu, C. (1998) Software Maintenance Life Cycle Model, In: International Conference on
Software Maintenance, Bethesda, Maryland, USA.
Lehman, M. M. (1974) Programs, Cities, Students, Limits to Growth?, In: Imperial College of Science
Technology, London, England, May.
________. (1980) On Understanding Laws, Evolution and Conservation in the Large Program
Life Cycle, Journal of Systems and Software (JSS), v. 1, n. 3, p. 213-221.
________. (1991) Software Engineering, the Software Process and their Support, IEEE
Software Engineering Journal: Special Issues on Software Environments and Factories, v. 1, n. 3,
p. 213-221.
sobre e
s
M anuten o
Referncias Bibliogrficas
________. (1996) Laws of Software Evolution Revisited. In: 5th European Workshop on
Software Process Technology, Nancy, France, October.
Singh, R. (1996). International Standard ISO/IEC 12207 Software Life Cycle Processes, Software
Process Improvement and Practice, vol. 2, p. 3550.
Lientz, B. P.; Swanson, E. B. (1980) Software Maintenance Management, Reading, MA, AddisonWesley.
Sneed, H. M. (2003) Critical Success Factors in Software Maintenance, In: International Conference
on Software Maintenance, Amsterdam, The Netherlands, September.
Naur, P.; Randell, B. (1968) Software Engineering: Report, In: Conference of NATO Science
Committee, Garmisch, Germany, October.
Niessink, F. (1999) Software Maintenance Research in the Mire?,In: Annual Workshop on Empirical
Studies of Software Maintenance (WESS99), Oxford, United Kingdom, September.
Nunes, J. D. (2005) Projetos de Planos Pedaggicos Orientados a Problemas, Biblioteca Digital da
SBC. Disponvel em << http://www.sbc.org.br/bibliotecadigital/download.php?paper=218>>.
Paduelli, M.; Sanches, R. (2006)Problemas em manuteno de software: caracterizao e evoluo,
In: III Workshop de Manuteno de Software Moderna, Vila Velha, ES, Brasil, Maio.
Pfleeger, S. L. (2001) Software Engineering: theory and practice. Second Edition, New Jersey,
Prentice Hall.
Pigoski, T. M. (1996) Practical Software Maintenance: Best Practices for Managing Your Software
Investment,Willey Computer Publishing.
Polo, M.; Piattini, M.; Ruiz, F.; Calero, C. (1999) Roles in the maintenance process, ACM SIGSOFT
Software Engineering Notes, v. 24, n. 4, p. 84-86.
Polo, M.; Piattini, M.; Ruiz, F. (2003) Using a qualitative research method for building a software
maintenance methodology, Software Practice and Experience, v.32, n. 13, p. 12391260.
Pressman, R. S. (2005) Software Engineering: a practitioners approach, 6.ed., McGrawHill Higher
Education.
Rodriguez, E. (2004). Overview of ACM / Education. Disponvel em: <http://www.acm.org/
about_acm/ov_edu.html>.
Shackelford, R.; Cross, J. H.; Davies, G.; Impagliazzo, J.; Kamali, R.; LeBlanc, R.; Lunt, B.; McGettrick, A.;
Sloan, R.; Topi, H. (2004) Computing Curricula 2004: A Guide to Undergraduate Degree Programs in
Computing, Joint Task Force for Computing Curricula 2004, The Association for Computing (ACM),
November.
Silva, L.; Sayo, M.; Leite, J. C. S. P.; Breitman, K. (2003) Enriquecendo o cdigo com cenrios, In:
Simpsio Brasileiro de Engenharia de Software (SBES), Manaus, AM, Brasil, Outubro.
Silva, L. de P.; Santander, V. F. A. (2004) Uma Anlise Crtica dos Desafios para Engenharia de
Requisitos em Manuteno de Software, In: Workshop em Engenharia de Requisitos, Tandil,
Argentina, Dezembro.
37
Desenvolvimento
Nesta seo voc encontra artigos voltados para diferentes
abordagens de apoio ao desenvolvimento de projetos de software
Doutor e Mestre em Engenharia de Sistemas e Computao pela COPPE/UFRJ, Especialista em Mtodos Estatsticos Computacionais e Bacharel em Informtica pela
UFJF, professor do curso de Bacharelado em
Cincia da Computao da FAGOC, professor dos Cursos de Bacharelado em Sistemas
de Informao do Centro de Ensino Superior de Juiz de Fora, da Faculdade Metodista Granbery e da Universidade Severino
Sombra, professor 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, Editor da Engenharia de Software Magazine.
38
Desen volvimento
Nota do DevMan 1
Refatoraes apresentadas em outros artigos
As tcnicas de refatorao Extrair Subclasse e Extrair Interface j foram apresentadas em outras edies da Engenharia de Software Magazine, mais precisamente
nas edies de nmero 30 e 33.
Nota do DevMan 2
Relembrando conceitos
Uma breve descrio do padro de projeto Composite foi apresentada no artigo
da edio de nmero 30 da Engenharia de Software Magazine. Neste artigo tais
conceitos sero relembrados para facilitar o entendimento da tcnica de refatorao para padres Substituir rvore Implcita por Composite.
As consequncias: A definio do padro Composite facilita este trabalho, uma vez que fornece uma soluo para a
criao de uma estrutura hierrquica que permita a instanciao de objetos compostos, fazendo com que este processo
fique oculto ao cliente da aplicao. Com isso, tem-se um
cdigo cliente mais simples, e um projeto de cdigo mais
bem definido, pois o trabalho de instanciao de objetos
compostos fica com a hierarquia de classes, e no ao cdigo
cliente da aplicao.
39
40
Desen volvimento
return objCliente;
}
public UInt32 CalcularLimiteCredito(UInt32 salario)
{
UInt32 limiteCredito = 0;
if (salario < 500)
{
limiteCredito = ((salario / 100) * 10);
}
else if (salario >= 500 && salario < 1000)
{
limiteCredito = ((salario / 100) * 15);
}
else if (salario >= 1000)
{
limiteCredito = ((salario / 100) * 20);
}
return limiteCredito;
}
41
42
Desen volvimento
43
Referncias
GAMMA, Erich, 2000. Padres de Projeto: solues reutilizveis de software orientado a objetos,
1ed. Porto Alegre: Bookman, 2000.
KERIEVSKY, Joshua. Refatorao para Padres, 1ed. Porto Alegre: Bookman, 2008.
FOWLER, Martin. Refatorao: aperfeioando o projeto de cdigo existente, 1ed. Porto Alegre:
Bookman, 2004.
www.devmedia.com.br/esmag/feedback
44
Feedback
eu
sobre e
s
D
s
edio
ta
Concluso
Desen volvimento
45
Desenvolvimento
Nesta seo voc encontra artigos voltados para diferentes
abordagens de apoio ao desenvolvimento de projetos de software
Tratamento de excees
Tratando excees no desenvolvimento de software com Java
Doutor e Mestre em Engenharia de Sistemas e Computao pela COPPE/UFRJ, Especialista em Mtodos Estatsticos Computacionais e Bacharel em Informtica pela
UFJF, professor do curso de Bacharelado em
Cincia da Computao da FAGOC, professor dos Cursos de Bacharelado em Sistemas
de Informao do Centro de Ensino Superior de Juiz de Fora, da Faculdade Metodista Granbery e da Universidade Severino
Sombra, professor 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, Editor da Engenharia de Software Magazine.
ARTIGO EXTRA!
Este artigo estaria disponibilizado integralmente
apenas no leitor digital.
46
processo de desenvolvimento
de uma aplicao pode contar
com vrias etapas, alm da
etapa de implementao. Uma etapa
que se torna indispensvel no processo
de desenvolvimento de uma aplicao
aquela onde se realizam testes na tentativa de eliminar as chances de um erro
ocorrer quando esta aplicao j estiver
em produo.
Neste contexto, temos que um problema comum a vrios usurios est ligado
ao fato da indevida insero de dados
no software. Entradas no esperadas
pelo sistema podem ocasionar erros
na execuo da aplicao, fazendo com
que a mesma venha at mesmo a ser
encerrada.
Os mecanismos de tratamentos de
excees (ler Nota do DevMan 1) que
as linguagens de programao possuem permitem que o desenvolvedor
Desen volvimento
Nota do DevMan 1
Tratamento de Excees
O tratamento de excees uma tcnica que deve ser considerada em qualquer plataforma. A maioria dos conceitos vistos neste artigo podem ser utilizados independente da
linguagem que esteja trabalhando e altamente recomendado que todos os desenvolvedores estejam conscientes disso para que as empresas tenham processos eficientes e
criem projetos dos quais possam reutilizar cdigo de tratamento de excees.
47
01. try
02. {
03. //A execuo do programa tentar executar o corpo do bloco try
(entre chaves).
04. }
Listagem 2. Manipuladores Try/Catch.
01. try
02. {
03. //A execuo do programa tentar executar o corpo do bloco try
(entre chaves).
04. }
05. catch(/*Tipo de Exceo a ser capturada*/ )
06. {
07. /* Se a tentativa de execuo do bloco try no pode ser realizada,
uma exceo levantada pelo compilador, mas neste caso
capturada pelo bloco catch.
08. */
09. }
48
Desen volvimento
01. try
02. {
03.
//A execuo do programa tentar executar o corpo do bloco
try(entre chaves).
04. }
05. catch(/*Tipo de Exceo a ser capturada*/ )
06. {
07. /* Se a tentativa de execuo do bloco try no pode
ser realizada, uma exceo levantada pelo
compilador, mas neste caso capturada pelo
bloco catch.
08. */
09. }
10. finally
11. {
12.
/* Aqui fica o cdigo que finaliza a ao iniciada pelo try,
que pode ser a liberao dos recursos nele alocados.
13.
*/
14. }
Listagem 4. Aplicativo de diviso de nmeros.
01. try
02. {
03. int numero1 = Integer.parseInt(JOptionPane.howInputDialog
(null, Digite um numero: ));
04. int numero2 = Integer.parseInt(JOptionPane.howInputDialog
(null, Digite outro numero: ));
05. int resultado = numero1 / numero2;
06. JOptionPane.showMessageDialog(null, Resultado: + resultado);
07. }
08. catch(NumberFormatException e)
09. {
10. JOptionPane.showMessageDialog(null, Insira Numeros);
11. }
Listagem 6. Aplicativo de diviso de nmeros.
01. try
02. {
03. int numero1 = Integer.parseInt(JOptionPaneshowInputDialog
(null, Digite um numero: ));
04. int numero2 = Integer.parseInt(JOptionPane.howInputDialog
(null, Digite outro numero: ));
05. int resultado = numero1 / numero2;
06. JOptionPane.showMessageDialog(null, Resultado: + resultado);
07. }
08. catch(NumberFormatException e)
09. {
10.
JOptionPane.showMessageDialog(null, Insira Numeros);
11. }
12. catch(ArithmeticException e)
13. {
14.
JOptionPane.showMessageDialog(null, Impossivel fazer diviso
com 0);
15. }
49
50
Desen volvimento
51
52
Feedback
eu
sobre e
s
DEITEL, H. M, 2005. Java: Como programar, 6ed. So Paulo: Pearson Prentice Hall, 2005.
D
s
Concluso
Referncias
edio
ta
Desen volvimento
53