Beruflich Dokumente
Kultur Dokumente
ENGENHARIA DE SOFTWARE
Batatais
Claretiano
2013
005.1 F431e
Ferraz, Ana Paula do Carmo Marcheti
Engenharia de software / Ana Paula do Carmo Marcheti Ferraz, Jaciara Silva
Carosia Batatais, SP : Claretiano, 2013.
290 p.
ISBN: 978-85-8377-119-7
1. Engenharia de Software: conceitos e histrico. 2. Ciclo de vida de
Desenvolvimento de software. 3. Gerenciamento de projetos. I. Carosia,
Jaciara Silva. II. Engenharia de software.
CDD 005.1
Corpo Tcnico Editorial do Material Didtico Mediacional
Coordenador de Material Didtico Mediacional: J. Alves
Preparao
Aline de Ftima Guedes
Camila Maria Nardi Matos
Carolina de Andrade Baviera
Ctia Aparecida Ribeiro
Dandara Louise Vieira Matavelli
Elaine Aparecida de Lima Moraes
Josiane Marchiori Martins
Lidiane Maria Magalini
Luciana A. Mani Adami
Luciana dos Santos Sanana de Melo
Luis Henrique de Souza
Patrcia Alves Veronez Montera
Rosemeire Cristina Astolphi Buzzelli
Simone Rodrigues de Oliveira
Bibliotecria
Ana Carolina Guimares CRB7: 64/11
Reviso
Ceclia Beatriz Alves Teixeira
Felipe Aleixo
Filipi Andrade de Deus Silveira
Paulo Roberto F. M. Sposati Ortiz
Rodrigo Ferreira Daverni
Snia Galindo Melo
Talita Cristina Bartolomeu
Vanessa Vergani Machado
Projeto grfico, diagramao e capa
Eduardo de Oliveira Azevedo
Joice Cristina Micai
Lcia Maria de Sousa Ferro
Luis Antnio Guimares Toloi
Raphael Fantacini de Oliveira
Tamires Botta Murakami de Souza
Wagner Segato dos Santos
Todos os direitos reservados. proibida a reproduo, a transmisso total ou parcial por qualquer
forma e/ou qualquer meio (eletrnico ou mecnico, incluindo fotocpia, gravao e distribuio na
web), ou o arquivamento em qualquer sistema de banco de dados sem a permisso por escrito do
autor e da Ao Educacional Claretiana.
Claretiano - Centro Universitrio
Rua Dom Bosco, 466 - Bairro: Castelo Batatais SP CEP 14.300-000
cead@claretiano.edu.br
Fone: (16) 3660-1777 Fax: (16) 3660-1780 0800 941 0006
www.claretianobt.com.br
SUMRIO
CADERNO DE REFERNCIA DE CONTEDO
1 INTRODUO...................................................................................................... 9
2 ORIENTAES SOBRE ESTUDO............................................................................ 12
OBJETIVOS........................................................................................................... 23
CONTEDOS........................................................................................................ 23
ORIENTAES PARA O ESTUDO DA UNIDADE .................................................... 24
INTRODUO UNIDADE................................................................................... 25
CONCEITOS INICIAIS............................................................................................ 25
PRODUTO DE SOFTWARE .................................................................................. 28
HISTRICO DE DESENVOLVIMENTO DE SOFTWARE.............................................34
SOFTWARE: MITOS E REALIDADE....................................................................... 38
ENGENHARIA DE SOFTWARE...............................................................................42
REENGENHARIA E ENGENHARIA REVERSA......................................................... 46
QUESTO AUTOAVALIATIVA................................................................................ 49
CONSIDERAES................................................................................................ 50
REFERNCIAS BIBLIOGRFICAS........................................................................... 51
OBJETIVOS........................................................................................................... 53
CONTEDOS........................................................................................................ 53
ORIENTAES PARA O ESTUDO DA UNIDADE .................................................... 53
INTRODUO UNIDADE....................................................................................54
PROCESSO DE SOFTWARE....................................................................................54
PARADIGMAS DA ENGENHARIA DE SOFTWARE................................................57
EXTREME PROGRAMMING................................................................................. 70
QUESTES AUTOAVALIATIVAS............................................................................. 88
CONSIDERAES................................................................................................. 89
REFERNCIAS BIBLIOGRFICAS........................................................................... 90
OBJETIVOS........................................................................................................... 91
CONTEDOS........................................................................................................ 91
ORIENTAES PARA O ESTUDO DA UNIDADE .................................................... 92
INTRODUO UNIDADE .................................................................................. 93
ACOMPANHAMENTO DO PROCESSO.................................................................. 94
FERRAMENTA PARA ACOMPANHAR O PROCESSO.............................................. 100
MEDIES........................................................................................................... 102
8
9
10
11
12
13
14
ESTIMATIVAS....................................................................................................... 104
ANLISE DE RISCOS............................................................................................. 110
PLANO DE PROJETO DE SOFTWARE.....................................................................114
AQUISIO DE SOFTWARE..................................................................................117
QUESTES AUTOAVALIATIVAS............................................................................ 119
CONSIDERAES................................................................................................ 121
REFERNCIAS BIBLIOGRFICAS........................................................................... 121
OBJETIVOS........................................................................................................... 123
CONTEDOS........................................................................................................ 123
ORIENTAES PARA O ESTUDO DA UNIDADE .................................................... 124
INTRODUO UNIDADE................................................................................... 125
ANLISE DE REQUISITOS..................................................................................... 125
ATIVIDADES DA ANLISE DE REQUISITOS............................................................ 126
TIPOS DE DOCUMENTOS DE REQUISITOS........................................................... 129
REVISO DOS REQUISITOS.................................................................................. 134
DOCUMENTO DE DEFINIO DE REQUISITO....................................................... 135
PROCESSOS DE COMUNICAO......................................................................... 137
QUESTES AUTOAVALIATIVAS............................................................................ 140
CONSIDERAES ................................................................................................ 141
REFERNCIAS BIBLIOGRFICAS........................................................................... 141
OBJETIVO............................................................................................................ 143
CONTEDOS........................................................................................................ 143
ORIENTAES PARA O ESTUDO DA UNIDADE .................................................... 143
INTRODUO UNIDADE................................................................................... 144
GERENCIAMENTO DE CONFIGURAES DE SOFTWARE...................................145
BASELINE LINHAS BSICAS...............................................................................148
PROCESSO DE GERENCIAMENTO DE CONFIGURAO DE SOFTWARE (GCS)...151
QUALIDADE E GERENCIAMENTO DE CONFIGURAO........................................ 159
QUESTES AUTOAVALIATIVAS............................................................................. 160
CONSIDERAES................................................................................................ 162
4
5
6
7
8
9
10
11
12
13
OBJETIVOS........................................................................................................... 187
CONTEDOS........................................................................................................ 187
ORIENTAES PARA O ESTUDO DA UNIDADE .................................................... 187
INTRODUO UNIDADE................................................................................... 188
ESTRATGIAS DE TESTES...................................................................................... 189
TCNICAS OU MTODOS DE TESTES................................................................... 192
WORKBENCH DE TESTES......................................................................................201
QUESTES AUTOAVALIATIVAS............................................................................. 203
CONSIDERAES................................................................................................. 204
REFERNCIAS BIBLIOGRFICAS........................................................................... 205
OBJETIVOS........................................................................................................... 207
CONTEDOS........................................................................................................ 207
ORIENTAES PARA O ESTUDO DA UNIDADE .................................................... 208
INTRODUO UNIDADE................................................................................... 208
MUDANAS NO SOFTWARE.................................................................................209
MANUTENIBILIDADE........................................................................................... 212
CARACTERSTICAS DE MANUTENO................................................................. 214
MANUTENO ESTRUTURADA E NO ESTRUTURADA....................................... 217
CUSTOS E ESFORO DESPENDIDO NA MANUTENO........................................ 218
PROBLEMAS ASSOCIADOS MANUTENO...................................................... 220
DOCUMENTAO DO SOFTWARE........................................................................222
PROJETO DE SOFTWARE.......................................................................................224
QUESTO AUTOAVALIATIVA................................................................................ 228
CONSIDERAES................................................................................................ 229
REFERNCIAS BIBLIOGRFICAS........................................................................... 229
OBJETIVOS........................................................................................................... 231
CONTEDOS........................................................................................................ 231
ORIENTAES PARA O ESTUDO DA UNIDADE .................................................... 232
INTRODUO UNIDADE................................................................................... 232
CONCEITOS E OBJETIVOS DAS CASES.................................................................. 233
CONTEXTO HISTRICO........................................................................................ 235
PRODUTIVIDADE EM SOFTWARE........................................................................237
CLASSIFICAO DAS CASE................................................................................... 238
MODELO SEI DE ADOO DE CASE..................................................................... 241
IMPACTO DAS CASE............................................................................................ 244
QUESTES AUTOAVALIATIVAS............................................................................ 248
CONSIDERAES................................................................................................ 248
E-REFERNCIA..................................................................................................... 249
REFERNCIAS BIBLIOGRFICAS........................................................................... 249
OBJETIVOS........................................................................................................... 251
CONTEDOS........................................................................................................ 251
ORIENTAES PARA O ESTUDO DA UNIDADE .................................................... 252
INTRODUO UNIDADE................................................................................... 253
DEFINIO DE SOFTWARE DE QUALIDADE....................................................... 253
QUALIDADE DE PROCESSO E QUALIDADE DE PRODUTO..................................... 258
FATORES DE QUALIDADE DE SOFTWARE..............................................................258
GARANTIA DE QUALIDADE DE SOFTWARE.........................................................261
MTRICA DE QUALIDADE DE SOFTWARE...........................................................262
ESTIMATIVA DE SOFTWARE.................................................................................265
QUALIDADE DE PROCESSO DE SOFTWARE........................................................269
MODELO CMMI.................................................................................................. 272
QUESTES AUTOAVALIATIVAS............................................................................ 286
CONSIDERAES................................................................................................ 287
REFERNCIAS BIBLIOGRFICAS........................................................................... 288
CONSIDERAES FINAIS..................................................................................... 288
Caderno de
Referncia de
Contedo
CRC
Contedo
Introduo Engenharia de Software. Caractersticas do software. Crise do Software. Ciclo de vida de desenvolvimento de software. Gerenciamento de projetos: mtricas, estimativas, anlise de riscos, planejamento e acompanhamento
do projeto. Anlise e projeto de software. Teste de software. Manuteno de
software. Ferramentas CASE. Qualidade de software.
1. INTRODUO
Nos primrdios da evoluo da informtica, o hardware era
o elemento mais caro e, portanto, considerado o mais importante
componente do sistema computacional. Naquela poca, o software era visto como um coadjuvante, enquanto ao hardware era atribudo o mrito de ator principal.
No entanto, com o passar dos anos, motivado pelos avanos
da eletrnica e consequentemente com o barateamento do
hardware, o software foi ganhando lugar de destaque, tornandose o elemento foco do sistema computacional. Com a expanso do
10
Engenharia de Software
11
Ao longo dos anos, para minimizar os problemas da indstria de software, a Engenharia de Software tem proposto vrios
mtodos para aumentar a produtividade, atravs da diminuio
do custo de produo, do prazo de entrega e do aumento da qualidade do produto.
No entanto, apesar do esforo da Engenharia de Software
em sugerir mtodos para produo de software com qualidade,
ainda hoje, muita coisa precisa ser colocada em prtica. Os clientes da indstria de software ainda tm tido problemas na hora de
contratar uma empresa de desenvolvimento de software que realmente lhe fornea um melhor servio, a um custo no muito alto
e, o mais importante, com qualidade e agilidade na entrega. O que
ainda tem ocorrido que muitas pessoas adquirem um determinado sistema, iniciando assim um difcil e exaustivo processo de
implantao e correo de erros.
Para mudar este quadro, importante o compromisso do
desenvolvedor de software com o uso de mtodos que melhorem
seu processo produtivo e minimizem a insatisfao do cliente no
que diz respeito qualidade, prazo e custo do software. Parte destes transtornos poderia ser evitada se a empresa desenvolvedora
de software se preocupasse com a insero de caractersticas de
qualidade no produto durante o seu desenvolvimento. Com este
intuito, surgiram vrios modelos e normas que auxiliam a melhoria
do processo de desenvolvimento de software.
No decorrer do estudo deste Caderno de Referncia de Contedo voc conhecer os principais modelos e tcnicas da Engenharia de Software. Os conceitos apresentados neste material
sero de grande valia para a difuso dos fundamentos da Engenharia de Software e para melhorar a qualidade do seu trabalho
enquanto parte integrante da comunidade de desenvolvedores de
software. Os conceitos aqui apresentados lhe daro a base necessria para que voc possa executar seu trabalho de desenvolvedor
de software de forma clara e rpida.
Claretiano - Centro Universitrio
12
Engenharia de Software
13
Na Unidade 1, so mostradas as dificuldades e caractersticas envolvidas no desenvolvimento de software. Voc compreender os reais objetivos da Engenharia de Software e os fatores que
contriburam para o seu surgimento. Saber quais os principais
problemas enfrentados pela indstria do software no passado e
tambm nos dias atuais.
Na Unidade 2 voc compreender o que um processo de
software e qual a sua relao com a qualidade do produto. So
apresentados os principais paradigmas de desenvolvimento de
software, mostrando a evoluo destes modelos com o passar do
tempo.
Na Unidade 3, voc aprender a importncia do planejamento e do gerenciamento para que um projeto de software seja
bem-sucedido. Conhecer tarefas e o esforo necessrio para a
criao de um plano realstico e administrvel.
A Unidade 4, mostra a importncia das atividades de levantamento e gerenciamento de requisitos. Voc compreender quais
atividades devem ser executadas para a melhor anlise das necessidades do cliente. Alm disso, conhecer a problemtica da comunicao entre as pessoas envolvidas nestas atividades.
Na Unidade 5, ver que a mudana de requisitos uma realidade no desenvolvimento de software. Para conviver com tamanha instabilidade, voc compreender a importncia do Gerenciamento de Configuraes para administrar a incorporao das
mudanas no projeto de software.
Na Unidade 6, ir compreender a importncia de focar na
qualidade do software durante todo o seu processo de desenvolvimento. Entender, tambm, como a Garantia de Qualidade atua
para que o software desenvolvido atenda s especificaes definidas para ele.
14
Engenharia de Software
15
16
Engenharia de Software
17
17) Software: "o software a parte lgica que dota o equipamento fsico de capacidade para realizar todo tipo de trabalho" (ALCADE, 2001, p. 5); conforme Pressman (1996,
p. 179) so "programas de computador, estruturas de dados e documentao correlata que servem para efetivar o
mtodo, processo ou controle lgico necessrio".
18) Usurio: " a pessoa, ou pessoas, que realmente utilizaro o sistema; aqueles que se sentaro em frente ao terminal para inserir dados ou ler resultados" (PFLEEGER,
2004, p.11).
Esquema dos Conceitos-chave
Para que voc tenha uma viso geral dos conceitos mais
importantes deste estudo, apresentamos, a seguir (Figura 1), um
Esquema dos Conceitos-chave. O mais aconselhvel que voc
mesmo faa o seu esquema de conceitos-chave ou at mesmo o
seu mapa mental. Esse exerccio uma forma de voc construir o
seu conhecimento, ressignificando as informaes a partir de suas
prprias percepes.
importante ressaltar que o propsito desse Esquema dos
Conceitos-chave representar, de maneira grfica, as relaes entre
os conceitos por meio de palavras-chave, partindo dos mais complexos para os mais simples. Esse recurso pode auxiliar voc na ordenao e na sequenciao hierarquizada dos contedos de ensino.
Com base na teoria de aprendizagem significativa, entende-se
que, por meio da organizao das ideias e dos princpios em esquemas e mapas mentais, o indivduo pode construir o seu conhecimento de maneira mais produtiva e obter, assim, ganhos pedaggicos
significativos no seu processo de ensino e aprendizagem.
Aplicado a diversas reas do ensino e da aprendizagem escolar (tais como planejamentos de currculo, sistemas e pesquisas
em Educao), o Esquema dos Conceitos-chave baseia-se, ainda,
na ideia fundamental da Psicologia Cognitiva de Ausubel, que estabelece que a aprendizagem ocorre pela assimilao de novos
conceitos e de proposies na estrutura cognitiva do aluno. Assim,
Claretiano - Centro Universitrio
18
Engenharia de Software
Engenharia
Reversa
19
Reengenharia
de
Engenharia
de
Engenharia de
Sistemas
Ferramentas
CASE
Produto de
Gerenciamento
de Projetos
Processo de
Anlise de
Requisitos
Paradigmas
Teste
Manuteno
Medies
Anlise de
Riscos
Plano
Gerenciamento
Qualidade de
Controle do
Projeto
Qualidade
Qualidade de
Processo
Qualidade de
Produto
CMMI
20
Engenharia de Software
Bibliografia Bsica
fundamental que voc use a Bibliografia Bsica em seus
estudos, mas no se prenda s a ela. Consulte, tambm, as bibliografias complementares.
21
22
Engenharia de Software
EAD
Introduo
Engenharia
de Software
1. OBJETIVOS
C
ompreender os elementos que compem um sistema
computacional.
Entender os fatores que influenciam e dificultam a construo do software.
Compreender o contexto histrico da indstria do software.
Conhecer e entender os mitos envolvidos no desenvolvimento de software.
Conhecer os reais objetivos da Engenharia de Software.
2. CONTEDOS
C
omponentes do sistema computacional.
Produtos de software.
Contexto histrico da indstria do software.
24
Engenharia de Software
M
itos do software.
E ngenharia de Software.
Reengenharia e engenharia reversa.
25
4. INTRODUO UNIDADE
Nesta primeira unidade, voc estudar os conceitos bsicos
de Engenharia de Software, tais como sistema computacional e
produto de software.
Voc vai conhecer as caractersticas dos softwares atuais e
o seu contexto histrico. Alm disso, ter a oportunidade de compreender as dificuldades envolvidas na construo dos sistemas
computacionais e, com base em todos esses conceitos, compreender os reais objetivos, desafios e limitaes da Engenharia de
Software.
Bons estudos!
5. CONCEITOS INICIAIS
Elaborar um sistema tanto arte quanto cincia
Quando o assunto desenvolvimento de software, essa
uma frase comum de se ouvir, mas gostaria que voc parasse um
instante para analis-la.
Para voc, essa afirmao verdadeira? Por qu?
Voc acredita que se tivssemos como nica competncia
conhecer (tecnicamente) uma linguagem (sintaxe, semntica, estrutura etc.) desenvolveramos bons sistemas, ou que se tivssemos outras competncias complementares desenvolveramos melhores sistemas?
Apenas ter o "dom" para desenvolver sistemas de forma rpida no lhes garante a eficincia, a eficcia e a otimizao.
Foi nesse contexto que a Engenharia de Software comeou
a "tomar forma", com o propsito de colocar ordem na atividade
de desenvolvimento de softwares e sistemas, que, at h pouco
tempo, era considerada catica.
Claretiano - Centro Universitrio
26
Engenharia de Software
27
28
Engenharia de Software
6. PRODUTO DE SOFTWARE
Um produto de software sistematicamente destinado a
pessoas com formaes e experincias diferentes, isso significa
que necessrio ter uma preocupao no apenas com as caractersticas de desenvolvimento, mas tambm com a interface e a
documentao (seja ela de sistemas ou de usurio). Sem contar
que, nesse caso, necessrio testar o software exaustivamente
antes de entreg-lo ao cliente para detectar e corrigir as eventuais
deficincias.
Resumindo, um programa desenvolvido para resolver um
29
dado problema (usurio restrito e nico) e um produto de software destinado resoluo do mesmo problema (para vrios clientes
e com a meta de comercializao) so duas coisas diferentes.
bvio que o esforo e o consequente custo associado ao desenvolvimento de um produto sero superiores aos de acesso restrito,
at mesmo devido sua concepo de comercializao futura.
Para melhor caracterizar o significado de software, importante levantar algumas caractersticas a partir da comparao com outros "produtos", uma vez que ele um elemento lgico, e no fsico.
Pressman (1996) afirma que:
a) O software concebido e desenvolvido como resultado
de um trabalho de engenharia e no manufaturado no
sentido clssico.
Neste sentido, interessante que voc reflita novamente sobre o conceito de engenharia. Pense em uma atividade de engenharia que lhe seja familiar (engenharia civil, mecnica, produo
etc.). Imagine-a como cincia de construo, na qual, por meio de
tcnicas, ela pode desenvolver partes que pertencero a um produto especfico e chegue s suas prprias concluses, fundamentado no fato de que o software no um produto manufaturado,
embora possua algumas caractersticas "conceituais" relacionadas
manufatura.
b) O software no se desgasta, ou seja, ao contrrio da
maioria dos produtos, o software no se caracteriza por
um aumento na possibilidade de falhas, medida que
o tempo passa, devido ao desgaste fsico e ao ambiental (como, por exemplo, a poeira e o calor). O que
pode acontecer ele se tornar obsoleto e suas funcionalidades no mais satisfazerem necessidade do usurio.
Portanto, pode-se dizer que o software no se desgasta,
mas, sim, deteriora-se.
Voc poder compreender melhor as diferenas entre o desgaste do hardware e a deteriorao do software observando os grficos das curvas de falhas propostos por Pressman (2006) a seguir:
Claretiano - Centro Universitrio
30
Engenharia de Software
ndice
de
falhas
Mortalidade
infantil
Desgaste
Tempo
Como voc pode observar, no Grfico 1, inicialmente, o hardware apresenta um elevado ndice de falhas, as quais, normalmente, so atribudas a problemas de projeto ou de fabricao.
Com o passar do tempo, aferies so realizadas no hardware e
essas falhas vo sendo corrigidas. Em seguida, so realizados ajustes e a curva se estabiliza, indicando que todos os defeitos foram
eliminados ou que o nvel falhas se encontra em um limite aceitvel para o produto. No entanto, com o passar do tempo, o ndice
de falhas aumenta devido ao desgaste do produto, levando sua
substituio.
Observe, agora, o Grfico 2, em que so apresentadas as
duas curvas de falhas de software: a curva real e a curva ideal.
Na curva idealizada, representada pela linha tracejada no
Grfico 2, o software, sendo um elemento lgico, no sofre os desgastes fsicos e ambientais comuns ao hardware. Assim, teoricamente, uma vez eliminadas as falhas iniciais inseridas durante o
projeto e a construo do software (semelhante construo do
hardware), a curva se manter estabilizada sem falhas ou com o
menor ndice possvel de falhas. Portanto, o software no se deterioraria.
31
Curva real
ndice
de
falhas
Mudanas
Curva Idealizada
Tempo
No entanto, a curva ideal apresenta uma utopia do desenvolvimento de software: uma vez construdo o software, todos os
problemas acabaram. A realidade, porm, bem diferente, e
mostrada na curva real de falhas do software, tambm no Grfico
2. Durante a vida do software, este passar por vrias e inevitveis mudanas. medida que as mudanas so realizadas, novas
falhas podem ser inseridas, representando na curva real os picos
de aumento de ndice de falhas. Antes mesmo de se eliminarem
as falhas inseridas na ltima modificao, nova necessidade de
mudana pode ocorrer. Com o passar do tempo e as frequentes
modificaes, o ndice mnimo de falhas vai aumentando, isto , o
software deixa de atender aos requisitos para os quais foi construdo. Portanto, o software no se desgasta, mas, sim, deteriora-se.
c) A maioria dos produtos de software concebida inteiramente sob medida, sem a utilizao de componentes preexistentes. Atualmente, os conceitos de componentes e reuso so bastante utilizados no desenvolvimento de software,
eles fazem parte de um conceito mais amplo, que o de
melhorar as tcnicas de desenvolvimento de software.
Em razo de possuir caractersticas diferenciadas, o processo de
Claretiano - Centro Universitrio
32
Engenharia de Software
desenvolvimento de software provoca vrias dificuldades, as quais influenciam diretamente na qualidade final do produto construdo.
Dentre os fatores que dificultam a construo do software,
podemos citar o contexto histrico do desenvolvimento de software e os mitos envolvidos em sua construo. Alm da prpria
caracterstica "soft" flexvel do software, que dificulta a proposta de uma metodologia de desenvolvimento padronizada, como
ocorre em linhas de montagens de produtos fsicos (manufatura).
Essa flexibilidade do software refere-se s mais diversas aplicaes para as quais so feitos (desde o controle de mquinas de
lavar roupas at sistemas de informaes que auxiliam na gesto
de empresas inteiras), s caractersticas distintas de seus usurios,
s diversas necessidades dos clientes da indstria do software e
s diferentes realidades das prprias empresas que desenvolvem
software. Todos estes fatores dificultam a construo do produto
de software, podendo comprometer sua qualidade.
Considerando o desenvolvimento de softwares a nvel industrial, j que estamos nos referindo a sistemas desenvolvidos por
meio de tcnicas de manufatura, e para atender diversos clientes
com caractersticas diferenciadas, a Engenharia de Software procura
responder a algumas questes que caracterizaram as preocupaes
com o processo de desenvolvimento de software, tais como:
Por que o software demora tanto para ser concludo?
Por que os custos de produo so to elevados?
Por que no possvel detectar todos os erros antes que
o software seja entregue ao cliente?
Por que to difcil medir o progresso durante o processo
de desenvolvimento de software?
Essas so algumas das questes que a Engenharia de
Software ajuda a resolver.
Com relao ao termo manufatura, este se trata de um processo de produo de bens em srie, padronizada, ou seja, so
33
produzidos muitos produtos iguais e em grande volume. As manufaturas surgiram durante a Revoluo Industrial. Eram pequenas
oficinas j com produo em srie, porm com trabalho praticamente manual. As fbricas ou indstrias tinham porte e mecanizao muito maior. Atualmente, no existe mais essa distino, e o
termo manufaturado sinnimo de industrializado.
Segundo Pressman (1996), embora seja difcil responder definitivamente s questes anteriores, possvel enumerar alguns
problemas que originam tais questionamentos:
a) Durante o desenvolvimento de um software, raramente
dedicado um tempo para coletar os dados sobre o processo de desenvolvimento propriamente dito e, por no
ter a quantidade de informaes suficientes, as tentativas em estimar a durao/custo de produo de um software tm conduzido a resultados insatisfatrios; alm
disso, a falta dessas informaes impede uma avaliao
eficiente das tcnicas e metodologias empregadas em
seu desenvolvimento.
b) A insatisfao do cliente com o sistema "concludo"
ocorre frequentemente, em decorrncia, especialmente, do fato de que os projetos de desenvolvimento so
baseados em informaes vagas sobre as necessidades
e os desejos do cliente (problema de comunicao entre
cliente e fornecedor).
c) A qualidade do software quase sempre suspeita. Esse
problema resultante da pouca ateno durante seu desenvolvimento (at porque o conceito de qualidade de
software algo relativamente recente).
d) Um software tem um perodo de vida sem atualizao
e, normalmente, muito difcil de manter em operao,
o que significa que o custo do software acaba sendo
incrementado significativamente devido s atividades
relacionadas manuteno; isso um reflexo da pouca
importncia dada manutenibilidade no momento da
concepo dos sistemas.
34
Engenharia de Software
35
36
Engenharia de Software
Em decorrncia da necessidade do mercado, surgiu um problema relacionado falta de experincia e a no adequao dos
mtodos de desenvolvimento existentes para pequenos programas. A falta de condies dos desenvolvedores em suprir a necessidade do mercado, ainda na dcada de 1960, caracterizou a "crise
do software".
As equipes de desenvolvimento tinham dificuldade em atender demanda, pois era gasto mais tempo corrigindo erros e modificando softwares que j existiam no mercado do que desenvolvendo novos softwares.
At ento, os sistemas computacionais eram simples e desenvolvidos sem qualquer metodologia. Como dizem alguns autores, desenvolver software era "uma forma de arte", cada um o
fazia da forma que considerava melhor. De repente, o mercado de
sistemas expandiu-se e esses desenvolvedores viram-se obrigados
a modificar os softwares para adequ-los s necessidades dos diversos usurios. Contudo, como estes softwares tinham sido feitos
sem qualquer padronizao ou documentao, o trabalho de modific-los era bem difcil, especialmente se quem desenvolveu no
era a mesma pessoa que iria modificar. Voc consegue perceber a
importncia de se disciplinar o desenvolvimento do software? Pois
este o objetivo da Engenharia de Software.
A dificuldade de manuteno, a falta de documentao adequada, a rpida velocidade de mudanas no ambiente dos sistemas
computacionais, a alta demanda por software e vrios outros fatores ainda esto trazendo complicaes para a indstria de software,
dando continuidade a tal crise. A busca pela produtividade, to inerente s outras indstrias, tambm um grande desafio para indstria do software.
A crise do software foi considerada um marco importante,
pois possibilitou o nascimento do termo "Engenharia de Software".
Com o passar do tempo, o preo de hardware foi diminuindo
enquanto o de software no obedeceu mesma tendncia.
37
38
Engenharia de Software
que surgiram ao longo do tempo e esto relacionados aos principais aspectos do software. A crena em falsos mitos, por parte
de desenvolvedores, clientes e gerentes de projetos de software,
tambm contribuem para dificultar a construo do produto de
software e comprometer a sua qualidade.
39
40
Engenharia de Software
Mitos do cliente
Mito 4 Uma descrio breve e geral dos requisitos do software o suficiente para iniciar seu projeto e maiores detalhes
podem ser definidos posteriormente.
Realidade 4 Esse um dos problemas que podem conduzir um projeto ao fracasso. Portanto, fundamental que o cliente
procure definir o mais precisamente possvel todos os requisitos
importantes para o software: funes, desempenho, interfaces,
restries de projeto e critrios de validao so alguns dos pontos
determinantes do sucesso de um projeto.
Mito 5 Os requisitos de projeto mudam continuamente
durante o seu desenvolvimento, mas isso no representa um problema, uma vez que o software flexvel e poder suportar facilmente as alteraes.
Realidade 5 verdade que o software flexvel (pelo menos mais flexvel do que a maioria dos produtos manufaturados).
Entretanto, no existe software, por mais flexvel que seja que suporte alteraes de requisitos significativas com adicional zero em
relao ao custo de desenvolvimento. O aumento nos custos de
desenvolvimento do software cresce medida que as alteraes
de requisitos acontecem em estgios avanados do desenvolvimento do projeto, como demonstra a Figura 1.
41
CUSTO
60 ~ 100 x
1.5 ~ 6 x
1x
DEFINIO
DESENVOLVIMENTO
MANUTENO
42
Engenharia de Software
Estruturas
de Dados
Plano
Especificao
de Requisitos
Projeto
Listagem
Programa
Funcionando
Plano de
Testes
9. ENGENHARIA DE SOFTWARE
Vamos, agora, pensar em um sentido mais amplo: engenhar
algo seria o mesmo que construir algo?
Voc j pensou no significado da palavra engenharia? A palavra engenharia pode estar relacionada a clculos e equaes
matemtica, no ? exatamente por esse motivo que se torna
necessrio compreender melhor o termo engenharia e como ela
se aplica construo de software.
No dicionrio Michaelis, dentre as inmeras definies para
"engenharia", encontramos: arte de aplicar os conhecimentos
cientficos inveno, aperfeioamento ou utilizao da tcnica
industrial em todas as suas determinaes.
Sem querer ser exaustivo, vamos procurar a definio de engenharia em outro dicionrio. No dicionrio Aurlio, engenharia
a cincia, tcnica e arte da construo de obras de grande porte,
mediante a aplicao de princpios matemticos e das cincias fsicas.
43
44
Engenharia de Software
Ao pensarmos sobre a questo: "o que Engenharia de Software?", podemos dizer que ela rene metodologias, mtodos e
ferramentas a serem utilizados, desde a percepo do problema
at o momento em que o sistema desenvolvido deixa de existir,
visando resolver problemas inerentes ao processo de desenvolvimento e ao produto de software (PFLEEGER, 2004).
importante ressaltar que a Engenharia de Software foi
criada, originalmente, para ser aplicada em grandes projetos de
software desenvolvidos por grandes empresas.
Analisando o contexto brasileiro, em que predominam micro
e pequenas empresas, ser que os conceitos estudados no so
vlidos? Claro que so vlidos, porm h a necessidade de adaptao dos conceitos a cada realidade das empresas e dos projetos.
Alm disso, j h na literatura mtodos e tcnicas de Engenharia
de Software direcionadas a contextos e ambientes menores.
Bastante relacionado ao conceito de Engenharia de Software
h, tambm, a Engenharia de Sistemas. A seguir, voc conhecer
do que trata essa outra engenharia.
A engenharia de sistemas baseada em computadores preocupa-se com todos os aspectos de desenvolvimento e evoluo de
sistemas complexos em que o software desempenha papel principal atualmente. A engenharia de sistemas , portanto, uma atividade interdisciplinar destinada a solucionar problemas do sistema
como um todo. A engenharia de sistemas:
delimita a funo, o desempenho, as restries e as interfaces entre dos elementos do sistema;
aloca cada funo a um ou mais elementos de sistema
(software, hardware, pessoas etc.);
Prope e analisa alocaes alternativas.
Para Sommervile (2006), os engenheiros de sistema esto
envolvidos com a especificao do sistema computacional, na definio de sua arquitetura geral e na integrao das diferentes par-
45
46
Engenharia de Software
Um chefe de cozinha pode preparar um molho empregando ingredientes sequencialmente combinados em uma ordem e
momentos especficos, de tal maneira que o molho engrosse, mas
no coagule ou desande, esse o mtodo. As ferramentas so os
utenslios de cozinha que podem ser empregados no preparo do
molho. Um procedimento como uma receita, combinando ferramentas e mtodos que em harmonia produzem o resultado especfico.
Alm disso, h diferentes filosofias ou abordagens para cozinhar (cozinha francesa, japonesa, italiana etc.), que so chamadas
de paradigmas.
Na nossa analogia, podemos dizer que os paradigmas da Engenharia de Software so conjuntos de mtodos, ferramentas e
procedimentos propostos pela Engenharia de Software. Esses paradigmas sero apresentados na prxima unidade.
47
48
Engenharia de Software
Agora que voc j compreendeu o significado do termo reengenharia, vamos apresentar a engenharia reversa.
Engenharia reversa
A engenharia reversa tem sua origem no mundo do hardware. Uma empresa desmonta o produto de um concorrente para
entender os segredos do projeto e da fabricao do mesmo. Estes segredos poderiam ser obtidos atravs das especificaes do
projeto e fabricao do produto, mas estes documentos no so
disponveis empresa que est fazendo a engenharia reversa. A
engenharia reversa de software bastante semelhante. No entanto, na maioria das vezes, o software que passa pela engenharia
reversa no o de um concorrente, mas trabalho desenvolvido
pela prpria empresa h muitos anos. Os segredos a serem descobertos so obscuros porque nenhuma documentao foi desenvolvida (PRESSMAN, 2006).
Logo,
[...] a engenharia reversa o processo de anlise de um programa,
em um esforo para represent-lo em uma abstrao mais alta do
que o cdigo-fonte. A engenharia reversa um processo de recuperao de projeto (PRESSMAN, 2006, p. 687).
49
50
Engenharia de Software
Fonte: Prova aplicada em 01/2010 para o concurso do(a) DPE - SP - 2010 - Agente, realizado pelo
rgo/instituio Defensoria pblica de So Paulo, rea de atuao Jurdica, organizada pela
banca FCC, para o cargo de Agente de Defensoria - Programador, nvel superior , rea de formao
Tecnologia da Informao .
Gabarito
Depois de responder s questes autoavaliativas, importante que voc confira o seu desempenho, a fim de que possa saber se preciso retomar o estudo desta unidade. Assim, confira, a
seguir, as respostas corretas para as questes autoavaliativas propostas anteriormente:
1. (d)
12. CONSIDERAES
Chegamos ao final do estudo da nossa primeira unidade. Espero que tenha sido proveitoso para voc!
Nesta unidade, voc teve a oportunidade de discutir o quanto o desenvolvimento de um software est relacionado aos conceitos tcnicos e s habilidades de programar.
Relembre os conceitos de mtodos, ferramentas e procedimentos de Engenharia de Software, estes conceitos sero uteis
para a continuidade dos estudos.
Voc compreendeu as dificuldades envolvidas na construo
de um software, que iniciaram nos primrdios da indstria do
software e que muitos dos problemas ainda existem. H mitos que
ainda distorcem as reais caractersticas da construo do software.
51