PS- GRADUAO
Engenharia de Software:
Desenvolvimento Java
Engenharia de Software:
Desenvolvimento .NET
GRADUAO
Engenharia de Computao
Anlise e Desenv. de Sistemas
F ORMAES
Desenvolvedor Java
Desenv. Java: Sist. Distribudos
Gestor de TI
Desenvolvedor Web .NET 2008
MCITP Server Administrator
SQL Server 2008
r/esti
Acesse nosso site e conhea todos os nossos programas: www.infnet.edu.br/esti
TURMAS
NO RIO DE
JANEIRO
www.infnet.edu.br - cursos@infnet.edu.br - Central de Atendimento: (21) 2122-8800
EDITORIAL
M
Ano 3 - 28 Edio - 2010
Impresso no Brasil
Corpo Editorial
Colaboradores
Rodrigo Oliveira Spnola
Marco Antnio Pereira Arajo
Eduardo Oliveira Spnola
Capa e Diagramao
Romulo Araujo - romulo@devmedia.com.br
Coordenao Geral
Daniella Costa - daniella@devmedia.com.br
Revisor e Supervisor
Thiago Vincenzo - thiago.v.ciancio@devmedia.com.br
Na Web
www.devmedia.com.br/esmag
Apoio
Atendimento ao Leitor
A DevMedia conta com um departamento exclusivo para o atendimento ao leitor.
Se voc tiver algum problema no recebimento do seu exemplar ou precisar de
algum esclarecimento sobre assinaturas, exemplares anteriores, endereo de
bancas de jornal, entre outros, entre em contato com:
Daniela Maciel e Flvia Aparecido Atendimento ao Leitor
www.devmedia.com.br/mancad
(21) 2220-5338
Kaline Dolabella
Gerente de Marketing e Atendimento
kalined@terra.com.br
(21) 2220-5338
Publicidade
Para informaes sobre veiculao de anncio na revista ou no site entre em
contato com:
Cristiany Queiroz
publicidade@devmedia.com.br
Caro Leitor,
NDICE
Por trs do obvio
06 H um colega chato em seu local de trabalho?
Glnio Cabral
Agilidade
07 - Negociao de Contratos
Para esta edio, temos um conjunto de 5 vdeo aulas. Estas vdeo aulas esto disponveis para download no Portal
da Engenharia de Software Magazine e certamente traro
uma significativa contribuio para seu aprendizado. A lista
de aulas publicadas pode ser vista abaixo:
Lenildo Morais
Engenharia
14 - Requisitos em SOA Parte 1
Joo Caldas Jnior
Tipo: Processo
Ttulo: Atividades da Gerncia de Projetos Partes 5 a 9
Autor: Rodrigo Oliveira Spnola
Mini-Resumo: A gerncia de projetos possui um conjunto de atividades
associadas aos processos da gerncia. Nesta srie de 5 vdeo aulas conheceremos algumas dessas principais atividades destacando seus objetivos,
tarefas desempenhadas e resultados esperados. Alguns dos assuntos tratados
sero: planejamento de cronograma, planejamento de recursos humanos e
planejamento de riscos.
Planejamento e Gerncia
26 - Auditoria de Sistemas
Anderson Carlos Santos Ramires, Rodrigo Oliveira Spnola e Marcos Kalinowski
Desenvolvimento
38 - Refatorao para Padres
Jacimar Fernandes Tavares e Marco Antnio Pereira Arajo
Existem coisas
que no conseguimos
ficar sem!
...s pra lembrar,
sua assinatura pode
estar acabando!
AMIGO
Renove J!
www.devmedia.com.br/renovacao
Para mais informaes:
www.devmedia.com.br/central
Glnio Cabral
gleniocabral@yahoo.com.br
D
s
Administrador de Empresas, ps-graduado em Gesto de Pessoas e msico. Idealizador do site de educao infantil www.novainfancia.com.br.
Feedback
eu
sobre e
s
edio
ta
Agilidade
Nesta seo voc encontra artigos voltados para as prticas e mtodos geis.
Negociao de Contratos
Negociao de contratos em projetos utilizando desenvolvimento gil
N
Lenildo Morais
lenildojmorais@gmail.com
Metodologias geis
De uma maneira geral, pode-se afirmar
que os projetos de desenvolvimento
de software tm sido de preocupao
Scrum
O Scrum uma metodologia cujas prticas so aplicadas
em um processo iterativo e incremental. Os projetos no
qual o Scrum se insere so complexos e imprevisveis,
onde no possvel prever tudo que ir acontecer. Por
esta razo, ele oferece um conjunto de prticas que torna
tudo isso visvel.
A estrutura de processo do Scrum inicia-se com uma
viso do produto que ser desenvolvido, contendo as caractersticas definidas pelo cliente, premissas e restries.
Em seguida, o Product Backlog criado contendo a lista de
todos os requisitos conhecidos. O Product Backlog ento
priorizado e dividido em releases, onde cada release contm
um conjunto de requisitos, denominado Sprint Backlog, que
ser desenvolvido em uma iterao, denominada de Sprint.
Na execuo da Sprint, diariamente a equipe faz reunies
de 15 minutos (Daily Scrum Meeting) para acompanhar
o andamento do projeto. Ao final da Sprint, realizado
o Sprint Review Meeting, de modo que o time apresente
o resultado alcanado ao Product Owner (representante
do cliente). Em seguida, o ScrumMaster conduz o Sprint
Retrospective Meeting, reunio de retrospectiva do Sprint
tambm realizada no final de cada iterao. Nela, a equipe
e o ScrumMaster se renem para discutir o que deu certo
e o que deve ser melhorado.
agilidade
funcionalidades. Mecanismos como refactoring, introduo de novas tecnologias e introduo de novas ideias
de arquitetura podem tambm ser utilizados em projetos
que adotam a metodologia XP. importante ressaltar
que a manuteno dada em um sistema que j est em
produo deve ser feita com muita cautela, pois uma alterao errada pode paralisar o funcionamento do sistema
resultando em prejuzos para o cliente.
Fase de Morte: Quando no h mais estrias a serem implementadas e quando o cliente est satisfeito com o cdigo.
Esta fase corresponde ao trmino de um projeto XP.
Modelagem gil
uma metodologia que no trata de prescrio de processos, ou seja, ela no define procedimentos detalhados
de como criar um dado tipo de modelo, ao invs disso,
ela prov prticas de como ser efetivo. A modelagem gil
(AM) uma coleo de prticas guiadas por princpios
e valores que podem ser aplicados por profissionais
de software no dia a dia. A Modelagem gil tem trs
objetivos:
1. Definir e mostrar como colocar em prtica uma coleo
de valores, princpios e prticas pertinentes modelagem
efetiva;
2. Mostrar como aplicar tcnicas de modelagem em
projetos de software atravs de uma abordagem gil tal
como XP ou SCRUM;
3. Melhorar a modelagem a partir de processos prescritivos como o Processo Unificado da Rational (RUP).
10
agilidade
11
Negociaes Contratuais
Um grupo de desenvolvedores, produtores e consultores
de software, conhecidos como Aliana gil, assinaram
12
agilidade
Outra opo para atrair os clientes na adoo de metodologias geis encorajando-os a comprar algumas iteraes
ao invs de assinar contratos para todo o projeto. importante observar que neste caso devero ser considerados
pequenos mdulos de sistemas que possam ser utilizados
como piloto nesta avaliao para que no haja a interrupo
do projeto.
Alm desta, existe a possibilidade de a equipe permitir ao
cliente o uso de uma verso experimental do software desenvolvido com a adoo de metodologia gil, permitindo assim
o desenvolvimento com o cliente e provendo a cobertura de
risco. Uma vez que os clientes tenham testado algumas iteraes, ento so oferecidas opes de compra de mais interaes ou novas features. Com isso o cliente ter a possibilidade
de comprovar que no ter riscos eminentes com a adoo da
nova metodologia, permitindo-lhe a possibilidade de abortar
o projeto, ou seja, se os clientes estiverem insatisfeitos com os
resultados, eles tero a liberdade de sair do projeto.
Mantendo o cliente
Feedback
eu
www.devmedia.com.br/esmag/feedback
13
sobre e
s
O processo de negociao torna-se eficiente quando utilizado para manter um bom relacionamento entre o cliente e os
desenvolvedores, uma vez que ambos esto bem informados
para justificar as possveis mudanas de requisitos durante
os ciclos de desenvolvimento.
Um ltimo recurso a ser utilizado manter o cliente sempre na equipe de desenvolvimento. Com essa prtica, os
gerentes conseguem implementar rigorosamente as prticas
Concluso
D
s
edio
ta
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
O
Joo Caldas Jnior
caldasjr@gmail.com
14
s projetos Service-Oriented
Architecture (SOA) quando
comparados a projetos de
desenvolvimento tradicionais na
rea de TI, esto expostos aos mesmos (ou at maiores) desafios no que
implica a elicitao e a modelagem
de requisitos. Para projetos ditos
tradicionais existe uma quantidade significativa de pesquisas e
estudos que identificam que a definio inadequada de requisitos
a principal responsvel por grande
parte dos erros detectados ao longo
do processo de desenvolvimento de
sistemas [4].
As atividades de elicitao e modelagem de requisitos necessitam
de um conjunto de habilidades nicas, pois estas atividades so mais
que tcnicas, envolvendo muitas
vezes exerccios de sensibilidade.
S OA
15
Top-Down
Dependncia de apoio da Alta Gerncia ao Projeto.
Bottom-Up
O projeto SOA se tornar meramente um projeto de integrao entre reas distintas.
Excesso de Reunies e Modelagens podem no produzir resultados prticos. Todos os problemas tecnolgicos so resolvidos, mas a arquitetura no atende (nem beneficia) nenhum requisito de negcio.
Tecnologia a ser utilizada pode estar alm da capacidade do grupo e da Implementao de uma Arquitetura JBOWS.
arquitetura atual, o que pode aumentar os custos de maneira significativa.
Tabela 1. Lista dos principais riscos existentes na adoo das estratgias Top-Down e Bottom-Up
16
S OA
Figura 1. O detalhamento de cada caso de uso pode ser feito por meio
de BPDs ou Diagramas de Sequncia
17
18
[1] Erl, T. SOA Principles of Service Design (The Prentice Hall Service-Oriented Computing
Series from Thomas Erl), Prentice Hall PTR, Upper Saddle River, NJ, 2007
www.thomaserl.com
[2] Hofmann, H.F. e Lehner, F. Requirements engineering as a success factor in software
projects, IEEE Software, pp. 58-66 vol. 18, n. 4., 2001
www.computer.org/portal/web/csdl/abs/mags/so/2001/04/s4058abs.htm
[3] McKendrick, J. The Rise of the JBOWS Architecture (or Just a Bunch of Web Services
www.webservices.org/weblog/joe_mckendrick/the_rise_of_the_jbows_architecture_or_
just_a_bunch_of_web_services.
[4] STANDISH GROUP. Chaos: pesquisa sobre o desenvolvimento de software e o panorama
catico da indstria de software dos dias de hoje.
www.standishgroup.com/chaos.html
[5] Zaidan, P. SOA atinge at 80% do reuso com governana, diz BearingPoint. [S.l.]
www.decisionreport.com.br
Feedback
eu
sobre e
s
Referncias
D
s
Concluso
edio
ta
Porm todos os benefcios de um modelo orientado a servios devem ser contextualizados. Se uma empresa no tiver
mais de dois sistemas primrios que exijam algum nvel de
integrao, improvvel que o modelo proporcione grandes
benefcios. Em meio a toda propaganda em torno da SOA,
esquece-se facilmente que a metodologia de desenvolvimento no traz em si vantagens, as vantagens so proporcionadas
pelo efeito que ela tem sobre uma infraestrutura redundante
e com pouca integrao.
A criao de um bom aplicativo orientado a servios normalmente envolve mais trabalho do que integrao de aplicativos existentes (atualmente a integrao tradicional de
aplicativos o principal projeto SOA em muitas empresas).
Assim, um projeto SOA tende a gerar um custo inicial extra
e para que este investimento produza benefcios, preciso
eliminar custos em outro ponto qualquer do processo, j
que a prpria metodologia no gerar benefcios para o
negcio. Portanto, o primeiro passo descobrir se existem
aplicativos redundantes e mal integrados que poderiam ser
consolidados ou eliminados. Se este for o caso, ento podem
existir benefcios potenciais.
Engenharia
Nesta seo voc encontra artigos voltados para testes, processo,
modelos, documentao, entre outros
Esse artigo apresenta algumas definies de manuteno de software, os tipos existentes, os impactos
de sua aplicao e como utilizada durante o desenvolvimento de um sistema.
19
Evoluo de Software
Os sistemas geralmente refletem situaes do mundo
real e, com isso, h uma necessidade que o software mude
acompanhando as mudanas de requisitos impostos pelo
ambiente em que est inserido. Se o sistema no sofre essas
mudanas, pode ficar obsoleto e cair em desuso.
O envelhecimento de um software um processo inevitvel, mas possvel de ser compreendido e suas causas previstas, para que sejam minimizados os impactos dos danos
causados por esse envelhecimento. Ele pode se dividir em
duas vertentes: quando as mudanas necessrias no so
implementadas e o sistema no adequado s novas regras
de negcio utilizadas, e a segunda quando as adaptaes
so feitas de maneira desordenada e acarretam problemas
para o sistema como um todo, gerando novos erros e diminuindo sua manutenibilidade.
As desvantagens causadas pelo envelhecimento de um
software so a perda de desempenho devido a modificaes
no adequadas na sua estrutura interna, gerao de novos
erros devido a alteraes indevidas no cdigo e perda de
usurios devido falta de meios para concorrer com verses
mais recentes de sistemas semelhantes, como por exemplo,
a utilizao em sistemas operacionais diferentes.
Atravs dessas caractersticas, qualquer software que
no tenha sido projetado para atuar baseado num tempo
de vida muito curto, pode vir a sofrer os efeitos nocivos do
envelhecimento. Apesar de inevitvel, estes efeitos podem
ser retardados ou consideravelmente diminudos, desde
que sejam seguidos alguns cuidados no desenvolvimento e
evoluo do software em questo. Dentre alguns cuidados
est a manuteno de software.
De acordo com Sommerville, a evoluo de software compreende as mudanas que iro ocorrer em um programa a
fim de deix-lo completo e, se possvel, livre de erros.
Para que essa evoluo acontea necessrio que sejam
considerados diversos fatores que serviro de base para
concluir se o sistema atual deve sofrer uma evoluo, ou
deve ser abandonado para que um novo sistema possa ser
construdo com base nos requisitos do software atual.
Os fatores que devem ser levados em conta so: custo
envolvido no processo, a confiabilidade do software aps
a manuteno, a capacidade que possuir de se adaptar a
mudanas futuras, seu desempenho, limitaes de suas
atuais funes, e ainda as opes existentes no mercado que
20
Definies
De acordo com a IEEE, a manuteno de software pode ser
considerada como a prtica da modificao de um produto
de software que j foi entregue ao cliente, que pode ser para
correo de algum defeito, melhora de seu desempenho e
ainda para adaptao a algum outro ambiente.
Esse conceito muito abrangente e serve para qualquer software, porm existem diferenas entre tipos de manuteno
de softwares distintos. Existem alguns grupos de sistemas
que diferenciam em suas funes e, por isso, diferentes
mtodos durante a manuteno devem ser aplicados.
Existem basicamente trs categorias de sistemas e mtodos diferenciados para cada um. No primeiro grupo esto
softwares cujos resultados so exatos, esperados e previsveis, e que considerando uma correta implementao dos
mtodos durante sua construo, dificilmente vo necessitar
de manuteno. Um exemplo deste tipo de software so
aqueles que realizam operaes matemticas como uma
simples calculadora.
No segundo grupo esto os sistemas que buscam simular
situaes do mundo real, sendo praticamente impossvel
prever todas as alternativas possveis de resultados. Estes
sistemas so construdos sobre uma anlise mais abstrata,
sendo passvel de uma interpretao ambgua e baseado em
possibilidades. Sistemas que fazem parte dessa categoria so
os que seguem algumas regras de negcio mais complexas,
por esse motivo necessitar de maior manuteno comparada ao grupo anterior.
O terceiro grupo engloba os sistemas que consideram
as caractersticas do ambiente em que esto funcionando,
necessitam de adaptao na medida em que o ambiente
sofre alguma alterao. Os softwares dessa categoria geralmente so das reas contbeis e econmicas e esto presentes no cotidiano das organizaes. Pelo fato das regras
mudarem constantemente, inevitvel a necessidade de
manuteno.
Devido a essa diversidade de sistemas, devem existir vrias
formas de se fazer manuteno que esto retratadas posteriormente. Devem ser realizadas com cautela, pois podem
ser includos novos defeitos no software, e dependendo do
seu tipo, podem at mesmo ser considerados como um novo
ciclo de desenvolvimento.
M anuteno
as modificaes necessrias e avaliar seus impactos. Em seguida, realizar as modificaes e test-las atravs da aplicao de testes.
Alguns problemas podem ocorrer durante a realizao de
algum processo de manuteno. Eles devem ser na medida
do possvel previstos para poder ser evitados, tais como:
Ausncia ou deficincia na documentao;
Dificuldade na identificao de manutenes realizadas
anteriormente;
Falta de controle de verso;
Baixa manutenibilidade do software.
Alm disso, efeitos colaterais podem ocorrer com a realizao
desses processos:
Modificao da estrutura do cdigo;
Incluso de cdigos com erros;
Desatualizao da documentao.
Atravs dessas caractersticas, deve-se identificar e registrar
todas as partes que foram afetadas pela modificao.
Para a manuteno de software, os sistemas devem sofrer
mudanas de acordo com o contexto em que esto inseridos.
Para melhorar o processo de manuteno devem ser levadas
em conta as mudanas ocorridas no ambiente em que est
inserido o sistema.
Na manuteno de software existem quatro fases que so
introduo, crescimento, maturidade e declnio. Destaca-se
que durante a fase de introduo existe um grande suporte
ao usurio, perodo em que so concebidas as primeiras idias
sobre o sistema. As fases de maturidade e de crescimento do
software so de ajustes, onde o sistema j est concretizado
e muitas vezes correes aparecem naturalmente. Ainda na
fase de maturidade, podem ser realizadas melhorias no programa. Durante essas fases necessrio que sejam realizados
testes e atualizao da documentao para avaliar as partes
modificadas e acrescentadas na aplicao. Na fase de declnio
o sistema chega ao final da vida til e deve ser avaliado se o
sistema deve ser retirado de operao. A avaliao deve ser
feita com base nos aspectos econmicos como, por exemplo,
substituio de tecnologias, ou at mesmo para conseguir
independncia de fabricante.
Tipos de Manuteno
As aes ligadas atividade de manuteno de software
foram classificadas de acordo com sua natureza em quatro
categorias:
Manuteno Corretiva: trata de erros de funcionalidade
emergenciais, realizada sob demanda, em decorrncia de
falhas observadas, causadas por erros e defeitos encontrados durante a utilizao do software. Inclui tambm
a eliminao de problemas de configurao encontrados,
reinstalao de sistemas com problemas de configurao,
criao de novas verses do software, combinao de verses
diferentes de software existentes, bem como a criao de
verses paralelas de software e/ou configurao para teste
Refatorao e Manuteno
Martin Fowler afirma que a refatorao pode ser considerada uma tcnica ou ferramenta de auxilio no desenvolvimento e manuteno, contribuindo para o tempo de vida
do software. De acordo com ele, um sistema mal projetado
geralmente precisa de mais linhas de cdigo para funcionar, que quase sempre est duplicado em lugares diferentes
para realizar a mesma coisa.
A eliminao desse excesso de cdigo importante na
melhora do projeto, pois quanto mais difcil for a visualizao das regras de negcio a partir do seu cdigo, mais
difcil ser mant-lo futuramente. H mais cdigo para ser
compreendido e quando se faz uma alterao, deve ser feita
em vrios outros lugares onde o sistema faz praticamente
a mesma coisa.
21
A refatorao uma modificao no sistema que no altera seu comportamento do ponto de vista funcional, mas
melhora alguma caracterstica no funcional como simplicidade, flexibilidade, clareza e desempenho. As alteraes
que podem ser realizadas atravs da refatorao envolvem
a mudana do nome de variveis, mudana na interface dos
objetos, mudanas arquiteturais, encapsulamento de um
novo mtodo e a generalizao de mtodos. O exemplo a
seguir contm a assinatura de dois mtodos que aparentemente tem a mesma funo, porm, um deles passou por um
processo de refatorao que o deixou muito mais genrico e
eficiente. O primeiro mtodo inicialmente era capaz de elevar ao quadrado qualquer nmero passado por parmetro,
j o seguinte, eleva um nmero informado pelo usurio a
uma potncia qualquer de valor inteiro.
22
M anuteno
Custos de Manuteno
De acordo com Pressman, a manuteno de software
pode ser responsvel por mais de 70% de todo o esforo
despendido por uma organizao. E essa porcentagem
continua aumentando medida que mais software produzido (Figura 3).
Para este autor, manuteno de software bem mais que
consertar erros. H questes que so levadas a efeito depois
que o software liberado para uso:
23
Situaes que aparecem e podem ser resolvidas de maneira imediata e que envolvem aspectos computacionais,
como a utilizao de um novo sistema operacional ou
mudana no hardware;
medida que o software usado, novas recomendaes de
modificaes em funes existentes e de ampliaes gerais
so recebidas dos usurios;
Manuteno ocorre quando o software modificado para
melhorar a confiabilidade ou a manuteno futura, ou para
oferecer uma base melhor para futuras ampliaes.
O custo da manuteno de software tem aumentado
consideravelmente durante os ltimos anos. Dentre vrios
fatores que contribuem para esse aumento esto:
Instabilidade da equipe: h um aumento de custo em
razo de equipes de desenvolvimento estarem sujeitas a mudanas. Sendo que muitas vezes a equipe que
desenvolveu o sistema no a mesma que equipe que
realiza a manuteno, ou seja, no compreendem o sistema, sendo necessrio um maior esforo no processo de
manuteno.
A responsabilidade contratual: pode ocorrer dos desenvolvedores no terem registrado em contrato a responsabilidade de manuteno e, portanto, no h incentivo para
projetar o sistema de forma que esteja preparado para
mudanas futuras. O contrato de manuteno separado
do contrato de desenvolvimento, sendo que a empresa que
desenvolveu no necessariamente a mesma que realiza
a manuteno. No desenvolvimento, a equipe pode optar
em economizar esforos, o que pode aumentar os custos
na manuteno.
Habilidade da equipe: geralmente as pessoas responsveis pela parte de manuteno possuem pouco conhecimento e experincia com aquele domnio de aplicao.
A idade e estrutura do sistema: o sistema quando envelhece se torna difcil de ser entendido e alterado como, por
exemplo, ter sido desenvolvido em uma linguagem antiga,
ou sem uso de tcnicas de engenharia de software.
Durante a dcada de 1970, a manuteno era responsvel
por um ndice entre 35% e 40% do oramento do software
para uma organizao de sistemas de informao. Na
dcada de 1980 esse valor chegou a 60%. Muitos estudos
realizados apontaram para um custo crescente da evoluo de software no ciclo de vida dos sistemas. A Figura 4
resume os resultados de que a manuteno de software
comparada ao custo total de um sistema vai sempre
crescendo, tendo provavelmente passado agora da casa
dos 90%. Atravs desses valores, pode-se concluir que o
custo de desenvolvimento de um novo sistema passou a
ser insignificante perto do recurso que ser consumido
durante sua vida.
Estes dados podem ser perfeitamente compreendidos,
pois muitos sistemas que foram desenvolvidos nos anos
70 ou 80 continuam sendo utilizados e mantidos. Portanto,
24
M anuteno
Referncias
Bennett, K. H.; Rajlich, V. T. (2000) Software maintenance and evolution: a roadmap, In:
Conference on The Future of Software Engineering, Limerick, Ireland, June.
Bhatt, P.; Shroff, G.; Misra, A. K. (2004) Dynamics of software maintenance, ACM SIGSOFT
Software Engineering Notes, v. 29, n. 5, p. 1-5.
Basili, V. (1990) Viewing Maintenance as Reuse-Oriented Software Development, IEEE
Software, v. 7, n. 1, p. 19-25.
Chapin, N. (1986) Software maintenance: A different view, In: Conference on Software
Maintenance, Orlando, FL, USA, November.
Dart, S.; Christie, A. M.; Brown, A. W. (2001) A Case Study in Software Maintenance, Technical
Report, Carnegie Mellon University.
Dekleva, S. M. (1990) Annual Software Maintenance Survey: Survey Results, Software
Maintenance Association, Vallejo, California, USA.
________. (1992) Delphi study of software maintenance problems, In: Conference on
Software Maintenance, Orlando, FL, USA, November.
De Lucia, A., Pompella, E., Stefanucci, S. (2004) Effort estimation for corrective software
maintenance. In: 14th International Conference on Software Engineering and Knowledge
Engineering, Ischia, Italy, July.
IEEE (1998) Std 1219 IEEE Standard for Software Maintenance, Institute of Electrical and
Eletronic Engineers, New York, NY, USA.
ISO/IEC 12207 (1998) Standard for Information Technology - Software Lifecycle Processes,
International Standard Organization, New York, NY, USA.
ISO/IEC 15504 (2003) Software Process Assessment, International Standard Organization,
New York, NY, USA.
Koskinen, J.; Salminen, A.; Paakki, J. (2004) Hypertext support for the information needs of
software maintainers, Journal of Software Maintenance and Evolution: Research and Practice,
v. 16, n. 3 , p. 187-215.
Concluso
Kung, H.; Hsu, C. (1998) Software Maintenance Life Cycle Model, In: International Conference
on Software Maintenance, Bethesda, Maryland, USA.
A manuteno de software uma atividade muito importante na prtica das empresas de desenvolvimento de
software. Apesar de sua importncia, ainda uma prtica
mal vista pela maioria dos profissionais, pouco estudada
e entendida.
Nesse artigo foi possvel conhecer um pouco sobre o que
a manuteno de software e suas principais caractersticas
e os tipos existentes, alm de conhecer algumas prticas
e ferramentas de manuteno que auxiliam no desenvolvimento do projeto, e que devem ser consideradas para
que as manutenes necessrias em um software sejam
realizadas com o maior sucesso possvel.
Lientz, B. P.; Swanson, E. B. (1980) Software Maintenance Management, Reading, MA, AddisonWesley.
Niessink, F. (1999) Software Maintenance Research in the Mire?, In: Annual Workshop on
Empirical Studies of Software Maintenance (WESS99), Oxford, United Kingdom, September.
Pigoski, T. M. (1996) Practical Software Maintenance: Best Practices for Managing Your
Software Investment,Willey Computer Publishing.
Polo, M.; Piattini, M.; Ruiz, F.; Calero, C. (1999) Roles in the maintenance process, ACM SIGSOFT
Software Engineering Notes, v. 24, n. 4, p. 84-86.
Pressman, R. S. (2005) Software Engineering: a practitioners approach, 6.ed., McGrawHill
Higher Education.
Singh, R. (1996).International Standard ISO/IEC 12207 Software Life Cycle Processes, Software
Process Improvement and Practice, vol. 2, p. 3550.
www.devmedia.com.br/esmag/feedback
Feedback
eu
edio
ta
D
s
Ulrich, W. M. (1990) The evolutionary growth of software reengineering and the decade
ahead. American Programmer, v. 3, n. 10, p. 14-20.
Visaggio, G. (2001) Assessing the Maintenance Process Through Replicated, Controlled
Experiment. Journal of Systems and Software, v. 44, n. 3, p. 187-197.
25
Planejamento e Gerncia
Nesta seo voc encontra artigos voltados para o planejamento
e gerncia de seus projetos de software.
Auditoria de sistemas
Anderson Carlos Santos Ramires
Marcos Kalinowski
anderson.ramires@br.pwc.com
mk@kalisoftware.com
26
gest o de ti
27
28
gest o de ti
A Lei Sarbanes-Oxley
A Lei americana Sarbanes-Oxley foi originada em 2002,
aps escndalos corporativos de manipulao de dados
contbeis ocorridos em grandes empresas norte-americanas
como a empresa de energia Enron, Tyco e a WorldCom na
rea de telecomunicaes. O escopo desta legislao federal
se insere no mbito da governana corporativa, e na tica
nos negcios de companhias que possuem capital na Bolsa
de Nova York.
Rgidos parmetros legais foram impostos a estas empresas,
aumentando desde o grau de responsabilidade dos executivos da empresa, at as auditorias e advogados contratados
que atestarem balanos. As principais exigncias incluem
clareza na apresentao das informaes financeiras, nfase
em assuntos de governana corporativa; processos rigorosos
de controle interno; informaes financeiras confiveis e
compreensveis e independncia das firmas de auditoria
externa encarregada de valid-las.
Embora restrita ao governo norte-americano, a SarbanesOxley uma legislao que funciona como uma espcie de
bola de neve no mercado de tecnologia do mundo todo. No
Brasil, essa lei se aplica s empresas com aes negociadas
nos mercados de capitais dos Estados Unidos, subsidirias
de empresas multinacionais de capital americano e empresas
brasileiras com aes naquele pas.
Em suas 1.107 sees, a maior ateno, discusso e trabalho
a respeito da Sarbanes-Oxley est sendo focado nas sees 302
e 404 da Lei. A Seo 302 requer que o principal executivo
(CEO) e o principal executivo de finanas (CFO) assumam a
responsabilidade por definir, avaliar e monitorar a eficcia
dos controles internos sobre relatrios financeiros e divulgaes da empresa. Estes controles devem ser suficientes
e capazes de livrar a instituio dos riscos que possam
ameaar suas principais funes e, com isso, prejudicar
respectivas entidades e partes interessadas, como clientes
e acionistas.
Na seo 404 da Lei tratada a validao dos controles e
procedimentos internos sobre os relatrios financeiros, esta
avaliao deve ser formal e realizada anualmente por auditores externos. E a seo 409 trata da divulgao imediata, em
tempo real e em base rpida e corrente, dados que possam
impactar a performance financeira da empresa; informaes
com respeito a mudanas materiais na condio financeira
ou operacional da organizao.
Uma outra seo que tambm se destaca a Seo 906, que
exige que uma certificao do CFO ou CEO acompanhe cada
relatrio que contenha dados financeiros, garantindo que
os dados representam fielmente as condies financeiras e
os resultados operacionais da empresa. Esta seo atribui
penalidades criminais a certificaes falsas (que vo desde
o pagamento de multas ao cumprimento de penas).
Ao regular a atividade de contabilidade e auditoria das empresas de capital aberto, a Sarbanes-Oxley reflete diretamente
seus dispositivos nos sistemas de Tecnologia da Informao.
Prticas de segurana de redes e dos sistemas passam a ter
obrigatoriedade; invases, ataques, vrus e roubo de dados, fraudes de senhas e demais ameaas segurana das
informaes da companhia podem, se no houver provas
suficientes de adoo de medidas preventivas, implicar em
responsabilidade direta dos administradores.
Revises de processos, reestruturao de conselhos e adoo de polticas que disseminem o conceito de governana
corporativa tambm devem ser consideradas como medidas
obrigatrias e urgentes.
O Basilia II
Com a criao pelo Bank for International Settlements (BIS),
o Banco Central dos Bancos Centrais que regula o setor no
mundo inteiro, de um Novo Acordo de Capitais, o Basilia
II, as instituies financeiras comearam a se preocupar
com a eficincia de seus controles internos e da gesto de
riscos operacionais.
As recomendaes do Comit de Superviso da Basilia,
que criou o Novo Acordo da Basilia, publicado em Junho
de 2004 pelo documento Convergncia Internacional de
Mensurao e Padres de Capital: Uma estrutura Revisada
(Basilia II), tratam do estabelecimento de critrios mais adequados ao nvel de riscos associados s operaes conduzidas
pelas instituies financeiras para fins de requerimento de
capital regulamentar, exigindo que as perdas operacionais
previstas sejam deduzidas da base de capital, impondo que as
instituies tenham a mensurao, gesto e controle do Risco
Operacional. Este ltimo, conforme descrito pelo Comit
da Basilia em 2001, o risco de perdas diretas e indiretas,
resultante de falhas em processos internos ou de eventos
externos, tais como fraudes, relaes trabalhistas, danos a
ativos, interrupo do negcio e falhas de sistemas, execuo e
gesto de processo. Na prtica, o novo acordo atinge os bancos
da seguinte maneira: a instituio que no possuir controles
internos eficientes e uma metodologia de avaliao de riscos
implementada ser obrigada a manter uma quantidade maior
de recursos prprios em sua estrutura patrimonial, enquanto
que, instituies que investirem nesses itens tero que reter
menor volume de recursos, o que tem um impacto determinante na competitividade dos bancos.
Do ponto de vista da rea de TI, ser necessria a adoo
de uma gesto de riscos operacionais para garantir total
segurana e confidencialidade dos dados dos clientes, sem
o comprometimento da instituio. Alm de oferecer uma
infraestrutura de sistemas que assegure a integridade da
base de dados e dos relatrios gerenciais, sendo preciso
adaptar sistemas e procedimentos dos bancos relacionados
anlise e medio do risco operacional.
Para permitir uma estratgia de gerenciamento do risco
o Basilia II exige a captao, arquivamento e estruturao
de dados histricos relacionados com a instituio nos ltimos cinco anos, consolidando na base de dados todas as
informaes sobre fraudes, lavagem de dinheiro, padres
de operaes e comportamentos suspeitos, garantindo a
existncia de um ambiente adequado de controles.
29
30
A metodologia CobiT
Desenvolvido pelo IT Governance Institute, o CobiT Control
Objectives for Information and Related Technology (Objetivos de
Controle sobre Informaes e Tecnologia Relacionada) -
considerada a metodologia base para a governana de TI,
projetado para ser uma ferramenta de gesto da rea de
Tecnologia da Informao que ajuda a compreender e gerenciar os riscos e benefcios associados com a informao
e relacionados com TI.
Conceito
O CobiT, agora na sua 3 edio, auxilia a associao entre
os riscos de negcio, as necessidades de controle e os aspectos tecnolgicos. Propicia boas prticas atravs de uma
matriz de domnios e processos (framework) estruturados de
forma lgica e gerencivel. Tais boas prticas representam
o consenso de especialistas, tendo sido pesquisadas e consolidadas pela ISACF (Information Systems Audit and Control
Foundation), com o intuito principal de constituir-se em
uma fonte educacional para profissionais de controle. Foi
desenvolvido como um padro geralmente aceito e aplicvel
para boas prticas de controle e segurana de Tecnologia de
Informao, objetivando ser seu equivalente dos Princpios
Contbeis Geralmente Aceitos.
A metodologia CobiT tem como misso: Pesquisar, desenvolver, publicar e promover um conjunto atualizado,
autorizado e com foco internacional, de objetivos de controle
geralmente aceitos e aplicveis Tecnologia da Informao
para o uso por gestores de TI, CIOs - Chief Information Officers
-, usurios e auditores de sistemas.
Aplicao do CobiT
O CobiT foi projetado para utilizao por trs distintos
pblicos:
Administradores: para auxili-los na ponderao entre
risco e investimento em controles num ambiente muitas
vezes imprevisvel como o de TI.
Usurios: para garantir segurana e controle dos servios
de TI fornecidos internamente ou por terceiros e;
Auditores: para subsidiar suas opinies e/ou prover aconselhamento aos administradores sobre controles internos.
Estrutura do CobiT
A metodologia CobiT possui trs nveis. No nvel mais
elevado esto os Domnios, que so agrupamentos de processos conforme a natureza destes. O CobiT est dividido
em quatro domnios:
I. Planejamento e organizao: Este domnio abrange estratgias e tticas, dando enfoque na identificao dos
caminhos que a TI pode melhor contribuir para a obteno
dos objetivos de negcio.
gest o de ti
31
Figura 1. COBIT
Componentes do CobiT
Os componentes do CobiT so utilizados para fazer com que a TI seja orientada aos objetivos do negcio e cumpra
seu papel na instituio. Para tanto, as
boas prticas do CobiT so organizadas
em processos, cada qual visando a um
Objetivo de Controle. Cada processo do
CobiT possui os seguintes componentes
(ver Figura 2):
Objetivos de controle: alinham o framework geral com objetivos de controle
detalhados de 41 fontes primrias que
compreendem padres e regulamentos
internacionais de fato e de direito que se
32
gest o de ti
Aquisio e
implementao
P
P
P
P
P
P
P
S
Monitorar os Processos
Avaliar a adequao do controle interno
Obter certificao independente
Auditoria
P
P
P
P
P
P
P
P
M1
M2
M3
M4
P
P
P
P
P
P
P
S
S
S
S
S
P
P
S
S
S
S
S
S
S
S
P
S
S
S
S
S
S
S
S
S
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
S
S
S
S
V
V
S
P
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
S
S
P
P
S
V
V
V
S
P
S
S
S
P
S
V
V
V
V
V
P
S
P
P
S
S
Tecnologia
S
P
P
P
V
V
V
V
V
V
V
V
Aplicativos
P
P
P
P
P
P
S
P
P
Pessoas
Identificar Solues
Adquirir e manter software aplicativo
Adquirir e manter arquitetura tecnolgica
Desenvolver e manter procedimentos de TI
Instalar e certificar sistemas
Gerenciar mudanas
Confiabilidade
AI1
AI2
AI3
AI4
AI5
AI6
Recursos de TI
Conformidade
S
S
S
S
P
Disponibilidade
P
P
P
P
P
P
P
P
P
P
P
Integridade
Confiabilidade
PO1
PO2
PO3
PO4
PO5
PO6
PO7
PO8
PO9
PO10
PO11
DS1
DS2
DS3
DS4
DS5
DS6
Fornecimento e Suporte DS7
DS8
DS9
DS10
DS11
DS12
DS13
Monitorao
Critrios de Informao
Eficincia
Planejamento e
Organizao
Processo
Eficcia
Domnio
Dados
Para atender as necessidades gerenciais de controle e medio de TI, o CobiT fornece para cada um dos 34 processos
de TI, alm dos objetivos de controles, diretrizes contendo
Instalaes
V
V
V
V
V
S
P
S
P
P
P
S
S
S
S
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
V
33
34
ITIL
Cada vez mais as organizaes sero pressionadas a
mostrar que possuem um rgido controle de todos os seus
processos de negcios. Como a Tecnologia da Informao
gest o de ti
35
Segurana da Informao
A informao um conjunto de dados que, como qualquer
outro ativo importante, essencial para os negcios de uma
organizao e consequentemente necessita de cuidado e
proteo. Como a interconectividade tem crescido, a informao vem sendo cada vez mais exposta a pessoas, ameaas
e riscos.
Independente de qual seja a forma que a informao est representada sempre recomendado que ela seja protegida adequadamente. Com isso, segurana da informao a proteo
da informao das ameaas na busca de manter a continuidade
do negcio, diminuir os riscos e maximizar retornos.
A segurana da informao obtida atravs da implementao de um conjunto de controles e tcnicas adequadas,
para a proteo da informao. Estas tcnicas precisam ser
trabalhadas para que sejam atendidas as necessidades de
segurana.
36
gest o de ti
1. CAMARGO, Francisco. Inimigo digital agita o setor financeiro. Mdulo Security Magazine,
2003.
2. DAMIANIDES, Mario. Sarbanes-Oxley and IT Governance: New Guidance on IT Control
and Compliance. ABI/INFORM Global, 2004.
3. FAGUNDES, Carlos. Introduo ao Risco Operacional. Disponvel on-line em: http://
www.clm.com.br/abbc/docs/RiscoOperacional-Palestra.pdf.
4. GHERMAN, Marcelo. Principais caractersticas do framework COBIT. So Paulo: Sicurezza, 2005.
5. ISO-International Organization for Standardization/ International Electrotechnical
Committee. Information technology- Code of practice for information security
management. Reference number ISO/IEC 17799:2000(E).
6. ITGI - THE IT GOVERNANCE INSTITUTE.COBIT: Control Objectives for information and
related Technology, 2000.
7. ITGI, IT Governance Institute. Board Briefing on IT Governance. ISACF, Information
Systems Audit and Control Foundation, 2003.
8. ITGI, IT Governance Institute. Executive Summary. ISACF, Information Systems Audit and
Control Foundation. CobiT 3rd Edition, 2000.
9. ITGI, IT Governance Institute. Student Book. ISACF, Information Systems Audit and
Control Foundation. CobiT 3rd Edition, 2004.
10. KFOURI, Eduardo. Alinhamento Estratgico, Mobilidade e Segurana: A viso do
mercado. Plano Editorial Ltda, 2004.
11. OGC Office of Government Commerce. ITIL: The Key to Managing IT Services Best
Practice for Service Support, 2001.
12. PAULK, M.C.; CURTIS, B; CHRISSIS, M.B.;WEBER, C.V. Capability Maturity Model for
Software, version 1.1. Technical Report, Carnegie Mellon Software Engineering Institute,
CMU/SEI-93-TR-024, 1993.
13. PEIXOTO, Rodney de Castro. Implicaes da Lei Sarbanes-Oxley na Tecnologia da
Informao. Mdulo Security Magazine, 2004.
14. ROCHA, Lus Fernando. Governana em TI e Segurana: COBIT e ISO 17799 no mercado
financeiro. Mdulo Security Magazine, 2003.
15. VAN GREMBERGEN, Wim. Strategies for Information Technology Governance. Idea
Group Publishing, 2003.
16. WEILL, Peter; ROSS, Jeanne W. Governana de TI: como as empresas com melhor
desempenho administram os direitos decisrios de TI na busca por resultados superiores.
M. Books do Brasil Editora Ltda., 2006.
Feedback
eu
www.devmedia.com.br/esmag/feedback
37
sobre e
s
Concluindo, este artigo reitera a dependncia que a governana do sistema financeiro possui com a governana de TI
das instituies que participam desse setor. Na medida em
que a gesto da informao e da TI responde aos objetivos e
estratgias das organizaes, as relaes e interaes entre as
organizaes tendem a ser mais efetivas.
Por este motivo, estruturar os processos de TI, tendo por
referncia a combinao dos frameworks do CobiT e ITIL,
uma forma dessas empresas se prepararem para as exigncias
Referncias
D
s
Concluso
edio
ta
Desenvolvimento
Nesta seo voc encontra artigos voltados para diferentes
abordagens de apoio ao desenvolvimento de projetos de software
38
desenvolvimento
determinado ponto, bem como os prs e contra da sua utilizao naquele contexto.
Um formato especfico foi criado para descrever cada padro
de uma forma que se torne mais fcil entend-lo e aplic-lo,
como uma espcie de gabarito para o padro de projeto. Este
gabarito formado por:
Nome do padro e sua classificao;
Inteno e objetivo do padro: que mostra qual a funo do
padro;
Tambm conhecido como: que a descrio dos outros possveis nomes que o padro pode ser conhecido;
Motivao para o uso do padro: que a definio de um
problema de projeto no qual o padro pode ser aplicado;
Estrutura do padro: que sua representao grfica atravs
de diagramas;
Participantes: que a definio de quais objetos e classes pertencem ao projeto e a responsabilidade que cada um assume,
entre outras caractersticas dos padres de projeto.
Outra importante referncia sobre padres de projeto, encontrada em [1], se destaca pela abordagem diferenciada, onde
possvel aprender, atravs de estudos de casos, um pouco da
experincia que alguns desenvolvedores adquiriram ao decorrer dos anos na utilizao das tcnicas de padres de projeto. A
apresentao dos benefcios que o uso dos padres de projeto
traz se torna evidente nesse tipo de abordagem.
Adquirir conhecimento sobre os padres de projeto fundamental, pois munido disso, o desenvolvedor ser capaz de
identificar situaes no sistema que esteja desenvolvendo,
e assim saber escolher qual padro melhor se encaixa neste
contexto.
Refatorao para padres um tema que est totalmente
relacionado a padres de projeto, portanto ser abordada a
importncia de se conhecer essas tcnicas e como us-las no
dia a dia do desenvolvimento de software em paralelo com o
conhecimento sobre padres (ler Nota do DevMan 1). Neste
sentido, neste artigo ser apresentada a primeira tcnica de
refatorao para padres que Substituir construtores por
mtodos de criao, bem como um exemplo prtico para
ilustrar sua aplicao em um cenrio real.
padres, onde o produto seria modificado, a fim de acrescentar padres de projetos importantes no contexto do projeto,
sem criar alteraes externas ao software, no permitindo
que novas caractersticas sejam adicionadas, o que no caso
caracterizaria alteraes de comportamento no software (ler
Nota do DevMan 2).
O uso desta tcnica aprimora a concepo (design) de um
software e evita a deteriorao to comum durante o ciclo de
vida de um cdigo. Esta deteriorao geralmente causada por
mudanas com objetivos de curto prazo ou por alteraes realizadas sem a clara compreenso da concepo do sistema.
Outra consequncia a melhora no entendimento do cdigo, o que facilita a manuteno e evita a incluso de defeitos.
Esta melhora no entendimento vem da constante alterao do
cdigo com objetivo de facilitar a comunicao de motivaes,
intenes e objetivos por parte do programador.
Nota do DevMan 1
Refatorao para padres
As tcnicas de refatorao para padres no contemplam apenas os padres de
projeto mais conhecidos como os do livro Padres de Projeto: solues reutilizveis
de software orientado a objetos. Algumas tcnicas permitem a insero de padres
de projeto que contribuem apenas para uma melhoria do cdigo fonte, como o caso
da refatorao apresentada neste artigo.
Nota do DevMan 2
Refatorao
Refatorao (do ingls Refactoring) o processo de modificar um sistema de software
para melhorar a estrutura interna do cdigo sem alterar seu comportamento externo.
39
40
desenvolvimento
Extrair Composite. Extrair Composite permite ao desenvolvedor extrair uma classe pai, partindo do princpio que
existem classes filhas que esto implementando o mesmo
Composite. Neste contexto, move-se o Composite para a classe
pai recm criada.
Substituir distino um/muitos por Composite. Permite a
remoo de cdigo duplicado, pois alguns desenvolvedores
criam mtodos semelhantes mas que se diferem por um manipular apenas um objeto de uma classe e outro manipular
uma lista desses objetos.
Substituir notificaes hard-coded por Observer. Alguns
desenvolvedores implementam classes filhas com a nica
responsabilidade de avisar quando um objeto de uma determinada classe foi criado. Com essa refatorao torna-se possvel
remover esta classe e permitir que sua classe pai faa esse
trabalho ao implementar uma interface do tipo Observer.
Unificar Interfaces com Adapter. Esta tcnica permite a
implementao do padro Adapter quando identificado o
uso excessivo de uma interface em relao a outra interface de
uma classe. Assim, torna-se possvel juntar interfaces criando
um adaptador.
Extrair Adapter. Outra forma de se inserir o padro Adapter
quando o desenvolvedor tem classes que carregam consigo cdigo referente a vrias verses de, por exemplo, um
componente. Como cada verso pode resultar em mudanas,
alguns desenvolvedores acabam sobrecarregando a classe
ao permitir que ela possua cdigo para vrias verses. Com
esta refatorao para padres, pode-se criar um Adapter para
resolver o problema.
Substituir linguagem implcita por Interpreter. Permite a
criao de interpretadores para linguagens implcitas, onde diversas classes so criadas para os elementos dessa linguagem,
substituindo um conjunto de mtodos de uma nica classe que
continham os elementos da linguagem implcita.
Substituir cdigo de tipo por Classe. Tcnica de refatorao
para padres que permite a remoo de cdigo que faz muito
uso de tipos primitivos de dados substituindo-os por tipos de
atributos de uma classe. Esta ao proporciona mais segurana
ao cdigo contra atribuies ou comparaes inseguras ou
invlidas de dados que podem ocorrer com tipos primitivos.
Limitar instanciao com Singleton. Ao contrrio da refatorao para padres Internalizar Singleton, esta tcnica
auxilia na implementao de Singletons quando h vrias
instncias de um mesmo objeto, quando na verdade deveria
haver apenas uma.
Introduzir objeto nulo. Realizar operaes com atributos
ou variveis que possuem valor nulo pode ocasionar falhas no
sistema. Para isso, alguns desenvolvedores escrevem cdigo
para verificar se esses atributos ou variveis no so nulos
antes de continuar, o que acaba se repetindo por vrios pontos
no sistema inserindo muito cdigo duplicado. Com o padro
Objeto Nulo, possvel reter esse cdigo em um nico lugar e
referenci-lo sempre que preciso, evitando duplicaes.
Mover acumulao para parmetro coletor. O padro de
projeto Parmetro Coletor permite a criao de um objeto que
41
42
desenvolvimento
43
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
6.
7.
8.
9.
10.
public Alunos()
{
6.
44
16.
17.
18.
19.
20.
21.
22.
23.
24.
25. }
pode ser muito custoso. Uma variao desta refatorao permite que apenas alguns construtores sejam removidos, dando
lugar a novos mtodos de criao.
Concluso
Fica evidente os benefcios que a utilizao das tcnicas de
refatorao para padres proporcionam. O cdigo fonte da
aplicao passa a ter padres de projetos implementados, sendo
inseridos de forma controlada, pois as refatoraes para padres
mostram como o processo deve ser feito com vrios pequenos
passos sequenciais. Cabe ao desenvolvedor ter o conhecimento
sobre as tcnicas de refatorao para padres e sobre os padres
que elas contemplam, alm do conhecimento sobre o funcionamento do cdigo que est sendo refatorado.
Referncias Bibliogrficas
1. FREEMAN, Eric e Elisabeth, 2007. Use a Cabea! Padres de Projeto, 2ed. Rio de Janeiro: Alta
Books, 2007.
2. GAMMA, Erich, 2000. Padres de Projeto: solues reutilizveis de software orientado a
objetos, 1ed. Porto Alegre: Bookman, 2000.
3. KERIEVSKY, Joshua. Refatorao para Padres, 1ed. Porto Alegre: Bookman, 2008.
Feedback
eu
sobre e
s
19.
20.
21.
22.
23.
24.
14.
15.
D
s
11.
12.
13.
edio
ta
22.
}
public Alunos(String nome)
{
Random matricula = new Random();
this.Nome = nome;
this.Matricula = Convert.ToUInt16(matricula.Next(0, UInt16.MaxValue));
}
public static Alunos CriarAluno(String nome)
{
return new Alunos(nome);
}
desenvolvimento
45
Desenvolvimento
Nesta seo voc encontra artigos voltados para diferentes
abordagens de apoio ao desenvolvimento de projetos de software
Possui mestrado e especializao em Cincia da Computao pela Universidade Federal de Viosa. Atualmente professor do
curso de Bacharelado em Sistemas de Informao do Centro de Ensino Superior de
Juiz de Fora (CES/JF) e do Curso Superior de
Tecnologia em Anlise e Desenvolvimento
de Sistemas da Fundao Educacional D.
Andr Arcoverde (FAA).
46
pro jeto
est na necessidade de aumento de produtividade, manutenibilidade e qualidade tanto do software quanto de seu
processo de desenvolvimento. O ganho na produtividade se
relaciona reduo da quantidade de cdigo a ser programada, testada e documentada, diminuindo tambm o custo do
produto. A capacidade de manter a aplicao melhorada,
pois o entendimento do sistema como um todo fica mais fcil,
j que componentes projetados para reuso tambm possuem
funes bem definidas e os desenvolvedores tornam-se mais
familiarizados com os cdigos reutilizados. A qualidade de
um software projetado para reuso, em geral, tambm maior
do que a de um software desenvolvido sem este propsito,
pois normalmente h um investimento maior no projeto,
documentao e testes.
Neste contexto, o cdigo ou qualquer outro artefato de
software reusvel deve ser catalogado para que possa ser
facilmente consultado, padronizado a fim de facilitar sua
implementao, e a integrao nova aplicao seja facilitada. Assim, o processo de identificao do componente a ser
reutilizado deve ser conhecido por meio de repositrio que
permita catalog-los. Alm disso, a gerncia de configurao
dos componentes armazenados deve permitir que as mudanas
e a evoluo destes componentes sejam controladas.
Porm, existem fatores que desmotivam o reuso. O custo
para construo de componentes de software maior, pois
necessrio investir mais no planejamento, documentao e
testes. Outro problema a ineficincia dos componentes, que
ocorre quando se tenta fazer componentes mais genricos para
servir a uma gama maior de reutilizadores.
Para conseguir sucesso na utilizao de componentes reusveis de software, a equipe de desenvolvimento deve ter atitude,
ferramentas e tcnicas apropriadas. A atitude envolve a conscientizao da equipe da necessidade de reuso. Muitas vezes,
por falta de padronizao ou comodidade, os desenvolvedores
preferem desenvolver um componente novamente. Ferramentas de auxlio ao reuso so fundamentais, pois podem auxiliar
na busca, armazenagem e recuperao dos componentes.
Como foi mencionado anteriormente, a reutilizao de software tambm pesquisada e incentivada em diversas etapas
do desenvolvimento e manuteno de software. Portanto, no
existe somente o reuso de software por meio de cdigo ou componentes gerados na fase de projeto da aplicao. possvel
citar outras classes de padres de software que abrangem diferentes nveis de abstrao, a fim de facilitar sua reutilizao.
Dependendo da fase ou nvel da construo de um sistema de
informao, os padres de software podem ser classificados
como padres de processo, padres arquiteturais, padres de
anlise, padres de projeto, padres de interface, padres de
programao, padres de persistncia, anti-padres. A descrio de cada classe de padro de software melhor detalhada
no artigo Catalogao de Padres publicado na edio 23 da
Engenharia de Software Magazine.
O desenvolvimento de software orientado a objetos traz
consigo grande motivao e foco no reuso de software. A
maioria das classes de padres mencionadas so especificadas
Frameworks
Framework definido como um arcabouo contendo classes,
objetos e relacionamentos agrupados para construir aplicaes
especficas. Um framework pode ser reutilizado por meio de
suas classes e relacionamentos, as quais possibilitam adaptarse a um domnio especfico de aplicao.
Assim, um framework um conjunto de classes abstratas e
concretas que prov uma infra-estrutura genrica de solues
para um conjunto de problemas. Tais classes fazem parte de
uma biblioteca de classes ou podem ser especficas da aplicao. Alm disso, frameworks possibilitam reutilizar no s
componentes isolados, mas tambm toda a arquitetura de um
domnio especfico. Ou seja, um framework serve como instrumento de reutilizao e no precisa ser implementado em uma
linguagem de programao para solucionar o problema.
Existem tambm frameworks conceituais, os quais permitem
especificar classes de um determinado domnio de aplicao,
que podem ser reutilizadas na fase de anlise de sistemas.
Como exemplo de framework conceitual, temos o UML-GeoFrame, utilizado na modelagem conceitual de Sistemas de
Informaes Geogrficas (SIG). O UML-GeoFrame um framework conceitual que fornece um diagrama de classes bsicas
para auxiliar o projetista nos primeiros passos da modelagem
conceitual de dados de uma nova aplicao de SIG.
O UML-GeoFrame foi desenvolvido para ser genrico o
bastante para expressar a ideia de um projeto conceitual para
vrias aplicaes geogrficas. Ele foi definido de acordo com
as regras do formalismo de orientao a objetos, utilizando
a notao grfica do diagrama de classes da linguagem
UML. Alm disso, este framework representa suas classes e
relacionamentos de objetos espaciais atravs de esteretipos
47
Padres de Anlise
Um padro de anlise definido como um esquema que reutilizado em um domnio especfico para modelagem conceitual de sistemas de
informao, sendo uma combinao recorrente
Figura 2. Padro Contrato
de conceitos que ocorre em um mesmo contexto.
Esta abordagem produz uma arquitetura de software que
mais flexvel e reutilizvel, comparada a outras abordagens
que tratam da descoberta e reuso de padres de anlise.
O reuso de padres de anlise proposto em outros domnios
de aplicao como, por exemplo, na modelagem conceitual
de sistemas de informao para comrcio eletrnico e para
gesto empresarial.
Monteiro (2002) apresenta a reutilizao de padres de anlise
no desenvolvimento de aplicaes para Web, apresentando
a definio de padres identificados a partir da anlise de
domnio de diversas aplicaes de comrcio eletrnico disponibilizados na Internet. Os padres identificados podem ser
teis no desenvolvimento de novas aplicaes, permitindo
maior produtividade e qualidade, diminuindo o custo e o
tempo dos projetistas na fase de levantamento de requisitos
de aplicaes de comrcio eletrnico.
As prximas sees discutem padres de anlise que podem
Figura 3. Padro Parte
ser reutilizados no contexto de aplicaes comerciais e aplicaes de comrcio eletrnico.
por exemplo, ao projetista de sistemas modelar endereos e
nmeros de telefones de departamentos de suas filiais e at
Padro Contrato
mesmo reutilizar esse mesmo esquema para os membros das
O padro Contrato (Figura 2) representa um contrato que
equipes de trabalhos (ver Figura 3).
feito entre Partes (contratante e contratada). A classe Contrato
representa uma negociao que pode ser uma compra ou venPadro para Aplicaes de Comrcio Eletrnico na Web
da de algum instrumento, que neste caso pode ser entendido
Monteiro (2002) prope um conjunto de padres de anlise
como um bem ou servio.
identificados em diversas aplicaes de comrcio eletrnico
Esse padro pode ser reutilizado em diversos domnios de
disponibilizadas na Internet. O autor realizou a anlise de doaplicao, como por exemplo, aluguel de veculos, imobilirias
mnio de diversos sites de comrcio eletrnico e apresentou os
ou terceirizao de servios diversos.
padres citados neste artigo. Tais padres podem ser teis no
desenvolvimento de novas aplicaes, uma vez que, iniciando
Padro Parte
a anlise de requisitos de um sistema com um conjunto bsico
O padro parte foi apresentado por Fowler (1997), que define
de requisitos j bem definidos e modelados, pode-se ganhar
a parte sendo uma pessoa ou organizao. Isto possibilita,
em produtividade e qualidade, diminuindo custos.
48
pro jeto
Ainda de acordo com o autor, apesar dos padres de anlise terem sido propostos para modelagem de aplicaes
de comrcio eletrnico na Web, alguns deles podem ser
aplicados a outros domnios. Os padres propostos por
Monteiro so: Dados de Clientes; Endereos de Clientes;
Perfil de Clientes; Lista de Presentes; Dados de Produtos;
Especializaes de Produtos; Pedidos; Pagamentos de
Pedidos.
Este artigo descreve o padro Lista de Presentes, sendo
uma caracterstica encontrada em diversas lojas, como na
Submarino, Amazon.com, Livraria Cultura e Ponto Frio.
A proposta para a modelagem dessa caracterstica dada
na Figura 4.
Apesar de possuir nomes diferentes, a estrutura dessas
listas praticamente a mesma. Por exemplo, no Amazon.
com chamada de Wish List, cuja traduo poderia ser
Lista de Desejos. J o Ponto Frio possui a possibilidade de
criar listas de presentes, no entanto com o nome de Lista
de Casamento, devido ao objetivo proposto pela loja para
o cadastro dessa lista. O esquema da Figura 4 abrange essa
possibilidade, uma vez que uma lista de casamentos um
caso particular de uma lista de presentes.
Diante do padro de anlise apresentado acima, uma
lista de presentes pode ser pblica ou privada. Uma lista
49
Feedback
eu
www.devmedia.com.br/esmag/feedback
Referncias
1.APPLETON, B.Patterns and Software: Essential Concepts and Terminology, 2000.Disponvel em <http://
www.cmcrossroads.com/ bradapp/docs/patterns-intro.html > Acesso em: 20 de janeiro de 2008.
2. BORGES, K. A. V. A Gesto Urbana e as Tecnologias de Informao e Comunicao. Informtica
Pblica, v. 2, p. 17-24, 2002.
3. BRAGA, R., T., V., GERMANO, F., S., R., MASIERO, P., C., MALDONADO, J., C.
4. Introduo aos Padres de Software. Disponvel em : www.icmc.usp.br/~rtvb/apostila.pdf.
Acesso em 30 de setembro de 2009.
5. COPLIEN, J. O.. Software Patterns, SIGS Books & Multimedia, USA, 1996.
6. CORFMAN, R. An Overview of Patterns. In: Rising L. (Org.). The Patterns Handbook: Techniques,
Strategies, and Applications. UK: Cambridge University Press, 1998.
7. DEVEDZIC, V. Software Patterns, In: CHANG, S.K. (Org.), Handbook of Software Engineering and
Knowledge Engineering. v. 2. Singapore: World Scientific Publishing Co, 2002. p. 645-671.
8. FERNANDEZ, E.B. Building systems using analysis patterns. In: International Software Architecture
Workshop (ISAW3), 1998. Orlando, Proceedings Orlando: ACM Press, 1998.
13. LISBOA FILHO, J.; IOCHPE, C. Specifying analysis patterns for geographic databases on the basis
of a conceptual framework. In: 7th ACM Symposium on Advances in Geographic Information
Systems, 1999. Proceedings. Kansas City : ACM, 1999.
14. LISBOA FILHO, J. ; IOCHPE, C. ; BORGES, Karla A V . Analysis patterns for GIS data schema reuse on
urban management applications. Clei Eletronic Journal, on-line, 2002. v. 5, no 2. p. 1-15.
15. LISBOA FILHO, J.; SODR, V. F.; DALTIO, J.; RODRIGUES JNIOR, M. F.; VILELA, V. M. A CASE tool
for geographic database design supporting analysis patterns. In: ER2004/CoMoGIS - Workshop on
Conceptual Modeling for GIS. CONCEPTUAL MODELING FOR ADVANCED APPLICATION DOMAINS.
Berlin : Springer LNCS, 2004. v. 3289. p. 43-54.
16. MARINHO, F. G.; ANDRADE, R. M. C. Uma Proposta de um Repositrio de Padres de Software
Integrado ao RUP. In: SugarloafPLoP. Recife : CiN - UFPE, 2003. v. 3. p. 277-290.
17. MESZAROS, G., DOBLE, J., A Pattern Language for Pattern Writing, in R. Martin, et al., Pattern
Languages of Program Design 3, Addison Wesley, 1998.
18. MONTEIRO, A. J. B. Padres de Anlise em Aplicaes de Comrcio Eletrnico na Web. 2002. 145 f..
Dissertao de Mestrado em Cincia da Computao, Universidade Federal de Minas Gerais, 2002.
19. PRESSMAN, R.S. Engenharia de software. Traduo: Rosngela Delloso Penteado. 6.ed. So
Paulo: McGraw-Hill, 2006.
10. GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J.. Padres de Projeto: Solues Reutilizveis de
Software Orientado a Objetos.Traduo de Luiz A. Meirelles Salgado. Porto Alegre: Bookman, 2000.
20. SILVA, E. O., LISBOA FILHO, J. Catalogao de Padres. Revista Engenharia de Software, ed 23,
Editora DevMedia: Rio de Janeiro, 2010.
11. GAZOLA, A.; LISBOA FILHO, J. ; ANDRADE, M.V.A. O Catlogo de Padres de Anlise da Ferramenta
ArgoCASEGEO. In: Congreso Latinoamericano de Informtica, 2006. Anais. Santiago : CLEI, 2006. p. 1-10.
12. GEYER-SCHULZ, A.; HASLER, M. Software Engineering with Analysis Patterns. Technical Report
01/2001, Institut fr Informationsverabeitung und Informationswirtschaft Wirtschaftsuniversitt
Wien Augasse 2-6 1090 Wien. Disponvel em <http://michael.hahsler.net/research/virlib_
working2001/virlib/> Acesso em: 01 de maro de 2007.
50
sobre e
s
D
s
Concluso
edio
ta
pro jeto
51
52