Escolar Documentos
Profissional Documentos
Cultura Documentos
Software na Prtica
Novatec
captulo 1
Com base na importncia cada vez maior do software no dia-a-dia das empresas, devemos nos preocupar com a maneira com que ele agrega valor aos
negcios das mesmas, aumentando a produtividade e diminuindo custos.
Desse modo, este captulo introdutrio apresenta o valor da tecnologia da
informao para as empresas e a importncia de utilizarmos processos adequados e engenharia de software na produo de sistemas com qualidade
e menores custos, tanto de desenvolvimento quanto de manuteno. Com
a finalidade de atender a esses objetivos, a rea de engenharia de software
destina parte de sua ateno ao quesito qualidade na construo de software,
utilizando a definio de modelos e processos para melhoria da qualidade e
diminuio de custos no desenvolvimento e na manuteno de sistemas. Existem hoje em dia vrias propostas de modelo buscando melhorar o processo
de desenvolvimento de software e a qualidade envolvida.
20
21
22
1.2 A armadilha
Quem gerencia projetos, ou j contratou empresas para execut-los, sabe que
uma das maneiras de diminuir custos e prazos de entrega diminuindo a
qualidade do produto. justamente aqui que se arma uma grande armadilha.
Os envolvidos podem no estar cientes das consequncias geradas a partir
do momento da entrega do sistema desenvolvido. Outro ponto de extrema
importncia saber que, caso o sistema no seja amigvel para uso, apresentando informaes consideradas no confiveis e com erros de funcionamento,
nenhum usurio se interessar em utilizar o mesmo, levando o projeto ao
fracasso e perdendo o investimento realizado.
Imagine o cenrio de um sistema de cobrana bancria, para o qual voc
poderia estar participando de um processo de manuteno corretiva, sem ter
a documentao do sistema e sem ter conhecimento das regras de negcio
implementadas. Imagine tambm que essa manuteno est relacionada
correo de informaes, que esto sendo geradas incorretamente. Agora,
para finalizar, imagine que o sistema tem milhares de linhas de cdigo e voc
novo na equipe, contratado recentemente, sendo que os programadores que
implementaram o sistema no esto mais na empresa.
Por mais que esse cenrio seja assustador, podemos encontr-lo nesse exato
momento em diversos lugares enquanto voc l este pargrafo. Mas o que
faltou no projeto de desenvolvimento desse sistema? Tecnicamente, poderia
citar os seguintes exemplos:
Engenharia de software e utilizao de processos definidos.
Utilizao de paradigma de desenvolvimento orientado a objetos.
Componentizao.
Utilizao de padres de design.
Documentao adequada.
Do lado humano, poderia citar:
Participao no projeto de profissionais com conhecimento dos itens
tcnicos apresentados.
Falta de percepo do patrocinador do projeto do valor e dos benefcios
de utilizar os itens tcnicos relacionados.
Falta de conhecimento dos envolvidos no projeto, das melhores prticas
de mercado para desenvolvimento de software e de seus benefcios.
23
24
25
26
1.4.3 Valor de TI
Pode ser descrita como envolvendo trs processos:
Inovao: imaginar a soluo.
Entrega da soluo: construir a soluo.
Provisionamento de servio/produto: entregar e dar suporte soluo.
Utilizando-se de processos propostos no mercado e na engenharia de
software, podemos otimizar a construo e entrega e diminuir custos de
suporte relacionados aos sistemas desenvolvidos. Como exerccio, tente responder como voc poderia atender a alguns dos processos propostos para
agregar valor de TI na hora de propor nosso sistema de comrcio eletrnico
de miniaturas de automveis.
27
1.4.4 Gerenciamento de TI
Podemos listar as seguintes preocupaes do gerenciamento da tecnologia da
informao dentro das empresas:
Qual a aplicao da TI na empresa?
Quais recursos de TI so compartilhados e qual ser a sequncia de
investimentos futuros?
Quanto a TI investir e quando?
Quais aplicaes de negcio so necessrias e em qual prioridade?
Quanto a TI pode gastar e quando?
Em geral, todas as empresas querem e precisam gastar o mnimo possvel
na aquisio e manuteno de sistemas, sendo que as empresas que desenvolvem software querem produzi-lo no menor custo e prazo. Novamente, a
engenharia de software pode ajudar muito a atingir essas metas.
28
29
Outro detalhe que, mesmo que o sistema esteja estvel e sem apresentar
erros, manutenes evolutivas so muito mais caras e demoradas, devido ao
desenvolvimento catico e desorganizado utilizado para disponibiliz-lo, geralmente sem documentao apropriada. Esta pode ser considerada a maior
armadilha gerada pela falta de visibilidade de quem defende a preferncia
pela no utilizao de processos e engenharia de software: achar que obter
vantagens quando de fato est programando armadilhas, custos futuros e
insatisfaes com o software de m qualidade.
30
1.7.1 Introduo
Este item tem por objetivo passar uma ideia clara do processo de manuteno
de software, mostrando principalmente os custos e dificuldades relacionados e como a engenharia de software pode colaborar para minimizar esses
aspectos. Depois de fornecer detalhes sobre tipos de manuteno e os custos
relacionados, ser apresentado o conceito de crise do legado.
31
Proporo de custos de
manuteno de software
2000
>90%
1993
0,75
1990
>90%
1990
60-70%
Definio
Custo de software relacionado manuteno e evoluo de
sistemas/custo total de software
Manuteno de software/oramento de sistemas de informao
(em 1000 empresas)
Custo de software relacionado manuteno e evoluo de
sistemas/custo total de software
Manuteno de software/oramento total de operao de sistemas
da informao (Management Information Systems MIS)
32
1988
60-70%
1984
65-75%
1981
>50%
1979
0,67
33
enfrentadas no desenvolvimento de software, inerentes ao aumento das demandas e da complexidade delas, aliado inexistncia de tcnicas apropriadas
para resolver esses desafios.
Imagine a complexidade de um software utilizado em aparelhos celulares
com reconhecimento de voz usando inteligncia artificial. No incio muitos
acreditavam nisso como fico cientfica. Com a evoluo, softwares de milhes
de linhas de instruo apareceram, como sistemas operacionais de mercado
conhecidos mundialmente. Alm do aumento grandioso de complexidade,
temos tambm o fenmeno da urgncia em se desenvolver esses softwares,
por exemplo, devido necessidades de mercado.
Esses fatos fizeram aparecer o conceito de crise do software, podendo ser
verificada por vrios sintomas, tais como:
Software de baixa qualidade.
Projetos com prazos e custos maiores que os planejados.
Software no atendendo aos requisitos dos stakeholders.
Custos e dificuldades no processo de manuteno.
Analisando os sintomas expostos e o que vemos hoje em dia, podemos verificar que a crise ainda est presente. Mesmo dispondo de tcnicas apropriadas
na atualidade, ainda presenciaremos esses problemas em um futuro prximo.
Mesmo empresas que tm conhecimento das tcnicas propostas s vezes
no conseguem pratic-las por presso do prprio cliente, por exemplo, em
relao a prazos.
1.10.1 O problema
Na atualidade, encontramos uma crise de desenvolvimento de software que,
alm de englobar os sintomas relacionados crise do software, est relacionada aos pontos a seguir:
Grande insatisfao de clientes.
Custos relativos ao desenvolvimento de sistemas aumentando, enquanto
os relativos a hardware diminuem.
34
1.10.2 Expectativas
Com base no grande nmero de falhas apresentadas por softwares, custos e
manutenes corretivas em sistemas, podemos enumerar as seguintes expectativas relacionadas ao desenvolvimento de software:
Software confivel, flexvel e de fcil manuteno.
Maior velocidade no desenvolvimento de software, acarretando diminuio dos custos e de tempo de entrega ao cliente.
Reusabilidade.
Diminuio do nmero de falhas nos aplicativos desenvolvidos, diminuindo os custos relacionados manuteno.
Portabilidade.
Computao distribuda: comunicao distribuda, comunicao interprocessos, compartilhamento e replicao de dados e segurana.
Dessas expectativas, surge, entre outros, o paradigma orientado a objetos
e a engenharia de software como ferramentas para a soluo de problemas.
Neste livro forneo uma srie de conceitos e melhores prticas de mercado
desenvolvidos para se alcanar essas expectativas e diminuir os sintomas da
crise do software comentada no item 1.9 deste livro.
35
repetveis e eficazes para serem utilizados nos ciclos de manuteno e desenvolvimento de software.
Este item apresenta uma srie de conceitos iniciais que sero explorados
nos prximos captulos do livro.
36
37
Representao contnua
A representao contnua possibilita que a empresa utilize a ordem de melhoria
que melhor atende seus objetivos de negcio. caracterizado pelos seguintes
Nveis de Capacidade (Capability Levels):
Nvel 0: incompleto (Ad hoc).
Nvel 1: executado (definido).
Nvel 2: gerenciado/gerido.
Nvel 3: definido.
Nvel 4: quantitativamente gerenciado/gerido quantitativamente.
Nvel 5: em otimizao ou otimizado.
Como vantagens da representao contnua podemos relacionar:
Fornece maior flexibilidade focando em reas de processo especficas
de acordo com metas e objetivos de negcio.
Permite a comparao de reas de processo entre diferentes organizaes.
Estrutura familiar para aqueles que esto migrando da comunidade de
engenharia de sistemas.
Foco bem-definido nos riscos especficos de cada rea de processo.
Estrutura compatvel com o padro ISO/IEC 15504.
38
Anlise e medidas.
Garantia de qualidade.
Gerncia de configurao.
Nvel 3: Definido
reas-chave do processo para o nvel 3:
Desenvolvimento dos requisitos.
Soluo tcnica.
Integrao de produtos.
Verificao.
Validao.
Foco no processo organizacional.
Definio do processo organizacional.
Programa de treinamento.
Gerenciamento de projetos integrado.
Gerenciamento de riscos.
Integrao de equipes.
Gerenciamento integrado de fornecedores.
Anlise e resoluo de decises.
Integrao do ambiente organizacional.
Nvel 4: Gerenciado quantitativamente
reas-chave do processo para o nvel 4:
Gerenciamento quantitativo de processos.
Gerenciamento da qualidade de software.
Nvel 5: Em otimizao Gerenciamento de mudanas no processo,
utilizando a informao quantitativa para melhorar continuamente e
gerenciar o processo de software.
reas-chave do processo para o nvel 5:
Inovao organizacional e implantao.
Anlise de causas e resolues.
39
rea de processo
Planejamento de projeto
Gerenciamento de configurao
Integrao de produto
Medio e anlise
Gerenciamento de requisitos
Desenvolvimento de requisitos
40
Gerenciamento de riscos
Soluo tcnica
Treinamento organizacional
Validao
Verificao
41