Você está na página 1de 60

ISSN 1983127-7

9 771983 127008 00008


EDITORIAL
Esta edição da Engenharia de Software Magazine traz como
tema de capa Maturidade + Evolução. Com isso, buscamos dis-
cutir alguns assuntos que podemos ter em mente ao realizar
atividades de melhoria de processo. Para abordar este tema,
Ano 1 - 8ª Edição 2008 - Impresso no Brasil destacamos dois artigos:
Corpo Editorial Maturidade em Gerenciamento de Projetos: Uma Visão
Colaboradores Analítica
Rodrigo Oliveira Spínola
rodrigo@sqlmagazine.com.br “Nos dias atuais, a execução de projetos está se tornando co-
Marco Antônio Pereira Araújo
mum e remete ao desafio de gerenciar projetos com eficiên-
Eduardo Oliveira Spínola cia. O uso efetivo de tecnologias durante esta atividade pode
Editor de Arte determinar o sucesso de qualquer negócio e satisfazer as ex-
Vinicius O. Andrade pectativas dos clientes. Contudo, em busca do sucesso, o uso
viniciusoandrade@gmail.com
adequado destas tecnologias é crucial. É possível observar uma
Diagramação
Ampel Produções Editoriais crescente busca por melhoria de processos relacionados, prin-
Revisão
cipalmente, à gerência de projetos e à engenharia de software
Gregory Monteiro em várias organizações de Tecnologia da Informação (TI). Den-
gregory@clubedelphi.net tro deste contexto, este artigo tem o objetivo de apresentar os
Na Web fatores que levam ao sucesso de projetos, conceitos básicos da
www.devmedia.com.br/esmag
Apoio área de maturidade em gerenciamento de projetos e uma visão
comparativa de alguns dos modelos que estão em evidência.”
Avaliação Independente de Garantia da Qualidade
“A Garantia da Qualidade visa avaliar a aderência das ativida-
des executadas e dos produtos de trabalho gerados a padrões,
PARCEIROS: processos, procedimentos e requisitos estabelecidos e apli-
cáveis, fornecendo uma visão objetiva e independente, tanto
para atividades de processo quanto de produto, em relação a
desvios e pontos de melhoria, de forma a assegurar que a quali-
dade planejada não será comprometida. Neste artigo apresen-
ta-se o processo de Garantia da Qualidade com base no MPS.
Rodrigo Oliveira Spínola BR nível F, destacando a importância e a necessidade em se re-
rodrigo@sqlmagazine.com.br alizar uma avaliação independente de Garantia da Qualidade e
Doutorando em Engenharia de Sistemas e Computação (COPPE/UFRJ). Mestre em
fatores críticos de sucesso desta avaliação.”
Engenharia de Software (COPPE/UFRJ, 2004). Bacharel em Ciências da Computa-
ção (UNIFACS, 2001). Colaborador da Kali Software (www.kalisoftware.com), ten- Além destas duas matérias, esta edição traz mais seis artigos:
do ministrado cursos na área de Qualidade de Produtos e Processos de Software, • Planejamento Ágil de Projetos;
Requisitos e Desenvolvimento Orientado a Objetos. Consultor para implementação • Desenvolvimento de Software Centrado em Arquite-
do MPS.BR. Atua como Gerente de Projeto e Analista de Requisitos em projetos de tura;
consultoria na COPPE/UFRJ. É Colaborador Engenharia de Software Magazine.
• Conceitos de orientação a objetos e UML;
Marco Antônio Pereira Araújo - Editor • Confiabilidade de Software: Determinante da Qualida-
(maraujo@devmedia.com.br) de de Sistemas de Software;
É Doutorando e Mestre em Engenharia de Sistemas e Computação pela COPPE/ • Testes de Mutação com o plug-in MuClipse;
UFRJ – Linha de Pesquisa em Engenharia de Software, Especialista em Métodos
• Testes Automatizados de Software em Web Services.
Estatísticos Computacionais e Bacharel em Matemática com Habilitação em Infor-
Desejamos uma ótima leitura!
mática pela UFJF, Professor dos Cursos de Bacharelado em Sistemas de Informação
do Centro de Ensino Superior de Juiz de Fora e da Faculdade Metodista Granbery, Equipe Editorial Engenharia de Software Magazine
Analista de Sistemas da Prefeitura de Juiz de Fora. É colaborador da Engenharia
de Software Magazine.

Eduardo Oliveira Spínola Dê seu feedback sobre esta edição!


(eduspinola@gmail.com)
É Colaborador das revistas Engenharia de Software Magazine, Java Magazine e A Engenharia de Software Magazine tem que ser feita ao seu gosto. eu
Feedback
Para isso, precisamos saber o que você, leitor, acha da revista!
s

SQL Magazine. É bacharel em Ciências da Computação pela Universidade Salva-


sobre e

dor (UNIFACS) onde atualmente cursa o mestrado em Sistemas e Computação na Dê seu voto sobre este artigo, através do link:
linha de Engenharia de Software, sendo membro do GESA (Grupo de Engenharia
s

ta
e
de Software e Aplicações). www.devmedia.com.br/esmag/feedback d i çã o
Caro Leitor,
Para esta edição, temos um conjunto de 7 vídeo aulas. Estas vídeo Software Magazine e certamente trarão uma significativa contribuição
aulas estão disponíveis para download no Portal da Engenharia de para seu aprendizado. A lista de aulas publicadas pode ser vista abaixo:

01 – Planejamento 04 – Projeto
Título: Análise de Pontos de Função Título: Introdução à Construção de Diagrama de Classes da UML – Parte 8
Autor: Marco Antônio Pereira Araújo Autor: Rodrigo Oliveira Spínola
Mini-Resumo: Medições em software são boas ferramentas para a redução de riscos nas Mini-Resumo: Esta vídeo aula dá continuidade à elaboração do diagrama de classes para
estimativas para construção de sistemas. Esta vídeo-aula apresenta a técnica de Análise o sistema de locadora de veículos. Em particular, são elaboradas as classes identificadas
de Pontos de Função com o objetivo de dimensionar o tamanho de aplicações a serem no diagrama de classes.
construídas ou mantidas, auxiliando no processo de estimativa de desenvolvimento. 05 – Projeto
Título: Introdução à Construção de Diagrama de Classes da UML – Parte 9
02 – Projeto
Autor: Rodrigo Oliveira Spínola
Título: Controle de versões com Subclipse
Mini-Resumo: Esta vídeo aula dá continuidade à elaboração do diagrama de classes para
Autor: Marco Antônio Pereira Araújo
o sistema de locadora de veículos. Em particular, os atributos identificados são atribuídos
Mini-Resumo: A utilização de sistemas de controle de versão é uma boa prática no
às suas respectivas classes e acrescentados ao diagrama de classes.
gerenciamento de projetos de software, principalmente em seu processo de manutenção.
Esta vídeo-aula apresenta a ferramenta SubVersion (SVN) para gerenciamento de versões 06 – Projeto
através do plug-in Subclipse, para a IDE Eclipse. Título: Introdução à Construção de Diagrama de Classes da UML – Parte 10
Autor: Rodrigo Oliveira Spínola
03 – Projeto Mini-Resumo: Esta vídeo aula dá continuidade à elaboração do diagrama de classes para
Título: Persistência de Objetos com o SGBDOO Jade o sistema de locadora de veículos. Em particular, são identificadas as operações que deverão
Autor: Marco Antônio Pereira Araújo estar contempladas no diagrama de classes.
Mini-Resumo: A persistência é sempre um fator de discussão quando se trata de desen-
07 – Projeto
volvimento orientado a objetos. Dentre as diversas alternativas, sistemas de gerenciamento
Título: Introdução à Construção de Diagrama de Classes da UML – Parte 11
de bancos de dados orientados a objetos podem ser uma alternativa mais natural para este
Autor: Rodrigo Oliveira Spínola
processo. Esta vídeo-aula apresenta o Jade, um SGBDOO para persistência de objetos, com
Mini-Resumo: Esta vídeo aula dá continuidade à elaboração do diagrama de classes para
o objetivo de demonstrar este tipo de persistência. o sistema de locadora de veículos. Em particular, as operações identificadas na aula anterior
são atribuídas às suas respectivas classes e são acrescentadas ao diagrama de classes.

Atendimento ao Leitor
A DevMedia conta com um departamento exclusivo para o atendi-
ÍNDICE
mento ao leitor. Se você tiver algum problema no recebimento do
seu exemplar ou precisar de algum esclarecimento sobre assinaturas, 8 – Planejamento Ágil de Projetos
exemplares anteriores, endereço de bancas de jornal, entre outros, Dairton Bassi
entre em contato com:
Carmelita Mulin – Atendimento ao Leitor 14 – Desenvolvimento de Software Centrado em Arquitetura
www.devmedia.com.br/central/default.asp
(21) 2220-5375 Vinicius Lourenço de Sousa
Kaline Dolabella
Gerente de Marketing e Atendimento 20 – Conceitos de orientação a objetos e UML
kalined@terra.com.br
(21) 2220-5375 Ana Cristina Melo

26 – Confiabilidade de Software
Publicidade Antonio Mendes da Silva Filho
Para informações sobre veiculação de anúncio na revista ou no site entre
em contato com: 32 – Maturidade em Gerenciamento de Projetos
Kaline Dolabella
Luciana Leal ; Cristine Gusmão; Hermano Perrelli
publicidade@devmedia.com.br
38 – Avaliação Independente de Garantia da Qualidade
Fale com o Editor! É muito importante para a equipe saber o que você está Isabel Albertuni; Josiane Brietzke Porto
achando da revista: que tipo de artigo você gostaria de ler, que artigo você
mais gostou e qual artigo você menos gostou. Fique a vontade para entrar 44 – Testes de Mutação com o plug-in MuClipse
em contato com os editores e dar a sua sugestão!
Se você estiver interessado em publicar um artigo na revista ou no site SQL Ma- Victor Vidigal Ribeiro; Marco Antônio Pereira Araújo
gazine, entre em contato com os editores, informando o título e mini-resumo
do tema que você gostaria de publicar: 52 – Testes Automatizados de Software em Web Services
Rodrigo Oliveira Spínola - Colaborador Marcelo Santos Daibert; Jenifer Vieira Toledo; Marco Antônio Pereira Araújo
editor@sqlmagazine.com.br
Planejamento Ágil de Projetos

De que se trata o artigo:


Neste artigo veremos os principais
problemas associados ao planejamento
e à gestão de projetos de software. Em

N
os últimos anos, o uso de méto- seguida, mostraremos como os planos
dos ágeis tem chamado a atenção são tratados por Metodologias Ágeis de
da indústria de software em todo desenvolvimento de software.
o mundo. Essas metodologias têm ganha-
do destaque e gerado muita discussão na Para que serve:
comunidade de Engenharia de Software. O planejamento e o desenvolvimento
Graças a isso, muitas empresas estão se de um software sob o paradigma ágil
interessando em entender como os mé- oferecem mais flexibilidade do que os
todos ágeis funcionam e se eles poderão modelos tradicionais para a condução
ajudá-las a resolver seus problemas com de projetos de software que possuem
desenvolvimento de software ou mesmo incerteza ou instabilidade.
melhorar a sua produtividade.
Em que situação o tema útil:
Esta é a primeira parte de uma série sobre
Além de ser um modelo que permite
planejamento e gestão ágil de projetos. Ao
a criação de planos flexíveis, as técnicas
longo da série repensaremos alguns dos
conceitos largamente usados pela indús- ágeis evitam desperdícios de tempo e
tria de software e apresentaremos soluções esforços, pois focam em alcançar rapida-
Dairton Bassi baseadas em métodos ágeis que visam a mente meios de validar as características
dbassi@gmail.com melhorar o desempenho das equipes e do produto em desenvolvimento e de
Mestre em Engenharia de Software com foco em avaliar a evolução do projeto.
simplificar o gerenciamento do projeto.
Métodos Ágeis pelo IME-USP. Bacharel em Ciência
da Computação pelo IME-USP. Membro-fundador Neste artigo, veremos os impactos
da AgilCoop e criador do Encontro Ágil (www.en- causados por estratégias e processos
controagil.com.br). Especialista em implantação inadequados para o desenvolvimento de Planos, Processos e Fracassos
de metodologias ágeis. Ministra cursos e palestras software e como as metodologias ágeis Tradicionalmente, durante o planeja-
sobre métodos ágeis. Atuou como programador, tratam o planejamento e os requisitos de mento de desenvolvimento de software,
líder de desenvolvimento e consultor em diversas
instituições do setor público e privado. um projeto de software. são definidos prazos, custos, recursos

8 Engenharia de Software Magazine – Planejamento Ágil de Projetos


M É TO D O S ÁG E I S

e o escopo do projeto. Esses dados são


usados como base por outras áreas da
empresa para, por exemplo, organizar e
encadear ações comerciais e de marketing.
Quando o desenvolvimento do software
não cumpre o plano inicial, uma cadeia
de eventos pode ser prejudicada e isso se
torna motivo de estresse e pressão sobre a
equipe de desenvolvimento. O clima tenso
instaura-se e começa a busca por culpados.
A posição mais cômoda é culpar a equipe
de desenvolvimento pela falha no cumpri-
mento do planejado. Outra possibilidade
é assumir que o plano não era adequado,
portanto inviável de ser cumprido. Cer-
tamente existem os dois casos, mas para
entender mais sobre esse problema, vamos
olhar para alguns números da indústria
de software.
Historicamente, inúmeros estudos apon-
tam problemas nos resultados de projetos Figura 1. Atividades relacionadas ao planejamento no modelo cascata.
de software. Em 1992, Albert Lederer e
to de software. A opção que apresentamos de análise e planos no início do projeto
Jayesh Prasad relataram que 66,7% dos
é a abordagem usada por métodos ágeis. e depois praticam desenvolvimento ite-
projetos de software ultrapassam signifi-
A seguir, vamos discutir a maneira usada rativo em busca das metas estabelecidas
cativamente os seus custos [1]. Em 1994,
pela indústria de software para fazer no início.
o Standish Group analisou 3682 projetos e
planejamentos. Depois, vamos apontar Criar um plano completo e detalhado no
percebeu que 83,2% foram cancelados ou
os cenários onde métodos ágeis podem início do projeto implica fazer previsões
entregues excedendo o prazo ou o custo
ser usados, e então, apresentar o planeja- e tomar decisões. Quanto mais cedo as
[2]. Em 2002, Jim Jonhson apontou que
mento sob a perspectiva ágil. decisões são tomadas, mais premissas
64% das funcionalidades implementadas
precisam ser assumidas, o que aumenta a
são raramente ou nunca utilizadas [3]. Em
Os Problemas Tradicionais chance da decisão ser inadequada. Como
2006, o PMI Brasil divulgou um relatório as análises e previsões são feitas antes
Durante algumas décadas, a supremacia
no qual o não-cumprimento dos prazos do modelo Cascata proposto por Winston do desenvolvimento, elas se baseiam em
foi um dos principais problemas no ge- Royce instituiu uma clara separação entre alguns dados, na experiência dos profis-
renciamento de projetos. No relatório de planejamento e execução [5]. Na segunda sionais envolvidos e em premissas, que
2007, problemas com os prazos foram ve- metade da década de 80, Berry Boehm associam incerteza à decisão e, conse-
rificados em 82% das empresas analisadas propôs o modelo Espiral [6] com duas qüentemente, contribuem para aumentar
e, problemas para cumprir o custo estão grandes inovações para a indústria de as chances do plano falhar. Vimos muitos
presentes em 66% delas. Além desses, os software: 1) o desenvolvimento iterativo dados que indicam as altíssimas chances
outros principais problemas apontados e, 2) a inclusão de uma etapa de análise. de planos criados desta forma estarem
foram referentes à comunicação e a mu- Essas inovações permitiram que avalia- equivocados. Portanto, ter um plano sim-
danças no escopo do projeto [4]. ções pudessem ser feitas periodicamente plesmente por tê-lo é, no mínimo, desper-
Esses estudos mostram a baixa exatidão e que o software e o planejamento fos- dício de esforço, tempo e recursos.
entre o planejado e o realizado. Isso indica sem criados em ciclos. Nas Figuras 1 e 2 A grande questão é que, por definição,
o quão imatura ainda é a indústria de sof- vemos em amarelo as etapas onde estão os planos são feitos no início do projeto
tware e quão limitada é a sua capacidade concentradas as atividades relacionadas e, justamente por isso, são chamados de
de fazer previsões. A enorme falta de ao planejamento. planos. Porém, este é o momento em que
realismo nas estimativas, o baixo senso de Muitas empresas ainda trabalham com menos se sabe a respeito do produto e
prioridade, os gastos muito além do previs- análises e estimativas concentradas no sobre a sua criação. Por outro lado, no
to e o pouco alinhamento com os interesses início do projeto, a exemplo do modelo fim do projeto, é possível olhar para trás e
de negócio somam evidências que indicam cascata, usando o resultado desse trabalho perceber que muito foi aprendido. Pode-se
que as estratégias de planejamento e os durante todo o projeto, sem considerar a entender quais foram as melhores escolhas
processos de desenvolvimento são incom- possibilidade de rever as estimativas du- e perceber que as dificuldades do início
patíveis com a realidade dos projetos. rante a implementação. Outras empresas foram completamente diferentes das do
Pensando nisso, faz sentido rever a forma usam um modelo que mistura o cascata final. Todo este conhecimento acaba não
de planejar os projetos de desenvolvimen- com o espiral. Estas realizam uma fase sendo usado a favor do projeto.

Edição 08 – Engenharia de Software Magazine 9


Quem precisa de agilidade?
Se os projetos com os quais você lida têm
o escopo fechado e muito bem definido,
não possuem requisitos em evolução e
não precisam que clientes ou usuários
forneçam feedback durante o desenvol-
vimento para definir ou aprimorar as
funcionalidades, então, talvez você não
precise de um método ágil. Caso con-
trário, métodos ágeis poderão ajudá-lo a
melhorar seus resultados.
Tente se lembrar... quantos projetos você
conseguiu terminar sem que nenhum
requisito mudasse? Quando mudou, qual
foi o impacto de todas essas mudanças?
Pense também quanto tempo foi gasto
com identificação de todos os requisitos,
análise e planejamento antes da primeira
versão ficar pronta. Agora, seja crítico e
questione-se sobre o uso desse tempo. Será
que ele foi empregado da melhor maneira
possível?
Figura 2. Atividades relacionadas ao planejamento no modelo espiral.
Se o tempo usado para levantar todos
os requisitos mais o tempo gasto com as
Se o plano puder considerar o conheci- Primeiro, o que é agilidade? mudanças não previstas fosse usado para
mento que a equipe adquiriu durante a A associação de agilidade com veloci- produzir uma solução simples, a sua em-
implementação, ele poderá ter estimativas presa ou equipe teria alguma vantagem?
dade é bastante comum. No contexto do
mais realistas e poderá ordenar suas prio- Se você disse não, o que aconteceria se um
desenvolvimento de software, agilidade
ridades de acordo com as necessidades
é muito mais do que isso. Dizer que concorrente seu usasse essa estratégia e
do momento.
desenvolvimento ágil é aquele que en- oferecesse para seus clientes uma solução
A proposta do planejamento ágil é
trega rápido é uma interpretação muito simples, mas que atendesse as necessida-
aproveitar ao máximo o conhecimento
simplista e incorreta, pois as definições des deles, vários meses antes de você. E
adquirido durante o projeto. Para isso,
da metodologia ágil estão tão fortemente enquanto você desenvolve o seu produto
esta proposta utiliza um modelo que seg-
entrelaçadas que não faz sentido pensar completo, ele aprimorasse o dele e am-
menta o planejamento e prevê revisões
só em velocidade. pliasse a aceitação no mercado?
constantemente. Dessa forma, o plano
Para não criar mais softwares que são
pode ser sempre baseado em informações O modelo ágil vai além das questões
lembrados por seus números negativos, é
atualizadas. técnicas. Mais do que o gerenciamento
importante escolher a estratégia olhando
Usar informações atualizadas é de técnico do projeto, ele inclui o relacio-
para o mercado e atento aos concorrentes.
fato preciso, pois as necessidades do namento entre as pessoas. Desenvolver
Com a velocidade com que as tecnologias
mercado evoluem cada vez mais rápido. software com agilidade inclui considerar
evoluem e a grande competitividade do
Este cenário dificulta a criação de planos também as prioridades de negócio e os
mercado, faz-se necessário que as idéias
completos e detalhados, e os meses que fatores humanos para chegar rapidamente
separam a idealização de um produto sejam revistas e aprimoradas. Neste ce-
a soluções de qualidade que atendam as nário, onde demandas surgem e mudam
da sua concepção criam espaço para que
necessidades do cliente. com freqüência, as empresas que qui-
os requisitos sejam mais bem definidos e
Para atingir esse resultado, há um con- serem se manter em destaque precisam
compreendidos.
junto de métodos ágeis de desenvolvimen- desenvolver a capacidade de adaptação.
Como nem todas as idéias e soluções
to de software que seguem os valores e os Para conseguir isso, o primeiro passo é ter
vêm de uma vez é interessante aproveitar
aquelas que surgem no decorrer do pro- princípios do Manifesto Ágil [7]. Dentre ciência de que mudanças acontecerão, pois
jeto. Métodos ágeis de desenvolvimento esses métodos, a Programação Extrema elas são inerentes a projetos de software,
permitem que mudanças e novos requi- e o Scrum são os mais difundidos, no principalmente os que envolvem inova-
sitos sejam incorporados mesmo depois entanto, existem outros. Alguns exemplos ção. Aceitar este fato é o caminho para
de iniciada a fase de implementação. Ao são os métodos Crystal, Lean Software De- acabar com as lamentações toda vez que
mesmo tempo, métodos ágeis impõem um velopment, Feature Driven Development um cliente solicita uma mudança de requi-
limite que impede instabilidade excessiva (FDD), DSDM e o Adaptative Software sitos. Tratá-las como problemas faz com
no projeto. Development [8]. que se tornem problemas. Se as mudanças

10 Engenharia de Software Magazine – Planejamento Ágil de Projetos


M É TO D O S ÁG E I S

lidades. A partir disso, chega-se à primeira


estimativa de tamanho do projeto;
• O planejamento da release foca na
definição de uma versão que possa ser en-
tregue aos usuários. Neste nível, o principal
objetivo é identificar grupos mínimos de
funcionalidades que agreguem o máximo
de valor ao produto e o tornem útil o sufi-
ciente para ser usado por usuários finais.
Para isso, a equipe técnica e a equipe de
negócios trabalham juntas. A equipe de ne-
gócios identifica necessidades dos clientes e
usuários. A partir delas define as priorida-
des e esclarece dúvidas sobre o comporta-
mento ideal do software. A equipe técnica
atualiza suas estimativas de tamanho e
dificuldade de cada funcionalidade com
base no conhecimento que adquiriu nas re-
leases anteriores. Essas estimativas ajudam a
equipe de negócios a tomar decisões sobre
as prioridades do projeto;
• O planejamento da iteração preocupa-
Figura 3. Níveis de planejamento.
se em criar um subgrupo de funcionali-
estiverem previstas e houver regras para sem saber ou tentar prever todos os deta- dades da release para ser implementado
absorvê-las, elas poderão acontecer natu- lhes no início. Para chegar aos detalhes, o no período de poucas semanas. Os pla-
ralmente sem prejudicar o projeto. processo de planejamento é segmentado nejamentos das iterações servem como
em vários níveis distribuídos pelo projeto, pontos de controle do plano da release.
Planos e Projetos Ágeis assim, à medida que a implementação Neste nível, a equipe quebra as funcio-
Quando falamos em metodologias ágeis, acontece, pequenas etapas de planeja- nalidades selecionadas em tarefas para
temos que considerar que o software é de- mento chegarão ao nível necessário de implementação;
senvolvido por pessoas e não por um pro- detalhes. A Figura 3 apresenta os níveis • O planejamento do dia acontece com
cesso, que as prioridades devem atender de planejamento [9]. uma reunião de poucos minutos da qual
as necessidades de negócio e ter ciência de O papel e os objetivos de cada nível de toda a equipe participa. Cada membro
que existe incerteza nas estimativas. Itera- planejamento são os seguintes: atualiza os outros sobre as funcionalida-
tivamente, a arquitetura, a modelagem e • O planejamento estratégico geralmen- des que concluiu, sobre seus avanços e
cada método do software são concebidos te fica fora do escopo de desenvolvimento sobre o que pretende fazer naquele dia
e aprimorados. O mesmo acontece com o de software. Nele são definidas as metas de trabalho. Se problemas ou grandes
planejamento e com as estimativas. da empresa, posicionamento de mercado dificuldades estiverem acontecendo, esta é
Modelos ágeis consideram que mudan- e os tipos de produtos necessários para a oportunidade de apresentá-los para que
ças poderão acontecer ao invés de tentar atingir esses objetivos. Todas as áreas da possam ser tratados rapidamente. Além
prever e controlar todas as variáveis. Essa empresa devem trabalhar unidas para que de servir como micro-planejamento para
estratégia evita gastar energia demais ela alcance os seus objetivos estratégicos; os desenvolvedores, essa reunião é impor-
tentando fazer um plano perfeito e mi- • O planejamento do produto define as tante para sincronizar a equipe e manter
nucioso que cerca todas as possibilidades principais características da solução, avalia um nível elevado de comunicação.
[8]. Portanto, pensar em planejamento a viabilidade técnica, define a equipe, sele- Na Figura 4, várias iterações de cada tipo
ágil significa começar com a visão dos ciona as tecnologias e produz uma estima- de planejamento podem ser visualizadas.
objetivos de alto nível e seguir em frente tiva de alto nível do tamanho das funciona- Neste modelo, duas variáveis estão inver-

Figura 4. Exemplo de iterações de planejamento em vários níveis.

Edição 08 – Engenharia de Software Magazine 11


samente relacionadas: a extensão do plano a flexibilidade é outro grande benefício, pressivos. Uma forma fácil de começar a
e o seu nível de detalhe. O tamanho das pois é possível acomodar mudanças ou direcionar o seu esquema de trabalho para
elipses representa a extensão e a coloração incluir novas funcionalidades com fa- um modelo ágil é reduzir o tamanho dos
avermelhada, a quantidade de detalhes cilidade. A equipe de desenvolvimento ciclos de desenvolvimento. Ciclos com-
que o plano contém. Planos de longo pra- pode analisar e estimar novas requisições pletos de poucas semanas permitem que
zo concentram-se nos grandes objetivos para que a equipe de negócios defina as os planos sejam revistos freqüentemente.
e contêm pouco detalhamento técnico e suas prioridades. Novas requisições de No próximo artigo desta série vamos
operacional. Os detalhes são delegados alta prioridade, conforme o seu impacto focar em estimativas. Mostraremos técni-
para os níveis inferiores do planejamento. no projeto, podem entrar no plano da cas ágeis para estimar e explicaremos as
Os planos de curto prazo, por sua vez, próxima iteração ou release ou, podem diferenças entre estimativas de tamanho
chegam ao nível das tarefas de desenvolvi- ser trocadas por funcionalidades menos e estimativas de duração, além da impor-
mento e detalhes de implementação. importantes da release atual. tância de mantê-las separadas
A separação em níveis permite distribuir
melhor as tarefas de planejamento entre Conclusões
todos os envolvidos com o projeto. Assim, Métodos ágeis podem trazer ganhos ex-
ao invés do gerente criar um cronograma pressivos de produtividade e qualidade,
Dê seu feedback sobre esta edição!
de implementação para seus desenvol- porém, não é trivial chegar até eles. Usar eu
Feedback
A Engenharia de Software Magazine

s
vedores, os próprios desenvolvedores um método ágil exige uma mudança de


tem que ser feita ao seu gosto.

sobre e
podem planejar a implementação de uma paradigma, e, portanto, de valores que
Para isso, precisamos saber o que você,
iteração considerando as questões técnicas a equipe e a empresa precisam estar dis-

s
ta
leitor, acha da revista! edição

que só eles conhecem. Enquanto isso, o postas a fazer.


Dê seu voto sobre este artigo, através do link:
gerente pode concentrar a sua atenção em Planejar em níveis faz parte da mudança
pontos mais amplos do projeto. de paradigma, por isso requer experiência www.devmedia.com.br/esmag/feedback
Com o planejamento em vários níveis para chegar rapidamente a resultados ex-

Referências

[1] Albert L. Lederer and Jayesh Prasad. Nine management guidelines for better cost estimating. Commun. ACM, 35(2):51–59, 1992.
[2] Standish Group. The CHAOS Report, 1994. http://www.standishgroup.com/sample\_research/chaos\_1994\_1.php.
[3] Jim Johnson. ROI, it‘s your job. In Keynote Speech at 3rd International Conference on eXtreme Programming and Agile Processes in Software Engineering (XP’2002), May 2002.
[4] PMI Chapters Brasileiros. Estudo de benchmarking em gerenciamento de projetos brasil. Technical report, www.pmi.org.br, 2007.
[5] W. W. Royce. Managing the development of large software systems: concepts and techniques. In ICSE ’87: Proceedings of the 9th international conference on Software Engineering, pages 328–338, Los
Alamitos, CA, USA, 1987. IEEE Computer Society Press.
[6] Barry Boehm. A spiral model of software development and enhancement. ACM SIGSOFT Software Engineering Notes, 11(4):14–24, 1986.
[7] Manifesto for Agile Software Development, 2001, http://www.agilemanifesto.org.
[8] Dairton Bassi. Experiências com desenvolvimento Ágil. Master’s thesis,
Instituto de Matemática e Estatística da Universidade de São Paulo -
IME/USP, 2008.
[9] Mike Cohn. Agile Estimating and Planning. Prentice Hall, 2006.

12 Engenharia de Software Magazine – Planejamento Ágil de Projetos


Desenvolvimento de Software Centrado
em Arquitetura

De que se trata o artigo:


A importância de desenvolver uma
arquitetura de software robusta e que
funcione como base em reuso em larga
escala, e suas visões arquiteturais para

A
tualmente, o cenário de desenvol-
vimento de software tem se mos- demonstrar a compreensão e a organi-
trado em uma tentativa fervorosa zação do software para os envolvidos
de aproximar a parte tecnológica da parte do projeto.
de negócio. Isto se deve à grande deman- Para que serve:
da dos sistemas estarem cada vez mais Fornecer um meio de tornar partes do
integrados e serem flexíveis às mudanças software reutilizável, flexíveis a ponto
no negócio das empresas em geral. Cada de responder as mudanças do software
vez mais ouvimos falar sobre sistemas rapidamente e encapsular as dependên-
construídos sob a ótica de disponibilizar cias do sistema. Também serve como
serviços corporativos e controlar o pro- forma de comunicação entre os envol-
cesso de negócio. Estou falando de SOA vidos do projeto, sejam eles gerentes,
Vinicius Lourenço de Sousa
(Arquitetura Orientada a Serviços) e BPM desenvolvedores ou clientes.
vinicius.lourenco.sousa@gmail.com
Atua no ramo de desenvolvimento de software (Gerenciamento de Processo de Negócio). Em que situação o tema é útil:
há mais de 10 anos, é autor de diversos artigos Estas duas siglas se tornaram obrigatórias Útil para o desenvolvimento de
publicados pelas revistas ClubeDelphi e SQL Ma-
no vocabulário de equipes de desenvolvi- software quando está se pensando em
gazine. É Graduado em Tecnologia da Informação
pela ABEU Faculdades Integradas e Pós-Graduado mento, gerentes de projetos e analistas de reuso, flexibilidade, escalabilidade e
em Análise, Projeto e Gerência de Sistemas pela áreas de negócio dos mais variados tipos quando queremos comunicar como está
PUC-RJ, IBM Certified: Especialista Rational de segmentos de mercado. a organização do software em termos de
Unified Process e instrutor de UML, Análise OO e
Com o uso de SOA e BPM, o desenvol- camadas, classes, componentes e etc.
Java. Atualmente trabalha na CPM Braxis como
Especialista nas áreas de arquitetura, especificação vimento de software não só alcançou um
de requisitos, levantamento e modelagem de novo nível como também teve que adotar mas legados para serem integrados com
processo de negócio e projetista de software novas estratégias para a construção do os novos sistemas e de reuso de regras de
em soluções com componentes de negócio, SOA
software. Dessa forma, foi possível obter negócios através dos componentes e servi-
e BPM. Mantém seu blog pessoal em http://
viniciuslourenco.wordpress.com. o máximo de reaproveitamento de siste- ços de negócios. Enfim, os sistemas estão

14 Engenharia de Software Magazine – Desenvolvimento de Software Centrado em Arquitetura


P R O J E TO

ficando cada vez mais aderentes ao negó- Arquitetura de Software podemos ter uma base corporativa onde
cio e respondendo de forma mais rápida Responsável pela integração entre a par- todos os projetos podem utilizar dessa
às mudanças exigidas pelo mercado. te de negócio e a parte tecnológica. É a re- arquitetura, ou seja, as complexidades
Entretanto, para se alcançar um nível de presentação das estruturas do sistema, na de TI estarão todas transparentes para os
desenvolvimento desse tipo, com reuso qual consistem componentes de software, clientes dessa arquitetura.
ao extremo e bastante flexibilidade, é as propriedades visíveis externamente • Melhorar a extensibilidade do sistema
preciso que a equipe de desenvolvimento desses componentes e o relacionamento Um sistema centrado em arquitetura tem
crie uma arquitetura adequada que possa entre eles. O perfil Arquiteto de Software como grande característica a capacidade
exatamente servir como pilar para o reuso tem como foco entender o modelo de de adicionar novos componentes e com
e flexibilidade às mudanças, ou seja, o negócio e transformá-lo em projeto de isso crescer de forma fácil e rápida sem
desenvolvimento deve ser centrado em software, isto é, pensar em integração das perder a coesão e o baixo acoplamento,
arquitetura. Neste artigo apresentaremos camadas, integração entre sistemas, reuso, mantendo a complexidade do sistema
as características do desenvolvimento componentização, procurando minimizar controlada.
de software centrado em arquitetura, os riscos tecnológicos. Em muitos casos, o • Encapsula as dependências do sis-
como suas práticas, benefícios e visões Arquiteto de Software e o Arquiteto de Siste- tema
arquiteturais de uma maneira ampla, sem mas podem ser a mesma pessoa. Encapsulando suas dependências, o
aprofundar muito na parte técnica. sistema torna-se muito menos acoplado,
Arquitetura de Negócio
Totalmente voltada para a parte de mais coeso e com isso com maior grau
O que é Desenvolvimento Centrado de reuso. Em resumo, o sistema terá uma
negócio da empresa. O perfil Arquiteto
em Arquitetura? de negócio tem como foco as seguintes compreensão bem melhor e em caso de
Um desenvolvimento de software cen- manutenção também será de extrema fa-
atividades:
trado em arquitetura não diz respeito cilidade as alterações sem os impactos que
• Avaliar a situação da organização onde
apenas ao código fonte da aplicação ou poderiam ocorrer com tudo acoplado.
os sistemas serão entregues;
qual linguagem de programação será uti-
• Entender os requisitos dos usuários,
lizada. Podemos dizer que a arquitetura Arquitetura em Camadas
suas estratégias e seus objetivos de ne-
é o “universo” em que o ciclo de vida do Uma das grandes características de uma
software vive, ou seja, em um desenvolvi- gócio;
boa arquitetura no desenvolvimento de
mento centrado em arquitetura teremos o • Facilitar a modelagem do processo de
software é a divisão da aplicação em
código que é o artefato mais primário, a negócio da organização; camadas. A divisão em camadas pode
divisão entre as camadas arquiteturais, a • Entender o lado técnico do conjunto proporcionar ao software um alto grau de
divisão entre os componentes de negócio, de soluções. escalabilidade, flexibilidade, alta coesão,
regras de integração entre as camadas, Em muitos casos o Arquiteto de Negócio e baixo acoplamento e com isso teremos
componentes e entre os sistemas (novos e o Analista de Negócio (ler Nota 1) podem reuso dos componentes do software. Na
legados). É importante ter em mente que ser a mesma pessoa. arquitetura das aplicações existem dois
a arquitetura de um sistema não serve tipos de camadas:
apenas para a codificação, mas também
Benefícios do Desenvolvimento Camada Física (Tier)
para o direcionamento de todo o desenvol- Centrado em Arquitetura Este tipo de camada é representado pela
vimento do software. Tanto que existem Abaixo veremos alguns benefícios que
parte física ou estrutural dos componentes
temos com o uso dessa abordagem:
tipos de arquitetura e perfis de arquitetos de infra-estrutura da arquitetura que vão
• É uma efetiva base para reuso em
diferenciados para cada foco e momento desde o hardware, o sistema operacional,
larga escala
do projeto, como apresentado abaixo. os serviços, até os servidores, isto é, são
Com uma arquitetura bem robusta,
Arquitetura de Sistemas os nós de processamento distribuídos no
estável e com interfaces bem definidas,
Responsável pela parte tecnológica. É a parque de TI da corporação. Ao longo dos
representação de um sistema na qual existe anos foram utilizadas diversas arquiteturas
um mapeamento de funcionalidades sobre da camada física, onde o intuito era criar
componentes de software e hardware, um Nota 1. Analista de negócio uma infra-estrutura capaz de suportar
mapeamento sobre arquitetura de hardwa- toda a complexidade (regras de negócio,
re e software, e interações humanas com O Analista de Negócio lidera e coordena o esforço componentes distribuídos, plataformas
esses componentes. Nesta arquitetura, o de modelagem de negócio da empresa do cliente. heterogêneas e etc.) que os sistemas tinham.
perfil Arquiteto de Sistemas além de conhecer Ele deve ser um facilitador e ter uma excelente Veja abaixo os tipos de arquiteturas com
profundamente a linguagem de programa- habilidade de comunicação, conhecimento do do- camadas físicas existentes:
ção, tem como foco a integração entre os mínio do negócio e estar preparado para avaliar a 2 Camadas
frameworks que o sistema utiliza, sejam situação da organização alvo onde o sistema será Arquitetura de 2 Camadas (também co-
eles já existentes no mercado ou criado pela entregue; entender os clientes e seus requisitos, nhecida como Cliente/Servidor) foi muito
própria equipe de desenvolvimento, e a suas estratégias e seus objetivos; e executar a análise utilizada, onde tínhamos o sistema sendo
utilização de qualquer solução tecnológica, de custo/benefício para cada mudança sugerida na executado no lado cliente com o executá-
como por exemplo: EJB, JPA, JAAS, Struts, organização alvo. vel da aplicação e regras de negócio e no
Spring, Corba e etc. lado servidor ficava o banco de dados que

Edição 08 – Engenharia de Software Magazine 15


que serve para organizar e separar as res-
ponsabilidades (separação de conceitos)
dos componentes internos de uma aplica-
ção. É muito importante dividir as aplica-
ções entre camadas lógicas, e estabelecer
regras de interações entre as camadas. Se
o código não está claramente separado en-
tre camadas, logo se tornará muito difícil
Figura 1. Arquitetura 2 camadas.
gerenciar mudanças no mesmo. Por existir
dentro da aplicação, as camadas lógicas
também existem dentro das camadas fí-
sicas e podem estar distribuídas por cada
nó de processamento. Veja na Figura 4 os
tipos de camadas lógicas existentes.
Na Figura 4 vemos quatro tipos de
camadas lógicas que são as camadas
usadas no Desenvolvimento Dirigido ao
Figura 2. Arquitetura 3 camadas de um sistema Web. Domínio (DDD) criado por Eric Evans no
livro Projeto Dirigido ao Domínio. Essas
camadas devem ser independentes o
máximo possível, pois como se trata de
camadas lógicas, cada uma pode estar em
máquinas diferentes, isto é, em camadas
físicas diferentes. Em algumas literatu-
ras as camadas lógicas podem variar de
nome e até mesmo de quantidade, como
apresentado no livro Padrões de Arquitetura
de Aplicações Corporativas (Martin Fowler),
onde a camada de aplicação não existe.
Não entrarei em detalhes do por que
das diferenças entre os autores, mas reco-
mendo a leitura desses dois livros que são
excelentes fontes de estudo.
Apresentação
Esta camada é responsável por conter
as interfaces dos usuários e as regras
Figura 3. Arquitetura de N camadas. inerentes a qualquer componente visual,
regras de validação de input de dados e de
também podia conter regras de negócio de seus componentes internos. Nesta ar- formatação de dados. Em uma aplicação
através de stored procedures, triggers e quitetura temos como nó de processamen- que disponibilize serviços Web (Web Ser-
functions. Veja a Figura 1. to o cliente, o servidor de aplicação onde vices), esses serviços também pertencerão
3 Camadas ficam as regras de negócio, um servidor à camada de Apresentação, pois eles são
Arquitetura utilizada para resolver Web contendo as páginas Web, um servi- considerados interfaces entre sistemas. A
problemas da arquitetura de 2 camadas dor de banco de dados e outros servidores
como, por exemplo, a de regras de negócio e/ou serviços como, por exemplo, serviços
duplicadas. Entre o lado cliente e o lado de e-mail, firewall, acesso ao mainframe e
servidor (banco de dados) entrou um componentes distribuídos por toda a rede
servidor de aplicação onde ficam todas corporativa. Arquitetura de N camadas é
as regras de negócio compartilhadas para amplamente utilizada hoje em dia, pois
os clientes. Esse tipo de arquitetura hoje nas grandes corporações sempre existe
em dia é muito utilizado em sistemas integração entre sistemas/componentes,
Web, onde a camada intermediária pode servidores de bancos replicados e vários
ser representada por um container Web serviços que estão inseridos no parque de
contendo um servlet no caso de sistemas TI da corporação e que são utilizados pelas
em Java. Veja a Figura 2. aplicações. Veja a Figura 3.
N Camadas Camada Lógica (Layer)
Arquitetura utilizada para aplicações Este tipo de camada é conhecido como
que exigem um alto grau de distribuição um padrão arquitetural (Padrão Layer) Figura 4. Camadas lógicas arquiteturais.

16 Engenharia de Software Magazine – Desenvolvimento de Software Centrado em Arquitetura


P R O J E TO

Figura 5. Transformação de estrutura de dados em objetos na camada de Aplicação.

Acesso a Dados (Infra-Estrutura)


Esta camada é responsável por conter
toda a lógica para acesso aos dados, sejam
eles via banco de dados, arquivos textos,
XML. É através desta camada que con-
trolamos transações de banco de dados,
executamos os SQL’s. Esta camada tam-
bém é responsável pelas integrações com
outros sistemas, componentes e serviços,
por exemplo, acessar uma DLL, um main-
frame, um EJB ou Web Service de outra
área da corporação ou de um parceiro
do cliente ou até mesmo um servidor de
e-mail ou de FTP.

Visões Arquiteturais
Quando desenvolvemos software pen-
sando em arquitetura devemos sempre
Figura 6. Envio de dados para plataformas diferentes. estar atentos para as visões que nossa ar-
quitetura oferece para que o sistema possa
camada de Apresentação envia e recebe Domínio
ser compreendido com maior exatidão.
dados da camada de Aplicação. Esta camada é responsável por conter in-
Uma visão arquitetural é uma janela para
Aplicação formações sobre o domínio do negócio do
o sistema em uma perspectiva particular
Esta camada é responsável por disponi- sistema, o estado dos objetos de negócio e que serve como comunicação entre os en-
bilizar os dados para a camada de Apre- suas regras, ou seja, o coração do negócio volvidos no sistema e é expressa em texto
sentação e enviar os dados para a camada do software. Nesta camada é onde criamos e diagramas UML. As visões arquiteturais
de Domínio. A camada de Aplicação tam- nossos componentes de negócios através são muito utilizadas no processo unificado
bém pode fazer alguns tratamentos nos de decomposição funcional para encapsu- de desenvolvimento de software, mais
dados caso seja necessário. Podemos citar lar todas as regras de negócio. especificamente pelo Rational Unified
dois exemplos importantes da camada de
Aplicação:
1. Efetuar a transformação dos dados
recebidos da camada de Apresentação que
em aplicações distribuídas vem na forma
de estruturas “desorganizadas” (os cha-
mados Transfer Objects) para os objetos
de domínio que representam o negócio
da aplicação. Veja a Figura 5.
2. Em aplicações onde os dados devem
ser disponibilizados em plataformas hete-
rogêneas ao mesmo tempo, como na Web e
no Celular. Sabemos que nos dispositivos
móveis existe uma limitação de dados que
podem ser trafegados, portanto, a camada
de Aplicação tem como objetivo filtrar a
quantidade de dados enviados por causa
do limite de tráfego que a plataforma
suporta. Veja a Figura 6. Figura 7. Visões arquiteturais do Rational Unified Process.

Edição 08 – Engenharia de Software Magazine 17


Visão de Processo
É responsável por mapear os processos
e as threads, suas responsabilidades,
colaborações e a alocação dos elementos
da visão lógica (camadas, subsistemas,
classes, etc.) neles (Figura 9).
Visão de Deployment
É responsável pelo deployment (instala-
ção) físico dos processos e componentes
para os nós de processamentos e a confi-
guração física da rede entre os nós. É nesta
visão que mapeamos como a arquitetura
estará na camada física (tier) e como cada
nó de processamento estará configurado
(Figura 10).
Figura 8. Visão Lógica organizada em camadas, subsistemas e interfaces. Na Figura 10 temos um exemplo de
configuração física de deployment de um
sistema feito em Java EE. As caixinhas
representam os nós de processamento e
os componentes que serão executados.
Temos como exemplo um nó de proces-
samento chamado Application Server que
é o servidor de aplicação para sistemas em
Java. Esse nó possui dois atributos que são
o nome (IBM Websphere 5.1) e o sistema
operacional onde ele está sendo executado
(Windows Server 2003). Esses atributos
são informações importantes, pois através
deles podemos conhecer as configurações
do software tanto para instalação quanto
para manutenção. O mesmo vale para os
nós de processamento SGBD, FTP Server e
Mainframe. Dentro do nó de processamen-
Figura 9. Visão de Processo com a organização de um sistema bancário. to Application Server existem outros nós
que representam camadas do servidor de
Process. No RUP, as visões arquiteturais subsistemas, pacotes, frameworks, classes aplicação ou arquivos do sistema.
são conhecidas por Modelo de Visão Arqui- e interfaces mais importantes. Mostra a O servidor de aplicação é dividido em
tetural 4+1, sendo todas elas dirigidas pela realização dos cenários dos casos de uso Web Container que é onde ficam as pá-
visão de caso de uso. As visões arquite- que ilustram aspectos chaves do sistema ginas HTML, JSP ou aplicativos clientes
turais ficam documentadas no artefato (Figura 8). como Web Services e JOB Schedules, e em
Documento de Arquitetura de Software. Veja Na Figura 8 podemos ver o exemplo de EJB Container que é onde ficam os EJB’s do
a Figura 7. um sistema web feito na tecnologia Java sistema com todas as interfaces clientes e
Como podemos perceber na Figura 7, as EE organizado em camadas lógicas repre- suas implementações. Vemos que no Web
visões arquiteturais Lógica, de Processo, sentado pelos pacotes da UML. Essa ar- Container existe o atributo que é o nome
de Implementação e Deployment são quitetura é uma arquitetura padrão onde do software que será executado (Quartz).
dirigidas pela visão de caso de uso que o sistema está divido nas camadas View O Quartz irá executar um EJB através da
contem toda a solução sistêmica do sof- (contendo as páginas web), Control (con- sua interface cliente (localizado no arquivo
tware (veja os artigos Desenvolvimento tendo os actions no caso do struts), Model sistema-ejbCliente.jar) para a bean do EJB
de Software Dirigido por Caso de Uso (contendo as classes de negócio, classes (localizado no arquivo sistema-ejb.jar) que
nas edições 2, 3 e 4 da Engenharia de Sof- de persistência e etc.), EJB Component é a implementação da interface cliente do
tware Magazine). Porém, existem outras que é uma subcamada da camada Model EJB. Neste diagrama também é importante
visões que não são muito utilizadas na que representa o uso de EJB no sistema dizermos o protocolo de comunicação
maioria dos projetos, que são a visão de e, por fim, a camada Infra, onde ficam as entre os nós de processamento, por exem-
dados, visão de segurança e a visão de classes genéricas, frameworks utilizados plo, o nó Application Server se comunica
desenvolvimento. Veja abaixo a descrição e etc. Como essa é uma organização con- com o nó SGBD através do JDBC e com
de cada visão. ceitual não nos preocupamos nos detalhes o nó Mainframe através do CICS, que é
Visão Lógica técnicos como nome dos pacotes, nome de um software para execução de serviços
É responsável pela organização concei- classes e etc. e sim na responsabilidade de (COBOL) feitos na plataforma alta. Outro
tual do software em termos de camadas, cada camada e suas integrações. recurso interessante é que podemos dizer

18 Engenharia de Software Magazine – Desenvolvimento de Software Centrado em Arquitetura


P R O J E TO

o que está trafegando nesta comunicação contribuir nas organizações em termos de


Links
entre os nós de processamento, como por formar uma grande base de reuso corpora-
exemplo, entre o FTP Server e o Application tivo para os vários projetos de software. RUP: Rational Unified Process 7.0
Server está trafegando pela rede um arqui- Vimos também que através das camadas http://www-306.ibm.com/software/awdtools/rup/
vo compactado chamado arquivo.zip. arquiteturais podemos dividir o software
Visão de Dados tanto fisicamente quanto logicamente por
É responsável pela visão abrangente questões de desempenho, organização, Bibliografia
dos fluxos dos dados, schemas dos dados reuso e etc. Vimos que a arquitetura nos
Padrões de Arquitetura de Aplicações Corporativas – Martin
persistentes, mecanismos de mapeamen- oferece várias visões que servem para Fowler
to dos objetos de negócio para dados de demonstrarmos uma determinada parte Domain Driven Design – Eric Evans
persistência (usualmente em bancos rela- do software em termos de configuração,
Utilizando UML e Padrões – Larman, Craig
cionais), stored procedures e triggers. instalação, organização e componenti-
Visão de Segurança zação como uma forma de comunicação
É responsável pela visão abrangente entre os usuários, equipe de desenvolvi- Dê seu feedback sobre esta edição!
dos schemas de segurança e os pontos mento, equipe de infra-estrutura e demais Feedback
eu
dentro da arquitetura na qual a segurança A Engenharia de Software Magazine

s
envolvidos no projeto para entendermos


é aplicada, tais como autenticação HTTP, tem que ser feita ao seu gosto.

sobre e
o software sem ambigüidades. O desen-
autenticação de banco de dados, autenti- Para isso, precisamos saber o que você,
volvimento de software centrado em ar-

s
ta
leitor, acha da revista! edição
cação de usuários e outros. quitetura tem muito mais a ser discutido,
Visão de Implementação porém isso ficará para outros artigos Dê seu voto sobre este artigo, através do link:
É responsável pelo modelo de imple- www.devmedia.com.br/esmag/feedback
mentação que diferente dos outros mode-
los que possuem diagramas e/ou textos, é
o próprio código fonte e seus executáveis.
Neste modelo todo o sistema é organizado
para identificarmos sua estrutura, por
exemplo: pacotes java, componentes, ar-
quivos JAR e EAR e etc. (Figura 11).
Na Figura 11 vemos os componentes que
são acionados quando um Caixa Eletrôni-
co, que também é um componente, é utili-
zado. Temos o componente que valida se
o cartão do banco é válido, temos o leitor
de cartões que irá ler os dados de agência,
conta e dados pessoais do cliente a partir
do próprio cartão e temos o componente
que é o dispensador de dinheiro para
quando o cliente for efetuar um saque.
Visão de Desenvolvimento
É responsável por resumir informações Figura 10. Visão de Deployment.
aos desenvolvedores para que eles possam
conhecer as configurações do ambiente
de desenvolvimento. Por exemplo, como
todos os arquivos estão organizados em
termos de diretórios e por quê? Como
efetuar um build e executar os testes au-
tomatizados e qual o controle de versão
utilizado.
Visão de Caso de Uso
Além de dirigir quase todas as demais
visões, essa visão é responsável por ma-
pear todos os casos de uso arquitetural-
mente significantes e seus requisitos não
funcionais.

Conclusão
Neste artigo foi apresentada a grande
importância da arquitetura no desen-
volvimento de software e como ela pode
Figura 11. Diagrama de Componentes da Visão de Implementação.

Edição 08 – Engenharia de Software Magazine 19


Conceitos de orientação a objetos e UML
Entendendo o paradigma atual de desenvolvimento de sistemas

De que se trata o artigo:


Este artigo aborda a evolução do de-
senvolvimento de sistemas chegando
aos dias de hoje com o paradigma da
orientação a objetos. Em seguida são

E
ste artigo inicia mostrando como
evoluímos até o paradigma atual apresentados os conceitos da orientação
da orientação a objetos. Em segui- a objetos, sua aplicabilidade em diversas
da, conceituaremos a base da orientação a fases do desenvolvimento de sistemas,
objetos, com sua demonstração por meio e conclui com a apresentação da UML
de exemplos. Será apresentada uma visão como modelo utilizado para desenvol-
vimento de sistemas OO.
geral da aplicabilidade em diversas fases
do desenvolvimento de sistemas: levanta- Para que serve:
mento, análise, projeto de banco de dados Fornecer aos desenvolvedores ou
e implementação. E por fim, evidenciare- estudantes da área de sistemas a base
mos a proposta da UML como linguagem necessária ao contexto de desenvolvi-
de modelagem, com a apresentação dos mento atual – o paradigma de orientação
diagramas da versão atual. a objetos.
Em que situação o tema é útil:
O começo de tudo Atualmente há uma disseminação
A história da computação teve início de sistemas desenvolvidos sob o pa-
na necessidade do homem em conseguir radigma orientado a objetos, sem que
Ana Cristina Melo realizar cálculos. O caminho foi longo, alguns desenvolvedores tenham uma
informatica@anacristinamelo.com.br iniciado com o ábaco, muitos anos antes da completa visão da importância de toda
É especialista em Análise de Sistemas e professora a base de conceitos OO e da modelagem
era cristã. A primeira máquina de calcular
de graduação e pós-graduação da Universidade
que apenas somava e subtraía vem surgir em UML.
Estácio de Sá. Atua em análise e programação há
21 anos. Autora do livro ”Desenvolvendo aplica- apenas em 1642, desenvolvida por Blaise
ções com UML – do conceitual à implementação”, Pascal. Em 1694, Gottfried Von Leibniz 1822, o matemático inglês Charles Babbage
na segunda edição, e “Exercitando modelagem em
constrói a primeira calculadora que podia estabelecia os princípios do funcionamento
UML”. Palestrante em alguns eventos, entre eles,
Congresso Fenasoft, OD e Sepai. executar as quatro operações básicas, e em dos computadores eletrônicos no projeto

20 Engenharia de Software Magazine – Conceitos de orientação a objetos e UML


P R O J E TO

de sua máquina diferencial, capaz de rea- que esse paradigma ainda não era a solução diga OO. Sendo assim, se um desses
lizar os cálculos necessários para elaborar para a velha crise de software. conceitos não for atendido, não podemos
uma tabela de logaritmos. A partir daí, Naturalmente, logo se pensa que a afirmar que determinada tecnologia
outras invenções abriram caminhos para o orientação a objetos surgiu após a análise possa ser nomeada como orientada a
que temos hoje. O marco inicial se dá com o estruturada, como uma evolução dessa objetos. Isso aconteceu com a linguagem
primeiro computador eletrônico, o ENIAC metodologia, buscando-se as soluções Visual Basic, que antes da sua versão .net
(Eletrical Numerical Integrator and Calcula- necessárias para um projeto confiável e de não implementava todos os conceitos de
tor), surgido em 1945, e pesando cerca de manutenção fácil. É correto imaginar que o orientação a objetos.
30 toneladas. Até hoje os computadores paradigma da orientação a objetos tornou- Vejamos então esses conceitos:
ainda utilizam a arquitetura proposta por se a solução para acompanhar a demanda Objeto: um objeto é qualquer coisa
Von Neumann. Em 1951, surgia o primeiro cada vez maior e freqüente do mercado, existente no mundo real, em formato
computador fabricado comercialmente: o mas o erro está no posicionamento histó- concreto ou abstrato, ou seja, que exista
UNIVAC I, usado no censo americano por rico do conceito de orientação a objetos, fisicamente ou apenas conceitualmente,
12 anos seguidos. pois este surgiu muito antes do conceito e o qual se pode caracterizar e identificar
A partir da década de 40, descobre-se a da programação estruturada. comportamentos.
importância da computação, e essa passa Em 1962, Ole-Johan Dahl e Kristen Ny- Podemos afirmar que um objeto é uma
a fazer parte da nossa história. Contudo, gaard criaram uma linguagem chamada caixa-preta que recebe e envia mensagens,
numa primeira fase ninguém pensava em Simula, baseada na linguagem Algol 60. ou seja, num sistema orientado a objetos,
software. Os esforços estavam voltados à O diferencial residia em seu objetivo: os objetos trocam informações por meio
evolução do hardware, buscando-se redu- permitir o projeto de simulações. Surgia de mensagens.
zir os problemas das primeiras máquinas. a primeira linguagem orientada a objetos, Num sistema orientado a objetos não
Assim, da primeira geração de computa- apresentando os conceitos de classe e modelamos apenas objetos de negócio.
dores à válvula, passamos para a segunda herança. Essa foi a semente que inspirou Muitas vezes, de acordo com a arquitetura
geração, utilizando transistores. o desenvolvimento de uma nova lingua- utilizada, modelamos objetos computacio-
A primeira linguagem de programação gem, a primeira totalmente orientada a nais, visuais ou não.
surgida foi a linguagem de máquina, na objetos —o SmallTalk. Nela, não existem Exemplo: ao levantarmos os requisitos
década de 50 — o Assembly. Nesse mo- tipos primitivos, tudo é representado para informatizar uma concessionária,
mento, a preocupação era restrita aos co- em forma de objeto: números, caracteres encontraremos o objeto automovel (físico),
mandos, nem se pensava em análise, mui- etc. Disponibilizada ao público no início da mesma forma que podemos modelar o
to menos em modelagem de requisitos. A dos anos 80, SmallTalk solidificou para a objeto venda (conceitual).
partir de então, surgem as linguagens de comunidade os conceitos de classe, ob- Atributo: as características associadas aos
alto nível, como Fortran, Algol e Cobol. jeto, atributo, método, encapsulamento, objetos são chamadas de atributos. Para os
Um rápido aumento na complexidade herança e mensagem. A partir daí, novas objetos de negócio, é comum usarmos o
das demandas por software e a falta de linguagens surgiram, como o C++ (versão conceito de atributo. Para os objetos visuais,
técnicas para definição de novos sistemas OO da linguagem C), Object Pascal (ver- utilizamos o conceito de propriedade.
culminaram em diversos problemas, são OO do Pascal), Eiffel e Java (criado a Exemplo: atributos da classe Cargo:
entre eles: estouro de orçamento e prazo, partir do C++). descricao e salario. Atributos da classe
softwares de baixa qualidade, requisitos Automovel: modelo, cor, numeroPortas, ano,
não atendidos e código de manutenção Conceitos fundamentais de placa etc.
difícil. Estava definida a crise de software. orientação a objetos Operação x Método: o comportamento
A solução para contornar a crise veio com Os conceitos da orientação a objetos dos objetos é representado pelas opera-
o conceito da Engenharia de Software, em surgiram da necessidade em se enfatizar ções. Contudo, a operação para um objeto
1968. Objetivava-se trazer os princípios da unidades discretas, e obter a reutilização representa apenas a definição do serviço
Engenharia, com todo o seu planejamento de código, mantendo-se a qualidade do que ele oferece a outras estruturas. Quan-
e modelagem, para se resolver os proble- software. O núcleo do pensamento OO do tratamos da implementação dessa
mas da área ainda imatura. No mesmo ano predomina num foco sobre os dados, em operação, ou seja, da sua representação
de 68, Dijkstra escreve sobre a programa- vez dos processos, compondo módulos em código, estamos nos referindo ao seu
ção estruturada; tinha início o marco do auto-suficientes — os objetos —, encerran- método. Os métodos de uma classe ma-
primeiro paradigma de desenvolvimento do em sua estrutura todo o conhecimento nipulam somente as estruturas de dados
de sistemas. dos dados e dos processos para manipu- daquela classe, ou seja, para se ter acesso
Mas enquanto novas linguagens surgiam lação desses dados. aos dados de outra classe, isso deve ser
—Pascal, C —, ainda não se tinha a defini- O que se obtém de principal na modela- feito por meio de mensagens.
ção de uma metodologia de desenvolvi- gem orientada a objetos é a possibilidade Exemplo: operações da classe Cargo: cadas-
mento de sistemas, até 1978, quando Tom de se abstrair diretamente os conceitos trar() e reajustarSalario(percentual: float).
DeMarco escreve seu livro sobre análise do mundo real, sem subterfúgios para se Ao modelarmos uma classe precisamos
estruturada. Contudo, a dificuldade de chegar à solução computacional. sempre considerar o contexto. Se não fosse
manutenção dos diversos modelos gerados Os conceitos fundamentais de orientação isso, bastaria um famoso metodologista
na fase de análise e projeto, fez com que se a objetos são o contrato que estabelece publicar as soluções para todas as classes
percebesse, nas duas décadas seguintes, toda e qualquer implementação que se de negócio.

Edição 08 – Engenharia de Software Magazine 21


Desta forma, não teremos necessaria- precoVenda = precoCusto * (1 + lucro/100) A herança não precisa se limitar aos
mente os mesmos atributos e operações Esse cálculo está na implementação de objetos de negócio. Pelo contrário, um
para a classe aluno, modelada num sis- uma operação, ou seja, é o seu método, e dos maiores ganhos que nós temos com a
tema acadêmico de uma escola de nível fica encapsulado (escondido). orientação a objetos é a possibilidade de
médio, e a mesma classe aluno, modelada Suponha agora que hoje foi colocada se estender todo esse conceito de utiliza-
num sistema acadêmico de uma Univer- ção para todos os componentes do nosso
uma nova versão da classe Produto, na qual
sidade. Não é garantia termos os mesmos sistema.
esse cálculo passa a ser:
atributos e operações nem se considerar- Exemplo: podemos criar uma classe para
precoVenda = precoCusto * (1 + lucro/100)
mos dois sistemas acadêmicos modelados precoVenda = precoVenda * (1 - um relatório, com o logotipo da empresa,
descontoMes/100)
para distintas Universidades. dados de identificação do cabeçalho e do
Exemplo: Vamos tomar por base a classe As rotinas A, B, C e D receberão uma rodapé, e a partir dessa classe, herdar
Automovel. Se estivermos no contexto de exceção em virtude da regra de cálculo ter todos os outros relatórios do sistema,
uma concessionária, teremos operações sido alterada? Não, eu respondo. É trans- particularizando em cada um, as carac-
como: cadastrar, alterarProprietario etc. Em parente para essas rotinas (e precisa ser terísticas específicas. Imagine o esforço
contrapartida, se estivermos no contexto assim) que houve alteração na forma de necessário para se trocar o logo e incluir
de um simulador para auto-escola, seu cálculo do preço de venda. Se estivermos o nome do usuário logado em todos os
comportamento deve reproduzir o objeto diante de um componente (por exemplo, 1000 relatórios de um sistema: calculo uns
real, com operações como: ligar, aumentar uma dll), absolutamente nada será preciso dois minutos.
marcha, reduzir marcha, acelerar etc. fazer com essas rotinas. Se estivermos com Polimorfismo: uma operação pode ter
Estado: são os valores assumidos pelos as rotinas dentro do mesmo pacote que a implementações diferentes em diversos
atributos de um objeto. pontos da hierarquia de classes. Isso
classe, basta recompilar tudo.
Exemplo: em um determinado objeto significa que ela terá a mesma assinatura
Herança: ao refinarmos a modelagem de
cargo, o estado do seu atributo salario é o (mesmo nome, lista de argumentos e re-
um sistema é comum encontrarmos carac-
valor R$ 5000,00. torno), porém implementações diferentes
terísticas redundantes entre objetos. Essa
Mensagem: é a solicitação que um objeto (métodos). Isso é o polimorfismo (poli =
redundância pode ser evitada pela separa-
faz a outro, invocando a execução de um muitas; morphos = forma).
ção dos atributos e operações numa classe
determinado serviço. Por exemplo, para Exemplo: Há uma operação calcularSa-
comum, identificada como superclasse.
que um objeto possa calcular a folha de pa- lario() que pertence à classe Funcionario.
Essa classe comum (superclasse) passa
gamento, ele precisa saber o salário de cada Herdamos de Funcionario a classe Professor,
a ser a generalização de outras classes
funcionário. Assim, ele passa uma mensa- o que resulta automaticamente na herança
que encerram em si apenas os atributos e
gem ao objeto cargo, solicitando a execução de calcularSalario(). Contudo o cálculo do
operações específicos a cada uma.
do serviço obterSalario, que nada mais é do salário de um professor não é o mesmo
Exemplo: Suponha que temos duas clas-
que uma operação do objeto cargo.
ses: Cliente e Funcionario. São atributos
Encapsulamento: o conceito de encapsu-
dessas classes: Cliente (cpf, nome, dataNas- Classes Atributos
lamento nos remete ao fato de que a utili-
cimento, endereco, dataPrimeiraCompra) e Antes da herança
zação de um sistema orientado a objetos
Funcionario (cpf, nome, dataNascimento,
não deve depender de sua implementação Cliente cpf
endereco, dataAdmissao, funcao). Imagine
interna, e sim de sua interface. Isso garan- nome
que existem operações que validam o CPF,
te que os atributos e os métodos estarão dataNascimento
retornam a idade de um cliente ou fun-
protegidos, só podendo ser acessados pela endereco
cionário, ou formatam o endereço. E que
interface disponibilizada pelo objeto, ou dataPrimeiraCompra
seja, sua lista de serviços. Essa proteção todas essas funções apareçam em dupli-
cidade nas classes Cliente e Funcionário. Funcionario cpf
garante que os usuários de uma classe
Numa situação dessas, o que se espera na nome
não sejam influenciados por quaisquer
orientação a objetos é que essa redundân- dataNascimento
alterações feitas em seu conteúdo.
cia seja eliminada com a herança. Assim, endereco
Na prática, imagine uma classe Produto
que possua a operação obterPrecoVenda: cria-se uma superclasse Pessoa, e a ela são dataAdmissao
float. Essa operação é pública, tornando- atribuídos todos os atributos e operações função
se um serviço disponibilizado a outras comuns à Cliente e Funcionario. Sobram nas Após a herança
classes. Em qualquer rotina que se queira subclasses (Cliente e Funcionario) somente
Pessoa cpf
mostrar o preço de venda de um produto, os atributos e operações específicos a cada
nome
basta instanciar um objeto Produto, e passar um. Na prática, ao se usar uma subclasse,
dataNascimento
uma mensagem para executar o serviço, tem-se acesso a todos os elementos das
endereco
ou seja, chamar a execução da operação classes ascendentes, como se tivessem
sido criadas na própria classe filha. Veja na Cliente dataPrimeiraCompra
obterPrecoVenda.
Suponha que as rotinas A, B, C e D usem Tabela 1 o resultado desse processo. Funcionário dataAdmissao
esse serviço e que até ontem esse valor de Quando uma subclasse possui mais do funcao
venda fosse obtido apenas com um cálculo que uma superclasse é dito que temos uma
Tabela 1. Estrutura de classes antes e após remodelar
simples: herança múltipla. com herança.

22 Engenharia de Software Magazine – Conceitos de orientação a objetos e UML


P R O J E TO

que o cálculo do salário de um funcioná- Camada Responsabilidade


rio, o que nos leva a ter a mesma operação,
porém com métodos diferentes. Apresentação (interface) Apresentação dos dados e interfaceamento entre o usuário e o sistema
Negócio (domínio) Lógica do sistema, implementação das regras de negócio
Camadas lógicas x camadas físicas Persistência Acesso ao banco de dados
Há uma certa confusão quando se fala
Tabela 2. Responsabilidades das camadas lógicas de um sistema orientado a objetos
em camadas. A garantia de encapsulamen-
to e autonomia do objeto está pautada no Na Figura 1 exemplificamos como as objeto, agora completo, é então devolvido à
conceito das camadas lógicas. informações transitam entre as camadas. camada de apresentação, onde seu conteúdo
As camadas lógicas (layers) são imple- Suponha um usuário que via interface já pode ser exibido ao usuário.
mentadas independentes da arquitetura gráfica queira consultar o salário líquido
do sistema, ou seja, de suas camadas fí- de um funcionário cujo código é 100. Ele Aplicabilidade da orientação a
sicas (tiers). Dessa forma, as três camadas faz essa solicitação por meio da interface objetos
continuarão a existir mesmo se estiverem (camada de apresentação). Esta instancia um Ao se falar em orientação a objetos,
implementadas num sistema cliente/ser- objeto Funcionário (objFunc) e faz a cha- pouco se imagina que a mesma tenha
vidor (two-tier) ou numa arquitetura web mada do método busca, passando como aplicabilidade em diversas fases do de-
(three-tier). Podemos ter as três camadas parâmetro o código do funcionário (100). senvolvimento de sistemas: levantamento
lógicas implementadas até mesmo em um A solicitação é dirigida à camada de negócio, de requisitos, análise, implementação e
único computador, stand-alone, com base de que nada pode fazer enquanto não obtiver projeto de banco de dados.
dados local, mas ainda assim teremos três os dados do banco de dados. Assim, ela Durante o levantamento de requisitos
camadas lógicas distintas. A divisão das repassa o objeto, ainda vazio, à camada fomos beneficiados com o caso de uso.
camadas lógicas é mostrada na Tabela 2. de persistência, solicitando que seja feita a Você pode pensar imediatamente: “Mas
A camada de apresentação normalmente busca da persistência do referido objeto. A o caso de uso é orientado a objetos?” E a
é representada pela interface gráfica, po- camada de persistência, por sua vez, a única resposta é direta: “Não!” A verdade é que
dendo ser representada por qualquer ou- que conhece a estrutura do banco, prepara ele não tem nenhuma referência à orienta-
tra forma de entrada de dados. Ao receber uma query de consulta, para recuperar do ção a objetos, a não ser ter sido criada por
uma solicitação do usuário, essa camada BD os dados necessários. De posse dessas Ivar Jacobson ― um dos três autores da
se responsabiliza em convertê-lo em ações informações, cabe a essa camada associar UML ―, em sua metodologia orientada
reconhecíveis pela próxima camada, a de o conteúdo retornado do BD aos atributos a objetos (OOSE – Object Oriented System
negócio. Ao receber as respostas da cama- do objeto (objFunc) e, em seguida, devolvê- Engineering). Seu formato e subdivisão em
da de negócio, a camada de apresentação lo à camada chamadora. Contudo, para se seções não possuem nenhuma similarida-
cuida em exibi-las para o usuário. Pode se chegar ao valor do salário líquido é preciso de com os conceitos de classe, herança etc,
apresentar de forma múltipla. um cálculo, cuja regra pertence apenas à ca- contudo sua importância faz coro com as
Exemplo: a rotina da camada de negócio mada de negócio. Sendo assim, ao retornar à vantagens do paradigma OO.
que processa um contra-cheque pode ter segunda camada, esta de posse do valor do A Engenharia de Requisitos se preocupa
saída em duas camadas de apresentação: salário bruto, já pode proceder ao cálculo desde a identificação do requisito até sua
em uma interface gráfica, para utilização que devolverá o valor do salário líquido. O modelagem e especificação. Nas fases de
interna, e em uma interface web, para
acesso via internet.
A camada de negócio tem por objetivo
receber as solicitações da camada de apre-
sentação, e realizar à camada de persis-
tência as solicitações que se façam neces-
sárias, para processar e devolver o pedido
original. Essa camada fica responsável por
todo processamento, cálculo e validação
inerente aos requisitos da aplicação.
A camada de persistência tem por ob-
jetivo receber as solicitações da camada
de negócio, e para realizá-las, prepara e
executa as queries necessárias para acesso
ao banco de dados. Somente essa camada
deve conhecer as fontes de dados e a
estrutura das tabelas envolvidas com ela.
Isso garante a não propagação de acesso
aos dados, o que muitas vezes não só torna
a manutenção difícil, como gera erros ex-
ponenciais, quando da abrangência errada
de uma alteração. Figura 1. Exemplo da troca de mensagens entre as camadas lógicas de uma aplicação

Edição 08 – Engenharia de Software Magazine 23


modelagem e especificação é que o caso de em todas as fases do desenvolvimento Veja na Figura 2 a diferença que temos
uso vem a ser uma poderosa ferramenta, de sistemas, exceto no projeto de banco na implementação da classe Funcionario
pois nos permite a comunicação com o de dados, que continua sendo feito sobre em uma tabela relacional e em uma tabela
usuário, sem que tenhamos a superficiali- bancos relacionais. Essa passagem da de objetos.
dade de um DFD, ou o excesso de técnica modelagem OO para o projeto de bancos Espera-se que toda a navegação através
de um pseudo-código. relacionais é conhecida como modelagem dos relacionamentos entre as classes de um
Dentro de um sistema orientado a objetos, objeto-relacional. Contudo, o ideal (que banco objeto-relacional seja feita por meio
o caso de uso se torna a base para todo o esperamos para um futuro próximo) seria da notação de ponto (dot notation). A notação
processo de desenvolvimento, visto que a o projeto de banco de dados acompanhar de ponto é a forma existente para acessar
partir do mesmo é gerada a primeira versão a modelagem OO, ou seja, termos a nossa as propriedades (atributos) ou métodos de
do modelo de classes, a identificação das disposição um banco de objetos. um objeto. Desta forma, não é necessário
trocas de mensagens entre objetos, por meio Na realidade, o banco, ou alguns bancos, que a query estabeleça explicitamente o re-
da modelagem de um diagrama de seqüên- objetos-relacionais já estão disponíveis no lacionamento entre os objetos, visto que este
cias, e a geração dos casos de teste que irão mercado, como o Oracle, DB2, Postgress, relacionamento já foi previamente definido
garantir a qualidade do produto final. Caché etc. Tudo começou com o surgimen- na definição da classe.
Numa visão de mais alto nível do sis- to dos bancos de objetos, padrão definido
tema, temos o diagrama de casos de uso. pela OMG (Object Management Group) O nascimento da UML
Numa visão de mais baixo nível, com os que cuidava de apresentar um modelo Ao falarmos no começo do desenvolvi-
detalhes necessários para que todos os de dados orientado a objeto. Contudo os mento de sistemas, vimos que a análise
requisitos sejam documentados e modela- bancos BDOO criados sobre este padrão estruturada só surgiu após a programação
dos, temos os cenários dos casos de uso. trouxeram a facilidade de se implementar estruturada. O mesmo ocorreu com a orien-
A modelagem de um sistema na fase de modelos complexos, mas deixaram a dese- tação a objetos (talvez esteja aí a origem de
análise tornou-se um processo mais trans- jar quanto ao desempenho. Numa corrida todos os problemas computacionais). No
parente com a utilização da UML. Diagra- para não perder o filão do mercado, os início da década de 90 havia mais de 50 mé-
mas de classe passam a concentrar todas fabricantes de bancos relacionais se reu- todos disputando o mercado para se tornar
as informações necessárias sobre os dados niram, buscando um padrão alternativo, “o” método principal para a orientação a
(antes modelados com diagramas de enti- que veio a se chamar objeto-relacional objetos. Contudo, a maior parte desses mé-
dade-relacionamento) e sobre as funciona- ou relacional-estendido. Assim nasceu a todos cometia um grave pecado: ser uma
lidades (antes modelados com diagramas versão 3 do SQL. Com isso, algumas ver- extensão dos métodos estruturados. Os
de fluxo de dados). Não só conseguimos sões recentes dos bancos BDR, atualizadas maiores prejudicados eram os usuários que
que essa fase seja mais transparente, como sobre o padrão 3, já oferecem ao mercado não conseguiam encontrar uma solução
conseguimos que a transição da fase de a possibilidade de modelar suas bases de única e devidamente discutida.
análise para a fase de projeto seja feita de dados no modelo OO. Nessa época, mesmo com contribuições
forma automática. A partir de um modelo O que falta então? Acredito sinceramente valiosas de outros metodologistas, três
de classes, não só geramos um script de que patrocínio. Patrocínio das empresas metodologias começaram a dominar o
banco de dados, como conseguimos gerar de mercado em apostar nessa nova forma mercado: OMT – Object Modeling Techni-
automaticamente a estrutura das classes na de persistir seus dados, pressionando que de James Rumbaugh, método Booch de
linguagem de programação escolhida. Da assim os fabricantes a investirem mais no Grady Booch e OOSE – Object-Oriented
mesma forma, a partir de uma estrutura suporte de seus produtos como bancos Software Engineering de Ivar Jacobson.
de banco de dados e de um código já im- objeto-relacionais. Booch, ciente dos problemas em se ter
plementado, podemos automaticamente
atualizar nosso modelo, pelo processo de
engenharia reversa, garantindo que toda a
documentação esteja atualizada.
Para que essa transparência e pratici-
dade aconteçam é imprescindível que
um sistema modelado em UML tenha
a sua implementação numa linguagem
orientada a objetos. O mesmo já não é
uma verdade absoluta quando se fala
da modelagem de casos de uso. Hoje é
comum encontrarmos equipes de desen-
volvimento que vêm utilizando casos de
uso para a modelagem e especificação dos
requisitos, porém tendo as fases de análise
e projeto voltadas para a metodologia de
análise essencial.
Atualmente um padrão de mercado é
a aplicabilidade da orientação a objetos
Figura 2. Exemplo contrapondo o mapeamento objeto-relacional x transição direta para BDOR

24 Engenharia de Software Magazine – Conceitos de orientação a objetos e UML


P R O J E TO

aquela diversidade de métodos, propôs ao • Diagrama de objetos (Object Dia- Versão da Publicação Tipo de revisão
mercado a união das metodologias, o que gram) – apresenta objetos e valores de
UML
foi rechaçado pela maioria. Pouco depois, dados. Corresponde a uma instância do
James Rumbaugh abandonou a General diagrama de classes, mostrando o estado 1.1 Novembro de 1997 Estrutural
Electric e se juntou à Booch na Rational de um sistema em um determinado ponto 1.2 Julho de 1998 Somente conteúdo
Software, produzindo o método unificado, do tempo. 1.3 Março de 2000 Somente conteúdo
na sua versão 0.8. Jacobson, ao perceber a • Diagrama de componentes (Compo-
1.4 Maio de 2001 Estrutural
similaridade do seu método com o méto- nent Diagram) – mostra as dependências
do unificado, logo se uniu a eles. O que entre componentes de software, apresen- 1.5 Março de 2003 Somente conteúdo
nasceu ainda como um método, teve a tando suas interfaces. 2.0 Julho de 2005 Estrutural
mudança de perspectiva, passando a ser • Diagrama de estrutura composta
2.1.1 Agosto de 2007 Somente conteúdo
uma linguagem de modelagem, desaco- (Composite Structure Diagram) – usado para
plando o processo de desenvolvimento. mostrar a composição de uma estrutura. 2.1.2 Novembro de 2007 Somente conteúdo
Nascia a UML – Unified Modeling Language Útil em estruturas compostas de estrutu- Tabela 3. Histórico das versões da UML
na sua versão 0.9. ras complexas ou em projetos baseados
Em 1996, a UML já era vista pelas orga- em componentes – uma variação do diagrama de ati-
nizações como uma ótima estratégia para • Diagrama de pacotes (Package Diagram) vidades que mostra de uma forma
seus negócios. A OMG (Object Management – usado para organizar elementos de mode- geral o fluxo de controle dentro de
Group) emitiu uma RFP (Request for Pro- lo e mostrar dependências entre eles um sistema ou processo de negó-
posals), que objetivava receber propostas • Diagrama de implantação (Deploy- cios. Cada nó ou atividade dentro
de padronização para uma metodologia ment Diagram) – mostra a arquitetura do do diagrama pode representar outro
de desenvolvimento orientado a objetos. sistema em tempo de execução, as plata- diagrama de interação.
Respostas foram recebidas da comunidade formas de hardware, artefatos de software Podemos afirmar que é possível se com-
de engenharia de software e de grandes em- e ambientes de software (como sistemas pletar a modelagem de um sistema de
presas (Digital, HP, IBM, Microsoft, Oracle e operacionais e máquinas virtuais) pequeno ou médio porte, com sucesso,
Unisys, entre outras) fortalecendo a propos- Diagramas comportamentais (dinâmi- com apenas três diagramas (casos de uso,
ta da UML. Em janeiro de 1997, a Rational cos): classes e seqüências), tendo o suporte,
lançou a versão 1.0 da UML como proposta • Diagrama de casos de uso (Use Case dependendo do contexto, de três outros
para padronização na OMG. Entre janeiro e Diagram) – mostra os casos de uso, atores diagramas (objetos, atividades e máquina
julho novas contribuições foram recebidas, e e seus relacionamentos que expressam a de estados).
em 14 de novembro de 1997, a UML 1.1 era funcionalidade de um sistema. O paradigma da orientação a objetos veio
adotada como padrão pelo OMG. • Diagrama de atividades (Activity definitivamente ocupar um espaço que há
A manutenção da UML passou a ser Diagram) – representa a execução de ações muito se necessitava no mercado de de-
responsabilidade da RTF (Revision Task ou atividades e os fluxos que são dispa- senvolvimento. Cabe aos desenvolvedores
Forces), pertencente à OMG, sob a direção rados pela conclusão de outras ações ou entenderem a importância de se respeitar
de Cris Kobryn, centralizando os comentá- atividades. todos os seus conceitos, para que se obte-
rios e pedidos de revisão da comunidade. • Diagrama de máquina de estados nha o melhor do que ele nos propõe.
Novas versões foram publicadas a partir (Statechart Diagram) – representa as ações
daí, conforme a Tabela 3. ocorridas em resposta ao recebimento de
eventos. Links
Diagramas da UML • Diagramas de interação:
O que há de mais relevante na UML é o ƒ Diagrama de seqüências (Se- UML Site
fato de que a linguagem de modelagem quence Diagram) – mostra as inte- www.uml.org
nos oferece diversas ferramentas, ficando rações que correspondem a um Artigo “What is Object-Oriented Software?”, escrito
sob nossa responsabilidade a forma e a conjunto de mensagens trocadas por Terry Montlick
ordem como elas serão utilizadas. Além entre objetos e a ordem que essas http://www.softwaredesign.com/objects.html
disso, a UML possui mecanismos de mensagens acontecem. ODMG Site
extensibilidade, que permitem a adequa- ƒ Diagrama de comunicação www.odmg.org
ção da linguagem aos diversos sistemas (Communication Diagram) – é o an-
existentes no mercado, sem que se perca tigo diagrama de colaboração, que
o entendimento comum ao se usar um mostra objetos, seus inter-relacio-
mesmo modelo. namentos e o fluxo de mensagens
A versão atual da UML contempla 13 dia- Dê seu feedback sobre esta edição!
entre eles Feedback
eu
gramas, divididos em duas categorias: ƒ Diagrama temporal (Timing A Engenharia de Software Magazine
s

Diagramas estruturais (estáticos): Diagram) – mostra a mudança de tem que ser feita ao seu gosto.
sobre e

• Diagrama de classes (Class Diagram) estado de um objeto numa pas- Para isso, precisamos saber o que você,
s

ta
– apresenta classes conectadas por relacio- leitor, acha da revista! edição
sagem de tempo, em resposta a
namentos. Usado para exibir entidades do eventos externos. Dê seu voto sobre este artigo, através do link:
mundo real, além de elementos de análise ƒ Diagrama de visão geral de inte- www.devmedia.com.br/esmag/feedback
e projeto. ração (Interaction-Overview Diagram)

Edição 08 – Engenharia de Software Magazine 25


Confiabilidade de Software
Determinante da Qualidade de Sistemas de Software

De que se trata o artigo:


Apresenta definição conceitual da con-
fiabilidade de software, destacando-a
como principal atributo da qualidade.

S
oftware é um produto que permeia Discute a necessidade de considerá-
nosso cotidiano e tem sido compa- la durante fases de desenvolvimen-
nheiro meu, seu e de quase todas as to e operacional de um sistema de
pessoas em uma gama enorme de aplica- software.
ções. No dia-a-dia, podemos encontrar
Para que serve:
software embutido em forno microondas,
Informar a necessidade de se conside-
nos jogos de computador ou celular bem
rar a confiabilidade de software no de-
como no controle de aeronaves e sistemas
senvolvimento de produtos de software
de telecomunicações, só para citar alguns
devido ao fato dela ser uma característi-
Antonio Mendes da Silva Filho exemplos.
antoniom.silvafilho@gmail.com ca perceptível pelos usuários.
Há, contudo, um atributo de qualidade
Professor e consultor em área de tecnologia da
associado ao software de suma importân- Em que situação o tema é útil:
informação e comunicação com mais de 20 anos
de experiência profissional, é autor do livros cia para qualquer produto: confiabilidade. Trata-se de uma prática de engenharia
Arquitetura de Software e Programando com XML, Isto vem da real necessidade de utilizar de software considerar a confiabilidade
ambos pela Editora Campus/Elsevier, tem mais um produto ou sistema de software sem de software durante e após o desen-
de 30 artigos publicados em eventos nacionais e
receio de qualquer falha operacional. Este volvimento de um sistema de software.
internacionais, colunista para Ciência e Tecnologia
pela Revista Espaço Acadêmico com mais de 60 artigo trata dos fundamentos e importân- Permite ao engenheiro de software uma
artigos publicados, tendo feitos palestras em cia da confiabilidade de software. avaliação preliminar do produto.
eventos nacionais e exterior. Foi Professor Visitante
da University of Texas at Dallas e da University of
Ottawa. Formado em Engenharia Elétrica pela
Necessidade de Sistemas Confiáveis ção do software como um elemento cada
Universidade de Pernambuco, com Mestrado em Há aproximadamente cinco décadas vez maior nos sistemas computacionais
Engenharia Elétrica pela Universidade Federal atrás, o software constituía uma insignifi- (ou seja, aqueles sistemas que têm sof-
da Paraíba (Campina Grande), Mestrado em cante parte dos sistemas existentes e havia tware como componente). Antigamente, a
Engenharia da Computação pela University of
pouca preocupação com sua qualidade. maioria das funcionalidades implementa-
Waterloo e Doutor em Ciência da Computação pela
Univesidade Federal de Pernambuco. Esse cenário começou a mudar com inser- das nos sistemas era composta de compo-

26 Engenharia de Software Magazine – Confiabilidade de Software


P R O J E TO

nentes de hardware que exercia o controle Fundamentos da Confiabilidade de genérico defeito para se referir à falta
sobre a operação dos sistemas. Software ou falha.
Um exemplo de poucas décadas atrás Vale ressaltar que uma falha poderia ser
Ter o software como elemento essencial
era o sistema telefônico. Antigamente, as causada, não apenas por uma falta, mas
dos sistemas coloca sobre ele a neces-
centrais telefônicas tinham seu controle e também por um erro humano ou falha de
sidade de assegurar qualidade e, mais
operação feitos à base de relés (isto é, um hardware. Observe ainda que nem toda
especificamente, sua capacidade de não
dispositivo de comutação) que possibili- falta pode causar uma falha de software.
apresentar falhas quando em uso. As-
tava a comutação entre linhas telefônicas. Isso pode acontecer apenas se o compo-
sociado com o software, há um atributo
Os sistemas mais antigos tinham a telefo- nente (parte do software) que implementa
determinante da qualidade de qualquer
nista (ser humano) como uma profissional uma determinada funcionalidade for utili-
produto: confiabilidade. A confiabilidade
encarregada de realizar a comutação zado durante a operação do sistema. Se o
de software é definida como a probabili-
entre dois assinantes. Hoje em dia, essa componente não é utilizado num cenário
dade do software operar sem ocorrência
funcionalidade é feita por um subsistema de uso do sistema, a falha não se manifesta
de falhas durante um período especificado
de software que identifica o assinante que e a falta permanece (oculta) no software já
de tempo em um determinado ambiente.
origina a ligação telefônica, processa o nú- que nenhuma falha foi observada. Toda-
Num contexto mais amplo, a qualidade
mero discado por ele e, por fim, realiza a via, se o componente que possui uma falta
de software é uma propriedade multidi-
comutação com o assinante chamado. é utilizado, ele irá apresentar um compor-
mensional que inclui, além da confiabilida-
Agora, se considerarmos a história da tamento incorreto, resultando numa falha
de, outros fatores de satisfação do cliente
indústria do software (ver seção Links), (observável).
como funcionalidade, usabilidade, desem-
Já o termo erro pode se originar em duas
encontra-se o uso do software numa am- penho, habilidade de prestação de servi-
situações:
pla variedade de aplicações tais como sis- ço, manutenibilidade e documentação. • Erro humano (como causador da falha) –
temas de manufatura, software científico, Todavia, a confiabilidade é, comumente, que pode resultar numa falha observável
software embarcado, robótica e aplicações aceita como um fator chave da qualidade ao usuário. Isto ocorre quando um erro
Web, dentre tantas. Como resultado disso, de software, uma vez que a confiabilidade humano motiva a falha, ou seja, ele pode
as funcionalidades e controle operacional pode quantificar as falhas de software (que desenvolver um produto contendo uma
dos sistemas computacionais se tornaram são percebidas pelo usuário). ou mais faltas como, por exemplo, especi-
mais dependentes do software. No entanto, existem alguns termos que ficando um sistema de forma inconsistente
E, concomitante a este fato, houve são utilizados no cotidiano das pessoas, ou incompleta, bem como implementan-
crescimento no uso de computadores, mas que do ponto de vista da engenharia do-o de modo incorreto.
principalmente, os de uso pessoal como o de software, têm significados específicos • Discrepância de valores – entre o valor
PC, além da descentralização dos grandes que precisam ser definidos para que haja observado ou computado e o valor (ou
sistemas. Esses fatores, juntamente com entendimento e uso correto dos mesmos. condição) contido na especificação.
a redução gradativa dos custos dos com- Inicialmente, há o termo falha que deno- É importante observar que ter o software
putadores, contribuíram para aumentar mina um evento observado pelo usuário como elemento essencial dos sistemas co-
o uso do software numa ampla variedade (ou algum mecanismo de detecção de loca sobre ele a necessidade de assegurar
de aplicações. O resultado de tudo isso foi falhas). Assim, durante a execução de qualidade e, mais especificamente, sua
o crescimento do software em termos de um sistema de software, se um dado de capacidade de não apresentar falhas quan-
tamanho e complexidade. saída está incorreto, então isto resulta do em uso. A confiabilidade de software
Os projetos de sistemas computacionais ser uma falha. Em outras palavras, uma se torna uma propriedade determinante
mais antigos eram compostos de pequena falha acontece quando o usuário percebe para o produto porque ela é observável
parcela de software. Já os componentes que um determinado programa deixa de pelos usuários.
de hardware, que eram a maior parte dos prover o serviço ou funcionalidade por Outro atributo importante dos sistemas
sistemas, eram analisados e testados quase ele esperada. Portanto, uma falha é uma de software é a disponibilidade, que com-
exaustivamente, o que permitia a produ- conseqüência de uma determinada falta preende a probabilidade de, em qualquer
ção rápida de grandes quantidades de que foi deixada no software. instante de tempo, um sistema funcionar
componentes e implicava em raros erros Por outro lado, diz-se que um sistema satisfatoriamente num determinado
de projetos e falhas nos sistemas. Note possui uma falta se, para algum dado de ambiente. Em outras palavras, é a proba-
que a facilidade de modificar o software, entrada, o comportamento do sistema está bilidade de um sistema estar disponível
comparativamente ao hardware, foi e tem incorreto, isto é, seu comportamento é di- quando necessário. A disponibilidade
servido como motivador para seu uso. ferente daquele descrito na especificação pode ser determinada pela relação:
A intensificação do uso do software do software. Portanto, uma falta é uma Disponibilidade = ((MTTF) / (MTTF +
numa larga variedade de aplicações re- causa identificada da falha de software MTTR)) x 100%
sultou no seu crescimento em tamanho ou erro interno do sistema, o qual é co- onde:
e complexidade. Como conseqüência, mumente denominado de bug. • MTTF (Mean Time to Failure) é o tempo
isto tornou proibitivo analisá-lo e testá- Agora, quando a distinção entre falta médio até a ocorrência de falha.
lo exaustivamente, além de impactar no (causa da falha) e falha (o efeito obser- • MTTR (Mean Time to Repair) é o tempo
custo de manutenção. vável) não é critica, utiliza-se o termo médio de reparo.

Edição 08 – Engenharia de Software Magazine 27


Esses dois atributos de qualidade, confia- Já a atividade de previsão determina a se a produção de um sistema de software
bilidade e disponibilidade, compreendem confiabilidade de software futura base- resultasse num software perfeito, ele per-
a base do que é denominado de Engenha- ada em métricas de software e medidas maneceria assim para sempre.
ria de Confiabilidade de Software (ECS), a disponíveis. Dependendo do estágio de Todavia, resultados de esforços em pro-
qual é definida como o estudo quantitativo desenvolvimento, a previsão pode envol- duzir software livre de falhas tem sido
do comportamento operacional de siste- ver diferentes técnicas como: um tanto desapontadores. Além disso, até
mas de software com base nos requisitos • Quando os dados de falhas estão disponí- mesmo os processos atuais de desenvolvi-
de usuários relativo à confiabilidade. veis – Por exemplo, o software encontra-se mento de software ainda não asseguram
ECS compreende técnicas de engenharia em testes ou no estágio operacional. Neste software livre de faltas.
para desenvolver e prover manutenção a caso, as técnicas de estimação podem ser Agora, se considerarmos sistemas de
sistemas de software nos quais a confiabi- usadas para parametrizar e verificar os grande porte como, por exemplo, os sis-
lidade pode ser avaliada quantitativamen- modelos de confiabilidade de software, os temas de telecomunicações, as técnicas
te. Objetivando adequadamente estimar quais realizam previsão de confiabilidade baseadas unicamente no desenvolvimento
e prever a confiabilidade de sistemas de de software futura. que visam produzir software livre de
software, dados das falhas de software • Quando os dados de falhas não estão dis- faltas não são consideradas adequadas.
necessitam ser medidos durante as fases poníveis – Por exemplo, quando o software Isto ocorre porque para tais sistemas,
de desenvolvimento e operacional. ainda encontra-se na fase de projeto ou testes exaustivos têm custos proibitivos
A Engenharia de Confiabilidade de implementação. Neste caso, as métricas e, portanto, não são executados de modo
Software (ECS) inclui: obtidas do processo de desenvolvimento completo a fim de assegurar correta
• Medição de confiabilidade de software, de software e as características do produ- funcionalidade para todos os possíveis
a qual inclui estimativa e previsão com o to resultante podem ser utilizadas para cenários de uso do sistema.
uso de modelos de confiabilidade de determinar a confiabilidade de software Dentro do contexto destacado acima,
software. durante a fase de testes. níveis mais elevados da confiabilidade
• Atributos e métricas de projeto de de software desses sistemas exigem téc-
produtos, processo de desenvolvimento, Confiabilidade de Software no nicas que possam ser aplicadas durante
arquitetura de sistema, ambiente operacio- Desenvolvimento de Sistemas a fase operacional, o qual é apresentado
nal do software e suas implicações sobre O ciclo de vida de um produto como, por a seguir.
a confiabilidade. exemplo, um sistema de software consiste
• Aplicação deste conhecimento na de duas grandes fases: desenvolvimento Melhoria da Confiabilidade de
especificação e projeto da arquitetura de e operação. A fase de desenvolvimento Software na Fase Operacional
software do sistema, desenvolvimento, compreende engenharia de sistemas, Diversas técnicas têm sido propos-
testes, uso e manutenção. especificação de requisitos de software, tas para melhorar a confiabilidade de
Para tanto, torna-se necessária a coleta de projeto de software, codificação e testes. A software de um sistema no estágio ope-
dados de falhas. Esses dados são coletados fase operacional refere-se à fase na qual o racional. Geralmente, elas podem ser
para se fazer a medição da confiabilidade sistema de software está em uso, oferecen- classificadas como técnicas baseadas em
de software. Essa coleta compreende: do funcionalidades aos usuários. software ou hardware. Watchdog timer é o
• Contagem de falhas – esse tipo de dado Tradicionalmente, a maioria dos esforços exemplo mais proeminente de abordagem
faz o rastreamento da quantidade de fa- da engenharia de software em produzir baseada em hardware para melhoria da
lhas detectadas por unidade de tempo; software confiável tem sido concentrada confiabilidade de software.
• Tempo médio entre falhas – esse tipo de na fase de desenvolvimento. A razão para Por outro lado, pode-se identificar e
dado faz o rastreamento dos intervalos isto recai no fato da natureza inerente do destacar N-version programming (Progra-
entre falhas consecutivas. software de não sofrer qualquer desgaste, mação N-versões), Recovery Blocks (Blocos
Além disso, ECS requer a medição de isto é, por ser um produto intangível. reparadores), Software Audits (Auditores de
confiabilidade de software que envolve Diferentemente do hardware que sofre software) e Software Supervision (Supervisão
duas atividades: estimação e previsão de desgaste, o software não é susceptível a de software) como os principais meios de
confiabilidade. A atividade de estimação esse tipo de problema. Cabe destacar que, obter níveis mais elevados de confiabilida-
determina a confiabilidade de software
atual aplicando técnicas estatísticas de Características Capacidade de supressão de falhas Granulosidade da aplicação
inferência aos dados de falhas obtidos du-
rante o teste do sistema ou durante a ope- vs. Técnica
ração do sistema. Esta é uma medida que Programação N-versões Total Grande
considera a confiabilidade obtida desde
Blocos reparadores Total Pequena
um instante passado até o instante atual.
Seu principal objetivo é avaliar a confiabi- Auditores de software Parcial Pequena
lidade atual e determinar se o modelo de Supervisão de software Parcial Grande
confiabilidade está bem calibrado. Tabela 1. Técnicas de melhoria da confiabilidade de software na fase operacional.

28 Engenharia de Software Magazine – Confiabilidade de Software


P R O J E TO

de de software durante a fase operacional algoritmo para calcular a raiz quadrada de É importante observar que as capacida-
do software. um número real. Em tal situação, um teste des de retração de falhas dos programas
O quadro apresentado na Tabela 1 carac- de aceitação adequado pode ser obtido, auditores são limitadas. Na maioria
teriza essas quatro técnicas de melhoria comparando-se o quadrado do resultado dos casos, após a detecção de um erro,
da confiabilidade de software na fase com o valor original da entrada. Se há mais o programa auditor é apenas capaz de
operacional, categorizando-as em função de um algoritmo para implementar essa “resetar” o software para um estado de
da capacidade de supressão de falhas e da funcionalidade, uma forma de verificar segurança ao invés de retratar o erro, ou
granulosidade da aplicação. seu uso seria baseada na eficiência. Se o seja, de levar o software para o último
N-version programming (NVP ou Pro- mais eficiente falhar, então o software iria estado válido. Embora isto limite a apli-
gramação N-versões) tenta compensar recorrer a um algoritmo imediatamente cabilidade de programas auditores, eles
os erros introduzidos durante a fase de menos eficiente. têm sido usados em software de sistemas
desenvolvimento. A suposição fundamen- Adicionalmente, a eficiência desta téc- de telecomunicações.
tal é que a probabilidade de duas ou mais nica depende do teste de aceitação, que A técnica que temos investigado é deno-
equipes de desenvolvimento produzirem pode ser difícil de ser desenvolvido ou até minada de Supervisão de Software e com-
o mesmo erro em uma parte do software mesmo envolver um algoritmo complexo, preende um sistema supervisionado (SS)
é muito pequena. também sujeito a erros. Vale ressaltar que por um supervisor. SS recebe os sinais de
Esta técnica consiste em desenvolver, o problema econômico de desenvolver e entrada do ambiente e responde gerando
separadamente, N projetos e implemen- manter as diversas versões de software são sinais de saída. O supervisor monitora
tações de um software a partir de uma es- similares aos mencionados para N-version os sinais de entrada e saída e, baseado
pecificação de requisitos. Para essa técnica programming. Isto acontece devido ao fato na especificação do SS, determina se eles
ser efetiva, cada uma das versões deveria de ser necessário produzir várias versões constituem comportamentos válidos. Em
ser produzida por uma equipe separada, de uma mesma funcionalidade com o outras palavras, a função do supervisor é
com pouca ou nenhuma interação entre objetivo de assegurar que o software irá comparar as entradas e saídas para o sis-
funcionar de modo correto durante um tema supervisionado com a especificação
elas. Todas as versões do software são
período de tempo maior e, portanto, pro- deste e, caso seja produzida uma saída que
executadas de modo concorrente geran-
vendo uma maior confiabilidade. não está em conformidade com a especi-
do saídas em função de um conjunto de
Uma outra abordagem é Software Audits ficação, então o supervisor irá detectar e
entradas. Em tal situação, um algoritmo
(SA ou Auditores de software) na qual relatar uma falha. Perceba que qualquer
de votação decide qual saída de uma das
erros de software são detectados e, pos- comportamento inválido (ou seja, não
implementações deveria ser utilizada
sivelmente, corrigidos através de progra- contido na especificação) do SS detectado
como saída do sistema. É comum utilizar
mas auditores. Estes programas auditores pelo supervisor é relatado como falha.
uma estratégia de selecionar aquela versão
consistem de software adicional os quais A vantagem desta técnica é que diversas
que tem a maioria na votação.
têm acesso às estruturas de dados do pro- versões idênticas de software não pre-
Embora N-version programming tenha
grama principal. Tipicamente, programas cisam ser produzidas. Adicionalmente,
mostrado ser efetiva quanto à redução
auditores executam em um nível mais eleva-se a disponibilidade operacional do
de falhas de software, ela se depara com
baixo de prioridade comparado ao pro- sistema, pois quando qualquer falha é de-
algumas dificuldades. Resultados expe-
grama principal e, apenas periodicamente tectada pelo supervisor, ele prontamente
rimentais mostram que uma cobertura
checam erros nas estruturas de dados. Três relatará o ocorrido e permitirá que manu-
completa dos erros, em geral, não pode ser tipos de erros que podem ser detectados tenção seja imediatamente realizada.
garantida por esta abordagem. Isto ocorre por programas auditores compreendem: A técnica de supervisão de software tem
porque diferentes implementações estarão • Erros de comparação direta – detectar sido empregada em sistemas de telecomu-
cobrindo diferentes erros, mas não sua esse tipo de erro exige que uma cópia nicações e, principalmente, em centrais
totalidade como discutido acima. Embora dos dados seja mantida. Por exemplo, em telefônicas. O objetivo é ter um supervisor
a diversidade de versões contribua para estruturas estáticas, uma cópia pode ser de software monitorando o processamento
cobrir uma quantidade maior de erros e mantida na memória. de ligações telefônicas feitas pelo software
melhorar a confiabilidade do software, • Comparação por erros de associação – de controle da central e, quando o sistema
os custos que advém dessa abordagem, comparação por associação requer que supervisionado (ou seja, a central telefôni-
devido à necessidade de manter N equipes informação redundante seja mantida entre ca) fornece uma saída inválida, dado que
de desenvolvimento e fazer manutenção diferentes estruturas de dados ou campos a saída não está em conformidade com a
em N versões do programa, tornam sua de uma estrutura de dados. Assim, a de- especificação, então o supervisor observa o
aplicabilidade um tanto limitada. tecção de inconsistência se torna possível comportamento incorreto e o detecta com
Recovery Blocks (RB ou Blocos repara- baseada nesta informação redundante. uma falha. Isto é registrado em relatório.
dores) é similar a N-version programming, • Erros de comparação de formatos – a Se várias falhas são detectadas, seu relato
uma vez que várias versões são utilizadas. comparação de formatos assegura que contínuo e imediato faz com que opera-
Contudo, ela difere no fato que versões dos dados das estruturas de dados sejam dores possam tomar a atitude corretiva
adicionais são usadas apenas se a atual é (praticamente) corretos. Verificação de o mais cedo possível antes que haja uma
suspeita de estar produzindo resultados limite de dados é o exemplo mais intuitivo degradação na qualidade do serviço ofe-
incorretos. Considere a necessidade de um de comparação de formatos. recido pelo sistema.

Edição 08 – Engenharia de Software Magazine 29


Se também considerarmos o perfil opera- foram destacadas e um conjunto de quatro
Dê seu feedback sobre esta edição!
cional, isto é, o conjunto de operações que técnicas discutidas. Considerar a confiabili- Feedback
eu
A Engenharia de Software Magazine

s
um software pode executar juntamente dade como fator importante do desenvolvi-


tem que ser feita ao seu gosto.

sobre e
com a probabilidade na qual elas ocorrem mento de software é obrigatório, e também
Para isso, precisamos saber o que você,
do sistema de software (supervisionado), considerá-la na fase operacional é essencial

s
ta
leitor, acha da revista! edição
que retrata como ele é utilizado no está- para sistemas de grande porte. O próximo
gio operacional, será possível especificar artigo apresentará exemplos baseados nos Dê seu voto sobre este artigo, através do link:
categorias de entradas para o sistema e a conceitos introduzidos neste artigo. www.devmedia.com.br/esmag/feedback
probabilidade de suas ocorrências. Isto
permitirá uma avaliação mais adequada
Links
do novo padrão de uso do sistema de
software (supervisionado) no estágio História da Indústria de Software
operacional. www.softwarehistory.org
Software Reliability Engineering: A Roadmap
Comentários Finais http://csse.usc.edu/classes/cs589_2007/Reliability.pdf
Software permeia nosso cotidiano e é The 19th IEEE International Symposium on Software Reliability Engineering (ISSRE)
provavelmente uma das entidades quase http://www.csc2.ncsu.edu/conferences/issre/2008/
onipresentes nos sistemas atuais e, portan- Software Metrics and Reliability
to, essencial para atividades das pessoas e http://satc.gsfc.nasa.gov/support/ISSRE_NOV98/software_metrics_and_reliability.html
das empresas. Este artigo apresentou um Software Quality
dos atributos de qualidade essencial aos http://en.wikipedia.org/wiki/Software_quality
sistemas de software: a confiabilidade de Reliability Engineering
software. Sua necessidade e importância http://en.wikipedia.org/wiki/Reliable_system_design

30 Engenharia de Software Magazine – Confiabilidade de Software


Maturidade em Gerenciamento de Projetos
Uma Visão Analítica

De que se trata o artigo:


Apresentação de uma visão geral
Luciana Leal sobre Maturidade em Gerenciamento
lql@cin.ufpe.br de Projetos.
Doutoranda e Mestre em Ciência da Computação

N
os dias atuais, a execução de
pela Universidade Federal de Pernambuco. Gradu- Para que serve:
projetos está se tornando comum
ada em Ciência da Computação pela Universidade Fornecer uma visão geral sobre ma-
Federal da Paraíba e tecnóloga em Telemática e remete ao desafio de gerenciar
turidade às organizações que desejam
pelo Centro Federal de Educação Tecnológica da projetos com eficiência. O uso efetivo de
Paraíba. melhorar o gerenciamento de projetos.
tecnologias durante esta atividade pode
Cristine Gusmão determinar o sucesso de qualquer negócio Em que situação o tema é útil:
cristine@dsc.upe.br e satisfazer as expectativas dos clientes. Maturidade em gerenciamento de
Professora Assistente do Departamento de Contudo, em busca do sucesso, o uso projetos é um assunto que vem sendo
Sistemas e Computação da Escola Politécnica
adequado destas tecnologias é crucial. É bastante explorado. Assim, este artigo
da Universidade de Pernambuco (POLI UPE),
onde leciona várias disciplinas na graduação e possível observar uma crescente busca esclarece alguns pontos a respeito do
pós-graduação (especialização e mestrado) e por melhoria de processos relacionados, tema no sentido de auxiliar organizações
das Faculdades Integradas Barros Melo. Dou- principalmente, à gerência de projetos e à na escolha de um modelo que avalie seu
tora e Mestre em Ciência da Computação pela
engenharia de software em várias organi- nível de maturidade e apresentar um co-
Universidade Federal de Pernambuco. Graduada
em Engenharia Elétrica Eletrotécnica pela zações de Tecnologia da Informação (TI). nhecimento inicial para profissionais na
Universidade Federal de Pernambuco. Segundo diversos autores, o conceito área de gerenciamento e interessados
Hermano Perrelli de sucesso encontra-se atrelado ao de
hermano@cin.ufpe.br maturidade, podendo-se observar que
Atualmente é professor Adjunto e Vice-Diretor do os fatores determinantes para o sucesso ciamento de projetos e uma visão compa-
Centro de Informática da Universidade Federal de de um projeto estão ligados ao grau de rativa de alguns dos modelos que estão
Pernambuco. Consultor e instrutor da Qualiti em evidência.
maturidade da organização em que ele é
Software Processes. Certificado PMP - Pro-
ject Management Professional pelo PMI. PhD In desenvolvido.
Computing Science pela University of Dentro deste contexto, este artigo tem Fatores que Levam ao Sucesso de
Glasgow, mestre em Informática pela Univer- o objetivo de apresentar os fatores que um Projeto
sidade Federal de Pernambuco e graduado em Diversos autores definem sucesso e
levam ao sucesso de projetos, conceitos
Engenharia Eletrônica pela Universidade Federal
de Pernambuco. básicos da área de maturidade em geren- fracasso para melhor entender o desempe-

32 Engenharia de Software Magazine – Maturidade em Gerenciamento de Projetos


P L A N E J A M E N TO

nho de projetos. Uma definição simplista dores internos, os KPIs. Estes indicadores Maturidade em Gerenciamento de
diz que o sucesso ocorre quando se atin- podem ser revisitados periodicamente ao
Projetos
gem as metas originais de custo, prazo e longo do ciclo de vida do projeto, e in-
O estudo da maturidade em gerencia-
qualidade. Mas é fato que existem outros cluem utilização da metodologia de gestão mento, assim como o estudo do próprio
fatores que o influenciam, por exemplo, de projetos, estabelecimento dos processos gerenciamento de projetos, é assunto que
a percepção que os stakeholders têm do de controle, uso de indicadores interinos, vem sendo discutido há pouco tempo, mas
desempenho do projeto. qualidade de recursos aplicados versus tem ocupado lugar de destaque.
Neste contexto, podemos visualizar uma planejados e envolvimento do cliente. Maturidade pode ser definida como o
sutil distinção entre sucesso do projeto e Prado e Archibald (2007), de acordo com desenvolvimento de sistemas e processos
sucesso da gestão de projetos. O sucesso pesquisa realizada em 2006, indicam al- que são, por natureza, repetitivos e garan-
do projeto está relacionado à aceitação do guns fatores determinantes do sucesso de tem uma alta probabilidade de que cada
produto por parte do mercado e o sucesso projetos de TI: (i) Complexidade dos pro- um deles seja um sucesso [Kerzner 2000].
da gestão de projetos se caracteriza por as- jetos (dificuldades intrínsecas da carteira Contudo, processos e sistemas repetitivos
pectos clássicos: custo, prazos, qualidade de projetos); (ii) Motivação da equipe; (iii) não são por si só, garantia de sucesso, ape-
e satisfação do cliente. Nível de competência técnica da equipe nas aumentam sua probabilidade. Assim,
Existe uma definição de sucesso que con- para as necessidades da carteira de proje- podemos observar que a maturidade em
sidera na sua concepção aspectos externos tos; (iv) Cenário de clientes/concorrência/ gestão de projetos está ligada a quão hábil
e internos, onde os primeiros estão mais pressão dos negócios/fatores externos; (v) uma organização está no exercício de ge-
próximos do gerente e equipe, os últimos Nível de maturidade em gerenciamento de renciar seus projetos [Prado 2008].
estão mais ligados ao comportamento dos projetos do setor. Ainda dentro da mesma Kerzner (2000) classifica em cinco as fa-
clientes. Esses aspectos internos são: custo, pesquisa, os autores afirmam que, para ses do ciclo de vida para a maturidade em
prazo e qualidade e os aspectos externos: uma amostra suficientemente ampla de gestão de projetos: Embrionária, Aceitação
uso, satisfação e eficácia. Com base nesta empresas, a soma dos quatro primeiros pela gerência executiva, Aceitação pelos
definição, é possível dizer que o sucesso fatores (fatores de contingência) tem a gerentes da área, Crescimento e Maturi-
da gestão de projetos tende a influenciar mesma contribuição média apesar de apre- dade. O autor ainda afirma que é possível
positivamente o sucesso do produto. sentarem uma forte dispersão. E concluem observar que as empresas que almejam
Outra linha de pensamento acredita que que, caso o terceiro fator esteja incluído no desenvolver-se e chegar a níveis de matu-
não existe esta distinção de sucesso, mas quinto, é possível supor uma correlação ridade maiores já passaram ou ainda estão
que ele possui características multidimen- positiva entre sucesso e maturidade. passando por algumas destas fases.
sionais e que cada uma destas dimensões Atualmente existem vários modelos de
pode variar com o tempo, sendo algumas A Relação entre Sucesso e maturidade que possuem forte fundamen-
delas: eficiência do projeto, impacto no Maturidade tação em conceitos de gerenciamento da
consumidor, cumprimento de metas do O grande interesse sobre maturidade qualidade, como, por exemplo, os mode-
projeto, satisfação com a qualidade téc- nos tempos atuais pode ser explicado pela los baseados em cinco níveis incrementais
nica do produto, e sucesso do negócio, estreita relação existente entre maturidade de maturidade ou ainda as práticas para o
entre outras. Mas apesar dos fatores e sucesso. As pesquisas realizadas no as- melhoramento contínuo dos processos de
apresentados, convém lembrar que, para sunto apresentam o nível de maturidade gerenciamento.
que o gerente e sua equipe possam tratar de uma organização como um dos fatores
adequadamente os fatores condicionan- determinantes para se chegar ao sucesso Modelos de Maturidade
tes de sucesso, é necessário que haja um em projetos. As organizações a cada dia têm aumenta-
consenso sobre os critérios de sucesso Prado e Archibald (2007) apontam como do a sua preocupação com os projetos que
utilizados no projeto e que estes critérios positiva a relação entre os dois conceitos. desenvolvem. É notório o investimento em
estejam bem definidos. O Project Manager Competency Development, ferramentas, técnicas, treinamento e capa-
Algumas empresas definem sucesso em do PMI, associa sucesso à maturidade, a citação em gerenciamento de projetos, que
termos de fatores críticos (CSFs – Critical fatores contingenciais e a competência do tem aumentado de forma considerável.
Success Factors) e de indicadores-chave de gerente de projetos. Kerzner (2000) tam- Modelos de maturidade são mecanismos
desempenho (KPIs – Key Performance Indi- bém fala da relação sucesso-maturidade, capazes de quantificar numericamente a
cators) [Kerzner 2000]. Os CSFs atendem além de outros autores. maturidade. Estes modelos auxiliam a ela-
às necessidades dos clientes e medem o Os resultados positivos encontrados boração de processos, indicam melhores
resultado final do projeto. Dentre os mais nestas pesquisas aumentam o esforço das práticas e fazem com que as organizações
utilizados podem ser citados: cumpri- organizações a fim de evoluir dentro de se desenvolvam de forma constante.
mento do cronograma, atendimento do níveis de maturidade, motivadas pelo A partir da década de 90, surgiram di-
orçamento, concretização da qualidade, desejo de aumento do sucesso na execução versos modelos para avaliar a maturidade
conveniência e oportunidade da assinatu- de projetos. As empresas estão cada vez das organizações em gerenciamento de
ra do contrato, cumprimento do processo mais conscientes tanto da importância projetos, quase todos inspirados no modelo
de controle de mudança e aditivos do do gerenciamento de projetos, para con- de maturidade em desenvolvimento de
contrato. A qualidade do processo interno cretizar suas estratégias, como de que o software SW-CMM, que é voltado princi-
utilizado para alcançar os resultados finais amadurecimento pode levar à excelência palmente para aspectos técnicos do proces-
dos projetos é medida através dos indica- [Prado 2008]. so de desenvolvimento [Prado 2008].

Edição 08 – Engenharia de Software Magazine 33


O modelo de maturidade CMMI (Capa- petências Comportamentais e Contex- gerenciamento de portfólio, programas e
bility Maturity Model Integration) [SEI 2001] tuais. Convém lembrar que, segundo os projetos. O MMGP-Corporativo divide
é organizado em áreas de processo, áreas modelos Prado-MMGP, uma organização a organização em duas grandes áreas:
de conhecimento e níveis de maturidade. pode ocupar parcialmente diversos níveis setores formalmente organizados para
Segundo o CMMI, atingir um nível de de maturidade e que as dimensões do o gerenciamento de projetos e setores
maturidade significa implementar todas as modelo são desenvolvidas e melhoradas não-formalmente organizados para o ge-
atividades deste nível e mais todas as ativi- a cada nível alcançado. renciamento. Também possui cinco níveis,
dades do nível ou níveis anteriores a ele. Uma organização no Nível Inicial tem contudo estes possuem um significado
Muitos dos modelos de maturidade para como característica o gerenciamento de um pouco diferente dos modelos CMM/
gerenciamento de projetos apresentam a projetos executado de forma intuitiva e a CMMI. Estes níveis são:
estrutura de cinco níveis proposta pelo inexistência de uma metodologia. Não se • Inicial: a empresa não tem nenhuma
CMM/CMMI, contudo algumas diferen- faz planejamento ou controle do projeto experiência organizada em gerencia-
ças são observadas no conteúdo de cada e o nível de conhecimento em gerencia- mento de projetos, tanto setorial como
nível. Dentre os modelos existentes podem mento de projetos não é uniforme entre corporativo;
ser destacados Prado-MMGP [Prado os principais envolvidos. • Projetos Isolados: existem algumas
2008], P3M3 [OGC 2008], OPM3 [PMI No Nível Conhecido, os investimentos iniciativas isoladas bem-sucedidas de
2003] e KPMMM [Kerzner 2001], que serão em treinamento são regulares e uma tenta- gerenciamento de projetos;
apresentados a seguir. tiva sutil de padronização de procedimen- • Setorial: alguns setores da organiza-
Modelos Prado-MMGP tos indo em direção a uma metodologia ção se organizaram adequadamente para
Os Modelos de Maturidade em Geren- única. A partir dos treinamentos realiza- gerenciar projetos;
ciamento de Projetos, também conheci- dos, procura-se utilizar uma linguagem • Portfólio e Programas: a empresa pos-
dos como modelos Prado-MMGP, foram comum. Este nível também se caracteriza sui regras para identificar e gerenciar os
lançados entre 2002 e 2004 por Darci por iniciativas isoladas de se efetuar pla- portfólios e programas corporativos;
Prado. Estes modelos dizem respeito à nejamento e controle. • Corporativo: a empresa possui uma
(i) avaliação da maturidade nos setores O Nível Padronizado caracteriza-se pela centralização corporativa para estabelecer
de uma organização e (ii) a avaliação da padronização de procedimentos, difundi- regras e acompanhar a evolução de todos
organização como um todo. O Modelo da e utilizada sob a liderança de um Escri- os setores.
Setorial foi o primeiro a ser desenvolvido tório de Gerenciamento de Projetos (EGP) A avaliação da maturidade setorial e
e tem o intuito de realizar a avaliação iso- e metodologia única praticada por todos. corporativa pode ser realizada através
lada dos departamentos da organização. Este nível procura efetuar alinhamento de questionários, cada um contendo 40
O Modelo Corporativo procura avaliar de com as estratégias organizacionais. questões referentes aos modelos, e a partir
forma global o gerenciamento de projetos No quarto nível da escala de maturidade da avaliação inicial, a organização pode
de uma organização. consolidam-se as ações iniciadas no nível 3 desenvolver seu plano de crescimento,
Os modelos desenvolvidos por Prado em relação à metodologia, informatização, com ou sem intermédio de consultoria.
apresentam como sua principal vantagem estrutura organizacional e alinhamento P3M3 – Portfolio, Programme and Pro-
a simplicidade, em meio a tantos modelos estratégico. Neste nível os resultados ject Management Maturity Model
de maturidade complexos. Além disso, os gerenciais são armazenados em uma O Portfolio, Programme and Project Ma-
modelos são pequenos e podem ser utili- base de dados que possui as informações nagement Maturity Model (P3M3) é um
zados no desenvolvimento de um plano sobre projetos passados e a aplicação de modelo europeu desenvolvido pelo Office
de crescimento, que almeja níveis maiores processos de gerenciamento de projetos é of Government Commerce (OGC) em 2006.
na escala da maturidade gerencial. reconhecida como fator de sucesso. O modelo descreve atividades que estão
O Modelo Setorial possui cinco níveis de No Nível Otimizado, as iniciativas come- relacionadas ao gerenciamento de proje-
maturidade e seis dimensões. Os níveis çadas nos níveis 2, 3 e 4 atingem um nível de tos, programa e portfólio dentro de áreas
dizem respeito ao grau de maturidade excelência. A melhoria pode ser visualizada que contribuem para alcançar sucesso
aplicado a cada setor ou organização. As a partir dos resultados obtidos: processos em projetos.
dimensões são condizentes com a melho- de prazo, custo e qualidade otimizados, O P3M3 originou-se de uma extensão
ria dentro de cada nível. Assim, cada nível modelo de gerenciamento de projetos do OGC’s Project Management Maturity
pode conter as seis dimensões da maturi- adequado às necessidades da organização, Model, o qual foi baseado no framework de
dade que, dependendo do nível, podem cultura de gerenciamento amplamente maturidade de processos o qual evoluiu
apresentar variações de intensidade. disseminada e praticada, uso rotineiro e para o Capability Maturity Model (CMM).
Os níveis de maturidade do modelo eficiente da metodologia de gerenciamento Possui três modelos individuais: Portfo-
Prado-MMGP são: (1) Inicial, (2) Conhe- de projetos, estrutura organizacional ade- lio Management Maturity Model (PfM3),
cido, (3) Padronizado, (4) Gerenciado quada, harmonia e produtividade nos rela- Programme Management Maturity Model
e (5) Otimizado. E as dimensões são as cionamentos humanos e total alinhamento (PgM3) e Project Management Maturity
seguintes: Competências Técnicas, Uso com os negócios da empresa. Model (PjM3). Por possuí três modelos que
Prático de Metodologia, Informatização, O Modelo Corporativo, aplicado à or- podem ser visualizados separadamente, o
Estrutura Organizacional, Alinhamento ganização como um todo, avalia a capaci- P3M3 permite a avaliação independente
com os Negócios da Organização, Com- dade de se obter resultados por meio do de qualquer um deles.

34 Engenharia de Software Magazine – Maturidade em Gerenciamento de Projetos


P L A N E J A M E N TO

Níveis de Maturidade
Nível 1 Nível 2 Nível 3 Nível 4 Nível 5
Inicial Repetível Definido Gerenciado Otimizado
O comitê executivo reconhece A organização consegue assegurar A organização tem o controle A organização possui e mantém A organização consegue executar
programas e executa uma lista que em cada programa e/ou centralizado dos programas/ avaliações do desempenho de melhoria de processo contínua
informal dos seus investimentos projeto no portfólio/programa os projetos e consegue seus portfólio/ com reação pró-ativa aos
em programas e projetos. processos e procedimentos estão individualmente adaptar os programas/projetos problemas e gerenciamento da
A organização consegue sendo executados de acordo com processos de forma a se ajustar a e executa gerenciamento de tecnologia para os portfólio/
reconhecer programas e os um padrão mínimo especificado um projeto específico qualidade organizacional para programas/
executa de forma diferente para melhor predizer o desempenho projetos a fim de melhorar
cada projeto. futuro sua habilidade de descrever o
A organização consegue desempenho e otimizar processos
reconhecer projetos e os executa
de forma diferente para cada
negócio.
Tabela 1. Níveis de Maturidade no P3M3

Seguindo a estrutura do CMM, o P3M3 nejamento, gerenciamento da informação, de proporcionar maiores detalhes sobre o
usa um framework de cinco níveis de ma- e treinamento e desenvolvimento. suporte a decisões e planos de melhoria.
turidade para cada um dos modelos indi- As organizações podem avaliar seu ní- Uma dimensão envolve visualizar melho-
viduais, sendo cada um composto pelos vel de maturidade pelo P3M3 através do res práticas em termos de suas associações
níveis: 1 - Inicial, 2 - Repetível, 3 - Definido, questionário de auto-avaliação disponível com os estágios progressivos de melhoria
4 - Gerenciado e 5 - Otimizado. A Tabela 1 no site www.p3m3-officialsite.com ou no processo: padronização, medição, con-
apresenta os níveis sumarizados para cada através de revisão formal. trole e melhora contínua. Outra dimensão
um dos modelos individuais. OPM3 - Organizational Project Mana- envolve o progresso de melhores práticas
Os níveis de maturidade do P3M3 indi- gement Maturity Model associado com cada domínio, primeiro en-
cam como áreas de processo-chave (KPAs Após seis anos de pesquisa e desenvol- dereçando o Gerenciamento de Projeto, de-
– Key Process Areas) podem ser estrutura- vimento, em 2003 o Project Management pois o Gerenciamento de Programa e, final-
das hierarquicamente para definir uma Institute - PMI apresentou o modelo OPM3 mente, o Gerenciamento de Portfólio. Cada
progressão de capacidade, ou aumento (Organizational Project Management Matu- uma dessas progressões é um contínuo ao
de maturidade, que a organização pode rity Model). Através de uma pesquisa rea- longo do qual a maioria das organizações
utilizar a fim de alcançar seus objetivos e lizada com mais de 30.000 profissionais, aspira chegar. Dentro dessas duas dimen-
planejar melhoria. foram analisados os pontos fortes e fracos sões está a progressão das capacidades que
Existem sete perspectivas de processo dos modelos contemporâneos de maturi- leva às melhores práticas. Por último, o
dentro do P3M3 que definem as caracte- dade em gerenciamento de projetos. De OPM3 também categoriza habilidades em
rísticas chave de uma organização madu- acordo com o PMI (2003), foram avaliados termos de suas associações com os cinco
ra. Estas perspectivas se aplicam aos três mais de 27 modelos de maturidade em grupos de processo de gerenciamento de
modelos individuais e a todos os níveis de organizações de 35 países. projeto: Iniciação, Planejamento, Execução,
maturidade. Cada perspectiva descreve os O OPM3 surge não apenas como um Controle e Conclusão.
processos e práticas que devem ser implan- modelo organizacional, mas oferece uma Capacidade é definida como uma com-
tados em um dado nível e maturidade. grande base de dados de melhores prá- petência específica que deve existir em
Para cada uma das perspectivas existe um ticas e indicadores de capacidade. Essas uma organização para que ela execute
conjunto de atributos que são comuns aos informações permitem que se localize a processos de gerenciamento de projeto e
níveis de maturidade. Atributos descrevem organização em relação às práticas aplica- entregue produtos e serviços. Capacida-
o perfil pretendido para cada perspectiva das por ela e permite que seja comparada des são, portanto, passos incrementais que
em cada nível de maturidade, e, além disso, com o padrão proposto. levam a uma ou mais melhores práticas.
os tópicos, processos e práticas que serão O modelo foi intencionalmente projetado Para se utilizar por completo o conteúdo
desenvolvidos e sofrerão mudanças quan- sem níveis de maturidade. Estabelecer do modelo, seus diretórios são essenciais.
do o nível de maturidade muda. níveis específicos de maturidade pode ser Os diretórios de (i) Melhores Práticas,
O P3M3 possui dois tipos de atributos: relativamente simples se a progressão da (ii) Capacidades e (iii) Planejamento de
atributos específicos e atributos genéricos. maturidade é unidimensional, contudo o Melhorias são utilizados para se avaliar
Atributos específicos se relacionam com OPM3 acredita que esta progressão é mul- uma organização diante do OPM3 e para
uma perspectiva de processo particular. tidimensional. Múltiplas perspectivas para se avaliar o escopo e a seqüência dos pos-
Atributos genéricos são utilizados em avaliar a maturidade permitem flexibilida- síveis melhoramentos.
todas as perspectivas de processo em um de para aplicar o modelo, de acordo com A avaliação pode ser realizada através de
dado nível de maturidade e incluem: pla- as necessidades de uma organização, além 151 questões que fazem parte do modelo.

Edição 08 – Engenharia de Software Magazine 35


O KPMMM possui um questionário
com 183 questões de múltipla escolha que
avaliam e enquadram as organizações
em um dos cinco níveis de maturidade.
A avaliação também pode ser realizada,
mediante autorização, através da web pelo
site http://www.iil.com/pm/kpmmm/.
Kerzner Project Management Maturity
Assessment Tool é a ferramenta que faz a
avaliação de maturidade, de acordo com
as áreas de conhecimento do PMBOK®
Guide. A ferramenta, que precisa de uma
autorização para uso, fornece o nível de
maturidade de acordo com o KPMMM e
apresenta um relatório com um plano de
ação a ser executado pela organização.

Comparativo dos Modelos de


Maturidade
Conforme já comentado neste artigo, os
Figura 1. Níveis de Maturidade do Modelo KPMMM
modelos KPMMM, P3M3 e Prado-MMGP
possuem uma abordagem estagiada que
No entanto, se a organização deseja alcan- de entender bem os seus conceitos básicos
sugere o embasamento no CMM.
çar maiores percentuais de maturidade, e linguagem. O KPMMM é um modelo de acesso fácil
deve realizar cinco passos: Preparar-se • Nível 2 – Processos Comuns: Neste e é simples de ser utilizado. De acordo com
para a avaliação, Avaliar, Planejar me- nível inicia-se o reconhecimento dos o PMI (2008), está entre os três modelos
lhorias, Implementar melhorias e Repetir benefícios tangíveis de gerenciamento de maturidade mais utilizados no Brasil,
o processo. Estes passos conduzem a de projetos. Gerenciamento de escopo, contudo é o único dos apresentados que
organização às capacidades necessárias prazo e custos começa a ser realizado e só aborda a dimensão Projeto no estudo
para avançar no caminho para aumentar assim o sucesso em um projeto consegue da maturidade organizacional.
sua maturidade. Ainda, sugerem que o ser repetido em outros projetos. P3M3 é um conjunto de modelos indivi-
processo seja repetido, incentivando a • Nível 3 – Metodologia Única: A inte- duais que evoluiu do CMM. Não cita um
melhoria contínua. gração de processos em uma metodologia conhecimento base em gerenciamento de
KPMMM – Kerzner Project Manage- única caracteriza o nível 3. Começa a sur- projetos, como o PMBOK®, e se fundamen-
ment Maturity Model gir apoio de todos os níveis gerenciais da ta na literatura existente sobre o assunto.
O modelo Kerzner Project Management organização em prol de um melhor geren- Possui um questionário de avaliação de
Maturity Model, o KPMMM, foi proposto ciamento de projetos e existe treinamento maturidade relativamente grande e de
por Harold Kerzner em 2001. O KPMMM contínuo em gerenciamento de projetos. simples aplicação. É um modelo que,
define o estágio de maturidade atual da segundo o apresentado no benchmarking
• Nível 4 – Benchmarking: O nível 4
organização, e a partir daí fornece orienta- realizado pelo PMI [PMI 2008], não apre-
estabelece um PMO (Project Management
ções em relação ao planejamento e às ações senta uma porcentagem significativa para
Office), que deve aprimorar os processos
para implementação e desenvolvimento ser mencionado o seu uso.
para o gerenciamento de projetos. Co-
gradual do gerenciamento de projetos. É Os Modelos Prado-MMGP foram desen-
meçam a ser realizados benchmarks que
uma aplicação prática do gerenciamento volvidos no Brasil e dispõem de avaliação
devem abranger as análises quantitativa
de mudanças, onde se busca minimizar a bem mais simples e direta que os demais.
(processos e metodologias) e qualitativa.
resistência à implementação do sistema A avaliação setorial é realizada através
A organização reconhece que a melhoria
através da disseminação da cultura. de um questionário pequeno, que pode
de processos é necessária para manter
É composto por cinco níveis: Linguagem ser respondido por qualquer funcionário.
Comum, Processos Comuns, Metodologia vantagem competitiva.
Esses modelos foram concebidos a partir
Única, Benchmarking e Melhoria Contínua, • Nível 5 – Melhoria Contínua: No nível
das experiências práticas bem sucedidas
visualizados na Figura 1 e apresentados de Melhoria Contínua, a organização re-
de Darci Prado. Por ser fácil de utilizar e
a seguir: gistra as lições aprendidas para beneficiar
de fácil acesso (www.maturityresearch.
• Nível 1 - Linguagem Comum: Carac- seus projetos futuros. O planejamento es-
com) é uma boa opção para uma avaliação
terizado pelo uso de gerenciamento de tratégico para o gerenciamento de projetos inicial da maturidade. Contudo, o Modelo
projetos de forma esporádica. Não existe é um processo contínuo e a metodologia Corporativo ainda se encontra numa fase
investimento em treinamento e a orga- adotada pode ser melhorada de acordo inicial e não fornece suporte para elaborar
nização não reconhece a importância do com as informações obtidas através de um plano de crescimento das dimensões
gerenciamento de projetos e a necessidade benchmarking. Programa e Portfólio.

36 Engenharia de Software Magazine – Maturidade em Gerenciamento de Projetos


P L A N E J A M E N TO

Característica OPM3 P3M3 KPMMM Prado-MMGP


Conceitos em Gerenciamento de PMBOK® Guide Literatura de gerenciamento de PMBOK® Guide PMBOK® Guide, literatura de
Projetos projetos gerenciamento de projetos
Domínios Projeto, Programa e Portfólio Projeto, Programa e Projeto Projeto, Programa e Portfólio
Portfólio
Dimensões da Maturidade Maturidade Corporativa Maturidade Corporativa Maturidade Corporativa Maturidade Setorial e Maturidade
Corporativa
Avaliação do Nível de Maturidade Questionário e diagnóstico Questionário e diagnóstico Questionário e diagnóstico Questionário e diagnóstico
efetuado pelo consultor efetuado pelo consultor efetuado pelo consultor efetuado pelo consultor
Medição da Avaliação Percentual (0 a 100%) desdobrado Numérica (entre 1 e 5) Numérica (entre 1 e 5) Numérica (entre 1 e 5) e
pelas dimensões de avaliação Percentual de Aderência a cada
nível e a cada dimensão
Simplicidade de uso Não Sim Sim Sim
Universalidade Sim Sim Sim Sim
Plano de Melhorias Fornecido pelo sistema Produzido pelo consultor e Fornecido pelo sistema Produzido pelo consultor e
informatizado (disponível em CD) profissionais da empresa informatizado ou livro profissionais da empresa
Tabela 2. Comparativo dos Modelos de Maturidade

Destes quatro, apenas o OPM3 utiliza • Domínios: Projeto, Programa e Por- ciado ao amadurecimento da organização.
valores percentuais ou um contínuo de tfólio. Tendo em vista esta afirmação, diversos
maturidade ao invés da classificação em • Dimensões da Maturidade: Corpora- modelos foram desenvolvidos para auxi-
níveis sugerida pelo CMM. É um modelo tiva ou Setorial. liar organizações a alcançarem sucesso no
mais robusto e possui uma forma de ava- • Avaliação do Nível de Maturidade: gerenciamento de seus projetos.
liação diferente dos demais. Vem sendo formato da avaliação. Os modelos apresentados neste artigo
bastante utilizado e, de acordo com PMI • Medição da Avaliação: medida uti- são competitivos entre si. São boas opções
(2008), é adotado por 39% das empresas lizada pelos modelos (Percentual ou para a avaliação e para o planejamento
brasileiras que participaram do benchma- Numérica). de melhorias que, se aplicadas, levam a
rking de 2007. Apresenta um questionário • Simplicidade de uso: facilidade de maiores níveis de maturidade. Assim, es-
para uma avaliação preliminar do nível aplicação. tes modelos contribuem para o sucesso e,
de maturidade, e um número razoável de • Universalidade: o modelo pode ser em longo prazo, para que as organizações
melhores práticas a serem implementadas. utilizado por diferentes tipos de projetos. possam caminhar rumo à excelência
Estas características fazem dele um mode- • Plano de Melhorias: orientações para
lo mais difícil de utilizar, pelo menos num o desenvolvimento de um plano de me-
primeiro momento. lhorias após a realização da avaliação.
Com o intuito de sintetizar os modelos A seguir, a Tabela 2 apresenta os qua- Dê seu feedback sobre esta edição!
Feedback
apresentados, algumas características tro modelos de maturidade discutidos, eu
A Engenharia de Software Magazine
s

foram observadas por se acreditar que resumindo as principais características tem que ser feita ao seu gosto.

sobre e
elas descrevem um bom modelo de ma- de cada um. Para isso, precisamos saber o que você,
s
ta
turidade: leitor, acha da revista! edição

• Conceitos em Gerenciamento de Pro- Considerações Finais Dê seu voto sobre este artigo, através do link:
jetos: a base de conceitos em gerenciamen- Segundo alguns pesquisadores, o suces-
www.devmedia.com.br/esmag/feedback
to de projetos utilizada pelo modelo. so na execução de projetos pode ser asso-

Referências

[Kerzner 2000] Kerzner, H. (2000), “Gestão de Projetos: As Melhores Práticas”. John Wiley & Sons.
[Kerzner 2001] Kerzner, H. (2001) “Strategic Planning for Project Management using a Project Management Maturity Model” 1ª ed. John Wiley & Sons.
[OGC 2008] OGC (2008) “Portfolio, Programme & Project Management Maturity Model (P3M3)”. P3M3 Public Consutation Draft Versão 1.0, Junho.
[PMI 2003] PMI – Project Management Institute - USA (2003) “Organizational Project Management Maturity Model (OPM3)”, Knowledge Foundation.
[PMI 2008] PMI – Project Management Institute – Brasil (2008) “Estudo de Benchmarking em Gerenciamento de Projetos Brasil 2007”, http://ww.pmi.org.br, Agosto.
[Prado e Archibald 2007] Prado, D.; Archibald, R. (2007) “Pesquisa sobre Maturidade e Sucesso em T.I. – Relatório Anual 2006”, disponível em: http://www.maturityresearch.com/
[Prado 2008] Prado, D. (2008) ”Maturidade em Gerenciamento de Projetos” – Série Gerência de Projetos – Volume 7 INDG Tecs.
[SEI 2001] SEI - Software Engineering Institute. (2001) CMMI - Capability Maturity Model Integration version 1.1 Pittsburgh, PA. Software Engineering Institute, Carnegie Mellon University. USA.

Edição 08 – Engenharia de Software Magazine 37


Avaliação Independente de Garantia
da Qualidade
De que se trata o artigo:
Processo de Avaliação Independente
de Garantia da Qualidade. Neste artigo
apresenta-se o processo de Garantia da

A
Isabel Albertuni Garantia da Qualidade visa ava- Qualidade com base no MPS.BR nível F,
ialbertuni@gmail.com liar a aderência das atividades por que é necessário a realização de uma
Graduada em Análise de Sistemas pela FARGS em executadas e dos produtos de avaliação independente de Garantia da
2008. Autora de artigos na área de qualidade de
software (SBQS 2007 e W6-MPS.BR). Experiência trabalho gerados a padrões, processos, Qualidade e fatores críticos de sucesso.
de mais de 6 anos na área de TI atuando em procedimentos e requisitos estabelecidos
Para que serve:
desenvolvimento de software e de 3 anos na área e aplicáveis, fornecendo uma visão objeti-
de qualidade e melhoria de processos. Integrante Serve para esclarecimento e melhor en-
va e independente, tanto para atividades
desde 2008 do Comitê Setorial de Informática tendimento do tema por profissionais da
- Programa Qualidade RS. Atua desde 2006 na de processo quanto de produto, em rela-
área de qualidade e pelas organizações
Qualità Informática em projetos de melhoria de ção a desvios e pontos de melhoria, de
que pretendem implementar Garantia
processos baseados em MPS.BR e PGQP. forma a assegurar que a qualidade plane-
da Qualidade.
jada não será comprometida [Magalhães,
Josiane Brietzke Porto
2006]. Além de verificar se o processo Em que situação o tema é útil:
josiane_brietzke@hotmail.com
Pós-graduada em Melhoria de Processos de está adequado, sendo seguido e traba- A Garantia da Qualidade serve para
Software pela UFLA em 2008. Bacharel em lhando a favor da organização (evitando apoiar a gestão e execução dos pro-
Ciência da Computação pelo UNILASALLE em retrabalho, melhorando custos e prazos), jetos, proporcionando uma avaliação
2005. Autora de artigos na área de qualidade de
busca-se identificar desvios o quanto objetiva dos produtos de trabalho e
software (ASSE 2005, WIS 2005, CLEI Eletronic
Journal, W2–MPSBR, SBQS 2007 e W6-MPS. antes e acompanhar a sua resolução até dos processos em relação aos padrões e
BR). Experiência de mais de 5 anos na área de TI que seja concluído [Salviano, 2005]. A procedimentos estabelecidos. Além de
atuando em desenvolvimento de software e de garantia da qualidade fornece suporte ao apoiar a implementação dos processos
mais de 4 anos na área de qualidade e melhoria de
controle da qualidade por meio de evidên- na organização.
processos. Implementadora MR-MPS desde 2004,
Certified Quality Improvement Associate (CQIA) cia e confiança na habilidade do processo
desde 2006 e integrante desde 2008 do Comitê empregado em produzir um produto de
Setorial de Informática - Programa Qualidade software que atenda aos requisitos espe- lidade incluem auditorias (de produtos
RS. Atua desde 2005 na Qualità Informática em ou processos) e avaliações (appraisals ou
cificados [Salviano, 2005]. Ferramentas e
projetos de melhoria de processos baseados em
MPS.BR e PGQP. técnicas utilizadas pela garantia da qua- assessments) [Kasse, 2004].

38 Engenharia de Software Magazine – Avaliação Independente de Garantia da Qualidade


PROCESSO

Na Tabela 1 apresentamos os resultados


esperados deste processo.
Este processo serve de apoio para outros
processos que serão aplicados na organi-
zação e, para isso, deve ser integrado des-
de o início nas atividades do projeto. Seu
planejamento deve ocorrer em paralelo ao
planejamento do projeto e um plano de
qualidade deve ser estabelecido para que
sirvam de referência com relação ao que
Figura 1. Mapeamento comparativo entre normas modelos e metodologias [Biondo, 2007]
se aplicará de procedimentos, métodos
e padrões no projeto. Desta forma, GQA
Desta forma, o processo de Garantia da o desenvolvimento do projeto e produtos deve apoiar aos gerentes e suas equipes na
Qualidade da organização também pre- de trabalhos gerados será adequadamente utilização dos processos, a forma correta
cisa ter sua aderência verificada de forma utilizado e aplicado no projeto. de aplicá-los e na identificação de melho-
objetiva e independente. E, nesta situação, Garantia da Qualidade corresponde ria nos processos aplicados.
a equipe de garantia da qualidade não à área de processo do nível F e nível 2, Para assegurar que o planejado está sendo
pode conduzir sua própria auditoria, respectivamente dos modelos MR-MPS. realizado e aplicado no projeto, são neces-
sendo necessário que avaliadores externos BR e CMMI. As normas ISO/IEC 12207, sárias revisões e avaliações objetivas. Uma
(da própria organização ou contratados) ISO/IEC 15504 e metodologias, como por avaliação objetiva visa minimizar a subjeti-
realizem este avaliação de acordo com exemplo, Project Management Body of vidade e a influência do revisor. Uma for-
uma periodicidade previamente definida. Knowledge (PMBOK), também auxiliam ma muito utilizada de realizar a avaliação
Esta avaliação será tratada neste artigo na aplicação da Garantia da Qualidade, objetiva é através de auditorias. Auditoria,
por “Avaliação Independente de Garantia veja na Figura 1 o comparativo entre as ou qualquer tipo de avaliação objetiva, deve
da Qualidade”, porém na indústria de normas, modelos e metodologias. ser realizada por um grupo ou pessoa que
software também pode ser encontrada De acordo com SOFTEX (2007c), os prin- não tenha envolvimento direto no projeto,
como “Auditoria Externa de GQA” e “QA cípios da Garantia da Qualidade são: ou seja, deve ser independente.
do QA”. • Avaliar objetivamente os processos De acordo com Biondo (2007), a garantia
Este artigo está organizado da seguinte executados, produtos de trabalho e ser- da qualidade visa documentar e identificar
forma: a seção 2 apresenta uma visão geral viços em relação à descrição de processos as não-conformidades de acordo com a
sobre Garantia da Qualidade; a seção 3 aplicáveis, padrões e procedimentos; qualidade planejada para o projeto. Para tal
descreve a prática de Avaliação Indepen- • Identificar e documentar itens de não- identificação, uma das técnicas utilizadas
dente de Garantia da Qualidade; a seção 4 conformidades; é a auditoria de qualidade. A auditoria ve-
apresenta fatores críticos de sucesso para • Prover feedback para a equipe do rificará por meio de checklists os produtos
realização de uma Avaliação Independen- projeto e gerentes como resultados das e processos para certificar a conformidade
te de Garantia da Qualidade; e por fim, a atividades de Garantia da Qualidade; com os padrões, diretrizes, especificações
seção 5 trata das considerações finais. • Assegurar que as não-conformidades e procedimentos baseados nos planos
são corrigidas. predefinidos para garantir desempenho e
Garantia da Qualidade Estes objetivos correspondem ao propó- objetividade nos seus resultados.
Garantia quer dizer: tornar seguro; sito de Garantia da Qualidade no MPS.BR Grupo independente caracteriza-se por
dar proteção segura, proteger; afirmar, nível F, que é assegurar que os produtos não ter envolvimento direto nas ativi-
afiançar a veracidade de (Priberam); asse- de trabalho e a execução dos processos dades que serão verificadas, auditadas,
gurar o cumprimento ou a realização de estão em conformidade com os planos ou seja, a realização de uma auditoria de
(Dicionário Editora da Língua Portuguesa e recursos predefinidos [Softex, 2007a]. determinado projeto não poderá ser rea-
2009 - Acordo Ortográfico). Qualidade: o
grau no qual um sistema, componente ou
processo satisfaz os requisitos especifica- GQA 1. A aderência dos produtos de trabalho aos padrões, procedimentos e requisitos aplicáveis é avaliada
dos e as necessidades e expectativas do objetivamente, antes dos produtos serem entregues ao cliente e em marcos predefinidos ao longo do ciclo de vida do
cliente ou usuário [IEEE Std 610.12, 1990]. projeto.
De acordo com modelos de qualidade, GQA 2. A aderência dos processos executados às descrições de processo, padrões e procedimentos é avaliada
Garantia da Qualidade (GQA) diz respeito objetivamente.
a assegurar que os processos e produtos GQA 3. Os problemas e as não-conformidades são identificados, registrados e comunicados
de trabalho estão em conformidade com o
plano predefinido. Ou seja, tornar seguro, GQA 4. Ações corretivas para não-conformidades são estabelecidas e acompanhadas até as suas efetivas conclusões.
assegurar o cumprimento da qualidade, Quando necessário, o escalonamento das ações corretivas para níveis superiores é realizado, de forma a garantir sua
dos padrões predefinidos, garantir que solução.
aquilo que foi planejado de processo para Tabela 1. Resultados esperados GQA

Edição 08 – Engenharia de Software Magazine 39


lizada por um integrante da equipe deste nicadas e acompanhadas. De acordo com de um conjunto de resultados espera-
projeto, é necessário que um indivíduo Albertuni (2008), não-conformidades ca- dos (RAPs). Um determinado conjunto
que não tenha participação nas atividades racterizam falhas na aplicação do processo de atributos de processos demonstra a
do projeto seja o auditor. Isto assegura a e nos produtos de trabalho. A falta de capacidade de refinamento para realiza-
autoridade e autonomia organizacional, aplicação do processo também caracteriza ção do processo de acordo com o nível
sem envolvimento direto dos responsá- não conformidades. A não-conformidade de maturidade. Quanto maior o nível,
veis pelo desenvolvimento do produto de é composta por causa e efeito, então quan- maior será a capacidade necessária para
software ou pela execução do processo no do identificada, deve-se: realização do processo) representados na
projeto [ISO/IEC 12207:1995]. • Analisar a não-conformidade: verificar Tabela 2, conforme o nível de maturidade
Para isto, a empresa poderá manter uma seu impacto; no qual está o GQA, este processo deverá
equipe específica para realizar auditorias • Identificar e tratar os efeitos: quais são ser aplicado para todos os processos de-
de projetos e, caso não seja financeiramen- as conseqüências da não-conformidade finidos na organização. Isto por que estes
te viável manter uma equipe para este (pela não realização do processo ou falha resultados correspondem à capacidade do
fim, a empresa pode adotar auditorias em sua aplicação) e tratar seus efeitos; nível F, ou seja, para todos os processos
cruzadas, ou seja, um integrante de cada • Tratar a causa: identificar o motivo que compõem este nível, ou superior, já
equipe, ou ser nomeados pelo menos de pelo qual ocorreu desvio; que a capacidade dos níveis inferiores
duas a três pessoas de equipes diferentes • Verificar abrangência: identificar se a são incorporados aos níveis superiores.
a auditores, sendo que o projeto A não não-conformidade não impacta em outros Isto só não será aplicado ao nível G, pois é
poderá ser auditado pelo representante processos; um nível abaixo do nível F, no qual não se
de sua equipe. Exemplo: Projeto A é au- • Definir um plano de ação: registrar aplica Garantia da Qualidade e o número
ditado pelo representante do projeto B, a não-conformidade e uma ação para de atributos de processo para atendimento
Projeto B é auditado pelo representante tratamento, como contingência ou miti- também é menor.
do projeto C e Projeto C é auditado pelo gação. Para cada ação deve ser definido Como a aplicação de avaliação objetiva
um responsável para tratamento e prazo da aderência dos processos executados de
representante do projeto A. Assim estará
para realização. O prazo para o tratamento acordo com o processo e seus padrões está
garantida a independência do auditor
pode estar relacionado à severidade da determinada em um atributo de processo,
com relação aos resultados do projeto
não-conformidade. é necessário que o processo de Garantia da
auditado, para que não haja influência
• Acompanhar plano de ação: o plano Qualidade também seja avaliado objetiva-
em seu envolvimento.
de ação deve ser acompanhado até seu mente numa organização. Isto quer dizer
Outra característica de GQA é garantir
fechamento, ou seja, realização. Desta que tudo que se aplica a uma avaliação
que os produtos a serem entregues serão
forma garantirá a resolução da não- objetiva de projeto, também é verificável
avaliados. Isto assegura a qualidade dos
conformidade. nas atividades de GQA.
produtos que possuem entregas ao longo
Quando uma não-conformidade não é Ao verificar GQA, é necessário que um
do projeto. Nestas avaliações, o auditor
tratada no seu prazo definido, ou então auditor independente faça a avaliação,
verificará o cumprimento da etapa, in-
caracterizada como reincidência (proble- lembrando que auditor independente
tegridade dos documentos para que seja
ma identificado seqüencialmente), o trata- (ou grupo independente) caracteriza-se
entregue aquilo que foi planejado. De
mento deve ser escalonado para um nível por não realizar a atividade de GQA nos
acordo com o SOFTEX (2007c) a Garantia
superior do responsável pelo tratamento, projetos da organização. Nenhum auditor
da Qualidade é uma forma da organiza-
até que seu tratamento seja atendido. O de projeto poderá auditar, verificar, aplicar
ção se resguardar de possíveis faltas de escalonamento também poderá ocorrer revisões no processo de GQA, pois estará
qualidade e por isso a importância de ser de acordo com o tipo de severidade da verificando se as suas próprias atividades
conduzida ao longo do desenvolvimento não-conformidade e o ciclo de vida do de GQA (ou seja, resultados esperados de
do projeto, para que as correções sejam projeto se encontra. GQA – Tabela 1) estão sendo aplicadas na
feitas com o mínimo de retrabalho. organização.
Estas avaliações devem ocorrer ao lon- Avaliação Independente de Abaixo, segue uma relação dos resul-
go do projeto, não somente nos marcos,
Garantia da Qualidade tados esperados de GQA com relação a
verificando também o atendimento dos De acordo com os atributos de processo algumas verificações que são realizadas
processos no que diz respeito a proce- (atributos de Processos são constituídos neste tipo de atividade:
dimentos, métodos, padrões definidos
para o projeto. As auditorias deverão
analisar os produtos de trabalho desde AP 2.1 O processo é gerenciado
sua concepção, na medida em que serão RAP 9. (A partir do Nível F) A aderência dos processos executados às descrições de processo, padrões e procedimentos é
produzidos. Estas avaliações também avaliada objetivamente e são tratadas as não conformidades.
devem conter questões para identificar AP 2.2 Os produtos de trabalho do processo são gerenciados
melhorias no processo. RAP 12. Os produtos de trabalho são avaliados objetivamente com relação aos padrões, procedimentos e requisitos
Quando identificadas não-conformida- aplicáveis e são tratadas as não conformidades.
des, estas devem ser registradas, comu- Tabela 2 - Atributos de Processo Nível F

40 Engenharia de Software Magazine – Avaliação Independente de Garantia da Qualidade


PROCESSO

GQA 1 - A aderência dos produtos de atendimento. Neste resultado é importan- para os pontos fortes, salientar o que a
trabalho aos padrões, procedimentos e re- te verificar em que status estão todas não- organização faz além do esperado, que
quisitos aplicáveis é avaliada objetivamen- conformidades apontadas, para avaliar se supera as expectativas deste processo,
te, antes dos produtos serem entregues ao estão sendo acompanhadas até sua con- apresentando os pontos positivos e não
cliente e em marcos predefinidos ao longo clusão. Quando o auditor identificar que somente os problemas encontrados. Os
do ciclo de vida do projeto. existem não-conformidades pendentes de pontos fracos, melhorias e problemas en-
• Isto pode ser verificado a partir dos resolução, este deve certificar que estas contrados na execução das atividades do
planos de Qualidade e do Projeto, no não-conformidades foram escalonadas, processo também devem ser apontados.
qual devem expressar as atividades de ou seja, seu tratamento foi encaminhado Apresentar para organização os pontos
qualidade em marcos predefinido e antes para o superior imediato do responsável necessários para o sucesso na aplicação de
de entregas. Os registros de realização por seu fechamento. Garantia da Qualidade. Não é necessário
de avaliações (instancias de checklists Além de verificar os resultados espera- apresentar o que fazer, mas identificar
aplicados, entrevistas, questionários, etc) dos de GQA, uma avaliação independente práticas para que a organização defina a
também são evidências para assegurar a também poderá avaliar os atributos de melhor forma e o que pode ser aplicado
obtenção deste resultado. processos. Neles, resultados como defi- para sua empresa.
GQA 2 - A aderência dos processos nição de política organizacional para a • Saber ouvir: Item muito importante em
executados às descrições de processo, realização de avaliações objetivas podem casos de entrevistas. É necessário saber
padrões e procedimentos é avaliada ob- ser identificados, entre outras. ouvir o que os entrevistados têm a dizer,
jetivamente. A avaliação independente de Garantia de forma neutra, concentrada, não ficar
• Na avaliação realizada, o auditor veri- da Qualidade deve estar sob total apli- pensando em outras coisas enquanto o
fica se os processos definidos e seu aparato cação pelo auditor externo (ou auditor entrevistado fala durante a entrevista,
necessário para seu atendimento estão independente) para não ter influência no pois informações importantes podem ser
sendo aplicados e avaliados nos projetos resultado. Neste caso, desde o questio- perdidas em um momento de descon-
da organização. São encontradas evidên- nário à condução de entrevistas devem tração e fica deselegante solicitar que o
cias para esta prática também no método ser planejados e realizados pelo auditor entrevistado repita o que acabou de dizer
utilizado para a avaliação (auditorias por externo. A equipe envolvida não poderá a todo instante.
meios de checklists, questionários, etc). exigir aplicação de um questionário/che- • Neutralidade: Ao realizar uma avalia-
Deve ficar evidente a avaliação da aplica- cklist desenvolvido internamente para ção independente, é necessário desligar-se
ção dos padrões, procedimentos, métodos sua avaliação, desta forma a organização das atividades e práticas que são feitas
definidos para os projetos. garantirá sua objetividade sem influências pelo auditor, ou da forma que o auditor
GQA3 - Os problemas e as não-confor- e/ou tendências. realizaria. Cada empresa/organização
midades são identificados, registrados e
define e realiza as atividades de acordo
comunicados Fatores críticos de sucesso com seu perfil, e neste momento deve ser
• Deve haver um registro das não-con- Abaixo, são apresentados os principais
avaliado se os resultados propostos de Ga-
formidades e tratamento para as mesmas, fatores críticos para o sucesso de uma
rantia da Qualidade estão sendo atendi-
desde seu registro, motivo, comunicação avaliação independente de Garantia da
dos, e não a maneira que são feitos. Claro
para os responsáveis para conhecimento Qualidade na visão do auditor externo e
que se a prática pode ser prejudicada em
do problema encontrado. também com relação à Organização:
alguma etapa, o auditor poderá apontar
GQA 4 - Ações corretivas para não- Para o Auditor:
como ponto de atenção ou oportunidade
conformidades são estabelecidas e acom- • Independência: Total independência
panhadas até as suas efetivas conclusões. para acesso ao repositório do projeto e de melhoria.
Quando necessário, o escalonamento das todos os artefatos relacionados à Garantia • Boa Interpretação: saber interpretar os
ações corretivas para níveis superiores da Qualidade, bem como documentos de fluxos, processos definidos, templates da
é realizado, de forma a garantir sua apoio para a realização das atividades de organização, mantendo a neutralidade,
solução. um auditor interno. Para isso, a empresa conseguindo compreender com facilidade
• Não basta identificar, registrar e co- pode providenciar com antecedência um o processo definido para a organização.
municar uma não-conformidade. Para acordo de confidencialidade entre o audi- • Clareza ao expor: Críticas nem sempre
sua completeza é necessário que planos tor (que terá acesso a dados de projetos e são bem-vindas e neste caso, a maneira e
de ações tenham sido definidos e acom- de seus processos) como forma de preven- a clareza ao expor os problemas encon-
panhados até seu fechamento. Neste caso, ção pelo uso de informações inadequadas trados deve ser de forma cuidadosa, bem
o auditor deve verificar se para todas as e antiéticas. como no esclarecimento de dúvidas.
não-conformidades apontadas há um pla- • Transparência e crítica: Se o auditor • Acesso ao processo com antecedência:
no de ação para resolução das mesmas. O identificar problemas ou pontos de aten- quando possível, solicitar documenta-
plano de ação deve ser composto por ação ção em determinada atividade, este deve ção de processos e projetos que serão
de correção (e também de prevenção), expor para tratamento antes que se torne avaliados para melhor entendimento do
responsável pelo tratamento e prazo para um ponto fraco. O mesmo pode ser feito contexto da organização. Desta forma é

Edição 08 – Engenharia de Software Magazine 41


serviços de avaliação independente entre
2006 a 2008, a partir da contratação de
auditor externo podemos avaliar outros
fatores que são críticos para o sucesso
da avaliação independente, conforme
gráficos apresentados nas Figuras 2 e 3.
A pesquisa estava organizada em ques-
tões referentes à condução da avaliação
independente e com relação à conduta dos
auditores externos.
Em cômputo geral, o resultado da pes-
quisa contabilizando os resultados obtidos
em “Ótimo” e “Bom” é de 91% de satisfa-
ção. Apenas três itens foram considerados
“Regular”, sendo que a distribuição destes
Figura 2. Pesquisa de Satisfação da Avaliação Independente - Resultados Ótimo e Bom na pesquisa está nas questões referen-
tes à “Carga horária total da Avaliação
Independente” com 17% regular (seção
correspondente à condução da Avaliação
Independente); “Clareza nas apresen-
tações e exposições” com 8% regular e
“Clareza no esclarecimento de dúvidas”
também com 8% regular, ambas na seção
correspondente à conduta dos auditores
externos. No resultado consolidado, itens
regulares representam 3% das respostas.
Os demais 6% estão distribuídos em ques-
tões que não puderam ser respondidas
por alguns participantes (justificado pelo
fato de não terem participado desde o
planejamento a resultados finais, sendo
pontual sua participação). Em nenhuma
Figura 3. Pesquisa de Satisfação Conduta dos Auditores Externos – Resultados Ótimo
pesquisa foram constatados resultados
como “Ruim”.
possível levantar questões e dúvidas para • Disponibilidade da equipe: durante a Entre os principais pontos a melhorar e
esclarecimento antes da avaliação iniciar. avaliação, é importante a disponibilidade com certeza com maior dificuldade para
Organização da equipe que realiza as atividades de Ga- seu sucesso está a carga horária da avalia-
• Saber ouvir: o recebimento de críticas rantia da Qualidade, para esclarecimento ção. Isto porque depende do tempo que o
nem sempre é bem-vindo, ainda mais de dúvidas e auxiliar na localização dos auditor tem para realizar seu trabalho e
quando criticadas por uma pessoa exter- artefatos e evidências. da disponibilidade dos envolvidos. Este
na, que não está habituada as práticas e • Repositório da avaliação: manter um item está diretamente relacionado com o
o perfil da organização. Por isso, saber repositório exclusivo e atualizado com planejamento. O que ocorre muitas vezes
ouvir o que o auditor tem a trazer de sua as evidências de processo e dos projetos, é que a avaliação é marcada com base no
experiência e conhecimento é necessário além do instrumento de verificação a ser conhecimento do auditor e sem prévio
e suas sugestões podem agregar valor ao utilizado durante a avaliação. conhecimento do processo e estágio de
processo. Ouça e compreenda o que ele • Infra-estrutura: disponibilizar a infra- maturidade que a organização se encon-
tem a dizer. Depois, em outro momento, os estrutura necessária para execução da tra, bem como o número de projetos que
responsáveis pela Qualidade da organiza- avaliação, conforme seu planejamento e serão avaliados. Uma forma de agilizar e
ção podem se reunir e avaliar o que pode e inclusive, executar testes de funcionamento melhorar o tempo desta atividade é fazer
não pode e quando será aplicado. Lembre- das ferramentas e do ambiente de trabalho. uma análise prévia do processo e dos
se, o auditor externo irá apresentar os Além disto, a organização deve estar pre- projetos, para que o auditor possa planejar
pontos fortes, pontos fracos, pontos de parada para fazer demonstração das ferra- com maior acurácia.
atenção e oportunidade de melhoria para mentas adotadas durante a avaliação. Como apresentado nos itens acima, é
melhor atingir os resultados esperados do A partir dos resultados de uma pesquisa muito importante a clareza do auditor,
modelo adotado pela organização. aplicada em empresas que utilizaram de para apresentar os resultados, bem como

42 Engenharia de Software Magazine – Avaliação Independente de Garantia da Qualidade


PROCESSO

para esclarecer dúvidas. Falhas nestes são necessárias certas habilidades interpes-
Links
pontos podem resultar em má interpre- soais e um profundo conhecimento da nor-
tação pela organização no momento de ma ou modelo de referência adotado como MPS.BR: Site Oficial
atender os problemas apresentados. base na organização, além de seus proces- www.softex.br/mpsbr/_home/default.asp
sos organizacionais. Também se deve levar
Conclusão em consideração os fatos e as evidências
Qualquer que seja a organização, a missão identificadas, buscando o consenso de
da garantia da qualidade e do auditor é todos os envolvidos antes de prover julga- Dê seu feedback sobre esta edição!
Feedback
deixar o ambiente melhor do que encon- mentos e resultados da avaliação. eu
A Engenharia de Software Magazine

s

trou. Seja qual for o nível de maturidade de Pode-se concluir também que uma tem que ser feita ao seu gosto.

sobre e
uma organização, a garantia da qualidade avaliação independente de garantia da Para isso, precisamos saber o que você,

s
ta
é essencial para o sucesso de um programa qualidade é considerada bem sucedida leitor, acha da revista! edição

de melhoria [Magalhães, 2006]. quando se percebe uma coerência entre os Dê seu voto sobre este artigo, através do link:
Sendo assim, para conduzir uma avalia- resultados apresentados com a realidade www.devmedia.com.br/esmag/feedback
ção independente de garantia da qualidade atual da empresa

Referências

Albertuni, Isabel. Implantação da Avaliação e Melhoria do Processo Organizacional Alinhado com Critério Processos (PGQP). Relátório de Estágio Supervisionado. Graduação em Administração com
Habilitação em Análise de Sistemas, Faculdades Rio-Grandenses (FARGS), Porto Alegre, 2008.
ASSOCIAÇÃO PARA PROMOÇÃO DA EXCELÊNCIA DO SOFTWARE BRASILEIRO (SOFTEX). MPS.BR – Guia Geral (Versão 1.2), http://www.softex.br/mpsbr/_guias/MPS.BR_Guia_Geral_V1.2.pdf, 2007a.
ASSOCIAÇÃO PARA PROMOÇÃO DA EXCELÊNCIA DO SOFTWARE BRASILEIRO (SOFTEX). MPS.BR – Guia de Implementação – Parte 3: Nível E (Versão 1.1), http://www.softex.br/mpsbr/_guias/MPS.BR_Guia_
de_Implementacao_Parte_3_v1.1.pdf, 2007b.
ASSOCIAÇÃO PARA PROMOÇÃO DA EXCELÊNCIA DO SOFTWARE BRASILEIRO (SOFTEX). MPS.BR – Guia de Implementação – Parte 2: Nível F (Versão 1.1), http://www.softex.br/portal/mpsbr/_guias/MPS.
BR_Guia_de_Implementacao_Parte_2_V1.1.pdf, 2007c.
Biondo, Aline. Uma Ferramenta para Garantia da Qualidade Aplicada na Implementação de Sistemas. Graduação em Sistemas de Informação, Universidade Luterana do Brasil (ULBRA), Canoas, 2007.
ISO/IEC 12207:1995 - The International Organization for Standardization and the International Electrotechnical Commission. ISO/IEC 12207: Information technology – Software life cycle processes, Geneve:
ISO, 1995.
Kasse, Tim. “Practical Insight into CMMI”. Artech House Computing Library, 2004.
Magalhães, Ana Liddy Cenni de Castro. A Garantia da Qualidade e o SQA: Sujeito Que Ajuda e Sujeito Que Atrapalha – ProQualiti Vol.2, N.2, novembro 2006.
IEEE Std 610.12, 1990 - IEEE Standard Glossary of Software Engineering Terminology, Institute of Electrical and Electronics Engineers, 1990
Salviano, C. F.; Tsukumo, A. N. Coop-MPS: Um método para projetos cooperativos de melhoria de processo de software e sua aplicação com o Modelo MPS.BR – ProQualiti Vol.1, N.2, novembro 2005.
SEI - SOFTWARE ENGINEERING INSTITUTE.CMMI for Development (CMMI-DEV), Version 1.2, Technical report CMU/SEI-2006-TR-008. Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon
University, 2006.

Edição 08 – Engenharia de Software Magazine 43


Testes de Mutação com o plug-in MuClipse

De que se trata o artigo:


Apresentação dos principais conceitos
sobre testes de mutação e demonstra-
ção do funcionamento da técnica utili-
Introdução zando um plug-in para Eclipse chamado
O desenvolvimento de sistemas não é MuClipse.
uma tarefa simples e, por este motivo, Para que serve:
precisa que artifícios sejam utilizados Além de testar o software, também
para diminuir os defeitos que podem ser pode ser considerada uma técnica para
introduzidos nesse processo. auxiliar no processo de melhoria dos
Teste de software contribui para a pro- casos de testes para torná-los mais
dução de um produto final de maior eficientes.
qualidade e é um processo bastante aceito Em que situação o tema é útil:
e difundido atualmente. Porém, uma das Testes de mutação podem ser utiliza-
Victor Vidigal Ribeiro questões mais complexas que norteia os dos como técnica para melhorar ou afir-
victorvidigal@gmail.com testes de software é como garantir que os ca- mar a qualidade dos casos de testes.
É Graduado do Curso de Bacharelado em Sistemas sos de testes gerados são eficientes, ou seja,
de Informação pela Faculdade Metodista Granbery garantir que os casos de testes encontrem a
e Analista de Sistemas do CAEd (Centro de Políticas
Públicas e Avaliação da Educação). maior quantidade de defeitos possíveis. Testes de Mutação
Dentre outras técnicas que podem ser Por mais simples que um software possa
Marco Antônio Pereira Araújo utilizadas para se testar o software, ou me- ser, os caminhos de execução possíveis na
maraujo@granbery.edu.br lhorar os casos de testes, pode-se destacar sua utilização podem ser muito grandes,
É Doutorando e Mestre em Engenharia de Sistemas o Teste de Mutação. com isto é praticamente impossível testar
e Computação pela COPPE/UFRJ, Especialista em
Este artigo tem como finalidade principal um sistema por completo e afirmar que o
Métodos Estatísticos Computacionais e Bacharel
em Matemática com Habilitação em Informática demonstrar a utilização de um plug-in sistema não contém defeitos.
pela UFJF, Professor do Curso de Bacharelado em desenvolvido para se aplicar testes de Por outro lado, os tipos de problemas
Sistemas de Informação da Faculdade Metodista mutação chamado MuClipse, além de ex- que podem ser encontrados em um
Granbery, Analista de Sistemas da Prefeitura de plicar os principais conceitos relacionados software podem ser finitos. É nesta premis-
Juiz de Fora, Editor da Engenharia de Software
Magazine.
a este tipo de teste. sa que os testes de mutação se embasam.

44 Engenharia de Software Magazine – Testes de Mutação com o plug-in MuClipse


VA L I D AÇ ÃO, V E R I F I C AÇ ÃO E T E S T E S

mutação. Esses operadores alteram partes Ou ainda se o mutante é equivalente ao


Visão geral
do programa original, como, por exemplo, programa original e com isto descartar o
trocar um sinal de “>” por “<”, e assim mutante. Mutantes ainda são descartados
A técnica de teste de mutação é divida em quatro formar os mutantes. quando gerarem situações impossíveis de
etapas. Primeiro, operadores de mutação são utiliza- O segundo passo que deve ser feito é a serem executadas, como uma condição
dos sobre o programa original realizando pequenas execução dos casos de testes sobre o pro- que nunca se torna verdadeira ou um
alterações sobre esse programa e gerando variações, grama original. Os casos de testes devem laço infinito.
ou seja, mutantes. Depois disto, o programa original aprovar o programa original concluindo- Neste último passo, é possível perceber
é testado e deve ser aprovado pelos casos de testes. se assim que ele está correto com base nos claramente como os testes de mutação
Após a execução do programa original, os mutantes são casos de testes executados. ajudam a melhorar os casos de testes caso
executados com o caso de teste e, se forem reprovados No próximo passo, os mutantes gerados algum mutante não seja morto.
pelo caso de teste são considerados mortos. Caso algum devem ser executados com os mesmos Alguns passos como, por exemplo, a
mutante não seja reprovado, esse mutante é considera- casos de testes que o programa original geração dos mutantes e execução dos mu-
do vivo e precisa ser analisado. Para os mutantes vivos foi executado. Caso algum caso de teste tantes com os casos de testes, são tarefas
pode-se considerar que este mutante é equivalente ao falhe significa que são abrangentes o su- repetitivas e praticamente inviáveis sem
programa original ou que os casos de testes não são ficiente para demonstrarem a diferença apoio de uma ferramenta para automati-
bons o suficiente para testar o programa. Neste último entre o mutante e o programa original. zar essas tarefas. Neste artigo será exposto
caso, os casos de testes devem ser alterados e, com isso, Neste caso, o mutante que fez com que
um exemplo prático da utilização de testes
se tornam cada vez mais eficientes. o caso de teste falhasse está morto e, por
de mutação utilizando o plug-in MuClipse
conseqüência, é descartado.
versão 1.2 instalado no Eclipse juntamente
Pode acontecer de algum mutante so-
com o framework de testes JUnit 4.0.
breviver aos testes. Neste caso, podem
Basicamente, testes de mutação propõem
ser consideradas duas situações: 1) Caso
a criação de variações de um programa
de testes não é bom o suficiente, pois não
Estudo de Caso
anteriormente desenvolvido, ou seja, O MuClipse é um plug-in para o IDE
mutantes, posteriormente à construção de identificou a modificação no mutante; 2)
(Ambiente de Desenvolvimento Inte-
casos de testes com a finalidade de provar Equivalência entre o programa original e
grado) Eclipse que tem por finalidade
que as variações do programa original o mutante.
auxiliar no processo de execução de testes
não estão corretas. Assim, por eliminação, O último passo da técnica é a análise dos
de mutação em programas desenvolvidos
pode-se constatar que o programa original mutantes que sobreviveram. Esse passo
em Java. Ele funciona como uma ponte
está correto. exige uma maior intervenção humana
entre o MuJava, um sistema para testes
O primeiro passo para a execução dos para decidir se o mutante sobreviveu
de mutação em Java, e o Eclipse.
testes de mutação é a criação dos mutan- porque os casos de testes não são abran-
Será criado um projeto chamado Apro-
tes que são criados executando uma série gentes o suficiente e assim criar mais
casos de testes, ou modificar os existentes. vacao que conterá uma classe Aluno
de operadores chamados operadores de
com os atributos nota1, nota2, notaFinal,
frequencia, os métodos gets e sets desses
atributos e um método chamado calcu-