Você está na página 1de 44

363

Aula 1º

Introdução à Engenharia
de Software

Olá, pessoal, tudo bem?


Iniciamos a disciplina de Engenharia de software I. Espero que
a disciplina contribua com o entendimento e aprendizado de vocês
a respeito. Para tanto, vamos abordar alguns conceitos introdutórios.
Qualquer dúvida, entrem em contato via quadro de avisos, certo?
Vamos lá?
Bons estudos!

Figura 1: <http://www.cbsi.net.br/2014/10/curso-de-engenharia-de-software-gratuito.html>. Acesso em: 05 abr. 2017.

Objetivos de aprendizagem

Esperamos que, ao término desta aula, vocês sejam capazes de:

‡HQWHQGHURVFRQFHLWRVGHVRIWZDUHHHQJHQKDULDGHVRIWZDUH
‡FRQKHFHURVXUJLPHQWRGRFDPSRGHVRIWZDUH
364 Engenharia de Software I 8
especial, um sistema de computador é capaz
Seções de estudo de executar. Podemos considerar que um
software é uma solução para um determinado
problema. Essa solução pode ser composta por
1 - Engenharia de software: conceitos iniciais
vários programas de computador formando
2 - O que é a engenharia de software? um sistema de software. Assim, um sistema
de software é um conjunto de programas de
computador que operam de forma conjunta
1 - Engenharia de software: conceitos para solucionar problemas de uma determinada
iniciais área. Em um sentido mais amplo, Sommerville
A engenharia de software engloba as técnicas e lógicas  S   DÀUPD TXH XP VLVWHPD TXH
que dizem respeito a dados, atividades, tecnologia e pessoas. descreve a estrutura desse sistema, e a
Ela permite que se desenvolva o planejamento, a análise, a documentação do usuário, que explica como
projeção e a construção e a manutenção dos sistemas de utilizar o sistema e, no caso dos produtos
processamento de dados, por meio de uma ação integrada e de software, sites da Web para os usuários
inteligente. Além da definição dada, é importante sabermos: fazerem download das informações recentes
quando surge e por que surge a discussão a respeito da do produto” (PARREIRA JÚNIOR, 2013).
temática?
Como pudemos notar na citação, o software diz respeito aos
Os conhecimentos a respeito de software ganharam
programas disponíveis em um equipamento, principalmente,
força há pouco tempo. Há algumas décadas:
quando associados ao sistema de um computador. Os sistemas,
[…] menos de 1% do público poderia associados, formam o que chamamos de software. Para tanto, é
GHVFUHYHUGHIRUPDLQWHOLJtYHORTXHVLJQLÀFD importante entender que, no software, há diversos programas
“software de computador”. Hoje, a maioria que são particulares, mas que atuam em conjunto.
GRV SURÀVVLRQDLV EHP FRPR D PDLRU SDUWH Nessa perspectiva, de que modo atua o profissional
do público, acham que entendem o que é responsável por gerir a engenharia de software?
software. Será que entendem? Uma descrição
de software num livro didático poderia Um produto de software é um sistema que
assumir a seguinte forma: “Software é: (1) pode ser disponibilizado para uma clientela.
instruções (programas de computador) que, Esses produtos podem ser genéricos
quando executadas, produzem a função e personalizados. Produtos genéricos são
R GHVHPSHQKR GHVHMDGRV   HVWUXWXUDV GH sistemas de software produzidos por uma
dados que possibilitam que os programas organização e comercializados para qualquer
PDQLSXOHP DGHTXDGDPHQWH D LQIRUPDomR H
cliente que seja capaz de utilizá-los. Produtos
(3) documentos que descrevem a operação e
personalizados são sistemas de software
o uso dos programas”. Não há duvida de que
RXWUDV GHÀQLo}HV PDLV FRPSOHWDV SRGHULDP desenvolvidos para atender às necessidades
ser oferecidas. Mas precisamos de algo mais de um cliente em especial. Em ambos os
TXH XPD GHÀQLomR IRUPDO 3$55(,5$ casos, a empresa produtora disporá de
JÚNIOR, 2013). um processo de software. O processo
de software é o conjunto de atividades
Como pode ser notado na citação, o software diz respeito gerenciais e tecnológicas, bem como os
ao modo de organizar informações e manipulá-las por meio resultados gerados por tais atividades, que um
de programas. De modo geral, o software se relaciona à determinado produtor de software emprega
informação e à sua manipulação. Porém, como a própria no desenvolvimento e na manutenção de
citação defende, não adianta somente entender a definição seus produtos de software (AUDI et al.,
elementar, certo? Vamos avançar, então? 2007, p. 171).
Vocês já devem ter percebido que, quando se fala em
software, as pessoas associam, imediatamente, aos programas Bom, já entendemos, até aqui, a relação entre tecnologia
de computador. Como interessados no assunto, contudo, e software, certo? É papel do produtor de software, então,
vocês talvez já saibam que essa é uma visão possível somente desenvolver e promover a manutenção dele. Aos poucos,
no senso comum: enquanto profissionais da área entendam: tenho certeza de que vocês se apropriarão da teoria relacionada
essa é uma visão restrita e insuficiente. e conseguirão ampliar o conhecimento de vocês no que
Na verdade, o software engloba todos os dados e tange à nossa temática. Lembrem-se de que há os produtos
informações documentados. Eles provêm de diversas genéricos e os produtos sob encomenda, também chamados
naturezas. perpassam pelas bases de dados e envolvem de personalizados. Os primeiros dizem respeito aos produtos
os procedimentos manuais que estão integrados aos disponibilizados, por meio de venda. Entre eles, podem-se
automatizados. Então, quando tratamos de todo o sistema de FLWDU0LFURVRIW:RUG%52IÀFH$GREH3KRWRVKRSHWF -i
software, falamos de: os segundos são os sistemas feitos de modo particular a uma
empresa, por exemplo.
A palavra software designa o conjunto O que diferencia um e o outro é o fato de que os produtos
de programas que um equipamento e, em personalizados podem ser organizados de modo a atender
9 365
às necessidades de um cliente, que, por sua vez, geralmente, Assim, prcebe-se que, não aplicar a teoria à prática pode
representa uma empresa. Há também casos em que as empresas, gerar alguns problemas bastante relevantes na atuação do
de posse de um produto genérico, alteram-no de acordo com profissional. É importante, nessa perspectiva, entender os
as necessidades específicas. objetivos da engenharia de software.
Em sua origem, a engenharia de software foi concebida
com o propósito de lidar com os sistemas básicos, compiladores
e sistemas operacionais.
Para entender mais, é preciso conhecer alguns conceitos:
8UQD SULPHLUD GHÀQLomR GH HQJHQKDULD GH
software foi proposta por Fritz Bauer na
primeira grande conferencia dedicada ao
assunto: ‘O estabelecimento e uso de sólidos
princípios de engenharia para que se possa
obter economicamente um software que
)LJXUD6RIWZDUH)RQWHKWWSȴHOGJXLGHJL]PRGRFRPDOOWKHFRROEHWDVRI IXQFLRQH HÀFLHQWHPHQWH FRP PiTXLQDV UHDLV·
tware-you-can-use-for-free-1765553479>. Acesso em: 16 mar. 2017.
(PARREIRA JUNIOR, 2013).
Entendidas questões inicias acerca do software, vamos
discutir a engenharia de software, em específico? Basicamente, propunha-se a existência de uma engenharia
que proporcionasse um uso economicamente viável no que
diz respeito à tecnologia de software, envolvendo, sempre,
2 - O que é a engenharia de software? o uso das máquinas. Nessa direção, pode-se afirmar que
a engenharia de software foi concebida com o intuito de
integrar a engenharia de sistemas, bem como a engenharia de
A engenharia de software é uma disciplina que se associa
hardware.
a todas as etapas da produção do software. Nessa perspectiva,
não está relacionada somente às técnicas e processos de Ela abrange um conjunto de três elementos
desenvolvimento do software, mas, também, às atividades fundamentais - métodos, ferramentas e
a respeito do gerenciamento do projeto de software e ao procedimentos - que possibilita ao gerente
desenvolvimento das ferramentas, dos métodos e das teorias o controle do processo de desenvolvimento
que dão suporte à produção do software. GR VRIWZDUH H RIHUHFH DR SURÀVVLRQDO XPD
Segundo Júlio Cesar Leite (1991, p. 2), base para a construção de software de alta
qualidade produtivamente. Os métodos de
na maioria das organizações que se utilizam engenharia de software proporcionam os
de sistemas computacionais para apoio às detalhes de “como fazer” para construir o
suas atividades, os conceitos de Sistemas de software. Os métodos envolvem um amplo
Informação e de Engenharia de Software se conjunto de tarefas que incluem: planejamento
misturam no que comumente se chama de c estimativa de projeto, análise de requisitos
Desenvolvimento de Sistemas. Esta mistura de software e de sistemas, projeto da estrutura
GH iUHDV DÀQV PDV GLIHUHQFLDGDV p QR QRVVR de dados, arquitetura de programa e algoritmo
entender, um dos principais problemas GH SURFHVVDPHQWR FRGLÀFDomR WHVWH H
encontrados pelos gerentes de informática. manutenção. Os métodos da engenharia
de software muitas vezes introduzem uma
Como se nota, para Leite (1991), é comum, em empresas, os QRWDomR JUiÀFD RX RULHQWDGD D OLQJXDJHP
conceitos a respeito de Sistemas de Informação se misturarem especial e introduzem um conjunto de critérios
ao de Desenvolvimento de Sistemas. Essa “confusão” é para a qualidade do software. As ferramentas
responsável por originar diversos problemas, entre eles: de engenharia de software proporcionam
apoio automatizado ou semiautomatizado aos
‡FULDomRGHURWLQDVDGPLQLVWUDWLYDV métodos (PRESSMAN, 19995, p. 31).
‡SULRULGDGHVGHGHVHQYROYLPHQWR
‡SURFHGLPHQWRVRSHUDFLRQDLV Hoje, contudo, há ferramentas que permitem o sustento
‡PRWLYDomR de cada um dos métodos discutidos. Assim, quando as
‡LPSDFWRVQDVURWLQDVGHWUDEDOKR ferramentas se integram e a informação criada pode ser
‡DORFDomRGHPmRGHREUD utilizada por outra ferramenta, notamos que se estabelece
‡WUHLQDPHQWRGHXVXiULRV um sistema que integra as ferramentas. Esse suporte é o que
chamamos de engenharia de software. Ela tem o suporte
se misturam com problemas de: de um computador (CASE - Computer-Aided Software
‡ HVFROKD GH IHUUDPHQWDV GH DSRLR DR
Engineering), que, por sua vez,
desenvolvimento de software,
‡SUREOHPDVGHWUHLQDPHQWRGHSHVVRDOWpFQLFR […] combina software, hardware e um banco
‡ DFRPSDQKDPHQWR GH SURMHWRV GH VRIWZDUH de dados de engenharia de software (uma
(LEITE, 1991, p. 2). estrutura de dados contendo importantes
informações sobre analise, projeto,
366 Engenharia de Software I 10
FRGLÀFDomRHWHVWH SDUDFULDUXPDPELHQWHGH APLICAÇÕES E DESAFIOS DA ENGENHARIA
engenharia de software que seja análogo ao DE SOFTWARE
projeto auxiliado por computador/engenharia
auxiliada por computador para o hardware. Agora que vocês já conhecem alguns conceitos básicos
Os procedimentos da engenharia de software a respeito da teoria da engenharia de software, é necessário
constituem o elo de ligação que mantém juntos entendermos, primeiro, qual a aplicação do software e quais
os métodos e as ferramentas e possibilita os desafios relacionados à área de atuação da engenharia de
o desenvolvimento racional e oportuno do software. Se já sabemos que o software diz respeito ao complexo
software de computador. Os procedimentos
de programas dos Sistemas de Informática, e que cada
GHÀQHPDVHTrQFLDHPTXHRVPpWRGRVVHUmR
componente existente em um meio computacional se constitui
aplicados, os produtos (deliverables) que se
em um software, concluímos, então, que há especificidades no
exige que sejam entregues (documentos,
que tange às classificações. O software, dessa forma, pode ser:
relatórios, formulários etc.), os controles
que ajudam a assegurar a qualidade e a ‡ %iVLFR – Programas escritos para apoiarem outros
coordenar as mudanças, e os marcos de programas. São eles: compiladores, editores de textos, sistemas
referência que possibilitam aos gerentes de RSHUDFLRQDLV
software avaliar o progresso (PARREIRA ‡7HPSRUHDO - Responde dentro de restrições de tempo
JUNIOR, 2013, p. 8). estritas. Monitora, analisa e controla eventos do mundo real.
Está presente em sistemas de controle de voo, sinalização de
É visível, então, que a engenharia de software envolve
WUkQVLWR
etapas que, por sua vez, envolvem métodos, ferramentas e
‡&RPHUFLDO – Responsáveis por reestruturar os dados de
procedimentos. Tais etapas são, comumente, classificadas
uma forma que facilita as operações comerciais e a tomada de
como paradigmas. Cada paradigma é selecionado de acordo
decisões administrativas: folha de pagamento, contas a pagar
com as especificidades do projeto. Considera-se sua natureza,
HUHFHEHUHVWRTXHRSHUDo}HVFRPHUFLDLVHGHDSRLRjGHFLVmR
as aplicações necessárias, os métodos e as ferramentas que
‡&LHQWtÀFRHGH(QJHQKDULD – Englobam os sistemas de
serão utilizados. Também se levam em conta os produtos que
astronomia, o controle da dinâmica orbital de naves espaciais,
serão entregues.
os sistemas de manufatura automatizada (CAD-Computer Aided
É necessário refletir a respeito do fato de que os
Design ou Desenho auxiliado por computador, CAE-Computer
profissionais com formação em Análise de Sistemas
Aided Engineering ou Engenharia auxiliada por computador,
devem atuar em seu próprio campo. Nele, os contatos
CAM-Computer Aided Manufacturing ou Manufatura auxiliada
com a organização e com seu complexo social são bastante
SRUFRPSXWDGRU 
frequentes. Assim, não se deve supor que os profissionais
‡ (PEXWLGR HPEHGGHG VRIWZDUH – Ele controla
de Sistemas de Informação substituem os usuários no
produtos e sistemas para os mercados industriais e de consumo.
contato com os Engenheiros de Software. Os usuários e
Responsável pelas funções digitais em automóveis (controle
os engenheiros de software entram em contato quando é
de combustível, sistema de freios), controle de teclado para
necessário, do mesmo modo, ocorre com os profissionais de
IRUQRVPLFURRQGDV
sistemas de informação. Quando a divisão de tarefas é feita de
‡ 'H FRPSXWDGRU SHVVRDO – Faz o processamento de
modo eficaz, é possível que os engenheiros atentem a aspectos
WH[WRVSODQLOKDVHOHWU{QLFDVHJHUHQFLDGRUGHEDQFRVGHGDGRV
da engenharia de modo detalhado. Do mesmo modo, ocorre
‡ 'H LQWHOLJrQFLD DUWLÀFLDO ,$) – Softwares baseados
com os especializados em sistemas de informação.
em conhecimento.
Quando atentamos a essa explicação, contudo, não
Como se vê, a engenharia do software possui a capacidade
dizemos que um profissional não tem capacidade para
de ser multifacetada quanto a seu campo de atuação. O
mesclar os campos. É possível, sim, que o especialista em
profissional define, junto às necessidades da empresa que o
Sistemas de Informação atue desenvolvendo um sistema de
contrata, como o software será desenvolvido.
informação completo e sendo responsável, inclusive, pelo
Nessa perspectiva, é válido questionar: quais são, então, os
sistema computacional. Em contrapartida, é possível que os
desafios da profissão na contemporaneidade? É esse o nosso
engenheiros de software atuem desenvolvendo um protótipo
próximo assunto.
de software e realizar a interação direta com os usuários,
Pode-se afirmar que há três dificuldades básicas na atuação
como, por exemplo, ao se implantar um sistema. Quem
no campo da engenharia de software. Vejamos abaixo:
decide o modo como a divisão será realizada é o gerente que
é responsável pela função informática. ‡ KHWHURJrQHD WHFQRORJLD OHYDQGR HP FRQWD D GHPDQGD
Tratando em aspectos conceituais, ciência da computação do momento.
e análise de sistemas englobam teorias e métodos que ‡ 1D PHVPD GLUHomR p LPSRUWDQWH FRQVLGHUDU R WHPSR
sustentam a base de computadores e sistemas de software. de entrega. É importante que o profissional trabalhe o mais
Estão relacionadas ao desenvolvimento de hardware, projeto rápido possível, sem deixar cair, contudo, a qualidade de seu
de políticas e de processos e implantação do sistema, ou seja, serviço. Dinamicidade é a palavra de ordem para o profissional.
com a especiação do sistema. Já a engenharia de software ‡ *DUDQWLU D FRQILDELOLGDGH GR FOLHQWH QmR p WDUHID IiFLO
se dedica aos problemas práticos de produção de software, Pode levar um tempo, então, para que o profissional forme
adotando técnicas como modelagem de casos de uso e uma visão positiva a respeito de seu trabalho. ética e qualidade,
JHUHQFLDPHQWRGHFRQÀJXUDomR então, são palavras-chave para garantir um bom retorno.
11 367
Sommerville (2011) elaborou uma tabela na qual discute
algumas questões básicas acerca do assunto. Vejam abaixo se Vale a pena
têm algumas de suas dúvidas esclarecidas:

Vale a pena acessar

O guia do estudante discute alguns aspectos


relacionados à profissão: <http://guiadoestudante.abril.
com.br/profissoes/engenharia-de-software/>. Acesso em:
05 abr. 2017.

Vale a pena assistir

O vídeo Engenharia de software retoma alguns dos


conceitos aqui discutidos. Disponível em: <https://www.
youtube.com/watch?v=WQr1GXar9N8>. Acesso em: 5
abr. 2017.

Minhas anotações

Sommerville (2011, p. 4).

Retomando a aula

Parece que estamos indo bem. Então, para encerrar esta


aula, vamos recordar:

²(QJHQKDULDGHVRIWZDUHFRQFHLWRVLQLFLDLV
Vimos, na seção I, que a engenharia de software engloba
as técnicas e lógicas que dizem respeito a dados, atividades,
tecnologia e pessoas. Ela permite que se desenvolva o
planejamento, a análise, a projeção e a construção e a
manutenção dos sistemas de processamento de dados, por
meio de uma ação integrada e inteligente.

2TXHpDHQJHQKDULDGHVRIWZDUH"
A engenharia de software é uma disciplina que se associa
a todas as etapas da produção do software. Nessa perspectiva,
não está relacionada somente às técnicas e processos que dizem
respeito ao desenvolvimento do software, mas, também, às
atividades a respeito do gerenciamento do projeto de software
e ao desenvolvimento das ferramentas, dos métodos e das
teorias que dão suporte à produção do software.
368 Engenharia de Software I

2º Aula

Processos de software

Olá, pessoal!
Chegamos à aula 2 e, nela, vamos discutir os
processos de software. Um processo de software pode
ser definido como um conjunto de passos que são
parcialmente ordenados, e tem por base atividades,
métodos, práticas e transformações com o propósito de
atingir uma meta.
Vamos lá?
Boa aula!

Objetivos de aprendizagem

Esperamos que, ao término desta aula, vocês sejam capazes de:

‡FRPSUHHQGHURVFRQFHLWRVHPRGHORVGHSURFHVVRVGHVRIWZDUH
‡HQWHQGHURPRGHORVGRVSURFHVVRVGHVRIWZDUH
13 369
software. Nessa perspectiva, engloba todos os subprocessos
Seções de estudo necessários. Um processo de software envolve diversos
subprocessos que determinam os requisitos, a análise, o
desenho, a implementação e os testes.
1 - Processos de software
2 - Modelos de processos de software

1 - Processos de software

Para Somerville (2011), um processo de software diz


respeito ao conjunto de atividades que são relacionadas e
que levam à produção de um produto de software. Portanto,
o processo de software culmina no produto final, entendido
como produto de software. As atividades podem estar
relacionadas ao desenvolvimento de software a partir do zero,
seguindo uma linguagem padrão, como Java ou C. Contudo, em
aplicações de negócios não há necessidade de seguir essa regra.
No mundo nos negócios, cada vez mais, há o desenvolvimento Figura 1: <http://www.macoratti.net/proc_sw1.htm>. Acesso em: 05 abr. 2017.

de novos softwares por meio da modificação e alteração de Quando se é necessário descrever ou discutir os
sistemas já existentes e que podem ser reconfigurados. Apesar processos, geralmente tratamos das suas atividades e as
de já existirem diversas variações em um processo de software, relacionamos a um modelo específico de dados e ao modo
basicamente, devem-se seguir quatro atividades fundamentais: como tais atividades estão descritas. Contudo, as descrições
do processo podem envolver, também:
(VSHFLÀFDomRGHVRIWZDUH$IXQFLRQDOLGDGH
Produtos: diz respeito aos resultados de uma das
do software e as restrições a seu funcionamento
GHYHPVHUGHÀQLGDV atividades do processo. Para exemplificar, uma atividade de
2. Projeto e implementação de software. O projeto de arquitetura resulta em um modelo de arquitetura
software deve ser produzido para atender às de software.
HVSHFLÀFDo}HV Papéis: eles refletem as responsabilidades, as funções das
3. Validação de software. O software deve ser pessoas envolvidas no processo. Ex.: gerente de configuração,
validado para garantir que atenda às demandas programador, entre outros.
do cliente. Pré e pós-condições: são as declarações feitas antes
4. Evolução de software. O software deve e depois de uma atividade do processo e que validam a sua
evoluir para atender às necessidades de veracidade. Ex.: é necessário que seja obtido uma confirmação
mudança dos clientes. do cliente em relação à aprovação de todos os requisitos.
De alguma forma, essas atividades fazem parte
Já percebemos que todas as atividades relacionadas aos
de todos os processos de software. Na prática,
processos de software são complexas e dependem de pessoas,
são atividades complexas em si mesmas,
que incluem subatividades como validação ou seja, os envolvidos devem exercer sua intelectualidade,
de requisitos, projeto de arquitetura, testes criatividade e ética. Para tanto, tudo precisa ser bem definido
unitários etc. Existem também as atividades que e claro para que os sujeitos envolvidos atuem de modo a
dão apoio ao processo, como documentação e favorecer a empresa. Assim, as pessoas dão o seu melhor
JHUHQFLDPHQWR GH FRQÀJXUDomR GH VRIWZDUH e o processo de software é aproveitado da melhor maneira
(SOMERVILLE, 2011, p. 18). possível:

A título de ilustração, vejam um exemplo: um processo é Para alguns sistemas, como sistemas críticos,
XPDUHFHLWDTXHpVHJXLGDSRUXPSURMHWRRSURMHWRFRQFUHWL]D é necessário um processo de desenvolvimento
uma abstração, que é o processo. Não se deve confundir um PXLWR EHP HVWUXWXUDGR SDUD VLVWHPDV GH
processo (digamos, uma receita de bolo de laranja) com o negócios, com requisitos que se alteram
respectivo produto (bolo de laranja) ou com a execução do UDSLGDPHQWH SURYDYHOPHQWH VHUi PDLV HÀFD]
XPSURFHVVRPHQRVIRUPDOHPDLVÁH[tYHO
processo através de um projeto (a confecção do bolo de laranja
Os processos de software, às vezes, são
por determinado cozinheiro, em determinado dia). categorizados como dirigidos a planos ou
3UHVVPDQDVVLPGHÀQLXSURFHVVRGHVRIWZDUH´4XDQGR processos ágeis. Processos dirigidos a planos
você elabora um produto ou sistema é importante percorrer são aqueles em que todas as atividades são
uma série de passos previsíveis – um roteiro que o ajuda a criar planejadas com antecedência, e o progresso é
a tempo um resultado de alta qualidade. O roteiro que você avaliado por comparação com o planejamento
segue é o processo de software” (PRESSMAN, 2006). inicial. Em processos ágeis, que discuto no
Continuando, em engenharia de software, os processos Capítulo 3, o planejamento é gradativo, e
podem ser definidos como as atividades realizadas para a é mais fácil alterar o processo de maneira
manutenção, para a aquisição, para a contratação de um D UHÁHWLU DV QHFHVVLGDGHV GH PXGDQoD GRV
370 Engenharia de Software I 14
clientes. Conforme Boehm e Turner (2003), por diante. O processo não é um modelo
cada abordagem é apropriada para diferentes linear simples, mas envolve uma sequência de
tipos de software. Geralmente, é necessário interações das atividades de desenvolvimento
encontrar um equilíbrio entre os processos (PARREIRA JUNIOR, 2011, p. 29).
dirigidos a planos e os processos ágeis.
(PERUD QmR H[LVWD XP SURFHVVR ¶LGHDO· GH
software, há espaço, em muitas organizações,
para melhorias no processo de software. Os
processos podem incluir técnicas ultrapassadas
ou não aproveitar as melhores práticas de
engenharia de software da indústria. De fato,
muitas empresas ainda não se aproveitam dos
métodos da engenharia de software em seu
desenvolvimento de software.
Em organizações nas quais a diversidade de
processos de software é reduzida, os processos
de software podem ser melhorados pela
padronização. Isso possibilita uma melhor Figura 2. Modelo em cascata. Sommerville, 2013.

comunicação, além de redução no período de


treinamento, e torna mais econômico o apoio O modelo em cascata envolve, basicamente, as seguintes
ao processo automatizado. A padronização etapas:
também é um importante primeiro passo 1. Análise e definição de requisitos: são definidas todas as
na introdução de novos métodos e técnicas atividades e exigências, a partir do contato com o usuário.
de engenharia de software, assim como as 2. Projeto de sistema e software: faz-se a identificação
boas práticas de engenharia de software
e descrição das abstrações do sistema de software e de seus
(SOMMERVILLE, p. 2013, p. 19).
relacionamentos. Diz respeito a uma arquitetura geral do
Agora que vocês já têm um conhecimento importante sistema.
sobre o assunto, é hora de aprofundarmos e verificarmos 3. Implementação e teste unitário: observa-se, nessa
alguns dos modelos de processos de software. Ao conhecer atividade, se cada uma das unidades do software está atendendo
cada um deles, atentem às especificações e particularidades a sua especificação e função.
envolvidas. Em caso de dúvidas, não hesitem em me contatar 4. Integração e teste de sistema: as unidades, primeiramente,
pelo quadro de avisos, ok? individuais, nessa fase, não integradas e testadas no conjunto.
1RWHTXHQDIDVHDQWHULRUHODVIRUDPWHVWDGDVLQGLYLGXDOPHQWH
aqui, são testadas no conjunto.
2 - Modelos de processos de software 5. Operação e manutenção: é a fase mais longa, geralmente,
pois o sistema é utilizado. Durante esse processo, a partir do
Um modelo de desenvolvimento diz respeito a uma momento que o sistema está em uso, podem ser corrigidas
apresentação do processo de desenvolvimento que irá definir possíveis falhas.
as etapas relacionadas ao desenvolvimento de software.
Eles definem, também, de que modo as etapas serão 2.2 - Prototipação
conduzidas e relacionadas de forma a alcançar o objetivo,
que é o desenvolvimento de um produto de software de alta Esse modelo é indicado quando o cliente define uma série
qualidade, e com o menor custo possível. Vamos conhecer de objetivos gerais para o software, mas não identificou os
cada um deles? requisitos de entrada, de processamento e de saída de modo
detalhado. Inicialmente, a finalidade de um protótipo era a de
2.1 - O Modelo em cascata avaliar os requisitos e, então, o desenvolvimento tradicional
O primeiro que verificaremos é o modelo em cascata. não era necessário. Agora, praticamente não há definição entre
Aliás, ele é o primeiro modelo desenvolvido. Sua origem está prototipação e o desenvolvimento de sistemas. Um protótipo
relacionada aos processos mais abrangentes da engenharia de pode ser entendido com a primeira versão do software. O
sistema. Devido ao encadeamento de uma fase na outra, vem objetivo é o de abordar a questão de interface com o usuário,
seu nome: modelo em cascata: definir requisitos e discutir, com o cliente, a possibilidade de
desenvolvimento do sistema.
O resultado de cada fase envolve um ou mais A prototipação permite que clientes e desenvolvedores
documentos que são aprovados e assinados. fiquem em interação constante e, juntos, elaborem os
A fase seguinte só é iniciada após a conclusão
requisitos e funcionalidades do sistema. Deve-se atentar que
da fase precedente, mas na prática eles se
sobrepõem e trocam informações. Durante muitas vezes a prototipação encarece o sistema, pois, alguns
R SURMHWR VmR LGHQWLÀFDGRV SUREOHPDV FRP desenvolvedores costumam elaborar um projeto de protótipo
RV UHTXLVLWRV GXUDQWH D FRGLÀFDomR VmR e um projeto do sistema final, o que vem provocando a redução
YHULÀFDGRV SUREOHPDV GR SURMHWR H DVVLP de sua utilização.
15 371
4.3DGU·HVGHTXDOLGDGHRUJDQL]DFLRQDOJHUDOPHQWHV¥RUHOD[DGRVSDUD
RGHVHQYROYLPHQWRGRSURWµWLSR
3URWµWLSRVQ¥RSUHFLVDPVHUH[HFXW£YHLVSDUDVHUHP¼WHLV0DTXHWHV
em papel da interface de usuário do sistema (RETTIG, 1994) podem
VHUHȴFD]HVHPDMXGDURVXVX£ULRVDUHȴQDURSURMHWRGHLQWHUIDFHH
trabalhar por meio de cenários de uso. Estes são muito baratos de se
GHVHQYROYHUHSRGHPVHUFRQVWUX¯GRVHPSRXFRVGLDV8PDH[WHQV¥R
GHVVDW«FQLFD«RSURWµWLSR0£JLFRGH2]QRTXDODSHQDVDLQWHUIDFH
de usuário é desenvolvida. Os usuários interagem com essa interface,
mas suas solicitações são passadas para uma pessoa que os interpreta
e produz a resposta adequada.

Já percebemos que ele tem vantagens e desvantagens, não


é? Qual seu ponto de vista? Compartilhem no quadro de avisos!
Figura 3: <https://centraldaengenharia.wordpress.com/2011/02/09/paradigmas
-prototipacao/>. Acesso em: 05 abr. 2017.
2.3 - O modelo espiral
A principal aplicação da prototipação é no auxílio a
clientes e desenvolvedores no entendimento dos requisitos O modelo espiral foi preparado para abranger, de modo
para o sistema. Os usuários podem experimentar o protótipo geral, as melhores características do ciclo de vida clássico e
para ver como o sistema pode apoiar seu trabalho, o que é as da prototipação. Além disso, o propósito é o de adicionar
uma vantagem. Esse modelo pode também revelar erros e um novo elemento: análise de riscos. Notamos que ele parte
omissões nos requisitos, ou seja, pode promover a validação de outros tipos de modelo, e busca lidar com os benefícios
dos requisitos. ofertados por um e outro. Para tanto, suas etapas envolvem,
O desenvolvimento da prototipação pode, assim, reduzir necessariamente,
diversos riscos nos requisitos dos sistemas. ‡3ODQHMDPHQWR
Vamos ver um pequeno excerto de Sommerville (2013, p. ‡$QiOLVHHSURMHWR
31) acerca da prototipação: ‡3URWRWLSDomR
‡$YDOLDomR
2HVW£JLRȴQDOGRSURFHVVR«DDYDOLD©¥RGRSURWµWLSR'XUDQWHHVVH
estágio, provisões devem ser feitas para o treinamento do usuário, e Os passos vão sendo retomados e somente são
RV REMHWLYRV GR SURWµWLSR GHYHP VHU XVDGRV SDUD GHULYDU XP SODQR finalizados quando o projeto é obtido. Há, portanto, para seu
de avaliação. Os usuários necessitam de um tempo para se sentir desenvolvimento, quatro atividades fundamentais:
confortáveis com um sistema novo e para se situarem em um padrão Planejamento: determinam-se os objetivos, as alternativas
normal de uso. Uma vez que estejam usando o sistema normalmente, e as limitações. Tais determinações devem ser feitas em cada
eles descobrem erros e omissões de requisitos. FLFORHMiVHUHPSHQVDGDVGHDFRUGRFRPRFLFORSRVWHULRU
8PSUREOHPDJHUDOFRPDSURWRWLSD©¥R«TXHRSURWµWLSRSRGHQ¥R ‡$QiOLVHGRVULVFRVID]VHDLQYHVWLJDomRGDVDOWHUQDWLYDV
VHUQHFHVVDULDPHQWHXVDGRGDPHVPDIRUPDFRPRRVLVWHPDȴQDO2 das possibilidades e caminha-se para resolução de problemas,
WHVWDGRUGRSURWµWLSRSRGHQ¥RVHUXPXVX£ULRW¯SLFRGRVLVWHPDRXR ou seja, resolução dos riscos.
WHPSRGHWUHLQDPHQWRGXUDQWHDDYDOLD©¥RGRSURWµWLSRSRGHWHUVLGR ‡ (QJHQKDULD p R PRPHQWR QR TXDO p IHLWR R
LQVXȴFLHQWHSRUH[HPSOR6HRSURWµWLSR«OHQWRRVDYDOLDGRUHVSRGHP desenvolvimento e a verificação da solução possível.
ajustar seu modo de trabalho e evitar os recursos do sistema que têm ‡$YDOLDomRGRFOLHQWHHPFRQWDWRFRPRFOLHQWHYHULILFD
tempos de resposta lentos. se o andamento de cada ciclo.
4XDQGR HTXLSDGRV FRP PHOKRUHV UHVSRVWDV QR VLVWHPD ȴQDO HOHV Nota-se que esse modelo se preocupa com uma coisa
podem usá-lo de forma diferente. fundamental: a redução dos riscos. Cada etapa é feita de modo
Às vezes, os desenvolvedores são pressionados pelos gerentes para a possibilitar que se compreendam quais são as problemáticas
HQWUHJDU SURWµWLSRV GHVFDUW£YHLV HVSHFLDOPHQWH TXDQGR K£ DWUDVRV e as soluções possíveis antes que se dê encaminhamento. A
QDHQWUHJDGDYHUV¥RȴQDOGRVRIWZDUH1RHQWDQWRLVVRFRVWXPDVHU análise criteriosa por parte do engenheiro de software e o
desaconselhável: contato permanente com o cliente são elementos básicos.
1.3RGHVHULPSRVV¯YHODMXVWDURSURWµWLSRSDUDDWHQGHUDRVUHTXLVLWRV
não funcionais, como requisitos de desempenho, proteção, robustez
HFRQȴDELOLGDGHTXHIRUDPLJQRUDGRVGXUDQWHRGHVHQYROYLPHQWRGR
SURWµWLSR
2. Mudanças rápidas durante o desenvolvimento inevitavelmente
VLJQLȴFDPTXHRSURWµWLSRQ¥RHVW£GRFXPHQWDGR
$ ¼QLFD HVSHFLȴFD©¥R GH SURMHWR « R FµGLJR GR SURWµWLSR 3DUD D
PDQXWHQ©¥RDORQJRSUD]RLVVRQ¥R«ERPRVXȴFLHQWH
3.$VPXGDQ©DVGXUDQWHRGHVHQYROYLPHQWRGRSURWµWLSRSURYDYHOPHQWH
WHU¥RGHJUDGDGRDHVWUXWXUDGRVLVWHPD2VLVWHPDVHU£GLI¯FLOHFXVWRVR
de ser mantido. Figura 4: <http://www.devmedia.com.br/introducao-aos-processos-de-software-e
-o-modelo-incremental-e-evolucionario/29839>. Acesso em: 05 abr. 2017.
372 Engenharia de Software I 16
2.4 - Desenvolvimento baseado 4. Quanto maior a prioridade dos serviços entregues e, em seguida,
em componente (desenvolvimento incrementos integrados, os serviços mais importantes recebem a
orientado a reuso) PDLRULD GRV WHVWHV ΖVVR VLJQLȴFD TXH D SUREDELOLGDGH GH RV FOLHQWHV
Nosso próximo modelo é o desenvolvimento baseado encontrarem falhas de software nas partes mais importantes do
em componente. Para tanto, vamos pensar: a maioria dos sistema é menor.
projetos de software possibilita que haja reaproveitamento 1RHQWDQWRH[LVWHPSUREOHPDVFRPDHQWUHJDLQFUHPHQWDO
de algum software. Desse modo, é importante que a pessoa 1.$PDLRULDGRVVLVWHPDVH[LJHXPFRQMXQWRGHUHFXUVRVE£VLFRVXVDGRV
responsável já tenha certo conhecimento dos projetos, SRUGLIHUHQWHVSDUWHVGRVLVWHPD&RPRRVUHTXLVLWRVQ¥RV¥RGHȴQLGRV
bem como dos códigos a serem elaborados. A partir desse em detalhes até que um incremento possa ser implementado, pode ser
conhecimento, é possível que se aproveite o software e que GLI¯FLOLGHQWLȴFDUUHFXUVRVFRPXQVQHFHVV£ULRVDWRGRVRVLQFUHPHQWRV
este seja incorporado ao sistema. Há uma possibilidade 2. 2 GHVHQYROYLPHQWR LWHUDWLYR WDPE«P SRGH VHU GLI¯FLO TXDQGR XP
significativa de softwares que podem ser utilizados por vários sistema substituto está sendo desenvolvido.
sistemas. Isso facilita e agiliza o trabalho, além de reduzir Usuários querem toda a funcionalidade do sistema antigo e, muitas
custos e riscos. Certamente, garante-se entrega mais rápida e YH]HVȴFDPUHOXWDQWHVHPH[SHULPHQWDUXPQRYRVLVWHPDLQFRPSOHWR
maior satisfação do cliente. 3RUWDQWR«GLI¯FLOREWHUIHHGEDFNV¼WHLVGRVFOLHQWHV
3.$HVV¬QFLDGRSURFHVVRLWHUDWLYR«DHVSHFLȴFD©¥RVHUGHVHQYROYLGD
HP FRQMXQWR FRP R VRIWZDUH ΖVVR FRQWXGR FDXVD FRQȵLWRV FRP R
PRGHORGHFRPSUDVGHPXLWDVRUJDQL]D©·HVHPTXHDHVSHFLȴFD©¥R
completa do sistema é parte do contrato de desenvolvimento do
VLVWHPD1DDERUGDJHPLQFUHPHQWDOQ¥RK£HVSHFLȴFD©¥RFRPSOHWDGR
VLVWHPDDW«TXHR¼OWLPRLQFUHPHQWRVHMDHVSHFLȴFDGRRTXHUHTXHU
Figura 5: Parreira Junior, 2011.
uma nova forma de contrato, à qual os grandes clientes, como agências
2.5 - Entrega incremental JRYHUQDPHQWDLVSRGHPDFKDUGLI¯FLOGHVHDGDSWDU

Há, também, a entrega incremental. Ela diz respeito 2.6 - Metodologia ágil
a uma abordagem por meio da qual é possível desenvolver
alguns softwares, bem como elaborar alguns incrementos Passemos, agora, à metodologia ágil. Elas foram criadas
que possibilitem a entrega ao cliente e sua implantação para por volta da década de 1980. Contudo, algumas informações
uso em um ambiente operacional. Nesse tipo de processo, passaram por distorções, o que acarretou na dificuldade da
o cliente identifica o serviço a ser fornecido pelo sistema, utilização das metodologias ágeis. Hoje, pode-se dizer que há
avaliando qual é mais e qual é menos importante para ele. o senso comum de que a metodologia ágil diz respeito ao que
A partir daí, uma série de incrementos são definidos e cada é desenvolvido sem planejamento, sem documentação, o que,
um proporciona, com isso, um determinado subconjunto da obviamente, não é verdade. As metodologias ágeis são bastante
funcionalidade do sistema. úteis e podem trazer muito sucesso ao projeto: é amplamente
utilizada no setor industrial. Pressman (2011) define que:
A engenharia de software ágil combina
ÀORVRÀD FRP XP FRQMXQWR GH SULQFtSLRV
GH GHVHQYROYLPHQWR $ ÀORVRÀD GHIHQGH D
satisfação do cliente e a entrega de incremental
SUpYLRHTXLSHVGHSURMHWRVSHTXHQDVHDOWDPHQWH
PRWLYDGDV PpWRGRV LQIRUPDLV DUWHIDWRV GH
Figura 6: Entrega incremental. Sommerville, 2013. engenharia de software mínimos e, acima de
tudo, simplicidade no desenvolvimento geral.
Sommerville (2013, p. 32) identifica uma série de
Os princípios de desenvolvimento priorizam a
vantagens em relação à entrega incremental. Vamos conferir? entrega mais que a análise e projeto (embora
HVVDV DWLYLGDGHV QmR VHMDP GHVHQFRUDMDGDV 
A entrega incremental tem uma série de vantagens: também priorizam a comunicação ativa e
1. 2VFOLHQWHVSRGHPXVDURVLQFUHPHQWRVLQLFLDLVFRPRSURWµWLSRVH contínua entre desenvolvedores e clientes
JDQKDUH[SHUL¬QFLDDTXDOLQIRUPDVHXVUHTXLVLWRVSDUDLQFUHPHQWRV (PRESSMAN, 2011).
SRVWHULRUHV GR VLVWHPD $R FRQWU£ULR GH SURWµWLSRV WUDWDVH DTXL
GH SDUWHV GR VLVWHPD UHDO RX VHMD Q¥R H[LVWH D QHFHVVLGDGH GH Vemos, então, que os métodos ágeis para desenvolvimento
UHDSUHQGL]DJHPTXDQGRRVLVWHPDFRPSOHWRHVW£GLVSRQ¯YHO de software são as abordagens interativas nas quais o software é
2. Os clientes não necessitam esperar até que todo o sistema seja desenvolvido e entregue aos clientes em incrementos. Eles não
entregue para obter ganhos a partir dele. O primeiro incremento são planejados previamente, mas, sim, calculados e planejados
VDWLVID]RVUHTXLVLWRVPDLVFU¯WLFRVGHPDQHLUDTXHHOHVSRVVDPXVDUR durante o desenvolvimento. As variantes dependerão do
software imediatamente. progresso obtido, bem como das prioridades do cliente. Ao
3.2SURFHVVRPDQW«PRVEHQHI¯FLRVGRGHVHQYROYLPHQWRLQFUHPHQWDO considerar que tais necessidades dos clientes podem mudar, é
o que deve facilitar a incorporação das mudanças no sistema. possível, assim, que o planejamento do software também vá
sofrendo alterações.
17 373
2.7 - Processo Unificado da Rational Seu planejamento inicial era de quatro anos (1995-1999) e isso não
(RUP) RFRUUHX(P.HQW%HFNH-H΍ULHVIRUDPFRQWUDWDGRVHFRPH©DUDP
Esse processo foi criado para dar suporte ao DDSOLFDUSU£WLFDVTXHDX[LOLDUDPDFRQVROLGDURTXHKRMH«R;3(VVH
desenvolvimento voltado aos objetos. Ele pode fornecer uma SURMHWRWHPFODVVHVHP«WRGRVIRLSDUDSURGX©¥RDSµV
forma sistematizada para que se obtenha vantagens no uso da XPDQRGHSRLVGDFRQWUDWD©¥RGH%HFNH-H΍ULHV
UML. Ele foi desenvolvido pela Rational Software Corporation 2XWUR H[HPSOR IRL R VLVWHPD )RUG 0RWRUV &RPSDQ\ 9&$36 6\VWHP
e foi adquirido em 2003 pela IBM. que utilizava métodos tradicionais e enfrentava diversos problemas.
Sua proposta é, principalmente, atender às prioridades 2V GHVHQYROYHGRUHV ȴFDYDP PDLV WHPSR FRQVHUWDQGR SUREOHPDV
dos usuários. Com isso, garante-se uma produção de qualidade HQFRQWUDGRV GR TXH GHVHQYROYHQGR RX HYROXLQGR R VLVWHPD $SµV
dentro de um orçamento e cronograma viável à equipe e ao isso o projeto começou a adotar testes automatizados, integração
cliente. O RUP estipula, de início, os papéis de cada um dentro FRQW¯QXDHRXWURVYDORUHVGR;3(PPHQRVGHXPDQRDOJRTXHQ¥R
do planejamento. Ele conta com quatro fases: VHFRQVHJXLDK£TXDWURDQRVRVLVWHPDIRLGHVHQYROYLGRHHYROX¯GR
)DVH GH &RQFHSomR  ,QLFLDomR: diz respeito às constantemente sem maiores problemas.
tarefas de comunicação com o cliente e ao planejamento. São 2;3PXGDRSDUDGLJPDRQGHQ¥RWHPRVRPHGRGDPXGDQ©DSRLV
estabelecidas as prioridades, as etapas, entre outros. RHUUDU«IHLWRFRPXPEDL[RFXVWR'LIHUHQWHGRWUDGLFLRQDOHPTXHVH
)DVH GH (ODERUDomR: é o momento em que se faz o diz que quanto mais tarde a mudança, maiores são os custos, e assim
modelo genérico do processo. O propósito é o de analisar o VHQGR QXQFD GHYHPRV ID]HU PXGDQ©DV R ;3 GL] TXH GHYHPRV VLP
problema, repassar os riscos e arquitetar o projeto, ainda em estar constantemente fazendo mudanças e não devemos teme-las,
sua forma básica. principalmente quando seguimos os seus valores e as suas práticas.
)DVHGH&RQVWUXomR: É o momento em que se faz, de 2XWUD VLWXD©¥R GHVDȴDGD SHOR ;3 « D HQJHQKDULD GH VRIWZDUH TXH
fato, o desenvolvimento do projeto. Faz-se, aqui, a construção DȴUPD VHPSUH SURMHWDUPRV SDUD PXGDQ©D RX VHMD YDOH GHVSHQGHU
do sistema de software, e o enfoque é no desenvolvimento de tempo e esforço antecipando mudanças quando isso reduz custos
componentes. SRVWHULRUHVQRFLFORGHYLGD1RHQWDQWRQRYDPHQWHR;3DVVXPHTXH
)DVH GH 7UDQVLomR: diz respeito à entrega do software este esforço não vale a pena quando as mudanças não podem ser
ao usuário. É, também, a fase de testes. Com isso, é possível FRQȴDYHOPHQWHSUHYLVWDVRXVHMDQ¥RYDOHDSHQDHPSUHJDUPRVXP
disponibilizar o sistema ao usuário, que pode avaliá-lo. grande esforço que pode nem mesmo ser utilizada no agora, no futuro
ou nunca. Fonte: <http://www.devmedia.com.br/conceitos-basicos-
sobre-metodologias-ageis-para-desenvolvimento-de-software-
PHWRGRORJLDVFODVVLFDV[H[WUHPHSURJUDPPLQJ! $FHVVR HP
05 abr. 2017.

Já vimos que a metodologia XP pode ser utilizada,


inclusive, em equipes grandes, como deixam evidentes os
casos de sucesso. Lendo a aula, restam dúvidas? Em caso
afirmativo, não hesitem em nos procurar, ok?

Retomando a aula
Figura 7: <http://www.infoescola.com/wp-content/uploads/2010/03/FasesRUP.
jpg>. Acesso em: 05 abr. 2017.

2.8([WUHPH3URJUDPPLQJ ;3
Parece que estamos indo bem. Então, para encerrar esta
Dentro das metodologias ágeis, há o XP, adequado para
aula, vamos recordar:
equipes reduzidas ou médias que, geralmente, desenvolvem
software baseado em requisitos vagos, com rápida modificação.
Tem por vantagem a possibilidade de se ter um feedback rápido 3URFHVVRVGHVRIWZDUH
e constante, incrementos e comunicação fácil entre as pessoas. A seção I abordou alguns conceitos acerca dos processos
Com isso, garante-se rapidez por ter um enfoque no cliente de software. Com ela, foi possível entender de que um
e na comunicação com ele, pois torna-se fácil a compreensão processo de software diz respeito ao conjunto de atividades
acerca do produto final e de sua elaboração. que são relacionadas e que levam à produção de um produto
O excerto abaixo discute alguns dos casos de sucesso
de software. Portanto, o processo de software culmina no
acerca da metodologia XP, vamos ver?
produto final, entendido como produto de software.

2VRSRVLWRUHVGR;3GL]HPTXH;3«SDUDWLPHVRXSURMHWRVSHTXHQRV 0RGHORVGHSURFHVVRVGHVRIWZDUH
1RHQWDQWRKLVWµULDVGHVXFHVVRFRPRDGDJUDQGHHPSUHVDFKDPDGD Esta seção, mais específica, trouxe à tona diversas
&KU\VOHU$&KU\VOHUSRVVX¯DXPVLVWHPDGHIROKDGHSDJDPHQWRJOREDO metodologias de processos de software. Conhecemos cada
que envolvia seus 90 mil empregados ao redor de todo o mundo. uma delas, mas, certamente, é possível ampliar os estudos. Que
([LVWLD XP VLVWHPD &2%2/ H FRQYHUWHXVH HP 6PDOOWDON QD «SRFD
tal verificarmos alguns links que serão úteis nesse sentido?
374 Engenharia de Software I 18

Vale a pena

Vale a pena acessar

Disponível em: <http://araguaia2.ufmt.br/professor/


disciplina_arquivo/100/20140922403.pdf>.
Disponível em: <http://homepages.dcc.ufmg.
br/~figueiredo/disciplinas/aulas/processos-software_v01.
pdf>.

Minhas anotações
375

Aula 3º

Análise de requisitos

Olá, pessoal, tudo bem?


Chegamos à nossa aula de verificarmos conteúdos
relacionados à análise de requisitos. É o momento de
entendermos as especificações relacionadas ao conceito e de
que modo a análise de requisitos contribui para que o cliente
tenha seus desejos atendidos quando solicita um produto na
área da engenharia de software.
Vamos lá?
Boa aula!

)LJXUDKWWSVZZZSURȴVVLRQDLVWLFRPEUDQDOLVHGHVLVWHPDVOHYDQWD
mento-de-requisitos/>. Acesso em: 05 abr. 2017.

Objetivos de aprendizagem

Esperamos que, ao término desta aula, vocês sejam capazes de:

‡GHILQLUUHTXLVLWRV
‡HQWHQGHUOLPLWDo}HVHGHVGREUDPHQWRVUHODFLRQDGRVjDQiOLVHGHUHTXLVLWRV
376 Engenharia de Software I 20
importância da discussão sobre requisitos, mas, também, sua
Seções de estudo aplicação.
Quando falamos especificamente acerca dos requisitos de
software, chegamos a um ponto fulcral do sucesso do projeto.
Independentemente de qual software vai ser projetado, caso a
1 - Definição de requisitos análise de requisitos não seja feita adequadamente, não teremos
2 - Especificação de software ou engenharia de requisitos um bom resultado.
3 - Processos de comunicação e documentação No contato com o cliente, precisamos tentar chegar a
algo concreto, a desejos e necessidades bem definidos para
1'HȴQL©¥RGHUHTXLVLWRV termos uma função e um desempenho adequado em relação
ao produto a ser desenvolvido:

Até agora, já pudemos perceber que o Desenvolvimento Alguns dos problemas que surgem durante o
lida com o processo de se transformar um desejo em um processo de engenharia de requisitos são as
produto que satisfaça tais desejos. Parece complexo? Vejam falhas em não fazer uma clara separação entre
a imagem: esses diferentes níveis de descrição. Faço uma
distinção entre eles usando o termo ‘requisitos
GH XVXiULR· SDUD H[SUHVVDU RV UHTXLVLWRV
DEVWUDWRVGHDOWRQtYHOH¶UHTXLVLWRVGHVLVWHPD·
para expressar a descrição detalhada do que
o sistema deve fazer. Requisitos de usuário
H UHTXLVLWRV GH VLVWHPD SRGHP VHU GHÀQLGRV
como segue:
1. Requisitos de usuário são declarações, em
uma linguagem natural com diagramas, de
quais serviços o sistema deverá fornecer a seus
usuários e as restrições com as quais este deve
operar.
2. Requisitos de sistema são descrições mais
detalhadas das funções, serviços e restrições
operacionais do sistema de software. O
documento de requisitos do sistema (às vezes,
Figura 2: <http://www.devmedia.com.br/engenharia-de-requisitos-introducao-e-
FKDPDGRHVSHFLÀFDomRIXQFLRQDO GHYHGHÀQLU
FHUWLȴFDFDR!$FHVVRHPDEU exatamente o que deve ser implementado.
A imagem traz à tona diferentes modos de se compreender Pode ser parte do contrato entre o comprador
do sistema e os desenvolvedores de software
um produto a ser desenvolvido. O que muda, certamente, é de
(SOMMERVILLE, 2013. p. 58).
quem é o olhar diante do produto. Porém, uma coisa é certa:
faltou a definição de requisitos para que não houvesse tantos Perceberam a diferença entre requisitos de usuário e
problemas, concordam? Vejam alguns dados: de sistemas? O primeiro diz respeito às declarações menos
sistematizadas e o segundo está relacionado a declarações
Muito se discute sobre projeto de software,
mas ainda temos muitos problemas, detalhadas. Vejam uma definição sobre requisitos de
principalmente quando tratamos sobre os Sommerville (2013):
requisitos. O Relatório do Standish Group
Os requisitos de um sistema são as descrições
denominado Chaos, indica que 42% dos
do que o sistema deve fazer, os serviços que
projetos foram entregues fora do prazo
oferece e as restrições a seu funcionamento.
previsto, ainda indica que 21% dos projetos
(VVHV UHTXLVLWRV UHÁHWHP DV QHFHVVLGDGHV GRV
foram um fracasso total, e somente 37%
clientes para um sistema que serve a uma
dos projetos foram bem sucedidos. Segundo
ÀQDOLGDGH GHWHUPLQDGD FRPR FRQWURODU XP
o relatório, parte das falhas é devida a
dispositivo, colocar um pedido ou encontrar
problemas de requisitos, desta forma, é de
informações. O processo de descobrir,
suma importância para a equipe saber levantar
DQDOLVDU GRFXPHQWDU H YHULÀFDU HVVHV VHUYLoRV
e gerenciar requisitos (Fonte: <http://www.
e restrições é chamado engenharia de requisitos
devmedia.com.br/engenharia-de-requisitos-
(RE, do inglês requirements engineering).
LQWURGXFDRHFHUWLÀFDFDR ! $FHVVR
em: 05 abr. 2017.
. É importante ter claro, ainda, a diferença entre 5HTXLVLWR
Notamos, na citação, que quando o planejamento não é IXQFLRQDO e 5HTXLVLWR QmR IXQFLRQDO. O primeiro diz
feito de modo adequado, os requisitos não são estabelecidos UHVSHLWRDGHFODUDo}HVGHVHUYLoRVTXHRVLVWHPDGHYHIRUQHFHU
em parceria com o cliente. Então, isso gera problemas de de que modo o sistema deve reagir a entradas específicas
satisfação com o resultado final, exatamente como descreve e como o sistema deve se comportar diante de situações
a imagem acima. Para tanto, é preciso entender não só a específicas. O segundo diz respeito às restrições a serviços ou
funções ofertados pelo sistema, como restrições de timing,
21 377
no processo de desenvolvimento e as impostas pelas normas. abordamos a especificação de software dizemos respeito a um
Exemplificando: Pensando em um sistema comercial qualquer, estágio bastante crítico e importante do processo de software:
que possua o seguinte requisito funcional: Ao final de uma caso sejam cometidos erros nessa fase, ocorrerão problemas
venda o sistema deve gerar nota fiscal. Analisando o requisito no sistema no que tange ao projeto e à implementação. O
percebe-se que para gerar a nota fiscal que deve respeitar as propósito, então, é o de elaborar um documento por meio
normas impostas pela Receita Federal. Portanto, o requisito que especifique um sistema que satisfaça aos requisitos de
não funcional seria “a necessidade do conhecimento relativo às stakeholder. Há dois níveis por meio dos quais devem ser
normas”. Caso as normas não fossem seguidas, poderia gerar apresentados: os usuários finais e clientes recebem uma
uma inconsistência dos dados ou até a não geração da nota GHFODUDomRGHUHTXLVLWRVGHDOWRQtYHOMiRVGHVHQYROYHGRUHV
fiscal. de sistemas recebem uma especificação mais detalhada do
É fundamental, para tanto, entender quais são as etapas da sistema. Para Sommerville, há quatro atividades principais do
análise de requisitos. Esse será o assunto de nossa próxima seção. processo de engenharia de requisitos:
1. Estudo de viabilidade. É feita uma estimativa
2  (VSHFLȴFD©¥R GH VRIWZDUH RX acerca da possibilidade de se satisfazerem as
engenharia de requisitos QHFHVVLGDGHV GR XVXiULR LGHQWLÀFDGR XVDQGR
se tecnologias atuais de software e hardware.
A especificação de requisitos diz respeito ao processo O estudo considera se o sistema proposto
será rentável a partir de um ponto de vista
de escrita dos requisitos de usuários e de sistemas em um
de negócio e se ele pode ser desenvolvido no
documento, chamado de documento de requisitos. Ele deve âmbito das atuais restrições orçamentais. Um
ser claro, com uma linguagem simples, sem contradições, mas estudo de viabilidade deve ser relativamente
consistente e completa. Esse paralelo é difícil de ser alcançado, barato e rápido. O resultado deve informar a
tendo em vista que os stakeholders entendem os requisitos decisão de avançar ou não, com uma análise
de maneiras diversas, o que gera conflitos no que tange aos mais detalhada.
requisitos. 2. Elicitação e análise de requisitos. Esse é o
No que diz respeito aos requisitos de usuário, eles devem processo de derivação dos requisitos do
descrever os requisitos funcionais e não funcionais de modo sistema por meio da observação dos sistemas
que sejam acessíveis aos usuários do sistema mesmo que estes existentes, além de discussões com os
não tenham um conhecimento teórico e técnico a respeito do potenciais usuários e compradores, análise
assunto: de tarefas, entre outras etapas. Essa parte do
processo pode envolver o desenvolvimento de
Os requisitos de sistema são versões expandidas um ou mais modelos de sistemas e protótipos,
dos requisitos de usuário, usados por os quais nos ajudam a entender o sistema a ser
engenheiros de software como ponto de partida HVSHFLÀFDGR
para o projeto do sistema. Eles acrescentam 3. (VSHFLÀFDomR GH UHTXLVLWRV. É a atividade de
detalhes e explicam como os requisitos de traduzir as informações obtidas durante
usuário devem ser atendidos pelo sistema. Eles a atividade de análise em um documento
podem ser usados como parte do contrato para TXH GHÀQD XP FRQMXQWR GH UHTXLVLWRV 'RLV
a implementação do sistema e devem consistir tipos de requisitos podem ser incluídos
HPXPDHVSHFLÀFDomRFRPSOHWDHGHWDOKDGDGH nesse documento. Requisitos do usuário são
todo o sistema. declarações abstratas dos requisitos do sistema
Os requisitos do sistema devem descrever SDUD R FOLHQWH H XVXiULR ÀQDO GR VLVWHPD
apenas o comportamento externo do sistema e requisitos de sistema são uma descrição mais
suas restrições operacionais. Eles não devem se detalhada da funcionalidade a ser provida.
preocupar com a forma como o sistema deve 4. A validação de requisitos(VVDDWLYLGDGHYHULÀFD
ser projetado ou implementado. No entanto, os requisitos quanto a realismo, consistência e
para atingir o nível de detalhamento necessário completude (SOMMERVILLE, 2013, p. 24-
SDUDHVSHFLÀFDUFRPSOHWDPHQWHXPVLVWHPDGH 25).
software complexo, é praticamente impossível
eliminar todas as informações de projeto Ao serem seguidas cada uma dessas etapas, todos os
(SOMMERVILLE, 2013). erros verificados no documento de requisitos são descobertos.
Aí, então, é possível modificá-lo para eventuais correções.
Notaram a necessidade de sempre se voltar a atenção ao Certamente, não há uma sequência definida para realizar
usuário? Tenho certeza que sim! Os requisitos são uma etapa as atividades no processo de requisitos, até mesmo porque
fundamental para o desenvolvimento do software, e fazê-los durante a análise de requisitos, novos requisitos irão surgir:
corretamente só amplia a credibilidade do profissional. “Portanto, as atividades de análise, definição e especificação são
A especificação de software, ou engenharia de requisitos, intercaladas. Nos métodos ágeis, como extreme programming, os
diz respeito ao processo de compreensão e de definição dos requisitos são desenvolvidos de forma incremental, de acordo
serviços que são requisitados do sistema. Na sequência, esses com as prioridades do usuário, e a elicitação de requisitos é
serviços são identificados no que tange às restrições relativas à feita pelos usuários que integram equipe de desenvolvimento”
operação, bem como ao desenvolvimento do sistema. Quando (SOMMERVILLE, 2013, p. 25).
378 Engenharia de Software I 22
2.1 - Análise de Requisitos
A etapa de Análise de Requisitos é caracterizada
3 - Processos de comunicação e
basicamente pela realização de um conjunto de tarefas, as
documentação
quais serão discutidas individualmente a seguir:
A reflexão acerca dos processos de comunicação permite
‡$QiOLVHGRSUREOHPD entender de que forma se dá a criação de um software.
A primeira etapa diz respeito ao estudo dos documentos Nesse caminho, é importante entender que, por mais que
de Especificação do Sistema e o Plano de software. O um software seja desenvolvido para atender às necessidades
objetivo é entender o posicionamento do software no expressas por um determinado cliente, nem sempre, esse
sistema, bem como revisar o escopo do software utilizado. cliente irá utilizar tal software, que será destinado, na verdade,
Assim, é possível definir a estrutura do projeto. Para tanto, é a usuários finais:
importante que se desenvolva uma comunicação eficaz entre
a equipe de engenharia de software e o cliente. O gerente dos Os avanços na área da tecnologia têm
projetos pode atuar nesse processo. permitido ao longo dos últimos anos grande
Nessa primeira etapa, o cliente deve ser priorizado. informatização nos processos das organizações.
Muitas vezes, esquece-se da necessidade de sua participação, No entanto, dispor de um sistema de software
apesar de parecer óbvio. Podem-se elencar algumas questões que atenda as diversas necessidades da gestão
iniciais: organizacional pode se tornar um processo
Quem é o cliente? complexo. Isso implica, muitas vezes, em
Quem deve estar na equipe? desenvolver ou customizar um sistema. Mas
Quais são as necessidades da empresa? não é só isso: os sistemas de software precisam
A quais problemas ele está destinado? evoluir para acompanhar os modelos de gestão
Quem deve estar em contato com o cliente, ou, de quem e, neste contexto passam obrigatoriamente
é a responsabilidade para sanar dúvidas específicas? por manutenções que podem ser melhorias,
otimizações e até mesmo reparos. Segundo
‡$YDOLDomRHVtQWHVH 3ÁHHJHU  HVWDVPDQXWHQo}HVDEUDQJHP
A segunda etapa diz respeito à análise do fluxo de qualquer alteração ou correção efetuada num
informação e à elaboração das funções e dos aspectos de sistema que já está sendo utilizado, uma vez
comportamento do software. Nesse momento, todas as que sua vida útil não acaba com a entrega. A
questões relacionadas à interface do sistema devem ser grande maioria dos sistemas de software deve
respondidas. Além disso, é importante que haja o esclarecimento ser construída para incorporar mudanças:
das limitações dos projetos. Ao serem analisadas todas as seja porque o usuário decidiu realizar seu
possíveis problemáticas, é importante que se leve em conta processo de maneira diferente, seja porque
também as possíveis soluções para os problemas. Ao final, houve alguma alteração de leis ou normativas
faz-se uma sequência de contatos com o cliente, com o intuito municipais, estaduais ou mesmo federais que
de se verificar, em um contato dialógico, as soluções viáveis no regulamentam os requisitos do sistema (Fonte:
que diz respeito a tempo e recursos financeiros. <http://www.devmedia.com.br/artigo-
engenharia-de-software-24-a-comunicacao-
‡0RGHODJHP
no-processo-de-software/16807>. Acesso
Realizadas a avaliação e a síntese, pode-se definir um
em: 5 abr. 2017).
modelo do sistema. Isso irá possibilitar que se compreendam
melhor os fluxos de informação e de controle, e, do mesmo Nessa perspectiva, pensando na questão da comunicação
modo, aspectos funcionais e de comportamento. A modelagem nos processos de desenvolvimento de software, temos três
é uma base, uma referência para as atividades do projeto e, do
partes principais envolvidas: o cliente, o desenvolvedor
mesmo modo, para que se possam criar as especificações de
e finalmente os usuários. Para que a relação dê certo, é
requisitos. Além disso, pode ser desenvolvido, inclusive, um
importante que o profissional tenha em mente que os desejos
protótipo do software. Por meio de tal protótipo, é possível
saber se o software a ser desenvolvido é viável. expressos pelo cliente sejam compatíveis com as possíveis
necessidades dos usuários do sistema. Certamente, é preciso
‡(VSHFLILFDomRGRVUHTXLVLWRVHUHYLVmR muita atenção por parte do desenvolvedor, tendo em vista
Trata-se de um documento criado com o propósito de algumas dificuldades, tais como:
registrar resultados das tarefas realizadas. Paralelo à criação
da Especificação de Requisitos de Software, pode-se criar um ‡'LILFXOGDGHGRVFOLHQWHVHPHQWHQGHUDVSHFWRVUHODWLYRV
Manual Preliminar do Usuário. Este último permite que o aos softwares, ou ao processo de desenvolvimento de um
Engenheiro de Software observe o software sob a perspectiva SURJUDPD
do cliente, o que certamente dá mais qualidade ao produto ‡2GHVHQYROYHGRUFHUWDVYH]HVQmRFRQKHFHRVLVWHPDHP
final. Ele permite ainda que a revisão dos requisitos seja feita que o software irá executar. Para tanto, destaca-se a importância
em um momento inicial, evitando diversos problemas futuros dos documentos no que diz respeito à comunicação com o
no que tange aos aspectos do software. cliente acerca das possíveis problemáticas.
23 379
Sommerville (2013) deixa claro que a informação
incluída em um documento de requisitos dependerá de qual
tipo de software será desenvolvido. Também dependerá
da abordagem de desenvolvimento em uso. Em caso de
abordagens evolutivas, o documento de requisitos excluirá
muitos capítulos detalhados, e o enfoque se dará sobre
a definição de requisitos de usuários e sobre requisitos
não funcionais de alto nível de sistema. Nesse caso, são os
projetistas e programadores que decidirão como atender aos
requisitos gerais de usuário para o sistema.

Retomando a aula

&KHJDPRV DR ȴQDO GD WHUFHLUD DXOD 7UD©DPRV XP


bom caminho até aqui, não é mesmo? Vamos, então,
recordar?

Figura 4: Sommerville, 2013

O documento de requisitos terá suas especificações 'HILQLomRGHUHTXLVLWRV


definidas pelo tipo de sistema e pelo processo usado. Em casos Entendemos, na primeira seção, o conceito de requisitos
de sistemas críticos, é necessário haver requisitos detalhados. de um sistema, que são as descrições do que o sistema deve
Em caso de sistemas desenvolvidos por uma companhia fazer, quais os serviços a serem oferecidos e as restrições para
separada, tais especificações devem ser bastante detalhadas e seus funcionamentos.
precisas. Já quando o processo interno tem desenvolvimento
  (VSHFLILFDomR GH VRIWZDUH RX HQJHQKDULD GH
interativo, não são necessários tantos detalhes.
UHTXLVLWRV
Vejamos um documento apresentado por Sommervile
Nesta seção abordou-se a especificação de software.
(2013).
Entendemos, então, que ela diz respeito ao processo de
compreensão e de definição dos serviços que são requisitados
$ WDEHOD >@ PRVWUD XPD SRVV¯YHO RUJDQL]D©¥R GH XP GRFXPHQWR GH
do sistema. Na sequência, esses serviços são identificados no
requisitos baseada em uma norma IEEE para documentos de requisitos
que tange às restrições relativas à operação, bem como ao
(IEEE, 1998). Essa é uma norma genérica que pode ser adaptada
desenvolvimento do sistema.
SDUD XVRV HVSHF¯ȴFRV 1HVVH FDVR HX HVWHQGL D QRUPD SDUD LQFOXLU
informações sobre a evolução prevista do sistema. Essa informação 3URFHVVRVGHFRPXQLFDomRHGRFXPHQWDomR
ajuda os engenheiros de manutenção de sistema e permite que os Vimos que a reflexão acerca dos processos de
projetistas incluam suporte para futuros recursos do sistema. comunicação permite entender de que forma se dá a criação
de um software. Nesse caminho, é importante entender que,
por mais que um software seja desenvolvido para atender
às necessidades expressas por um determinado cliente, nem
sempre esse cliente irá utilizar tal software, que será destinado,
na verdade, a usuários finais.

Vale a pena

Vale a pena assistir

Segue um vídeo no qual se aborda a engenharia de


requisitos. Disponível em: <https://www.youtube.com/
watch?v=0qclkZSFKmw>. Acesso em: 05 abr. 2017.

Figura 5: Sommerville, 2013.


380 Engenharia de Software I

4º Aula

Qualidade de software

Olá, pessoal!
Nesta aula, abordaremos a qualidade de software.
Vocês já devem ter percebido até aqui que desenvolver
um software de qualidade é um dos principais objetivos
de nosso campo de estudo, não é mesmo?
Esta aula, portanto, se dedicará à discussão de tal
tema.
Dispostos?
Boa aula!

Objetivos de aprendizagem

Esperamos que, ao término desta aula, vocês sejam capazes de:

‡HQWHQGHUGHPRGRDSURIXQGDGRDTXDOLGDGHGHVRIWZDUH
‡VDEHURVIDWRUHVTXHGHWHUPLQDPDTXDOLGDGHGHVRIWZDUH
‡FRQKHFHURVGLOHPDVUHODFLRQDGRVjTXDOLGDGHGHVRIWZDUH
25 381
produtos exatamente iguais, o que não ocorre no campo do
Seções de estudo desenvolvimento de software.
Em vista disso, a grande utilização de software em
1 - Qualidade de Softwares diferentes áreas faz com que a procura por produtos de
2 - O dilema da qualidade de software qualidade também seja ampliada:
A complexidade dos sistemas desenvolvidos
1 - Qualidade de Softwares também tem aumentado, bem como a
concorrência entre as empresas fornecedoras.
Assim, é muito comum haver reclamações
Caríssimos(as), em relação aos produtos de software gerados,
Vamos refletir acerca do conceito de qualidade. Quando apesar de estes serem imprescindíveis na
estamos discutindo por um aspecto profissional, é importante execução de diversas tarefas. Ou seja, apesar
termos em conta que a qualidade não parte de uma definição de todas as reclamações existentes em
popular. Em nível de dicionário, qualidade é entendida como relação aos softwares adquiridos, eles são
característica inerente a algo. Contudo, a ISO9126 (1994) define bastante utilizados, possivelmente por falta
qualidade como sendo: “[...] a totalidade de características e de alternativa (http://www2.dbd.puc-rio.
critérios de um produto ou serviço que exercem suas habilidades br/pergamum/tesesabertas/0812576_10_
para satisfazer às necessidades declaradas ou envolvidas”. cap_03.pdf).
Já para a NBR ISO 9000 (2005), “qualidade é o grau
Nessa perspectiva, é fundamental ao profissional
no qual um conjunto de características inerentes satisfaz aos
entender o que é qualidade em software e suas especificidades.
requisitos”.
O assunto começou a gerar debate ainda em 1960, quando
A qualidade de software, como já vimos, tem por
se notou, no desenvolvimento do primeiro grande sistema
propósito garantir que se elabore um bom software. Para
de software, que houve problemas relacionados em relação
Pressman “Qualidade de software é a satisfação de requisitos
a sua qualidade, como mostra Sommerville (2011). Já na
funcionais e de desempenho explicitamente declarados,
década de 1990, começou a ser percebido que empresas de
normas de desenvolvimento explicitamente documentadas e
grande porte estavam perdendo bilhões de dólares por ano
características implícitas que são esperadas em todo o software
devido aos softwares não apresentarem as características e
GHVHQYROYLGRSURÀVVLRQDOPHQWHµ 35(660$1 1HVVD
funcionalidades prometidas.
perspectiva, a discussão envolve uma busca pela satisfação tanto
Para que seja obtido um software com qualidade, é
com os requisitos funcionais e de desempenho explicitamente
importante ter a resposta de algumas questões:
declarados, quanto em relação às normas de desenvolvimento
Adequação do software à finalidade
explicitamente documentadas. De modo geral, almeja-se que
Durante o processo de desenvolvimento os padrões de
todo o software corresponda a determinada perspectiva, e que
programação e documentação foram seguidos?
cada etapa desempenhe função à qual foi planejada.
Além disso, é importante que se considere a questão ‡2VRIWZDUHIRLGHYLGDPHQWHWHVWDGR"
custo/benefício: o software deve ser planejado de modo que ‡2VRIWZDUHpFRQILiYHORVXILFLHQWHSDUDVHUFRORFDGR
gere o menor custo possível, desde que, certamente, não altere em uso?
a sua qualidade: ‡2GHVHPSHQKRGRVRIWZDUHpDFHLWiYHOSDUDXVRQRUPDO"
‡2VRIWZDUHpXViYHO"
A área de Qualidade na Engenharia de
‡2VRIWZDUHpFRPSUHHQVtYHOHHVWUXWXUDGR"
Software é similar a esta mesma área em outras
engenharias. Porém, há algumas características Para Pressman (2011), há três pontos a serem analisados
que distinguem os produtos de software dos no que diz respeito à qualidade de software:
demais produtos industriais. Os processos
de desenvolvimento de um produto da ʃ 8PD JHVWmR GH TXDOLGDGH HIHWLYD HVWDEHOHFH
engenharia e de um software podem apresentar infraestrutura que dá suporte a qualquer
muitas semelhanças em relação ao seu ciclo: tentativa de construir um produto de software
GHÀQLomRGRSURGXWRTXHVHGHVHMDFRQVWUXLURX de qualidade.
GHVHQYROYHU DQiOLVH GRV UHTXLVLWRV GHÀQLomR ʃ 8P SURGXWR ~WLO IRUQHFH R FRQWH~GR DV
da arquitetura macro e construção do projeto IXQo}HVHRVUHFXUVRVTXHRXVXiULRÀQDOGHVHMD
detalhado, fabricação ou desenvolvimento DOpP GLVVR GHYH IRUQHFHU FRQÀDELOLGDGH H
e entrega. Entretanto, a maneira como um isenção de erros.
software é produzido se difere, pois este é ʃ $R DJUHJDU YDORU WDQWR SDUD R IDEULFDQWH
intangível e está mais sujeito ao erro humano quanto para o usuário de um produto de
(http://www2.dbd.puc-rio.br/pergamum/ software, um software de alta qualidade gera
tesesabertas/0812576_10_cap_03.pdf). benefícios para a empresa bem como para os
XVXiULRVÀQDLV
Desse modo, caso se desenvolva dois softwares por
meio do mesmo processo de desenvolvimento, eles terão, Na próxima seção, discutiremos cada uma das
certamente, algumas particularidades. No entanto, quando especificidades relacionadas à qualidade de software. Vamos
tratamos de produtos industriais, é comum haver diversos lá?
382 Engenharia de Software I 26
1.1 - Dimensão de qualidade de de software. Quem faz essa aproximação é Pressman (2006). É
Garvin ele quem dimensiona a questão das oito dimensões de modo
articulado às discussões acerca do software.
David A. Garvin, em 1984, publicou um importante
estudo no MIT Sloan Management Review, sob o título “O 1.2 - Fatores de Qualidade de McCall
que significa realmente Qualidade do Produto?”, no qual
O segundo fator que verificaremos são os fatores de
estabelece oito dimensões para qualidade. É importante
qualidade de McCall. Novamente, Pressman (2006) pautará
saber que as oito dimensões de Garvin não são específicas
nossas reflexões. McCall, Richards e Walters elaboraram
a software, porém, podem ser aplicados a esse campo sem
uma proposta com o intuito de impactar as discussões sobre
nenhum problema. Vamos conhecê-las?
a qualidade de software. A teoria tem por base focar em três
4XDOLGDGH GR GHVHPSHQKR. O software aspectos considerados mais importantes no que diz respeito
fornece todo o conteúdo, funções e recursos a um produto de software: as características operacionais, a
TXHVmRHVSHFLÀFDGRVFRPRSDUWHGRPRGHOR habilidade de suportar mudanças e a adaptabilidade a novos
de requisitos de forma a gerar valor ao usuário ambientes.
ÀQDO" McCall e seu grupo fazem as seguintes descrições no que
4XDOLGDGHGRVUHFXUVRV. O software fornece diz respeito à qualidade:
recursos que surpreendem e encantam
XVXiULRV ÀQDLV TXH RV XWLOL]DP SHOD SULPHLUD Correção. O quanto um programa satisfaz a sua
vez? HVSHFLÀFDomRHDWHQGHDRVREMHWLYRVGDPLVVmR
&RQIRUPLGDGH. O software está de acordo do cliente.
com os padrões de software locais e externos &RQÀDELOLGDGH2TXDQGRVHSRGHHVSHUDUTXH
relacionados com a aplicação? Segue as um programa realize as função pretendida com
FRQYHQo}HVGHSURMHWRHFRGLÀFDomRGHIDWR" a precisão exigida.
Por exemplo, a interface com o usuário está (ÀFLrQFLD $ TXDQWLGDGH GH UHFXUVRV
de acordo com as regras de projeto aceitas computacionais e código corrigidos por um
para seleção de menus ou entrada de dados? programa para desempenhar sua função.
'XUDELOLGDGH. O software pode ser mantido Integridade. O quanto o acesso ao software ou
PRGLÀFDGR  RX FRUULJLGR GHSXUDGR  VHP dados por pessoas não autorizadas pode ser
a geração involuntária de efeitos colaterais controlado.
indesejados? as mudanças farão com que a Usabilidade. Esforço necessário para aprender,
WD[D GH HUURV RX D FRQÀDELOLGDGH GLPLQXDP operar, preparar a entrada de dados e interpretar
com o passar do tempo? a saída de um programa.
)DFLOLGDGH GH 0DQXWHQomR. O software Facilidade de manutenção. Esforço necessário
SRGH VHU PDQWLGR PRGLÀFDGR  RX FRUULJLGR para localizar e corrigir um erro em um
(depurado) em um período de tempo aceitável programa.
e curto? O pessoal de suporte pode obter Flexibilidade. Esforço necessário para testar
todas as informações necessárias para realizar um programa de modo a garantir que ele
alterações ou corrigir defeitos? [...] desempenhe a função destinada.
(VWpWLFD. Não há duvida nenhuma de que Portabilidade. Esforço necessário para
cada um de nós tem uma visão diferente muito transferir o programa de um ambiente de
subjetiva do que é estética. Mesmo assim, a hardware ou software para outro.
maioria de nós concordaria que uma entidade Recusabilidade. O quanto um programa
HVWpWLFDWHPFHUWDHOHJkQFLDXPÁXLU~QLFRp pode ser reutilizado em outras aplicações
XPD´SUHVHQoDµTXHVmRGLItFHLVGHTXDQWLÀFDU (PRESSMAN, 2011, p. 362).
mas que, não obstante, são evidentes. Um
software estético possui essas características. Certamente, nem sempre é possível saber diretamente o
3HUFHSomR. Em algumas situações, temos quanto cada um dos fatores provoca impacto. Tais medidas são
DOJXQV SUHFRQFHLWRV TXH LQÁXHQFLDUmR QRVVD utilizadas, majoritariamente, em um aspecto indireto. Abaixo,
percepção de qualidade. Por exemplo, se segue uma figura com um exemplo da aplicação dos fatores
for apresentado um produto de software de McCall:
construído por um fornecedor que, no
passado, havia produzido software de
Pi TXDOLGDGH ÀFDUHPRV FRP D QRVVD
percepção de qualidade do produto software
LQÁXHQFLDGD QHJDWLYDPHQWH 6LPLODUPHQWH VH
um fornecedor tem uma excedente reputação,
talvez percebamos qualidade, mesmo quando
ela realmente não existe (PRESSMAN, 2006,
p. 361).

Como discutido anteriormente, David A. Garvin não


estipulou dimensões de qualidade especificamente para a área Figura 1. Pressmann, 2011, p. 362.
27 383
1.3 - Fatores de Qualidade ISO 9126 A maneira de resolver essa equação é entendendo que
a oferta de produtos de qualidade precisa “caber” dentro do
Os fatores de qualidade ISO 9126 estabelecem seis fatores tempo e dentro do financeiro do qual se dispõe. A prática
para aferição da qualidade do software. Pressman (2011) aliada a análises críticas permitirá que vocês consigam conciliar
também discute os fatores de qualidade ISSO 9126. os três aspectos: qualidade, prazo e custo. Diálogos com a
Segundo Pressman (2011, p. 363) são expressos da equipe, o contato com o cliente, a verificação de satisfação
seguinte maneira: dos usuários são elementos que possibilitam que nossos três
fatores básicos entrem em convergência, possibilitamos que
Funcionalidade. O grau com que o software nosso público cresça.
satisfaz às necessidades declaradas conforme Assim, um software “bom o suficiente” oferta aos usuários
indicado pelos seguintes subatributos: funções e características de alta qualidade, mas, do mesmo
adequabilidade, exatidão, interoperabilidade, modo, outras funções que possam conter erros conhecidos. O
conformidade e segurança. fornecedor do software, contudo, tem em mente que a grande
&RQÀDELOLGDGH $ TXDQWLGDGH GH WHPSR TXH maioria dos usuários não irá se apegar em pequenos problemas
R VRIWZDUH ÀFD GLVSRQtYHO SDUD XVR FRQIRUPH
devido à satisfação com as outras funcionalidades.
indicado pelos seguintes subatributos:
maturidade, tolerância a falhas, facilidade de
recuperação.
2.2 - Custo da Qualidade
Usabilidade. O grau de facilidade de utilização Outra questão a ser levada em conta são os custos da
do software conforme indicado pelos seguintes qualidade do software. Esse aspecto inclui todos os custos
subatributos: facilidade de compreensão,
necessários para que se busque qualidade, considerando-se os
facilidade de aprendizagem, operabilidade.
(ÀFLrQFLD2JUDXGHRWLPL]DomRGRXVRSHOR
custos causados devido à falta de qualidade. Pode-se dizer que
software, dos recursos do sistema conforme os custos relativos à qualidade envolvem: prevenção, avaliação
indicado pelos seguintes subatributos: e falhas. Cada uma dessas etapas envolvem custos.
comportamento em relação ao tempo, Custos de prevenção: envolvem os custos relacionados às
comportamento em relação aos recursos. atividades para gerenciamento, planejamento e coordenação
Facilidade de manutenção. A facilidade com GDV DWLYLGDGHV FXVWRV GH DWLYLGDGHV WpFQLFDV DGLFLRQDLV
a qual uma correção pode ser realizada no SODQHMDPHQWR GH WHVWHV WUHLQDPHQWR DVVRFLDGR jV HWDSDV
software conforme indicado pelos seguintes anteriores.
subatributos: facilidade de análise, facilidade Custos de avaliação: envolvem atividades que permitam
de realização de mudanças, estabilidade, que se compreenda a condição do produto. Estão relacionados
testabilidade. jUHDOL]DomRGHUHYLV}HVWpFQLFDVFROHWDGHGDGRVHDYDOLomRGH
Portabilidade. A facilidade com a qual um
PpWULFDVWHVWHVHGHSXUDo}HV
software pode ser transposto de um ambiente
a outro conforme indicado pelos seguintes
Custos de falhas: são organizados em: custo de falhas
subatributos: adaptabilidade, facilidade de internas: são gerados quando se percebe um erro antes da
instalação, conformidade, facilidade de HQWUHJD DR FOLHQWH FXVWR GH IDOKDV H[WHUQDV VmR SHUFHELGRV
substituição. quando há erros depois da entrega ao cliente.

Os fatores ISSO 9126, do mesmo modo que os outros, não 2.3 - Riscos
conduzem a uma medida exata e direta. Contudo, são bastante
importantes para que se desenvolvam medidas indiretas, e uma Outro dilema importante da qualidade de software diz
lista de verificação para avaliar a qualidade do sistema. respeito aos riscos. Certamente, caso o software tenha baixa
Após ver maneiras de se medir e investigar a qualidade do qualidade, os riscos estarão presentes. Tanto o desenvolvedor
software, nossa próxima seção abordará questões relacionadas a quando o usuário podem percebê-los. A título de exemplo, em
possíveis problemáticas e dificuldades da qualidade de software. 2000, devido a uma alteração de software pela equipe de um
hospital, vinte e oito pacientes receberam uma dose maciça
de raio gama. Isso ocasionou na morte de cinco pacientes e
2 - O dilema da qualidade de software quinze tiveram complicações. A segurança, portanto, deve ser
um elemento fundamental quando se desenvolve um produto
de software.
2.1 - Software “bom o suficiente” Um software com baixa qualidade também ocasiona maior
possibilidades de pirataria, o que aumenta, em consequência,
No mundo contemporâneo, todos trabalham com prazos
os riscos que podem advir dela. Nessa perspectiva, entra em
apertados, dias corridos de trabalho. No campo da engenharia
cena o impacto das ações administrativas.
de software não é diferente. Contudo, para mantermos um
público, devemos ofertar produtos de qualidade. Do contrário, 2.4 - O Impacto das ações
ficaremos obsoletos. É importante, para tanto, pensarmos na administrativas
seguinte questão: devemos ofertar sempre o melhor produto
possível. As discussões acerca da qualidade de software envolvem
Mas, em relação aos prazos, custos? Como conciliar? também a questão das decisões administrativas. Nessa
384 Engenharia de Software I 28
perspectiva, para Presmann (2011, p. 462) “Até mesmo qualidade de software. Discutimos cada uma deles de modo a
as melhores práticas de engenharia de software podem ser entender como é possível aferir a qualidade de um software.
subvertidas por decisões de negócios inadequadas e ações
questionáveis de gerenciamento do projeto”. Há, então, 2GLOHPDGDTXDOLGDGHGHVRIWZDUH
decisões que podem ser decisivas na qualidade do produto, a Aqui, vimos questões relacionadas à gerência, custos
serem consideradas pelo líder do projeto. As primeiras são as e implicações relacionados a um software de qualidade.
GHFLV}HVGHHVWLPDWLYDV, relacionadas ao que a equipe pode É importante ter em mente que caso o software não
fornecer no que tange a previsões e estimativas. A equipe, para tenha qualidade, poderá acarretar em riscos, tanto para o
tanto, realiza algumas decisões para estabelecer qual será o desenvolvedor quanto par os usuários.
prazo de entrega, o custo, entre outros. Também é importante
pensar sobre as GHFLV}HV GH FURQRJUDPD. Depois que se Vale a pena
elaborou um cronograma, é importante que as tarefas sejam
elaboradas tomando como base as dependências de um
componente em relação a outro cada componente deve ser
testado e avaliado para que não acarrete em problemas no
próximo componente.
Vale a pena acessar

2.5 - Alcançando a Qualidade de BALTHAZAR, Glauber da Rocha. Visão Geral da


Software Qualidade de Software. Disponível em: <http://re.granbery.
Finalmente, vamos refletir acerca da qualidade de edu.br/artigos/MjUw.pdf>. Acesso em: 05 abr. 2017.
software e como alcançá-la. Certamente, todos os fatores
discutidos anteriormente são extremamente importantes,
mas, vamos verificar outras questões.
Minhas anotações
Para se alcançar um software de qualidade, é preciso
que haja um bom gerenciamento de projeto, bem como uma
prática consistente de engenharia de software. Há, assim,
quatro padrões de qualidades de software a serem alcançados:
Métodos de engenharia de software: envolvem a
capacidade da equipe de entender o problema a ser resolvido.
Do mesmo modo, o projeto deve ter adequação à solução de
problemas. Ele deve, ainda, considerar as dimensões e fatores
de qualidade.
Técnicas de gerenciamento de software: diz respeito às
técnicas explícitas para que se gerenciem as mudanças que
conduzirão à qualidade. As especificações técnicas contribuem
para o mínimo de erros.
Controle de qualidade: diz respeito às revisões e
verificações no que diz respeito à busca pelas metas de
qualidade. Aqui, é feita uma etapa de testes para investigar e
solucionar possíveis erros. Assim, os testes feitos e os feedbacks
recebidos conduzem ao máximo de qualidade.
Garantia da qualidade: engloba tanto a infraestrutura
para suportar os métodos sólidos de engenharia de software,
o gerenciamento dos projetos e as ações de controle de
qualidade. Nessa fase, também se faz um conjunto de
funções de auditoria e elaboram-se relatórios para se avaliar
efetivamente as ações de controle de qualidade.

Retomando a aula

&KHJDPRVDRȴQDOGDTXDUWDDXOD
Vamos recordar?

4XDOLGDGHGH6RIWZDUH
Nesta seção, verificamos diversos fatores relacionados à
385

Aula 5º

Projeto e implementação
de software

Olá, alunos(as)!
Esta é nossa quinta aula!
É o momento de verificarmos e entendermos a
implementação do desenvolvimento de software. O estágio
de projeto e de implementação do software diz respeito
à conversão de uma especificação do sistema em um
sistema passível de execução. Analisaremos tal ideia e seus
desdobramentos.
Prontos para mais uma aula?
Boa aula!

Objetivos de aprendizagem

Esperamos que, ao término desta aula, vocês sejam capazes de:

‡HQWHQGHURSURMHWRHLPSOHPHQWDomRGRGHVHQYROYLPHQWRGHVRIWZDUH
‡FRQKHFHURVSURMHWRVRULHQWDGRVDREMHWRVHSDGU}HVGHSURMHWRV
‡YHULILFDUDVSHFWRVUHODFLRQDGRVjLPSOHPHQWDomR
386 Engenharia de Software I 30

Seções de estudo 2 - Projetos orientados a objetos com


80/
Para avançarmos, vamos entender, agora, como são
1 - Projeto e implementação
implementados os sistemas orientados a objetos. Eles são
2 - Projetos orientados a objetos com UML
compostos interativos, tendo em vista que podem manter
3 - Tradução
o seu próprio estado local, e, também, oferecer operações
4 - Características das linguagens de programação
nesse mesmo estado. A representação de seu estado, contudo,
é privada: não pode ser acessada diretamente. Os projetos
1 - Projeto e implementação orientados a objetos permitem que se projetem as classes de
objetos e sejam feitos relacionamentos entre elas. Tais classes,
por sua vez, são responsáveis pela definição dos objetos no
Quando falamos sobre o estágio de projeto e sistema, bem como suas interações. Já quando o projeto é
implementação do desenvolvimento de software, referimo- elaborado como um programa em execução, os objetos ganham
nos ao processo em que se converte uma especificação de dinamicidade, tendo como base as definições de classe. Além
sistema em um sistema que possa ser executado. Para tanto, as disso, os sistemas orientados a objetos ganham em facilidade
etapas de projeto e implementação envolvem a formalização no que diz respeito a alterações do que os sistemas que são
das ideias verificadas na etapa da engenharia do sistema, dos desenvolvidos com abordagens funcionais. Tendo em vista que
requisites estabelecidos e dos modelos gerados na etapa de os projetos orientados a objetos incluem dados e operações
projeto para que o sistema computacional alvo possa realizar para manipulá-los:
as tarefas definidas anteriormente:
>«@HOHVSRGHPVHUHQWHQGLGRVHPRGLÀFDGRV
As atividades de projeto e implementação de como entidades autônomas. Alterar a
software são invariavelmente intercaladas. O implementação de um objeto ou adicionar
projeto de software é uma atividade criativa serviços não deve afetar outros objetos do
sistema. Como os objetos são associados com
HP TXH YRFr LGHQWLÀFD RV FRPSRQHQWHV GH
coisas, muitas vezes existe um mapeamento
software e seus relacionamentos com base
claro entre entidades do mundo real (como
nos requisitos do cliente. A implementação é
componentes de hardware) e seus objetos
o processo de concretização do projeto como de controle no sistema, o que melhora a
um programa. Às vezes, existe um estágio de inteligibilidade e, portanto, a manuteniblidade
projeto separado e esse projeto é modelado do projeto (2013, p. 26).
e documentado. Em outras ocasiões, um
SURMHWR HVWi ¶QD FDEHoD· GR SURJUDPDGRU RX Para que possamos elaborar o desenvolvimento de um
esboçado em um quadro ou em papel. Um projeto de sistema desde o princípio até um projeto detalhado
projeto trata de como resolver um problema, orientado a objeto, devemos seguir algumas etapas, conforme
por isso, sempre existe um processo de estabelece Sommerville (2013, p. 26):
projeto. No entanto, nem sempre é necessário
ou apropriado descrever o projeto em  &RPSUHHQGHU H GHÀQLU R FRQWH[WR H DV
detalhes usando a UML ou outra linguagem interações externas com o sistema. 2. Projetar
de descrição (SOMMERVILLE, 2011, p. 25). D DUTXLWHWXUD GR VLVWHPD  ,GHQWLÀFDU RV
principais objetos do sistema. 4. Desenvolver
No início do projeto de software, uma das primeiras PRGHORV GH SURMHWR  (VSHFLÀFDU LQWHUIDFHV
decisões que são tomadas é se o software será comprador Como todas as atividades criativas, o projeto
ou construído. Aliás, comprar sistemas de prateleira é uma não é um processo sequencial claro. Você
desenvolve um projeto tendo ideias, propondo
possibilidade atual. Assim, tais sistemas podem ser adaptados
VROXo}HVHUHÀQDQGRHVVDVVROXo}HVDVVLPTXH
e adequados aos requisitos dos usuários. Nessa perspectiva, DV LQIRUPDo}HV ÀFDP GLVSRQtYHLV 4XDQGR RV
quando se está, por exemplo, implementando um sistema de problemas surgem, inevitavelmente você tem
prontuário médio, é possível adquirir um pacote já elaborado de voltar atrás e tentar novamente. Às vezes,
e utilizado em hospitais. Com isso, o desenvolvimento de você explora as opções detalhadamente para
sistema pode ser barateado e entregue ao cliente mais rápido: YHU VH HODV IXQFLRQDP HP RXWURV PRPHQWRV
YRFrLJQRUDRVGHWDOKHVDWpRÀPGRSURFHVVR
Quando você desenvolve uma aplicação dessa porque isso implicaria a possibilidade de o
forma, o processo de projeto preocupa-se em projeto ser pensado como uma sequência de
¶FRPR·XVDURVUHFXUVRVGHFRQÀJXUDomRGHVVH atividades. Na verdade, todas essas atividades
sistema para cumprir os requisitos do sistema. VmR LQWHUFDODGDV H DVVLP LQÁXHQFLDPVH
Usualmente, você não desenvolve modelos mutuamente (SOMMERVILLE, 2013, p. 26).
de projeto do sistema, como modelos
de objetos do sistema e suas interações Já a UML é uma Linguagem de Modelagem Unificada.
(SOMMERVILLE, 2013, p. 25). Diz respeito a uma linguagem gráfica que permite visualizar,
31 387
especificar, construir e documentar artefatos de um sistema Para tanto, veremos, agora, algumas das características da
orientado a objetos. Assim, os projetos orientados a objetos linguagem de programação.
com UML podem ser desenvolvidos de forma rápida e eficiente.
Também permite que a estrutura e comportamento do sistema 4&DUDFWHU¯VWLFDVGDVOLQJXDJHQVGH
sejam visualizados de forma mais fácil. É possível, ainda, que programação
se visualize e se controle a arquitetura do sistema. Há, também,
um entendimento mais rápido do sistema em processo, o que, As linguagens de programação são responsáveis
certamente, torna mais fácil o gerenciamento de riscos. por desempenhar o papel de agente de formalização das
representações de projeto no sistema computacional. Entre
suas características, estão a possibilidade de desempenhar um
impacto no processo de decodificação. Entre as características,
estão:

‡ &DUDFWHUtVWLFDV SVLFROyJLFDV 'H DFRUGR FRP D yWLFD


psicológica, a facilidade de uso, a simplicidade de aprendizagem,
a confiabilidade e a baixa frequência dos erros, são algumas
das características a serem consideradas pelas linguagens de
programação. Tais fatores podem afetar o desenvolvimento
de um software, pois a codificação é uma atividade humana.
Figura 1. Fonte: <https://webserver2.tecgraf.puc-rio.br/ftp_pub/lfm/CIV2802-131-Au-
la04-ModelagemOrientadaObjetos.pdf>. Acesso em 8 abr. 2017. ‡&DUDFWHUtVWLFDVGHHQJHQKDULDSRGHVHGL]HUTXHSDUD
Deve-se ter uma visão de casos de usos, de modo que a engenharia de software, a linguagem de programação
se exponham as exigências do sistema. Assim, é possível ter está relacionada com as necessidades do processo de
uma visão do projeto de modo que se capture o vocabulário desenvolvimento do software. Nesse aspecto, podem-se
do espaço do problema e do espaço da solução. Pode-se elencar algumas características decorrentes dessa necessidade:
ainda ter uma visão do processo de modo que seja possível Ⱥ )DFLOLGDGH GH GHULYDomR GR FyGLJRIRQWH HVWi
modelá-lo à distribuição dos processos e das linhas do sistema. relacionada à aproximação da linguagem de programação
Também é possível uma visão da implementação, de modo com a linguagem de representação do projeto. Geralmente,
dirigido à realização física do sistema. Por fim, tem-se uma as linguagens que dão suporte às construções estruturadas
visão da distribuição, com foco na edição da engenharia do possibilitam a manipulação de bits, a construção orientada a
sistema. Juntas, tais visões representam as plantas de sistemas objetos e construções de entrada e saída.
computacionais. Ⱥ (ILFLrQFLD GR FRPSLODGRU HVWi UHODFLRQDGD FRP
os requisitos de tempo de resposta e concisão acerca dos
projetos. A maior parte dos compiladores de linguagem de
3 - Tradução alto nível tem geração de código ineficiente.
Ⱥ3RUWDELOLGDGHGL]UHVSHLWRjSRVVLELOLGDGHGRFyGLJR
A tradução do desenho detalhado no código de uma fonte migrar de um ambiente para outro com o mínimo de
ou mais linguagens de programação é feita na atividade de alterações.
´FRGLÀFDomRµ(VVHPDSHDPHQWRUHVXOWDQRFyGLJRIRQWH$V Ⱥ $PELHQWH GH GHVHQYROYLPHQWR GL] UHVSHLWR j
unidades de código fonte produzidas são submetidas a uma disponibilidade de ferramentas de desenvolvimento para uma
revisão de código. Nesse processo, são corrigidos os defeitos ampla gama de aplicações.
gerados a partir de erros de digitação, ou, ainda, do uso da Ⱥ0DQXWHQLELOLGDGHGL]UHVSHLWRjVIDFLOLGDGHVQRTXH
linguagem. Quando se faz uma revisão, deve-se considerar que tange às alterações do código-fonte para a manutenção. A
são introduzidos por erros de digitação ou de uso da linguagem. clareza do código-fonte é um item essencial para o sucesso
Essa revisão também deve ser feita pelos autores. Outros das tarefas de manutenção.
programadores podem contribuir nesse processo. As unidades
de código fonte são transformadas em código objeto por ‡ &DUDFWHUtVWLFDV WpFQLFDV Ki GLYHUVDV FDUDFWHUtVWLFDV
meio de um compilador. Nesse sentido, o código objeto será técnicas relacionadas à linguagem de programação. Elas
mapeado nas instruções executáveis pelo microprocessador exercem forte impacto na qualidade do software, bem como
que compõe o sistema computacional, resultando no código nas condições por meio das quais ele é desenvolvido.
de máquina ou código executável. Ⱥ6XSRUWHDWLSRVGHGDGRVDWXDOPHQWHQDVOLQJXDJHQV
Em grande parte dos casos, o primeiro nível de de programação, o suporte à representação de dados tem
mapeamento é obtido de forma manual ou semiautomatizada, como características a existência de diversas categorias de
estando sujeito a “ruídos” inerentes do processo. Temos dados, tanto em estruturas extremamente simples até em
alguns exemplos de ruídos: interpretação errônea de aspectos estruturas extremamente complexas.
GH HVSHFLILFDomR GR SURMHWR UHVWULo}HV RX FRPSOH[LGDGHV Ⱥ 6XESURJUDPDV VmR FRPSRQHQWHV GR SURJUDPD
características da linguagem de programação adequada. As que contém estruturas de controle e de dados passíveis de
restrições advindas de uma linguagem de programação, ou serem compilados individualmente. No que diz respeito aos
mesmo o desconhecimento de suas potencialidades, podem elementos de um software, pode-se dizer que subprogramas
ocasionar alguns raciocínios limitados. são o mapeamento natural dos módulos de um software.
388 Engenharia de Software I 32
Há diferentes denominações para os subprogramas, entre
eles: sub-rotinas, procedimentos, funções, entre outros. para muitas aplicações de engenharia. Cobol, por outro lado, ainda é
Subprogramas possuem os seguintes elementos: seção de uma linguagem bastante utilizada no desenvolvimento de aplicações
HVSHFLILFDomR FRP LGHQWLILFDGRU H GHVFULomR GD LQWHUIDFH FRPHUFLDLV  /LQJXDJHQV GH 7HUFHLUD *HUD©¥R 1HVWD FODVVH
seção de implementação, na qual é descrito o comportamento HQFDL[DPVH DV FKDPDGDV OLQJXDJHQV GH SURJUDPD©¥R HVWUXWXUDGD
SRUPHLRGDVHVWUXWXUDVGHFRQWUROHGHGDGRVPHFDQLVPRVGH VXUJLGDV HP PHDGRV GRV DQRV  2 SHU¯RGR FRPSUHHQGLGR HQWUH
ativação, que, por sua vez, permitem invocar o subprograma a década de 60 e a de 80 foi bastante produtivo no que diz respeito
tendo como base um ponto do programa. ao surgimento de linguagens de programação, o que permitiu o
Ⱥ (VWUXWXUDV GH FRQWUROH GL]HP UHVSHLWR DR VXSRUWH aparecimento de uma grande quantidade de linguagens as quais
ofertado pela representação das estruturas clássicas, como, SRGHPVHURUJDQL]DGDVGDVHJXLQWHIRUPDȏDVOLQJXDJHQVGHXVRJHUDO
por exemplo, sequências, condições e repetições. as quais podem ser utilizadas para implementação de programas com
Ⱥ 6XSRUWH D DERUGDJHQV RULHQWDGDV D REMHWRV GL] DVPDLVGLYHUVDVFDUDFWHU¯VWLFDVHLQGHSHQGHQWHGD£UHDGHDSOLFD©¥R
respeito ao suporte ofertado pela linguagem de programação FRQVLGHUDGD HQFDL[DPVH QHVWD FDWHJRULD OLQJXDJHQV FRPR 3DVFDO
ao mapeamento dos elementos especificados. 0RGXODH&ȏDVOLQJXDJHQVHVSHFLDOL]DGDVDVTXDLVV¥RRULHQWDGDV
DRGHVHQYROYLPHQWRGHDSOLFD©·HVHVSHF¯ȴFDVDOJXPDVGDVOLQJXDJHQV
‡&ULWpULRVGHHVFROKDGHXPDOLQJXDJHPGHSURJUDPDomR TXH LOXVWUDP HVWD FDWHJRULD V¥R 3URORJ /LVS H )RUWK ȏ DV OLQJXDJHQV
todas as discussões anteriores devem ser levadas em conta. orientadas a objeto, que oferecem mecanismos sintáticos e semânticos
Contudo, há outros critérios a serem considerados, como: de suporte aos conceitos da programação orientada a objetos; alguns
H[HPSORVGHVWDVOLQJXDJHQVV¥R6PDOOWDON(L΍HOH&/LQJXDJHQV
a área de aplicação para a qual o software
HVWi VHQGR FRQVWUXtGR ‡ D FRPSOH[LGDGH de Quarta Geração As linguagens de quarta geração surgiram como
FRPSXWDFLRQDOHDOJRUtWPLFDGRVRIWZDUH‡R forma de aumentar o grau de abstração na construção de programas.
DPELHQWHQRTXDORVRIWZDUHYDLH[HFXWDU‡RV 8PD FDUDFWHU¯VWLFD FRPXP QHVWDV OLQJXDJHQV « D HVSHFLȴFD©¥R GR
UHTXLVLWRV GH GHVHPSHQKR ‡ D FRPSOH[LGDGH SURJUDPDVHPDQHFHVVLGDGHGHH[SUHVV¥RGHGHWDOKHVDOJRU¯WPLFRV
GD HVWUXWXUD GH GDGRV ‡ R FRQKHFLPHQWR GD GH SURFHVVDPHQWR ‹ HYLGHQWH TXH GHYLGR D HVWD FDUDFWHU¯VWLFD «
HTXLSHGHGHVHQYROYLPHQWR‡DGLVSRQLELOLGDGH LPSRVV¯YHOTXHXPDOLQJXDJHPSRVVDVHUXWLOL]DGDSDUDDSURJUDPD©¥R
de boas ferramentas de desenvolvimento GHXVRJHUDOVHQGRQRUPDOPHQWHGHVWLQDGDVDDSOLFD©·HVHPGRP¯QLRV
(MAZZOLA, p. 74). HVSHF¯ȴFRV 'HQWUR GHVWD FODVVH « SRVV¯YHO HQFRQWUDU GLIHUHQWHV
FDWHJRULDVGHOLQJXDJHQV/LQJXDJHQVGHFRQVXOWD1HVWDFDWHJRULD
Leiam, abaixo, um texto acerca das classes de linguagens.
HQFDL[DPVHDVOLQJXDJHQVRULHQWDGDVDDSOLFD©·HVFRQMXQWDVGHEDQFRV
Leiam-no atentamente e, em caso de dúvidas, compartilhem
GHGDGRVSHUPLWLQGRTXHRXVX£ULRHVSHFLȴTXHRSHUD©·HVVREUHRV
via quadro de avisos.
UHJLVWURV QXP DOWR Q¯YHO GH VRȴVWLFD©¥R $OJXPDV OLQJXDJHQV QHVWD
&/$66(6 '( /Ζ1*8$*(16 'HYLGR ¢ JUDQGH GLYHUVLGDGH GDV categoria incorporam recursos de interpretação de linguagem natural,
OLQJXDJHQVGHSURJUDPD©¥RH[LVWHQWHVQRVGLDVDWXDLV«LQWHUHVVDQWH GH PRGR TXH R XVX£ULR SRGH PDQLSXODU D LQIRUPD©¥R QR Q¯YHO PDLV
HVWDEHOHFHU XPD FODVVLȴFD©¥R TXH SHUPLWD VLWX£ODV QR FRQWH[WR GR DOWRGHDEVWUD©¥RSRVV¯YHO/LQJXDJHQVJHUDGRUDVGHSURJUDPDV
GHVHQYROYLPHQWRGHSURJUDPDV(PERUDRVFULW«ULRVGHFODVVLȴFD©¥R 1HVWDFDWHJRULDHVW¥RDVOLQJXDJHQVTXHSHUPLWHPTXHRSURJUDPDGRU
SRVVDPVHURVPDLVGLYHUVRVDGRWRXVHDTXLXPDµWLFDFURQROµJLFD HVSHFLȴTXHRSURJUDPDFRQVLGHUDQGRFRQVWUX©·HVHLQVWUX©·HVQXP
onde as linguagens posicionam-se, de certo modo, em função de suas HOHYDGR Q¯YHO GH DEVWUD©¥R VHQGR TXH RV SURJUDPDV VHU¥R REWLGRV
FDUDFWHU¯VWLFDV W«FQLFDV  /LQJXDJHQV GH 3ULPHLUD *HUD©¥R 1HVWD HP FµGLJRIRQWH GH XPD OLQJXDJHP GH SURJUDPD©¥R GH WHUFHLUD
FODVVHGHOLQJXDJHQVGHVHQYROYLGDVQRVSULPµUGLRVGDFRPSXWD©¥R JHUD©¥R2XWUDVOLQJXDJHQV1HVWDFDWHJRULDSRGHVHFRQVLGHUDU
HQTXDGUDPVHDVOLQJXDJHQVHPQ¯YHOGHP£TXLQD2FµGLJRGHP£TXLQD DVOLQJXDJHQVGHVHQYROYLGDVQRV¼OWLPRVDQRVFRPRSRUH[HPSORDV
representa a linguagem interpretada pelos microprocessadores, OLQJXDJHQV GH HVSHFLȴFD©¥R IRUPDO UHIHUHQFLDGDV QR FDS¯WXOR   DV
sendo que cada microprocessador é caracterizado por uma linguagem linguagens de prototipação, e os ambientes de programação presentes
GH P£TXLQD SUµSULD SRGHQGR HYHQWXDOPHQWH HVWDEHOHFHUVH FHUWD HP FRPSXWDGRUHV SHVVRDLV SODQLOKDV EDQFRV GH GDGRV K\SHUWH[WR
compatibilidade em software entre microprocessadores de uma etc...).
PHVPDIDP¯OLD IDEULFDQWH (PERUDWHQGRVHXXVREDVWDQWHOLPLWDGR  (67Ζ/2 '( &2'Ζ)Ζ&$‰…2 $ HVFROKD GH XPD OLQJXDJHP GH
DOJXQV SURJUDPDV DLQGD V¥R UHDOL]DGRV XWLOL]DQGR R FµGLJR GH programação adequada, que suporte os requisitos de projeto
P£TXLQDRXPDLVSUHFLVDPHQWHVHXHTXLYDOHQWHȊOHJ¯YHOȋDOLQJXDJHP HVWDEHOHFLGRV H TXH DSUHVHQWH ERDV FDUDFWHU¯VWLFDV HQWUH R FRQMXQWR
$VVHPEO\ 1XPD µWLFD GH (QJHQKDULD GH 6RIWZDUH D SURJUDPD©¥R apresentado anteriormente é, sem dúvida, um grande passo na direção
através de linguagens desta classe limitam-se a situações onde a da obtenção de um software de qualidade. Entretanto, um fator que é
OLQJXDJHP GH DOWR Q¯YHO DGRWDGD SDUD D SURJUDPD©¥R Q¥R VXSRUWH HVVHQFLDOSDUDDREWHQ©¥RGHXPFµGLJRFODURHTXHRIHUH©DIDFLOLGDGH
DOJXQVUHTXLVLWRVHVSHFLȴFDGRV/LQJXDJHQVGH6HJXQGD*HUD©¥R de manutenção é a boa utilização dos mecanismos presentes na
As linguagens de segunda geração constituem as primeiras linguagens OLQJXDJHPDGRWDGDRTXHYDPRVURWXODUDTXLSRUȊHVWLORGHFRGLȴFD©¥Rȋ
GHȊDOWRQ¯YHOȋTXHVXUJLUDPHQWUHRȴQDOGDG«FDGDGHHLQ¯FLRGRV $EDL[RVHU¥RGLVFXWLGRVRVSULQFLSDLVIDWRUHVGHWHUPLQDQWHV¢REWHQ©¥R
DQRV/LQJXDJHQVFRPR)RUWUDQ&RERO$OJROH%DVLFFRPWRGDVDV GHFµGLJRIRQWHEHPHVFULWR$'RFXPHQWD©¥RGH&µGLJR2FµGLJR
GHȴFL¬QFLDVTXHVHSRGHDSRQWDUDWXDOPHQWHIRUDPOLQJXDJHQVTXH IRQWH Q¥R GHYH VHU FRQVLGHUDGR HP QHQKXPD KLSµWHVH FRPR XP
marcaram presença no desenvolvimento de programas, sendo que resultado intermediário irrelevante no processo de desenvolvimento
DOJXPDVGHODVW¬PUHVLVWLGRDRWHPSRH¢VFU¯WLFDVFRPRSRUH[HPSOR de um software. Ele se constitui num elemento essencial tanto para
Fortran que ainda é visto como uma linguagem de implementação atividades de validação do software como (e principalmente) para as
33 389
Pessoal, no texto, refletimos acerca das classes de
tarefas de manutenção. Desta forma, o aspecto de documentação linguagens, considerando sua diversidade e sua classificação.
é um aspecto que deve ser bastante considerado na etapa de Em caso de dúvida, partilhem no quadro de avisos, tudo bem?
FRGLȴFD©¥R 8P SULPHLUR SDVVR QD GRFXPHQWD©¥R GR FµGLJR IRQWH «
DHVFROKDGRVLGHQWLȴFDGRUHVGHYDUL£YHLVHSURFHGLPHQWRV2XVRGH
ȊVLJODVȋ RX FDUDFWHUHV SDUD LGHQWLȴFDU RV HOHPHQWRV GH XP SURJUDPD Retomando a aula
é uma tendência herdada das linguagens de segunda geração que
não encontra mais lugar nos dias atuais. Assim, é importante que os
LGHQWLȴFDGRUHVHVFROKLGRVWHQKDPVLJQLȴFDGRH[SO¯FLWRSDUDDDSOLFD©¥R
considerada. Outro aspecto bastante considerado é a introdução de
FRPHQW£ULRVDRORQJRGRFµGLJRIRQWH1DUHDOLGDGHHVWH«XPDVSHFWR 3HVVRDOFKHJDPRVDRȴQDOGDTXLQWDDXOD
bastante polêmico, mas este mecanismo pode ser bastante útil se Vamos, então, recordar.
XWLOL]DGR HȴFLHQWHPHQWH SRGHQGR WUDQVIRUPDUVH QR SULQFLSDO DOLDGR
às tarefas de manutenção. Uma sistemática interessante de uso dos
comentários é a compatibilização destes com a documentação de 3URMHWRHLPSOHPHQWDomR
projeto do software. Um último aspecto importante na documentação
Conversamos, na primeira seção, sobre projeto e
« D IRUPDWD©¥R GR FµGLJRIRQWH 8P PHFDQLVPR LPSRUWDQWH QHVWH
implementação. Quando falamos sobre o estágio de projeto
FRQWH[WR«RXVRGDHQGHQWD©¥RFRPRPHLRGHPHOKRUSRVLFLRQDUDV
LQVWUX©·HVQRFRQWH[WRGHWUHFKRVVLJQLȴFDWLYRVGRFµGLJR$HQGHQWD©¥R
e implementação do desenvolvimento de software, referimo-
SHUPLWH H[SOLFLWDU PHOKRU D FRPELQD©¥R GRV EORFRV E£VLFRV GH XPD nos ao processo em que se converte uma especificação de
linguagem de programação (as estruturas clássicas de controle) para sistema em um sistema que possa ser executado. Para tanto, as
DFRPSRVL©¥RGHFRPSRQHQWHVPDLVFRPSOH[RV1RTXHGL]UHVSHLWR etapas de projeto e implementação envolvem a formalização
a este aspecto muitas ferramentas CASE oferecem os chamados das ideias verificadas na etapa da engenharia do sistema, dos
IRUPDWDGRUHVDXWRP£WLFRVGHFµGLJRRVTXDLVOLEHUDPRSURJUDPDGRU requisites estabelecidos e dos modelos gerados na etapa de
desta preocupação. projeto para que o sistema computacional-alvo possa realizar
5.2. A Declaração de Dados Este aspecto nem sempre é objeto de as tarefas definidas anteriormente
preocupação por parte dos programadores, mas, à medida que o
SURJUDPD YDL VH WRUQDQGR FRPSOH[R QR TXH GL] UHVSHLWR ¢ GHȴQL©¥R 3URMHWRRULHQWDGRDREMHWRVFRP80/
de estruturas de dados, o estabelecimento de uma sistemática
Os sistemas orientados a objetos são compostos
padronizada de declaração de tipos de dados e variáveis vai assumindo
interativos, tendo em vista que podem manter o seu próprio
XPQ¯YHOFDGDYH]PDLRUGHLPSRUW¤QFLD$OLQJXDJHP3DVFDOGHXXP
estado local, e, também, oferecer operações nesse mesmo
impulso importante neste aspecto, com a possibilidade do usuário
FRQVWUXLUWLSRVGHGDGRVPDLVFRPSOH[RVDSDUWLUGRVWLSRVE£VLFRVH estado. A representação de seu estado, contudo, é privada:
de seus construtores. Este mecanismo está presente em praticamente não pode ser acessada diretamente. Os projetos orientados a
todas as linguagens em uso nos dias de hoje. 5.3. A Construção de objetos permitem que se projetem as classes de objetos e sejam
ΖQVWUX©·HV2ȵX[ROµJLFRGHLQVWUX©·HV«GHȴQLGRQRUPDOPHQWHGXUDQWH feitos relacionamentos entre elas. Tais classes, por sua vez,
a etapa de projeto (projeto detalhado). Entretanto, o mapeamento são responsáveis pela definição dos objetos no sistema, bem
GHVWH ȵX[R OµJLFR HP LQVWUX©·HV LQGLYLGXDLV ID] SDUWH GR WUDEDOKR GH como suas interações. Já quando o projeto é elaborado como
FRGLȴFD©¥R8PDVSHFWRTXHGHYHVHUH[SORUDGRGXUDQWHDFRQVWUX©¥R um programa em execução, os objetos ganham dinamicidade,
das instruções é a simplicidade. Utilizar as possibilidades que algumas tendo como base as definições de classe.
linguagens oferecem de escrever mais de uma instrução por linha, por
H[HPSOR«VHPG¼YLGDXPDGHFLV¥RTXHYDLFRQWUDDFODUH]DGRFµGLJR 7UDGXomR
independente da economia de espaço (e de papel) que isto pode
Na terceira seção, abordamos a tradução. Ela é feita
UHSUHVHQWDU$EDL[RV¥RDSUHVHQWDGDVDOJXPDVUHJUDVLPSRUWDQWHVQR
QDDWLYLGDGHGH´FRGLÀFDomRµ(VVHPDSHDPHQWRUHVXOWDQR
TXHGL]UHVSHLWRDHVWHDVSHFWRȏHYLWDURXVRGHWHVWHVFRQGLFLRQDLV
FRPSOLFDGRVRXTXHYHULȴTXHPFRQGL©·HVQHJDWLYDVȏHYLWDURLQWHQVR
código fonte. As unidades de código fonte produzidas são
DQLQKDPHQWRGHOD©RVRXFRQGL©·HVȏXWLOL]DUSDU¬QWHVHVSDUDHYLWDUD submetidas a uma revisão de código. Nesse processo, são
DPELJ¾LGDGHQDUHSUHVHQWD©¥RGHH[SUHVV·HVOµJLFDVRXDULWP«WLFDVȏ corrigidos os defeitos gerados a partir de erros de digitação,
XWLOL]DUV¯PERORVGHHVSD©DPHQWRSDUDHVFODUHFHURFRQWH¼GRGHXPD ou, ainda, do uso da linguagem. Quando se faz uma revisão,
LQVWUX©¥R  (QWUDGDV6D¯GDV $V HQWUDGDV GH GDGRV QXP VRIWZDUH deve-se considerar que são introduzidos por erros de digitação
podem ser realizadas de forma interativa ou em batch. Independente ou de uso da linguagem.
da forma como as entradas serão efetuadas, é importante considerar
DOJXPDV UHJUDV ȏ YDOLGD©¥R GH WRGDV DV HQWUDGDV GH GDGRV ȏ &DUDFWHUtVWLFDVGDOLQJXDJHPGHSURJUDPDomR
VLPSOLFLGDGH H SDGURQL]D©¥R QR IRUPDWR GD HQWUDGD ȏ QR FDVR GH As linguagens de programação são responsáveis
HQWUDGDVHQYROYHQGRP¼OWLSORVGDGRVHVWDEHOHFHUXPLQGLFDGRUGHȴQDO por desempenhar o papel de agente de formalização das
GHHQWUDGD (17(5SRQWRȴQDOHWF ȏHQWUDGDVGHGDGRVLQWHUDWLYDV
representações de projeto no sistema computacional. Entre
devem ser rotuladas, indicando-se eventuais parâmetros, opções e
suas características, estão a possibilidade de desempenhar
YDORUHVGHIDXOWȏURWXOD©¥RGHUHODWµULRGHVD¯GDHSURMHWR 0$==2/$
um impacto no processo de decodificação. Discutimos suas
p. 76-78).
características de modo detalhado.
390 Engenharia de Software I 34

Vale a pena

Vale a pena acessar

O texto Engenharia de software discute as questões


aqui abordadas. Disponível em: <https://jalvesnicacio.files.
wordpress.com/2010/03/engenharia-de-software.pdf>.
Acesso em: 05 abr. 2017.

Vale a pena assistir

Vejam também o vídeo: Disponível em: <https://


www.youtube.com/watch?v=PmefpISZ7Ew>. Acesso em:
05 abr. 2017.

Minhas anotações
391

Aula 6º

Teste de software

Olá, alunos(as),
Nesta aula, conheceremos os testes de software.
Entenderemos desde seus conceitos, até o entendimento
de alguns testes de software. Perceberão a importância
dessa etapa para validar a qualidade do projeto.
Leiam com atenção, tudo bem?
Boa aula!

Objetivos de aprendizagem

Ao término desta aula, vocês serão capazes de:

‡HQWHQGHURFRQFHLWRGHWHVWHGHVRIWZDUH
‡VDEHUDUHVSHLWRGRVSULQFLSDLVWHVWHVGHVRIWZDUHXWLOL]DGRV
392 Engenharia de Software I 36
vários campos do conhecimento, dentre eles o
Seções de estudo da Engenharia de Software. Nesta dissertação,
p XWLOL]DGD D GHÀQLomR HVWDEHOHFLGD SHOR
IEEE. A norma IEEE distingue os termos
1 - O que é o teste de software? da seguinte forma: GHIHLWR (fault) – é um ato
2 - Objetivos dos testes inconsistente cometido por um indivíduo ao
3 - Projeto de casos de teste tentar entender uma determinada informação,
resolver um problema ou utilizar um método
ou uma ferramenta. Por exemplo, uma
1 - O que é o teste de software? LQVWUXomRRXFRPDQGRLQFRUUHWRHUUR (error)
- manifestação concreta de um defeito num
Em nossa primeira seção vamos discutir o conceito de artefato do software, ou seja, é a diferença
teste de software. Peço que compartilhem dúvidas no quadro HQWUHYDORUREWLGRHRYDORUHVSHUDGRHIDOKD
de avisos, ok? Atentem à aula a vamos lá! (failure) - o comportamento operacional do
software diferente do esperado pelo usuário.
Uma falha pode ter sido causada por diversos
erros e alguns erros podem nunca causar uma
falha (SOUZA, 2010, p. 5).

Figura 1. Sommerville, 2011, p. 147. Por mais que haja divergências conceituais, a norma IEEE
O teste de software tem por princípio desenvolver ações fica indicada para definição dos termos.
que possibilitem que sejam detectados defeitos do software.
Contudo, a fase de testes não tem a capacidade de eliminar 2 - Objetivos dos testes
todas as falhas, mas somente os defeitos de software que se
fizerem presentes. Para que sejam feitos os testes, é importante que se tenham
Ela é desenvolvida durante e depois do processo de objetivos muito bem definidos. Por se tratar de uma etapa
implementação. Todos os programas que compõem os que pode gerar custos dispendiosos, devem ser planejados e
sistemas são devidamente testados, e, assim, certifica-se que desenhados. Assim, consegue-se extrair o melhor dos recursos
ele atente às especificações e que suas funcionalidades estão destinados para testes.
correspondendo com as esperadas, ou seja, com o cliente. De modo amplo, o objetivo das técnicas de testes é
Ao contrário das revisões e inspeções, os testes não são promover ações que verifiquem diferentes classes de erros,
tão eficazes para a remoção de defeitos. No entanto, na fase e, do mesmo modo, de modo rápido e com o mínimo de
de testes é possível perceber alguns possíveis defeitos que não dificuldades.
foram detectados pelas revisões. Nesse sentido, ainda é possível É importante, para aferir a qualidade do software,
verificar a qualidade de um produto e de seus componentes. entender que:
Mesmo que o software tenha sido construído com base Caso os erros graves sejam recorrentes, a qualidade do
nas técnicas e nos métodos da engenharia de software, não VRIWZDUHSUHFLVDVHUSRVWDHPTXHVWmR
é possível evitar o surgimento de falhas, por isso, a etapa Caso os erros facilmente corrigidos sejam encontrados, a
de testes é tão necessária. Deve se considerar, ainda, não é qualidade e a confiabilidade do software estão aceitáveis. Ou,
possível testar o software exaustivamente. Mesmo que sejam GLVS}HVHGHWHVWHVTXHVWLRQiYHLV
produtos simples, um teste que envolva um programa com Se não houver erros, o teste precisa ser verificado, pois sua
entrada de um texto de dez caracteres envolveria uma análise configuração não foi elaborada de modo suficiente e há erros
de 2610 combinações. Levando em conta que muitos testes ocultos no software.
são redundantes, a utilização de força bruta pode fazer com Uma coisa certa é: não há software livre de falhas. A
que muitos casos com alta probabilidade de defeitos não função do teste é identificá-las, portanto, eles precisam ser
sejam testados. programados corretamente.
Para se ter uma ideia da importância dessa fase e de seu
impacto nos resultados, muitas vezes, a etapa de teste chega
a 40% do esforço empreendido para o desenvolvimento de
software. Já em casos de programas em sistemas críticos,
dos quais dependem vidas humanas, como controle de voo,
a atividade de teste pode chegar a um custo de três a cinco
vezes do orçamento das demais atividades.
Os pesquisadores da área de teste de software apresentam
divergências no que diz respeito à terminologia. Nesse sentido,
O Institute of Electrical and Electronics
Engineers (IEEE) 610.12-1990 (IEEE, 1990)
tem realizado vários esforços com o intuito
de padronizar a terminologia utilizada em
Figura 2: O teste no processo de software.
37 393
Esse teste examina os aspectos do sistema e não considera
3 - Projeto de casos de teste a estrutura lógica do software. O foco, nesse teste, é investigar
elementos como:
Os métodos de projetos de casos de teste disponibilizam ‡PRGRGHFRPSRUWDPHQWRGRVRIWZDUHQDVH[WUHPLGDGHV
uma abordagem sistemática ao teste, e um mecanismo que ‡GHVHPSHQKRGDVIXQo}HV
contribua para garantir que se detectem erros com alta ‡SRVVtYHLVIXQo}HVLQFRUUHWDV
probabilidade. Por isso, os testes devem sempre ser desenhados ‡UHWRUQRGRVUHVXOWDGRV
e planejados da melhor forma possível. ‡HUURVGHLQWHUIDFH
‡HQWUDGDVHVDtGDV
‡SRVVtYHLVHUURVQDVHVWUXWXUDVGHGDGRVRXQRDFHVVRD
EDQFRVGHGDGRVH[WHUQRV
‡SRVVtYHLVHUURVGHGHVHPSHQKR
‡SRVVtYHLVHUURVGHLQLFLDOL]DomRHWpUPLQR
‡LQWHJUDomRHQWUHVRIWZDUHV

Como o software se comporta nas extremidades, perceber


se as funções estão desempenhando seus papéis, entender se
há funções incorretas, obter o retorno dos resultados, ver se
há erros de interface.
Figura 6.1 – Estrutura de testes Para tanto, o desenvolvedor pode se concentrar em
algumas perguntas:
Os testes são os melhores indicadores da qualidade do
produto. Nesse sentido, ȏ&RPRDYDOLGDGHIXQFLRQDO«WHVWDGD"
ȏ4XDLVFODVVHVGHGDGRVGHHQWUDGDFRQVWLWXLU¥RERQVFDVRVGHWHVWH"
Os desenvolvedores não são as pessoas mais
adequadas para testar seus próprios produtos. ȏ2VLVWHPD«SDUWLFXODUPHQWHVHQV¯YHODFHUWRVYDORUHVGHHQWUDGD"
Assim como nas revisões, os autores têm ȏ&RPRDVIURQWHLUDVGHXPDFODVVHGHGDGRVV¥RLVRODGDV"
PDLRU GLÀFXOGDGH HP HQ[HUJDU SUREOHPDV ȏ4XDLV¯QGLFHVGHGDGRVHYROXPHVGHGDGRVRVLVWHPDSRGHWROHUDU"
comparados com pessoas que não participam ȏ 4XH HIHLWRV WHU¥R FRPELQD©·HV HVSHF¯ȴFDV GH GDGRV VREUH D
do desenho e da implementação. O trabalho operação do sistema?
de testadores independentes é particularmente Fonte: <https://polisoftware.wordpress.com/2012/11/05/teste-processos/>.
importante no caso dos testes de aceitação e de Acesso em: 8 abr.

integração, que exercitam o produto como um


todo. O planejamento e o desenho dos testes 3.1.27HVWHGDFDL[DEUDQFD
devem ser feitos por pessoas experientes, que
conheçam adequadamente a metodologia de O Teste da Caixa Branca, por sua vez, se encarrega de
testes usada. Por outro lado, a realização dos um exame minucioso dos procedimentos e das estruturas
WHVWHV EDVHDGRV HP SODQRV H HVSHFLÀFDo}HV GH internas. O estado do programa, assim, pode passar por
WHVWHVEHPGHÀQLGRVSRGHVHUIHLWDSRUSHVVRDV diversos exames para obter resultados no que diz respeito
menos experientes, ou pode até ser parcialmente ao fato de determinar se o estado esperado corresponde ao
automatizada (http://www.theclub.com.br/ estado real. Assim, os caminhos lógicos são testados por
restrito/revistas/PDFS/2005/0506.pdf).
meio do software, e, assim, são fornecidos casos de teste que
3.1 - Abordagens de teste investigam conjuntos específicos de condições ou lações.
Mesmo em programas pequenos, é importante notar que a
As duas abordagens de testes são o Teste da Caixa Preta e quantidade de caminhos lógicos pode ser bem ampla, o que
o Teste da Caixa Branca. Vamos conhecê-los individualmente. representaria um grande obstáculo para o sucesso de tal
atividade.
O Teste da Caixa Branca pode dar origem a outros casos
de testes. Vamos verificá-los?

Caminho independente: um caminho independente diz


respeito a um caminho que introduza pelo menos um novo
3.1.17HVWHGH&DL[D3UHWD conjunto de instruções de processamento, ou, ainda, uma
Está relacionado aos requisitos funcionais (voltem à aula nova condição.
sobre requisitos, caso tenham dúvidas). Diz respeito aos testes Teste do Caminho Básico: cada programa tem em seus
que são realizados nas interfaces do software e são úteis para DOJRULWPRVYDULDGRVFDPLQKRVTXHSRGHPVHUVHJXLGRVHOHV
demonstrar que: dependerão dos valores de entrada e dos resultados obtidos
‡$VIXQo}HVGRVRIWZDUHVmRRSHUDFLRQDLV em suas variáveis. Os diversos caminhos possíveis são os
‡$HQWUDGDpDGHTXDGDPHQWHDFHLWD$VDtGDpSURGX]LGD FDPLQKRV OyJLFRV VXD PHGLomR GHSHQGH GD 0HGLGD GH
FRUUHWDPHQWH Complexidade Lógica.
‡$LQWHJULGDGHGDVLQIRUPDo}HVH[WHUQDVpPDQWLGD Grafo de Fluxo ou Grafo de Programa: é usado para
394 Engenharia de Software I 38
representar o fluxo de controle e permite representar os
caminhos independentes existentes no algoritmo. Vejam seus ȏ2Q¼PHURGHUHJL·HVGRJU£ȴFRGHȵX[R
possíveis símbolos: ȏ9 *  (1RQGH(«RQ¼PHURGHUDPRVGRJUDIRH1RQ¼PHURGH
QµVGRJUDIRGHȵX[R*
ȏ9 *  3RQGH3«RQ¼PHURGHQµVSUHGLFDWLYRV QµVTXHFRQW«P
XPDFRQGL©¥R FRQWLGRVQRJUDIRGHȵX[R*
Fonte: <https://memorexti.wordpress.com/2016/02/25/testes-de-software-33/>.
Acesso em: 8 abr. 2017.

No exemplo a seguir observamos o cálculo da


Figura 3. Fonte: <https://images.google.com/>. Acesso em: 05 abr. 2017. complexidade ciclomática usando as três formas:
A estrutura Caso deve ser decomposta em estruturas
6H 1RWHP QD ÀJXUD DEDL[R TXH RV QyV SRVVXHP XPD
decisão e delas partem dois caminhos: são chamados de nós
predicativos.

Figura 6. Fonte: <https://images.google.com/>. Acesso em: 05 abr. 2017.


Figura 4. Fonte: <https://images.google.com/>. Acesso em: 05 abr. 2017.

As regiões do grafo podem ser observadas pelas cores


1R JUDIR GH ÁX[R HQFRQWUDPRV TXDWUR HOHPHQWRV
HVVHQFLDLV 1yV $UHVWDV UDPRV  ² 5HSUHVHQWDP R ÁX[R GH verde, vermelha, branca e a região externa ao grafo que é a
FRQWUROHHQWUHRVQyV5HJL}HV1yVSUHGLFDWLYRV²FRQWpP amarela.
uma instrução condicional.
Derivando casos de testes - Passos do Método
Exemplo:

1) Usando um procedimento de um algoritmo, mostrado


DVHJXLUWUDFHXPJUDIRGHÁX[RFRUUHVSRQGHQWH

3URFHGLPHQWR 0$,25 $9HWRU 7LQWHLURYDU 0$;


LQWHLUR YDULiYHLV,0LQWHLUR
Início
 0$>@
 ,
3. Enquanto I < T faça
4. Se A[I] > M
 (QWmR 0$>,@
Figura 5. Fonte: <https://images.google.com/>. Acesso em: 05 abr. 2017.
 ,,
Complexidade Ciclomática: essa métrica de software  6HQmR,,
oferta uma medida quantitativa de complexidade lógica em  )LP6H
um programa. Se usada no contexto do método de teste  )LP(QTXDQWR
de caminho básico, o valor resultado irá definir o número
 0D[0
de caminhos independentes do conjunto básico de um
programa e oferecerá um limite máximo ao número de testes )LPGR3URFHGLPHQWR
a serem feitos, garantindo que as instruções sejam executadas
ao menos uma vez. Ela pode ser obtida de três modos: Para este exemplo, o grafo gerado será o seguinte:
39 395
Vamos discutir um exercício resolvido? Fiquem atentos e,
em caso de dúvidas, procurem saná-las pelo quadro de avisos:

(63(&Ζ)Ζ&$‰…2DIXQ©¥RGHYHGHWHUPLQDUVHXPLGHQWLȴFDGRU«RX
Q¥R Y£OLGR HP XPD OLQJXDJHP LPDJLQ£ULD 8P LGHQWLȴFDGRU Y£OLGR
GHYHFRPH©DUFRPXPDOHWUDHFRQWHUDSHQDVOHWUDVRXG¯JLWRV$O«P
GLVVRGHYHWHUQRP¯QLPRFDUDFWHUHHQRP£[LPRFDUDFWHUHVGH
comprimento.

Condição de Entrada Classe(s) válida Classe(s) inválida


Tamanho t do (1) (2) (3) (4)
LGHQWLȴFDGRU ! W  t<1 W!
Primeiro caractere é Sim (5) 1¥R(6)
letra?
Demais caracteres Sim (7) 1¥R(8)
são letras ou digitos

Caso de teste:
Figura 7. Fonte: <https://images.google.com/>. Acesso em: 05 abr. 2017.
‡[YHUGDGHLUR!(1)
2) Determine a Complexidade Ciclométrica do grafo de ‡QRPH$OYHUGDGHLUR!(1, 2, 5, 7)
ÁX[RUHVXOWDQWH&RPSOH[LGDGH&LFORPiWLFD ‡QRPH$OXQRIDOVR!(4)
Primeira forma: 2JUDIRGHÁX[RWHPWUrVUHJL}HV ‡ DEFIDOVR!(6)
Segunda forma: V(G) = 10 ramos - 9 nós + 2 = 3 ‡DEF IDOVR!(8)
Terceira forma: V(G) = 2 nós predicativos + 1 = 3
&RPSOH[LGDGH&LFORPiWLFDGRJUDIRGHÁX[RpLJXDOD
Retomando a aula

&KHJDPRVDRȴQDOGDVH[WDDXOD-£WUD©DPRVXPEHOR
percurso por aqui, não é mesmo?
Vamos, então, recordar.

2TXHpRWHVWHGHVRIWZDUH"
Nesta seção, conhecemos o conceito de teste de software,
bem como sua importância na execução de projetos de
software. O teste de software tem por princípio desenvolver
ações que possibilitem que sejam detectados defeitos do
software. Contudo, a fase de testes não tem a capacidade de
eliminar todas as falhas, mas somente os defeitos de software
que se fizerem presentes.
2EMHWLYRVGRVWHVWHV
Figura 8. Fonte: <https://images.google.com/>. Acesso em: 05 abr. 2017.
Nesta seção, entendemos quais são os objetivos e
finalidades dos testes. Também percebemos em que medida
3) Determine um conjunto básico de caminhos os testes se diferenciam de outros modos de verificação
linearmente independentes: da qualidade do software. Para que sejam feitos os testes, é
Caminho 1: 1-2-3-10 importante que se tenham objetivos muito bem definidos. Por
Caminho 2: 1-2-3-4-5-6-8-9-3-10 se tratar de uma etapa que pode gerar custos dispendiosos,
Caminho 3: 1-2-3-4-7-8-9-3-10 devem ser planejados e desenhados. Assim, consegue-se
extrair o melhor dos recursos destinados para testes.
Vamos praticar?
3URMHWRGHFDVRVGHWHVWH
Os métodos de projetos de casos de teste disponibilizam
Utilizando seu conhecimento de Delphi ou alguma outra linguagem de
uma abordagem sistemática ao teste, e um mecanismo
SURJUDPD©¥R HODERUH XPD FKHFNOLVW GH HUURV FRPXQV Q¥R HUURV GH
que contribua para garantir que se detectem erros com
VLQWD[H TXHQ¥RSRGHPVHUGHWHFWDGRVSRUXPFRPSLODGRUPDVTXH
alta probabilidade. Por isso, os testes devem sempre ser
podem ser detectados em uma inspeção de programa.
desenhados e planejados da melhor forma possível.
396 Engenharia de Software I 40

Vale a pena

Vale a pena acessar

Buscando qualidade de software com a aplicação de


técnicas de teste. O artigo discute modos de se alcançar
a qualidade em projetos a partir da aplicação de técnicas
de teste. Disponível em: <http://www.theclub.com.br/
restrito/revistas/PDFS/2005/0506.pdf>.

Minhas anotações
397

Aula 7º

Gerência de projetos

Caros(as) alunos(as),
Nesta aula, abordaremos a questão da gerência de projetos.
Enquanto etapa essencial da engenharia de software, é importante
saber que o bom gerenciamento garante melhores resultados no
projeto, e previne falhas, entregas atrasadas, aumento do custo,
entre outras questões.
Já perceberam que é uma discussão fulcral para nós, não é?
Então, vamos à sétima aula!
Boa aula!

Objetivos de aprendizagem

Ao término desta aula, vocês serão capazes de:

‡FRQKHFHUDVSHFWRVUHODWLYRVjJHVWmRGHSURMHWRV
‡VDEHUDUHVSHLWRGR30%2.
398 Engenharia de Software I 42
esforço altamente intensivo de pessoas que
Seções de estudo co-participam em um período de tempo, com
implicações fundamenteis no projeto e no
desempenho das diferentes classes de pessoas
1 - Gerência de projetos (BOEHM E ROSS, 1989), em busca de um
2 - PMBOK UHVXOWDGR SRVLWLYR 6RPPHUYLOH   DÀUPD
que “O fracasso de muitos grandes projetos
de software, na década de 60 e no início da
1 - Gerência de projetos década de 70, foi a primeira indicação das
GLÀFXOGDGHV GH *HUHQFLDPHQWR GH 6RIWZDUHµ
O gerenciamento de projetos vem, há tempos, sendo Ele analisa que esses projetos não fracassaram
desenvolvido: desde a antiguidade, é possível encontrar por incompetência da equipe, mais sim pela
evidências de seu surgimiento e evolução, como, por exemplo, abordagem de gerenciamento utilizada, como
na construção das Grandes Pirâmides. Como começaram também pode ser observado nos relatórios
a ser projetadas as primeiras grandes construções, ficou elaborados nos anos 90 pelo Departamento
evidente a necessidade da utilização de métodos, técnicas de Defesa Americano (DOD) (DOD, 1994)
e ferramentas para gerenciar projetos. Em dissertação de e o “The Chaos Report” (THE STANDISH
mestrado, discuto essa e outras questões. Caso queiram ler GROUP, 1994) (ALMEIDA JUNIOR, 2012,
mais sobre a temática, segue o link: <http://www.din.uem. p. 22).
br/~mestrado/diss/2012/almeidajunior.pdf>.
Apesar de não ser prática recente, o gerenciamento de Como a engenharia de software está sempre dependendo de
projetos torna-se formal há pouco mais de cinquenta anos: orçamentos e cronogramas apertados, um bom gerenciamento
de projetos é decisivo, e garantirá que o produto seja entregue
Atualmente, o conceito por trás do ao cliente cumprindo os requisitos, dentro do prazo e dentro
gerenciamento de projetos está sendo aplicado do custo.
em diversas indústrias e organizações de defesa, Normalmente, os gerentes assumem as seguintes
construção civil, produtos farmacêuticos, responsabilidades, discutidas por Sommerville (2011, p. 415):
químicos, bancário, hospitais, contabilidade,
1. planejamento do projeto. Os gerentes devem planejar
publicidade, direito, governos estaduais e
ORFDLV .(5=1(5   H SRU ÀP QR GH
e elaborar a estimativa e cronograma do desenvolvimento do
desenvolvimento de sistemas de software. projeto. Além disso, deve organizar a equipe e atribuir tarefas.
De acordo com Kerzner (2009), a Gerência Também deve fazer a supervisão do trabalho.
de Projetos consiste no planejamento, 2. geração de relatórios. Os gerentes elaboram os relatórios
organização, direção e controle dos recursos com os dados sobre o andamento do projeto tanto para os
de uma empresa para objetivos relativamente clientes quanto para os gerentes da empresa em que trabalha.
de curto prazo que foram estabelecidos para Precisam ter a capacidade de articular a linguagem de modo a
DFRQFUHWL]DomRGHREMHWLYRVHVSHFtÀFRV3DUD alcançar diferentes públicos, e “traduzir” a linguagem técnica a
a quarta edição do Guia PMBOK (2008), uma linguagem mais acessível, quando estiver produzindo um
Gerenciamento de Projetos é a aplicação de relatório ao cliente.
conhecimentos, habilidades, ferramentas 3. gerenciamento de riscos. Os gerentes do projeto
H WpFQLFDV QDV DWLYLGDGHV GR SURMHWR D ÀP
avaliam os riscos que poderão afetá-lo. Assim, devem conseguir
de atender aos requisitos do projeto. Para a
norma ISO / IEC 15504 (ISO / IEC 15504,
identificar e controlar os possíveis riscos.
1999), o propósito da gerência de projetos é 4. gerenciamento de pessoas. Também é ele quem organiza
LGHQWLÀFDUHVWDEHOHFHUFRRUGHQDUHPRQLWRUDU D HTXLSH VHOHFLRQD SHVVRDV H JDUDQWH R ERP DQGDPHQWR GH
as atividades, tarefas e recursos de que um quem está envolvido no projeto.
projeto necessita para produzir um produto 5. elaboração de proposta. O gerente de projetos também
ou serviço, no contexto dos requisitos e elaboram propostas de modo a fechar contratos. É uma tarefa
restrições do projeto (ALMEIDA JUNIOR, bastante importante e crítica, pois depende da capacidade de
2012, p. 22). conseguir contratos suficientes para sustentar a empresa.
Entendemos, por meio da citação, que o gerenciamento 1.1 - Gerenciamento de riscos
de projetos lida com a capacidade de se elaborar uma
sequência de ações do início ao fim do projeto com o objetivo O gerenciamento de riscos diz respeito à capacidade
de garantir seu melhor aproveitamento. Já no que tange ao do gerente em antecipar riscos e resolvê-los. É uma etapa
gerenciamento de software, bastante séria, para a qual o profissional deve ter experiência e
capacidade de análise crítica das diferentes problemáticas que
[…] Gerenciamento de Projeto pode vão surgindo. Há três tipos de riscos que podem surgir.
ser considerado uma arte. A estratégia Riscos de projeto: podem afetar o cronograma ou
de integração da tecnologia de software, os recursos, como, por exemplo, a perda de um projetista
economia e relações humanas no contexto experiente.
HVSHFtÀFRGHSURMHWRGHVRIWZDUHQmRpXPD Riscos de produto: podem afetar a qualidade ou o
tarefa fácil. O projeto de software é um
desempenho do software, como, por exemplo, a aquisição de
43 399
um componente falho. Sommerville (2011) ainda destaca que a experiência é um
Riscos de negócio: podem afetar a organização que LWHPIXOFUDOGDJHVWmRGHSHVVRDVQmRpDOJRTXHVHDSUHQGD
está desenvolvendo ou que adquiriu um software, como o em um livro.
surgimento de um concorrente com um produto inovador e Acerca do gerenciamento de projetos, Somerville (2011)
competitivo. Sommerville (2013) elenca o modo como deve ser defende que é necessário que os membros de uma equipe se
organizado um processo de gerenciamento de riscos: comuniquem de uma maneira eficaz. Devem compartilhar
informações acerca do andamento do trabalho, acerca das
decisões e sobre as alterações realizadas. Assim, é possível
que um contribua com o outro, possibilitando o bom
andamento do projeto. Há alguns aspectos específicos a serem
consideradas para uma boa comunicação da equipe:

1. Tamanho de grupo. Conforme um grupo


Figura 1. Sommerville, 2013.
VHWRUQDPDLRUDFRPXQLFDomRHÀFD]HQWUH
1.2 - Gerenciamento de pessoas RVPHPEURVÀFDPDLVGLItFLO2Q~PHURGH
OLQNVGHFRPXQLFDomRXQLGLUHFLRQDOpQ Q²
Outra etapa do gerenciamento de projetos é o 1), em que n é o tamanho do grupo, então,
gerenciamento de pessoas. Uma equipe é responsável, em com um grupo de oito membros, existem
seu conjunto, pelo bom andamento do projeto. Para ter uma 56 possíveis caminhos de comunicação. Isso
boa equipe, o gerente deve ter em mente que esse não é um VLJQLÀFDTXHpSRVVtYHOTXHDOJXPDVSHVVRDV
processo barato ou simples. Para tanto, respeito pela equipe é raramente se comuniquem com outras. As
uma maneira de motivá-la. O contrário faz com que haja muita diferenças de status entre os membros de
rotatividade, insatisfação e desconfiança em relação ao gerente JUXSR VLJQLÀFDP TXH DV FRPXQLFDo}HV
e à empresa. frequentemente, são unidirecionais. Os
Para Sommerville (2011, p.421), há quatro questões gerentes e os engenheiros experientes
básicas relacionadas à gestão de pessoas: tendem a dominar as comunicações com o
pessoal menos experiente, que pode estar
1. Consistência. Pessoas em uma equipe de relutante em iniciar uma conversa ou fazer
projeto devem ser tratadas da mesma forma. observações críticas.
Ninguém espera que o reconhecimento seja 2. Estrutura de grupo. Pessoas em grupos
igual para todos, mas as pessoas não devem estruturados informalmente comunicam
sentir que sua contribuição para a organização PDLV HÀFD]PHQWH GR TXH DV SHVVRDV
é subvalorizada. em grupos com uma estrutura formal,
2. Respeito. Pessoas diferentes têm habilidades hierárquica. Em grupos hierárquicos, as
diferentes e os gerentes devem respeitar essas comunicações tendem a subir e descer o
diferenças. A todos os membros da equipe ÁX[RGDKLHUDUTXLD$VSHVVRDVGRPHVPR
devem ser dadas oportunidades de contribuir. nível não podem conversar entre si. Esse
Claro que, em alguns casos, você vai encontrar é um problema ainda maior em projetos
pessoas que simplesmente não se encaixam de grande porte com vários grupos de
em uma equipe e não podem continuar, mas desenvolvimento. Se as pessoas que
é importante não tirar conclusões no estágio trabalham em diferentes subsistemas se
inicial do projeto. comunicarem apenas por meio de seus
3. Inclusão. Pessoas contribuem efetivamente gerentes, existe maior probabilidade de
quando sentem que são ouvidas por outras atrasos e mal-entendidos.
pessoas e que suas propostas são levadas 3. Composição de grupo. Pessoas com
em consideração. É importante desenvolver os mesmos tipos de personalidade
um ambiente de trabalho em que todas as (discutidos na Seção 22.2) podem colidir e,
visões são consideradas, mesmo aquelas dos consequentemente, inibir as comunicações.
membros mais novos da equipe. Geralmente, a comunicação também é
4. Honestidade. Como gerente, você melhor em grupos mistos (MARSHALL
deve sempre ser honesto sobre o que está e HESLIN, 1975) do que em grupos do
indo bem e o que vai mal na equipe. Você mesmo sexo. Frequentemente, as mulheres
também deve ser honesto sobre seu nível são mais orientadas a interações do que os
de conhecimento técnico e estar disposto a homens e podem atuar como controladoras
submeter-se a algum membro da equipe com e facilitadoras das interações para o grupo.
mais conhecimento, quando necessário. Se 4. Ambiente físico de trabalho. A organização do
tentar encobrir sua ignorância ou problemas, local de trabalho é um fator importante para
você será eventualmente descoberto e perderá facilitar ou inibir as comunicações.
o respeito do grupo. 5. Canais de comunicação disponíveis. Existem
400 Engenharia de Software I 44
muitas formas diferentes de comunicação: HVSHFLÀFDo}HVGRSURMHWR
face a face, mensagens de correio 4. 0RQLWRUDPHQWR H &RQWUROH: os processos
electrônico, documentos formais, telefone e exigidos para acompanhar, analisar e controlar
tecnologias da Web 2.0 como redes sociais e o progresso e desempenho do projeto,
wikis. Como as equipes de projeto se tornam LGHQWLÀFDU TXDLVTXHU iUHDV QDV TXDLV VHUmR
necessárias mudanças no plano, e iniciar as
cada vez mais distribuídas, com membros
mudanças correspondentes.
de equipe trabalhando remotamente, você 5. (QFHUUDPHQWR: os processos executados para
precisará fazer uso de várias tecnologias para ÀQDOL]DUWRGDVDVDWLYLGDGHVGHWRGRVRVJUXSRV
facilitar a comunicação (SOMMERVILLE, de processos, visando encerrar formalmente o
2011, p. 442). projeto ou fase (http://www.adminconcursos.
com.br/2014/08/gerenciamento-de-projetos-
Chegamos ao final da primeira seção. Na próxima, guia-pmbok.html).
iremos discutir o PMBOK. Vamos lá?
Já as áreas do conhecimento são: Gerenciamento do
230%2. ,QWHJUDomRGR3URMHWR*HUHQFLDPHQWRGR(VFRSRGR3URMHWR
*HUHQFLDPHQWR GR 7HPSR GR 3URMHWR *HUHQFLDPHQWR
O guia PMBOK foi elaborado em 1987. É intitulado The GRV &XVWRV GR 3URMHWR *HUHQFLDPHQWR GD 4XDOLGDGH GR
Project Manegement Body of Knowlede. O propósito do 3URMHWR*HUHQFLDPHQWRGRV5HFXUVRV+XPDQRVGR3URMHWR
documento é sugerir quais processos devem ser executados *HUHQFLDPHQWRGDV&RPXQLFDo}HVGR3URMHWR*HUHQFLDPHQWR
no gerenciamento de projetos, em áreas de Escopo, Tempo, GRV 5LVFRV GR 3URMHWR *HUHQFLDPHQWR GDV $TXLVLo}HV GR
Custo, Recursos Humanos, Comunicações, Risco, Aquisições 3URMHWR*HUHQFLDPHQWRGDV3DUWHV,QWHUHVVDGDVGR3URMHWR
e Qualidade. Ele propõe o desenvolvimento de um conjunto A seguir, verifiquem um mapa mental acerca de como
de processos que integrem tais áreas. Segue o esquema organizar os grupos de processos e as áreas do conhecimento.
utilizado para implementar os processos:
Minhas anotações

Figura 2. Xavier, s.d.

O guia MPBOK fornece, ainda, um vocabulário básico a


ser utilizado pelos profissionais da área. Em 2016, foi lançada
a edição mais recente: a sexta. O guia PMBOK é o único
entre os padrões globais que contém um guia e um padrão. O
padrão é ligado a ISO 21500 e apresenta conceitos-chave. Já
o guia apresenta informações adicionais a respeito de como
utilizar as práticas já comprovadas.
Os grupos de processos são organizados em cinco
QR 30%2. 6mR HODV ,QLFLDomR 3ODQHMDPHQWR ([HFXomR
Monitoramento e Controle Encerramento:
1. ,QLFLDomR: os processos executados para
GHÀQLUXPQRYRSURMHWRRXXPDQRYDIDVHGH
um projeto existente através da obtenção de
autorização para iniciar o projeto ou fase.
2. 3ODQHMDPHQWR: os processos necessários
SDUD GHÀQLU R HVFRSR GR SURMHWR UHÀQDU RV
REMHWLYRVHGHÀQLUDOLQKDGHDomRQHFHVViULD
para alcançar os objetivos para os quais o
projeto foi criado.
3. ([HFXomR: os processos realizados para
H[HFXWDU R WUDEDOKR GHÀQLGR QR SODQR GH
gerenciamento do projeto para satisfazer as
45 401

Figura 3. Fonte: <http://www.diegomacedo.com.br/grupos-de-processos-de-gerenciamento-de-projetos-e-suas-areas-de-conhecimento-pmbok-5a-ed/?print=pdf>. Acesso


em 8 abr. 2017.

As explanações acerca do PMBOK certamente não se 30%2.


encerram aqui. No link http://www.diegomacedo.com.br/ Aqui, discutimos o PMBOK, principal documento no
grupos-de-processos-de-gerenciamento-de-projetos-e-suas- que tange ao gerenciamento de projetos, pois é responsável
areas-de-conhecimento-pmbok-5a-ed/?print=pdf há um por estabelecer normativas globais para a gerência, além de
resumo acerca do documento que, alias, é bastante extenso. conceitos-chave. Certamente o documento facilita muito o
Procurem acessá-lo! crescimento e a inovação na área.

Retomando a aula Vale a pena

&KHJDPRVDRȴQDOGDV«WLPDDXOD
Certamente os conhecimentos acerca da gestão de Vale a pena acessar
projetos precisam ser ampliados. Procurem artigos
e livros a respeito da temática, pois disso depende a boa atuação na
gerência de projetos. Vamos recordar o que vimos até agora? Procurem conhecer mais a respeito do PMBOK,
seguem dois links para leitura:
Disponível em: <http://www.adminconcursos.com.
*HUrQFLDGHSURMHWRV br/2014/08/gerenciamento-de-projetos-guia-pmbok.html
Aqui, discutimos a gestão de projetos e de que modo ela >. Acesso em 8 abr. 2017.
está articulada entre gerenciamento de risco, gerenciamento de Disponível em: <https://lmdourado.files.wordpress.
pessoas e trabalho em equipe. O gerente de projetos precisa com/2013/10/resumo-pmbok-5.pdf>. Acesso em 8 abr.
articular a experiência com a capacidade de analisar criticamente 2017.
as situações.
402 Engenharia de Software I

8º Aula

Gerenciamento de
FRQȴJXUD©¥RGHVRIWZDUH

Olá, pessoal!
Chegamos à nossa última aula!
Para finalizar, abordaremos o gerenciamento de
configuração de software, que diz respeito à tarefa
de identificar, organizar e controlar modificações no
software em desenvolvimento. Por meio da gerência
de configuração de software é possível maximizar a
produção e reduzir erros, sendo uma das bases para a
Engenharia de Software.
Vamos aos seus desdobramentos?
Boa aula!

Objetivos de aprendizagem

Ao término desta aula, vocês serão capazes de:

‡HQWHQGHUFRPRVHRUJDQL]DDJHUrQFLDGHFRQILJXUDomRGHVRIWZDUH
‡HQWHQGHUSURFHGLPHQWRVHDWLYLGDGHVUHODFLRQDGDVj6&0
47 403
registro que informe aos demais desenvolvedores que o
Seções de estudo desenvolvedor A, está de posse do componente X.
‡1RGLDVHJXLQWHRGHVHQYROYHGRU$WHYHSUREOHPDVGH
saúde e não pode trabalhar.
1 - Gerenciamento de configuração de software ‡1RHQWDQWRKRXYHXPSUREOHPDQRVLVWHPDFDXVDGR
2 - Importância do gerenciamento de configuração pelo componente X.
3 - Atividades associadas à SCM ‡2GHVHQYROYHGRU%UHWLUDXPDFySLDGHVVHFRPSRQHQWH
4 - Versão CMM e realiza as alterações necessárias para que o sistema funcione
5 - Impedimentos à adoçao de GCS corretamente.
6 - Gerenciamento de configuração e a abordagem de ‡ 2 GHVHQYROYHGRU % GHYROYH R FRPSRQHQWH DR
Sommerville repositório.
‡1RGLDVHJXLQWHRGHVHQYROYHGRU$UHWRUQDHFRQWLQXD
1*HUHQFLDPHQWRGHFRQȴJXUD©¥RGH suas alterações no componente X (que já possui uma versão
software diferente no repositório).
‡$SyVFRQFOXLURGHYROYHDRUHSRVLWyULRVREUHSRQGRDV
Já vimos em nossa introdução da aula que a gerência alterações feitas pelo desenvolvedor B.
de software volta-se à identificação, organização e controle ‡4XDQGRRFRPSRQHQWHIRUQRYDPHQWHH[HFXWDGRRV
de mudanças no software em construção. Ela permite que mesmos problemas que existiam antes do desenvolvedor
erros sejam minimizados, e que o software produzido ofereça B alterá-lo tornarão a aparecer, e por não haver nenhum
sua melhor qualidade. Enquanto produto que passa por mecanismo de controle que registre as alterações e os acessos
manutenções, o software precisa de um acompanhamento pela aos componentes, ninguém saberá como e onde o problema
equipe, e a gerência de sua configuração permite que todas foi gerado.
as pessoas envolvidas saibam do projeto. Mesmo que haja O exemplo citado, geralmente, é bastante comum, mas
mudanças na equipe, a gerência de configuração de software, gera transtornos ao desenvolvedor e à gerência por diversos
doravante GCS, possibilita que elas saibam as necessidades do motivos: nem sempre as alterações são documentadas e
projeto. Basicamente, a GCS controla as alterações e mantém QRWLILFDGDVDFRPXQLFDomRUXLPLPSDFWDQDFRPSDWLELOLGDGH
a integridade do sistema. Além disso, identifica e controla as GRVJUXSRVDIDOWDGHFRPSDWLELOLGDGHJHUDDWUDVRVQHFHVVLGDGH
configurações do software, do hardware e das ferramentas de se fazer o mesmo trabalho duas vezes, desvio do escopo do
utilizadas durante o ciclo de desenvolvimento. projeto e, certamente, a insatisfação do cliente.
Com isso, uma ferramenta de GCS deve possibilitar Nas próximas seções, verificaremos alguns modelos de
funcionalidades de diferentes aspectos, com controle da área reconhecimento internacional do que diz respeito a GCS.
de trabalho de diversos desenvolvedores, além de integração
adequada com ferramentas de desenvolvimento e controle de
processo.
3  *HUHQFLDPHQWR GH FRQȴJXUD©¥R
Muitas vezes, o estudo acerca da GCS é negligenciado,
de software
contudo, isso é um erro, tendo em vista que pode acarretar em As atividades relacionadas à GCS envolvem, basicamente,
diversos prejuízos.
‡3ODQHMDPHQWRGHDWLYLGDGHVGH*&6
‡,GHQWLILFDomRHDUPD]HQDPHQWRGHLWHQVGHFRQILJXUDomR
2 - Importância do gerenciamento de ‡ &RQWUROH H DXGLWRULD GH PXGDQoDV QRV LWHQV GH
FRQȴJXUD©¥R FRQILJXUDomR
As organizações, de modo geral, possuem algum tipo de ‡ 2UJDQL]DomR GH LWHQV GH FRQILJXUDomR SRU PHLR GRV
GCS, mesmo que não reconheçam sua execução. É possível, FRPSRQHQWHVYHUVLRQDGRV
por exemplo, desenvolver um controle simples, utilizando um ‡&ULDomRGHEDVHOLQHVHPPLOHVWRQHVGRSURMHWR
único programador que saiba o progresso dos programas, ou, ‡5HJLVWURHUDVWUHDPHQWRGHVROLFLWDo}HVGHPXGDQoDV
ainda, um grande número de pessoas, com práticas rígidas e ‡6XSRUWHDDOWHUDo}HVGHFRQFRUUHQWHV
bastante definidas de GCS. ‡&RPXQLFDomRGHPXGDQoDVHPLWHQVGHFRQILJXUDomR
A partir da década de 1960, com a ampliação das técnicas bem como status de baselines e, ainda entre as pessoas
de GCS, desenvolvedores começaram a aprimorar a produção, envolvidas.
promover redução de custos e atuar de modo a manter o Para realizar tais tarefas, é necessário seguir uma
controle do progresso do projeto. Quando o software é ferramenta de GCS. Ela deve suprir todas as necessidades
desenvolvido por terceiros, isso é ainda mais necessários, pois a relatadas, além das já citadas acima. Entre os itens necessários
GCS possibilita que os desenvolvedores coordenem o trabalho a uma ferramenta de GCS, estão:
de diversas pessoas em um projeto comum, mesmo a distância.
‡3RVVXLUXPUHSRVLWyULRVHJXURHHVFDORQiYHO
Uma situação-problema na qual não há controle de ‡ &RQWURODU R YHUVLRQDPHQWR GRV LWHQV GH
PRGLÀFDo}HVSRGHVHUSHUFHELGDQRH[HPSORDVHJXLU FRQÀJXUDomR
‡,QWHJUDUHTXLSHVGHGHVHQYROYLPHQWR
‡ 2 GHVHQYROYHGRU $ QHFHVVLWD UHDOL]DU DOWHUDo}HV QR ‡3HUPLWLUDOWHUDo}HVFRQFRUUHQWHVJDUDQWLQGR
componente X, e o retira do repositório. Não há nenhum DLQWHJULGDGHGRVRIWZDUH
404 Engenharia de Software I 48
‡ 3RVVXLU PHFDQLVPRV GH FRPSDUDomR H imaturos, o desenvolvimento do software se dá por técnicos
PHVFODJHPGHLWHQVFRQFRUULGRV e gerentes, mas não necessariamente sendo seguido. Já em
‡ 5DVWUHDU VROLFLWDo}HV GH PXGDQoDV casos de softwares desenvolvidos em empresas maduras, o
bem como atividades atribuídas aos processo é constantemente documentado e melhorado. Assim,
GHVHQYROYHGRUHV o desenvolvimento dos projetos é visível porque o tempo todo
‡ &RQWURODU H DXGLWDU R DFHVVR H PXGDQoDV
o processo é controlado e mensurado.
realizadas pelas equipes em itens de
FRQÀJXUDomR
O CMM estabelece cinco processos evolutivos. Eles
‡3HUPLWLUDUHWRPDGDGRSURMHWRHPTXDOTXHU medem a maturidade do processo e o organiza, de modo que é
momento do ciclo do desenvolvimento, possível avaliar sua capacidade.
garantindo a integridade de seus itens naquele
dado momento (SOUZA, 2004, p. 26).

Na próxima seção, conheceremos a versão CMM.

4 - Versão CMM
O modelo Capability Maturity Model - Modelo de
Maturidade da Capacitação, doravante CMM, foi produzido
pelo Software Engineering Institute – SEI, nos Estados
Unidos. Sua primeira versão data de 1991. O propósito era
atentar a uma necessidade do governo federal dos EUA para
avaliar a capacitação dos fornecedores de software:

´3URFHVVRµ p XPD VHTrQFLD GH SDVVRV


realizados para atingir um determinado Figura 1. Fonte: Fonte: <http://www.batebyte.pr.gov.br/modules/conteudo/con-
objetivo, e pelo CMM, um “Processo de teudo.php?conteudo=1103>. Acesso em: 05 abr. 2017.

Software” é um conjunto de atividades, O CMM, assim, é responsável por identificar os níveis


métodos, práticas e transformações que as por meio dos quais uma organização deve atuar para alcançar
pessoas usam para desenvolver e manter a excelência nas produções de software. Por meio dos cinco
o software e seus produtos associados. O níveis estabelecidos, é possível entender a base necessária para
CMM tem seu foco no processo de software o próximo nível a ser construído: “Cada nível de maturidade é
por entender que a qualidade de um
composto de algumas “áreas-chave de processo” (exceção feita
VLVWHPDGHVRIWZDUHpIRUWHPHQWHLQÁXHQFLDGD
pela qualidade do processo utilizado para
ao Nível 1) consideradas como requisitos para se atingir um
desenvolvê-lo e mantê-lo. Portanto, uma nível de maturidade. Portanto, para se atingir um determinado
premissa do CMM é o foco no “processo” nível de maturidade, as áreas-chave de processo daquele nível
da mesma forma que no “produto”, pois (e dos níveis inferiores) devem estar atendidas e o processo
enfocando apenas o “produto” se perde o LQVWLWXFLRQDOL]DGRµ 6,/9$2/,9(,5$ 
conhecimento de como produzi-lo melhor
por não se ter desenhado, conhecido e,
constantemente, melhorado o processo 5 - Impedimentos à adoçao de GCS
utilizado para desenvolver o produto.
A “capacidade do processo de software”
descreve o conjunto de resultados esperados Apesar de a GCS ser uma área fundamental diversas
que possa ser atingido quando se segue vezes, há questões que dificultam sua implementação. Entre
o processo de software estabelecido. Já os motivos, estão: o custo: por exigir diversos gastos, muitas
a “maturidade do processo de software” YH]HVD*&6pUHOHJDGDDFXOWXUDGDHPSUHVDDGLILFXOGDGHGH
p R TXDQWR XP SURFHVVR HVSHFtÀFR p algumas empresas em enfrentar mudanças faz com que se evite
H[SOLFLWDPHQWH GHÀQLGR JHUHQFLDGR PHGLGR D*&6RDXPHQWRQDIRUPDOLGDGHHQDEXURFUDFLDSRUVHUXPD
controlado e efetivo. Maturidade implica num área que exige procedimentos detalhados, é considerada, por
potencial de crescimento da capacidade e PXLWRV H[WUHPDPHQWH EXURFUiWLFD FRQKHFLPHQWR VXSHUILFLDO
indica tanto a riqueza do processo de software
sobre a GCS: devido à dificuldade de alguns em aprofundar os
de uma organização, quanto a consistência
na qual o processo é aplicado nos projetos conhecimentos, é comum que seja uma área banalizada.
de toda a organização (SILVA, OLIVEIRA, Pensando de modo geral, a prática de GCS é bastante
2003). diversificada ao redor do mundo. Muitos países, como EUA,
por exemplo, grandes compradores de software, as práticas
Entende-se que a evolução das empresas de software de GCS são mais maduras, por exigir dos fornecedores regras
faz com que os processos também evoluam. Assim, o foco e normas de conduta. Já no Brasil, é uma área em ascensão,
do CMM é fazer com que as pessoas que participem do motivada, principalmente, pela competitividade do mercado e
processo de desenvolvimento de software sejam capazes da busca de certificados de qualidade, como ISSO 9000, CMM,
de estar integradas a essa evolução. Em casos de processos SPICE, entre outros.
49 405
6*HUHQFLDPHQWRGHFRQȴJXUD©¥RH 6.2 - Gerenciamento de versões
a abordagem de Sommerville O gerenciamento de versões é responsável pelo processo
Companheiro nosso ao longo das aulas, Sommerville de acompanhamento de diferentes versões do software ou de
(2011) trata, também, do gerenciamento de configuração. Ele itens de configuração, bem como sobre os sistemas em que
estabelece, para tanto, quatro discussões acerca do tema. Elas tais componentes são usados. Ainda diz respeito à garantia
serão discutidas a seguir: de que as mudanças realizadas não irão interferir uma nas
outras. Pode-se pensar em gerenciamento de versões como o
6.1 - Gerenciamento de mudanças processo de se gerenciar codelines e baselines.

O objetivo é garantir que o sistema evolua por meio da Essencialmente, uma codeline é uma sequência
prioridade às mudanças urgentes e efetivas. Está relacionado de versões de código-fonte com versões
posteriores na sequência derivadas de versões
com a análise de custos e de benefícios das mudanças propostas:
anteriores. Normalmente, as codelines são
Existem muitas variantes desse processo em aplicadas para componentes de sistemas,
XVRPDVSDUDVHUHPHÀFD]HVRVSURFHVVRVGH havendo, assim, diferentes versões de cada
gerenciamento de mudanças sempre devem ter FRPSRQHQWH 8PD EDVHOLQH p XPD GHÀQLomR
GHXPVLVWHPDHVSHFtÀFR$EDVHOLQHSRUWDQWR
XPPHLRGHYHULÀFDomRFXVWHLRHDSURYDomRGH
HVSHFLÀFD D YHUVmR GH FDGD FRPSRQHQWH
mudanças. Esse processo deve entrar em vigor
LQFOXtGDQRVLVWHPDPDLVXPDHVSHFLÀFDomRGDV
quando o software é desenvolvido para entrega
ELEOLRWHFDV XVDGDV DUTXLYRV GH FRQÀJXUDomR
aos clientes ou para implantação em uma
etc. (SOMMERVILLE, 2011, p. 478).
organização. O processo de gerenciamento
GH PXGDQoDV LQLFLDVH TXDQGR XP ¶FOLHQWH· O gerenciamento de versões exige ferramentas de
preenche e envia uma solicitação de mudança
gerenciamento de versões. Estas, por sua vez, identificam,
(CR, do inglês change request) que descreve
armazenam e controlam o acesso a diferentes versões de
a mudança requerida para o sistema. Pode
tratar-se de um relatório de bug, em que são componentes.
descritos os sintomas de um bug, ou uma
solicitação para adicionar funcionalidade extra
6.3 - Gerenciamento de sistemas
ao sistema. Algumas empresas tratam relatórios
O gerenciamento de sistemas diz respeito ao processo
de bugs e novos requisitos separadamente,
de criação de um sistema completo e executável por meio da
mas, em princípio, ambas são solicitações de
mudança. As solicitações de mudança podem construção e da ligação dos componentes do sistema: “As
ser apresentadas por meio de um formulário de ferramentas de construção de sistemas e as ferramentas de
solicitação de alteração (CRF, do inglês change gerenciamento de versões devem se comunicar na medida em
UHTXHVW IRUP  (X XVR R WHUPR ¶FOLHQWH· SDUD que o processo de construção envolve a realização de check-out
incluir qualquer stakeholder que não seja parte de versões de componentes do repositório pelo sistema de
da equipe de desenvolvimento, para que as gerenciamento de versões” (SOMMERVILLE, 2011). Assim,
mudanças possam ser sugeridas, por exemplo, a descrição de configuração que é utilizada para identificar
pelo departamento de marketing de uma uma baseline também é usada na ferramenta de construção de
empresa (SOMMERVILLE, 2011, p. 478). sistemas. Há três plataformas de sistemas envolvidas:

A figura abaixo estabelece um processo de gerenciamento 1. O sistema de desenvolvimento inclui


de mudanças: ferramentas de desenvolvimento como
compiladores, editores de código-fonte etc.
Os desenvolvedores realizam o check-out
de código do sistema de gerenciamento de
versões em um espaço de trabalho privado
antes de fazer as mudanças no sistema. Eles
podem desejar construir uma versão de
um sistema para testes em seu ambiente de
desenvolvimento antes da aprovação das
PXGDQoDV TXH À]HUDP SDUD R VLVWHPD GH
gerenciamento de versões. Isso envolve o uso
de ferramentas locais de construção que usam
versões de check-out de componentes no
espaço de trabalho privado.
2. O servidor de construção é usado para
FRQVWUXLU YHUV}HV GHÀQLWLYDV H WDPEpP
executáveis do sistema. Dessa forma, interage
estreitamente com o sistema do gerenciamento
de versões. Os desenvolvedores realizam
Figura 2. Sommerville, 2011, p. 478.
o check-in no sistema de gerenciamento
406 Engenharia de Software I 50
de versões antes de este ser construído. A erros sejam minimizados, e que o software produzido ofereça
construção de sistema pode contar com sua melhor qualidade.
bibliotecas externas que não estão incluídas
no sistema de gerenciamento de versão.
3. O ambiente-alvo é a plataforma em
,PSRUWkQFLDGRJHUHQFLDPHQWRGHFRQILJXUDomR
que o sistema é executado. Pode ser o Vimos que as organizações, de modo geral, possuem
mesmo tipo de computador usado para o algum tipo de GCS, mesmo que não reconheçam sua execução.
desenvolvimento e a construção de sistemas. É possível, por exemplo, desenvolver um controle simples,
No entanto, para os sistemas de tempo real utilizando um único programador que saiba o progresso dos
e embutidos, o ambiente-alvo é, geralmente,
programas, ou, ainda, um grande número de pessoas, com
menor e mais simples do que o ambiente de
práticas rígidas e bastante definidas de GCS.
desenvolvimento (por exemplo, um telefone
celular). Para os sistemas de grande porte,
o ambiente-alvo pode incluir bancos de $WLYLGDGHVDVVRFLDGDVj6&0
dados e outros sistemas COTS que não Verificamos quais são as atividades a serem desenvolvidas
podem ser instalados em máquinas de na SCM.
desenvolvimento. Em ambos os casos, não
é possível construir e testar o sistema no 9HUVmR&00
computador desenvolvido ou no servidor O modelo Capability Maturity Model - Modelo de
de construção (SOMMERVILLE, 2011). Maturidade da Capacitação, doravante CMM, foi produzido
pelo Software Engineering Institute – SEI, nos Estados
Assim, sistema de desenvolvimento e o servidor de
construção podem interagir com o sistema de gerenciamento Unidos. Sua primeira versão data de 1991. O propósito era
de versões, que, por sua vez, pode ser hospedado em um atentar a uma necessidade do governo federal dos EUA para
servidor de construção e em um servidor dedicado. Em avaliar a capacitação dos fornecedores de software.
sistemas embutidos, é possível instalar o ambiente de
simulação no mesmo ambiente de desenvolvimento de testes. ,PSHGLPHQWRVjDGRoDRGH*&6
Entendemos que, apesar de a GCS ser uma área
6.4 - Gerenciamento de releases fundamental, diversas vezes há questões que dificultam
Por fim, o gerenciamento de releases, abordado por sua implementação. Entre os motivos, estão: o custo: por
Sommerville (2011), diz respeito à versão de um sistema de H[LJLU GLYHUVRV JDVWRV PXLWDV YH]HV D *&6 p UHOHJDGD D
software que é distribuída aos clientes. Há, nesse sentido, dois cultura da empresa: a dificuldade de algumas empresas em
tipos de releases: os releases principais, que fornecem nova HQIUHQWDUPXGDQoDVID]FRPTXHVHHYLWHD*&6RDXPHQWR
funcionalidade e os releases menores, que corrigem problemas na formalidade e na burocracia: por ser uma área que exige
e reparam bugs a partir de erros relatados pelos clientes. Já procedimentos detalhados, é considerada, por muitos,
para softwares customizados, os releases se dão por meio de um H[WUHPDPHQWH EXURFUiWLFD FRQKHFLPHQWR VXSHUILFLDO VREUH
gerenciamento complexo. Muitas vezes, os releases especiais a GCS: devido à dificuldade de alguns em aprofundar os
do sistema precisam ser produzidos individualmente, para conhecimentos, é comum que seja uma área banalizada.
cada cliente. Assim, uma empresa de software, ao vender um
produto, pode ter que gerenciar diversos releases ao mesmo
*HUHQFLDPHQWRGHFRQILJXUDomRHDDERUGDJHP
tempo.
GH6RPPHUYLOOH
Nessa perspectiva, os sistemas e processos de
gerenciamento devem ser projetados para fornecer Conhecemos o gerenciamento de configuração na
informações sobre cada release. Portanto, cada um deve ser perspectiva de Sommerville.
documentado de modo individual.

Vale a pena
Retomando a aula

&KHJDPRVDRȴQDOGD¼OWLPDDXOD
Vamos recordar? Vale a pena acessar

*HUHQFLDPHQWRGHFRQILJXUDomRGHVRIWZDUH Vejam o link a seguir para conhecerem mais sobre


Já vimos em nossa introdução da aula que a gerência o CMM: <http://www.batebyte.pr.gov.br/modules/
de software volta-se à identificação, organização e controle conteudo/conteudo.php?conteudo=1103 >.
de mudanças no software em construção. Ela permite que

Você também pode gostar