Sie sind auf Seite 1von 23

Engenharia de

Software na Prtica

Hlio Engholm Jr.

Novatec

captulo 1

Desenvolvimento de software para o valor de


negcios

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.

1.1 Qualidade na construo de software


A qualidade contempla uma srie de objetivos da construo de software,
conhecidos como requisitos no-funcionais, tais como extensibilidade, capacidade de manuteno, reutilizao de cdigo, desempenho, escalabilidade,
usabilidade e confiabilidade nos dados apresentados pela aplicao. Esses
tipos de requisitos no-funcionais sero explicados no item 3.4 deste livro.
Podemos presenciar uma srie de problemas enfrentados por empresas que
investem no desenvolvimento de sistemas sem a utilizao de engenharia de
software, seja por desenvolvimento interno ou pela contratao de empresas
que constroem sistemas. Para clarificar esses problemas, so apresentadas a

20

Captulo 1 Desenvolvimento de software para o valor de negcios

21

seguir as consequncias prticas de desenvolver software de modo ad hoc, sem


utilizao de processos definidos, orientao a objetos e melhores prticas:
Softwares difceis de se dar manuteno, tanto corretiva quanto evolutiva. Ser apresentado no item 1.8.3, Tipos de manuteno, uma estatstica
de mercado que mostra que os profissionais envolvidos gastam, em
mdia, cerca de 50% do esforo somente tentando entender o cdigo
pronto.
Softwares difceis de se implementar alteraes, tanto corretivas quanto
evolutivas.
Reutilizao de cdigo mal elaborado e sujeito a gerao/propagao
de erros em outras partes do sistema em desenvolvimento.
Sistemas com baixo desempenho e escalabilidade inadequada.
Baixa eficincia no desenvolvimento, com analistas desenvolvendo as
mesmas funcionalidades diversas vezes.
Falta de confiana nos dados apresentados pelo sistema, fazendo com que
usurios deixem de utilizar o sistema por no confiar nas informaes
apresentadas.
Baixa qualidade de cdigo.
Em contrapartida aos efeitos do desenvolvimento ad hoc, temos o maior
desejo de todas as empresas que desenvolvem software: ter menores custos e
tempo de desenvolvimento nos processos de implementao e manuteno
de sistemas. Esse desejo faz com que muitas empresas prefiram no utilizar
processos de engenharia de software, pensando na falsa economia de tempo e
diminuio de custos. Posso afirmar que essa ideia falsa, pois a no utilizao
de mtodos adequados no desenvolvimento gera softwares de m qualidade,
que trazem frustrao aos usurios, custos adicionais relacionados manuteno corretiva e problemas na utilizao do sistema. Desse modo, todo o
tempo e dinheiro economizado no desenvolvimento ser gasto em correes,
trazendo prejuzos imagem do projeto e ao prprio sistema.
Para termos uma ideia mais clara dos motivos que nos levam a utilizar a
engenharia de software, apresentado a seguir a armadilha associada no
utilizao da mesma no desenvolvimento de sistemas e, em seguida, como a
tecnologia da informao agrega valor ao negcio, ratificando a importncia
de mtodos e procedimentos adequados no desenvolvimento de sistemas
para as empresas.

22

Engenharia de Software na Prtica

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.

Captulo 1 Desenvolvimento de software para o valor de negcios

23

J tive a oportunidade de presenciar empresrios e executivos fazendo o


seguinte comentrio: Prefiro o desenvolvimento de software sem utilizar
orientao a objetos e processos de desenvolvimento, tipo CMMI, pois fica
mais barato e mais rpido disponibilizar o sistema para os usurios.
Pessoas que pensam assim provavelmente desconhecem o que ser apresentado no item 1.8 deste livro chamado Crise do legado, no qual sero
apresentadas informaes que deixam evidente a grande armadilha de quem
escolhe esse tipo de procedimento no desenvolvimento de software, que pode
gerar as consequncias listadas a seguir:
Implantao de sistemas repletos de erros, constantemente entrando
em manuteno e interrompendo o trabalho dos funcionrios, o atendimento a clientes e/ou as funcionalidades disponibilizadas a clientes.
Sistemas que podem no atender s expectativas dos stakeholders.
Softwares com alto custo de manuteno.
Softwares difceis de serem utilizados, no atendendo s necessidades
dos stakeholders.
Grande insatisfao dos usurios.
Prejuzos de imagem junto a clientes.
Fracasso do projeto.
O desenvolvimento ad hoc de sistemas sem utilizar processos acaba custando muito mais caro, gerando insatisfao. J presenciei vrias vezes pessoas
e empresas que simplesmente no querem e no utilizam sistemas disponibilizados por pelo menos um dos seguintes motivos:
No confiavam nos dados por eles apresentados.
Porque no atendiam a suas expectativas e necessidades do dia-a-dia.
Porque tinham usabilidade ruim.
Porque viviam apresentando problemas de funcionamento.
Porque costumavam ficar indisponveis.
O detalhe mais triste que as empresas detentoras desses sistemas investiram dinheiro e tentaram disponibilizar um sistema para melhorar a produtividade e diminuir custos. O resultado foi exatamente o contrrio: alm
de no diminuir custos nem aumentar produtividade, as empresas perderam
todo o investimento realizado, e o sistema caiu em desuso, literalmente, sendo
jogado fora.

24

Engenharia de Software na Prtica

1.3 Valor da tecnologia da informao


Neste tpico ser mostrado como a tecnologia da informao pode agregar
valor ao negcio da empresa.

1.3.1 Gerenciando TI para o valor de negcio


Na hora de um executivo de determinada empresa defender investimentos em
sistemas, seja desenvolvimento interno, externo ou a compra de um sistema
pronto, ele necessita defender sua proposta. Pelo menos, os seguintes itens
devem estar presentes:
Contribuio e benefcios dados pelos investimentos propostos.
Alinhamento da proposta com o negcio da empresa.
Como construir ou contratar a rea de TI para entregar e sustentar o
software proposto.
Custo total de propriedade.
Retorno do investimento.
justamente nos quesitos investimento em software, custo de propriedade e retorno de investimento que a engenharia de software tem muito a
contribuir. Utilizando-se das melhores prticas de engenharia de software
de mercado no desenvolvimento de software, temos menores custos na manuteno de sistemas, agilizando o retorno de investimentos e diminuindo o
custo de propriedade caso o sistema disponibilizado no seja eficiente como
o pretendido e apresente falhas constantes, no atendendo aos requisitos dos
usurios e no agregando valor,situao em que ser difcil para quem props
o projeto mostrar as contribuies e benefcios que prometeu ao apresentar
e defender o projeto. Como justificar o retorno de investimento realizado
nesse tipo de projeto? Como defender que o projeto proposto est alinhado
a qualquer negcio se ele gerou um sistema repleto de falhas, que no atende
s expectativas dos envolvidos?

1.3.2 Metodologia do ndice de Valor de Negcio


Desenvolvido pela Intel para verificar o potencial de investimentos futuros,
comparar opes e priorizar investimentos com base no ambiente de negcios
corrente, esse ndice considera os seguintes pontos:
Valor de negcio: mede o impacto corporativo do projeto na estratgia
da empresa e em suas prioridades.

Captulo 1 Desenvolvimento de software para o valor de negcios

25

Eficincia de TI: mede como o investimento vai utilizar ou melhorar a


infraestrutura existente.
Atratividade financeira: mede o nvel de investimento e o valor presente
do projeto.
Analisando o que considerado para o ndice proposto pela Intel para
softwares, alm dos mesmos deverem estar alinhados a necessidades de negcio das empresas, eles devem ser desenvolvidos de forma eficiente, com o
menor custo possvel e menor custo total de propriedade, considerando neste
os custos relacionados manuteno dos mesmos aps a implantao.

1.4 Relaes entre o ciclo de vida do projeto e o ciclo de vida do produto


Muitos projetos esto ligados ao trabalho em andamento da organizao
executora. Algumas organizaes aprovam formalmente os projetos somente
aps o trmino de um estudo de viabilidade, um plano preliminar ou alguma
outra forma equivalente de anlise. As motivaes que criam o estmulo para
um projeto so normalmente chamadas de problemas, oportunidades ou
necessidades de negcios.
No estudo de caso apresentado neste livro, mostra-se um projeto de criao de comrcio eletrnico de uma empresa que comercializa miniaturas de
automveis famosos, visando a prospeco e intensificao de clientes, alm
da divulgao da empresa e de seus produtos pela Internet.
necessrio ter cuidado para distinguir o ciclo de vida do projeto do ciclo
de vida do produto. Por exemplo, um projeto de desenvolvimento de um novo
sistema apenas um aspecto do ciclo de vida do produto, o sistema a ser entregue.
O que no est claro para muitos profissionais e empresas consiste nos
custos relacionados manuteno dos sistemas ps-implantao. Dedicarei
um item inteiro deste livro para mostrar claramente esses custos do produto
de sistema, aps implantao em produo. A importncia disso mostrar o
retorno do investimento de se utilizar processos formais no desenvolvimento
de sistemas. Em nosso estudo de caso, alm dos custos de manuteno evolutiva do sistema on-line, teremos tambm custos para atualizao do catlogo
de produtos e administrao do relacionamento com o cliente, entre outros.

1.4.1 Relao entre o produto e os ciclos de vida do projeto


A figura 1.1 apresenta o diagrama do ciclo de vida de um produto qualquer, mas
que, em nosso contexto, deve ser considerado para um sistema de software.

26

Engenharia de Software na Prtica

Observe que depois de desenvolvido o produto, em nosso caso, um sistema


de comrcio eletrnico de miniaturas de automveis desenvolvido e implantado em produo, o mesmo passa para a fase de operacionalizao. nessa
fase que aparecem os custos de manuteno. A ISO/IEC 12207 [4] considera o
desenvolvimento e a manuteno do software como processos que compem
o ciclo de vida de software.

Figura 1.1 Ciclo de vida do projeto de software.

1.4.2 Competncias e capacidade


O negcio ganha vantagens competitivas quando inventa e implementa aplicaes estratgicas mais rapidamente, com mais funcionalidades e com custos
menores que seus concorrentes. Um dos objetivos da tecnologia da informao
diminuir os custos das empresas e aumentar a produtividade. Para isso,
precisamos ter sistemas que aumentem a produtividade e no envolvam altos
custos de manuteno utilizando engenharia de software.

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.

Captulo 1 Desenvolvimento de software para o valor de negcios

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.

1.4.5 Estratgias para reduo de custos


A seguir so apresentadas algumas estratgias para reduo de custos na rea
de tecnologia da informao propostas pelas empresas:








Renegociar com fornecedores.


Trocar fornecedores.
Ajustar acordos de nvel de servio.
Realizar reengenharia de processos de negcios.
Rastrear gastos.
Considerar alternativas de outsourcing.
Trocar recursos para localizao de custos mais baixos.
Substituir tecnologias/sistemas ultrapassados.
Gerenciar portflios de tecnologia da informao.

Minimizar custos operacionais com a tecnologia da informao.


Dos pontos apresentados, podemos verificar aqueles alinhados aos objetivos da engenharia de software, a saber:
Substituir tecnologias/sistemas ultrapassados, utilizando-se de outros
mais alinhados aos requisitos no-funcionais do sistema.
Minimizar custos operacionais com TI, utilizando sistemas com custos
de manuteno menor.

28

Engenharia de Software na Prtica

1.5 Custo total de propriedade


O Gartner Group introduziu o conceito de custo total de propriedade como
uma medida de aproximao para gerenciar e reduzir custos, mostrando que
a manuteno o maior componente de custo de solues. Envolvendo pessoas, processos e tecnologia, suporte ao usurio final, suporte TI, hardware
e software, a avaliao desse custo fundamental para o gerenciamento do
valor de negcio representado pela tecnologia da informao.
extremamente importante ressaltar esse custo, pois muitos empresrios
no tm uma noo clara do quanto custa manter um sistema de baixa qualidade em operao nem o custo para implementar manuteno evolutiva
em sistemas mal desenvolvidos. Aliado a isso, temos tambm problemas de
funcionrios que no conseguem executar suas tarefas da maneira esperada
e o custo das horas em que esses mesmos funcionrios no esto produzindo por estarem aguardando o sistema voltar a operar corretamente, alm de
impactos na imagem da empresa quando clientes tentam utilizar sistemas
com problemas.
J presenciei uma empresa com legado composto por diversos sistemas
sem documentao, baixa qualidade e que, frequentemente, apresentavam
problemas de funcionamento. Alm das paradas no negcio da empresa, que
geravam perdas imensurveis, relacionadas sua imagem perante os clientes,
a mesma periodicamente tinha que arcar com os custos relacionados a manutenes corretivas. Voc continuaria utilizando uma operadora de telefonia
celular que vivesse fora do ar? Para quantas pessoas voc falaria mal dessa
empresa, e qual seria o impacto disso nos negcios da companhia? Qual o
prejuzo gerado?
O que j vi vrias vezes, com a certeza de que verei novamente, so pessoas
que acreditam que desenvolver software utilizando processos e o paradigma
orientado a objetos no necessrio, e at que perda de tempo. Simplesmente acham que no vale a pena gastar e esperar mais para ter seus sistemas
desenvolvidos utilizando as melhores prticas de engenharia de software de
mercado.
Para essas pessoas, devemos apresentar as informaes do item sobre
manuteno de software apresentado neste livro, no qual mostro os custos
para manter softwares mal elaborados e estruturados. Na verdade, tudo o
que se economiza desenvolvendo software ad hoc se gasta muitas vezes mais
nos processos de manuteno dos sistemas, alm de eventuais impactos de
imagem junto ao cliente.

Captulo 1 Desenvolvimento de software para o valor de negcios

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.

1.6 Valor do investimento em software


Na hora de defender a aquisio ou desenvolvimento de um novo software,
devemos ter pelo menos os seguintes objetivos em mente:
Aumento da produtividade.
Diminuio de custos operacionais.
Diminuio de erros operacionais.
Retorno do investimento.
O Retorno do Investimento (ROI Return On Investment) representa o
tempo necessrio para recuperar os investimentos realizados em um projeto e
para a obteno de lucros. Desse modo, todo investimento deveria ter a anlise
de ROI elaborada para se ter uma ideia clara das vantagens e desvantagens
de realizar o projeto.

1.6.1 Defesa da realizao de um investimento em TI


Para defender investimentos em um projeto de software, podemos considerar
pelo menos os seguintes itens:
A aprovao de qualquer investimento TI deveria ter como base um
caso de negcio.
A avaliao quantitativa do caso de negcio o retorno de investimento.
ROI utilizado para auxiliar nas decises de investimento em TI.
ROI a mtrica mais utilizada para justificar investimentos em TI.
O importante visualizar que todo o investimento realizado em um sistema
de software pode desaparecer se apresentarmos, no final, um sistema de baixa
qualidade, com baixo desempenho, difcil de utilizar, que mostre dados no
confiveis e com alto custo de manuteno.

30

Engenharia de Software na Prtica

1.7 Processo de manuteno de software


Apresentarei agora algumas informaes relacionadas ao custo da manuteno
de software.

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.

1.7.2 Tipos de manuteno


A manuteno de software pode estar associada a motivos diferentes, originando diferentes tipos de manuteno. Entre estes podemos listar:
Corretiva: modificao do software com o objetivo de corrigir falhas.
Evolutiva: relacionada incluso de novas funcionalidades ou ao desempenho.
Adaptativa: relacionada adaptao do software a ambientes operacionais diferentes.
Com base nos vrios tipos de manuteno, podemos dizer que as manutenes esto associadas a pelo menos um dos itens a seguir:
Remoo de defeitos.
Adio de funcionalidades no sistema.
Alterao de funcionalidades.
Evoluo das funcionalidades.
Ajustes.
Atualizao.
Melhora de desempenho.

1.7.3 Custo da manuteno


Existe uma srie de motivos que influenciam os custos de manuteno de um
sistema. Entre eles podemos enumerar os seguintes pontos como diretamente
relacionados a esses custos:

Captulo 1 Desenvolvimento de software para o valor de negcios

31

Documentao existente relacionada ao sistema e qualidade da mesma.


Qualidade do software.
Design do sistema.
Paradigma de programao utilizado.
Tamanho do software, relacionado quantidade de linhas de cdigo.
Qualidade tcnica da equipe responsvel pela manuteno.
Regras de negcio embarcadas no sistema.
Plataforma de desenvolvimento.
Mostrarei resultados de estudos que comprovam que os envolvidos em
manuteno gastam, em mdia, 50% do esforo tentando entender o cdigo.
Isso geralmente resultado de cdigo mal ou nada documentado, podendo
ser tambm resultado da falta de utilizao de engenharia de software e de
documentao do sistema durante o desenvolvimento.

1.8 Crise do legado


De acordo com o Information Technology Research Institute, ELTIS-project,
o custo relacionado manuteno de software e ao gerenciamento de sua
evoluo representa atualmente cerca de 90% do custo total. Isso foi referido
como crise do legado por Seacord e colaboradores (2003).

1.8.1 Custo proporcional relacionado manuteno de software


Veja na tabela 1.1 uma srie de informaes relacionadas ao custo da manuteno de software fornecidos pelo prprio Information Technology Research
Institute.
Tabela 1.1 Custo proporcional de manuteno de software
Ano

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

Engenharia de Software na Prtica

1988

60-70%

1984

65-75%

1981

>50%

1979

0,67

Manuteno de software/oramento operacional do total de


sistemas de informao gerencial (Management Information
Systems MIS)
Esforo gasto na manuteno de sistemas/total disponvel
relacionado a engenharia de software
Tempo gasto pela equipe de manuteno/tempo total (em 487
organizaes)
Custos de manuteno/custo total de software

Observando os dados da tabela 1.1, podemos ter uma ideia da importncia


de termos softwares bem desenvolvidos e com qualidade, justificando os custos
associados nos processos de desenvolvimento dos mesmos.

1.8.2 Custo absoluto relativo manuteno de software


Podemos encontrar as seguintes informaes relacionadas a custos de manuteno de software:
O custo anual relacionado manuteno de software nos estados
Unidos est estimado em mais de US$ 70 bilhes (Sutherland, 1995;
Edelstein, 1993).
Por exemplo: nos EUA, o governo federal gastou sozinho cerca de US$
8,38 bilhes durante o perodo de cinco anos devido ao bug do milnio.
A Nokia Inc. utilizou cerca de US$ 90 milhes relacionados a correes
preventivas do bug do milnio.

1.8.3 Tipos de manuteno


Alm das manutenes corretivas, estudos estimam que cerca de 75% dos
custos de manuteno so relativos a fornecer evoluo ao software, na forma
de manuteno adaptativa e evolutiva (Martin, 1983; Nosek & Palvia, 1990;
van Vliet, 2000). Esses estudos mostram tambm que cerca de 50% do tempo
gasto no processo de entendimento do cdigo a ser mantido (Fjeldstad &
Hamlen, 1983; Standish, 1984).
Essas informaes comprovam o valor de sistemas bem implementados,
documentados e fceis de serem mantidos.

1.9 Crise do software


Nos anos 70, apareceu o termo crise do software, quando a engenharia de
software praticamente inexistia. Esse termo estava relacionado s dificuldades

Captulo 1 Desenvolvimento de software para o valor de negcios

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 Problemas, expectativas e metas relacionados a software


Afinal de contas, quais so os problemas, expectativas e metas relacionados
a software?

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

Engenharia de Software na Prtica

Prazo de desenvolvimento de software tornando-se mais longo enquanto


os custos de manuteno tornam-se maiores.
Erros de software tornando-se mais frequentes, refletindo em custos de
manuteno e de retrabalho.
Processos estruturados de desenvolvimento sendo inflexveis e ainda
muito utilizados.
Desenvolvimento de aplicativos/sistemas com alto custo, baixa qualidade
e com demanda cada vez maior, aliados a uma complexidade tambm
cada vez maior.
Presso das empresas clientes para entregas rpidas dos sistemas.

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.

1.11 Engenharia de software


A engenharia de software surgiu com o objetivo de utilizar princpios de
engenharia no desenvolvimento de software para aumentar a qualidade dos
produtos oferecidos, diminuir os custos e riscos relacionados e criar processos

Captulo 1 Desenvolvimento de software para o valor de negcios

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.

1.11.1 Definio de engenharia de software


Segundo Friedrich Ludwig Bauer, engenharia de software a criao e a utilizao de slidos princpios de engenharia a fim de obter software de maneira
econmica, que seja confivel e que trabalhe eficientemente em mquinas
reais. O prprio significado de engenharia j envolve os conceitos de criao,
construo, anlise, desenvolvimento e manuteno.
A engenharia de software se concentra nos aspectos prticos da produo de
um sistema de software sendo criada na tentativa de tratar a crise do software
apresentada no item 1.9, realizando tratamento de engenharia sistemtico e
controlado no desenvolvimento de softwares.
O estudo de caso deste livro ir mostrar, na prtica, um projeto de desenvolvimento de software utilizando processos definidos pela engenharia de
software, percorrendo todas as fases do ciclo de desenvolvimento de software,
desde a requisio da rea de negcio de uma empresa at a elaborao do
plano de testes e a implantao do mesmo. A dinmica ser realizada por
meio da utilizao de vrios processos envolvidos, junto com templates que
podero, se desejado, ser utilizados por voc e sua empresa como ponto de
partida em projetos reais.

1.11.2 reas de conhecimento


Segundo o SWEBOK (Software Engineering Body of Knowledge Corpo
de Conhecimento da Engenharia de Software), as reas de conhecimento da
engenharia de software so:
Requisitos de software.
Anlise e desenho de software.
Implementao de software.
Teste de software.
Manuteno de software.
Gerncia de configurao de software.

36

Engenharia de Software na Prtica

Gerncia de engenharia de software.


Processos de engenharia de software.
Ferramentas e mtodos de engenharia de software.
Qualidade de software.
Utilizando estudos de caso, mostrarei os processos de gerenciamento de
requisitos, anlise e design, implementao, testes, gerenciamento de mudanas e gerenciamento de riscos na prtica, apresentando vrios templates que
podem ser utilizados por voc em sua rotina de trabalho.

1.11.3 Metas de engenharia de software para utilizao do Paradigma Orientado a


Objetos (POO)
Na tentativa de se produzir softwares com qualidade e de fcil manuteno,
algumas dcadas atrs foi desenvolvido o Paradigma Orientado a Objetos para
desenvolvimento de software. Pelo fato de esse paradigma estar embarcado na
engenharia de software, podemos apresentar os seguintes itens como metas
de engenharia de software relacionada orientao a objetos:
Aumento do encapsulamento, agrupando todas as peas de um objeto
dentro de um pacote limpo.
Aumento da ocultao de informaes com o uso de um objeto, fazendo
com que ele no saiba o que ocorre dentro de si (Caixa Preta).
Aumento da reusabilidade de cdigo.
Diminuio dos custos e do tempo de desenvolvimento.
Facilidade de manuteno, tanto corretiva quanto evolutiva.

1.11.4 Modelos de maturidade


Os modelos de maturidade surgiram para avaliar a qualidade dos processos
de software aplicados em uma organizao (empresa ou instituio). Entre
os mais populares, temos o Capability Maturity Model Integration (CMMI),
do Software Engineering Institute SEI. Nesse modelo podemos entender a
capacidade de um processo como a habilidade com que ele alcana o resultado
desejado. J um modelo tem como objetivo estabelecer, com base em estudos,
histricos e conhecimento operacional, um conjunto de melhores prticas que
devem ser utilizadas para um fim especfico. O CMMI pode ser organizado
de duas formas, a contnua e a estagiada.

Captulo 1 Desenvolvimento de software para o valor de negcios

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.

Representao por estgios


Disponibiliza uma sequncia predeterminada para melhoria baseada em estgios que no deve ser desconsiderada, pois cada estgio serve de base para o
prximo. Pelo modelo estagiado, mais tradicional e mantendo compatibilidade
com o CMM, uma organizao pode ter sua maturidade medida em 5 nveis
de Maturidade (Maturity Levels):
Nvel 1: Inicial (Ad hoc).
Nvel 2: Gerenciado/Gerido
reas-chave do processo para o nvel 2:
Gerenciamento de requisitos.
Planejamento de projetos.
Controle e monitoramento de projetos.
Gerncia de subcontratos.

38

Engenharia de Software na Prtica

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.

Captulo 1 Desenvolvimento de software para o valor de negcios

39

Vantagens da representao por estgios:


Fornece uma rota de implementao por meio de:
Grupos de rea de processo.
Implementao em sequncia.
Cada nvel funciona como fundamento para o prximo nvel.
Estrutura familiar para aqueles que esto migrando do SW-CMM.
Habilidade de gerenciar processos na organizao.
Atribuio de uma nota de classificao do nvel de maturidade em que
a organizao se encontra pelos resultados das avaliaes, permitindo,
dessa forma, a comparao de forma direta entre as organizaes.
O SEI criou recentemente o CMMI como um modelo de maturidade tendo
por objetivo agrupar as diferentes formas de utilizao que foram dadas a seu
predecessor, o CMM. O CMMI foi construdo sobre a estrutura do CMM, o
modelo de melhoria de processo mais difundido e utilizado na comunidade
de software, com as seguintes caractersticas:
mais abrangente, englobando diversas disciplinas em um nico modelo, com uma nica estrutura, metodologia comum e nomenclatura
padro.
Pode ser utilizado no desenvolvimento de produtos, servios e manuteno.
Rene melhores prticas de outros modelos.

1.11.5 reas de processo


O modelo CMMI v1.2 (CMMI-DEV) contm 22 reas de processo, representadas na tabela 1.2.
Tabela 1.2 Custo proporcional de manuteno de software
rea de processo

rea de processo

Anlise causal e resoluo

Planejamento de projeto

Gerenciamento de configurao

Garantia da qualidade de processo e produto

Anlise de deciso e resoluo

Integrao de produto

Gerenciamento integrado de projeto

Gerenciamento quantitativo de projeto

Medio e anlise

Gerenciamento de requisitos

Inovao organizacional e implantao

Desenvolvimento de requisitos

40

Engenharia de Software na Prtica


Definio de processo organizacional

Gerenciamento de riscos

Foco de processo organizacional

Gerenciamento de acordo com fornecedor

Desempenho de processo organizacional

Soluo tcnica

Treinamento organizacional

Validao

Monitorao e controle de projeto

Verificao

1.12 O CMM e o processo de desenvolvimento de software


O CMMI descreve o que deve ser feito em relao ao processo de desenvolvimento de software, com a finalidade de gerar qualidade. Ele diz que devemos, por exemplo, gerenciar requisitos, riscos e mudanas, alm de planejar
e monitorar o projeto.
Para institucionalizar as prticas previstas no modelo, utilizamos Metodologia de Desenvolvimento de Sistemas utilizando instrues (workflows),
guias, modelos, listas de verificao, ferramentas e assim por diante. Para o
processo de certificao, deve-se apresentar ao SEI como a empresa est endereando o modelo CMMI em seus processos internos, o que verificado por
meio da avaliao SCAMPI (Standard CMMI Appraisal Method for Process
Improvement). Nas avaliaes SCAMPI nveis A e B verifica-se como o processo est sendo endereado aos projetos, ou seja, verifica-se a aderncia dos
projetos ao modelo.
Este livro apresentar alguns dos processos que devem ser utilizados por
empresas que desejam seguir as prticas de maturidade propostas pelo CMMI.

1.13 Por que utilizar engenharia de software?


A partir das ltimas duas dcadas temos presenciado uma constante diminuio
nos custos de hardware. Por outro lado, devido ao aumento no tamanho e na
complexidade dos softwares, eles tem se tornado o principal item no oramento
da computao. Esse aumento da complexidade dos softwares ressaltou alguns
problemas relacionados ao desenvolvimento de software, a saber:
Impreciso na estimativa de prazos e custos.
Dificuldade de se atender s demandas.
Dificuldade de se obter profissionais qualificados para atender s demandas.

Captulo 1 Desenvolvimento de software para o valor de negcios

41

Qualidade dos softwares inferior necessria, causando insatisfao


dos usurios.
Abordar o desenvolvimento de software como engenharia e aliar o assunto com ferramentas e tcnicas voltadas ao aumento da produtividade e
qualidade dos artefatos gerados foi uma soluo encontrada. Devido ao alto
custo do desenvolvimento de software e sua importncia cada vez maior,
a engenharia de software passa a ter um valor muito grande na garantia de
sistemas eficientes e de menor custo.

Das könnte Ihnen auch gefallen