Você está na página 1de 56

LIVRO

UNIDADE 1

Engenharia de
Software

Fundamentos de
Engenharia de Software

Roque Maitino Neto

2015 por Editora e Distribuidora Educacional S.A


Todos os direitos reservados. Nenhuma parte desta publicao poder ser reproduzida
ou transmitida de qualquer modo ou por qualquer outro meio, eletrnico ou mecnico,
incluindo fotocpia, gravao ou qualquer outro tipo de sistema de armazenamento e
transmisso de informao, sem prvia autorizao, por escrito, da Editora e
Distribuidora Educacional S.A.

2015
Editora e Distribuidora Educacional S. A.
Avenida Paris, 675 Parque Residencial Joo Piza
CEP: 86041 -100 Londrina PR
e-mail: editora.educacional@kroton.com.br
Homepage: http://www.kroton.com.br/

Sumrio

Unidade 1 | Fundamentos de Engenharia de Software


Seo 1.1 - Introduo Engenharia de Software: aspectos gerais,
objetivos, evoluo do software e crise do software.

Seo 1.2 - Fundamentos dos processos de desenvolvimento de


software: conceitos, mtodos, ferramentas, procedimentos e principais
atividades. Os produtos e o ciclo de vida. Projetos, atividades e
estruturas analticas. Modelos de referncia e fatores de produo.

19

Seo 1.3 - Modelos e etapas do processo de software: caractersticas,


requisitos, projeto de sistema, desenvolvimento, integrao, instalao
e manuteno.

31

Seo 1.4 - Modelos dos processos de software: aplicabilidade e


evoluo.

43

Palavras do autor
Caro aluno, seja bem-vindo!
Voc pode imaginar que desenvolver uma soluo computacional que esteja apta
a atender expectativas e necessidades de quem a demandou no tarefa simples. A
dificuldade de comunicao entre equipe de desenvolvimento e cliente, a adoo de
procedimentos equivocados (ou a falta deles) e a dificuldade natural em se criar um
programa correto so condies que, consideradas de forma isolada ou combinada,
podem acarretar expectativas frustradas e necessidades mal atendidas.
Mas ser que no temos como mudar isso? H uma sada: o aprimoramento das
prticas de trabalho e a estruturao de metodologias eficientes de desenvolvimento
de software tm ajudado a reduzir os casos de insucesso nos projetos ou, na pior das
hipteses, mitigar seus efeitos. Desde seu surgimento no final da dcada de 1960, a
Engenharia de Software tem se mostrado o melhor modo seno o nico de tornar
vivel um projeto de software e de possibilitar a entrega de produtos com qualidade e
confiabilidade satisfatrias.
Como possvel, ento, utilizarmos a Engenharia de Software para obter sucesso
no desenvolvimento de solues computacionais? Como voc proporcionaria
sua equipe uma maneira segura de atingir os objetivos do projeto sem que seus
membros se percam entre procedimentos complexos, normas rgidas de processo,
documentao excessivamente detalhada e interminveis sees de planejamento?
Como a Engenharia de Software tem tentado, por meio de metodologias mais leves,
geis e focadas no desenvolvedor, corrigir erros cometidos no passado?
Voc vai constatar que este material didtico trata destas e de outras questes ao
apresentar conceitos e propor desafios para voc, aluno. A unidade 1 aborda questes
introdutrias da Engenharia de Software, as principais e mais tradicionais metodologias
de desenvolvimento e as dificuldades em adequ-las s caractersticas atuais das
equipes de desenvolvimento e s expectativas dos clientes.
A unidade 2 trata das novas prticas de desenvolvimento e como, por meio delas,
voc poder tornar mais gil e flexvel o processo de construo de uma soluo
computacional. As metodologias Extreme Programming e Scrum esto em foco nesta
unidade e voc poder, por meio das prticas que adotam, decidir se uma equipe de
desenvolvimento deve evitar a todo custo mudanas nos requisitos iniciais do sistema
ou simplesmente trat-las como inevitveis.
A qualidade do produto de software o tema da unidade 3. Voc ter contato com
algumas das mais eficientes prticas de garantia da qualidade e normas relacionadas

a elas, com enfoque nas revises e mtricas voltadas construo de produto que
oferea confiabilidade e perfeita adequao ao seu propsito.
Por fim, na unidade 4, assuntos relacionados ao teste de software so desenvolvidos
de forma a proporcionar a voc, vises e mtodos diversificados de como submeter
um produto executvel a verificaes e validaes. A participao do cliente e/ou
usurio neste processo mostrada como fundamental para seu sucesso.
Pois bem, este o desafio. O bom aproveitamento nesta disciplina assim como
nas demais - pressupe sua dedicao nas atividades de pr e ps aula, bem como
sua efetiva participao nas discusses que se seguiro nos encontros presenciais.
As atividades de autoestudo tero importncia destacada na construo de sua
competncia para distinguir e compreender as metodologias de desenvolvimento de
software abordadas e, de acordo com a necessidade do caso real, empreend-las para
o sucesso do seu projeto.
Bom trabalho!

Unidade 1

FUNDAMENTOS DE
ENGENHARIA DE SOFTWARE

Convite ao estudo
Ol, seja bem-vindo ao mdulo de introduo Engenharia de Software!
Voc sabia que as boas prticas associadas Engenharia de Software tm servido
como apoio para todos os envolvidos no processo de desenvolvimento de um
produto de software? Pois . Porm, essas prticas no se consolidaram da
noite para o dia. Ao contrrio, foram sendo construdas e estruturadas conforme
as experincias em projetos se acumulavam entre as equipes. Em nossos
dias, o desafio do desenvolvimento de um produto de software no pode ser
enfrentado sem condutas estruturadas e padres mnimos de procedimentos.
Essa primeira unidade ser um dos passos para que voc seja capaz de
conhecer as principais metodologias de desenvolvimento de software, normas
de qualidade e processos de teste de software.
Para essa unidade foi preparado contedo que vai colocar voc diante
dos tpicos iniciais da Engenharia de Software, apresentados na medida certa
para proporcionar seu primeiro contato com o tema. Estudaremos juntos os
conceitos iniciais da disciplina, seus paradigmas e objetivos, sempre com foco
na sua preparao para transitar com naturalidade pelas novas metodologias
de desenvolvimento e pelos padres de qualidade que o desenvolvimento
moderno impe.
So objetivos de aprendizagem desta seo que voc conhea aspectos
gerais, conceitos, objetivos e paradigmas da Engenharia de Software, assim
como fatos histricos do tema e a crise pela qual o desenvolvimento de software
passou.
Os prximos pargrafos apresentam situao comum a muitas organizaes
que assumiram a misso de automatizar processos por meio de programas
de computador. Tal situao dar base para nossa caminhada pelas demais

U1

unidades desse material didtico.


Vamos iniciar pela seguinte situao: voc scio-proprietrio de uma
startup de desenvolvimento de software, chamado X-Soft. Um grande cliente,
especializado em venda de games, solicitou um projeto de software para
cadastro de clientes por interesse, o que vai possibilitar contatos mais assertivos
e direcionamentos seguros de campanhas. Acontece que para atender este
cliente com a qualidade que ele demanda, mudanas nos processos de
desenvolvimento da X-Soft devero ser implementadas. No h metodologia
formal de desenvolvimento implantada na empresa e as atividades so
executadas sem acompanhamento e validao.
Para que sua tarefa seja cumprida voc dever apresentar:
1. Levantamento do cenrio atual do processo de desenvolvimento utilizado
na X-Soft.
2. Proposta de melhoria do processo de software utilizado pela X-Soft.
3. Levantamentos dos requisitos do software e esboo do projeto.
4. Definio do processo de implantao do software.
Nas sees seguintes voc ter disposio textos estruturados em
formatao padronizada que o levaro a conhecer as motivaes da existncia
da Engenharia de Software. No Dilogo Aberto, as situaes da realidade
profissional sero problematizadas e, na sequncia, ser abordada a teorizao
que nos dar base para os exerccios e o desenvolvimento das outras situaes
do dia a dia que se seguiro.
Vale a pena, de fato, investir tempo em aplicao de metodologia? Temos
feito a diviso correta das etapas de desenvolvimento de um produto de
software? Ao aprofundar-se nos temas aqui abordados, voc ser capaz de
responder a estas e outras tantas questes.

Fundamentos de Engenharia de Software

U1

Seo 1.1
Introduo Engenharia de Software: aspectos
gerais, objetivos, evoluo do software e crise do
software.
Dilogo aberto
Nossa empresa X-Soft cresceu! Agora bons contratos so fechados e clientes
importantes esto sendo conquistados.
Temendo a perda de controle sobre os projetos e buscando bom atendimento
demanda do cliente de venda de games, os dirigentes da X-Soft resolvem que os
processos de desenvolvimento e o gerenciamento dos projetos devem ser repensados.
Aps algum tempo de discusso, constatam que os processos de desenvolvimento
que adotam so caticos e que o incio da soluo passa pelo levantamento de como
os procedimentos so executados atualmente.
Sua tarefa fazer o levantamento dos procedimentos de desenvolvimento atuais
adotado na X-Soft. Utilize os conhecimentos que sero abordados nessa seo
1.1, principalmente os relacionados s caractersticas do perodo chamado crise do
software.
Ser que uma nova metodologia deve ser discutida com todos os envolvidos antes
de sua adoo? Assumindo que a empresa hoje cumpre com a maioria dos prazos
e tem clientes minimamente satisfeitos, qual o motivo de mudar o que est dando
certo? Essas questes tero suas respostas direcionadas nas prximas sees.

No pode faltar
Adiante sero descritos conceitos, objetivos e paradigmas relacionados Engenharia
de Software que embasaro temas mais avanados e pavimentaro o caminho para
metodologias mais adequadas ao cenrio atual de demandas dos clientes.
Ensina Schach (2008), em sua obra Engenharia de software: os paradigmas
clssico e orientado a objetos, que Engenharia de Software uma disciplina cujo
objetivo produzir software isento de falhas, entregue dentro do prazo e oramentos
previstos, e que atenda s necessidades do cliente. Alm disso, o software deve ser

Fundamentos de Engenharia de Software

U1
fcil de ser modificado quando as necessidades dos usurios mudarem.
Alternativamente, para uma melhor definio do conceito de Engenharia de
Software, faz-se necessria a explicao isolada dos termos que o compem.
De forma genrica, pode-se definir software como (i) instrues que, quando
executadas, produzem a funo desejada, (ii) estruturas de dados que possibilitam
que os programas manipulem a informao e (iii) documentao relativa ao sistema.
Engenharia diz respeito ao projeto e manufatura, circunstncias nas quais os requisitos
e as especificaes do produto assumem importncia crtica na qualidade final do
produto. Trata-se da definio clssica de Engenharia. Por ser imaterial, um programa
de computador no passa por um processo de manufatura como se conhece no meio
industrial de produtos complexos. Fica claro tambm que, apesar da semelhana com
a engenharia tradicional, a produo de programas de computador possui situaes
particulares.
A IEEE Computer Society (2004) define Engenharia de Software como: A aplicao
de uma abordagem sistemtica, disciplinada e quantificvel de desenvolvimento,
operao e manuteno do software, alm do estudo dessas abordagens."
Fica claro, ento, que o objetivo da Engenharia de Software a entrega de produto
de qualidade, respeitados os prazos e os limites de dispndio de recursos humanos e
financeiros.

Assimile
Por se tratar de assunto amplamente abordado na literatura, a Engenharia
de Software acumulou vrias definies durante seus anos de existncia
como disciplina. Vale a pena conhecer mais uma:
Engenharia de Software a profisso dedicada a projetar, implementar
e modificar software, de forma que ele seja de alta qualidade, a um custo
razovel, manutenvel e rpido de construir (LAPLANTE, 2007, p. 39).
Como toda disciplina, a nossa tambm apresenta aspectos que a norteiam,
comumente referenciados como princpios ou paradigmas. Vale a meno de alguns
deles:
Abstrao: para resolver um problema, deve-se separar os aspectos que esto
ligados a uma realidade particular, visando represent-lo em forma simplificada e geral.
Formalidade: significa seguir uma abordagem rigorosa e metdica para resolver
um problema.

10

Fundamentos de Engenharia de Software

U1
Dividir para conquistar: resolver um problema complexo dividindo-o em um
conjunto de problemas menores e independentes que so mais fceis de serem
compreendidos e resolvidos.
Organizao hierrquica: organizar os componentes de uma soluo em
uma estrutura hierrquica tipo rvore. Assim, a estrutura pode ser compreendida e
construda nvel por nvel, cada novo nvel com mais detalhes.
Ocultao: esconder as informaes no essenciais. Permitir que o mdulo "veja"
apenas a informao necessria quele mdulo.
Localizao: colocar juntos os itens relacionados logicamente (o usurio no
pensa como o analista!).
Integridade conceitual: seguir uma filosofia e arquitetura de projeto coerentes.
Completeza: Checar para garantir que nada foi omitido.
Agora que voc j teve contato com os pilares da Engenharia de Software, vale a
pena focar naquele que seu produto final. Conhea algumas das principais categorias
de software, classificadas segundo sua aplicao:
Software bsico: apoio a outros programas. Forte interao com o hardware.
Exemplos: compiladores, device drivers, componentes de sistema operacional.
Software em tempo real: trata-se de um tipo de software que monitora eventos
por meio de coleta e anlise de dados, tais como temperatura, presso, vazo, entre
outros. Usa-se a expresso tempo real por conta da resposta imediata (um segundo
ou menos) que o software deve fornecer.
Software comercial: caracteriza-se pela manipulao de grande volume de dados
e uso em aplicaes comerciais. Exemplos: folha de pagamento, estoque, recursos
humanos. Forte interao com banco de dados.
Software cientfico: algoritmos de processamento numrico. Usados na
astronomia, mecnica e projeto auxiliado por computador.
Software de computador pessoal: forte interao com o ser humano. Deve ser
fcil e amigvel. Exemplos: Planilhas, editores de texto, browsers, entre outros.

Assimile
A maioria dos programas com os quais temos contato so de computador
pessoal. Nesta categoria de programas podemos destacar ainda o
software on-line, que necessita de conexo com a internet para funcionar.

11

Fundamentos de Engenharia de Software

U1
Ele normalmente executado em um computador distante fisicamente
do usurio, mas usa a mquina local para apresentao das entradas e
sadas de dados.

Em algum momento da sua vida profissional voc estar envolvido com o


desenvolvimento de um ou mais destes tipos de programas de computador. Alis,
desenvolver software uma atividade que tem deixado de ser artesanal e emprica
para se tornar sistemtica e organizada. No entanto, logo em seus primeiros anos, a
produo de software enfrentou tempos turbulentos, nos quais a chance de insucesso
nos projetos era grande.
Na dcada de 1960, alguns atores do processo de desenvolvimento de software
cunharam a expresso Crise do Software na inteno de evidenciar o momento
adverso que a atividade atravessava. Em seu sentido literal, crise indica estado de
incerteza ou declnio e, de fato, esse era o retrato de um setor inapto a atender demanda
crescente por produo de software, que entregava programas que no funcionavam
corretamente, construdos por meio de processos falhos e que no podiam passar
por manuteno facilmente. Alm disso, a incerteza causada pela impreciso nas
estimativas de custo e prazo afetava a confiana das equipes e principalmente dos
seus clientes.
A precria e muitas vezes ignorada comunicao entre cliente e equipe de
desenvolvimento contribua para que a qualidade do levantamento dos requisitos
fosse perigosamente baixa, acarretando consequente incorrees no produto final.
O cenrio era agravado pela inexistncia de mtricas que retornassem avaliaes
seguras fossem qualitativas ou quantitativas dos subprodutos gerados nas fases
de requisitos, projeto, implementao e testes. Em sees seguintes trataremos em
detalhes dessas fases.
No havia, ainda, dados histricos de outros projetos que ajudassem nas estimativas
para os projetos atuais e na adequada avaliao da eficcia da aplicao de uma ou
outra metodologia no desenvolvimento.
Quando, apesar das adversidades, o programa era entregue, o processo de
implantao tendia a ser turbulento, j que raramente eram considerados os
impactos que o novo sistema causaria na organizao. Treinamentos aos usurios
aps a implantao no era atividade prioritria e o fator humano era ignorado com
frequncia, gerando insatisfaes nos funcionrios impactados.
Por fim, h que se considerar a dificuldade e o alto valor em se empreender
manuteno nos produtos em funcionamento, normalmente ocasionados por
projetos mal elaborados.

12

Fundamentos de Engenharia de Software

U1
Estava claro que algo deveria ser feito. Aes que aprimorassem e dessem
segurana ao processo de desenvolvimento deveriam ser tomadas. Sob pena de
verem seu negcio naufragar, empreendedores de TI deveriam a todo custo entrar
em sintonia com seus clientes, trazendo-os para dentro do processo e dando voz ativa
a eles. Na Unidade 2 tais aes sero abordadas em detalhes.

Reflita
Em 2002, uma empresa global de pesquisa em Tecnologia da Informao
chamada Cutter Consortium, constatou que 78% das empresas de TI
pesquisadas fizeram parte de aes judiciais motivadas por desavenas
relacionadas a seus produtos. Na maioria desses casos (67%), os clientes
reclamavam que as funcionalidades entregues no correspondiam suas
demandas. Em outros tantos casos, a alegao era que a data prometida
para entrega havia sido por vrias vezes desrespeitada e, por fim, em
menor quantidade, a reclamao se originava do fato de o sistema ser to
ruim que simplesmente se podia utiliz-lo.
Estarrecedor, no acha?

Pesquise mais
O texto Uma breve histria da Engenharia de Software foi publicado pelo
renomado professor suo Niklaus Wirth, em 2007. O texto original est
disponvel em:
<http://www.helwan.edu.eg/university/staff/Dr.WaleedYousef.../
DownLoads/SoftwareEngineeringI/Wirth2008BriefHistorySWE.pdf>.
Acesso em: 27 set. 2015.

Exemplificando
Certa equipe de desenvolvimento construiu um processador de texto. Ao
planejar o menu da ferramenta, a funcionalidade de classificao por ordem
alfabtica acabou ficando no menu "Layout de pgina". Tempo depois, a
mesma equipe foi chamada a construir um sistema acadmico. Para a
fase de anlise, a equipe escolheu a metodologia da Anlise Estruturada e,
para o projeto, a metodologia de Projeto Orientado a Objeto.

13

Fundamentos de Engenharia de Software

U1
A Engenharia de Software norteia-se por princpios que devem ser
respeitados para que sua prtica leve ao cumprimento de seus objetivos.
No caso apresentado, dois destes princpios foram ignorados pela equipe
de Joo.
Ao pensar no menu, a equipe no considerou que a localizao dos
elementos no programa final de suma importncia para que o usurio o
utilize com desenvoltura. Quando um menu de programa identificado
como Layout de pgina, no se espera que a funcionalidade de
classificao por ordem alfabtica l esteja localizada.
No segundo projeto, a equipe simplesmente ignorou que projeto deve
respeitar o princpio da integridade conceitual, ao no considerar a adoo
de uma metodologia do incio ao fim do desenvolvimento.

Faa voc mesmo


A fim de prepar-lo para as prximas sees deste material didtico, um
breve exerccio proposto: se voc recebesse a misso de construir
o sistema de controle acadmico da faculdade recm-aberta por um
conhecido seu, por onde voc comearia o desenvolvimento? Qual seria
o seu primeiro passo? Responda em no mximo cinco linhas de texto.

SEM MEDO DE ERRAR


Todos na X-Soft concordam que o momento apropriado para a implantao
de novos procedimentos. Nunca antes haviam se preocupado com a formalizao
de seus procedimentos, nem com a documentao relativa a eles. Nem sequer
um treinamento fora disponibilizado equipe at ento. Objetivamente, o cenrio
descrito demanda quebra de paradigmas, com o consequente aumento do esforo
empreendido que toda mudana acarreta.
No entanto, as coisas podem comear a ser mudadas por meio do levantamento
da situao atual. Este levantamento deve responder s seguintes questes:
Como as funes do sistema a ser desenvolvido so descobertas? Como so
coletadas? Quem as informa?
O que a equipe faz depois que entende o que deve ser feito? Inicia imediatamente
a programao?

14

Fundamentos de Engenharia de Software

U1
Durante o desenvolvimento do programa, o cliente novamente chamado em
caso de dvida da equipe?
Com o sistema pronto, a equipe simplesmente o disponibiliza ao cliente?
Treinamentos so previstos?
No lhe parece, caro aluno, que estamos diante de uma situao em que os
projetos so desenvolvidos unicamente ao sabor da experincia da equipe? Caso
um membro da equipe deixe a empresa, seu substituto ser capaz de continuar seu
trabalho da forma como era feito?
Pois , a situao demanda providncias e voc chamado a tom-las.
O levantamento dos procedimentos de desenvolvimento atuais adotados na X-Soft
apontou que:
1. Quando a equipe de desenvolvimento recebe um novo projeto, um de seus
membros normalmente o que se encontra com carga de trabalho menor no
momento destacado para visitar o cliente e reunir-se com ele. Durante a reunio,
todos os requisitos do sistema so discutidos e anotados. Em suma, a nica fonte dos
requisitos o cliente e a coleta se faz pela anotao em uma folha de papel.
2. Uma vez coletados os requisitos, o membro da equipe que o fez os repassa a
dois ou mais colegas para que sejam imediatamente traduzidos em uma linguagem de
programao. A quantidade de profissionais que cuidaro do projeto e as tecnologias
a serem utilizadas so determinadas por um dos scios da X-Soft.
3. Caso ocorram dvidas durante o desenvolvimento da soluo, uma ligao ou
alguns e-mails enviados ao cliente serviro como meios para san-las. Caso o cliente
no seja encontrado ou no seja capaz de resolver o questionamento da equipe, o
caso decidido pelo programador mesmo. H consenso na equipe que, embora
o cliente no tenha solicitado determinadas funes, elas sero desenvolvidas por
precauo e para o caso de serem solicitadas no futuro.
4. Terminado o desenvolvimento, agenda-se a implantao do sistema e a equipe
aguarda novos contatos do cliente.

Ateno!
Nosso objetivo, no momento, iniciar a colocao da nossa empresa no
caminho da criao de produtos de qualidade e que estejam perfeitamente
adequados ao seu propsito. No nos cabe, por ora, fornecer a soluo
completa para o caso, pois isso demandaria outros conhecimentos que
ainda no temos.

15

Fundamentos de Engenharia de Software

U1

Lembre-se
A criao de contedos compartilhados tem crescido nas empresas.
Ferramentas do pacote Office e do Google possuem funcionalidades que
permitem a criao de wiki corporativa. Para saber mais, acesse http://
www.sabesim.com.br/o-que-e-um-wiki-corporativo/

Avanando na prtica
Pratique mais
Instruo
Desafiamos voc a praticar o que aprendeu transferindo seus conhecimentos para novas situaes
que pode encontrar no ambiente de trabalho. Realize as atividades e depois compare-as com a de
seus colegas.
Nova metodologia para colaboradores experientes

16

1. Competncia Geral

Conhecer os fundamentos da Engenharia de Software e sua


importncia no processo de desenvolvimento de sistemas.

2. Objetivos de aprendizagem

Transferncia dos conceitos aprendidos para situao


problema semelhante.

3. Contedos relacionados

Introduo de nova metodologia de desenvolvimento,


problemas de comunicao, fundamentos da Engenharia de
Software.

4. Descrio da SP

Uma outra empresa de desenvolvimento de software, em


situao semelhante que temos descrito, tambm decide
transformar sua metodologia de trabalho. Logo aps ser
iniciado o processo de mudana, os gestores percebem
resistncia novidade, imposta justamente pelos colaboradores
mais experientes e com carreira mais longa, perfil mais comum
entre os membros das equipes. Apesar de obrig-los a adotar
os novos procedimentos, os gestores tm conseguido obter os
resultados desejados de seus colaboradores.

5. Resoluo da SP

Esta situao bastante comum. A atitude menos


aconselhada obrigar a adoo do procedimento sem que
sejam demonstradas as reais vantagens que todos tero com
ele. Cabe aos gestores investir tempo em esclarecimentos
e simulaes de como a nova metodologia ir permitir
diminuio do retrabalho, padronizao das tarefas a
consequente reduo de problemas aps a entrega. A soluo,
neste caso, no pode deixar de passar pela conscientizao
dos envolvidos e, se for o caso, pela implantao gradual do
novo processo.

Fundamentos de Engenharia de Software

U1

Lembre-se
A boa comunicao no ambiente de trabalho fundamental para a
assimilao de um novo procedimento ou de novas maneiras de agir.
Quer saber mais? Sugiro a leitura de um texto curto e objetivo que pode
ser consultado em: http://www.vert.com.br/blog-vert/a-importancia-deter-uma-boa-comunicacao-com-a-sua-equipe/.

Faa voc mesmo


Embora profissionais mais experientes possam ser propensos a oferecer
resistncia algumas novidades, ainda assim voc poder encontrar
entre eles colaboradores vivamente interessados no sucesso da nova
metodologia. No entanto, por receio de represlias dos colegas, essas
pessoas acabam no manifestando sua motivao. Na condio de
gestor do empreendimento, elabore um plano em poucas linhas que lhe
permitir identificar esses profissionais e, por meio deles, disseminar os
novos procedimentos.

Faa valer a pena!


1. De acordo com os conceitos apresentados, pode ser classificado
como objetivo da Engenharia de Software:
a) Melhoria da comunicao entre a equipe de desenvolvimento.
b) Cumprimento de prazos.
c) Entrega de software adequado ao seu propsito, respeitados prazo e
oramento estabelecidos.
d) Aprimoramento dos conhecimentos da equipe em programao de
computadores.
e) Unio da equipe de desenvolvimento.
2. So situaes tpicas da chamada Crise do Software:
a) Entregas pontuais e clientes satisfeitos.
b) Mtricas no confiveis e histrico de projetos anteriores disponveis.

17

Fundamentos de Engenharia de Software

U1
c) Limites oramentrios respeitados e treinamento adequado aos
usurios.
d) Projetos mal elaborados e gerao de produtos de difcil manuteno.
e) A crise do software nunca existiu.

3. Assinale a alternativa que contm os tipos de software que completam


corretamente as lacunas nas frases abaixo.
i) __________ monitora eventos do mundo real.
ii) __________ manipula grandes quantidades de dados e tem alto nvel
de comunicao com sistemas de banco de dados.
iii) ___________deve ter interface amigvel e interativa.
a) software em tempo real, software comercial, software de computador
pessoal
b) software em tempo real, software em tempo real, software cientfico.
c) software cientfico, software bsico, software de computador pessoal.
d) software bsico, software de computador pessoal, software de
computador pessoal.
e) software bsico, software em tempo real e software cientfico.

18

Fundamentos de Engenharia de Software

U1

Seo 1.2
Fundamentos dos processos de desenvolvimento
de software: conceitos, mtodos, ferramentas,
procedimentos e principais atividades. Introduo
ao ciclo de vida do software
Dilogo aberto
Seja bem-vindo de volta! Nesta segunda seo, retomaremos situao abordada
na seo anterior.
Com o crescimento da X-Soft, a conduo sistemtica e correta de um processo
de desenvolvimento dever ganhar importncia destacada na empresa. No cenrio
atual, h risco de perda de controle dos projetos por conta da desorganizao na
aplicao dos procedimentos vigentes. Ns sabemos que esses procedimentos
eram minimamente adequados para a realidade da empresa no incio das suas
atividades, quando os projetos eram simples e demandavam pouco esforo da
equipe. Uma metodologia formal de desenvolvimento dever ser escolhida para fins
de sistematizao dos procedimentos de desenvolvimento de software. Ser nossa
misso dar bons motivos para que os envolvidos nos projetos a adotem e os dirigentes
a comuniquem aos colaboradores.
Feito o levantamento dos procedimentos adotados atualmente na X-Soft, hora
de voc propor solues para melhoria do processo de desenvolvimento praticado na
empresa, utilizando os conhecimentos adquiridos nesta seo.
Esta nova parte do nosso material pretende oferecer solues viveis para
situaes em que o desenvolvimento do sistema passa por dificuldades e incertezas,
bem destacadas em nosso estudo sobre a crise do software. Sem procedimentos
formais, alguns erros comuns podero ser cometidos mais do que uma vez durante
o desenvolvimento, a necessidade de retrabalho estar sempre presente, as aes de
preveno de erros dificilmente sero implantadas e, mais importante, o cliente no
estar satisfeito com o produto entregue.
Para que a proposta desta seo seja contemplada, voc dever dominar os
conceitos de processo de desenvolvimento de software e conhecer seu ciclo de vida
tradicional. Da mesma forma, na X-Soft esta necessidade tambm se faz presente.
Trataremos de explorar os conceitos de processo, fases, atividades, recursos e tudo o
que se insere no contexto das boas prticas de desenvolvimento.

19

Fundamentos de Engenharia de Software

U1
Nosso desafio agora estruturar as novas prticas, cuidando para que a equipe
toda se sinta motivada a adot-las e a cuidar da sua manuteno e evoluo. Os
desenvolvedores j se acostumaram no formalidade dos seus meios e neles confiam,
j que, bem ou mal, tm funcionado at o momento. Este cenrio impe necessidade
de planejamento, mtodo e comunicao eficiente sobre a nova metodologia. O
estudo do ciclo de vida de um software e de seu processo de desenvolvimento
ponto de partida para a inflexo que a empresa precisa. O que um processo de
software? Como implant-lo de forma eficiente? Vamos adiante!

No pode faltar
Conforme j mencionamos, o desenvolvimento de um software pode ser
considerado como um processo e no um conjunto de aes isoladas. A previsibilidade
e a economia de recursos propiciada por um processo bem estruturado conferem
segurana ao desenvolvimento. Ao resumirmos e agruparmos os muitos conceitos que
a literatura disponibiliza, teremos que, no mbito da Engenharia de Software, processo
a sequncia de passos que visam a produo e manuteno de um software e
que se inter-relacionam com recursos (humanos e materiais), com padres, com
entradas e sadas e com a prpria estrutura da organizao.
Este conceito pode ser estendido a outros ramos da atividade humana, como a
fabricao de um bem de consumo. A figura 1.1 mostra o processo de montagem de
um automvel.
Figura 1.1 - Processo de montagem de um automvel

Fonte: https://pixabay.com/pt/f%C3%A1brica-carro-motor-montagem-35104/. Acesso em: 28 out. 2015.

20

Fundamentos de Engenharia de Software

U1
O termo projeto, comumente utilizado neste mbito, precisa ser diferenciado de
processo. De acordo com o Guia do Conhecimento em Gerenciamento de Projetos
(PMBOK, 2013), Projeto um conjunto de atividades temporrias, realizado em grupo,
destinado a produzir um produto, servio ou resultado nicos. Ensina Wazlawick
(2013), que processo o conjunto de regras que definem como um projeto deve
ser executado. Um processo adotado pela organizao para que seja praticado e
aperfeioado pelos seus colaboradores durante o desenvolvimento de um projeto.
Ainda de acordo Wazlawick (2013), h vantagens em se definir o desenvolvimento
de software como um processo. O autor apresenta trs delas:
a) Reduo no tempo de treinamento, j que funes e procedimentos bem
definidos e documentados facilitam a incluso de novo membro na equipe de trabalho.
b) Produo de artefatos mais uniformizados, j que a previsibilidade do processo
ajuda a equipe a trabalhar de forma mais padronizada.
c) Transformao de experincias em valor, j que a sistemtica utilizao do
procedimento poder aperfeio-lo com o tempo.
Os processos podem conter divises em sua estrutura. Para iniciarmos efetivamente
o estudo do processo de software, convm analisarmos algumas delas.
FASES: um conjunto de atividades afins e com objetivos bem definidos so
realizados em uma fase do processo. O modelo cascata de desenvolvimento, por
exemplo, apresenta fases bem definidas, quais sejam a fase dos requisitos, a fase do
projeto, da programao e assim por diante (WAZLAWICK, 2013).
ATIVIDADES OU TAREFAS: comumente descritas com conceitos semelhantes, uma
atividade ou uma tarefa constitui um projeto em pequena escala. Ela visa promover
modificaes nos artefatos do processo, que podem ser descritos como diagramas,
documentos, programas e tudo o que puder ser desenvolvido no processo. As
atividades devem possuir entradas, sadas, responsveis, participantes e recursos bem
definidos (WAZLAWICK, 2013).
Em suas regras processuais, a organizao pode determinar que seja adotado um
documento que descreva a atividade. Por meio dele, a equipe tomar conhecimento
da tarefa, seus responsveis, objetivos, recursos a serem utilizados e tudo o que a
caracteriza por completo.
Sabemos at o momento que um processo um conjunto disciplinado e articulado
de tarefas, que serve para sistematizar o desenvolvimento de software. Este tipo de
processo genrico, sendo definido e aplicado pela organizao, o que o torna, de
certo modo, sua filosofia de trabalho.
H, no entanto, certos modelos de processos ditos prescritivos, que contm
descries de como as atividades so realizadas. O modelo Cascata, tambm
conhecido como modelo tradicional, o mais conhecido e ainda bastante utilizado
para desenvolvimento de produtos de software. Ele descreve, por meio de etapas bem
definidas, o ciclo que o software cumprir durante o perodo compreendido entre sua
concepo e sua descontinuidade.

21

Fundamentos de Engenharia de Software

U1
O ciclo de vida natural de um software, de acordo com Rezende (2005), abrange as
seguintes fases: concepo, construo, implantao, implementaes, maturidade,
declnio, manuteno e descontinuidade. Estas fases so mais comumente descritas
como fase de requisitos, projeto, implementao, teste e manuteno. A figura 1.2
mostra esquema geral das fases do Modelo Cascata.
Figura 1.2 - Representao das fases do Modelo Cascata

Fonte: O autor (2013).

Note que uma fase do processo depende do resultado ou do produto gerado


pela fase anterior. As setas de retroalimentao, dispostas no sentido contrrio
cascata, indicam a possibilidade de retornos s fases anteriores, considerando nelas
a ocorrncia de falhas. Em outras palavras, o retrocesso a uma fase anterior serve,
em tese, para sanar problemas que, se levados adiante, acarretariam mais prejuzo ao
desenvolvimento.

Assimile
Um ciclo de desenvolvimento de sistemas mais detalhado apresentado
por Rezende (2005), como segue:
Estudo de viabilidade, anlise de sistemas, projeto, implementao, gerao
de teste de aceite, garantia de qualidade, descrio de procedimentos,
converso de bases de dados e instalao.

22

Fundamentos de Engenharia de Software

U1
Para que a proposta de ensino dessa seo seja contemplada, descreveremos
sinteticamente cada uma das fases que, nas aulas seguintes, sero mais bem detalhadas.

Requisitos
A fase de requisitos de software preocupa-se com a descoberta, anlise,
especificao e validao das propriedades que devem ser apresentadas para resolver
tarefas relacionadas ao software que ser desenvolvido. Requisitos so as condies
necessrias para que um determinado evento acontea. Tome como exemplo uma
aula presencial de Engenharia de Software. Para que ela acontea, necessrio
professor, alunos, lousa, giz, carteiras. Todos estes itens formam o conjunto de
requisitos da aula. No desenvolvimento de software acontece o mesmo. Fazem parte
dos requisitos de um software suas funes, suas caractersticas, restries e todas as
demais condies para que ele exista e cumpra seu objetivo.
O projeto de um software fica vulnervel quando o levantamento dos requisitos
executado de forma no apropriada. Os requisitos expressam as necessidades e
restries colocadas num produto de software que contribuem para a soluo de
algum problema do mundo real.

Reflita
Caso uma falha seja cometida na fase de levantamento dos requisitos
do produto, ela dever se propagar nas fases seguintes, de projeto
e implementao. Assim, quanto antes a falha for corrigida, menos
dispendioso seu reparo ser. Schach (2008) assinala que 60% a 70% de
todas as falhas detectadas em grandes projetos acontecem nas fases de
levantamentos de requisitos, anlise ou de projeto. Durante 203 inspees
do software da Jet Propulsion Laboratory para o programa interplanetrio
no tripulado da NASA, em mdia foram detectadas cerca de 1,9 falhas
por pgina de um documento de especificaes, 0,9 falha por pgina de
um projeto, mas apenas 0,3 falha por pgina de cdigo.

Na definio dos requisitos, o profissional envolvido (chamado de especialista em


requisitos, engenheiro de software ou analista de requisitos) tem a oportunidade de
aprimorar a alocao das funes do software, alm de supri-lo com a especificao
de requisitos, documento fundamental no relacionamento cliente/desenvolvedor.

23

Fundamentos de Engenharia de Software

U1

Exemplificando
Um bom exemplo de como aes simples podem evitar grandes
transtornos durante e depois do desenvolvimento de um software pode ser
resumido como segue. Logo aps concluir o levantamento dos requisitos
junto ao cliente e sua posterior anlise e especificao, uma certa empresa
de desenvolvimento iniciava imediatamente a fase de projeto. A certeza de
que tudo que haviam conversado com o cliente havia sido corretamente
compreendido os autorizava a investir pouco tempo no projeto e, sem
demora, comear a fase de programao. Ocorre que, com a sucesso
de retrabalhos em seus projetos, decidiram rever o processo desde o
incio. O que poderia estar errado? Conforme ser abordado em detalhes
na prxima seo, o processo de requisitos inclui tambm a validao do
que foi definido como funcionalidade do sistema, antes que a elaborao
do projeto seja iniciada. Antes de qualquer nova ao, h que se validar
os requisitos, o que significa conferi-los em reunies com as equipes
e, principalmente com o cliente. A partir do momento que a empresa
passou a incluir a conferncia dos requisitos antes de dar o prximo passo
no projeto, a quantidade de retrabalho diminuiu, na mesma proporo em
que a comunicao com o cliente melhorou.

Projeto
Uma vez levantados, analisados, especificados e validados os requisitos, o processo
dever nos levar ao desenho do produto. Se os requisitos nos mostram o que o
sistema dever fazer, o projeto dever refletir como ele o far. Por meio do projeto,
os requisitos so refinados de modo a se tornarem aptos a serem transformados
em programa. O trabalho principal de um projetista o de decompor o produto em
mdulos, que podem ser conceituados como blocos de cdigo que se comunicam
com outros blocos por meio de interfaces.
Implementao
Nesta fase, o projeto transformado em linguagem de programao para que,
de fato, o produto passe a ser executvel. Para que se possa avaliar se os requisitos
foram corretamente traduzidos, a equipe pode optar por construir prottipo do
sistema, ou seja, uma verso com funcionalidades apenas de tela para proporcionar
entendimento e validao das entradas e sadas do software. Como estratgia de
implementao, a equipe poder dividir o trabalho de forma que cada programador (ou
um pequeno grupo deles) fique responsvel por um mdulo do sistema. Idealmente, a
documentao gerada pela fase de projeto deve servir como principal embasamento

24

Fundamentos de Engenharia de Software

U1
para a codificao, o que no afasta a necessidade de novas consultas ao cliente e
equipe de projetistas.
Testes
Testar significa executar um programa com o objetivo de revelar a presena de
defeitos. Caso esse objetivo no possa ser cumprido, considera-se o aumento da
confiana sobre o programa. O processo de teste deve incluir seu planejamento,
projeto de casos de teste, execuo do programa com os casos de teste e anlise de
resultados. As tcnicas Funcional e Estrutural so duas das mais utilizadas tcnicas de
se testar um software. A primeira baseia-se na especificao do software para derivar
os requisitos de teste e a segunda baseia-se no conhecimento da estrutura interna
(implementao) do programa
Manuteno
Os esforos de desenvolvimento de um software resultam na entrega de um
produto que satisfaz os requisitos do usurio. Espera-se, contudo, que o software
sofra alteraes e evolua. Uma vez em operao, defeitos so descobertos, ambientes
operacionais mudam, e novos requisitos dos usurios vm tona. A manuteno
parte integrante do ciclo de vida do software e deve receber o mesmo grau de
ateno que outras fases. A manuteno de software definida como modificaes
em um produto de software aps a entrega ao cliente a fim de corrigir falhas, melhorar
o desempenho ou adaptar o produto a um ambiente diferente daquele em que o
sistema foi construdo.

Pesquise mais
Voc pode encontrar mais sobre requisitos de software no texto contido
em http://www.bfpug.com.br/islig-rio/Downloads/Ger%C3%AAncia%20
de%20Requisitos-o%20Principal%20Problema%20dos%20Projetos%20
de%20SW.pdf (Acesso em: 12 nov. 2015). Ele destaca a importncia do
processo de requisito na qualidade do produto de software.

Faa voc mesmo


Na seo 1.1 foi solicitado que voc descrevesse seu primeiro passo caso
recebesse a misso de construir o sistema acadmico da faculdade de
seu amigo. No contexto em que se apresentava o exerccio, voc tinha
pouco conhecimento de processo de software e do ciclo de vida de um
produto.

25

Fundamentos de Engenharia de Software

U1
O desafio agora que voc refaa aquele exerccio, colocando em
prtica o que voc j conhece da teoria necessria para iniciar o
desenvolvimento de um sistema. Mos obra!

SEM MEDO DE ERRAR


Com o levantamento da atual situao em mos, a X-Soft precisa agora definir
procedimento padronizado e universal para construo de seus produtos. A fase
do desenvolvimento artesanal e baseado apenas na experincia acumulada de sua
equipe deve ficar para trs. Os gestores definiram que qualquer novo procedimento
deve ser implantado gradualmente e a necessidade de evoluo do processo deve
ser considerada, a fim de terem, depois de um ano, um processo sedimentado,
amplamente praticado e em constante evoluo.
Como podemos, ento, iniciar a implantao de um procedimento uniforme?
A primeira providncia definir que as novas prticas devem ser agrupadas e
registradas em documento prprio. Este documento conter as seguintes grandes
sees:
1. Introduo e objetivo: aqui ser descrito o objetivo do documento, que
justamente a definio do procedimento padro da empresa. Dever ficar evidente
que o processo prescritivo a ser adotado o modelo tradicional de desenvolvimento.
2. Definio dos papis: nessa seo cada funo da equipe ser descrita. As
caractersticas pessoais de cada membro da equipe devem ser levadas em conta no
momento de definir reas de atuao. Quem j tinha facilidade em se relacionar com o
cliente dever ser destacado para a fase de requisitos; o programador experiente dever
continuar a ser lder na fase de implementao e assim por diante. Sero considerados
como funes da equipe: engenheiro de requisitos, projetista e desenvolvedor. Este
ltimo dever tambm ser destacado nas atividades de teste e manuteno.
3. Definio detalhada do processo de desenvolvimento: por fim, nessa seo
sero definidos os caminhos para a produo de software de qualidade. O processo
dever prever que:
3.1. Definida a viabilidade de se assumir o trabalho, a criao do produto dever
ser iniciada pela fase de levantamento e tratamento dos requisitos. Um profissional
previamente destacado dever visitar o cliente e, por meio de reunies presenciais,
coletar todas as suas necessidades em relao ao programa. Os requisitos ento sero
consolidados em documento e revisados pela equipe.
3.2. Levantados os requisitos, um projeto modular do sistema dever ser

26

Fundamentos de Engenharia de Software

U1
criado. Os grandes mdulos e suas interfaces devero ser definidas e um desenho do
produto dever ser gerado,
3.3. Dependendo da complexidade e da extenso do produto, os mdulos
definidos na fase de projeto so distribudos para um ou mais desenvolvedores para
traduo em linguagem de programao.
3.4. Terminado a implementao do mdulo, os desenvolvedores envolvidos
devero delegar aos colegas a tarefa de testar suas funes, com base nos requisitos
revisados. Terminados estes testes, o sistema integrado e o teste geral aplicado.
Havendo necessidade, os desenvolvedores daro suporte manuteno ao sistema.
Em todas as fases do processo, prazo e recursos necessrios devero ser
explicitados.

Sintetizar o novo processo de desenvolvimento em documento a


melhor providncia a se tomar. Ele servir, inclusive, de referncia para
novos colaboradores e como fonte de consulta em caso de dvida sobre
os procedimentos.

Lembre-se
A especificao dos requisitos se d pela criao de documento que
os contm e define. Um exemplo de documento de especificao de
requisitos pode ser encontrado em: www.cin.ufpe.br/~rpgl/smartclinic/
documentoRequisitos.doc. Acesso em: 12 nov. 2015.

Avanando na prtica
Pratique mais
Instruo
Desafiamos voc a praticar o que aprendeu transferindo seus conhecimentos para novas situaes
que pode encontrar no ambiente de trabalho. Realize as atividades e depois compare-as com a de
seus colegas.
Adquirindo a You-Soft
1. Competncia Geral

27

Fundamentos de Engenharia de Software

Conhecer o ciclo de vida de um produto de software e o


processo que o embasa.

U1
2. Objetivos de aprendizagem

Transferncia dos conceitos aprendidos para situao


problema semelhante apresentada no incio da seo

3. Contedos relacionados

Processo de desenvolvimento de software e seu ciclo de vida.

4. Descrio da SP

Como parte do seu projeto de expanso, a X-Soft acaba de


adquirir a You-Soft, startup que desenvolve exclusivamente um
Sistema de Gerenciamento de Contedo (do ingls Content
Management System CMS). A X-Soft pretende manter a YouSoft como empresa autnoma, preservando seus funcionrios
e os processos de aperfeioamento, implantao e manuteno
de seu produto. No entanto, em rpido levantamento, os
gestores da X-Soft notaram que as funes dos envolvidos
na operao da ferramenta nos clientes da You-Soft no
estavam sendo orientadas da melhor maneira. Ao assumir
que a ferramenta dispensaria a contratao de profissionais de
internet para oper-la, os clientes que adquiriam o CMS da YouSoft viam-se frustrados com a baixo retorno que o produto lhes
proporcionava.
Com base nas caractersticas prprias de um CMS, como voc
ajudaria os clientes da You-Soft a definirem os papis dos
profissionais envolvidos com a operao da ferramenta?

5. Resoluo da SP

Por falta de orientao dos seus desenvolvedores, os clientes


que adquiriram o CMS da You-Soft no estruturaram equipe
para operacionalizao da ferramenta. Trata-se de caso
tpico de falha no processo de implementao de software
no cliente, provavelmente reflexo de falha de definio do
processo de desenvolvimento.
A despeito da necessidade de reestruturao do processo
da X-Soft, a consequncia desta situao no cliente pode
ser sanada pela contratao de profissionais que cuidaro
da evoluo da ferramenta, da criao de contedos para
a internet e da aprovao desses contedos antes da sua
divulgao. Sem essa estrutura, a ferramenta deixar de
atingir seus objetivos, j que no h CMS que no requeira
responsvel pela criao e fornecimento de contedo.

Lembre-se
As ferramentas de CMS tm sido amplamente utilizadas por
empresas que desejam controlar autonomamente os contedos que
publicam na internet. Saiba mais em http://computerworld.com.br/
gestao/2008/03/05/superguia-infoworld-avalia-sistemas-de-gestao-deconteudo (Acesso em: 12 nov. 2015).

Faa voc mesmo


Como forma de aprofundar seu conhecimento sobre o Modelo Cascata,
pesquise a existncia de ao menos uma variao dele resuma-o em, no
mximo, 15 linhas.

28

Fundamentos de Engenharia de Software

U1
Faa valer a pena!
1. O desenvolvimento de um software feito num contexto de processo
organizado apresenta vantagens em relao ao desenvolvimento
informal. Em relao a este tema, analise as afirmaes que seguem:
I) Reduo no tempo de assimilao da metodologia, j que o processo
bem documentado facilita o trabalho de quem ainda no o conhece.
II) Transformao das experincias vividas em valor, j que a sistemtica
utilizao do procedimento poder aperfeio-lo com o tempo.
III) Descoberta de maus profissionais da organizao, j que o processo
padronizado ajuda a destacar programadores sem afinidade com
linguagens de programao.
IV) Produo de artefatos mais uniformizados, j que a previsibilidade do
processo ajuda a equipe a trabalhar de forma mais padronizada.
V) Possibilidade de se aperfeioar o processo, j que ele deve estar em
constante evoluo.
correto o que se afirma apenas em:
a) I, II e IV
b) I, II e III
c) I, II, IV e V
d) II, III e IV
e) II, III, IV e V

2. Analise as afirmaes sobre processos de software:


I. Processo um conjunto de atividades e resultados associados que
geram um produto de software.
II. So componentes de um processo de software as entradas e sadas e
os responsveis pelas tarefas.
III. Um modelo de processo prescritivo no apresenta descrio formal
das atividades, j que se baseiam na prescrio dos gestores do negcio
para funcionarem.
IV. Uma fase corresponde a um perodo no qual determinadas atividades
com objetivos bem especficos so realizadas.

29

Fundamentos de Engenharia de Software

U1
V. Na definio de uma atividade, no h necessidade prvia de se definir
responsveis e participantes, j que eles sero naturalmente escolhidos
pela equipe durante seu andamento.
verdadeiro o que se afirma apenas em:
a) I, II e III
b) I, II e IV
c) I, III e IV
d) III, IV e V
e) III e IV
3. Em relao ao ciclo de vida de um software, assinale a afirmao
verdadeira:
a) Trata-se de um modelo de processo que prev as chances de um
sistema ter sobrevida em perodos de crise durante sua elaborao.
b) Trata-se de um processo que se encerra quando o produto entregue
ao cliente.
c) O ciclo de vida tradicional de um software inclui fase em que os
requisitos levantados so especificados e validados.
d) No ciclo de vida tradicional de um software no se pode retornar
fases j cumpridas, mesmo quando falhas so encontradas em fases
posteriores.
e) O ciclo de vida tradicional no apresenta a linearidade como
caracterstica, j que sua representao nos mostra processo em forma
de cascata.

30

Fundamentos de Engenharia de Software

U1

Seo 1.3
Etapas iniciais do processo de software:
requisitos, projeto de sistema
Dilogo aberto
Para iniciarmos a terceira seo do seu material, vale breve retomada de como a
situao da X-Soft tem evoludo. Ao receber demanda de grande cliente especializado
em venda de games, a empresa viu-se na necessidade de deixar o modo artesanal
de produo de software e buscar aplicao de metodologia formal. Como primeiro
passo, fez levantamento da situao atual e, ato contnuo, esboou processo uniforme
de desenvolvimento.
Ento, na condio de ator do processo, chegou o momento de voc iniciar
trabalho relacionado aos requisitos e de esboar o projeto do software, com base nos
estudos desenvolvidos nesta seo e com base no processo previamente definido.
Na resoluo dessa atividade, esperamos que voc aplique as prticas adequadas
para levantamento dos requisitos e para sua classificao. Ser necessrio tambm
esboar os mdulos que comporo o sistema. Ao final, voc dever gerar documento
de especificao de requisitos devidamente revisado e os mdulos do sistema.
Voc pode observar que sem a competente descoberta, anlise, documentao e
conferncia dos requisitos, a perfeita adequao do produto ao seu propsito ficar
comprometida. Da mesma forma, sem a criao de desenho correto da soluo, a
implementao ser feita com base em dados incorretos.
Pois , estes desafios nos remetem a outro de igual importncia: voc dever
dominar os conceitos de requisitos e de projeto de software, que formam justamente
os objetivos de aprendizagem desta seo. O entendimento terico e a habilidade
prtica para utilizar as diversas formas de levantamento dos requisitos faro toda a
diferena no correto cumprimento de parte da sua tarefa. Da mesma forma, a
capacidade de sintetizar os requisitos em uma soluo de implementao vivel
garantir seu sucesso.
No podemos nos esquecer que o estudo dos contedos desta primeira unidade
tem construdo, passo a passo, sua capacidade de avaliar e adequar a metodologia
tradicional de desenvolvimento s situaes que certamente encontrar em seu
futuro profissional. Seu crescimento neste tema lhe possibilitar, inclusive, comparar
esta metodologia com outras mais atuais, alm de capacit-lo ao entendimento das

31

Fundamentos de Engenharia de Software

U1
normas de qualidade e dos processos de teste de software.
O desafio est novamente lanado. Seja bem-vindo e vamos adiante!

No pode faltar
importante voc observar que a abordagem dos requisitos e a elaborao do
projeto constituem, normalmente, as duas primeiras etapas dos modelos de software
tradicionais. No por acaso, so tidas tambm como as mais crticas no processo.
Roger Pressman, em sua clssica obra Engenharia de Software, destaca que no
importa o quo bem codificado seja, um programa mal analisado e mal projetado
desapontar o usurio e trar aborrecimentos ao desenvolvedor (PRESSMAN, 1995).
Nas prximas pginas caminharemos juntos pelos detalhes das fases de requisitos e
de projeto, de modo a prepar-lo para aplicar seus conhecimentos na soluo dos
problemas da X-Soft.
REQUISITOS DE SOFTWARE
A rea de requisitos de software preocupa-se com o levantamento, anlise,
especificao e validao das propriedades que devem ser apresentadas para resolver
tarefas relacionadas ao software em desenvolvimento. Requisitos so a expresso
mais detalhada sobre aquilo de que o usurio ou cliente precisa em termos de um
produto de software (WAZLAWICK, 2013).
Alm das funcionalidades, eles relacionam-se tambm aos objetivos, restries
e padres do sistema. Em outras palavras, os requisitos de software expressam as
necessidades e restries colocadas num produto de software que contribuem para
a soluo de algum problema do mundo real. So sub etapas da fase de requisitos:
1. Levantamento de Requisitos
Schach (2008) aponta aes que devem nortear o trabalho de levantamento de
requisitos. A primeira determinar o que o cliente precisa, ao invs do que o cliente
quer. No entanto, muito comum que os clientes no saibam do que precisam ou
que tenham dificuldade em express-lo.
necessrio tambm que o grupo destacado conhea o campo de aplicao, ou
seja, a rea geral em que o software ser aplicado. Incluem exemplos de campos de
aplicao o setor bancrio, o comrcio varejista e o setor acadmico, entre tantos
outros.
Por fim, indispensvel que o engenheiro de requisitos conhea as regras (ou
modelo) de negcios do cliente. Trata-se da descrio dos processos que compem
o negcio da organizao.

32

Fundamentos de Engenharia de Software

U1
Tcnicas de levantamento de requisitos
O levantamento de requisitos atividade essencialmente humana, que requer
habilidade em trabalhar com especialistas humanos e com o conhecimento tcito,
que trivial para quem conhece a informao, mas no trivial para quem procura
obt-la.
O documento Guide to the Software Engineering Body of Knowledge (IEEE,
2004) aborda algumas tcnicas que facilitam este trabalho.
Entrevista
Antes da sua aplicao, a entrevista deve ser planejada. Seus objetivos devem ser
fixados, seu local e roteiro definidos e os entrevistados criteriosamente escolhidos.
A interao entre entrevistado (especialista do conhecimento) e entrevistador
(engenheiro de requisitos) deve buscar revelar conceitos, objetos e a organizao
do domnio do problema, alm de buscar solues ou projees de solues que
comporo o domnio da soluo (SCHACH, 2008).

Assimile
As entrevistas mais usuais so as tutoriais, informais e estruturadas. Nas
entrevistas tutoriais, o entrevistado fica no comando, praticamente
lecionando sobre um determinado assunto. Nas entrevistas informais ou
no estruturadas, o entrevistador age espontaneamente, perguntando ao
entrevistado, sem obedecer a nenhuma organizao. J as entrevistas
estruturadas so preparadas pelo entrevistador, que define previamente o
andamento do procedimento de aquisio de conhecimento
Aplicao de questionrio
O questionrio geralmente aplicado em formulrio distribudo para os futuros
usurios do sistema. Seu elaborador deve utilizar questes diretas e objetivas, dispostas
preferencialmente na mesma ordem para todos os participantes e que consigam extrair
do participante respostas sobre o procedimento atual adotado (SCHACH, 2008).

Pesquise mais
Para melhor compreenso da realidade, a utilizao de casos de uso tem
sido frequente como meio de representar a interao entre o software e
o ambiente no qual ele opera ou ir operar. Serve tambm para explicitar a
interao entre o produto de software e seus usurios. Saiba mais em http://
sistemasecia.freehostia.com/component/jccmultilanguagecontent/
article/34-engenhariasoft/73-reqs-casosuso-desenv.html (Aceso em: 12
nov. 2015).

33

Fundamentos de Engenharia de Software

U1
Anlise de documentos, observaes pessoais e reunies estruturadas so outras
trs tcnicas utilizadas na fase de levantamento de requisitos.
2. Anlise de Requisitos
Concluda a fase de levantamento, tem incio a anlise de requisitos. Aqui os requisitos
sero analisados e classificados e, como resultado, sero divididos principalmente
em requisitos funcionais e no funcionais. Os primeiros descrevem as funes que
o software ir executar. Por exemplo, formatar algum texto ou imprimir um relatrio
de vendas. Os requisitos funcionais definem a funcionalidade que o software deve
prover com o objetivo de capacitar os usurios a realizar suas tarefas. Eles descrevem
o comportamento planejado do sistema, podendo ser expressos como os servios,
tarefas ou as funes que o sistema ir executar.
Requisitos no funcionais so aqueles que restringem a soluo de um problema.
No se referem s funes especficas do sistema, mas sim a propriedades tais como
tempo de resposta, requisitos de armazenamento, restries de entrada e sada,
memria, entre outras.
3. Especificao dos requisitos de software
Refere-se a produo de um documento contendo os requisitos levantados
e analisados, que podem ser sistematicamente revistos, avaliados e aprovados. Ele
estabelece um contrato entre cliente e desenvolvedor. Geralmente escrito em
linguagem natural, forma base realista para estimativas de custos, riscos e cronograma.
Uma boa especificao de requisitos de software pode propiciar diversos benefcios
aos clientes e demais envolvidos no projeto, a saber:
i) estabelece a base para a concordncia entre clientes e fornecedores, naquilo que
o software deve produzir;
ii) reduz o esforo para o desenvolvimento. Uma reviso cuidadosa dos requisitos na
ERS pode trazer tona omisses e falhas em fases iniciais no ciclo de desenvolvimento
quando estes problemas so mais fceis de corrigir;
iii) fornece base para estimativa de custos e agendas. A descrio do produto a ser
desenvolvido uma base realista para a estimativa dos custos do projeto e pode ser
usada como referncia de preo do produto e
iv) fornece uma linha de base para validao e verificao. As organizaes podem
desenvolver seus planos de validao e verificao de forma muito mais produtiva a
partir de uma boa ERS (IEEE, 2004).

Assimile
A IEEE padronizou o formato do ERS por meio da norma IEEE 830:1998,
substituda posteriormente pela ISO/IEC/IEEE 29148:2011.

34

Fundamentos de Engenharia de Software

U1
Validao dos requisitos
Como ltima etapa da fase do processo, a validao deve incidir sobre o documento
de especificao.
Validao: "Aquilo que fiz o que deveria ser feito? Aquilo que fiz corresponde aos
requisitos?"
A validao serve para assegurar que o engenheiro compreendeu os requisitos e
se estes so compreensveis, consistentes e completos. No processo de validao a
participao do cliente fundamental. A reviso feita por profissionais designados
para assegurar que no h no documento falta de clareza, sentido dbio e desvio dos
padres.
Uma maneira eficaz de validar os requisitos pela prototipao. Trata-se da criao
de verso simplificada de determinadas funes do sistema, indicada para capturar a real
compreenso do engenheiro em relao aos requisitos levantados. O comportamento
de uma interface de usurio tambm pode ser mais bem compreendida atravs de um
prottipo (IEEE, 2004).
PROJETO DE SOFTWARE
O projeto o primeiro passo da fase de desenvolvimento de qualquer produto ou
sistema de engenharia. Sua meta produzir modelo ou representao do produto a
ser construdo. Para tanto, o projetista deve lanar mo de sua experincia, intuio
e metodologias consagradas. Modelos ou representaes podem ser analisados
quanto a sua qualidade e so base para as etapas de codificao, teste, validao e
manuteno (PRESSMAN, 1995).
Projeto o processo pelo qual os requisitos so traduzidos numa representao
do software.
A avaliao da qualidade de um projeto implica que ele deve exibir uma organizao
hierrquica do software, deve ser modular e que deve haver distino entre dados e
procedimentos.
O nvel de detalhamento deve ser suficiente para permitir sua realizao fsica
e, de acordo com o modelo de processo tradicional, o projeto se inicia depois de
levantados, analisados e especificados os requisitos.
Aspectos fundamentais de projeto
Pressman (1995) destaca os aspectos fundamentais de um projeto de software:
1. Abstrao: soluo modular leva a vrios nveis de abstrao. Abstrair
concentrar-se em certos aspectos relevantes ao ambiente do problema. Cada passo
da Engenharia de Software diminui o nvel de abstrao em direo a soluo do
problema. O nvel mais baixo de abstrao o cdigo-fonte. A abstrao procedimental
refere-se sequncia de instrues com funes especficas.

35

Fundamentos de Engenharia de Software

U1

Exemplificando
Como exemplo, tm-se dois nveis de abstrao procedimental para
programa de esboo de CAD:
Abstrao 1 - O software ter uma interface grfica que possibilitar
acesso a funo de desenhos de linhas retas e curvas. Os desenhos sero
armazenados numa pasta de desenhos.
Abstrao 2 - Tarefas do software CAD:
incio tarefa
interao com o usurio
criao de desenhos
gerenciamento de arquivos de desenho
fim tarefa

2. Abstrao de dados: coleo de dados que descreve um objeto. Exemplo:


contracheque contm o nome do beneficiado, quantia bruta, imposto de renda,
contribuio sindical (conjunto de dados). Assim, referencia-se o conjunto de dados
pelo nome da abstrao (contracheque).
3. Modularidade: diviso do software em componentes chamados mdulos.
Permite a administrao intelectual do software, j que um grande software monoltico
(composto por apenas um mdulo) praticamente incompreensvel. O desafio do
projetista, no entanto, dimensionar a quantidade de mdulos a serem construdos.
Quantitativamente, h que se comparar o esforo em se construir interface para um
mdulo comparado ao benefcio em poder contar com ele.
Qualitativamente, a noo de qualidade passa pelos conceitos de coeso e
acoplamento. De forma simplificada, coeso o grau de interao dentro de um
mdulo e o acoplamento o grau de interao entre dois mdulos.
4. Procedimento de software: focaliza os detalhes de processamento de
cada mdulo da hierarquia. O procedimento oferece especificao precisa do
processamento do mdulo.

Exemplificando
A classificao dos requisitos no se resume apenas na separao entre
funcionais e no funcionais. Requisitos volteis, estveis, de usurio, de

36

Fundamentos de Engenharia de Software

U1
sistema e inversos so outros tipos de classificao. Imagine que voc
tenha recebido a incumbncia de classificar requisitos apresentados da
seguinte maneira:
1. O sistema deve ser capaz de cadastrar um cliente.
2 O sistema no emite nota fiscal.
3. O clculo da taxa de juros varia de acordo com a lei vigente.
Tendo como base os tipos estudados, classificamos o primeiro como
um requisito funcional puro. O segundo se trata de requisito inverso,
justamente aquele que no deve ocorrer no produto. Por ltimo, o clculo
da taxa de juros no deixa de ser um requisito funcional, mas que tambm
deve ser sub classificado como um requisito voltil, pois varia conforme
evento externo.

Faa voc mesmo


Voc faz parte da equipe de engenheiros que cuida dos requisitos de
um sistema acadmico e foi designado para classific-los, logo aps o
levantamento ter sido feito. Com base nos seus conhecimentos sobre o
tema, classifique os requisitos que seguem:
1) apenas o diretor da unidade ter acesso ao mdulo de concesso de
descontos na mensalidade.
2) o sistema poder ser executado tambm pela internet, via navegador
web.
3) no haver excluso de aluno. Ao deixar a instituio, ele receber
status de formado, desistente ou trancado.
4) o sistema atual dever contar com interface para sistema de biblioteca.
5) o usurio autorizado poder emitir relatrio de melhores alunos por
perodo.

37

Fundamentos de Engenharia de Software

U1
SEM MEDO DE ERRAR
Na condio de dirigente da X-Soft, voc sabe que a ateno empreendida nas fases
de requisitos e projeto ser fundamental para a continuidade do trabalho. O cliente
espera que tudo sobre o seu programa de manuteno de clientes seja descoberto e
documentado nesta etapa e frustr-lo no seria boa ideia.
O processo se inicia pela tarefa de descoberta dos requisitos que, uma vez terminada,
possibilitar que voc classifique os requisitos em funcionais e no funcionais. Depois
disso, voc dever criar documento de especificao de requisitos, que dever ser
devidamente revisado.
Tal documento , afinal, um dos objetivos finais desta tarefa. Findada esta fase e,
com base nos requisitos funcionais, voc dever descrever os principais mdulos do
sistema.
O documento de especificao de requisitos poder ter o seguinte contedo:
1. Breve descrio do sistema: o sistema a ser desenvolvido dever possibilitar
a manuteno dos clientes da empresa, viabilizando o agrupamento por rea de
interesse nos games por ela comercializados, o que dever possibilitar contatos mais
assertivos e direcionamentos seguros de campanhas.
2. Requisitos funcionais: (i) em relao aos novos clientes, o sistema dever permitir
o cadastramento, alterao de dados, excluso e consulta aos seus detalhes. (ii) o
sistema dever emitir relatrios das preferncias dos clientes por tipo de games. (iii) o
sistema dever enviar mensagens de e-mails sua base de clientes com lanamentos
e atualizaes de games.
3. Requisitos no funcionais: (i) o sistema dever fazer uso da base de clientes
j mantida pelo sistema de vendas. (ii) o sistema dever ser desenvolvido para a
plataforma web.
4. Consideraes gerais de projeto: (i) fica decidido que, pelo perfil do cliente
e do produto a ser gerado, sero utilizadas as tcnicas de reunies e de aplicao
de questionrios para a descoberta dos requisitos. (ii) o cliente ir indicar seus
representantes para atuarem como fontes de informaes.
Para efeito de esboo do projeto do software, devero ser previstos os mdulos de
manuteno do cliente, emisso de relatrio de preferncias de clientes por tipo de
games e mdulo de envio de mensagens via e-mail.

38

Fundamentos de Engenharia de Software

U1

Exemplificando
Voc poder incluir mais itens em sua especificao, tais como a descrio
do modelo de negcio da empresa, requisitos de hardware do novo
sistema, layouts de tela e descrio das funes em linguagem natural.
O documento encontrado em http://www.fazenda.sp.gov.br/sat/Requis
itosSATv1.pdf (Acesso em: 12 nov. 2015) pode ser boa fonte de consulta.

Ateno!
O documento de especificao de requisitos pode se tornar base para
contrato entre o desenvolvedor e o cliente, o que refora a necessidade
de cuidado em sua elaborao.

Avanando na prtica
Pratique mais
Instruo
Desafiamos voc a praticar o que aprendeu transferindo seus conhecimentos para novas situaes
que pode encontrar no ambiente de trabalho. Realize as atividades e depois compare-as com a de
seus colegas.
Retomando um projeto interrompido

39

1. Competncia Geral

Conhecer as principais metodologias de desenvolvimento


de software, normas de qualidade e processos de teste de
software.

2. Objetivos de aprendizagem

Transferncia dos conceitos aprendidos para situao


semelhante apresentada no incio da seo.

3. Contedos relacionados

Fases de requisitos e de projeto de software. Documento de


especificao de software.

4. Descrio da SP

Conforme apresentado na seo anterior, a X-Soft acaba de


adquirir a You-Soft, empresa que desenvolve ferramenta de
CMS. Terminado o ajuste nas atividades dos operadores da
ferramenta em determinado cliente, os gestores da X-Soft
passaram a fazer levantamento dos projetos da You-Soft que
no tiveram xito e, por isso, foram interrompidos. Concluram
em um desses projetos que o fracasso havia se dado por
falha no processo de descoberta de requisitos, motivada pela
distncia geogrfica da sede do cliente, da incerteza do cliente
sobre os benefcios que a ferramenta poderia lhe trazer e pela
m conduo das poucas reunies que tiveram com o cliente.
Sua misso aqui sugerir meios de sanar esses problemas,
recolocar o projeto em andamento e reconquistar a
credibilidade do cliente.

Fundamentos de Engenharia de Software

U1

5. Resoluo da SP

Uma vez identificadas as causas, a soluo dos problemas


passa pelo ajuste pontual dos itens que levaram interrupo
do projeto. A primeira providncia deve ser a de trazer o
cliente novamente para o trabalho, com o agendamento de
ao menos uma visita presencial e de conferncias regulares via
Skype. A distncia geogrfica entre cliente e fornecedor no
deve mais ser obstculo para bons contatos entre ambos.
comum tambm que o cliente, passada a euforia da compra,
arrume motivos para questionar a validade de t-la feito.
Voc, na condio de gestor da X-Soft, dever demonstrar
que a ferramenta necessria e que trar vantagens em
relao ao processo de atualizao de contedo que o
cliente atualmente adota.
Por fim, a coleta dos requisitos dever ser retomada, com
o uso de questionrios enviados e respondidos por e-mail e
entrevistas com usurio-chave via Skype.

Lembre-se
De forma ideal, o projeto do produto deve ser flexvel, significando que
futuros aperfeioamentos (manuteno ps-entrega) podero ser feitos
acrescentando-se novas classes ou substituindo-se classes existentes, sem
afetar o projeto como um todo. (SCHACH, 2008).

Faa voc mesmo


Faa breve levantamento sobre as causas mais frequentes que levam os
projetos de software a fracassarem, no Brasil ou no mundo.

Faa valer a pena!


1. Em relao especificao de requisitos de software, analise as
afirmaes que seguem:
I) seu formato livre, embora haja padronizao sugerida pela IEEE.
II) pode constituir base para contrato entre cliente e o fornecedor do
software.
III) de elaborao opcional, j que serve de base apenas para a fase de
testes.
IV) pode servir de base para elaborao de cronograma do projeto.

40

Fundamentos de Engenharia de Software

U1
verdadeiro o que se afirma em:
a) I, II e III
b) I, II e IV
c) II e III apenas
d) I e III apenas
e) II, III e IV

2. Sobre projeto de software, analise as afirmaes que seguem:


I) a representao de software gerada na fase de projeto pode ser um
algoritmo escrito em pseudolinguagem.
II) a abstrao procedimental refere-se sequncia de instrues com
funes especficas.
III) a modularidade um conceito que prev diretamente a diviso de
trabalho entre membros da equipe.
IV) o procedimento de software um dos aspectos fundamentais do
projeto e prev a descrio detalhada de cada mdulo.
V) De acordo com o processo tradicional de desenvolvimento, a fase de
projeto vem aps a fase de requisitos.
verdadeiro o que se afirma apenas em:
a) I e II
b) I, II, IV
c) I, II, IV e V
d) II e III
e) III e IV

3. Assinale a alternativa que contm expresses que completam


corretamente as lacunas nas frases abaixo.
I) Entende-se que o _____________ seja a expresso do que o produto
deve fazer.
II) O ___________ expressa como o software poder faz-lo.
III) Um requisito pode expressar tambm uma ____________ do sistema
a ser desenvolvido.

41

Fundamentos de Engenharia de Software

U1
a) projeto, requisito, inverso
b) projeto, atributo, inverso
c) projeto, cdigo, restrio
d) requisito, projeto, indefinio
e) requisito, projeto, restrio

42

Fundamentos de Engenharia de Software

U1

Seo 1.4
As etapas finais do processo de desenvolvimento
de software
Dilogo aberto
Seja bem-vindo quarta aula desta primeira unidade do livro didtico de Engenharia
de Software!
Desde a primeira seo, sua ajuda tem sido decisiva na reestruturao do processo
da X-Soft. Por conta de sua boa interveno, a empresa passou de um cenrio de
desenvolvimento indisciplinado e artesanal para um ambiente de procedimentos
estruturados, papis conhecidos e resultados mais previsveis. Voc sabe que as coisas
ainda podem ser melhoradas, mas o primeiro passo foi dado. Afinal, o primeiro grande
cliente j foi conquistado e, dependendo do sucesso desta empreitada, outros se
seguiro a ele.
O desenvolvimento do software para controle de clientes j passou pelas etapas de
requisitos e projeto. At agora, tudo vai bem. No entanto, o projeto ainda precisa ser
implementado, passar pela integrao dos mdulos e, por fim, ser implantado.
Entretanto, a prova de fogo comea agora: sua misso planejar e gerenciar a
execuo das fases finais do processo, cuidando para que um produto de qualidade
seja entregue ao cliente. Entregue para o seu cliente um relatrio de projeto de software
para cadastro de clientes por interesse, contendo todas as fases desenvolvidas at o
momento.
Para executar estas aes com competncia, voc deve conhecer elementos
bsicos de implementao de software tais como: integrao, as melhores prticas de
implantao e como se faz a manuteno de software.
A tarefa deve ser realizada pela elaborao de um documento que contenha
aspectos principais da implementao, incluindo a definio dos programadores,
escalonamento das atividades, controle de verso do sistema, treinamento dos
usurios, implantao e linhas gerais do processo de manuteno. Vale a sugesto de
que ao relatrio criado na seo anterior sejam acrescidos os itens ora desenvolvidos,
de modo a construir um nico documento.
Mos obra e bom trabalho!

43

Fundamentos de Engenharia de Software

U1
No pode faltar
Conforme temos estudado, o modelo tradicional de desenvolvimento de sistemas
caracteriza-se pelo aproveitamento do resultado da etapa anterior na construo da
etapa seguinte. Por exemplo, por meio do que foi entregue na etapa de projeto que
o pessoal da implementao construir o programa. Esta seo trar a voc contedo
terico necessrio para se sair muito bem em nosso desafio de estruturar a etapa de
implementao do nosso programa de controle de cliente.
Implementao de software
Implementao o processo de converter o projeto detalhado em cdigo. Com
as etapas anteriores de requisitos e projeto bem-sucedidas, a implementao tende a
ser relativamente bem compreendida. Alguns pontos do processo devem ser alvo de
ateno (SCHACH, 2008):
a) Escolha da linguagem de programao: esta deciso passa pela vontade
expressa do cliente, pela experincia da equipe em determinada linguagem e pela
necessidade pontual do projeto. Em todos os casos, a escolha dever ter sido registrada
previamente pela equipe e pelo cliente. Caso o cliente no faa meno da linguagem
a ser usada e o projeto no demande nada especfico, a escolha certamente recair
sobre a linguagem que for de amplo conhecimento da equipe.
b) Prticas de programao adequadas: o estilo usado no desenvolvimento do
software deve obedecer, preferencialmente, a padres consagrados de codificao.

Pesquise mais
Um padro de codificao pode ser entendido como um conjunto de
regras que disciplinam a criao do cdigo. Um padro pode conter
normas para criao de nomes de arquivos, nomes de classes, endentao
e quebras de linha, entre outras.
Em http://www.devmedia.com.br/padroes-de-codificacao/16529 (acesso
em: 2 nov. 2015), voc poder encontrar parte da padronizao para a
linguagem Delphi.

Os nomes das variveis e demais componentes do programa devem ser coerentes


com sua real funo. Recomenda-se que sejam dados nomes universalmente
significativos aos identificadores, ou seja, que faam sentido tanto para o programador
que trabalha naquele projeto como para os que eventualmente lhe daro manuteno
futura.

44

Fundamentos de Engenharia de Software

U1
Tambm esto inclusas nestas boas prticas a documentao do cdigo. Ela deve
ser objetiva, clara e transmitir dados elementares sobre o programa, que incluem
descrio da funo principal (ou do mdulo), programadores envolvidos, interfaces
externas e as ltimas alteraes feitas no cdigo (SCHACH, 2008).
Integrao de software
Integrar o software significa combinar em um todo os mdulos construdos durante
a implementao. A figura 1.3 mostra uma tpica configurao de comunicao entre
mdulos de um programa. Uma possibilidade de efetivar a integrao do produto
codificar e testar cada um dos artefatos (ou mdulo) de cdigo separadamente, unir e
testar o produto como um todo.
Figura 1.3 - Diagrama de interconexes

Fonte: Schach (2008, p. 475).

No entanto, esta abordagem pode apresentar dificuldades em sua execuo.


O mdulo a, por exemplo, no pode ser testado isoladamente, pois possui
relacionamentos com os mdulos b, c e d. Outro problema associado a esta forma de
integrao a falta de isolamento de falhas. Ou seja, caso o produto falhe, esta poderia
estar em qualquer um dos treze mdulos ou em uma das treze interfaces (SCHACH,
2008).

45

Fundamentos de Engenharia de Software

U1
A soluo passa pela adoo de tcnicas estruturadas de integrao, incluindo
Integrao top-down, bottom-up e sanduche. O quadro 1.1 resume os trs tipos de
integrao.
Quadro 1.1 - resumo das tcnicas de integrao
Abordagem

Pontos fortes

Pontos fracos
No tem isolamento de
falhas. Falhas de projetos
importantes so detectadas
muito tardiamente.
Artefatos de cdigo com
potencial
para
serem
reutilizados no so testados
adequadamente

Implementao e, depois, a
integrao

Integrao top-down

Isolamento de falhas.
Falhas
de
projetos
importantes so detectadas
logo no incio.

Artefatos de cdigo com


potencial
para
serem
reutilizados no so testados
adequadamente.

Integrao bottom-up

Isolamento de falhas.
Falhas de projeto imporArtefatos de cdigo com tantes so detectadas muito
potencial para serem reu- tardiamente.
tilizados so testados adequadamente

Integrao sanduche

Isolamento de falhas.
Falhas de projetos importantes so detectadas logo
no incio.
Artefatos de cdigo com
potencial para serem reutilizados so testados adequadamente.

Fonte: Schach (2008, p. 479).

Reflita
A integrao poder ser bastante problemtica no caso de os mdulos
simplesmente no se comunicarem. Um objeto escrito no mdulo a
passa, por exemplo, dois argumentos para um outro objeto escrito no
mdulo b. No entanto, este segundo objeto est preparado para receber
trs argumentos. Neste caso haver falha na integrao. Tal situao
mostra a necessidade de se implantar gerenciamento do processo de
integrao, que deve ser conduzido pelo pessoal de qualidade.

46

Fundamentos de Engenharia de Software

U1
Implantao de software
A implantao a ltima fase de desenvolvimento de um software. Embora deva
sofrer alteraes durante sua vida til, espera-se que o software seja disponibilizado ao
cliente em sua verso final. Destaca Rezende (2005), que o envolvimento do cliente
deve ser buscado nesta fase assim como o foi nas fases anteriores do projeto e que, da
mesma forma que em outras etapas do processo de desenvolvimento, a implantao
requer gerenciamento, como ser abordado na sequncia.
comum que a implantao de um software se d em substituio a um anterior.
Neste caso, os dados mantidos pelo software antigo devem ser convertidos para
o formato previsto para o atual, seja em forma de digitao ou de converso via
programa.
De acordo com Rezende (2005), a efetiva implantao de um software novo no
lugar de um antigo pode acontecer das seguintes formas:
a) direta: o funcionamento do software antigo cessa assim que o novo entra em
operao. No h concomitncia na operao dos dois.
b) paralela: os dois sistemas funcionam por um tempo em paralelo, com a base
de dados atualizada em ambos. Neste caso, a segurana na implantao de sistema
novo maior.
c) piloto: neste caso, o sistema atual poder refazer os processamentos feitos pelo
antigo, para fins de comparao de resultados.
d) parcial ou por etapas: o funcionamento do novo sistema inclui apenas parte do
antigo. As novas rotinas substituem aos poucos as antigas.
Manuteno de software
Os esforos de desenvolvimento de um software devem resultar na entrega de
um produto que satisfaa os requisitos do usurio. Adequadamente, espera-se que o
software sofra alteraes e evolua. Uma vez em operao, defeitos so descobertos,
ambientes operacionais mudam e novos requisitos dos usurios vm tona. A
manuteno parte integrante do ciclo de vida do software e deve receber o mesmo
grau de ateno que outras fases.
A manuteno de software definida como modificaes em um produto de
software aps a entrega ao cliente a fim de corrigir falhas, melhorar o desempenho ou
adaptar o produto a um ambiente diferente daquele em que o sistema foi construdo
(IEEE, 2004).
Necessidade de manuteno
A manuteno necessria para assegurar que o software continuar a satisfazer
os requisitos do usurio. O sistema se altera devido a aes corretivas e no corretivas
aplicadas ao software. A manuteno deve ser executada a fim de corrigir falhas,

47

Fundamentos de Engenharia de Software

U1
melhorar o projeto, implementar melhorias, construir interface com outros sistemas,
adaptar programas para que novas facilidades de hardware possam ser usadas, migrar
software legado, retirar software de operao.

Assimile
Manuteno de software como se denomina, em geral, o processo de
adaptao e otimizao de um software j desenvolvido, bem como, a
correo de defeitos que ele possa ter. A manuteno necessria para
que um produto de software preserve sua qualidade ao longo do tempo,
pois se isso no for feito, haver uma deteriorao do valor percebido
desse software e, portanto, de sua qualidade (WAZLAWICK, 2013, p. 317).
Um software legado um sistema antiquado que continua em uso porque o usurio
(tipicamente uma organizao) no deseja substitu-lo ou projet-lo novamente.
Categorias
Manuteno corretiva: modificao reativa em um produto de software executada
aps a entrega a fim de corrigir problemas descobertos.
Manuteno adaptativa: modificao em um produto de software executada aps
a entrega do produto a fim de manter o software usvel em um ambiente alterado ou
em alterao.
Manuteno perfectiva: modificao em um produto de software realizada aps
a entrega a fim de melhorar o desempenho ou a manutenibilidade.
Manuteno preventiva: modificao em um software aps a entrega afim de
reparar falhas latentes antes que se tornem efetivas (IEEE, 2004).

Exemplificando
O exemplo que segue nos transmite a ideia do quanto a preparao
prvia do programa para receber manuteno importante e sobre o
pensamento do cliente em relao a facilidade em se executar mudanas
em um software.
Um programador foi chamado pelo governo para criar um produto de
software que mantivesse sete, e exatamente sete, tipos de frutas que
eram controladas e comercializadas por certo rgo governamental.
Havia ordem expressa de que o banco de dados fosse projetado para
sete frutas, sem previso de expanso. O programa foi entregue e seguia

48

Fundamentos de Engenharia de Software

U1
em perfeito funcionamento at que, um ano aps sua implantao,
o gerente do rgo viu-se na necessidade de incluir mais uma fruta no
controle do programa. Chamado a executar a manuteno do produto, o
programador constatou que o projetista, desobedecendo as orientaes
iniciais, havia deixado alguns campos adicionais no banco de dados, o que
permitiu a incorporao da oitava fruta.
Mais um ano se passou e, para que a recente mudana na legislao fosse
atendida, o programa deveria agora acomodar o controle de mais 26 frutas.
Informado sobre esta necessidade, o programador protestou, alegando
que tal alterao levaria praticamente o mesmo tempo que a criao de
um novo sistema. Que ridculo!, retrucou o gerente. Voc no teve
nenhuma dificuldade para acrescentar a oitava fruta. Simplesmente faa a
mesma coisa agora, mais 26 vezes (SCHACH, 2008).

Manutenibilidade: definida como a facilidade com que um software pode sofrer


manuteno, melhoramentos, adaptaes ou correes para satisfazer requisitos
especficos. Ela deve ser perseguida durante o desenvolvimento do software, de modo
a minimizar os custos futuros de manuteno, que so inevitveis.

Faa voc mesmo


A correta classificao das espcies de manuteno a serem aplicadas
no software fundamental para o registro da atividade e formao da
documentao apropriada. Com base no que estudamos nessa seo,
classifique em corretiva, adaptativa, preventiva ou perfectiva as atividades
de manuteno descritas na sequncia.
a) alterao do cdigo para tornar mais rpido o processamento de uma
imagem.
b) manuteno feita para acomodar alterao da moeda corrente.
c) correo do layout do relatrio de vendas mensais.

49

Fundamentos de Engenharia de Software

U1
SEM MEDO DE ERRAR
Concludas as fases de tratamento dos requisitos e de elaborao do projeto do
novo software, resta cumprir as etapas finais do processo de desenvolvimento e, por
fim, entregar o programa ao cliente. Sua misso a de estruturar o processo, cuidando
para que todas as aes planejadas sejam factveis e que o projeto possa ser levado
concluso.
Sendo assim, ao trabalho!
O planejamento da implementao de software inclui as seguintes atividades:
a) definio dos programadores: cada um dos responsveis pela codificao
dos mdulos projetados deve ser destacado e informado sobre a linguagem
de programao a ser utilizada. boa prtica a busca e adequao de funes j
codificadas em outros projetos e que eventualmente podero ser utilizadas neste atual.
b) escalonamento das atividades: a diviso de tarefas e seus respectivos
responsveis devem ser definidos em documento pblico. Nesse ponto, deve-se
tambm definir os responsveis pela integrao e teste dos mdulos.
c) controle de verso: durante a codificao, as atualizaes feitas no sistema
sero informadas a toda equipe de programao, por meio de ferramenta de controle
de verso instalada em servidor prprio.
A implantao prev a efetiva instalao do programa em servidor prprio do
cliente e a escala de treinamento aplicado aos usurios. O treinamento ser prestado
na semana que antecede a colocao do programa em funcionamento, com dois
profissionais destacados para o trabalho. No h sistema em funcionamento que
execute as mesmas funes do novo sistema, da a dispensa de planejamento para
converso de dados e troca de sistemas.
Por fim, a manuteno dever ser prestada sob demanda, exceto em casos em que
correes devam ser feitas. O cliente, sentindo necessidade de alterar ou aprimorar o
sistema, contratar horas adicionais da equipe de programadores. As correes, por
sua vez, sero feitas sem custo.
Uma boa referncia documental para esta atividade pode ser encontrada em
http://www2.ati.pe.gov.br/c/document_library/get_file?p_l_id=144654&folderId=144
374&name=DLFE-15402.pdf. Acesso em: 17 nov. 2015.

50

Fundamentos de Engenharia de Software

U1

Ateno!
O treinamento das pessoas que utilizaro o novo programa providncia
fundamental para sucesso do projeto. A transmisso das prticas
relacionadas ao programa, quando feita por profissionais hbeis em
motivar o cliente para sua efetiva utilizao, pode fazer a diferena entre
a plena adeso e o no reconhecimento da utilidade de um programa.

Lembre-se
A entrega contnua de software ao cliente tem sido expediente usado para
manter o programa sempre atualizado com novas funcionalidades. Saiba
mais em http://www.devmedia.com.br/entrega-continua-de-softwarerevista-net-magazine-100/26312. Acesso em: 2 nov. 2015.

Avanando na prtica
Pratique mais
Instruo
Desafiamos voc a praticar o que aprendeu transferindo seus conhecimentos para novas situaes
que pode encontrar no ambiente de trabalho. Realize as atividades e depois compare-as com a de
seus colegas.
Retomando a manuteno do software

51

1. Competncia Geral

Conhecer as principais metodologias de desenvolvimento


de software, normas de qualidade e processos de teste de
software.

2. Objetivos de aprendizagem

Transferncia dos conceitos aprendidos para situao


semelhante apresentada no incio da seo.

3. Contedos relacionados

Etapas finais do processo de software: implementao,


integrao, implantao e manuteno.

4. Descrio da SP

Dando continuidade ao processo de resgate de trabalhos


interrompidos da You-Soft, o pessoal de direo da X-Soft
deparou-se com um projeto que chegou a ser entregue
ao cliente, mas que, por conta da sada de programadores
da empresa, ficou carente de manuteno ps-entrega.
Os programadores que os substituram no conseguiram
compreender corretamente a escrita do programa e as
alteraes necessrias no cdigo no puderam ser feitas.
Atualmente o programa encontra-se em funcionamento
parcial apenas.
Nossa misso planejar e implementar a oferta de manuteno
ao cliente da You-Soft e, ao mesmo tempo, oferecer
mo-de-obra imediata para que o programa entregue funcione
por completo.

Fundamentos de Engenharia de Software

U1

5. Resoluo da SP

A retomada da normalidade no atendimento deve ser


iniciada pelo destaque de profissionais que devero estudar
e compreender o sistema que ora funciona parcialmente no
cliente. A documentao deve ser atualizada ou criada, caso
no exista. Para facilitar a manuteno futura, o cdigo dever
passar por processo de refatorao, a fim de se adequar ao
padro de codificao da X-Soft.

Lembre-se
Assim como na maioria das reas de atuao profissional, a rotatividade
de programadores tema que tem preocupado gestores da rea de TI.
Algumas boas prticas podem, no entanto, reduzir o turnover.
Saiba mais em http://cio.com.br/gestao/2015/06/11/cinco-dicas-parareduzir-o-turnover-na-area-de-ti/. Acesso em: 2 nov. 2015.

Faa voc mesmo


A metodologia tradicional de desenvolvimento tem sido questionada
quanto sua efetividade e, aos poucos, tem sido substituda por outras
metodologias mais recentes. No entanto, ela ainda bastante utilizada.
Faa levantamento de um caso de sucesso no desenvolvimento de
software utilizando a metodologia tradicional.

Faa valer a pena!


1. Em relao ao processo de implementao de software, analise as
afirmaes que seguem:
I) a escolha da linguagem de programao deve ser feita sem a
participao do cliente, j que no lhe cabe interferir em decises
tcnicas.
II) a padronizao dos elementos do programa, tais como nomes de
variveis, endentaes e nomes de classes deve ser adotada para toda
a equipe, j que tal ao tende a facilitar a codificao e manuteno
futura.
III) no h necessidade de se documentar cdigo, j que atualmente as
linguagens de programao so autoexplicativas.

52

Fundamentos de Engenharia de Software

U1
correto o que se afirma apenas em:
a) II e III
b) I e III
c) II
d) I, II e III
e) I
2. Em relao integrao de software, assinale a afirmao correta.
a) Integrar um software significa distribuir equipe tarefas de
implementao, de modo a se ter, ao final do trabalho, um programa
integral.
b) Integrar um software significa juntar em um s programa todos
os mdulos que foram construdos separadamente durante a
implementao.
c) O processo de integrao no prev a aplicao de testes nas
interaes entre mdulos, j que testar apenas o programa unificado
basta.
d) O processo de implementar todos os mdulos para ento integr-los
eficiente no isolamento de eventual falha em um mdulo.
e) A tcnica de integrao bottom-up eficiente em detectar falhas de
projeto logo no incio do processo.
3. Assinale a alternativa que contm expresses que completam
corretamente as lacunas nas frases abaixo.
I) A substituio de parte defeituosa de um mdulo configura manuteno
__________
II) O objetivo da manuteno __________ melhorar determinada
caracterstica ou funo do programa.
III) A incluso de forma alternativa de clculo de juros determinada em
lei constitui manuteno _____________
a) corretiva, adaptativa, preventiva
b) preventiva, perfectiva, adaptativa
c) perfectiva, perfectiva, preventiva
d) corretiva, perfectiva, adaptativa
e) corretiva, corretiva, adaptativa

53

Fundamentos de Engenharia de Software

U1

54

Fundamentos de Engenharia de Software

U1

Referncias
IEEE. SWEBOK: a project of the IEEE Computer Society Professional Practices Committee.
Los Alamitos: IEEE, 2004.
LAPLANTE, Phillip A. What every engineer should know about: software engineering.
London: CRC, 2007.
PRESSMAN, Roger S. Engenharia de software. So Paulo: Pearson Prentice Hall, 2009.
1056 p.
REZENDE, Denis Alcides. Engenharia de software e sistemas de informao. 3. ed., rev.
e ampl. Rio de Janeiro: Brasport, 2005.
SCHACH, Stephen. Engenharia de software: os paradigmas clssico e orientado a
objetos. 7. ed. So Paulo: McGraw-Hill, 2008.
SOMMERVILLE, Ian. Engenharia de software. 8. ed. So Paulo: Addison Wesley, 2008.
592 p.
WAZLAWICK, Raul Sidnei. Engenharia de software: conceitos e prticas. Rio de Janeiro:
Elsiever, 2013.

55

Fundamentos de Engenharia de Software