Cursos de Engenharia de Software e TI
Cursos de Engenharia de Software e TI
r/esti
Acesse nosso site e conheça todos os nossos programas: [Link]/esti
TURMAS
NO RIO DE
JANEIRO
[Link] - cursos@[Link] - Central de Atendimento: (21) 2122-8800
D
urante muitos anos, as metodologias tradicionais foram utilizadas
amplamente pela maioria dos projetos e das empresas de desen-
volvimento de software, e o modelo cascata era tido como o mais
completo e efetivo. Essa situação se modificou assim que surgiram os pri-
meiros projetos ágeis, logo após o manifesto ágil em 2001, e o mundo do
desenvolvimento de software se dividiu entre os mais conservadores e os
Ano 3 - 32ª Edição - 2011 Impresso no Brasil
simpatizantes do Scrum, XP e outras metodologias ágeis.
No entanto, apesar dos casos de sucesso serem muitos, logo começaram
Corpo Editorial a aparecer os primeiros estudos de caso que apresentavam problemas
utilizando tais metodologias e, principalmente, o Scrum. O Scrum, mesmo
Colaboradores com inúmeras vantagens em várias perspectivas, deve-se deixar claro, não
Rodrigo Oliveira Spínola
Marco Antônio Pereira Araújo é a solução perfeita para todos os problemas da área de Engenharia de
Eduardo Oliveira Spínola Software, logo, não é a “bala de prata” dos projetos de desenvolvimento.
Neste contexto, esta edição da Engenharia de Software Magazine desta
Capa e Diagramação
Romulo Araujo - romulo@[Link] o artigo “Scrum: Não funcionou para você?”. O artigo apresenta algumas
lições aprendidas durante os últimos anos na área da qualidade de sof-
Coordenação Geral
tware e também na liderança em equipes de desenvolvimento trabalhan-
Daniella Costa - daniella@[Link]
do com Scrum. A principal intenção de listar tais lições é ajudar outras
Revisor e Supervisor equipes que possam vir a ter os mesmos (ou semelhantes) problemas no
Thiago Vincenzo - [Link]@[Link]
decorrer do desenvolvimento de aplicativos e sistemas.
Jornalista Responsável Além desta matéria, esta edição traz mais sete artigos:
Kaline Dolabella - JP24185 • Tenho um Chefe difícil: e agora?
Na Web • Modelagem em uma Visão Ágil
[Link]/esmag • Entendendo melhor SOA e ESB
Apoio • Especificação de Casos de Uso
• Engenharia de Software: Sobre a Necessidade de Educação Continuada
• Refatoração para Padrões - Parte 5
• Modelagem Temporal, de Implantação, de Artefatos e de Componentes
através da UML.
Publicidade
Marco Antônio Pereira Araújo
Para informações sobre veiculação de anúncio na revista ou no site entre em
maraujo@[Link]
contato com:
Doutor e Mestre em Engenharia de Sistemas e Computação pela COPPE/UFRJ - Li-
Cristiany Queiroz
nha de Pesquisa em Engenharia de Software, Especialista em Métodos Estatísticos
publicidade@[Link] Computacionais e Bacharel em Matemática com Habilitação em Informática pela
UFJF, Professor e Coordenador do curso de Bacharelado em Sistemas de Informação
Fale com o Editor! do Centro de Ensino Superior de Juiz de Fora, Professor do curso de Bacharelado em
É muito importante para a equipe saber o que você está achando da revista: que tipo de artigo Sistemas de Informação da Faculdade Metodista Granbery, Professor e Diretor do Cur-
você gostaria de ler, que artigo você mais gostou e qual artigo você menos gostou. Fique a so Superior de Tecnologia em Análise e Desenvolvimento de Sistemas da Fundação
vontade para entrar em contato com os editores e dar a sua sugestão! Educacional D. André Arcoverde, Analista de Sistemas da Prefeitura de Juiz de Fora,
Se você estiver interessado em publicar um artigo na revista ou no site SQL Magazine, Colaborador da Engenharia de Software Magazine.
entre em contato com os editores, informando o título e mini-resumo do tema que você
gostaria de publicar:
Eduardo Oliveira Spínola
eduspinola@[Link]
Rodrigo Oliveira Spínola - Colaborador
É Colaborador das revistas Engenharia de Software Magazine, Java Magazine e SQL Ma-
[Link]@[Link]
gazine. É bacharel em Ciências da Computação pela Universidade Salvador (UNIFACS)
onde atualmente cursa o mestrado em Sistemas e Computação na linha de Engenharia
de Software, sendo membro do GESA (Grupo de Engenharia de Software e Aplicações).
ÍNDICE
Agilidade
Glênio Cabral
Estas vídeo aulas estão disponíveis para download no Portal 13 - Scrum: Não funcionou para você?
Gabriela de Oliveira Patuci
da Engenharia de Software Magazine e certamente trarão
Desenvolvimento
uma significativa contribuição para seu aprendizado. A lista
18 - Modelagem Temporal, de Implantação, de Artefatos e de Componentes
de aulas publicadas pode ser vista abaixo:
através da UML
Geraldo Magela Dutra Gonçalves
Glênio Cabral
gleniocabral@[Link]
É Administrador de Empresas, pós-graduado em Gestão de Pessoas e músi-
co. Idealizador do site de educação infantil [Link].
de passagem, fará com que seu chefe reclame menos do seu Por fim, se nada disso adiantar, talvez seja a hora de ter uma
desempenho. conversa franca com o departamento de recursos humanos e
6. Não adote uma imagem de vítima e de coitadinho. Os bons sinalizar que está disposto a mudar de ares. Mas lembre-se
profissionais não agem assim. Se você se sente perseguido de duas coisas: primeiro, chefes difíceis estão com os dias
ou não reconhecido por seu chefe, não ande cabisbaixo pelos contados. Não há mais espaço para eles num mercado de
cantos. Seja auto-motivado e tenha sempre a consciência trabalho globalizado e dinâmico. E segundo, você pode até
do seu valor e potencial. Lembre-se: os bons profissionais deixar uma empresa por causa de um chefe difícil, mas se for
sempre são reconhecidos e desejados. Se não pelo seu chefe, um bom profissional o mercado de trabalho nunca o deixará.
pelo concorrente ao lado. Siga em frente.
7. Desenvolva o hábito de engolir alguns sapinhos. Ao
longo das nossas vidas, sempre estaremos engolindo alguns
anfíbios saltitantes. Isso acontece porque nem sempre vamos
poder chutar o balde quando bem entendermos. Afinal, Feedback
Dê seu feedback sobre esta edição! eu
temos contas para pagar e família para sustentar. Sem falar
s
Dê
que mudar de função ou de emprego não é garantia de que A Engenharia de Software Magazine tem que ser feita ao seu gosto.
sobre e
se estará livre para sempre de um chefe difícil. Manter o Para isso, precisamos saber o que você, leitor, acha da revista!
s
ta
edição
controle e esperar a hora certa de tomar certas decisões são Dê seu voto sobre este artigo, através do link:
posturas que sempre acompanham o profissional maduro e [Link]/esmag/feedback
que sabe o que quer.
A
modelagem, do ponto de vista conjunto, participação efetiva do cliente, comuni-
ágil, é um método eficiente cação, rascunhos como forma de modelagem e a
que tem como objetivo tornar utilização da modelagem na obtenção da qualida-
mais produtivos os esforços da tarefa de e de maior produtividade.
de modelar, tão comum nos projetos de
software. Para que serve?
Os valores, princípios e práticas da Mo- Proporcionar às equipes de desenvolvimento de
delagem Ágil podem auxiliar as equipes software maior conhecimento sobre a modela-
na definição de componentes técnicos gem ágil, uma vez que grande parte dos projetos
de alto e baixo nível que farão parte do de desenvolvimento ainda precisa evoluir neste
desenvolvimento de software. Artefatos aspecto.
sofisticados elaborados por ferramentas
Lenildo Morais de alto custo nem sempre são os melho- Em que situação o tema é útil?
lenildojmorais@[Link] res para ajudar no desenvolvimento do Nos projetos de desenvolvimento de software,
É analista de sistemas e analista de testes. software. Modelar o software em grupo sobretudo quando se deseja buscar mercados
Atualmente está cursando mestrado no centro e com a participação dos usuários, utili- externos ou expandir seus clientes internos au-
de informática da UFPE em engenharia de
zando rascunhos, é vista como uma boa mentando a satisfação dos mesmos.
software com ênfase em testes e qualidade
de software. prática para se conseguir isto.
Uma das dificuldades mais comuns nas
equipes de desenvolvimento é como con- com o objetivo de observar se as ne-
Conteúdo Multimídia! seguir efetivamente capturar as necessi- cessidades foram atendidas. Ao longo
dades dos usuários. Uma das maneiras deste artigo veremos os conceitos e al-
Neste artigo você encontra o vídeo: “Uma visão
geral da UML”. de se alcançar isso passa pelo desenvol- guns aspectos importantes no tocante
vimento iterativo, onde são entregues à modelagem ágil, assim como alguns
[Link]/esmag software funcionando constantemente benefícios trazidos por esta prática.
Visão geral da Modelagem Ágil o pedreiro tem um custo menor, assim como um engenheiro
O processo atual de desenvolvimento de software ainda pode gerar demandas para o trabalho de até 100 pedreiros.
está em um nível de qualidade muito abaixo do que seria Dado a natureza do projeto civil, é lógico que haja essa divisão
considerado ideal, isto porque os sistemas são entregues aos de trabalho entre design e construção. Neste cenário, não faz
clientes fora do prazo estipulado no projeto e com um custo sentido as pessoas do projeto serem “engenheiro-pedreiro”,
maior do que o previsto. Além disso, esses sistemas frequen- como pode ser na Engenharia de Software.
temente não alcançam a qualidade desejada pelo cliente e, em Durante a construção de um software são consideradas ba-
muitos casos, não satisfazem as reais necessidades do mesmo, sicamente quatro atividades principais:
levando a altos índices de manutenção ou passando a ideia 1. Compreender o que o usuário quer;
de “isso terá de ficar para uma próxima versão”. 2. Definir como os elementos de software resolverão as neces-
A modelagem ágil é vista como um processo de desenvolvi- sidades do usuário;
mento de software baseado em práticas que visa aumentar a 3. Escrever esses elementos de software e integrá-los;
eficiência das equipes dentro dos projetos. Ao contrário dos 4. Testar os elementos e homologá-los com o usuário.
processos tradicionais, que requer basicamente os mesmos
artefatos para todos os tipos de projetos, a modelagem ágil Antes de tudo, deve-se observar que essas atividades ocorrem
busca a construção e manutenção eficiente de artefatos, muitas vezes dentro de um projeto. Entretanto, considerando
criando-os apenas quando agregarem valor real ao projeto, as quatro atividades, a diferença que há com relação à enge-
e focando principalmente os esforços no desenvolvimento nharia civil é que não existem importantes diferenças no nível
do software. intelectual necessário para desempenhar essas atividades. A
Entretanto, a modelagem ágil não é uma metodologia de atividade de levantamento dos requisitos do software não é
desenvolvimento ágil como eXtreme Programming (XP) ou intelectualmente inferior à atividade de codificar estes requi-
Scrum, mas sim uma boa prática. Ela visa construir e manter sitos. São atividades diferentes, mas não tão diferentes como
modelos de sistemas de maneira eficaz e eficiente, podendo o trabalho do engenheiro e do pedreiro. O erro que muitas
ser utilizada dentro de metodologias ágeis e tradicionais. empresas cometem é achar que analistas de sistemas são como
Já com relação à comunicação da equipe, a modelagem ágil engenheiros civis e programadores são como pedreiros, e isto
pode ser aplicada fazendo com que as pessoas envolvidas não ocorre na prática.
nos projetos colaborem para que a solução atenda ao negócio.
Neste contexto, não é interessante se prender a papéis. Uma Aspectos humanos e técnicos no desenvolvimento de
equipe de desenvolvimento de software é mais eficiente software
se todos são capazes de fazer todas as atividades. Esta boa A modelagem ágil é baseada em uma coleção de práticas,
prática proporciona um trabalho muito mais colaborativo e guiadas por princípios e valores que podem ser aplicados
integrado, uma vez que é comum nas equipes haver pessoas por profissionais de software no dia a dia. Não sendo um
com qualidades diferenciadas. É possível que haja uma pessoa processo prescritivo, não define procedimentos detalhados
com excelente desenvoltura para conversar com os usuários, de como criar um dado tipo de modelo. Ao invés disso, provê
outra pessoa consegue codificar com uma rapidez e qualidade sugestões de como ser mais efetivo. Em resumo, a modelagem
acima da média, e outra pessoa pode ter um conhecimento ágil busca o ponto de melhor custo/benefício entre os artefatos
abrangente para dar soluções a problemas complexos. que devem ser criados para o sistema e o custo de manutenção
É comum algumas pessoas, que não são da área de desen- e atualização desses artefatos. Pode-se citar duas motivações
volvimento de software, acharem que a engenharia de siste- principais para a criação desta metodologia:
mas é próxima da engenharia civil ou engenharia mecânica. 1. O objetivo primário de um projeto de software é o próprio
Enquanto nas engenharias tradicionais existe uma divisão software, e não um grande conjunto de documentos sobre ele;
entre design e construção, na engenharia de software não 2. Um artefato é criado primordialmente para permitir a co-
existe esta separação. municação e a troca de informações entre a equipe e permitir
Quando um edifício é construído, o gerenciamento de pro- a discussão e refinamento do modelo do sistema. Assim, se um
jeto tradicional faz sentido, pois para esse tipo de produto artefato não está passando informações relevantes ao projeto,
(o prédio), é necessário ter uma planta detalhada para poder ele não cumpre seu objetivo básico.
iniciar a construção. Nesse projeto quem é responsável pela
atividade de design é um arquiteto ou engenheiro que possui Basicamente, o que se quer com a modelagem do sistema é
qualificações intelectuais distintas de quem irá efetuar o satisfazer as necessidades dos usuários, garantindo a qualidade
projeto (a construção). O trabalho de construção será desem- interna (ver Nota 1) do software e respeitando as restrições de
penhado pelo pedreiro, que não necessita ter o conhecimento custo e prazo do projeto.
total da engenharia para fazer o seu trabalho. Essa divisão Quando se tem que lidar com muita complexidade técnica,
acontece por conta das características totalmente diferentes que geralmente ocorre em sistemas que lidam com milhares de
entre os dois trabalhadores: um é altamente intelectual, o gigabytes, de usuários, de transações e de processamento distri-
outro é mais braçal. Um engenheiro pode ter um custo alto já buído, um pequeno desvio de disciplina pode levar o sistema ao
Capacidade do software de satisfazer as necessidades implícitas, ou seja, requisitos relacionados Capacidade do software de satisfazer as necessidades explícitas, como por exemplo, o
à estrutura do software, como por exemplo, a integridade dos dados ou codificação mais atendimento às funcionalidades acordadas com o cliente ou o desempenho esperado pelo
adequada. software, sempre observando a percepção do usuário.
Modelagem na obtenção da qualidade A modelagem ágil também possui dois tipos de práticas: as
Até então vimos que a modelagem ágil pode melhorar e práticas centrais e as práticas suplementares. Elas sugerem
documentar decisões focadas na qualidade da aplicação, pontos que devem ser observados pelas equipes de desenvol-
facilitando a comunicação e disseminando ideias dentro do vimento de software que ainda não utilizam a modelagem ágil,
time. A modelagem ágil possui um princípio chamado Travel mas que pretendem introduzi-la em seus projetos.
Light. Este princípio diz que manter modelos é difícil, e pode
se tornar ainda mais se estes forem complexos e detalhados. Práticas Centrais
Especialistas na área afirmam que três ou quatro modelos • Trabalho em Equipe: Participação dos vários perfis da equipe
que forneçam uma visão geral da análise, da arquitetura e do do projeto durante o desenvolvimento de software, incluindo
design são suficientes para melhorar a comunicação da equipe. o Stakeholder, proporcionando o conhecimento coletivo e evi-
É errado pensar que quanto maior o número de documentações tando que somente uma pessoa domine todo o processo. Uma
melhor será o projeto. A documentação precisa ser enxuta. forma de disseminar o conhecimento pode ser a divulgação
Conclusão Feedback
Dê seu feedback sobre esta edição! eu
Este artigo apresentou que artefatos simples podem ser uti-
s
Dê
lizados para aplicar boas práticas de modelagem. Modelagem A Engenharia de Software Magazine tem que ser feita ao seu gosto.
sobre e
é uma atividade em grupo (na maioria das vezes) e tudo que Para isso, precisamos saber o que você, leitor, acha da revista!
s
ta
se faz deve ser focado em melhorar a qualidade do software e
edição
Dê seu voto sobre este artigo, através do link:
a produtividade da equipe. Modelar simplesmente para “ter
[Link]/esmag/feedback
o modelo” deve ser evitado.
D
urante muitos anos, as metodo- O artigo tem a intenção de ser uma referência
logias tradicionais foram utili- tanto como lições aprendidas de um estudo de
zadas amplamente pela maioria caso, que são consideradas valiosas no ambien-
dos projetos e das empresas de desenvol- te ágil, assim como para abrir precedentes para
vimento de software, e o modelo cascata futuras discussões sobre os pontos levantados
era tido como o mais completo e efetivo. como causas raízes e suas soluções propostas.
Essa situação se modificou assim que Acredita-se que muitas pessoas no meio ágil ou
surgiram os primeiros projetos ágeis, até mesmo fora dele possam contribuir para a
Gabriela de Oliveira Patuci logo após o manifesto ágil em 2001, e o melhoria deste cenário vislumbrado no estudo
opgabi@[Link] mundo do desenvolvimento de software citado.
É formada pela UNICAMP em Tecnologia se dividiu entre os mais conservadores e
em Informática e está cursando mestrado
na área de Engenharia de Software. Possui
os simpatizantes do Scrum, XP e outras Em que situação o tema é útil?
certificação pela Scrum Alliance, tem expe- metodologias ágeis. O tema é útil para os profissionais de Engenharia
riência de três anos no trabalho com me- No entanto, apesar dos casos de su- de Software em geral que planejam iniciar pro-
todologias ágeis e de cinco anos em Testes cesso serem muitos, logo começaram a jetos utilizando metodologias ágeis ou até mes-
e Qualidade de Software. Hoje atua como aparecer os primeiros estudos de caso mo para aqueles que já as utilizam mas estão
Scrum Master em projetos internacionais
pela Ci&T e já palestrou em eventos como
que apresentavam problemas utilizando enfrentando problemas com seus resultados.
Agile Brazil 2010. tais metodologias e, principalmente, o
escopo possam ser mais bem tratadas. Neste caso, ficaríamos testadores fará com que a qualidade do produto fique ainda
com 24 sprints. O cálculo final seria o número final de sprints mais elevada) e logo após a finalização do desenvolvimento, no
(24) vezes o número de horas de todo o time. ambiente separado para testes (o teste funcional que as equipes
já fazem), onde todos os defeitos são realmente reportados, às
Testes ágeis ou método cascata? vezes até através de uma ferramenta;
É claro que o desenvolvimento ágil chegou nos últimos anos • Dia Final: Os testes se concentram em Testes de Regressão,
com peso muito forte e que está tomando cada vez mais espaço para que se possa confirmar a qualidade verificada anterior-
nas salas em empresas no mundo todo. O que devemos nos mente no produto e em Retestes, para assegurar que todos os
perguntar é: Estamos TESTANDO de maneira ágil? defeitos reportados foram corrigidos.
Bem, se desenvolvemos de maneira incremental, por que
muitos ainda deixam os testes como a última atividade da Este é o início de uma das várias propostas que estão sendo
cadeia? Sem dúvida, como resultado das pesquisas realizadas feitas para minimizar os problemas que vem sendo encontra-
nos últimos anos, esta é a principal causa de problemas nos dos na disciplina de testes em equipes ágeis.
projetos onde o escopo alterado e a falta de qualidade na en-
trega foram ressaltados pelo cliente. Como justificar muitos Conclusão
defeitos ao final do projeto? Simples dizer se notarmos que Este artigo apresentou um estudo sobre quais os principais
os testes são deixados para o final da sprint da mesma forma problemas encontrados em projetos utilizando a metodologia
como já era feita no método cascata. Scrum.
Mudamos de metodologia, devemos mudar de paradigma. Foi apresentada uma lista de problemas frequentes, junta-
Casos em que o time todo ajuda a testar e depois o especialista mente com a conceituação básica do que é a metodologia e
em testes fica bloqueado até o final da sprint ou até mesmo como deveria ser tratada, para que todas as equipes tenham a
que o testador fica com todos os testes e, por falta de tempo, chance de pensar mais sobre o assunto e tentar melhorar em
defeitos acabam não surgindo, são frequentes. É importante futuros projetos.
ressaltar: temos que mudar o paradigma e começar a fazer tes- Algumas ideias já foram apresentadas como possíveis solu-
tes também de maneira incremental. Deixamos este conteúdo ções para a maioria das questões citadas, mas claro que seria
para um próximo artigo, mas esta questão pode ser utilizada necessário outro artigo para tratarmos das melhores soluções
como o ponto inicial para que todos nós pensemos em como para cada um dos itens da lista. Assim como o estudo realizado
resolver o problema. para verificar os pontos que afetavam a qualidade de entrega
De uma forma geral, pode-se explicar uma possível solução em projetos Scrum, seriam necessários outros estudos voltados
para testes funcionando como uma espécie de gargalo no para todas as possíveis soluções. Precedentes para trabalhos
trabalho do time, com a criação dos Testes Ágeis ou Testes futuros já começam a surgir e poderão ser verificados em
Incrementais. O profissional da área de testes pode e deve artigos futuros.
começar a atuar desde o primeiro dia da sprint. Segue abaixo
uma lista com as atividades do dia a dia deste profissional,
fazendo com que todo o time esteja mais engajado na disciplina Referências
de testes e que todo o trabalho seja cumprido de forma mais
[1] BECK, K.; FOWLER, M. et al (2001). Manifesto for Agile Software Development.
eficaz e incremental:
[Link]
Dia a dia de testes dentro do Scrum:
• Dia 0: Antes mesmo da planning meeting, o analista de [2] CRISPIN, L; GREGORY, J. (2009). Agile Testing: A Practical Guide for Testers and Agile Teams.
testes, aproveitando-se de sua visão geral do produto, poderá Addison-Wesley Professional. ISBN 0321534468.
revisar os requisitos (estórias), fazendo com que estas fiquem
[3] COHN, M. (2004). User Stories Applied for Agile Software Development. Addison-Wesley
mais claras e completas. Este trabalho pode ajudar tanto o
Professional. ASIN B000SEFH1A.
PO como o time todo, já que a planning será muito mais pro-
veitosa tendo um requisito mais completo e revisado por um [4]PEREIRA, R. (2008). 10 Benefits of One Piece Flow.
membro do time; [Link]
• Dia 1: Início do desenvolvimento. Enquanto nada está desen-
volvido, criam-se os casos de testes baseados nos critérios de Feedback
Dê seu feedback sobre esta edição! eu
aceitação das estórias. Este trabalho será bem reduzido pelo
s
Dê
fato da revisão já ter sido feita anteriormente; A Engenharia de Software Magazine tem que ser feita ao seu gosto.
sobre e
• Dia 2 a Dia n: Durante todo o desenvolvimento, os testes Para isso, precisamos saber o que você, leitor, acha da revista!
s
ta
edição
serão realizados em duas etapas: durante toda a sprint no Dê seu voto sobre este artigo, através do link:
ambiente dos desenvolvedores (assim muitos dos defeitos [Link]/esmag/feedback
serão antecipados e a comunicação entre desenvolvedores e
A
Federal de Juiz de Fora onde trabalha com
literatura técnica, hoje vasta acuradamente as abstrações capturadas
desenvolvimento de sistemas de informação e
informática desde 1988. É professor do Curso e diferenciada, costuma ser por cada um deles. Então, classifica os
Superior de Tecnologia em Análise e Desenvol- unânime em classificar os dia- treze diagramas da UML em quatro
vimento de Sistemas da Fundação Dom André gramas da UML (Unified Modeling categorias:
Arcoverde em Valença/RJ. Language) em dois grandes grupos: Dia- • Modelagem Estrutural: Diagramas de
gramas Estruturais e Diagramas Com- Casos de Uso, Diagramas de Classes, Dia-
Conteúdo Multimídia! portamentais. Não há nada de errado gramas de Objetos, Diagramas de Pacotes
com essa classificação, mas existe uma e Diagramas de Estrutura Composta.
Neste artigo você encontra o vídeo: “Conhecen-
do o diagrama de componentes”. outra, com mais sub-níveis, que traduz • Modelagem de Interações: Diagramas de
de forma mais completa a natureza de Sequência, Diagramas de Comunicação e
[Link]/esmag cada diagrama, assim como tipifica mais Diagramas de Visão Geral da Interação.
18 Engenharia de Software Magazine - Modelagem Temporal, de Implantação, de Artefatos e de Componentes através da UML
PROJETO
Diagramas de Temporização
Diagramas de Estados representam os estados possíveis
de apenas um objeto e as transições permitidas entre eles.
Diagramas de Atividades são um caso especial de Diagramas
de Estados onde os estados são ações/atividades e podem
representar a participação de diversos objetos. Diagramas de
Temporização são, também, uma variação de diagramas de
estados e de transições entre eles, mas onde tais transições
estão associadas a restrições de tempo. Em última análise, Figura 1. Timing Frame para um caixa eletrônico
Figura 2. Estados/Condições para cada linha de vida Figura 3. Gráficos de temporização das três linhas de vida sincronizadas
20 Engenharia de Software Magazine - Modelagem Temporal, de Implantação, de Artefatos e de Componentes através da UML
PROJETO
Figura 4. Mensagens de tempo emitidas entre linhas de vida Figura 5. Restrições de tempo associadas às transições
22 Engenharia de Software Magazine - Modelagem Temporal, de Implantação, de Artefatos e de Componentes através da UML
PROJETO
24 Engenharia de Software Magazine - Modelagem Temporal, de Implantação, de Artefatos e de Componentes através da UML
PROJETO
Conclusão
Os diagramas UML mais representativos e largamente
empregados são, sem dúvida, os diagramas de classes, de
sequência, de estados e de atividades. Embora todos os outros
sejam de igual valia para a equipe de desenvolvimento, um
projeto pode sobreviver sem eles, o que acaba por desestimu- Figura 14. Diagrama de Implantação
lar seu desenvolvimento. Isso é um antigo problema vestindo
roupa nova. Dispensar tempo com documentação que pode menos complexos) sistemas embarcados, ou seja, programas
ser considerada secundária sempre foi uma atividade prete- controladores de dispositivos e aparelhos eletrônicos espe-
rida e/ou abandonada. Para mudar essa realidade, que é uma cíficos. Alguns sistemas comerciais e/ou administrativos
questão de ‘cultura’ dos desenvolvedores, a UML disponibiliza podem apresentar processos tempo-dependentes, mas estas
todo um conjunto de modelos com notações apropriadas para dependências podem ser modeladas nos diagramas de estado
modelagem dos mais variados aspectos inerentes ao desenvol- e atividades.
vimento de sistemas.
Diagramas empregados na fase de implantação de siste-
mas compreendem Diagramas de Artefatos, Diagramas de Referências Bibliográficas
Componentes e Diagramas de Implantação. Embora pouco
BEZERRA, Eduardo. Princípios de análise e projeto de sistemas com UML. [Link]. Rio de Janeiro:
empregados, são de grande importância para modelagem de
Campus-Elsevier, 2007. 370p.
sistemas de média a alta complexidade e que executam em
ambientes de processamento distribuídos. Seu emprego passa BOOCH, Grady; RUMBAUGH, James; Jacobson, IVAR. UML: Guia do Usuário. [Link]. Rio de Janeiro:
a ser quase obrigatório quando tais ambientes são extensos e Campus-Elsevier, 2006. 474p.
complexos.
FOWLER, Martin. UML essencial: um breve guia para a linguagem padrão de modelagem de
Diagramas de Artefatos de código fonte e executável passam
objetos. [Link]., Porto Alegre: Bookman, 2006. 160p.
a ser uma espécie de índice para localização de artefatos em
uma extensa rede de nós de processamento. Recursos como BLAHA, Michael; RUMBAUGH, James. Modelagem e projetos baseados em objetos com UML
quantidade de memória e capacidade de processamento podem [Link]. Rio de Janeiro: Campus-Elsevier, 2006. 496p.
ser alocados e controlados mediante seu emprego e atualização
constante. Já os Diagramas de Componentes são uma obrigato-
Dê seu feedback sobre esta edição! Feedback
riedade para instalações que desenvolvem com essa filosofia. A eu
s
Dê
representação dos componentes e seus relacionamentos torna A Engenharia de Software Magazine tem que ser feita ao seu gosto.
sobre e
mais amena a difícil tarefa de manutenção. Para isso, precisamos saber o que você, leitor, acha da revista!
s
ta
Por fim, diagramas de temporização encontram seu melhor Dê seu voto sobre este artigo, através do link:
edição
U
ma prática comum a vários de- vo de mostrar como o desenvolvedor pode usá-lo para
senvolvedores, principalmente melhorar o código-fonte de suas aplicações.
os que não possuem conheci-
mento sobre padrões de projeto, é a de Para que serve?
criar extensos métodos com complexa Para prover conhecimento ao desenvolvedor sobre
lógica de seleção, com o objetivo de for- refatoração para padrões e demonstrar através de
Jacimar Fernandes Tavares
[Link]@[Link]
necer todos os caminhos para determi- um exemplo prático a aplicação das técnicas de refa-
É Aluno do Curso de Bacharelado em Ciên- nados comportamentos em um só lugar. toração para padrões Substituir Lógica condicional por
cia da Computação da FAGOC - Faculdade Tal prática é funcional e pode ser realiza- Strategy.
Governador Ozanam Coelho, Microsoft da em tempo hábil, mas outras questões
Student Partners. devem ser levadas em consideração. Em que situação o tema é útil?
Métodos com extensa lógica de seleção O tema se torna fundamental para desenvolvedo-
Marco Antônio Pereira Araújo possuem complexidade ciclomática ele- res que já estão familiarizados com padrões de pro-
maraujo@[Link] vada, o que pode vir a ser um problema jeto e já os implementam em seus softwares e que
É Doutor e Mestre em Engenharia de Sis- quando se pensa em manutenções futuras. querem saber mais sobre refatoração para padrões,
temas e Computação pela COPPE/UFRJ,
Especialista em Métodos Estatísticos Com-
A refatoração para o padrão Strategy forne- conhecendo os benefícios que sua utilização traz.
putacionais e Bacharel em Informática pela ce um mecanismo mais sofisticado que um
UFJF, professor do curso de Bacharelado em método com extensa lógica condicional, se
Ciência da Computação da FAGOC, professor bem aplicada. Contudo, refatorar para o Substituir Lógica condicional por Stra-
dos Cursos de Bacharelado em Sistemas de padrão Strategy não é uma tarefa simples, tegy, uma visão geral do que é o padrão
Informação do Centro de Ensino Superior
de Juiz de Fora, da Faculdade Metodista
visto que há vários conceitos e práticas de projeto Strategy, bem como as técni-
Granbery e da Universidade Severino Som- envolvidas neste processo. cas de refatoração Mover Método (ver
bra, professor do Curso de Tecnologia em A partir deste momento serão apresen- Nota do DevMan1), Introduzir Objeto
Análise e Desenvolvimento de Sistemas da tados conceitos e práticas que estão dire- Parâmetro, Substituir Condicional por
Fundação Educacional D. André Arcoverde. tamente ligados ao processo de refatorar Polimorfismo e Substituir Enumeração
Analista de Sistemas da Prefeitura de Juiz
de Fora, Editor da Engenharia de Software
para o padrão Strategy com a utilização por Subclasse. Ao final será abordada
Magazine. da técnica de refatoração para padrões a técnica de refatoração para padrões
como parâmetro, pode-se reduzir, e muito, o código duplica- 01. public class Dados
do, além de juntar os dados em um só lugar. Pode-se ainda 02. {
03. private String nome;
reduzir significativamente o número de parâmetros passados
04. private DateTime dataInicio;
ao método. 05. private DateTime dataFinal;
Mecânica:
06. public String Nome
• Cria-se a classe que terá atributos que substituirão os parâ-
07. {
metros passados aos métodos. 08. get { return nome; }
• Declare nela os atributos que deseja substituir pelos 09. set { nome = value; }
10. }
parâmetros.
• Modifique os métodos para receberem como parâmetro um 11. public DateTime DataInicio
objeto da classe criada, apagando os antigos parâmetros. 12. {
13. get { return dataInicio; }
• Execute os testes.
14. set { dataInicio = value; }
15. }
Exemplo: O exemplo a seguir vem de um sistema comercial 16. public DateTime DataFinal
17. {
do qual são extraídas várias informações, onde vários métodos
18. get { return dataFinal; }
são invocados para obtê-las. A Listagem 1 mostra o código da 19. set { dataFinal = value; }
classe Departamento. 20. }
Ao analisar o código da Listagem 1 percebe-se que há vários
21. public Dados(String nome, DateTime dataInicial, DateTime
pontos com código omitido. Isso é necessário para que o foco dataFinal)
fique somente na declaração dos métodos e não no corpo do 22. {
23. [Link] = nome;
método, que para esta refatoração não é importante.
24. [Link] = dataInicial;
Os métodos declarados possuem algo em comum: a lista de 25. [Link] = dataFinal;
parâmetros é idêntica entre eles. Primeiramente cria-se a classe 26. }
que terá atributos equivalentes aos parâmetros utilizados pelos
27. }
métodos, conforme a Listagem 2.
para substituir o case mensalista da sentença switch . Analisan- Listagem 7 – Subclasse da hierarquia: classe Diarista.
do as classes Mensalista e Diarista, perecebe-se que tal método
já existe. Agora, portanto, resta modificar o método Recupe- [Link] class Diarista: Funcionario
02. {
raValorSalario da classe Funcionario para eliminar a lógica 03. ...
condicional. A Listagem 9 mostra o resultado da mudança. 04. public override String RecuperaTipoFuncionario()
05. {
06. return “Diarista”;
A refatoração Substituir Enumeração por Subclasses 07. }
Esta refatoração é pertencente ao grupo de refatorações clas- 08. public override decimal RecuperaSalario()
sificadas como Organizando Dados. 09. {
10. return salario;
Nome da r efatoração: Subst it u i r Enu meração por 11. }
Subclasses. 12. }
Resumo: Substituição de enumerações por subclasses, pois
enumerações alteram o comportamento de uma classe. Listagem 8 – Classe Funcionário.
Motivação: Usa-se esta refatoração para dividir uma classe [Link] abstract class Funcionario
que possui características de uma classe que carrega mais 02. {
informação do que normalmente deveria carregar. Substi- 03. public abstract String RecuperaTipoFuncionario();
tuindo as enumerações por subclasses, consegue-se clarificar 04. public Decimal RecuperaValorSalario(Funcionario funcionario)
a intenção do código. 05. {
Mecânica: 06. switch (RecuperaTipoFuncionario())
07. {
• Analisa-se a enumeração e cria-se uma classe para cada valor 08. case “Mensalista”:
contido na enumeração, tornando-as subclasses da classe que 09. return [Link]();
contém a enumeração. 10. case “Diarista”:
11. return [Link]();
• Deletam-se os campos da enumeração e movem-se as carac- 12. default:
terísticas que são específicas das subclasses para elas. 13. return 0;
• Execute os testes. 14. }
15. }
16. }
Exemplo: A classe Pessoa possui uma enumeração chamada
TipoPessoa, onde Alunos é representado por 0, e Professores Listagem 9 – Classe Funcionario.
por 1. A classe Pessoa possui ainda métodos que realizam
[Link] abstract class Funcionario
operações para alunos e para professores, o que caracteriza 02. {
que a classe Pessoa possui comportamentos que poderiam 03. public abstract String RecuperaTipoFuncionario();
ser divididos por outras classes, conforme será feito nesta
04. public abstract Decimal RecuperaSalario();
refatoração. A Listagem 10 mostra a classe Pessoa.
Aplicando essa refatoração, parte do código da classe Pessoa 05. public Decimal RecuperaValorSalario(Funcionario funcionario)
poderá ser dividido em duas classes: Alunos e Professores. As- 06. {
sim será possível clarificar o código da classe Pessoa, ao movê-lo 07. return [Link]();
08. }
para as subclasses. As Listagens 11 e 12 mostram as subclasses
09. }
criadas a partir da análise dos campos da enumeração.
A classe Pessoa agora é a superclasse das subclasses Alunos Listagem 10 – Classe Pessoa com a enumeração TipoPessoa.
e Professores. Agora para clarificar e reduzir a complexidade
[Link] class Pessoa
da classe Pessoa, move-se todo conhecimento específico para
02. {
as respectivas subclasses que, neste caso, implica em mover o
método AlterarSenhaAluno para a classe Alunos e Recuperar- 03. public enum TipoPessoa
NomeProfessor para Professores, conforme Listagens 13 e 14. 04. {
05. Alunos = 0,
Para finalizar, basta apagar a enumeração da classe Pessoa e
06. Professores = 1
ajustar as chamadas à enumeração para as novas mudanças. 07. }
A partir desse momento, todo código que antes era desti- 08. public void AlterarSenhaAluno(String novaSenha)
nado à classe Pessoa, agora dever ser analisado e escrito 09. {
10. ...
na subclasse que melhor se encaixar nos objetivos da nova
11. }
funcionalidade.
Até este ponto foram apresentados os conceitos e práticas que 12. public void RecuperaNomeProfessor(Int32 id)
o desenvolvedor precisa para iniciar o processo de aprendizado 13. {
14. ...
sobre a refatoração para o padrão Strategy. A partir deste mo-
15. }
mento será apresentada a técnica de refatoração para padrões 16. }
Substituir Lógica condicional por Strategy.
(Listagem 15) que o código movido esteja utilizando. O resultado da lógica condicional em questão. Depois, deve-se modificar a
pode ser visto na Listagem 18. classe CalcularEmprestimoStrategy para abstrata e modifica-se
Modifica-se o método CalcularEmprestimo da classe Emprés- seu método Calcular para abstrato, permitindo que os métodos
timos (Listagem 15), para que ele delegue à classe CalcularEm- recém criados nas subclasses o implementem. As Listagens 20,
prestimoStrategy. A Listagem 19 mostra o resultado. 21, 22, 23 e 24 mostram o resultado destas mudanças.
Utilizando herança e polimorfismo, analisa-se o método Calcular A refatoração para padrões Substituir Lógica Condicional por
na classe CalcularEmprestimoStrategy (Listagem 18). Para cada Strategy está finalizada. Cumpriu-se o objetivo, que era a imple-
tipo de cálculo que ele produz, no caso 4 (um pra cada condicional, mentação do padrão Strategy. O benefício citado na descrição da
cria-se uma subclasse para a classe CalcularEmprestimoStrategy. refatoração era o de simplificar o projeto de código existente.
Tais subclasses devem conter um método Chamado Calcular, Isto se torna visível se analisado o método CalcularEmprestimo
e o seu corpo deve conter um dos tipos específicos de calculo (Listagem 15). A lógica condicional que escolhia qual tipo de
3. FOWLER, Martin. Refatoração: aperfeiçoando o projeto de código existente, 1ed. Porto Alegre:
Conclusão Bookman, 2004.
Um dos grandes benefícios dos padrões de projeto está re-
lacionado ao fato de permitir a criação de soluções flexíveis
e reutilizáveis. A aplicação do padrão Strategy neste artigo Dê seu feedback sobre esta edição! eu
Feedback
s
mostrou que o mecanismo criado aumentou a flexibilidade do
Dê
A Engenharia de Software Magazine tem que ser feita ao seu gosto.
sobre e
código a partir do momento que tornou mais simples a inserção
Para isso, precisamos saber o que você, leitor, acha da revista!
de novas estratégias para novos tipos de cálculos, e ao mesmo
s
ta
edição
Dê seu voto sobre este artigo, através do link:
tempo tornou o código reutilizável, permitindo às estratégias
definidas serem reutilizadas em outros projetos. [Link]/esmag/feedback
Engenharia
Nesta seção você encontra artigos voltados para testes, processo,
modelos, documentação, entre outros
Engenharia de Software
Sobre a Necessidade de Educação Continuada
A
de Software, Programando com XML, todos o longo das últimas décadas de software que prioriza documentação ade-
pela Editora Campus/Elsevier, tem mais de
o software deixou de ser uma quada de software para apoiar rastreabilidade,
30 artigos publicados em eventos nacionais
e internacionais, colunista para Ciência e Tec- parte ínfima e de custo despre- manutenibilidade e reuso de artefatos de sof-
nologia pela Revista Espaço Acadêmico com zível dos sistemas para se tornar parte tware. Recomenda engenharia reversa e arqui-
mais de 60 artigos publicados, tendo feitos determinante e dispendiosa. Hoje em tetura de software como componentes para sua
palestras em eventos nacionais e no exterior. dia, tudo o que você ‘toca’ tem softwa- formação.
Foi Professor Visitante da University of Texas
re, seja no uso doméstico quanto nas
at Dallas e da University of Ottawa. Formado
em Engenharia Elétrica pela Universidade de organizações. Você encontra software Em que situação o tema é útil?
Pernambuco, com Mestrado em Engenharia nos caixas das farmácias, no mercado da O artigo identifica diversos fatos e tendências do
Elétrica pela Universidade Federal da Paraíba esquina, naquelas pequenas máquinas segmento de TI, discute cenário atual e apresen-
(Campina Grande), Mestrado em Engenharia que permitem milhões de transações ta recomendações para os profissionais de enge-
da Computação pela University of Waterloo e
com cartão de crédito e nos aviões que nharia de software que visam atender a deman-
Doutor em Ciência da Computação pela Uni-
vesidade Federal de Pernambuco. levam a pessoas pelos quatro cantos do da de desenvolvimento de sistemas de software
mundo. que satisfaçam restrições de custo, tempo (de
Incrível e intangível é o software. Isso desenvolvimento) e qualidade.
Conteúdo Multimídia! mesmo, software é um produto intangí-
vel, o qual é difícil descrever bem como
Neste artigo você encontra o vídeo: “Problemas
e suas causas no desenvolvimento de software”. avaliar. Por outro lado, comparativamente caráter corretivo ou evolutivo também
ao hardware é facilmente modificado, mais fáceis. Mas, isso é apenas verda-
[Link]/esmag tornando as manutenções sejam elas de de se o software tiver seu projeto bem
s
Dê
genharia reversa de software deva fazer parte da grade dos A Engenharia de Software Magazine tem que ser feita ao seu gosto.
sobre e
cursos de Engenharia de Software, Computação e correlatos. Para isso, precisamos saber o que você, leitor, acha da revista!
s
ta
edição
Por que? Observe que muitas empresas possuem sistemas Dê seu voto sobre este artigo, através do link:
(legados ou não) que requer manutenção e, para tanto, você [Link]/esmag/feedback
engenheiro de software necessita da documentação de projeto.
A
pela COPPE/UFRJ. Autor de diversos artigos
científicos sobre Engenharia de Software pu- engenharia de requisitos é um Mas o que podemos entender por re-
blicados em revistas e conferências renoma- termo usado para descrever quisitos? Existem diferentes definições
das, dentro e fora do país. Experiência de parti- as atividades relacionadas à encontradas na literatura técnica:
cipação em mais de 20 projetos de consultoria produção (levantamento, registro, vali- • Um requisito é uma característica do
para diferentes empresas tendo atuado com
dação e verificação) e gerência (controle sistema ou a descrição de algo que o
gerência de projetos, requisitos e testes de
software. Implementador certificado do MPS. de mudanças, gerência de configuração, sistema é capaz de realizar para atingir
BR, tendo também experiência atuando junto rastreabilidade, gerência de qualidade os seus objetivos;
a empresas certificadas CMMI. dos requisitos) de requisitos. A Figura 1 • As descrições das funções e restrições
representa essa definição. são os requisitos do sistema.
Conteúdo Multimídia!
Neste artigo você encontra o vídeo: “Trabalhan- Para ter acesso à esse artigo na íntegra acesse o leitor digital:
do com requisitos e casos de uso com a UML”
[Link]/esmag [Link]/esmag
De que se trata o artigo? possibilitando uma maior integração entre seus mo-
Apresentar, através de uma visão geral, os conceitos, delos de negócio.
diferenças e algumas características de SOA (Service Em que situação o tema é útil?
Oriented Architecture) e ESB (Enterprise Service Bus) Quando se pretende otimizar os recursos disponí-
e como estes podem ser úteis nas empresas que os veis nas empresas, através do reuso de componen-
adotam. tes e integração de serviços, sobretudo quando
se deseja buscar uma aproximação das áreas de
Para que serve? negócio e de TI, aumentando a visão e o poder de
Proporcionar às empresas um maior planejamento decisão por parte de seus gestores.
para implementação de seus sistemas distribuídos,
A
s empresas estão percebendo a criação de serviços de negócio inte-
cada vez mais a necessidade roperáveis que podem facilmente ser
de ter e manter suas infraestru- reutilizados e compartilhados entre
turas de TI prontas para acompanhar as diversas aplicações utilizadas nas
Lenildo Morais as mudanças do mercado. Este fator empresas.
lenildojmorais@[Link] implica diretamente no crescimento O Service-Oriented Architecture (SOA),
É analista de sistemas e analista de testes.
e na competitividade diante de seus ou Arquitetura Orientada a Serviços, é
Atualmente está cursando mestrado no cen-
tro de informática da UFPE em engenharia de concorrentes, independentemente do um estilo de arquitetura utilizado no
software com ênfase em testes e qualidade de segmento de atuação da mesma. Neste desenvolvimento de softwares onde
software. contexto, o SOA é uma abordagem uma aplicação é definida como um
arquitetural corporativa que permite conjunto de serviços.
Conteúdo Multimídia!
Neste artigo você encontra o vídeo: “Projeto de
Arquitetura de Software“ Para ter acesso à esse artigo na íntegra acesse o leitor digital:
[Link]/esmag [Link]/esmag