Documentos de Académico
Documentos de Profesional
Documentos de Cultura
faz diferena!
19.02.08
18:15:13
magazine
Engenharia de Software
Saiba seu significado e para que serve
Edio Especial
Requisitos
Especial
Projeto
Processos
EDITORIAL
Impresso no Brasil
Corpo Editorial
Colaboradores
Rodrigo Oliveira Spnola
rodrigo@sqlmagazine.com.br
Marco Antnio Pereira Arajo
Eduardo Oliveira Spnola
Diagramao
Romulo Araujo - romulo@devmedia.com.br
Capa
Antonio Xavier - antonioxavier@devmedia.com.br
Na Web
www.devmedia.com.br/esmag
Apoio
Parceiro
Nos ltimos anos, os mtodos geis de desenvolvimento de software ganharam importncia em diversos segmentos da indstria
de software. Assim como os mtodos tradicionais, os mtodos geis
tm por objetivo construir sistemas de alta qualidade que atendam
s necessidades dos usurios. A principal diferena est nos princpios utilizados para atingir tal objetivo.
Os mtodos geis apresentam uma abordagem bastante pragmtica para o desenvolvimento de software. Planos detalhados so
feitos apenas para a fase atual do projeto. Para fases futuras, os planos so considerados apenas rascunhos que podem se adaptar a
mudanas conforme o time aprende e passa a conhecer melhor o
sistema e as tecnologias utilizadas.
Neste contexto, a Engenharia de Software Magazine destaca nesta
edio uma matria que apresenta algumas evidncias que motivaram o surgimento dos mtodos geis, explicando seus valores e
princpios, com nfase na Programao Extrema, um dos mtodos
geis que mais recebeu ateno nos ltimos anos.
Alm desta matria, esta edio traz mais seis artigos:
UML Casos de Uso: Entendendo os casos de uso na prtica um
estudo de caso Parte I;
Documento de Requisitos: Essencial ao Desenvolvimento de Software;
Gerncia de Reutilizao de Software;
Melhorando a Qualidade do Software e Otimizando Recursos com
Teste baseado em Riscos;
Programao Orientada a Aspectos;
Engenharia de Software: Graduao (bacharelado) em Engenharia
de Software.
Desejamos uma tima leitura!
Equipe Editorial Engenharia de Software Magazine
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:
Carmelita Mulin Atendimento ao Leitor
www.devmedia.com.br/central/default.asp
(21) 2215-0033
Kaline Dolabella
Gerente de Marketing e Atendimento
kalined@terra.com.br
(21) 2215-0033
Publicidade
Para informaes sobre veiculao de anncio na revista ou no site entre em
contato com:
Kaline Dolabella
publicidade@devmedia.com.br
Caro Leitor
Para esta edio, temos um conjunto de 6 vdeo aulas. Estas vdeo aulas esto disponveis para
download no Portal da Engenharia de Software Magazine e certamente traro uma significativa contribuio para seu aprendizado. A lista de aulas publicadas pode ser vista abaixo:
Tipo: Desenvolvimento
Ttulo: Programao Orientada a Aspectos
Autor: Marco Antnio Pereira Arajo
Mini-Resumo: A Programao Orientada a Aspectos (POA) surge como uma proposta para a
construo de sistemas complexos atravs da separao de interesses, como aqueles que no
se aplicam lgica de negcios como, por exemplo, segurana, desempenho, persistncia,
integridade de dados e tratamento de erros, dentre outros. Assim, a POA prega a diviso
de um sistema em partes para uma melhor compreenso das fronteiras que definem suas
funes, onde toda parte relacionada a um interesse transportada para uma localizao
fsica separada das demais, de forma a permitir maior reusabilidade e manutenibilidade do
software. Nesta vdeo aula conheceremos alguns dos principais conceitos deste paradigma
de programao.
Tipo: Desenvolvimento
Ttulo: Desempenho em Bancos de Dados como Elemento para Melhoria das Aplicaes
Autor: Marco Antnio Pereira Arajo
Mini-Resumo: Ao trabalhar com consultas em bancos de dados, deve-se ter uma ateno maior
com relao ao seu desempenho, uma vez que consultas mal elaboradas podem degradar consideravelmente o desempenho do sistema como um todo. Para que seja possvel fazer melhorias
relativas s consultas, preciso entender como analisar seu desempenho, bem como os fatores
que contribuem para sua melhoria. Este ser o foco desta aula.
Tipo: Projeto
Ttulo: Desenvolvimento Baseado em Componentes
Autor: Marco Antnio Pereira Arajo
Mini-Resumo:Desenvolvimento Baseado em Componentes (DBC) aparece como
uma tcnica que consiste no desenvolvimento de aplicaes a partir de componentes
interoperveis, reduzindo, assim, a complexidade e o custo do desenvolvimento, e melhorando a qualidade do produto de software. Proporciona ainda o desenvolvimento de
aplicaes com mais agilidade, atravs do reuso de componentes pr-existentes e com
maior grau de confiabilidade. Nesta vdeo aulas sero apresentados alguns conceitos
desta abordagem.
Tipo: Projeto
Ttulo: Introduo Construo de Diagrama de Classes da UML Parte 18
Autor: Rodrigo Oliveira Spnola
Mini-Resumo: Esta vdeo aula d continuidade ao estudo de caso de um sistema de gesto de
festas. Neste estudo de caso, partiremos dos requisitos funcionais do software. A partir deles, ser
elaborado o diagrama de casos de uso do sistema. Com o diagrama de casos de uso elaborado,
sero especificados trs casos de uso. Por ltimo, ser elaborado o diagrama de classes com base
nos requisitos funcionais e casos de uso especificados.Nesta aula,o foco o incio da elaborao do
diagrama de classes.Para isto,faremos uso da heurstica apresentada neste treinamento.Em particular, identificaremos as classes e atributos candidatos a partir da lista de requisitos funcionais.
Tipo: Projeto
Ttulo: Introduo Construo de Diagrama de Classes da UML Parte 19
Autor: Rodrigo Oliveira Spnola
Mini-Resumo: Esta vdeo aula d continuidade ao estudo de caso de um sistema de
gesto de festas. Neste estudo de caso, partiremos dos requisitos funcionais do software.
A partir deles, ser elaborado o diagrama de casos de uso do sistema. Com o diagrama de
casos de uso elaborado, sero especificados trs casos de uso. Por ltimo, ser elaborado
o diagrama de classes com base nos requisitos funcionais e casos de uso especificados.
Nesta aula, o foco o incio da elaborao do diagrama de classes. Para isto, faremos uso
da heurstica apresentada neste treinamento. Em particular, identificaremos as classes e
atributos candidatos a partir dos casos de uso especificados.
Tipo: Projeto
Ttulo: Introduo Construo de Diagrama de Classes da UML Parte 20
Autor: Rodrigo Oliveira Spnola
Mini-Resumo: Esta vdeo aula d continuidade ao estudo de caso de um sistema de gesto de
festas.Neste estudo de caso,partiremos dos requisitos funcionais do software.A partir deles,ser
elaborado o diagrama de casos de uso do sistema. Com o diagrama de casos de uso elaborado,
sero especificados trs casos de uso.Por ltimo, ser elaborado o diagrama de classes com base
nos requisitos funcionais e casos de uso especificados. Nesta aula, finalizamos a identificao
das classes e atributos, indicando quais atributos pertencem a cada classe.
NDICE
06- Introduo Programao Extrema (XP)
Danilo Sato
18 - UML Casos de Uso - Entendendo os casos de uso na prtica um estudo de caso Parte I
Ana Cristina Melo
Danilo Sato
danilo@dtsato.com / www.dtsato.com
M etodologias geis
Evidncias
No desenvolvimento de software, comum que os requisitos mudem enquanto a implementao ainda est
acontecendo. Kajko-Mattson et al. mostram que cerca de
40% a 90% do custo durante o ciclo de vida de um projeto
gasto na fase de manuteno [1]. Muitas empresas e times
de desenvolvimento acham que mudanas so indesejveis,
pois acabam com todo o esforo gasto no planejamento.
No entanto, os requisitos geralmente mudam conforme o
cliente v o sistema sendo implantado e em funcionamento. muito difcil criar um plano no incio do projeto que
consiga prever todas as mudanas sem gastar muito esforo,
tempo e dinheiro.
Boehm chegou a afirmar que encontrar e arrumar um
defeito no software aps a entrega custa cerca de 100 vezes
mais do que encontr-lo e arrum-lo nas fases iniciais de
design [2]. Essa foi uma das principais justificativas para
os mtodos tradicionais gastarem mais tempo nas fases de
anlise de requisitos e design, apesar do prprio Boehm ter
sugerido o desenvolvimento iterativo ao invs da produo
do produto completo de uma vez [3]. Em 2001, num artigo
de Boehm e Basili, houve uma reduo no pessimismo ao
perceber que, para sistemas pequenos, o fator era mais prximo de 5:1 ao invs de 100:1 e que, mesmo para sistemas
grandes, boas prticas arquiteturais poderiam reduzir de
forma significativa o custo da mudana, encapsulando as
reas de mudana em partes pequenas e fatoradas [4].
Poppendieck [5] sugere que a principal razo das mudanas
no desenvolvimento de software que o processo de negcio ao qual o software est atrelado evolui constantemente.
Construir flexibilidade para acomodar mudanas arbitrrias
muito caro e pode ser um desperdcio. Segundo Johnson
[6], 45% das funcionalidades implementadas num sistema
tpico no so utilizadas nunca e 19% so raramente utilizadas. A melhor estratgia evitar generalizaes desnecessrias e fazer com que o sistema seja flexvel apenas nas
reas mais propcias mudana [7].
A maioria dos estudos de caso na indstria apontam para
uma taxa relativamente alta de fracassos nos projetos de
software [8]. No clssico relatrio do Standish Group de
1994, o CHAOS Report [9], 37% dos fatores relacionados aos
projetos em dificuldade estavam relacionados aos requisitos. O mesmo relatrio de 2003 aponta que apenas 52% das
funcionalidades so entregues em um projeto [10]. Outro
estudo de classificao de defeitos aponta os requisitos como
principal categoria de defeitos, com 41% [11]. Ns queremos
estabilizar os requisitos, mas eles no so estveis [12].
O Manifesto gil
Em fevereiro de 2001, um grupo formado por 17 desenvolvedores experientes, consultores e lderes da comunidade de
software se reuniu em Utah para discutir idias e procurar
uma alternativa aos processos dirigidos a documentao e
s prticas adotadas nas abordagens tradicionais da Engenharia de Software e gerncia de projetos. Dessa reunio
Scrum
Desenvolvida nas dcadas de 80 e 90 por Ken Schwaber,
Jeff Sutherland, e Mike Beedle [14], o Scrum se concentra
mais nos aspectos gerenciais do desenvolvimento de software, propondo iteraes de duas semanas ou 30 dias
(chamados Sprints) com acompanhamento dirio por meio
das Reunies em P (ou stand-up meetings). Por dar menos
nfase aos aspectos tcnicos, geralmente combinada com
prticas propostas por XP e compatvel com certificaes
de qualidade como CMMI ou ISO 9001 [15].
Famlia Crystal
Alistair Cockburn prope uma famlia de mtodos por
acreditar que diferentes abordagens so necessrias para
equipes de tamanhos diferentes [17]. Apesar disso, todos os
mtodos dessa famlia compartilham propriedades como:
entrega freqente, Reflexo e Comunicao. Outra parte importante dos mtodos da famlia Crystal o que Cockburn
chama de habitabilidade (habitability): o mnimo de processo necessrio para que a equipe consiga ter sucesso.
Complexos (relacionados Teoria do Caos) [21], ele prope trs fases no-lineares e possivelmente sobrepostas:
especulao (referindo-se ao paradoxo do planejamento),
colaborao e aprendizado. Por meio de iteraes curtas, a
equipe cria o conhecimento cometendo pequenas Falhas,
causadas por falsas premissas, e corrigindo-as aos poucos,
criando uma experincia mais rica e ampla.
Programao Extrema
A Programao Extrema (ou XP) foi um dos mtodos
geis que mais recebeu ateno na virada do sculo. Seu
objetivo a excelncia no desenvolvimento de software,
visando baixo custo, poucos defeitos, alta produtividade e
alto retorno de investimento. Na segunda edio do livro
Extreme Programming Explained [24], Kent Beck aprimora a definio de XP da primeira edio, enumerando suas
principais caractersticas:
XP um mtodo leve. O time s deve fazer o necessrio
para trazer valor para o cliente;
XP um mtodo que enfatiza o desenvolvimento de software. Apesar de ter implicaes em reas como marketing,
vendas ou operaes, XP no tenta resolver os problemas
diretamente ligados a elas;
XP funciona para times de qualquer tamanho. Apesar das
prticas de XP funcionarem melhor em times pequenos,
seus valores e princpios podem ser aplicados em qualquer
escala e XP se adapta a requisitos vagos ou em constante
mudana.
Histrico
As idias de XP originaram-se de conversas entre Kent
Beck e Ward Cunningham a partir de suas experincias
com desenvolvimento de software em Smalltalk. Juntos, eles
escreveram o primeiro artigo sobre cartes CRC [25] e sobre
a aplicao de padres no desenvolvimento de software [26].
Ward Cunningham foi o criador do Wiki [27] e foi no seu
Wiki que as primeiras discusses sobre XP aconteceram.
M etodologias geis
Muitas das caractersticas de XP, como Refatorao, Programao Pareada, adaptao mudana, Integrao Contnua,
desenvolvimento iterativo e nfase nos testes, so elementoschave presentes na cultura da comunidade Smalltalk desde
a dcada de 1980.
Em 1992, William Opdyke publicou sua tese de doutorado [28], contando como Kent e Ward obtinham ganhos em
produtividade usando tcnicas de refatorao. Mais tarde,
essas tcnicas seriam compiladas no livro de Martin Fowler
et al. sobre refatorao [29].
Kent Beck tambm publicou o primeiro artigo sobre testes
de unidade automatizados [30] quando desenvolveu o primeiro arcabouo para desenvolvimento de testes automatizados: o SUnit [31] para testes em Smalltalk e, mais tarde
juntamente com Erich Gamma, o JUnit [32, 33] para testes
em Java. Esse arcabouo foi portado para diversas linguagens, formando um conjunto de ferramentas que ficaram
conhecidas como famlia XUnit: JUnit (Java), CppUnit (C++),
CUnit (C), NUnit (.NET), pyUnit (Python), Test::Unit (Ruby),
dentre diversos outros [34].
Todas essas idias foram se fundindo na cabea de Kent
Beck quando, em 1996, ele foi chamado para ajudar no projeto C3, ou Chrysler Comprehensive Compensation System,
que ficou conhecido como o bero de XP. Nele, Kent Beck
utilizou pela primeira vez todas as prticas que vieram a
se tornar a Programao Extrema. Sua idia, que originou
o nome Programao Extrema, era juntar as boas prticas
de programao j conhecidas pela indstria e encar-las
como botes de volume que seriam aumentados ao valor
mximo, extremo. Se fazer reviso de cdigo era bom, fazer
Programao Pareada era reviso em tempo integral; se
fazer testes automatizados cedo era bom, escrev-los antes
do cdigo era melhor ainda.
Foi a partir dessa experincia que Kent Beck lanou, em
1999, a primeira edio do livro que difundiu XP, Extreme
Programming Explained: Embrace Change [35]. Esse livro
recebeu no mesmo ano o prmio JOLT de produtividade
da revista Software Development e, aps cinco anos de
experincia com a utilizao e consultoria de XP, Kent Beck
lanou, em parceria com a sua esposa, da rea de psicologia,
a segunda edio do livro que hoje uma das principais
referncias sobre o assunto [24].
Valores
A filosofia de trabalho proposta por XP est baseada em
5 valores que servem de base para a aplicao das prticas
e dos princpios:
Comunicao
Abordagem
Segundo Kent Beck [24], a Programao Extrema inclui:
Uma filosofia para o desenvolvimento de software baseada nos valores de Comunicao, Feedback, Simplicidade,
Coragem e Respeito;
Um conjunto de prticas comprovadamente teis para
melhorar o desenvolvimento de software. As prticas expressam os valores de XP;
Um conjunto complementar de princpios, tcnicas intelectuais que auxiliam a traduo dos valores em prticas, teis
quando as prticas existentes no resolvem seu problema
particular;
O primeiro valor do Manifesto gil prope que os indivduos e as interaes entre eles so importantes para o
desenvolvimento de software [13]. A Programao Extrema
expressa tal importncia no valor da comunicao. XP pressupe que a maioria dos problemas num projeto de software
ocorrem por dificuldade na Comunicao [12].
A comunicao evidenciada em muitas das prticas: uma
equipe de XP funciona como um time completo, trabalhando
numa rea de trabalho informativa na qual todos possam
sentar junto. A presena e o envolvimento real com o cliente
e a programao pareada tambm so prticas que fortalecem e facilitam a comunicao. Alm disso, as mtricas
Simplicidade
O segundo valor de XP a simplicidade. Os membros de
uma equipe de XP esto freqentemente buscando a soluo
mais simples para resolver seus problemas atuais. Num contexto onde a adaptao a mudanas aceita [13] e encorajada,
XP promove a preocupao com o que mais simples para
resolver os problemas de hoje, evitando desperdcios com
solues genricas para problemas futuros.
Segundo Kent Beck, a simplicidade o valor intelectual
mais intenso de XP [24]. Encontrar a soluo mais simples
no uma tarefa fcil. A Seo Prticas apresenta uma das
prticas que mais ajuda os desenvolvedores numa equipe
de XP a manter a nfase constante no design simples, o
desenvolvimento dirigido por testes [36].
Feedback
importante ter uma resposta rpida sobre as aes
realizadas para se adaptar s mudanas [13]. XP promove
ciclos curtos e constantes de feedback, nos mais variados
aspectos do desenvolvimento de software. Os valores de XP
se complementam, por isso o feedback parte importante
da comunicao e da simplicidade. Diante de uma dvida
entre trs diferentes solues, tentar todas parece ser um
desperdcio, porm esta pode ser a melhor forma de descobrir qual soluo mais simples e mais fcil de lidar.
Segundo Ambler [37], a maior contribuio para o sucesso
dos mtodos geis a reduo dos ciclos de feedback. As
prticas de XP evidenciam tal valor: a programao pareada
fornece feedback em segundos enquanto o desenvolvimento dirigido por testes fornece feedback em minutos. Alm
disso, o acompanhamento em projetos XP realizado diariamente pelo tracker e o uso de ferramentas para coleta e
anlise automatizada de mtricas pode fornecer feedback
ainda mais rapidamente.
Coragem
O quarto valor de XP a coragem. Kent Beck descreve a
coragem em XP como a ao tomada diante do medo [24].
Isso no significa que os membros da equipe devem ter coragem para fazer o que quiserem sem se preocupar com as
conseqncias para o time. A coragem como valor primrio,
sem a influncia e balanceamento dos outros valores, pode
ser perigosa. No entanto, em conjunto com os outros valores,
ela muito poderosa.
Teles [38] enumera alguns pontos onde a adoo de XP exige coragem da equipe para: desenvolver software de forma
incremental; manter a nfase constante na simplicidade;
permitir ao cliente priorizar funcionalidades; incentivar
os desenvolvedores a trabalhar em par; investir tempo em
refatorao; investir tempo em testes automatizados; estimar
10
as histrias na presena do cliente; compartilhar o cdigo com todos os membros da equipe; fazer a integrao
completa do sistema diversas vezes ao dia; adotar um
ritmo sustentvel; abrir mo da documentao; propor
contratos de escopo varivel e propor a adoo de um
processo novo.
Respeito
O quinto valor, enfatizado na segunda edio de XP,
serve de base para os outros quatro valores: respeito. Se
os membros da equipe no se importam com os outros ou
com os resultados, XP no vai funcionar [24]. importante
reconhecer que a excelncia no desenvolvimento de software depende das pessoas, e elas devem se respeitar para
conseguir extrair o mximo de seu potencial.
A falta de respeito pode influenciar negativamente alguns aspectos na adoo de XP: comunicao sem respeito
criar conflitos internos; coragem sem respeito trar atitudes que vo contra o bem estar da equipe; programao
pareada um exerccio contnuo de respeito; horas-extras
excessivas iro impactar o ritmo sustentvel da equipe; a
colaborao entre a equipe e o cliente tambm exige uma
comunicao aberta e respeitosa.
Princpios
Os princpios de XP funcionam como ferramentas para
traduo dos valores em prticas. Tanto documentos longos quanto conversas dirias tm a inteno de comunicar.
Descobrir qual a forma mais eficiente depende parte do
contexto e parte dos princpios intelectuais. Nesse caso, o
princpio da humanidade sugere que a conversa satisfaz
melhor as necessidades humanas de relacionamento. Os
princpios que guiam a Programao Extrema so:
Humanidade
Pessoas desenvolvem software. importante levar em
conta as necessidades bsicas do ser humano no desenvolvimento de software, criando oportunidades para:
crescimento, contribuio, participao e relacionamento.
O grande desafio balancear as necessidades pessoais com
as necessidades do time. As prticas de XP tentam atender
tanto s necessidades de negcio quanto s necessidades
pessoais dos membros da equipe.
Economia
Os envolvidos no desenvolvimento de software tambm
devem se preocupar com os aspectos econmicos para
evitar que o projeto seja apenas um sucesso tcnico.
importante que uma equipe de XP esteja constantemente
preocupada em agregar valor de negcio ao sistema que
esto desenvolvendo. Esse princpio um dos motivos
pelos quais os clientes so responsveis pela priorizao
das histrias nas reunies de planejamento. A equipe de
XP deve resolver os problemas mais importantes primeiro,
maximizando o valor do projeto.
M etodologias geis
Benefcio Mtuo
O princpio do benefcio mtuo um dos mais importantes
de XP, porm tambm um dos mais difceis de aplicar. Todas
as atividades devem trazer benefcio a todos os envolvidos.
Escrever documentos longos um exemplo de violao desse
princpio: o programador diminui seu ritmo de produo para
escrever um documento que no tem valor agora, podendo
apenas trazer valor no futuro para algum que ir dar manuteno no seu cdigo (se a documentao continuar vlida
at l). XP resolve o problema da comunicao com o futuro
de uma forma mutuamente benfica atravs de:
Testes automatizados que ajudam o programador no
design e na implementao das funcionalidades agora, servindo como documentao e como teste de regresso para
as pessoas que iro dar manuteno no futuro;
Refatorao constante para remover complexidade desnecessria, simplificar o design e remover defeitos, deixando
o cdigo mais limpo e fcil de entender para os futuros
mantenedores;
Nomes coerentes e baseados em metforas que facilitam o
entendimento do sistema, aumentando a velocidade atual do
desenvolvimento e da integrao de novos programadores
na equipe.
Auto-Semelhana
O princpio da auto-semelhana sugere a aplicao da estrutura de uma soluo em outros contextos, inclusive em
diferentes escalas. Um exemplo sugerido por Kent Beck [24] a
aplicao de testes a priori em ambos os nveis: no s quando
desenvolvendo os testes unitrios com TDD, mas tambm para
especificar os testes de aceitao com o cliente. Dessa forma,
fica mais claro para os programadores que as histrias s esto
prontas quando passam nos testes de aceitao, reduzindo o
ciclo de feedback e simplificando o andamento da iterao.
Melhoria
XP valoriza a busca constante pela melhoria. Ao invs de
buscar a perfeio, mais importante tentar fazer o melhor
trabalho possvel hoje, e estar consciente de tudo que ser
necessrio para melhorar amanh. O princpio da melhoria
valoriza as atividades que comeam agora e se refinam ao
longo do tempo.
Diversidade
Os times devem ser formados por uma variedade de habilidades, atitudes e perspectivas. Dessa diversidade podem
surgir conflitos que devem ser vistos como oportunidades
para discusso das diferentes perspectivas. Muitas vezes o
melhor design surge a partir de solues distintas. O princpio da diversidade se expressa em XP atravs da prtica
do time completo.
Reflexo
Uma boa equipe no deve apenas fazer o seu trabalho, mas
sim refletir constantemente sobre as razes e as formas como
Fluxo
Esse princpio sugere a entrega de um fluxo contnuo de
software que agrega valor ao negcio, evitando pensar em
fases discretas. Quanto maior o tamanho de uma atividade
- iterao, release, histria ou tarefa - maior o tempo gasto
at descobrir se ela foi realizada com sucesso ou no, o que
aumenta o risco do erro. Quanto maior o erro, mais difcil
a correo. Para aumentar o feedback e diminuir os riscos, a equipe de XP deve prover incrementos pequenos de
funcionalidade, fazendo entregas pequenas e freqentes.
Prticas como integrao contnua, build em 10 minutos,
implantao incremental e implantao diria evidenciam
o princpio do fluxo.
Oportunidade
Equipes de XP enxergam problemas como oportunidades
para mudana. Na busca pela excelncia, os membros do
time devem demonstrar uma atitude positiva, identificando oportunidades para aprender, melhorar e desenvolver
software de qualidade.
Redundncia
O princpio da redundncia sugere que os problemas
difceis e crticos devem ser resolvidos de vrias maneiras
diferentes. Muitas das prticas de XP, como programao pareada, integrao contnua, envolvimento real com o cliente
e desenvolvimento dirigido por testes, so redundantes na
tentativa de reduzir a quantidade de defeitos e aumentar a
qualidade do software produzido.
Falha
Complementando o princpio da redundncia, o princpio da
falha sugere que todo erro um aprendizado. Na dvida entre
trs solues diferentes, tente implementar todas, mesmo que
algumas falhem. Diante de diferentes opes de design, ao
invs de perder tempo discutindo qual a melhor soluo, vale
mais a pena implement-las paralelamente, aprendendo com
os erros e chegando num consenso atravs da experincia.
Qualidade
Sacrificar a qualidade nunca um meio eficaz de controle.
Os projetos no andam mais rpido aceitando baixa qualidade. Cada incremento na qualidade tem reflexos de melhoria
em diversas outras reas do projeto, como produtividade,
eficincia e motivao. Um projeto XP no considera a
qualidade como uma das variveis de controle. O custo e
o tempo tambm so geralmente fixos, deixando o escopo
como principal varivel na negociao com o cliente [39].
11
Passos Pequenos
O princpio dos passos pequenos complementa o princpio
do fluxo, fazendo com que os membros da equipe de XP se
perguntem sempre Qual o mnimo que preciso fazer para
garantir que estou na direo certa?. Prticas como desenvolvimento dirigido por testes e integrao contnua evidenciam o valor do ritmo imposto pelos passos pequenos. A
refatorao outro exemplo da aplicao desse princpio.
Aceitao da Responsabilidade
A responsabilidade no deve ser imposta, deve ser aceita. As
prticas refletem esse princpio ao, por exemplo, sugerir que
a pessoa responsvel por uma Histria tambm responsvel
pela sua estimativa, design, implementao e teste.
Prticas
A abordagem de apresentao das prticas de XP foi totalmente refatorada na segunda edio por Kent Beck [24].
Ao invs de exigir a utilizao de todas as 12 prticas de
uma vez, Kent Beck sugere que cada time deve se adaptar
da maneira que achar mais apropriada. Ao invs de impor
as prticas, cada mudana deve comear pelos prprios
membros da equipe. Alm disso, as prticas na segunda
edio so 24, divididas entre prticas primrias e prticas
corolrias. Prticas primrias so aquelas que podem ser
aplicadas separadamente, trazendo melhoria imediata para a
equipe. Prticas corolrias so mais difceis de implementar,
mostrando sua eficincia somente aps domnio e experincia prvia com as prticas primrias.
Prticas Primrias
Sentar Junto: A equipe de XP deve trabalhar num espao
amplo e aberto, onde todos possam ficar juntos, fortalecendo
os elos da comunicao. prefervel trocar os tradicionais
cubculos por reas de uso comum onde os membros da
equipe possam se agrupar para discutir no quadro branco,
sentar juntos para trabalhar em par e espalhar grficos e
informaes na parede.
Time Completo: Equipes de XP devem ser multi-disciplinares, com todas as habilidades necessrias para o sucesso
do projeto. A equipe deve ser formada no apenas por desenvolvedores, mas tambm por analistas de teste, analistas
de negcio, clientes, especialistas em banco de dados, especialistas em interfaces grficas, administradores de rede, etc.
Todos devem trabalhar num esprito de contribuio para a
equipe, visando o bom andamento do projeto.
rea de Trabalho Informativa: Transforme o ambiente de
trabalho num reflexo do projeto. Um observador interessado deve ser capaz de ter uma idia da evoluo do projeto
apenas andando pela rea de trabalho. Alguns exemplos de
instrumentos para espalhar essas informaes, chamados
de radiadores de informao por Cockburn [40], so: cartes
com histrias num mural, quadros brancos, notas em papel
nas paredes e grficos como, por exemplo, o burn-down
chart proposto pelo Scrum [14, 41] para acompanhar a
12
velocidade da equipe. As mtricas tambm tm papel importante na comunicao e na rea de trabalho informativa
onde elas sero atualizadas pelo tracker e apresentadas
equipe e ao cliente.
Trabalho Energizado: O ritmo de trabalho no deve
afetar a vida pessoal dos membros da equipe. Durante o
planejamento, o nmero de horas dedicadas ao projeto
deve ser definido de forma realista. Fazer horas-extra deve
ser exceo e no a regra. Os membros da equipe de XP
devem trabalhar apenas enquanto puderem ser produtivos
e se manter energizados. O desenvolvimento de software
exige criatividade que raramente aparecer em momentos
de cansao ou indisposio [42].
Programao Pareada: Os desenvolvedores trabalham
em par para realizar suas tarefas. Isso promove o trabalho
coletivo e colaborativo, une a equipe e melhora a comunicao e a qualidade do cdigo. Os pares devem ser trocados
regularmente, inclusive vrias vezes por dia. Geralmente,
a seleo dos pares depende da tarefa a ser realizada, da
disponibilidade dos membros da equipe e da experincia
de cada um. O objetivo principal espalhar o conhecimento do sistema pela equipe inteira. Como importante efeito
colateral temos tambm o compartilhamento de tcnicas e
competncias entre os membros da equipe.
Histrias: O planejamento em XP feito com histrias
escritas em pequenos cartes. Cada carto escrito pelo
cliente e deve descrever uma unidade de funcionalidade, que
geralmente representa um requisito funcional desejado. Mike
Cohn prope o seguinte formato para uma histria [43]:
Como um <usurio/papel>
Eu gostaria de <funcionalidade>
Para que <valor de negcio>
Este formato interessante, pois evidencia o valor de negcio associado a cada funcionalidade. Para cada histria, os
desenvolvedores devem dar uma estimativa sobre o tempo
para implement-la e os clientes determinam a prioridade
de cada histria. Essas informaes so utilizadas no Jogo
do Planejamento, que acontece no incio dos Ciclos Semanais
e dos Ciclos Trimestrais. A descrio no carto no deve
armazenar todas as informaes sobre a histria. Os desenvolvedores de uma equipe de XP utilizam o dilogo como
principal meio de comunicao com o cliente para elucidar
dvidas sobre os detalhes da histria. Os cartes devem
servir apenas como um lembrete desse dilogo.
As estimativas das histrias num projeto em XP so geralmente medidas em pontos ou em horas ideais. Equipes
geis separam a estimativa do tamanho/complexidade de
uma histria do tempo que ela demora para ser implementada. Enquanto o tempo real gasto na implementao pode
variar, a complexidade da histria permanece a mesma.
Uma hora ideal considera que o desenvolvedor est trabalhando focado e sem interrupo durante uma hora, porm
M etodologias geis
todos os testes. Os desenvolvedores interagem com o repositrio diversas vezes por dia para trabalhar sempre numa
verso atualizada do sistema. Dessa forma, o conhecimento
do sistema se espalha por toda a equipe mais facilmente e a
dificuldade de realizar uma integrao grande se dilui em
diversas integraes pequenas e freqentes.
Desenvolvimento Dirigido por Testes: Um dos aspectos
mais importantes de XP a nfase nos testes automatizados.
Essa prtica sugere que os testes sejam escritos antes do cdigo, trazendo benefcios como: nfase no desenvolvimento
(evitando generalizaes desnecessrias), preocupao
com acoplamento e coeso (geralmente o design est com
problemas quando surge uma dificuldade para escrever o
teste), confiana (o teste verifica o comportamento agora e no
futuro) e ritmo (a prxima tarefa sempre escrever o prximo teste ou fazer o teste passar, criando o ritmo conhecido
como vermelho, verde e refatorao [36]).
Design Incremental: A simplicidade um conceito chave
que permite a adaptao a mudanas. Para minimizar o
custo com mudanas desnecessrias no futuro, os desenvolvedores devem sempre implementar o design mais simples
- e no o mais simplista - com o mnimo da complexidade
e flexibilidade necessria para atender s necessidades de
negcio atuais. Porm, deve-se tomar cuidado com a interpretao dessa prtica. Seu objetivo no minimizar o
investimento com design no curto prazo, mas sim manter
esse investimento proporcional s necessidades do sistema
conforme ele evolui. O design incremental deve ter suporte
de outras prticas, como a refatorao e os testes automatizados gerados pelo desenvolvimento dirigido por testes para
garantir que a equipe seja capaz de solucionar os problemas
futuros com rapidez.
Prticas Corolrias
Envolvimento Real com o Cliente: Faa com que as pessoas
cujas vidas e negcios sero afetados pelo sistema faam
parte da equipe. O cliente tambm deve fazer parte do time
completo. Ele deve entender as necessidades de negcio e
conhecer os verdadeiros usurios do sistema, para escrever
histrias, definir prioridades e testes de aceitao e responder
eventuais dvidas sobre as funcionalidades desejadas.
Implantao Incremental: Ao substituir um sistema legado, evite
faz-lo de uma s vez. mais seguro substituir gradualmente partes das funcionalidades, deixando os dois sistemas funcionando
ao mesmo tempo. Grandes implantaes so muito arriscadas e
tm custos humanos e econmicos muito altos [24].
Continuidade da Equipe: Mantenha equipes eficientes trabalhando juntas. Existe uma tendncia de tratar as pessoas
como recursos substituveis, que so trocadas de projetos
diversas vezes para manter a utilizao alta. No entanto, o
valor no desenvolvimento de software no surge apenas
do que as pessoas sabem ou fazem, mas tambm de seus
relacionamentos e conquistas em equipe. Ignorar o valor das
interaes e relaes para simplificar problemas de alocao
uma falsa economia [24].
13
14
M etodologias geis
Segunda Edio
Programao Pareada
Programao Pareada
Verses Pequenas
Integrao Contnua
Integrao Contnua
(Refatorao)
Design Incremental
Design Simples
Design Incremental
(Padronizao de Cdigo)
Cdigo Compartilhado
(Metfora)
Design Incremental
Ritmo Sustentvel
Papis na Equipe de XP
A prtica do Time Completo sugere que uma equipe de
XP seja formada por uma variedade de pessoas, com todas
as caractersticas e habilidades necessrias para o sucesso
do projeto. A primeira edio de XP [35] estava muito mais
voltada para programadores, porm, na segunda edio
[24], Kent Beck descreve a importncia da valorizao de
todos os outros papis dentro de uma equipe. Vale ressaltar
que os papis podem ser assumidos por pessoas diferentes,
em momentos distintos e que uma mesma pessoa pode desempenhar mais de um papel. A idia proporcionar um
ambiente produtivo no qual cada membro possa contribuir
da melhor forma para o projeto. Alguns dos papis que
podem fazer parte de uma equipe de XP so:
Programadores: Responsveis por estimar histrias e
tarefas, quebrar histrias em tarefas, escrever testes e cdigo, automatizar processos tediosos e melhorar o design
do sistema. Existem dois papis especiais para programadores. Geralmente, o mais experiente em XP atua como
coach (treinador), verificando e auxiliando os membros
na execuo das prticas no dia-a-dia. J o tracker est
constantemente coletando e compartilhando dados sobre o
andamento do projeto e do processo. O tracker responsvel
por criar e espalhar cartazes e grficos na rea de Trabalho
Informativa.
Arquitetos: Procuram e executam refatoraes de larga
escala no sistema, escrevem testes de carga automatizados
para definir cenrios de estresse e auxiliam os programadores no particionamento do sistema, mantendo a nfase
no design de alto nvel.
15
16
Feedback
eu
sobre e
s
Este artigo apresentou um dos mtodos geis mais conhecidos, a Programao Extrema, descrevendo seus valores,
princpios e prticas. A escolha da melhor forma de adotar
XP deve levar em conta todos os fatores discutidos neste
artigo e a abordagem de implantao pode variar de equipe
para equipe. Enquanto algumas se sentem confortveis com
a abordagem mais rgida proposta na primeira edio, aplicando todas as 12 prticas de uma vez, outras podem preferir
comear de forma mais gradual, com algumas das prticas
primrias antes de partir para as prticas corolrias.
XP no deve ser utilizado em organizaes cujos valores reais no se alinham com os valores de XP. Organizaes que preferem dar valor a segredos, isolamento,
complexidade, timidez e falta de respeito (manifestada
como prepotncia ou excesso de autoritarismo) no
tero sucesso com a adoo de XP. Vale ressaltar ainda
que uma adoo de sucesso de XP precisa abraar os
valores e princpios por trs das prticas. A adoo de
algumas prticas pode trazer um pequeno benefcio no
curto prazo, mas as melhorias mais amplas propostas
por XP s sero atingidas se houver sinergia entre os
valores da equipe e de XP. Um grande choque cultural
pode prejudicar a adoo de XP [51].
O discurso de XP mudou desde seu lanamento em
1999: enquanto a primeira edio enfatizava mais
como XP funciona, a segunda edio enfatiza muito
mais o por qu. Enquanto a primeira edio era mais
voltada para os programadores, a segunda edio tem
um discurso mais inclusivo e flexvel, trazendo benefcios para todos os envolvidos no desenvolvimento
de software.
D
s
Kent Beck discute sobre os diferentes estilos de adoo fazendo uma analogia com as formas de se entrar
numa piscina [50]: alguns preferem entrar de forma
cuidadosa e gradual, um p de cada vez, evitando
grandes estragos, porm gastando mais tempo; outros
preferem entrar de uma vez, no estilo bola de canho,
espalhando bastante gua e passando por uma fase inicial catica, que pode trazer maiores benefcios no curto
prazo; por fim, equipes que precisam de um resultado
rpido sem o risco da fase catica, podem adotar o estilo
mergulho de cabea com a ajuda de um treinador
externo, que vai tornar a entrada na gua mais suave,
pela experincia adquirida em outras situaes.
Kent Beck ainda sugere alguns pontos de ateno que
devem ser discutidos pela equipe para escolher a forma
de adoo mais apropriada:
Em quanto tempo o time precisa dos resultados?
O quo dramtico devem ser os resultados?
Quanto a organizao est disposta a gastar em
ajuda externa?
O quo forte so as relaes entre os membros da
equipe e entre a equipe e o resto da organizao?
edio
ta
M etodologias geis
Referncias
[1] Mira Kajko-Mattsson, Ulf Westblom, Stefan Forssander, Gunnar Andersson, Mats
[26] Kent Beck and Ward Cunningham. Using pattern languages for object-oriented programs.
Medin, Sari Ebarasi, Tord Fahlgren, Sven-Erik Johansson, Stefan Tornquist, and Margareta
Technical Report CR8743, Tektronix, Inc., September 1987. Presented at the OOPSLA-87 Workshop
[27] Bo Leuf and Ward Cunningham. The Wiki Way: Quick Collaboration on the Web.
[2] Barry W. Boehm. Industrial software metrics top 10 list. IEEE Software, 4(5):8485, Set 1987.
[3] Barry W. Boehm and Philip N. Papaccio. Understanding and controlling software
[28] William F. Opdyke. Refactoring Object-Oriented Frameworks. PhD thesis, University of Illinois,
1992.
[4] Barry W. Boehm and Victor R. Basili. Software defect reduction top 10 list. Computer,
[29] Martin Fowler, Kent Beck, John Brant, William Opdyke, and Don Roberts. Refactoring:
[5] Mary Poppendieck and Tom Poppendieck. Lean Software Development: An Agile Toolkit for
[30] Kent Beck. Simple smalltalk testing: With patterns. Technical report, First Class Software, Inc.,
[6] Jim Johnson. ROI, its your job. Keynote Speech at Third International Conference
[31] Kent Beck. SUnit project. Disponvel em: sunit.sourceforge.net/. Acessado em: 30/10/2006.
[32] Kent Beck and Erich Gamma. Test infected: Programmers love writing tests. Java
[7] Mary Poppendieck and Tom Poppendieck. Implementing Lean Software Development: From
[33] Kent Beck and Erich Gamma. JUnit project. Disponvel em: www.junit.org/. Acessado em:
[8] Jim Johnson, et al. CHAOS in the new millenium. Technical report, Standish Group, 2000.
30/10/2006.
[35] Kent Beck. Extreme Programming Explained: Embrace Change.Addison-Wesley Professional, 1999.
[11] Frederick T. Sheldon, Krishna M. Kavi, Robert C. Tausworth, James T. Yu, Ralph
[36] Kent Beck. Test Driven Development: By Example. Addison-Wesley Professional, 2003.
Brettschneider, and William W. Everett. Reliability measurement: From theory to practice. IEEE
[37] Scott Ambler. Crossing the chasm. Dr. Dobbs Journal, disponvel em: www.ddj.com/dept/
[12] Craig Larman. Agile and Iterative Development: A Managers Guide. Addison-Wesley
[38] Vincius Manhes Teles. Extreme Programming: Aprenda como encantar seus usurios
Professional, 2003.
[13] Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham,
[39] Kent Beck and Martin Fowler. Planning Extreme Programming. Addison-Wesley
Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian
Professional, 2000.
Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, and Dave Thomas.
Manifesto for agile software development. Disponvel em: www.agilemanifesto.org, 2001. Acessado
em: 30/10/2006.
[14] Ken Schwaber and Mike Beedle. Agile Software Development with Scrum. Prentice Hall, 2001.
[15] Christ Vriens. Certifying for CMM level 2 and ISO9001 with XP@scrum. In Agile
Development Conference, pages 120124. IEEE Computer Society, 2003.
[16] Taiichi Ohno. Toyota Production System: Beyond Large-Scale Production. Productivity Press, 1998.
[17] Alistair Cockburn. Crystal Clear: A Human-Powered Methodology for Small Teams. AddisonWesley Professional, 2004.
[18] Stephen R. Palmer and John M. Felsing. A Practical Guide to Feature Driven Development.
Prentice Hall, 2002.
[19] Peter Coad, Jeff de Luca, and Eric Lefebvre. Java Modeling Color with UML: Enterprise
Components and Process with Cdrom. Prentice Hall, 1999.
[20] Jim Highsmith. Messy, exciting, and anxiety-ridden: Adaptive software development. In
American Programmer, volume 10, 1997.
[40] Alistair Cockburn. Agile Software Development: The Cooperative Game. Addison
Wesley Professional, 2nd edition, 2006.
[41] Ken Schwaber. Agile Project Management with Scrum. Microsoft Press, 2004.
[42] Tom Demarco and Timothy Lister. Peopleware: Productive Projects and Teams. Dorset House
Publishing Company, Incorporated, 2nd edition, 1999.
[43] Mike Cohn. Agile Estimating and Planning. Prentice Hall PTR, 2005.
[44] Ward Cunningham. System of names. Disponvel em: c2.com/cgi/wiki?SystemOfNames.
Acessado em: 30/05/2007.
[45] Eric Evans. Domain-Driven Design: Tackling Complexity in the Heart of Software.
Addison-Wesley Professional, 2003.
[46] Michele Marchesi. The new XP. Disponvel em: www.agilexp.org/downloads/TheNewXP.pdf.
Acessado em: 30/05/2007.
[47] Don Wells. Fix XP when it breaks. Disponvel em: www.extremeprogramming.org/rules/fixit.html.
Acessado em 31/05/2007.
[48] Danilo Sato, Dairton Bassi, and Alfredo Goldman. Extending extreme programming with
[21] M. Mitchell Waldrop. Complexity: The Emerging Science at the Edge of Order and Chaos. Simon
practices from other methodologies. In 1st Workshop on Rapid Application Development (WDRA07)
[22] James Martin. Rapid Application Development. Macmillan Publishing Co., 1991.
[49] Norman L. Kerth. Project Retrospectives: A Handbook for Team Reviews. Dorset House
[23] Jennifer Stapleton. DSDM: A framework for business centered development. Addison- Wesley
Professional, 1997.
[50] Kent Beck and Cynthia Andres. Getting started with XP: Toe dipping, racing dives, and cannonballs.
[24] Kent Beck and Cynthia Andres. Extreme Programming Explained: Embrace Change. Addison-
[51] Laurent Bossavit. The unbearable lightness of programming: a tale of two cultures.Whitepaper,
[25] Kent Beck and Ward Cunningham. A laboratory for teaching object-oriented thinking. In
30/10/2006.
17
O problema
Ana Cristina Melo
informatica@anacristinamelo.com.br
18
Requisitos
O levantamento de requisitos
O analista XYZ, aps cada reunio elaborou uma ata que foi
devidamente encaminhada para o cliente, a fim de validar
com o mesmo o entendimento dos requisitos. Na Tabela 1 vemos o exemplo de uma dessas atas, representando a primeira
reunio ocorrida.
Aps todas as reunies, o analista XYZ preparou um nico
documento consolidando todos os requisitos. Esses requisitos
esto listados abaixo:
ATA DE REUNIO
Data da reunio: 10/10/2008
Participantes: XYZ analista de sistemas
MNO diretor da Papelaria ABC
Assunto: Levantamento de requisitos
O sr. MNO apresentou ao sr. XYZ a papelaria ABC, que tem cerca de 800 m2, c om sees arrumadas
por tipo de item: cadernos e fichrios, pastas, papis para impresso etc.
A papelaria conta com vendedores que atendem ao pblico, recebendo comisso pelas vendas
efetuadas. A comisso tem variao de acordo com a poca do ano. No perodo de janeiro a maro,
a comisso de 7% sobre as vendas. Nos outros meses de 5%. Alm disso, todo vendedor possui
um salrio fixo. No h cotas a serem alcanadas.
Aps escolher os produtos, com a ajuda ou no de um vendedor, o cliente deve se dirigir a um
deles para tirar o pedido de venda. Esse pedido conter todos os produtos e liberar para o caixa
apenas o pagamento. S existe um caixa na papelaria, responsvel apenas pelo recebimento do
pagamento.
Se um cliente tiver dvidas sobre a existncia de um produto ou sobre o preo do mesmo, poder
consultar um dos vendedores, que far a pesquisa no sistema.
Todos os produtos recebem um cdigo que no est associado ao cdigo de barras. So coladas
etiquetas com esses cdigos em todos os produtos. Da mesma forma, em cada prateleira h uma
etiqueta com o nome dos produtos, seu cdigo e o preo atualizado. Assim, nos produtos no h
etiqueta de preo.
O sr. MNO solicitou que alm do sistema que registrar as vendas, seja disponibilizado um mdulo
para controlar o estoque.
(...)
Pendncias para a prxima reunio:
- O sr. MNO far uma lista de todos os relatrios que deseja, contendo todas as informaes
necessrias e detalhes de emisso, como freqncia.
Tabela 1. Exemplo da ata de reunio com o levantamento de requisitos
O sistema conter dois mdulos principais: gestor de estoque/vendas e pdv (ponto de vendas).
No ser foco dessa verso a gesto de fornecedores, pagamento dos funcionrios e controle de contas a pagar.
A papelaria conta com vendedores que atendem ao pblico,
recebendo comisso pelas vendas efetuadas.
Para a gesto de estoque/vendas, so desejveis os seguintes
controles:
- cadastro de produtos
- cadastro de fabricantes
- cadastro de vendedores
- atualizao de estoque
- registro de troca e devoluo de produto
- consulta de preos
- registro de vendas
- emisso de etiquetas de venda
- relatrio de reposio
- consulta de faturamento dirio, semanal ou mensal
- atualizar preos e lanar promoes de produtos
Para o PDV, so desejveis os seguintes controles:
- registro de pagamento das vendas
- realizar retirada de capital
- suprimento de capital (entrada de capital no caixa)
- abertura do caixa
- fechamento do caixa
O cadastro de produtos ser feito pelo departamento de estoque, e para cada produto preciso registrar: cdigo (gerado
automaticamente pelo sistema), nome do produto (ex: caderno
universitrio), detalhes sobre o produto (ex: 256 folhas), unidade de venda (ex: unidade, kit, pacote, metro etc), fabricante, cor,
percentual de lucro, tipo de produto (ex: cadernos e fichrios,
papis para impresso etc) e a foto do produto.
Nenhum produto pode ser excludo do estoque, apenas desativado, por meio de uma data, que determinar que a partir
daquele momento no mais poder ser vendido. Nenhum
produto com itens ainda em estoque pode ser desativado.
O estoque de cada produto ser automaticamente gerado no
momento do cadastramento do produto. O estoque ser inicializado com zero, porm deve ser informada a quantidade mnima
de estoque, que identificar a necessidade de reposio.
As entradas no estoque so feitas a partir das notas fiscais de
compras e so responsabilidade do departamento de estoque.
No haver controle dos fornecedores, mas ser preciso manter um cadastro com o nome dos fornecedores, para a futura
verso do sistema. Para cada nota fiscal, armazenar nmero,
data de emisso e fornecedor. A cada entrada de produto no
estoque, deve ser registrado: quantidade e valor de custo. O
sistema dever apresentar o valor atual de venda e calcular o
novo preo de venda do produto com base no valor de compra. Caber ao usurio confirmar o novo preo ou manter o
existente. Deve-se manter um histrico dos preos.
Atualizaes de preos e cadastramento de promoes devem ser feitas pela gerncia. As promoes de produtos devem
ser cadastradas por perodo (ex: preo promocional da cola 90g
no perodo de 01/01/2009 a 15/01/2009).
19
20
De posse dos requisitos, o analista pde dimensionar o tamanho do sistema, e chegar ao seu diagrama de casos de uso.
Todos os cadastros so representados como casos de uso
de manuteno (incluso, alterao, excluso e/ou consulta),
identificados pelo verbo manter. (ex: Manter Produto indica
cadastro, alterao, desativao e pesquisa de produto).
Num primeiro momento, foram identificados todos os atores
responsveis por atuar nesse sistema. Para cada ator, verificamse suas responsabilidades. De cada uma dessas responsabilidades, nasce um ou mais casos de uso.
Ao determinar um caso de uso, devemos ter em mente seu
carter bem definido de funcionalidade. No podemos estabelecer um caso de uso tipo mil e uma utilidades. Um caso
de uso deve se encerrar num objetivo nico.
Diante do exposto, o analista chegou seguinte lista de casos
de uso, descrita na Tabela 2.
LISTA DE CASOS DE USO
Ator: Departamento de estoque
- Manter Produto
- Manter Tipo de Produto
- Manter Unidade de Venda
- Registrar Entrada em Estoque
- Gerar relatrio de reposio
Ator: Vendedor
- Manter Fabricante
- Manter Fornecedor
- Manter Cor
- Emitir etiquetas de vendas
- Consultar Produtos e Preos
- Registrar Vendas
Ator: Gerncia
- Manter Vendedor
- Registrar Troca e Devoluo
- Consultar Faturamento
- Consultar Produtos e Preos
- Atualizar preos e lanar promoes de produtos - Realizar retirada de capital do caixa
Ator: Supervisor
- Cancelar item de venda
- Abrir o caixa
Ator: Caixa
Requisitos
4.
Para a opo de Incluso por variao de produto:
4.1.
O sistema prepara uma lista de todas as unidades de venda
cadastradas.
4.2.
O sistema prepara uma lista de todas as cores cadastradas.
4.3.
O sistema automaticamente exibe as informaes do produto
principal:
4.3.1.
nome do produto
4.3.2.
fabricante
4.3.3.
tipo do produto
4.4.
O sistema libera a incluso de um novo produto, com base na
variao do produto j existente.
4.5.
O usurio informa:
4.5.1.
detalhes do produto
4.5.2.
unidade de venda, selecionada da lista previamente
preparada
4.5.3.
cor, selecionada da lista previamente preparada
4.5.4.
percentual de lucro
4.5.5.
quantidade mnima em estoque
4.5.6.
foto do produto
5.
Para a opo de Desativao:
5.1.
O usurio informa a data da desativao.
6.
O usurio confirma a operao.
6.1.
O sistema atualiza o cadastro de produtos.
6.2.
Para a opo de Incluso (individual ou como variao de
produto):
6.2.1.
O sistema gera automaticamente um cdigo de produto.
6.2.2.
O estoque inicial do sistema criado, com as seguintes
informaes:
21
3.4.
O usurio confirma o preo vigente ou o novo preo sugerido.
3.5.
O sistema exibe todos os produtos que esto sendo
cadastrados, contendo para cada um: cdigo, nome do produto,
3.
Se o chamador do caso de uso assim necessitar, o usurio pode
selecionar um produto.
Ps-condio: retornar o produto selecionado, se for o caso.
Cenrios alternativos:
Pesquisa de produto
1.a. A pesquisa de produto deve desconsiderar caixa alta e baixa,
acentuao e realizar a localizao dos trechos em qualquer
ordem que os mesmos apaream no cadastro.
1.b. A pesquisa da descrio deve ser feita ao mesmo tempo nos
campos: nome do produto, detalhes e cor, retornando os
produtos que contenham os critrios de pesquisa em qualquer um
desses campos.
22
Requisitos
Concluso
No prximo artigo, veremos em detalhes casos de uso de outros
formatos, como o de relatrio, registro de pagamento (com as
diversas formas de pagamento), consulta em tela e o de processamento e controle (como abertura e fechamento de caixa).
D seu feedback sobre esta edio!
A Engenharia de Software Magazine tem que ser feita ao seu gosto.
Para isso, precisamos saber o que voc, leitor, acha da revista!
D seu voto sobre este artigo, atravs do link:
Feedback
eu
www.devmedia.com.br/esmag/feedback
23
sobre e
s
D
s
J o prottipo (Figura 3) apresenta a tela que ser utilizada para as opes de Incluso e Alterao. Repare
que o prprio caso de uso, no item 3, unifica esse cadastro,
simplificando a edio. Contudo, tudo o que particular a
cada opo citado explicitamente, como o caso de exibio
do cdigo do produto que s acontece quando da opo de
Alterao. Os itens 3.1 a 3.5 determinam a ao do sistema antes que a rotina comece a ser operada pelo usurio.
Quando o usurio acessa uma tela dessas de cadastro, as
combos de cores, fabricantes, unidades de venda e tipos
de produto j devem vir preenchidas com o que j existe
cadastrado no sistema.
O prottipo da Figura 4 apresenta a tela que ser utilizada
para a opo de Incluso por variao de produto e Alterao, se essa pertencer a um produto que seja variao.
Considerando o mesmo princpio que o Manter Produto, s
que de uma forma mais simples, so escritos os casos de uso
Manter Fabricante, Manter Tipo de Produto, Manter Fornecedor,
Manter Unidade de Venda, Manter Cor e Manter Vendedor, que
tm por objetivo apenas o cadastramento do nome, sendo
o cdigo apenas uma chave interna que no interessar ao
usurio final, que ir trabalhar apenas com o nome.
Assim, veremos na Listagem 2 o caso de uso Registrar Entrada em Estoque. O objetivo desse caso de uso dar entrada
nas compras efetuadas pela Papelaria. A partir de cada compra inserida, o estoque atualizado e os preos de venda so
disponibilizados. Esse caso de uso faz uma chamada a outro
caso de uso, responsvel apenas pela consulta de produtos e
preos. Esse caso de uso usado em outros lugares, e por este
motivo para que haja reutilizao de suas funcionalidades, o
relacionamento com ele feito pelo esteretipo de incluso.
Os cenrios do caso de uso Consultar Produtos e Preos podem ser vistos na Listagem 3. Repare que esse caso de uso
acessvel por vrios atores, e todos eles so relacionados
na seo correspondente. Para que no haja sobrecarga de
nomes durante a escrita do caso de uso, sempre uma boa
prtica substituir o nome do ator (durante a descrio do
cenrio) pelo termo genrico usurio.
A Figura 5 apresentar o prottipo do caso de uso Registrar
Entrada em Estoque, enquanto que a Figura 6 apresentar o
prottipo do caso de uso Consultar Produtos e Preos.
edio
ta
Documento de Requisitos
Essencial ao Desenvolvimento de Software
24
m engenheiro de software um
profissional que deve ter a habilidade de antecipar e gerenciar
mudanas de requisitos de um produto
de software. Alm disso, ele precisa saber
se expressar e comunicar-se bem a fim
de capturar e registrar adequadamente
o documento de requisitos. Os principais problemas no desenvolvimento de
um sistema de software decorrem do
entendimento errado entre engenheiro
de software (produtor), responsvel em
apresentar o documento de requisitos, e
usurio (consumidor). Um documento
de requisitos de software precisa ser
claro, consistente e completo, porque
esse documento servir de referncia
aos desenvolvedores, gerente de projeto,
Requisitos de Software
Desenvolver um sistema de software requer um processo, o
qual informa um conjunto de atividades a serem realizadas,
quem as executam, quais artefatos de entrada so necessrios
e quais artefatos de sada so produzidos. Nesse sentido, detectar erros ou quaisquer outros problemas como, por exemplo,
inconsistncia e falta de clareza de suma importncia de
modo a tornar o processo mais efetivo sob o ponto de vista
de custo. Adwicionalmente, envolver o usurio no processo
determinante para o sucesso do produto e do processo. Dentro
deste contexto, entender adequadamente o requisito essencial
e essa tarefa do engenheiro de software. Um requisito compreende uma caracterstica ou funcionalidade que o sistema
deve possuir ou uma restrio que deve satisfazer para atender
uma necessidade do usurio. Dessa forma, o engenheiro de
software, desempenhando o papel de engenheiro de requisitos,
deve executar duas atividades essenciais para a elaborao do
documento de requisitos:
Elicitao de requisitos atividade na qual os requisitos do
sistema a ser desenvolvido so levantados;
Anlise de requisitos atividade na qual os requisitos so
analisados e confirmados pelos principais interessados do
projeto (isto , os stakeholders) que incluem cliente, usurio
final e gerente de projetos, dentre outros.
Considera-se ainda que a elicitao de requisitos objetiva
definir caractersticas do sistema sob a perspectiva do cliente,
enquanto que a anlise de requisitos visa obter a especificao
de requisitos, do ponto de vista tcnico, conforme entendimento dos desenvolvedores.
Durante a realizao destas atividades, o engenheiro de
software est preocupado em levantar, entender, analisar
e, por fim, documentar os requisitos. Para tanto, ele deve
concentrar-se nas caractersticas do sistema e atributos de
qualidade, e no em como obt-los. Aqui, preciso identificar
quais requisitos fazem parte ou no do escopo do sistema a
ser desenvolvido, ou em outras palavras, entender a interface
do sistema considerado e o ambiente externo.
importante ressaltar a necessidade de definir o limite, ou
tambm denominado escopo do sistema, a fim de tratar os
requisitos funcionais e no funcionais do sistema. Alm disso,
quando da elaborao do documento de requisitos, o engenheiro de software deve levar em considerao os diferentes
pontos de vistas dos stakeholders de modo que o documento
resultante possa comunicar adequadamente o conjunto de
requisitos do sistema a ser construdo.
Documento de Requisitos
O documento de requisitos delimita o escopo do conjunto
de funcionalidades que um sistema deve prover, bem como
descreve os atributos de qualidade que devem ser suportados.
1. Introduo
2. Requisitos Funcionais
3. Requisitos No-Funcionais
4. Escopo No-Contemplado
5. Documentao Complementar
6. Apndice
Contedo
Contm uma descrio dos objetivos do documento, o pblico
ao qual ele se destina e, em linhas gerais, o propsito e escopo
do projeto a ser desenvolvido. Pode adicionalmente conter
termos e abreviaes usadas, tipos de prioridades atribudas aos
requisitos, alm de informar como o documento deve evoluir.
Esta seo descreve, de maneira sumarizada, as principais
funcionalidades que o sistema de software ir realizar.Por exemplo,
num sistema de biblioteca,esta seo deveria conter uma descrio
das funcionalidades de autenticao de usurio e controle de
acesso. Observe que o sumrio das funcionalidades de um sistema
se faz necessrio para permitir o entendimento das funcionalidades
do sistema pelos diversos stakeholders. O engenheiro de software
deve organizar o conjunto de funcionalidades do sistema de
modo a torn-las mais compreensveis aos clientes e demais
stakeholders. Vale ainda ressaltar que o documento de requisitos
pode ser complementado por outro documento como, por
exemplo, especificaes de casos de uso.
Apresenta-se uma descrio geral de outros requisitos do
produto que limitam opes de desenvolvimento do sistema.
Isto inclui a descrio de requisitos de segurana, confiabilidade,
timeout de sesso de usurio, usabilidade, dentre outros.
Esta seo considera os requisitos do produto, do processo, da
interface grfica e da plataforma tecnolgica empregada.
Contm descrio das funcionalidades no contempladas no
escopo do sistema a ser desenvolvido. Outra denominao
dada a esta seo escopo negativo. Isto visa garantir s
partes interessadas no sistema (isto , cliente e equipe de
desenvolvimento) quais funcionalidades fazem parte ou no
do conjunto a ser implementado.
Exemplos desses documentos compreendem atas de reunies
nas quais ocorrero levantamento e validao de requisitos,
bem como o plano de projeto.
Trata-se de uma seo que pode conter, por exemplo,
levantamento de perfil de usurios do sistema a ser
desenvolvido e descrio do problema a ser automatizado pelo
sistema de software. importante observar que o apndice
no parte do documento de requisitos e serve apenas como
informao de apoio para os leitores do documento.
25
1. Introduo
Este documento descreve um sistema que prover
notcias e contedo online, denominado de Sistema
Exemplo, a ser desenvolvido para a Empresa XYZ. Seu
propsito prover notcias sobre os mais variados contedos, permitindo acesso integral apenas aos usurios
leitores cadastrados no sistema.
Viso geral do documento
Esta introduo fornece as informaes necessrias
para utilizar este documento, explicitando seus objetivos e as convenes que foram adotadas no texto. As
demais sees apresentam a especificao do sistema
Exemplo e esto organizadas como descrito abaixo.
Requisitos funcionais: compreende o conjunto de
requisitos funcionais do sistema a ser desenvolvido,
descrevendo suas prioridades.
Requisitos no funcionais: contm os requisitos no
funcionais do sistema a ser desenvolvido, divididos em requisitos de produto, processo e plataforma tecnolgica.
Escopo no contemplado: descreve as funcionalidades que so relacionadas com o sistema, mas que no
fazem parte do escopo do mesmo e, portanto, no sero
implementadas.
Documentao complementar: compreende um
conjunto de documentos complementares que contm
informaes relacionadas ao projeto.
Termos e convenes
Esta parte do documento explica os conceitos de termos importantes que sero citados no decorrer deste
documento, conforme descrito no quadro abaixo.
Termo
Requisitos funcionais
Requisitos no funcionais
Requisitos no tcnicos
Descrio
Requisitos de software que compe o sistema, descrevendo
aes que o sistema dever executar quando solicitado.
Requisitos de software que compem o sistema, descrevendo
atributos de qualidade que o sistema deve possuir, ou restries
que ele deve satisfazer.
Requisitos no relacionados ao software como, por exemplo,
material de divulgao do projeto (eventos, relatrios tcnicos e
outras publicaes). Esses requisitos esto fora do escopo deste
documento, podendo ser includos no Plano do Projeto.
26
2. Requisitos Funcionais
2.1 Controle de Acesso
Esta seo apresenta a descrio das funcionalidades de
controle de acesso de usurios alm das funcionalidades
para superviso dos acessos ocorridos.
RF01 - Solicitar cadastro no servio de recomendao
Este requisito permite aos usurios solicitar Empresa
XYZ o seu cadastramento no Sistema Exemplo. Essas
solicitaes ficam pendentes de aceitao at que sejam
validadas e aprovadas por parte de um funcionrio da
Empresa XYZ.
Prioridade:
x Essencial
Importante
Desejvel
Prioridade:
x Essencial
Importante
Desejvel
x Essencial
Importante
Desejvel
Importante
Desejvel
x Essencial
Essencial
x Importante
Desejvel
Essencial
x Importante
Desejvel
Essencial
Importante
Desejvel
Note que o Quadro 1 apresenta uma viso geral do documento e identifica um subconjunto de termos e convenes que
pode caracterizar o projeto. Todo e qualquer termo, conveno
adotada ou abreviaes deveriam ser apresentadas nesta seo
a fim de comunicar s partes envolvidas e interessadas (i.e. os
stakeholders) o seu significado. Isto visa prover os stakeholders
com as denominaes corretas empregadas no projeto.
A seo seguintwe apresenta a segunda parte do documento
de requisitos que contm descrio dos Requisitos Funcionais
(RFs), conforme ilustrado no Quadro 2.
O Quadro 2 apresenta a descrio de um conjunto de
27
3. Requisitos No Funcionais
3.1 Requisitos do Produto
Esta seo apresenta a descrio do conjunto de requisitos do Sistema Exemplo para prover contedo para
usurios cadastrados.
RNF01 Segurana
O Sistema Exemplo da empresa XYZ deve dispor de
mecanismos de segurana para a autenticao de usurios e controle de acesso a contedos e funcionalidades
do sistema, garantindo o acesso apenas para usurios
cadastrados. O site dever utilizar protocolo HTTPS, com
uso de certificado digital, garantindo a autenticao do
servidor, bem como proteo e confidencialidade das
informaes em trnsito.
Prioridade:
x Essencial
Importante
Prioridade:
Importante
Desejvel
RNF03 Usabilidade
O sistema Exemplo deve prover o usurio com interface
simples e intuitiva, de fcil navegao para facilitar o uso
do mesmo por parte dos usurios.
Prioridade:
x Essencial
Importante
Desejvel
x Essencial
Importante
Desejvel
Essencial
x Importante
Desejvel
28
Desejvel
Prioridade:
x Essencial
Importante
Desejvel
x Essencial
x Essencial
Importante
Desejvel
x Essencial
Importante
Desejvel
Prioridade:
x Essencial
Importante
Desejvel
RNF10 Componentizao
Cada componente do sistema Exemplo deve ser um
JAR, os quais devero ser includos em um arquivo
WAR (centralizador). Os arquivos JAR ficaro em
projetos distintos.
Prioridade:
x Essencial
Importante
Desejvel
4. Escopo No Contemplado
Esta seo apresenta um conjunto de funcionalidades
e requisitos que no esto contemplados no escopo do
Sistema Exemplo.
4.1 Controle de acesso:
Realizao de bloqueio de acesso aos usuri os que possuam mensalidades em atraso junto empresa XYZ.
Cadastro (incluso, alterao, excluso) de tipos de usurios.
5. Documentao Complementar
Esta seo apresenta documentao de apoio, referenciando um conjunto de outros documentos que
complementam e suportam as informaes contidas no
documento de requisitos.
Ata de Reunio Levantamento de Requisitos do Mdulo
A do Sistema Exemplo, 12/01/2009.
Feedback
eu
edio
ta
www.devmedia.com.br/esmag/feedback
29
sobre e
s
D
s
Comentrios Finais
josiane_brietzke@hotmail.com
Isabel Albertuni
ialbertuni@gmail.com
30
Neste artigo apresenta-se o processo de Gerncia de Reutilizao de Software, sua contribuio para as organizaes intensivas em
software, alm de benefcios e dificuldades
na implementao de suas prticas.
Processo
31
ISO/IEC 15504-5:
2006
[Salviano 2006a]
MR-MPS
[MPS.BR 2007c]
32
Processo
33
Incio
Diagnstico
Estabelecimento
Ao
Aprendizado
34
Processo
Referncias
Concluso
Filho, Reinaldo C. Silva; Katsurayama, Anne Elise; Santos, Gleison; Murta, Leonardo; Rocha,
Ana Regina (2008) A Experincia na Implantao do Processo de Gerncia de Reutilizao no
Laboratrio de Engenharia de Software da COPPE/UFRJ,In: IV Workshop de Implementadores
(W2 MPS.BR) e II Workshop de Empresas (W6 MPS.BR), Belo Horizonte.
IEEE (2004) Std 1517 - IEEE Standard for Information Technology - Software Life Cycle
Processes - Reuse Processes, Institute of Electrical and Electronics Engineers.
Krueger, C.W. (1992) Software Reuse, In: ACM Computing Surveys, Vol. 24, N 02.
Machado, Cristina ngela Filipak (2006) Definindo Processos do Ciclo de Vida de Software
usando a Norma NBR ISO/IEC 12207 e suas Ementas 1 e 2, Curso de Ps-Graduao Latu
Sensu a Distncia: Melhoria de Processo de Software, UFLA, Lavras.
MPS.BR (2007a) SOFTEX MPS.BR Implementaes em Grupos de Empresas G1, http://
www.softex.br/mpsbr/_implementacoes/MPS.BR_SOFTSUL.pdf.
MPS.BR (2007b) SOFTEX MPS.BR Avaliaes MA-MPS Qualit Nvel F do MPS.BR, http://
www.softex.br/mpsbr/_avaliacoes/avaliacao.asp?id=1434.
MPS.BR (2007c) SOFTEX - MPS.BR Guia Geral, http://www.softex.br/mpsbr/_guias/MPS.
BR_Guia_Geral_V1.2.pdf.
MPS.BR (2007d) SOFTEX - MPS.BR Guia de Implementao Parte 3: Nvel E, http://www.
softex.br/mpsBr/_guias/MPS.BR_Guia_de_Implementacao_Parte_3_v1.1.pdf.
COMPOSE
www.compose.ufpb.br
Feedback
eu
sobre e
s
edio
ta
D
s
www.devmedia.com.br/esmag/feedback
Radice, Ronald A.; Phillips, Richard W (1988) Software Engineering, An Industrial Approach,
Englewood Cliffs, New Jersey: Prentice Hall.
MPS.BR
www.softex.br/mpsbr/_home/default.asp
Software, http://reuse.cos.ufrj.br.
Porto, Josiane Brietzke (2008) Gerncia de Reutilizao Alinhada ao MPS.BR Nvel E,Monografia de
Ps-graduao em Melhoria de Processo de Software, Universidade Federal de Lavras (UFLA), Lavras.
Links
35
Ellen Souza
eprs@dsc.upe.br
Professora Assistente do Curso de Bacharelado em Sistemas de Informao da Unidade Acadmica de Serra Talhada (UAST) da
Universidade Federal Rural de Pernambuco
(UFRPE). Mestre em Engenharia da Computao pela Universidade de Pernambuco (UPE).
Residente do Curso Seqencial de Formao
Complementar em Teste de Software pelo
Centro de Informtica (CIn) da Universidade
Federal de Pernambuco (UFPE), em parceria
com a Motorola. Graduada em Cincia da
Computao pela Universidade Catlica de
Pernambuco (UNICAP).
Cristine Gusmo
cristine@dsc.upe.br
36
Engenharia de Software Magazine - Melhorando a Qualidade do Software e Otimizando Recursos com Teste baseado em Riscos
37
38
Engenharia de Software Magazine - Melhorando a Qualidade do Software e Otimizando Recursos com Teste baseado em Riscos
Capacidade
Confiabilidade
Usabilidade
Instalabilidade
A principal dificuldade dessa abordagem est no conhecimento prvio do negcio a fim de realizar a anlise dos riscos da
maneira mais fiel possvel. Existe a possibilidade da anlise ter
sido realizada de forma errada e, conseqentemente, os verdadeiros riscos no terem sido atacados da forma correta.
2 - Listas genricas de riscos: so aquelas que possuem riscos universais a qualquer sistema. Um exemplo mostrado na Tabela 2.
Complexo
Novo
Modificado
Crtico
Preciso
Popular
Terceirizado
Qualquer coisa usada no seu produto, mas que foi desenvolvida fora do projeto.
Distribudo
Falhou
recentemente
Tabela 2. Lista genrica de riscos [Bach 1999].
Funo
C(v)
C(c)
Mdia
Fechar Conta
Nova Funo
(5)
2
Qualidade
(5)
2
Tamanho
(1)
2
Complexidade
(3)
3
Mdia
Ponderada
7,75
Probabilidade
Exposio ao Risco
0,74
1,48
39
40
MTRICA
OBSERVAO
NOM
WMC
CBO
Aceitvel at 5.
RFC
Aceitvel at 50.
DIT
Aceitvel at 5.
NOC
NO. MTODOS
CBO
RFC
RFC/NOM
WMC
DIT
NOC
54
536
9.9
175
168
24
71
33
240
7.2
105
54
361
6.7
117
62
378
6.1
163
10
63
235
3.7
156
11
81
10
285
3.5
161
12
42
127
69
13
20
17
324
16.2
139
14
46
186
238
Engenharia de Software Magazine - Melhorando a Qualidade do Software e Otimizando Recursos com Teste baseado em Riscos
Essa tcnica utiliza as mtricas de anlise de risco desenvolvidas por Amland e apresentadas anteriormente.
A fase de seleo de casos de teste envolve os seguintes
passos:
1 - Estimar o custo de cada caso de teste. Ou seja, o custo que
uma falha possa causar. O custo calculado da mesma forma
proposta por [Amland 1999];
2 - Derivar a severidade para cada caso de teste. Esse valor
computado a partir do nmero de defeitos e da severidade
destes defeitos;
3 - Calcular o grau de exposio de risco para cada caso de
teste. A exposio ao risco calculada a partir do custo e da
severidade, e;
4 - Selecionar os casos de teste que tm os maiores valores
de exposio ao risco.
41
Estabilidade
Atributo:
Completude
Indicador
Figura 4. Pgina do RBTProcess [Souza e Gusmo 2008].
42
Desenvolvedor
Testador
Analista de requisitos
Engenharia de Software Magazine - Melhorando a Qualidade do Software e Otimizando Recursos com Teste baseado em Riscos
Anlise Comparativa
Com exceo da tcnica para cdigo-fonte orientado a
objetos, todas as outras utilizam a abordagem funcional ou
caixa-preta para construo dos casos de testes no nvel de
sistema. Apenas a tcnica baseada em heurstica e o RBTProcess propem diferentes formas de identificao de riscos.
A tcnica baseada em mtricas objetiva reduo do custo
da fase de teste do projeto e a reduo de futuros custo de
manuteno do software em potencial atravs da otimizao
do processo de teste. As mtricas propostas levam em considerao que funcionalidades complexas, novas, construdas
com pouca qualidade e grandes (tamanho) possuem mais
probabilidade de apresentar falhas. A tcnica no fornece
nenhuma orientao sobre a criao dos casos de teste.
A tcnica baseada em riscos para teste de regresso objetiva
reduzir a quantidade de casos de teste a serem executados,
alm de possibilitar que as reas mais crticas sejam testadas
prioritariamente. Nesta tcnica, assume-se que os casos de
teste j esto prontos.
A tcnica baseada em uso utiliza a informao de percentual de uso da funcionalidade para priorizao. Isto a torna
fcil de ser utilizada. No entanto, no garante que as funcionalidades que esto sendo atacadas sejam as mais propensas
a apresentarem falhas e precisem ser mais bem testadas.
A finalidade do RBTProcess fornecer conhecimento e recursos necessrios para que os engenheiros de teste possam
utilizar a abordagem RBT em todas as atividades do teste
de software, atravs da definio de disciplinas e papis, e
fornecimento de artefatos, guias, templates e mtricas.
A Tabela 9 apresenta uma anlise comparativa das principais tcnicas e processo apresentados neste artigo. Para
a comparao, foram elencadas atividades mnimas de
gerncia de riscos e teste de software.
Consideraes Finais
Apesar da abordagem RBT se mostrar simples, engenheiros de teste ainda encontram dificuldades em aplic-la na
prtica [Goldsmith 2006], principalmente, porque a anlise
de riscos algo complexo e necessita de conhecimento para
sua aplicao. No existem ainda ferramentas comerciais
especficas para RBT o que, provavelmente, dificulta sua
aplicao e disseminao.
43
CONTROLAR RISCOS
No faz meno
a esta atividade
No faz meno
a esta atividade
No faz meno
a esta atividade
Fornece um conjunto
de mtricas para controle de
progresso dos testes
No fornece detalhes
para esta atividade
No faz meno
a esta atividade
No fornece detalhes
para esta atividade
No faz meno
a esta atividade
Inclui atividade
de avaliao
de processo de teste
No faz meno
a esta atividade
Conjunto de mtricas
para controle de
progresso dos testes
PROJETAR
TESTES
EXECUTAR
TESTES
AVALIAR TESTES
Baseada
em Mtricas
PLANEJAR
TESTES
IDENTIFICAR
RISCOS
Listas de critrios
de qualidade, genricas
e catlogo de riscos
No faz meno a esta
atividade
ANALISAR RISCOS
TCNICA/
PROCESSO
Baseada em
Heurstica
Baseada em Uso
No faz meno a esta Utiliza a informao No faz meno a No faz meno a esta Percentual de uso da
atividade
de percentual de uso esta atividade
atividade
funcionalidade e tempo de
execuo do caso de teste
Testes
No faz meno a
Mtrica proposta por No fornece
Leva em considerao Ordem de exposio
de Regresso
esta atividade
Amland
detalhes para
que os casos de teste ao risco
esta atividade
esto prontos
Cdigo Fonte Orien- No faz meno a
Mtrica para cdigo No faz meno a No faz meno a esta No faz meno a
tado a Objetos
esta atividade
fonte OO
esta atividade
atividade
esta atividade
RBTProcess
Questionrio, listas
Mtrica proposta
Planeja as
Indica tipos de testes de Ordem de exposio
e reunio de brainstorm
por Amland
iteraes de
acordo com a exposio ao risco
com adaptaes
acordo com a
ao risco
exposio ao risco
Tabela 9. Anlise comparativa das principais abordagens RBT.
www.devmedia.com.br/esmag/feedback
44
sobre e
s
[Amland 1999] Amland, S. (1999) Risk Based Testing and Metrics: Risk analysis
fundamentals and metrics for software testing including a financial application case study, 5o
International Conference EuroSTAR99.
[Bach 1999] Bach, J. (2009) James Bach on Risk-Based Testing: How to conduct heuristic
risk analysis@, Software Testing & Quality Engineering Magazine, p.23-28.
[Besson 2004] Besson, S. (2004) A Strategy for Risk-Based Testing, disponvel em
<StickyMinds.com>.
[Carr et al 1993] Carr, M. J.; Konda, S.L.; Monarch, I.; Ulrich, F. C.; Walker, C. (1993)
Taxonomy Based Risk Identification,Technical Report CMU/SEI-93-TR-6. Software Engineering
Institute, Carnegie Mellon University/USA.
[Chen 2002] Chen, Y. (2002) Specification-based Regression Testing Measurement with
Risk Analysis, dissertao de Mestrado, University of Ottawa/Canada.
[Goldsmith 2006] Goldsmith, R. (2006) Early and Effective: The Perks of Risk-based
Testing, Software Test and Performance Magazine, v.3, p.24-30.
Feedback
eu
edio
ta
D
s
Referncias
[Rosenberg et al 1999] Rosenberg, L. H.; Stapko, R.; Gallo, A. (1999) Risk-based Object
Oriented Testing 24o Annual Software Engineering Workshop, NASA SEW24.
[Souza e Gusmo 2008] Souza, E.; Gusmo C. (2008) RBTProcess - Modelo de Processo
de Teste de Software baseado em Riscos, 13 WTES - Workshop de Teses e Dissertaes em
Engenharia de Software, SBES08.
Engenharia de Software Magazine - Melhorando a Qualidade do Software e Otimizando Recursos com Teste baseado em Riscos
45
46
Engenharia de Software Magazine - Melhorando a Qualidade do Software e Otimizando Recursos com Teste baseado em Riscos
47
thamine.abreu@gmail.com
maraujo@devmedia.com.br
Doutorando e Mestre em Engenharia de Sistemas e Computao pela COPPE/UFRJ, Especialista em Mtodos Estatsticos Computacionais e
Bacharel em Matemtica com Habilitao em
Informtica pela UFJF, Professor dos Cursos de
Bacharelado em Sistemas de Informao do
Centro de Ensino Superior de Juiz de Fora e da
Faculdade Metodista Granbery, Analista de
Sistemas da Prefeitura de Juiz de Fora, Editor da
Engenharia de Software Magazine.
48
leonardo.smota@hotmail.com
Apresenta fundamentos da programao orientada a aspectos, atravs do AspectJ, uma extenso da linguagem Java, exemplificando seu uso
e seus principais componentes atravs de um
estudo de caso.
Desenvolvimento
Introduo ao AspectJ
Para a implementao dos conceitos de POA, foi criada pela
equipe da Xerox Parc, em 1997, o AspectJ (ver seo Links), que
atua basicamente como uma extenso da linguagem Java. Alm
dos elementos oferecidos pela POO (Programao Orientada
a Objetos) como classes, mtodos e atributos, dentre outros,
so acrescentados novos conceitos e construes ao AspectJ,
apresentados a seguir:
49
Designador
call(Signature)
execution(Signature)
get(Signature)
set(Signature)
this(Type pattern)
target(Type pattern)
args(Type pattern)
within(Type pattern)
handler(ExceptionType)
Funo
50
Exemplo
Desenvolvimento
Ambiente de desenvolvimento
Esta seo tem como objetivo explicar a instalao da ferramenta AJDT para o melhor entendimento da utilizao de
aspectos, de modo que no sero abordadas todas as funcionalidades, somente as de maior relevncia. A ferramenta j
possui a linguagem AspectJ integrada, portanto, basta installa para iniciar um projeto utilizando aspectos.
Para instalar a AJDT, necessrio clicar na opo Help /
Software Updates / Find and Install. Na janela seguinte devese selecionar a opo New Remote Site e, logo em seguida,
ser necessrio nomear o plug-in que ser instalado. Para
o exemplo, nomeamos de AJDT e, no campo URL, deve ser
colocada a URL de instalao do plug-in, conforme a Figura
3. De acordo com a verso do Eclipse, a URL de download
pode ser diferente e, no estudo de caso, utilizou-se a verso
3.2. Para saber mais detalhes sobre outras URLs de instalao
deve-se visitar o site do AJDT (seo Links).
Figura 4. Informaes sobre a instalao da AJDT
Clicando em OK, ser exibida uma janela mostrando a ferramenta que ser instalada. Selecione-a e clique em Next. Na
janela seguinte, basta aceitar o termo de compromisso e clicar
novamente em Next. Na prxima janela, deve-se clicar em
Finish. A partir desse momento ser efetuado o download da
ferramenta. Aps isso, ser apresentada uma janela para a instalao do plug-in, que exibir as informaes sobre o que ser
instalado (ver Figura 4). Clique em Install All. Aps completar
a instalao, ser exibido um aviso recomendando restartar o
Eclipse e, para que a instalao tenha efeito, clique em Yes.
Estudo de caso
Utilizaremos um fragmento de cdigo de um sistema de
cadastro de clientes e trataremos de um interesse sistmico
bsico, o logging, que ser utilizado para registrar todas as
possveis excees geradas pelo sistema.
51
Assim, apresenta a declarao do pointcut cujo nome tratamentoExcecao e que tem como argumento um objeto do tipo
Exception. Aps a declarao, comeamos a definir em que join
points o nosso pointcut ir atuar. O designador handler indica que
interceptar qualquer ponto do programa que declarar uma
exceo do tipo Exception ou, como o indicado no caractere
+, qualquer uma de suas subclasses.
Alm de handler, utilizamos tambm o designador within
que, nesse caso, no considera as excees declaradas dentro
do prprio aspecto, indicado pelo operador de negao !. Por
fim, o args captura os argumentos passados como parmetros
no pointcut. seu dever expor o contexto (informao capturada
do join point, no caso a referncia ao objeto Exception) desejado
para que o advice possa us-lo. Resumindo, a funo desse
pointcut tratar todas as excees que ocorram no programa,
desconsiderando as excees que possam ocorrer dentro do
prprio aspecto e capturando a exceo lanada.
No estudo de caso, utilizamos alguns operadores e caracteres
especiais. Caso algum deles fossem trocados, a forma como o
pointcut interceptaria os join points seria alterada. A Tabela 2 lista
os caracteres especiais que podem ser utilizados no AspectJ.
Caractere
Funo
..
52
try {
propriedades.load(fis);
} catch (IOException e) {
BasicConfigurator.configure()
((Logger)Logger.getLogger()).error(e);
}
PropertyConfigurator.configure(propriedades);
((Logger)Logger.getLogger(geral)).error
((+o.toString()+) - + excecao);
}
return logger;
}
}
Desenvolvimento
53
54
Desenvolvimento
Concluso
Este artigo mostrou alguns dos principais fundamentos e
caractersticas do AspectJ, uma extenso da linguagem Java
que implementa a programao orientada a aspectos, visando a manutenibilidade e reusabilidade de cdigo, atravs da
modularizao de interesses sistmicos. O AspectJ se mostra
muito eficiente, principalmente pelo fato de integrar-se aos
conceitos da OO. Uma das suas principais vantagens o fato
do programa principal no saber nada a respeito dos aspectos,
o que o torna independente e coeso.
aspecto, ao lado de uma caixa de seleo de cores e um componente de seleo. Esta caixa indica a cor de identificao
do aspecto quando este for exibido no Visualiser. Neste caso,
utilizamos a cor padro, que azul. Caso o projeto tenha mais
de um aspecto, cada um poder ter uma cor que o representa
para que possa ser identificado facilmente atravs das classes
ou pacotes do projeto. Essa cor pode ser trocada, bastando-se
clicar sobre a caixa de seleo de cores. A outra opo a habilitao (ou no) da exibio do aspecto no Visualizer.
log4j
http://logging.apache.org/log4j
Feedback
eu
edio
ta
AJDT
http://www.eclipse.org/ajdt/downloads
www.devmedia.com.br/esmag/feedback
55
sobre e
s
D
s
Links
Engenharia de Software
Graduao (bacharelado) em Engenharia de Software
De que se trata o artigo?
Proposta pedaggica de curso de graduao (bacharelado) em Engenharia de Software. Noutras
palavras, organizao do curso (escritrio de
projetos e fbrica de software), disciplinas, instrumentos didticos e outros.
fabio@inf.ufg.br
Doutor em computao.
56
educao em Engenharia de
Software , seno o fator de
maior influncia, um dos mais
relevantes na capacidade de produo
de software de um pas. Neste artigo
apresentada uma proposta de formao
de um perfil altamente qualificado para
o desenvolvimento de software tanto
para o mercado local quanto global.
O egresso deste curso deve adquirir
uma base slida e sustentvel para uma
promissora carreira na indstria de
software. O curso inovador em vrios
aspectos ao adotar prticasmais efetivas
para a formao do egresso e surge no
contexto de uma comunidade formada
por quase mil empresas de TI.
Educa o
Contexto
Software parte de praticamente todo e qualquer sistema
moderno. Em conseqncia, a formao do profissional
que produz tal objeto torna-se interesse de muitos, seja
por questes ticas ou profissionais. Adicionalmente, a
demanda existente por mo-de-obra qualificada tem crescido mais do que a oferta, o que comumente apresentado
como motivo de preocupao para o crescimento do setor
em muitos pases. Em Gois h iniciativas em curso por
meio do Arranjo Produtivo Local de Software, capitaneado
pelo SEBRAE-GO e pela comunidade de empresas do setor,
que engloba cerca de mil empresas. O objetivo expandir
a atuao das empresas deste grupo no valioso mercado
de software.
A definio e abertura do curso de Engenharia de Software contribui com estas iniciativas, e insumo de outra que
visa a elaborao de uma verso do curso a ser explorada
completamente por meio da TV Digital.
O curso superior em Engenharia de Software forma bacharis, ou seja, o egresso no engenheiro. Embora no seja
comum no Brasil, existe uma quantidade grande de cursos
com este foco ao redor do mundo, onde o primeiro deles
encontra-se em atividade desde 1985, no Imperial College
(Londres) [1]. Houve significativo esforo para acomodar
o que de melhor orientaes da ACM [2] e IEEE Computer
Society [3] oferecem, juntamente com normas internacionais, a anlise de outros cursos similares pelo mundo, e a
experincia do Instituto de Informtica (responsvel pelo
curso) acumulada em mais de duas dcadas de ensino superior e mais de uma dezena de especializaes na rea, alm
do curso de mestrado em computao. Tal instituto uma
unidade da Universidade Federal de Gois (UFG).
No restante do texto fornecida uma viso panormica do
projeto pedaggico, compilada dos aspectos considerados
mais relevantes e ditada pelo espao disponvel. O projeto
pedaggico na ntegra pode ser obtido em [4].
Fundamentao do curso
O escopo do conhecimento abordado pelo curso baseouse no Software Engineering Body of Knowledge (SWEBOK) [5].
Neste sentido, o curso no inventa ou exerce um perigoso
papel de definir o que faz parte ou no da Engenharia
de Software. Ao contrrio, limita-se ao que o documento
sugere. Convm ressaltar, contudo, que a forma de trabalhar este conhecimento confere personalidade distinta a
cada curso.
Em [1] so apresentadas vrias orientaes acerca da organizao de cursos de graduao em Engenharia de Software.
semelhana deste e de outros documentos empregados,
no se teve a pretenso de segui-los rigorosamente, nem
tampouco de negligenci-los (aqui suficiente esclarecer
que algumas decises se espelharam em contribuies aqui
reutilizadas). Em geral, escolhas foram estabelecidas em prol
do contexto onde o curso est inserido.
Da perspectiva de processo de software foi eleito o MPS.
57
Organizao do curso
Projetos da Fbrica de Software so definidos pelo escritrio
de projetos, que tambm responsvel pela gesto destes e
daqueles acadmicos (um para cada estudante). Por exemplo,
atribuio do escritrio de projetos selecionar e detalhar
projetos relevantes para execuo no mbito da Fbrica, bem
como o acompanhamento dos projetos por meio de ndices
(conforme sugerido acima). Tambm responsabilidade
desta unidade organizacional, entre outras, a alocao de
professores para ministrar disciplinas, por exemplo. Ou seja,
o trabalho comumente atribudo coordenao de um curso
superior passa para o Escritrio de Projeto. Coordenador
do curso, docentes e funcionrios so distribudos entre
estas unidades.
Estrutura curricular
Algumas disciplinas do curso ocorrem em mais de uma
edio. Por exemplo, Pacote de Trabalho perfaz um total de
800 horas, distribudas em 50 edies de 16 horas cada.
58
Atente-se para o fato de no estarem includas as disciplinas optativas nos grficos acima. Algumas destas incluem
Pesquisa Operacional e Engenharia Econmica. A primeira til
no tratamento de alguns problemas. A segunda, de grande
relevncia para empreendimentos que visam produzir software, em particular porque tais iniciativas envolvem valores
no desprezveis.
Educa o
59
60
Links e referncias
[1] Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering, ACM
e IEEE Computer Society, 2004.
[2] Association for Computing Machinery. URL: http://www.acm.org/.
[3] IEEE Computer Society. URL: http://www.computer.org/.
[4] Projeto Pedaggico do Curso Superior em Engenharia de Software. URL: http://
engenhariadesoftware.inf.br/.
[5] Software Engineering Body of Knowledge (SWEBOK). URL: http://www.swebok.org/.
[6] Melhoria de Processo do Software Brasileiro (MPS.BR). URL: http://www.softex.br/mpsbr/.
[7] A Guide to the Project Management Body of Knowledge (PMBOK), 4th edition, PMI, 2008.
[8] Software Engineering Code of Ethics and Professional Practice. URL: http://www.acm.org/
about/se-code.
[9] IEEE Std 12207-2008, Systems and software engineering - Software life cycle processes.
[10] IEEE Std 1058-1998, IEEE Standard for Software Project Management Plans.
[11] IEEE Std 1063-2001, IEEE Standard for Software User Documentation.
[12] IEEE Std 1074-2006, IEEE Standard for Developing a Software Project Life Cycle Process.
[13] Software Engineering Education in India: Issues and Challenges, Kirti Garg e Vasudeva
Varma, 21st CSEET, 2008.
Feedback
eu
sobre e
s
A seo anterior exibe a concentrao de esforos nas disciplinas de Engenharia de Software. Em um curso de Engenharia
de Software parece natural. Convm, contudo, apresentar uma
fundamentao, baseada na percepo da maturidade do contexto
local (empresas de TI). As informaes abaixo omitiram propositadamente valores e percentuais, mas fornecem uma noo do
desenvolvimento das empresas da regio conforme percebido
pela academia.
Da perspectiva de pessoal, neste contexto, observa-se clara presena de dois tipos de profissionais: aqueles hbeis em aspectos de
construo (baixo nvel) e hbeis administradores (alm do escopo
deste texto). Dito de outra forma, em sua maioria, localmente
encontram-se profissionais com desenvoltura em ferramentas
de controle de verso, mas que praticamente desconhecem gerncia de configurao. H pessoas a frente de projetos, mas que
desconhecem e no aplicam tcnicas de medida de desempenho
como valor agregado. H pessoas responsveis por garantia da
qualidade, mas que a reduz a testes e assim por diante. Um indicador a formao dos profissionais em atividade. Em pesquisa
recente, um percentual pequeno era formado (qualquer que seja
o curso superior).
Da perspectiva das empresas, neste contexto, observam-se iniciativas para melhoria do cenrio corrente, mas ainda de resultados tmidos para a economia do estado. So poucas empresas com
iniciativas de melhoria de processos de software, por exemplo. So
poucas as empresas entre as maiores, conforme estudo anual da
revista INFO (em geral destacam-se apenas trs empresas).
Trata-se de um cenrio que, respeitando excees, tem muito
a crescer. No preciso muito esforo para detectar que dentre
quase mil empresas que produzem software, justamente Engenharia de Software uma rea pouco dominada. Todo o curso
foi elaborado com base nesta concluso. Respeitando diferenas
de maturidade, a carncia de profissionais em Engenharia de
Software no um problema localizado, mas atual e que ocorre
em outras partes [13].
D
s
Consideraes finais
edio
ta
Educa o
AMIGO
Existem coisas
que no
conseguimos
ficar sem!
Renove J!
www.devmedia.com.br/renovacao
Para mais informaes:
www.devmedia.com.br/central
61
62