Você está na página 1de 52

ENGENHARIA DE SOFTWARE

CURSOS DE GRADUAO EAD


Engenharia de Software Prof. Dra. Ana Paula do Carmo Marcheti Ferraz e Prof. Ms.
Jaciara Silva Carosia

Meu nome Ana Paula do Carmo Marcheti Ferraz. Sou doutora


em Engenharia de Produo pela Escola de Engenharia de So
Carlos (USP) e mestre pelo mesmo programa. Fiz especializao
em Administrao de Empresas no Centro Universitrio Moura
Lacerda (Ribeiro Preto SP), em Psicoeducao na Faculdade
de Filosofia, Cincias e Letras FFCL-USP (Ribeiro Preto SP) e
em Anlise de Sistemas na Unaerp (Ribeiro Preto SP). Minha
formao inicial foi em Cincias da Computao pela Unesp
(Bauru SP). Atualmente, atuo como avaliadora associada ao
Ministrio da Educao para cursos de Graduao e Psgraduao das modalidades a distncia e presencial. Sou
professora de Informtica Aplicada, Linguagem de Programao e Projeto de Concluso
de Curso nos cursos presenciais, e tutora na modalidade de EaD das disciplinas Linguagem
de Programao Estruturada I e II.

Meu nome Jaciara Silva Carosia. Sou mestre em Computao


Aplicada pelo Instituto Nacional de Pesquisas Espaciais (INPE),
com pesquisa na rea de Engenharia de Software. Atualmente,
atuo como professora na FATEC Mococa nos cursos de:
Tecnologia em Informtica para Banco de Dados e Redes de
Computadores e Tecnologia em Informtica para Gesto de
Negcios. Alm disso, sou professora e coordenadora do curso
de Cincia da Computao na Unip, campus de So Jos do Rio
Pardo.

Fazemos parte do Claretiano - Rede de Educao

Ana Paula do Carmo Marcheti Ferraz


Jaciara Silva Carosia

ENGENHARIA DE SOFTWARE

Batatais
Claretiano
2013

Ao Educacional Claretiana, 2010 Batatais (SP)


Verso: dez./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

Fazemos parte do Claretiano - Rede de Educao

SUMRIO
CADERNO DE REFERNCIA DE CONTEDO
1 INTRODUO...................................................................................................... 9
2 ORIENTAES SOBRE ESTUDO............................................................................ 12

Unidade 1 INTRODUO ENGENHARIA DE SOFTWARE


1
2
3
4
5
6
7
8
9
10
11
12
13

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

Unidade 2 PARADIGMAS DE DESENVOLVIMENTO DE SOFTWARE


1
2
3
4
5
6
7
8
9
10

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

Unidade 3 PLANEJAMENTO E GERENCIAMENTO DE PROJETOS


1
2
3
4
5
6
7

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

Unidade 4 ANLISE DE REQUISITOS DE SOFTWARE


1
2
3
4
5
6
7
8
9
10
11
12
13

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

Unidade 5 GERENCIAMENTO DE CONFIGURAES


1
2
3
4
5
6
7
8
9
10

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

Unidade 6 GARANTIA DE QUALIDADE DE SOFTWARE


1 OBJETIVOS........................................................................................................... 165
2 CONTEDOS........................................................................................................ 165
3 ORIENTAES PARA O ESTUDO DA UNIDADE .................................................... 166

4
5
6
7
8
9
10
11
12
13

INTRODUO UNIDADE................................................................................... 167


CONCEITOS E OBJETIVOS ................................................................................... 167
GRUPO DE GARANTIA DE QUALIDADE DE SOFTWARES (GQS) ........................... 173
PADRES DE SOFTWARE.......................................................................................174
REVISES TCNICAS FORMAIS............................................................................176
CONFIABILIDADE DE SOFTWARE.........................................................................179
OUTROS FATORES DE QUALIDADE...................................................................... 182
QUESTES AUTOAVALIATIVAS............................................................................ 183
CONSIDERAES................................................................................................ 185
REFERNCIAS BIBLIOGRFICAS........................................................................... 185

Unidade 7 TESTE DE SOFTWARE


1
2
3
4
5
6
7
8
9
10

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

Unidade 8 MANUTENO DE SOFTWARE


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

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

Unidade 9 FERRAMENTAS CASE


1
2
3
4
5
6
7
8
9
10
11
12
13
14

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

Unidade 10 QUALIDADE DE SOFTWARE


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

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

uso dos sistemas computacionais ficou evidente que o software


quem capacita o hardware s mais diversas aplicaes, isto ,
o software o responsvel pela versatilidade e flexibilidade do
sistema baseado em computador.
Os sistemas computacionais tornaram-se fundamentais para
a execuo de muitas tarefas, sendo praticamente impensvel a
execuo de muitas atividades sem o apoio destes sistemas. O surgimento e crescente utilizao do computador e, mais tarde, da
internet, gerou grandes mudanas no panorama econmico, poltico, social e cultural. Com o aumento extraordinrio dos produtos e servios oferecidos por sistemas baseados em computador,
estes passaram a desempenhar um papel essencial e crtico na
sociedade, aumentando a preocupao dos desenvolvedores em
entender e melhorar a qualidade dos sistemas produzidos.
Assim, considerando o destaque que o software alcanou no
contexto dos sistemas computacionais e a crescente demanda por
novos e complexos sistemas, o processo de desenvolvimento de
software tornou-se uma preocupao.
Quando o software passou a ser produzido em larga escala, comearam a surgir problemas envolvidos ao desenvolvimento desses softwares, tais como: dificuldade em cumprir prazos e
custos, entrega de produtos com a qualidade abaixo da desejada
pelo cliente, dificuldade de manuteno nos softwares existentes,
entre outros.
Tendo em vista a importncia do software na vida humana
nos mais diversos aspectos, surgiu a Engenharia de Software para
apoiar sistemtica, racional e economicamente a construo do
software. A Engenharia de Software uma rea que enfoca todos
os aspectos da produo de software, isto , desde as fases iniciais
de levantamento dos requisitos do sistema at a sua implantao e
manuteno. A Engenharia de Software visa organizar o processo
de desenvolvimento de software.

Caderno de Referncia de Contedo

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

O ambiente que envolve o desenvolvimento de software


composto de inmeras variveis, tais como: diversidade de aplicaes de software, diferenas nas necessidades dos clientes, caractersticas da equipe de desenvolvedores, enfim, so muitos e
diversos os componentes envolvidos neste contexto. Assim, voc
conhecer os principais conceitos da Engenharia de Software. Porm, por no ser uma cincia to exata quanto as outras engenharias, voc dever analisar as suas reais necessidades para escolher
e adaptar as tcnicas aqui apresentadas.
Por ser uma rea nova, voc perceber que ainda existem
algumas controvrsias sobre algumas tcnicas e mtodos. No entanto, voc, enquanto profissional de software, poder contribuir
com a divulgao e com o aperfeioamento dos fundamentos aqui
propostos.
A Engenharia de Software aponta o caminho e as ferramentas que podero facilitar sua caminhada, mas o esforo da caminhada e o sucesso na chegada dependero de voc.
Bons estudos!

2. ORIENTAES PARA ESTUDO


Abordagem geral
Neste tpico, apresenta-se uma viso geral do que ser estudado neste Caderno de Referncia de Contedo. Aqui, voc entrar
em contato com os assuntos principais deste contedo de forma
breve e geral e ter a oportunidade de aprofundar essas questes
no estudo de cada unidade. No entanto, essa Abordagem Geral
visa fornecer-lhe o conhecimento bsico necessrio a partir do
qual voc possa construir um referencial terico com base slida
cientfica e cultural para que, no futuro exerccio de sua profisso, voc a exera com competncia cognitiva, tica e responsabilidade social.

Caderno de Referncia de Contedo

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.

Claretiano - Centro Universitrio

14

Engenharia de Software

Na Unidade 7, apresentada a importncia dos testes de


software, tarefa esta muitas vezes ignorada pelos desenvolvedores, e as principais tcnicas e estratgias de teste.
A Unidade 8 descreve sobre a atividade de manuteno.
Voc compreender a importncia de se produzir um software
que seja fcil de ser alterado depois de entregue ao cliente. Alm
disso, ver que o trabalho do desenvolvedor no termina aps a
implantao do sistema.
A Unidade 9 aborda as ferramentas que automatizam o trabalho do desenvolvedor de software durante as diversas fases do
processo produtivo e at que ponto estas ferramentas interferem
na produtividade da indstria do software.
Finalmente, a Unidade 10 tem como foco as caractersticas
de qualidade do produto e do processo de software, mostrando
caractersticas e fatores que afetam a qualidade do software. Alm
disso, voc conhecer as principais normas que visam melhoria
da qualidade de software.
Glossrio de Conceitos
O Glossrio de Conceitos permite a voc uma consulta rpida e precisa das definies conceituais, possibilitando-lhe um bom
domnio dos termos tcnico-cientficos utilizados na rea de conhecimento dos temas tratados em Engenharia de Software. Veja, a seguir, a definio dos principais conceitos:
1) Cliente: " a empresa, organizao ou pessoa que est
pagando para o sistema de software ser desenvolvido"
(PFLEEGER, 2004, p. 11).
2) Configurao: " um conjunto de componentes do sistema fornecidos a um cliente especfico" (PFLEEGER,
2004, p. 318). Segundo Pressman (1996, p. 171), pode
tambm ser definida como "um sistema funcionando
somente uma parte de uma configurao de software",
ou ainda como:

Caderno de Referncia de Contedo

15

[...] a sada do processo de software a informao, que pode ser


dividida em trs amplas categorias: programas de computador,
produtos de trabalho que descrevem programas de computador e
dados. Os itens que compreendem toda a informao produzida
como parte do processo de software so chamados coletivamente
de configurao do software (2006, p. 600).

3) Desenvolvedor: " a empresa, organizao ou pessoa


que est construindo o sistema de software para o cliente" (PFLEEGER, 2004, p. 11).
4) Engenharia de Software: "aplicao de uma abordagem sistemtica, disciplinada e quantificvel, para o desenvolvimento, operao e manuteno do software; isto , a aplicao
da engenharia ao software" (PRESSMAN, 2006, p. 17).
5) Garantia de qualidade de software: "o estabelecimento de uma estrutura de procedimentos e de padres organizacionais, que conduzam ao software de alta qualidade" (SOMMERVILLE, 2005, p. 459). Segundo Pressman
(2006, p. 579) a garantia de qualidade de software "consiste em um conjunto de funes para auditar e relatar
que avalia a efetividade e completeza das atividades de
controle de qualidade".
6) Gerenciamento de configurao: "identifica, controle,
audita e relata modificaes que invariavelmente ocorrem enquanto o software est sendo desenvolvido e
depois de ele ter sido entregue ao cliente" (PRESSMAN,
2006, p. 621).
7) Gerenciamento de Requisitos: Segundo Pressman
(2006, p. 121):
[...] um conjunto de atividades que ajudam a equipe de projeto a
identificar, controlar e rastrear requisitos e modificaes de requisitos em qualquer poca, medida que o projeto prossegue.

8) Ferramentas de Engenharia de Software: proporcionam apoio automtico ou semiautomtico aos mtodos


(PRESSMAN, 1996, p.32).
9) Manuteno de software: "qualquer trabalho efetuado
para modificar o sistema, depois que ele estiver em operao" (PFLEEGER, 2004, p. 379).
10) Mtodos de engenharia de software: Segundo Pressman
(1996, p. 31):
Claretiano - Centro Universitrio

16

Engenharia de Software

[...] proporcionam detalhes de como fazer para construir o


software. Os mtodos envolvem um grande nmero de tarefas
que incluem: planejamento e estimativa de projeto, anlise de
requisitos de software e de sistema, projeto da estrutura de
dados, arquitetura de programa e algoritmo de processamento,
codificao, teste e manuteno.

11) Padres de processo: Segundo Sommerville (2005, p. 461):


[...] so os padres que definem os processos a serem seguidos durante o desenvolvimento de software. Eles podem incluir definio
de especificao, processos de projeto e validao, e uma descrio
dos documentos que devem ser gerados no curso desses processos.

12) Paradigma da Engenharia de Software: "representa a


abordagem ou filosofia em particular para a construo
de software" (PFLEEGER, 2004, p. 3); Segundo Pressman
(1996, p. 33):
[...] a engenharia de software compreende um conjunto de mtodos, ferramentas e procedimentos [...] estas etapa so muitas vezes
citadas como paradigmas de engenharia de software.

13) Procedimentos de Engenharia de Software: constituem


o elo "que mantm juntos os mtodos e as ferramentas
e possibilita o desenvolvimento racional e oportuno do
software de computador" (PRESSMAN, 1996, p. 32).
14) Processo de Software: "um arcabouo para as tarefas
que so necessrias para construir softwares de alta
qualidade" (PRESSMAN, 2006, p. 16);
15) Requisito: " uma caracterstica do sistema ou a descrio de algo que o sistema capaz de realizar, para atingir os seus objetivos" (PFLEEGER, 2004, p. 111); Segundo
Sommerville (2005, p. 82):
[...] em alguns casos um requisito visto como uma declarao
abstrata, de alto nvel, de uma funo que o sistema deve fornecer ou de uma restrio do sistema. Em outro extremo, ele uma
definio detalhada, matematicamente formal, de uma funo do
sistema.

16) Sistema baseado em computador: "um conjunto ou


disposio de elementos que organizado para executar
certo mtodo, procedimento ou controle ao processar
informaes" (PRESSMAN, 1996, p. 179).

Caderno de Referncia de Contedo

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

novas ideias e informaes so aprendidas, uma vez que existem


pontos de ancoragem.
Tem-se de destacar que "aprendizagem" no significa, apenas, realizar acrscimos na estrutura cognitiva do aluno; preciso, sobretudo, estabelecer modificaes para que ela se configure
como uma aprendizagem significativa. Para isso, importante considerar as entradas de conhecimento e organizar bem os materiais
de aprendizagem. Alm disso, as novas ideias e os novos conceitos devem ser potencialmente significativos para o aluno, uma vez
que, ao fixar esses conceitos nas suas j existentes estruturas cognitivas, outros sero tambm relembrados.
Nessa perspectiva, partindo-se do pressuposto de que voc
o principal agente da construo do prprio conhecimento, por
meio de sua predisposio afetiva e de suas motivaes internas e
externas, o Esquema dos Conceitos-chave tem por objetivo tornar
significativa a sua aprendizagem, transformando o seu conhecimento sistematizado em contedo curricular, ou seja, estabelecendo
uma relao entre aquilo que voc acabou de conhecer com o que
j fazia parte do seu conhecimento de mundo (adaptado do site disponvel em: <http://penta2.ufrgs.br/edutools/mapasconceituais/
utilizamapasconceituais.html>. Acesso em: 11 mar. 2010).

Caderno de Referncia de Contedo

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

Figura 1 Esquema dos Conceitos-chave do Caderno de Referncia de Contedo de


Engenharia de Software.

Como voc pode observar, esse Esquema d a voc, como


dissemos anteriormente, uma viso geral dos conceitos mais importantes deste estudo. Ao segui-lo, voc poder transitar entre
um e outro conceito e descobrir o caminho para construir o seu
processo de ensino-aprendizagem.
O Esquema dos Conceitos-chave mais um dos recursos de
aprendizagem que vem se somar queles disponveis no ambienClaretiano - Centro Universitrio

20

Engenharia de Software

te virtual, por meio de suas ferramentas interativas, bem como


queles relacionados s atividades didtico-pedaggicas realizadas presencialmente no polo. Lembre-se de que voc, aluno EaD,
deve valer-se da sua autonomia na construo de seu prprio conhecimento.
Questes Autoavaliativas
No final de cada unidade, voc encontrar algumas questes
autoavaliativas sobre os contedos ali tratados, as quais podem ser
de mltipla escolha, abertas objetivas ou abertas dissertativas.
Responder, discutir e comentar essas questes, bem como
relacion-las com sua prtica profissional pode ser uma forma de
voc avaliar o seu conhecimento. Assim, mediante a resoluo de
questes pertinentes ao assunto tratado, voc estar se preparando para a avaliao final, que ser dissertativa. Alm disso, essa
uma maneira privilegiada de voc testar seus conhecimentos e
adquirir uma formao slida para a sua prtica profissional.
Voc encontrar, ainda, no final de cada unidade, um gabarito, que lhe permitir conferir as suas respostas sobre as questes
autoavaliativas de mltipla escolha.
As questes de mltipla escolha so as que tm como resposta apenas uma alternativa correta. Por sua vez, entendem-se por
questes abertas objetivas as que se referem aos contedos
matemticos ou queles que exigem uma resposta determinada,
inalterada. J as questes abertas dissertativas obtm por resposta uma interpretao pessoal sobre o tema tratado; por isso,
normalmente, no h nada relacionado a elas no item Gabarito.
Voc pode comentar suas respostas com o seu tutor ou com seus
colegas de turma.

Bibliografia Bsica
fundamental que voc use a Bibliografia Bsica em seus
estudos, mas no se prenda s a ela. Consulte, tambm, as bibliografias complementares.

Caderno de Referncia de Contedo

21

Figuras (ilustraes, quadros...)


Neste material instrucional, as ilustraes fazem parte integrante dos contedos, ou seja, elas no so meramente ilustrativas, pois esquematizam e resumem contedos explicitados no
texto. No deixe de observar a relao dessas figuras com os contedos, pois relacionar aquilo que est no campo visual com o conceitual faz parte de uma boa formao intelectual.
Dicas (motivacionais)
Este estudo convida voc a olhar, de forma mais apurada,
a Educao como processo de emancipao do ser humano.
importante que voc se atente s explicaes tericas, prticas e
cientficas que esto presentes nos meios de comunicao, bem
como partilhe suas descobertas com seus colegas, pois, ao compartilhar com outras pessoas aquilo que voc observa, permite-se
descobrir algo que ainda no se conhece, aprendendo a ver e a
notar o que no havia sido percebido antes. Observar , portanto,
uma capacidade que nos impele maturidade.
Voc, como aluno dos cursos de Graduao na modalidade
EaD, necessita de uma formao conceitual slida e consistente.
Para isso, voc contar com a ajuda do tutor a distncia, do tutor
presencial e, sobretudo, da interao com seus colegas. Sugerimos, pois, que organize bem o seu tempo e realize as atividades
nas datas estipuladas.
importante, ainda, que voc anote as suas reflexes em
seu caderno ou no Bloco de Anotaes, pois, no futuro, elas podero ser utilizadas na elaborao de sua monografia ou de produes cientficas.
Leia os livros da bibliografia indicada, para que voc amplie
seus horizontes tericos. Coteje-os com o material didtico, discuta
a unidade com seus colegas e com o tutor e assista s videoaulas.

Claretiano - Centro Universitrio

22

Engenharia de Software

No final de cada unidade, voc encontrar algumas questes


autoavaliativas, que so importantes para a sua anlise sobre os
contedos desenvolvidos e para saber se estes foram significativos
para sua formao. Indague, reflita, conteste e construa resenhas,
pois esses procedimentos sero importantes para o seu amadurecimento intelectual.
Lembre-se de que o segredo do sucesso em um curso na
modalidade a distncia participar, ou seja, interagir, procurando
sempre cooperar e colaborar com seus colegas e tutores.
Caso precise de auxlio sobre algum assunto relacionado a
este Caderno de Referncia de Contedo, entre em contato com
seu tutor. Ele estar pronto para ajudar voc.

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.

3. ORIENTAES PARA O ESTUDO DA UNIDADE


Para iniciar o estudo desta unidade, importante que voc
tenha em mente que desenvolver software muito mais do que a
atividade de codificao, isto , a implementao utilizando uma
linguagem de programao.
medida que os sistemas baseados em computador ficaram
mais complexos, outras atividades foram inseridas ao processo de
desenvolvimento, antes e depois da codificao.
Para o bom aproveitamento deste contedo, durante seus
estudos, interaja com seus colegas. Em caso de dvida, entre em
contato com seu tutor. Lembre-se de que, ao final de cada unidade, voc encontrar questes autoavaliativas, por meio das quais
voc poder testar os conhecimentos adquiridos.
Quando for realizar seus estudos, escolha um ambiente que
possa lhe proporcionar concentrao, ou seja, um lugar calmo,
arejado e estimulante. Esteja certo de que o ambiente e o meio
contribuiro de maneira significativa para sua aprendizagem.
A palavra sistema muito utilizada na rea de informtica,
assim, ser bastante citada durante este Caderno de Referncia de
Contedo. No iremos definir a palavra sistema, pois no este
o nosso objetivo. Vamos nos limitar sua aplicao em sistemas
computacionais. interessante, porm, que voc entenda o conceito desta palavra que muito empregada no s na informtica,
mas em muitas outras reas. Certamente, voc j a deve ter utilizado para se referir ao sistema solar, ao sistema educacional, ao
sistema respiratrio etc.

U1 Introduo Engenharia de Software

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

Para compreender melhor a afirmao anterior, fundamental que reflita um pouco.


Ao ouvir ou ler a palavra ENGENHARIA, o que voc pensa?
O que um Software?
E o que um Sistema?
Quando falamos em software, na verdade, estamos englobando conceitos de:
Programas quando executados, produzem a funo e o
desempenho desejados.
Documentos descrevem a operao e a utilizao dos
programas.
Estrutura de dados possibilitam que os programas manipulem adequadamente as informaes.
Em uma das definies mais simples, Alcade (1991) descreve o software como a parte lgica que dota o equipamento fsico
de capacidade para realizar todo tipo de trabalho; considerando
que um sistema computacional composto por trs pilares bsicos, sendo eles: o elemento fsico (hardware), o elemento lgico
(software) e o elemento humano.
Segundo Pressman (2006), ao definir o software de uma
forma clssica, podemos dizer que ele faz parte de um conjunto
de instrues que, ao serem executadas, produzem a funo e o
desempenho desejados. Um software tambm possui estruturas
de dados que permitem que as informaes relativas ao problema
a ser resolvido sejam manipuladas adequadamente e uma documentao especfica sobre seu funcionamento, requisitos, funcionalidades, testes e manuteno. Essa documentao necessria
para um melhor entendimento de sua operao e uso.
O software , portanto, um dos elementos que compem
um sistema computacional. Para Paula Filho (2001), o software
o elemento central: realiza estruturas complexas e flexveis que
trazem funes, utilidades e valor ao sistema. Contudo, h outros

U1 Introduo Engenharia de Software

27

componentes tambm indispensveis, que so: as plataformas de


hardware, os recursos de comunicao de informaes, os documentos de diversas naturezas, as bases de dados e at os procedimentos manuais que integram aos automatizados.
Pressman (1995, p. 179) inclui como elementos de um sistema computacional: o software, o hardware, as pessoas, o banco
de dados, a documentao e os procedimentos, sendo eles:
1) Software: programas de computador, estruturas de dados e documentao correlata que servem para efetivar
o mtodo, processo ou controle lgico necessrio.
2) Hardware: dispositivos eletrnicos que fornecem a capacidade ao computador e dispositivos eletromecnicos
que oferecem funes ao mundo externo.
3) Pessoas: usurios e operadores de hardware e
software.
4) Bando de dados: uma grande e organizada coleo de
informaes a que se tem acesso pelo software e parte
integrante da funo do sistema.
5) Documentao: manuais, formulrios e outras informaes descritivas que retratam o uso do sistema.
6) Procedimentos: os passos que definem o uso especfico
de cada elemento do sistema ou o contexto processual
em que o sistema reside.
Estes elementos interagem uns com os outros para transformar informaes. Assim, para que um sistema computacional
cumpra realmente seus objetivos, importante no apenas se
preocupar com a construo de seus elementos, mas tambm
fundamental que todos os elementos estejam integrados entre si
de forma efetiva.
Ao pensarmos no contexto da Engenharia de Software, o
software ser visto como um produto a ser desenvolvido. Independentemente das caractersticas do produto de software, sempre
importante considerar os conceitos deste Caderno de Referncia
de Contedo em seu desenvolvimento. Logo, tanto no desenvolClaretiano - Centro Universitrio

28

Engenharia de Software

vimento de sistemas de uso no restrito (sistemas utilizados por


vrios usurios, com caractersticas de integrao com outros sistemas e com bases de dados internas e externas) quanto no desenvolvimento de sistemas de uso restrito (sistemas menores,
restritos a um nico usurio), a documentao, os testes, a manuteno, as tcnicas de modelagem, a portabilidade, a flexibilidade,
entre outros, no devem ser desprezados, e, sim, adaptados realidade de cada aplicao.
importante que voc considere que, neste Caderno de Referncia de Contedo, os conceitos so relacionados a programas
de acesso no restrito, ou seja, para clientes maiores, que possuem caractersticas de integrao com outros programas/sistemas e bases de dados internos e externos.
Para softwares menores, restritos, com um nico usurio/
cliente, os conceitos de Engenharia de Software no se aplicam
em toda a sua extenso. Nesses casos, a documentao, os testes, a manuteno, as tcnicas de modelagem, a portabilidade, a
flexibilidade, etc., associados so poucos ou, em sua maioria, inexistentes, no por ser invivel realiz-los, mas por no serem necessrios.

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

U1 Introduo Engenharia de Software

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

Grfico 1 Curva de falhas do hardware.

ndice
de
falhas

Mortalidade
infantil

Desgaste

Tempo

Fonte: Adaptado de Pressman (2006, p. 14).

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.

U1 Introduo Engenharia de Software

31

Grfico 2 Curvas de falhas do software.

Curva real
ndice
de
falhas

Mudanas

Curva Idealizada

Tempo

Fonte: Adaptado de Pressman (2006, p. 15).

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

U1 Introduo Engenharia de Software

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.

Claretiano - Centro Universitrio

34

Engenharia de Software

7. HISTRICO DE DESENVOLVIMENTO DE SOFTWARE


Desde os primrdios da computao, o desenvolvimento
dos programas, ou a programao, era visto como uma forma de
arte, sem utilizao de metodologias formais e sem qualquer preocupao com a documentao, entre outros fatores importantes.
A experincia do programador era adquirida por meio de tentativa
e erro. A verdade que essa tendncia ainda se verifica nos dias
atuais. Com o crescimento dos custos de software (em relao aos
de hardware) no custo total de um sistema computacional, o processo de desenvolvimento de software tornou-se um item de fundamental importncia na produo de tais sistemas (PRESSMAN,
2006).
Se voltarmos no tempo e tentarmos montar uma linha cronolgica sobre o desenvolvimento de softwares, nos defrontaremos com algumas dcadas e acontecimentos que foram fundamentais para definir e estruturar o processo/tecnologia existente
atualmente.
Na dcada de 1940 teve incio a evoluo dos sistemas computadorizados, e a grande maioria dos esforos, e consequentemente custos, estavam concentrados no desenvolvimento do
hardware, em razo, especialmente, das limitaes e dificuldades
encontradas na poca. O foco era desenvolver o hardware; e o desenvolvimento do software, na pesquisa, estava em segundo plano. Em outras palavras, nesta poca, o software era o coadjuvante,
enquanto o hardware era o ator principal.
Conforme a tecnologia de hardware foi sendo dominada,
as preocupaes voltaram-se para o software e, apenas no incio
da dcada de 1950, o desenvolvimento dos sistemas operacionais
comeava a entrar em foco. Nessa poca, as linguagens de programao de alto nvel, como FORTRAN e COBOL, e respectivos
compiladores comearam a ser o centro da ateno.

U1 Introduo Engenharia de Software

35

Vale ressaltar que, nesta poca, os sistemas computacionais


eram privilgios de poucos; normalmente, de instituies governamentais ou de pesquisa. Alm disso, na maioria das vezes, o
desenvolvedor era o prprio usurio do sistema, ele desenvolvia
para uso prprio, se fosse necessrio fazer modificaes, ele mesmo fazia. O fato de o cliente e o desenvolvedor serem a mesma
pessoa, obviamente que facilitava o processo de levantamento das
necessidades do cliente. Afinal, a pessoa conhecia suas prprias
necessidades.
Entenda por "desenvolvedor" o profissional que participa da construo de software, podendo ser um programador ou
um analista. O "usurio" a pessoa que efetivamente far uso do
software produzido pelos desenvolvedores. O "cliente", que no
necessariamente tambm usurio, a pessoa que contratou os
servios de um desenvolvedor de software ou de uma empresa
desenvolvedora.
Nessa poca, a tendncia era ocultar do usurio questes relacionadas ao funcionamento interno da mquina, permitindo que
este concentrasse seus esforos apenas na resoluo dos problemas computacionais ao invs de preocupar-se com os problemas
relacionados ao funcionamento da mquina (PRESSMAN, 1996).
J no incio da dcada de 1960, surgem os sistemas operacionais com caractersticas de multiprogramao, o que possibilitou
a eficincia e o crescimento da utilizao dos sistemas computacionais. Esse fato contribuiu de maneira significativa em relao
s questes de queda de preo do hardware e ao aumento das
vendas de mquinas e software.
A principal caracterstica desse perodo foi a necessidade de
desenvolver grandes sistemas de software em substituio aos pequenos programas aplicativos que eram utilizados at o momento,
pois a grande necessidade das empresas era comprar mquinas
com softwares "que funcionassem nelas".

Claretiano - Centro Universitrio

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.

U1 Introduo Engenharia de Software

37

Atualmente, o software corresponde a uma porcentagem


cada vez maior no custo global de um sistema informatizado; sobretudo porque a tecnologia de desenvolvimento de software implica,
ainda, grande carga de trabalho, realizado por vrias pessoas trabalhando "juntas" e em um prazo relativamente longo de desenvolvimento. Na maioria das vezes, o desenvolvimento desses sistemas
realizado de forma ad-hoc, ou seja, elaborado especificamente
para uma determinada ocasio ou situao, o que pode conduzir a
uma extrapolao do tempo definido inicialmente para o desenvolvimento, o que acarreta um aumento no custo final do sistema.
Apesar de ter surgido na dcada de 1960, ainda hoje sentimos alguns sintomas da crise do software. Mesmo com os avanos
na Engenharia de Software para minimizar os efeitos dessa crise,
ainda nos deparamos com problemas como o do no cumprimento de prazos e custos e, ainda, entregamos produtos com a qualidade aqum da desejada pelo cliente.
O termo "Aflio Crnica" utilizado como sinnimo de
Crise do Software. Voc deve estar achando estranho, no ? No
livro de Pressman (1995) voc encontra a explicao: a palavra crise denota algo decisivo no curso de algo. Portanto, se a Crise do
Software teve incio h mais de 30 anos e sentimos alguns de seus
efeitos at hoje, mais bem definida quando chamada de "Aflio
Crnica". Pois aflio algo que incomoda e, crnico, que demora
longo tempo.
Se pensarmos no objetivo geral deste Caderno de Referncia
de Contedo, considerando o que estudamos at o momento, podemos dizer que apresentar propostas de solues s questes
relacionadas ao desenvolvimento de software, por meio da transferncia dos principais conceitos relativos Engenharia de Software, particularmente no que diz respeito utilizao de tcnicas,
metodologias e ferramentas de desenvolvimento de software.
Portanto, para entendermos melhor algumas tcnicas de desenvolvimento de software, primeiro conheceremos alguns mitos
Claretiano - Centro Universitrio

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.

8. SOFTWARE: MITOS E REALIDADE


Segundo Sommervile (1992) e Pressman (2006), possvel
apontar como causas principais dos problemas (estouro de cronograma, elevao de custo etc.) alguns aspectos, tais como:
a) falta de experincia dos profissionais na conduo de
projetos de software;
b) falta de treinamento no que diz respeito utilizao de
tcnicas e mtodos formais para o desenvolvimento de
software;
c) "cultura de programao" que difundida e facilmente aceita por estudantes e profissionais da rea de computao;
d) resistncia s mudanas (particularmente no que diz
respeito utilizao de novas tcnicas de desenvolvimento de software) que os profissionais, normalmente,
apresentam.
Esses aspectos levaram definio e discusso dos chamados "mitos e realidades" dos softwares apontados por Pressman
(1996) e que, de certo modo, explicam alguns dos problemas de
desenvolvimento apresentados anteriormente.
Mitos de gerenciamento
Mito 1 Se a equipe dispe de um manual repleto de padres e procedimentos de desenvolvimento de software, ento
ela est apta a encaminhar bem o desenvolvimento.
Realidade 1 O fato de possuir um manual no o suficiente. preciso que a equipe aplique efetivamente os conhecimentos
apresentados no manual. necessrio que as observaes que
constem no dado manual reflitam a moderna prtica de desenvol-

U1 Introduo Engenharia de Software

39

vimento de software e que seja exaustivo com relao a todos os


problemas de desenvolvimento que podero aparecer no percurso. E, alm disso...
Ser que o manual utilizado?
Os profissionais sabem de sua existncia?
Ele reflete a prtica moderna de desenvolvimento de software?
Ele completo?
Mito 2 A equipe dispe de computadores de ltima gerao, e consequentemente, suas ferramentas de desenvolvimento
de software tambm so de ltima gerao.
Realidade 2 Ter sua disposio o ltimo modelo de computador pode ser bastante confortvel para o desenvolvedor do
software, mas no oferece nenhuma garantia quanto qualidade
do software desenvolvido. preciso muito mais do que os mais
recentes computadores para se fazer um desenvolvimento de software de alta qualidade, pois mais importante do que ter um hardware de ltima gerao ter ferramentas para a automatizao
do desenvolvimento de software (as ferramentas CASE).
Mito 3 Se o desenvolvimento do software estiver atrasado,
basta aumentar a equipe para honrar o prazo de desenvolvimento.
Realidade 3 Aumentar a equipe tambm no ser a soluo. Algum disse um dia que "... acrescentar pessoas em um
projeto atrasado vai torn-lo ainda mais atrasado...". De fato, a
introduo de novos profissionais em uma equipe em fase de conduo de um projeto vai requerer uma etapa de treinamento dos
novos elementos da equipe; para isso sero utilizados elementos
que esto envolvidos diretamente no desenvolvimento, o que vai,
consequentemente, implicar maiores atrasos no cronograma.

Claretiano - Centro Universitrio

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.

U1 Introduo Engenharia de Software

41

CUSTO

60 ~ 100 x

1.5 ~ 6 x

1x
DEFINIO

DESENVOLVIMENTO

MANUTENO

Fonte: Adaptado de Pressman, 2006.

Figura 1 Influncia das alteraes de requisitos no custo de um sistema.

Mito 6 Aps a edio do programa e sua colocao em


funcionamento, o trabalho est terminado.
Realidade 6 Na realidade, ocorre completamente diferente
disso, pois de 60% a 80% do esforo de desenvolvimento de um software despendido aps sua entrega ao cliente (manuteno).
Mito 7 Enquanto o programa no entrar em funcionamento, impossvel avaliar sua qualidade.
Realidade 7 A preocupao com a garantia da qualidade
do software deve fazer parte de todas as etapas do desenvolvimento, e, ao fim de cada etapa, os documentos do projeto devem
ser revisados observando critrios de qualidade.
Mito 8 O produto a ser entregue ao final do projeto o
programa funcionando.
Realidade 8 O programa em funcionamento um dos componentes do software. Um bom projeto caracteriza-se pela produo de um conjunto importante de documentos, os quais podem
ser identificados com auxlio da Figura 2.

Claretiano - Centro Universitrio

42

Engenharia de Software

Estruturas
de Dados

Plano

Especificao
de Requisitos

Projeto

Listagem

Programa
Funcionando

Plano de
Testes

Fonte: Adaptada de Braz Junior, 2007.

Figura 2 Conjunto de documentos e componentes.

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.

U1 Introduo Engenharia de Software

43

Se voc relacionou engenharia matemtica, voc estava


certo, pois nas suas mais diversas reas, engenharia a aplicao
de princpios matemticos na construo de algo. E na construo
de software, isso tambm se aplica?
Essa a questo que leva m compreenso dos reais objetivos da Engenharia de Software. Voc j viu que a Engenharia de
Software surgiu na tentativa de resolver os problemas do desenvolvimento de software caracterizados pela crise do software.
Considerando o que voc estudou at agora, ser que todos
os problemas da construo de software podem ser resolvidos por
meio da matemtica?
Desde o seu surgimento, a Engenharia de Software tem proposto vrios mtodos para minimizar os efeitos da crise do software, mas como j foi mencionado, at os dias de hoje encontramos
muitos problemas envolvidos na construo do software. O ambiente que envolve a sua construo (caractersticas do cliente, do
usurio, do desenvolvedor, as mudanas tecnolgicas) e as crescentes aplicaes para os novos softwares impossibilitam a criao
de uma "receita de bolo" que garanta a construo do software
com qualidade absoluta. Assim, os mtodos propostos pela Engenharia de Software devem ser adaptados realidade de cada ambiente de desenvolvimento e s caractersticas do software que
ser construdo.
Para Pfleeger (2004), a Engenharia de Software uma rea
da engenharia que se preocupa com todos os aspectos da produo de software, desde os estgios iniciais de especificao do sistema at a manuteno desse sistema, depois que ele entrou em
operao.
Isso significa que a Engenharia de Software no se preocupa
somente com aspectos tcnicos de desenvolvimento de software,
mas tambm com atividades como o gerenciamento de projetos e
o desenvolvimento de ferramentas, mtodos e teorias que deem
apoio produo de software.
Claretiano - Centro Universitrio

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-

U1 Introduo Engenharia de Software

45

tes necessrias para criar o sistema completo. Enfim, detalhes de


construo de cada um dos componentes (como hardware e software) ficam a encargo das respectivas engenharias (Engenharia
de Hardware e Engenharia de Software).
A Engenharia de Software busca prover a tecnologia necessria para desenvolver software de alta qualidade com baixo custo e um grande desafio que os engenheiros de software tm a
enfrentar. O engenheiro de software utiliza o computador como
ferramenta para solucionar problemas de diversas reas.
Segundo Pressman (2006), a Engenharia de Software possui
trs elementos fundamentais: mtodos, ferramentas e procedimentos.
Mtodos: so os detalhes de "como fazer" para construir
o software, trata-se de um procedimento formal para
produzir algum resultado. Os mtodos, normalmente, envolvem atividades como planejamento e gerenciamento,
anlise de requisitos, projeto, codificao, teste e manuteno.
Ferramentas: proporcionam apoio automatizado ou semiautomatizado aos mtodos. A ferramenta pode tornar
os mtodos mais precisos, eficientes e produtivos e melhorar a qualidade do produto resultante.
Procedimentos: so as ligaes entre os mtodos e as
ferramentas, possibilitando o desenvolvimento racional e
oportuno do software. Em outras palavras, os procedimentos definem a sequncia em que os mtodos sero aplicados, os produtos que se exigem que sejam entregues, os
controles que ajudam a assegurar a qualidade e a coordenar as mudanas e os marcos de referncia que possibilitam aos gerentes de software avaliar o progresso.
Para que voc compreenda melhor os conceitos de mtodos,
ferramentas e procedimentos, vejamos a analogia que Pfleeger
(2004) faz aplicando esses conceitos na culinria. Na culinria? Pode
parecer estranho, mas util. Vejamos.
Claretiano - Centro Universitrio

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.

10. REENGENHARIA E ENGENHARIA REVERSA


Alm do conceito de Engenharia de Software, h tambm dois
outros conceitos relacionados: reengenharia e engenharia reversa.
O conceito de reengenharia est bastante relacionado manuteno do software.
Os sistemas computacionais desenvolvidos para apoiar as atividades empresariais, chamados de sistemas de informao, devem
se adaptar s mudanas ocorridas na empresa, para que continue
a atender as necessidades dos usurios. Estes sistemas so os que
normalmente mais sofrem mudanas depois de sua implantao.
Um sistema de informao pode ser definido tecnicamente como
um conjunto de componentes inter-relacionados que coleta (ou recupera), processa, armazena e distribui informaes destinadas a
apoiar a tomada de decises, a coordenao e o controle de uma
organizao. Alm de dar suporte tomada de decises, coordenao e ao controle, esses sistemas tambm auxiliam os gerentes e
trabalhadores a analisar problemas, visualizar assuntos complexos
e criar novos produtos (LAUDON e LAUDON, 2006, p. 7).

U1 Introduo Engenharia de Software

47

Segundo Laudon e Laudon (1999), o ambiente empresarial


est se alterando e fluido, isto , novas tecnologias, tendncias
econmicas, desenvolvimentos polticos e regulamentaes que
afetam os negcios esto constantemente emergindo. Geralmente, quando as empresas falham, porque negligenciaram a resposta ao ambiente mutvel.
Assim, no contexto atual, o ambiente empresarial mostra-se
bastante instvel. A empresa que no se adaptar s mudanas ambientais deixa de ser competitiva. Da mesma forma, os sistemas
de informao destas empresas devem tambm se adaptar s suas
novas necessidades, para que continuem sendo teis e cumpram
com seu papel de apoiar as decises.
Porm, muitos dos sistemas de informao fundamentais
aos negcios esto se tornando difceis de serem alterados. Para
Pressman (1996) remendos so feitos sobre remendos, resultando
em softwares que funcionam de forma ineficiente e falham com
frequncia, no correspondendo s necessidades dos usurios.
Portanto, a manuteno de sistemas em fase de envelhecimento
tornou-se proibitivamente dispendiosa para muitos sistemas de
informao.
Quando, ao longo das manutenes, as alteraes so feitas
sem administrao, sem atualizao da documentao, na verdade, quando so feitos "remendos", medida que o tempo passa
novas alteraes ficam cada vez mais difceis de serem feitas. Alm
disso, sistemas feitos com tecnologia muito arcaica, muitas vezes,
no acomodam as necessidades atuais. exatamente nestes casos
que feita a reengenharia do software. Reengenharia, em poucas
palavras, significa reconstruir o software utilizando uma nova tecnologia, para melhorar a facilidade de manuteno.
De acordo com Pressman (1996), a reengenharia no somente recupera as informaes de projeto de um software existente,
mas usa estas informaes para alterar ou reconstruir o sistema
existente, num esforo para melhorar sua qualidade. Logo, um sisClaretiano - Centro Universitrio

48

Engenharia de Software

tema que tenha sofrido reengenharia reimplementa a funo do


sistema existente, acrescido de novas funes.
A reengenharia pode envolver redocumentar, organizar e reestruturar o sistema, traduzir o sistema para uma linguagem de programao mais moderna e atualizara estrutura e os valores dos dados
do sistema (SOMMERVILLE, 2005, p. 533).

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).

Para Sommerville (2005, p. 534) na "engenharia reversa o


programa analisado e as informaes so extradas dele, a fim de
ajudar a documentar sua organizao e funcionalidade".
A engenharia reversa no o mesmo que reengenharia. O
objetivo da engenharia reversa derivar o projeto ou a documentao de um sistema a partir de seu cdigo-fonte. J o objetivo da
reengenharia produzir um novo sistema com manuteno mais

U1 Introduo Engenharia de Software

49

fcil. Assim, a engenharia reversa para desenvolver uma melhor


compreenso de um sistema com frequncia parte do processo
de reengenharia (SOMMERVILLE, 2005). Em outras palavras, a engenharia reversa pode anteceder um processo de reengenharia,
num esforo de compreender os requisitos que levaram a construo do software a ser reconstrudo.
Para concluir, vamos relembrar: a engenharia de software
o processo de desenvolver o software a partir de um estudo das
necessidades do cliente e futuros usurios. O processo de reengenharia de software tem como partida o conhecimento das caractersticas do sistema antigo, a ser reconstrudo. As caractersticas do
sistema antigo podem ser levantadas com o auxlio da engenharia
reversa.

11. QUESTO AUTOAVALIATIVA


Sugerimos que voc procure responder, discutir e comentar
as questes a seguir que tratam da temtica desenvolvida nesta
unidade. Se voc encontrar dificuldade em respond-las, procure
revisar os contedos estudados para sanar as suas dvidas. A autoavaliao pode ser uma ferramenta importante para voc testar
seu desempenho. Este um momento impar para voc fazer uma
reviso desta unidade. Lembre-se de que no ensino a distncia a
construo do conhecimento se d de forma cooperativa e colaborativa, portanto compartilhe com seus colegas suas descobertas.
1) A Engenharia de Software:
I No visa o desenvolvimento de teorias e fundamentaes, preocupandose unicamente com as prticas de desenvolvimento de software.
II Tem como foco o tratamento dos aspectos de desenvolvimento de software, abstraindo-se dos sistemas baseados em computadores, incluindo hardware e software.
III Tem como mtodos as abordagens estruturadas para o desenvolvimento de software que incluem os modelos de software, notaes, regras e
maneiras de desenvolvimento.

Claretiano - Centro Universitrio

50

Engenharia de Software

IV Segue princpios, tais como o da Abstrao, que identifica os aspectos


importantes sem ignorar os detalhes e o da Composio, que agrupa as
atividades em um nico processo para distribuio aos especialistas.
correto o que se afirma em:
a)
b)
c)
d)
e)

III e IV, apenas.


I, II, III e IV.
I e II, apenas.
I, II e III, apenas.
II, III e IV, apenas.

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.

U1 Introduo Engenharia de Software

51

Alm disso, voc conheceu a problemtica envolvida na construo


do software desde os primrdios e pde verificar que, at hoje,
muitas dificuldades ainda existem.
Com base em todos estes conceitos estudados, voc pde
conhecer o que a Engenharia de Software, seus reais objetivos,
limitaes e desafios. E perceber que uma das referncias mais
citadas durante este Caderno de Referncia de Contedo e em vrias fontes sobre Engenharia de Software, de Roger S. Pressman,
ou simplesmente Pressman, uma das personalidades conceituadas e que mais publica na rea de Engenharia de Software.
Na prxima unidade, voc conhecer o que um processo
de software e os principais paradigmas de desenvolvimento de
software.

13. REFERNCIAS BIBLIOGRFICAS


ALCADE, E.; GARCIA, M; PENUELAS, S. Informtica Bsica. So Paulo: Makron Books,
1991.
BRAZ JUNIOR, O. P. Engenharia de software. Disponvel em: <http://inf.unisul.br/~osmarjr/
download/apostila/apostila_engenharia_software.zip>. Acesso em: 13 maio 2007.
FERREIRA, A. B. DE H. Dicionrio Aurlio On-line. Disponvel em: <http://www.
dicionariodoaurelio.com/>. Acesso em: 04 jan. 2010.
LAUDON, K. C; LAUDON, J. P. Sistemas de Informao. 4. ed. Rio de Janeiro: LTC, 1999.
______. Sistemas de Informao Gerenciais. Administrando a empresa digital. 5. ed. So
Paulo: Pearson Education do Brasil, 2006.
MICHAELIS. Moderno dicionrio da lngua portuguesa. So Paulo: Cia. Melhoramentos,
1998.
PAULA FILHO, W. P. Engenharia de Software: fundamentos, mtodos e padres. 2. ed. Rio
de janeiro: LTC, 2001.
PFLEEGER, S. L. Engenharia de software: teoria e prtica. So Paulo: Prentice Hall, 2004.
PRESSMAN, R. S. Engenharia de software. So Paulo: Makron Books, 1996.
______. Engenharia de software. So Paulo: Makron Books, 2006.
SOMMERVILLE, I. Engenharia de Software. 6. ed. So Paulo: Pearson Addison Wesley,
2005.

Claretiano - Centro Universitrio

Claretiano - Centro Universitrio