Engenharia de Software
-
Upload
ailton-adriano -
Category
Documents
-
view
20 -
download
0
description
Transcript of Engenharia de Software
-
Direitos: Esta obra foi disponibilizada sob uma Licena Creative Commons Atribuio Uso no-comercial 3.0 Brasil.
Direitos de distribuio e publicao: CAPES/MEC, conforme Pargrafo nico, do Artigo 5, da Resoluo CD/FNDE n 24 de 04 de Junho de 2008.
Universidade Federal de Juiz de Fora Reitor: Henrique Duque de Miranda Chaves Filho Instituto de Cincias Exatas Diretor: Rubens de Oliveira Departamento de Cincia da Computao Chefe: Custdio Gouvea Lopes da Motta Curso de Licenciatura em Computao Coordenao: Fernanda Claudia Alves Campos
Organizao Jos Maria Nazar David
Comisso Editorial
Eduardo Barrre Fernanda Claudia Alves Campos
Reviso Gramatical
Hortncia Cezar Pinto
Editorao Eletrnica Eduardo Barrre
Jos Maria Nazar David.
Fundamentos de Engenharia de Sofware / Jos Maria Nazar David 2013.
72 f. : il.
Material Didtico Curso de Licenciatura em Computao da Universidade Federal de Juiz de Fora, Juiz de Fora, 2012.
1. Educao Distncia. 2. Engenharia de Software. 3.
Teste de Software. 4. Qualidade de Software. I. Ttulo.
-
Apresentao Este material foi desenvolvido para apoiar a disciplina de Fundamentos de Engenharia de Software (carga horria: 30 horas) do curso de Licenciatura em Computao da Universidade Federal de Juiz de Fora. Para a conduo desta disciplina parte-se do pressuposto de que o aluno j cursou a disciplina de Modelagem de Sistemas, pois alguns conceitos abordados necessitam do entendimento da importncia da atividade de modelagem no processo de desenvolvimento de software.
O objetivo desta disciplina fornecer uma viso geral do processo de desenvolvimento de software, bem como discutir a importncia das organizaes adotarem a abordagem mais adequada ao seu contexto. No se busca com isso, esgotar a discusso sobre as diferentes etapas do processo de desenvolvimento e os artefatos gerados nas atividades. Em cada captulo, as atividades realizadas para o desenvolvimento dos artefatos so discutidas, bem como exemplos prticos so oferecidos para ilustrar a criao e a sua importncia para o software.
Sobre o autor:
Jos Maria N. David, professor da disciplina de Engenharia de Software com mais de vinte anos de experincia na rea de desenvolvimento de software, inicialmente como Analista de Sistemas e, posteriormente como professor. Recentemente tem se dedicado pesquisa dos diferentes aspectos envolvidos no Desenvolvimento Distribudo de Software. mestre e doutor em Engenharia de Sistemas e Computao pela Universidade Federal do Rio de Janeiro (COPPE/UFRJ) e professor do Departamento de Cincia da Computao da Universidade Federal de Juiz de Fora (UFJF).
-
Iconografia Conhea os diversos cones utilizados nos materiais didticos desenvolvidos pelos professores e tutores do curso de Licenciatura em Computao DCC/UFJF:
Pesquise.
Exerccios.
Material complementar (texto, vdeo, etc.) disponvel na Internet.
Leitura Complementar.
Comentrio do Autor.
Tome nota.
Concluso ou sntese de contedo.
Fique atento.
-
Sumrio
1. Introduo................................................................................................................................7
2. Processos de Software...........................................................................................................10
2.1 Introduo ......................................................................................................................10
2.2 Modelo em Cascata ........................................................................................................11
2.3 O Processo Unificado (RUP)............................................................................................11
2.4 O Modelo Evolucionrio .................................................................................................14
3. Engenharia de Requisitos de Software ..................................................................................17
3.1 Introduo ......................................................................................................................17
3.2 O Processo de Engenharia de Requisitos .......................................................................19
3.3 Gerenciamento de requisitos .........................................................................................24
4. Projeto de Sistemas ...............................................................................................................27
4.1 Introduo ......................................................................................................................27
4.2 Alguns conceitos de projeto de software.......................................................................30
5. Implementao ......................................................................................................................35
5.1 Introduo ......................................................................................................................35
5.2 Reutilizao de software ................................................................................................36
5.3 Gerenciamento de Configurao....................................................................................38
6. Teste de Software ..................................................................................................................44
6.1 Introduo ......................................................................................................................44
6.2 Verificao e Validao...................................................................................................45
6.3 Testes Unitrios ..............................................................................................................46
6.4 Testes de Sistema ...........................................................................................................47
7. Manuteno e Evoluo de Software....................................................................................49
7.1 Introduo ......................................................................................................................49
7.2 Transformao de Arquitetura.......................................................................................51
7.3 Reengenharia..................................................................................................................51
-
8. Gerncia da Qualidade...........................................................................................................53
8.1 Introduo ......................................................................................................................53
8.2 Garantia e Padres de Qualidade...................................................................................56
8.3 Planejamento de Qualidade ...........................................................................................57
8.4 Controle de Qualidade....................................................................................................58
8.5 Melhoria de Processos ...................................................................................................58
9. Planejamento e Gerenciamento de Software .......................................................................64
9.1 Introduo ......................................................................................................................64
9.2 Estimativa de preo do software....................................................................................65
9.3 Plano de projeto .............................................................................................................67
9.4 Programao de projeto.................................................................................................70
Referncias Bibliogrficas ..........................................................................................................72
-
EADDCC032 Fundamentos de Engenharia de Software
7
1. Introduo
Antes de iniciarmos a apresentao dos temas associados Engenharia de
Software cabe definirmos o que podemos considerar como software, bem como o seu
significado. Muitas vezes considera-se que esse termo se refere apenas aos
programas de computadores e s suas instrues. Entretanto, ele se relaciona a
qualquer artefato gerado no processo de desenvolvimento de programas de
computadores que, ao serem executados, apresentaro as funcionalidades desejadas
pelos usurios.
Por que devemos ter cuidado ao desenvolvermos software? A evoluo da
Internet e a crescente complexidade das formas de interao tm demandado sistemas
com funcionalidades tambm complexas. Tais sistemas tm sido constantes nas
nossas vidas gerando uma dependncia em diferentes momentos. Por exemplo, nos
negcios, nas cincias, e no dia a dia de nossas vidas. Hoje podemos encontrar
software nos carros, nos eletrodomsticos, nos telefones, e outros. Mais ainda: a
quantidade de software que foi desenvolvido no passado e que necessitam de
modificaes para evolurem e se adequarem a um novo contexto tecnolgico e de
negcios.
Alm disso, muitos sistemas legados continuam em funcionamento demandando
pesquisas em relao s formas de evoluo, adaptao s novas tecnologias e
aperfeioamento em termos de artefatos existentes. Essas pesquisas tm investigado
solues para facilitar a manuteno buscando-se melhorias em termos de qualidade,
produtividade e custo.
Mas, por que ainda encontramos projetos que consomem um tempo elevado para
realizar entregas de produtos? Por que os custos ainda so altos em relao aos
produtos que so entregues? Por que ainda encontramos erros no produto final e o
custo de manuteno to alto? Um dos motivos associados a essas perguntas est
relacionado ausncia de um processo de desenvolvimento e da adoo de boas
prticas de projeto de software. As outras respostas a essas perguntas sero
apresentadas ao longo dos prximos captulos, outras sero deixadas como exerccios
para discusso ou pesquisa.
-
EADDCC032 Fundamentos de Engenharia de Software
8
(1) Pesquise, pelo menos, dois motivos pelos quais ainda se produz software com defeito.
(2) Pesquise pelo menos dois motivos que podem elevar o custo de evoluo de um software.
Esta apostila est organizada da seguinte forma: o prximo captulo apresenta
alguns processos da Engenharia de Software. Eles so responsveis pela organizao
das sequncias de atividades que apoiaro a construo dos sistemas; no Captulo 3,
os aspectos relacionados s necessidades das pessoas envolvidas neste projeto so
abordados, desde o levantamento e anlise at a especificao e construo de
documentos que descrevem essas necessidades. O Captulo 4 discute os diferentes
conceitos envolvidos no projeto (design) de software, bem como os artefatos que
podem ser construdos para representar as diferentes caractersticas que um projeto
desta natureza requer. J o prximo captulo parte dos conceitos e artefatos
previamente apresentados, e trata dos aspectos para construo de um cdigo
executvel a implementao do software. O Captulo 6 apresenta os conceitos
envolvidos no teste de software com o intuito de oferecer artefatos que funcionem
corretamente, mas tambm que atendam s necessidades das diferentes pessoas
interessadas no perfeito funcionamento do software (stakeholders). O Captulo 7
apresenta os conceitos envolvidos na manuteno e evoluo do software. Discute
tambm a necessidade de termos um processo para gerenciar mudanas nos artefatos
produzidos em cada etapa do desenvolvimento de software. O Captulo 8 apresenta os
conceitos bsicos sobre qualidade de software. Apresenta tambm os principais
atributos de qualidade e a influncia desses atributos no processo de desenvolvimento
e manuteno de software. Por fim, o Captulo 9 trata de questes do planejamento de
do gerenciamento de projetos de software.
-
EADDCC032 Fundamentos de Engenharia de Software
9
Exerccios
(1) O que software?
(2) Em relao ao processo de desenvolvimento de software, podemos afirmar que, ao terminarmos de escrever um programa o trabalho de desenvolvimento terminou?
(3) Em relao aos artefatos entregues ao cliente, podemos afirmar que o nico artefato entregue em um projeto bem sucedido o cdigo executvel?
(4) Por que devemos construir software sem defeitos?
(5) Apesar dos avanos da Engenharia de Software em relao s metodologias e prticas de desenvolvimento de sistemas, por que no conseguimos garantir um sistema livre de erros antes de entreg-lo ao cliente?
(6) De uma forma geral, por que os custos de manuteno de sistemas ainda so altos?
-
EADDCC032 Fundamentos de Engenharia de Software
10
2. Processos de Software
Este captulo tem como objetivo discutir o conceito de processos de software, bem como apresentar alguns modelos de processo que so frequentemente utilizados no desenvolvimento de software. Ao trmino deste captulo o leitor ser capaz de identificar as vantagens e desvantagens da utilizao de diferentes processos com o intuito de aplic-los no desenvolvimento de produtos
2.1 Introduo
Processos podem ser caracterizados como um procedimento ou uma poltica para
a construo de software. Artefatos so construdos ao longo do processo de
desenvolvimento de software de diferentes formas, considerando-se as atividades, os
recursos e os diferentes papeis envolvidos. Diferentes processos tm sido propostos na
literatura de Engenharia de Software com diferentes objetivos considerando-se os
contextos nos quais a organizao est envolvida. Mas, o que caracteriza um processo
como o mais adequado? Ao mencionarmos o contexto, como o fator que determina a
escolha de um processo especfico de desenvolvimento, nos referimos aos seguintes
elementos, por exemplo: maturidade da organizao para desenvolver software,
natureza do produto que ser desenvolvido, bem como ao domnio no qual a aplicao
ser utilizada.
Um processo de desenvolvimento de software engloba algumas prticas que
possuem como objetivos gerar artefatos com o foco na qualidade e oferecer
mecanismos para que as atividades possam ser continuamente melhoradas. A escolha
de um processo ir definir a qualidade dos artefatos gerados nas diferentes etapas do
desenvolvimento
Um processo de desenvolvimento, portanto, especifica os artefatos que sero
gerados, os papeis e os recursos para o desenvolvimento das atividades. Alm disso,
oferece uma sequncia de atividades cujo objetivo maior orientar as pessoas
envolvidas em relao aos produtos e responsabilidades. Atravs do conhecimento
associado ao processo de desenvolvimento de software os artefatos, bem como as
atividades, podero ser acompanhados, medidos e avaliados. Como resultado, busca-
-
EADDCC032 Fundamentos de Engenharia de Software
11
se uma previsibilidade dos eventos ocorridos, e uma melhoria contnua das atividades
ali desempenhadas.
2.2 Modelo em Cascata
O ciclo de vida em cascata parte do princpio de que as etapas de especificao
de requisitos, projeto, implementao, teste e verificao so realizadas uma aps a
outra. Ou seja, para realizar a etapa de projeto necessrio que os artefatos
relevantes que foram gerados na etapa anterior estejam disponveis. Desta forma, os
artefatos de projeto so gerados a partir da finalizao dos requisitos. Entretanto,
muitas vezes essas etapas se sobrepem e as informaes geradas nas etapas so
trocadas, pois nem todos os artefatos so gerados sem defeitos.
Uma das consequncias da utilizao deste modelo no desenvolvimento de
software o retrabalho decorrente da ausncia de informao ou de equvocos na
compreenso dos requisitos. Portanto, este modelo frequentemente se mostra
adequado no desenvolvimento de sistemas em que os requisitos so conhecidos na
sua totalidade, so estveis e o domnio bem conhecido. Como consequncia deste
fato, todos os artefatos podem ser verificados e revises podem ser realizadas em
cada etapa. Mais ainda, possvel ter uma viso geral e mais abrangente dos
requisitos que sero efetivamente implementados.
Mas, nem sempre os requisitos so efetivamente conhecidos e so estveis
exigindo um retrabalho ao retornar s etapas anteriores e modificando cada artefato
previamente construdo. Consequentemente, sistemas mal estruturados podem ser
construdos. Mais ainda, muitas vezes o tempo para entregar a verso final pode ser
extenso.
2.3 O Processo Unificado (RUP)
O objetivo deste modelo de processo foi unificar as abordagens previamente
existentes evidenciando as seguintes dimenses: as fases e os fluxos de trabalho. As
-
EADDCC032 Fundamentos de Engenharia de Software
12
fases correspondem ao tempo. o aspecto que se relaciona dinmica do processo.
Neste sentido, cada fase comporta as iteraes que iro produzir os artefatos
programados para cada ocasio. J os fluxos de trabalho correspondem s disciplinas
do desenvolvimento de software. So elas: modelagem de negcios, requisitos, anlise
e projeto (design), implementao, teste, implantao, gerncia de configurao e
mudana, gerenciamento de projeto e ambiente. Considerando-se as duas dimenses,
muitas vezes o processo unificado mencionado na literatura como um modelo de
processo hbrido. Percebemos uma sequncia de atividades prxima do modelo em
cascata previamente discutido.
O RUP um processo iterativo no qual as disciplinas so apresentadas em cada
etapa ao longo da dimenso do tempo. Portanto, podemos supor que ele oferece as
vantagens dos modelos que surgiram anteriormente, e propem as mesmas disciplinas
do RUP. Nessa dimenso, o modelo iterativo sugere as seguintes fases do ciclo de
vida do software: iniciao, elaborao, construo e transio.
(Fonte: http://www.wthreex.com/rup/process/ovu_proc.htm)
Org
aniz
ao
ao
long
o do
con
ted
o
Organizao ao longo do tempo
Figura 2.1: Fases e disciplinas do RUP
Na fase de Iniciao o objetivo realizar uma anlise econmica do sistema
partindo-se do conhecimento do negcio no qual o projeto est inserido. Como
resultado, busca-se uma anlise da viabilidade do projeto. Para tanto, estimativas
iniciais so realizadas, bem como riscos so analisados e escopos so definidos.
-
EADDCC032 Fundamentos de Engenharia de Software
13
Na fase de Elaborao, alguns objetivos so bem definidos, tais como: os
requisitos para o sistema so especificados, bem como uma arquitetura preliminar
definida. Nada impede que nesta etapa um prottipo seja desenvolvido e apresentado
com o intuito de verificar a viabilidade do projeto, por exemplo. Mais ainda, riscos so
continuamente aprimorados buscando-se aqueles mais significativos para o atual
estgio em que o projeto se encontra.
Na fase de Construo o foco est nos aspectos de implementao. Espera-se
nesta fase que os modelos estejam finalizados e revistos, bem como a arquitetura
esteja adequada aos incrementos que foram realizados nos artefatos. Mais ainda, os
riscos so monitorados e medidas so tomadas para mitig-los.
Na fase de Transio a maior parte dos artefatos j foi desenvolvida e
parcialmente verificada. O sistema como um todo se encontra pronto para ser
entregue, bastando uma avaliao da verso final por um grupo de usurios. Portanto,
testes ainda so necessrios e defeitos ainda podero ser retirados do produto. Mais
ainda, nada impede que sugestes e pedidos de melhorias possam ser realizados.
Modificaes so realizadas e o produto final entregue.
Atravs do desenvolvimento iterativo elementos so integrados de forma
incremental, pois os requisitos so passveis de mudanas. Com isso, as mudanas
nos requisitos so consideradas durante todo o processo. Essas mudanas podem
acarretar revises nos artefatos j planejados e projetados, bem como testes que
podero identificar erros mais cedo. Como resultado, entregas so realizadas mais
cedo, e fundamental que os riscos no projeto sejam tratados continuamente.
Entretanto, ao considerarmos a possibilidade de modificaes em requisitos exige
um gerenciamento no processo de mudanas no sentido de garantir que os artefatos
se relacionam. Mais ainda, novos requisitos podem exigir mudanas arquiteturais que
reduzam a qualidade do produto, bem como podem gerar sistemas mal estruturados.
RUP trata das seguintes prticas: (i) o software desenvolvido interativamente.
Artefatos so construdos atravs de vrias iteraes das quais participam os
diferentes interessados; (ii) durante as diferentes etapas e iteraes requistos so
gerenciados considerando-se que eles podem evoluir conforme os interessados
comeam a visualizar as funcionalidades e as entregas dos artefatos; (iii) arquiteturas
devem ser construdas tomando como base os componentes de software. Estes
-
EADDCC032 Fundamentos de Engenharia de Software
14
componentes so responsveis, em parte, pela facilidade de evoluo, pela qualidade
e pelo custo reduzido dos artefatos que so produzidos em cada etapa; (iv) artefatos
so modelados visualmente. Casos de uso, por exemplo, apoiam significativamente o
desenvolvimento a partir da abordagem do RUP. Fornecem um suporte a partir dos
diagramas e das descries do comportamento das funcionalidades. Esta modelagem
pode ser realizada, por exemplo, com o suporte de uma ferramenta; (v) a qualidade do
software continuamente verificada considerando-se os padres de produto e de
processo estabelecidos; e, por fim (vi) mudanas so controladas no sentido de
verificar, por exemplo, a sua viabilidade em termos dos recursos e da tecnologia
necessrios, e dos custos envolvidos.
Krutchen, P., 2003, The Rational Unifies Process An Introduction, Addison-Wesley. um livro que oferece uma viso geral do RUP, e apresenta os conceitos principais para uma leitura introdutria.
2.4 O Modelo Evolucionrio
Neste modelo os artefatos so produzidos gradativamente, conforme o
conhecimento sobre o domnio de aplicao do sistema adquirido. Para tanto duas
abordagens so utilizadas para este modelo. So elas:
(I) Desenvolvimento exploratrio: neste tipo o sistema evolui de acordo com o
conhecimento de novas funcionalidades, artefatos so produzidos em constante
interao com o cliente.
(II) Prottipos descartveis: esta tcnica apoia a identificao das necessidades dos
usurios a partir da construo de prottipos que sero apresentados aos
stakeholders com o objetivo de verificar a real necessidade dos requisitos, bem como
a sua consistncia.
-
EADDCC032 Fundamentos de Engenharia de Software
15
Entretanto, alguns problemas surgem ao utilizarmos este modelo de
desenvolvimento. O primeiro deles diz respeito visibilidade do processo. Sem um
processo perfeitamente visvel, as atividades e as suas dependncias no so
apresentadas aos desenvolvedores no sentido de gerenci-las. Outro problema est
relacionado s mudanas frequentes que este sistema est sujeito. Tais mudanas
esto associadas aos artefatos gerados nas etapas de desenvolvimento. Como
resultado, sistemas mal estruturados podem ser construdos, bem como a associao
entre os diferentes artefatos pode ser mais facilmente perdida. Para apoiar essas
atividades, um gerenciamento das mudanas mais rigoroso pode ser necessrio
exigindo o suporte de ferramentas especficas para o controle das modificaes. Este
assunto ser mais explorado nos prximos captulos.
A utilizao deste modelo pode ser interessante, portanto, para sistemas de
pequeno porte, com um nmero menor de funcionalidades. Pois, gerenciar as
mudanas de um nmero significativo de requisitos pode significar o fracasso e a
descontinuidade do projeto. Em algumas situaes, nas quais um nmero maior de
funcionalidades exigido, um modelo de processo que associe o modelo em cascata e
o modelo evolucionrio pode ser utilizado. Ou seja, em situaes nas quais os
requisitos so conhecidos e estveis pode ser utilizado o modelo em cascata. Em
outros momentos, nos quais os requisitos no so perfeitamente conhecidos, bem
como no so estveis, pod ser empregado o modelo evolucionrio. Este processo
frequentemente denominado de misto.
Exerccios
(1) O que um processo de desenvolvimento de software?
(2) Justifique a necessidade de um processo de desenvolvimento de software.
(3) Considere um determinado sistema cujos requisitos no foram, previamente, bem definidos e no eram estveis. Ou seja, modificaes frequentes nos mesmos ocorriam ao longo das atividades de desenvolvimento. Para tanto, foi utilizado apenas o modelo em cascata. Quais as implicaes da utilizao desse modelo para o desenvolvimento do sistema?
-
EADDCC032 Fundamentos de Engenharia de Software
16
(4) Considere os seguintes conceitos do RUP: fases, disciplinas, artefatos, e papeis. De que forma eles se relacionam em um processo de desenvolvimento de software?
(5) Em algumas situaes a abordagem evolucionria para o desenvolvimento de software apresenta algumas vantagens em relao abordagem em cascata. Em outras situaes, a utilizao do modelo em cascata pode ser mais eficaz no sentido de construir sistemas que atendam s necessidades dos usurios. Comente esta afirmao e apresente pelo menos uma vantagem e uma desvantagem da utilizao da abordagem evolucionria em relao abordagem em cascata. Utilize um exemplo para ilustrar a sua resposta.
(6) Considere que preciso desenvolver um sistema cujos objetivos gerais so inicialmente conhecidos; porm, no foram adequadamente identificados todos os requisitos (entrada, processamento e sada). Qual o modelo de processo para o desenvolvimento seria mais adequado? Quais os problemas frequentemente encontrados quando este modelo aplicado? Justifique a sua resposta utilizando exemplos
-
EADDCC032 Fundamentos de Engenharia de Software
17
3. Engenharia de Requisitos de Software
Este captulo tem como objetivo apresentar o processo de Engenharia de Requisitos e a sua relao com as diferentes etapas do processo de desenvolvimento de software. Adicionalmente, cada etapa do processo e os produtos de software gerados em cada uma delas sero discutidos. Ao final do captulo, o leitor deve ser capaz no apenas de compreender a importncia da Engenharia de Requisitos no processo de desenvolvimento de software, mas de especificar um sistema.
3.1 Introduo
Sistemas so desenvolvidos de acordo com as necessidades dos usurios e das
organizaes. Essas necessidades podem estar relacionadas tanto s funcionalidades
quanto s restries impostas ao funcionamento do sistema. Por exemplo: (i) o sistema
deve permitir que o usurio imprima um relatrio dos alunos matriculados at um
determinado dia; e (ii) o tempo mnimo para gerar este relatrio deve ser de 2 minutos.
Entretanto, para que essas necessidades sejam devidamente descritas cabe ao
desenvolvedor compreender o processo de negcio que ser automatizado, bem como
o contexto no qual ele est inserido. Por exemplo, o local em que o sistema ser
frequentemente executado, os recursos (hardware e software) disponveis, entre
outros.
Percebam que essas necessidades no dizem respeito descrio da forma pela
qual as funcionalidades sero executadas. Esta descrio dever ser realizada
posteriormente, a partir do momento em que o desenvolvedor compreendeu o conjunto
de tarefas que sero realizadas, o seu impacto nos negcios da organizao, bem
como o relacionamento dos diferentes processos de negcio da organizao. Em
relao a este ltimo, podemos mencionar que no basta, por exemplo, entender a
forma pela qual a matrcula de um aluno ser automatizada pelo sistema, mas tambm
os diferentes relacionamentos deste processo com aqueles que sero executados pela
-
EADDCC032 Fundamentos de Engenharia de Software
18
rea financeira da escola. Mais ainda: necessrio identificar os usurios, bem como
compreender a(s) forma(s) pela(s) qual(is) eles iro interagir com o sistema.
As necessidades so descritas atravs dos requisitos funcionais e no funcionais
do sistema. Os requisitos funcionais esto relacionados s funcionalidades executadas
pelo sistema, o seu comportamento diante das entradas e sadas dos dados. J os
requisitos no funcionais dizem respeito s restries para que essas funcionalidades
sejam executadas dentro dos padres de qualidade esperados. Por exemplo:
segurana, confiabilidade, portabilidade, tempo de entrega do produto, privacidade,
entre outros. Considere o sistema escolar que apresenta como requisito funcional
permitir que o aluno realize o pagamento da matrcula logo aps a escolha das
disciplinas. Entretanto, para que esta funcionalidade seja executada nos padres de
qualidade definidos pela escola, este pagamento deve oferecer uma segurana e
confiabilidade satisfatrias para a efetivao da matrcula.
Percebemos, portanto, que existe um relacionamento entre os requisitos
funcionais e no funcionais. Eles interagem de tal forma que um tipo pode modificar o
outro. Por exemplo, se a organizao no for capaz de fornecer um nvel de segurana
e confiabilidade satisfatrio para o aluno, o requisito funcional que trata do pagamento
da matrcula no poder ser especificado.
Figura 3.1: Relacionamento entre requisitos
Mas, se os requisitos no funcionais esto relacionados aos atributos de
qualidade do sistema, no possvel colocarmos todos os atributos no mesmo patamar
para que eles sejam atendidos? Por exemplo, o usurio necessita de portabilidade,
escalabilidade, confiabilidade, segurana, facilidade de uso e desempenho, todos no
mesmo patamar. No, nem sempre eles podem ser atendidos no mesmo nvel e
necessitam, portanto que se estabelea uma prioridade para que eles sejam atendidos.
Modifica Requisitos Funcionais
Requisitos no Funcionais
-
EADDCC032 Fundamentos de Engenharia de Software
19
No processo de Engenharia de Requisitos diferentes artefatos so gerados. So
exemplos destes artefatos: (i) descrio de casos de uso; (ii) diagramas de casos de
uso; (iii) modelos; e (iv) documento de especificao dos requisitos, entre outros.
Mesmo que o processo seja conduzido satisfatoriamente, necessrio
certificarmos de que esses produtos esto corretos. Considerando-se o processo de
desenvolvimento de software, quanto mais cedo um erro for identificado em um artefato
especfico, mais facilmente ele poder ser corrigido e, consequentemente, menor o
custo para a sua correo. Alm dos erros relacionados a uma compreenso
equivocada de uma necessidade, outros erros podem estar relacionados a requisitos
inconsistentes e/ou conflitantes. Uma das formas de identificarmos erros nos artefatos
atravs da realizao de revises. Elas podem envolver diferentes stakeholders e ser
realizadas atravs de reunies.
3.2 O Processo de Engenharia de Requisitos
Diferentes autores propem um processo para a Engenharia de Requisitos. No
contexto desta disciplina, adotaremos o modelo proposto por Sommerville (2009).
Neste processo, o autor prope as seguintes etapas: (i) estudo de viabilidade, (ii)
levantamento e anlise de requisitos, (iii) especificao de requisitos e (iv) validao de
requisitos. Para cada etapa alguns artefatos so gerados. A seguir discutiremos cada
uma das etapas, bem como os artefatos e a importncia de cada um deles para o
processo de desenvolvimento de software.
Figura 3.2: Etapas da Engenharia de Requisitos
(i) Estudo de Viabilidade
Este estudo tem como objetivo principal avaliar a viabilidade de se desenvolver o
sistema considerando-se as necessidades dos usurios. Atravs desta etapa,
procuramos antecipar os riscos de iniciarmos o desenvolvimento de um sistema que
Estudo de viabilidade
Levantamento e anlise de requisitos
Especificao de requisitos
Validao de requisitos
-
EADDCC032 Fundamentos de Engenharia de Software
20
no trar os benefcios esperados. Para tanto, busca-se identificar, brevemente, os
requisitos do negcio que ser modelado durante o processo de desenvolvimento.
Alm disso, cabe descrever o sistema e a forma pela qual ele poder apoiar a
organizao nos seus diferentes processos.
Entretanto, quando mencionamos que esta etapa de Engenharia de Requisitos
gera como resultado um relatrio de viabilidade, muitos questionam o contedo deste
documento. Cabe enfatizar que ele no deve refletir um estudo longo, pois a descrio
detalhada dos requisitos no faz parte desta etapa. um documento que descreve,
sucintamente, as vantagens que o sistema poder trazer para a organizao
apresentando as diferentes formas de utilizao no contexto dos processos de negcio.
Mais ainda: busca responder, brevemente algumas questes relacionadas utilizao
do sistema considerando-se as tecnologias e sistemas j existentes na organizao.
Neste momento, custo e prazo so elementos essenciais para justificar, o no, a
continuidade do processo de desenvolvimento.
Por fim, ser produzido um relatrio que ir, ou no, recomendar a continuidade
do processo de desenvolvimento. Alm disso, cabe justificar a recomendao de
continuidade do processo, ou ento sugerir que o escopo do sistema seja modificado
em decorrncia dos seguintes aspectos: tecnologia, pessoal, prazo, custo, entre outros.
(ii) Levantamento e Anlise de Requisitos
Depois de identificada a viabilidade para prosseguir com o desenvolvimento do
software, cabe aos analistas procurarem entender com mais detalhes as reais
necessidades do cliente. Para tanto, necessrio lanar mo de algumas tcnicas que
podero apoiar esses analistas na compreenso do contexto no qual os processos de
negcio esto inseridos. Alm disso, eles necessitaro ter um conjunto de informaes
que os ajudaro na compreenso das relaes desses processos. Mas cuidado, parece
simples, no ? Se perguntarmos aos usurios o que eles necessitam parece ser
suficiente, mas no to simples assim. Isso acontece por vrios motivos. Vejamos
ento alguns deles a seguir.
-
EADDCC032 Fundamentos de Engenharia de Software
21
Muitas vezes achamos que a atividade de levantamento e anlise de requisitos
simples. Isto se deve ao fato de que ela se refere ao entendimento dos processos de
negcio e suas relaes, tecnologia e pessoal envolvidos, aos sistemas existentes,
aos desejos dos usurios, s necessidades e objetivos da organizao, entre outros.
Pois ento no to simples quanto parece, no ?
Algumas tcnicas so frequentemente propostas na literatura para apoiar as
atividades de levantamento e anlise de requisitos. So exemplos dessas tcnicas:
(I) Entrevistas: questes so formuladas para diferentes stakeholders para que algumas caractersticas sejam identificadas seja em relao a um sistema que est
em produo, ou ento para um sistema que ser desenvolvido;
(II) Prototipagem: um prottipo pode ser caracterizado por uma sequncia de interfaces relacionadas, cujo objetivo ilustrar o funcionamento de algum requisito. Atravs
delas alternativas de interface podem ser avaliadas e, ao mesmo tempo, os usurios
passam a ter uma ideia do funcionamento do sistema. Como resultado, riscos de
projeto podem ser minimizados. Uma caracterstica de um prottipo que deve ser
levada em considerao ao adotarmos esta tcnica que ele no deve exigir um
tempo considervel do analista. A figura abaixo ilustra um prottipo de uma interface.
Figura 3.3: Exemplo de um prottipo de um frum de discusses associado a um quadro de avisos
-
EADDCC032 Fundamentos de Engenharia de Software
22
Como resultado, artefatos podem ser produzidos para serem utilizados nas
prximas etapas da Engenharia de Requisitos. So eles:
Declarao da(s) necessidade(s);
Escopo do problema;
Clientes, usurios e outros stakeholders;
Lista de requisitos;
Conjunto de cenrios de uso;
Prottipos
Dentre os artefatos produzidos nesta etapa, cabe citar tambm os diferentes
modelos capazes de representar diferentes aspectos obtidos durante o entendimento
das necessidades dos usurios e dos processos que se deseja automatizar. Mas, por
que modelos? Modelos esto relacionados a linguagens grficas que muitas vezes so
mais fceis de serem utilizadas e compreendidas do que a linguagem escrita. Mais
ainda, cada modelo pode documentar um diferente aspecto do sistema. Por exemplo,
os diagramas de sequncia podem enfatizar a sequncia dos eventos e os diagramas
de casos de uso podem retratar as interaes com o mundo exterior.
Nesta etapa, os requisitos devem ser priorizados, bem como ordenados conforme
as necessidades e urgncia do cliente. Por exemplo, em um sistema acadmico
possvel entregar, inicialmente, o mdulo de cadastro de disciplinas. Esta priorizao
tambm est relacionada ao modelo de processo de desenvolvimento adotado. No
RUP, por exemplo, entregas relacionadas aos mdulos iniciais so negociadas e
decises so tomadas. Como resultado, clientes tm suas necessidades prontamente
satisfeitas, e os desenvolvedores podem ter certeza dos prazos e oramentos a serem
cumpridos. Adicionalmente, estimativas so realizadas considerando-se o esforo e o
impacto do requisito que ser entregue.
(iii) Especificao de Requisitos
Identificadas as necessidades e gerados os artefatos das etapas anteriores, a
especificao de requisitos tem como objetivo produzir um documento contendo, dentre
outras informaes, as funes, as restries e os atributos de qualidade que sero
imprescindveis para o sistema. O documento resultante pode ser escrito contento
modelos gerados na etapa de anlise com o intuito de auxiliar na clareza e na preciso
das informaes ali contidas.
-
EADDCC032 Fundamentos de Engenharia de Software
23
Diferentes padres de documentos so propostos na literatura de Engenharia de
Software. O IEEE prope um formato que contm as informaes necessrias para as
etapas posteriores. J Sommerville (2011) sugere um formato diferente separando os
requisitos funcionais e no funcionais em duas categorias. So elas: de usurios e de
sistema. O que diferencia cada uma das categorias o nvel de abstrao em que cada
requisito descrito. Nos requisitos de usurios, encontramos uma declarao em alto
nvel, que interessa fundamentalmente aos stakeholders que no necessitam de um
detalhamento. J nos requisitos de sistema so fornecidos detalhes que interessam
basicamente aos projetistas, implementadores e testadores.
Figura 3.4: Diferentes tipos de requisitos
(iv) Validao de Requisitos
Considerando-se o modelo adotado para o desenvolvimento de software, quanto
mais cedo ambiguidades e forem identificados, custos podem ser reduzidos,
produtividade e qualidade dos artefatos podem ser melhoradas. Para tanto, so
necessrias validaes dos artefatos buscando-se identificar a consistncia dos
requisitos em relao aos objetivos inicialmente definidos. Mais ainda, so verificados
os aspectos relacionados clareza e a preciso das descries dos requisitos bem
como o nvel de detalhamento adotado e a ausncia de alguma funcionalidade.
Muitas vezes, requisitos difceis de serem testados podem ser especificados, ou
ento o custo de test-lo pode ser muito alto exigindo simulaes inviveis
considerando-se os recursos existentes. Por exemplo, para um sistema de automao
industrial a avaliao de valores associados temperatura e presso podem exigir
ambientes de simulaes que tornariam o custo de desenvolvimento alto.
-
EADDCC032 Fundamentos de Engenharia de Software
24
3.3 Gerenciamento de requisitos
Uma vez finalizados os artefatos relacionados ao levantamento e anlise de
requisitos, bem como realizadas as entregas e homologaes do documento de
requisitos, as prximas etapas do processo de desenvolvimento podem ser iniciadas.
Em cada etapa, posterior Engenharia de Requisitos, mudanas podem ser
necessrias e, portanto, devem ser analisadas em relao sua viabilidade. Requisitos
podem estar equivocados, erros podem ser identificados exigindo modificaes nos
artefatos produzidos. O gerenciamento de requisitos diz respeito identificao,
controle e rastreamento do impacto das mudanas em relao aos artefatos j
entregues. Para tanto se torna necessrio o rastreamento em relao, por exemplo, s
fontes dos requisitos, as suas dependncias e o impacto da mudana em relao aos
processos envolvidos e aos diferentes interessados naquele requisito que ser
impactado pela mudana.
Requisitos funcionais podem ser rastreados em relao a diferentes aspectos, tais
como: (i) solicitaes de stakeholders, (ii) regras de negcio associadas, e (iii) outros
requisitos funcionais que podem ser afetados. Por exemplo, considere um sistema de
matrculas de uma escola, ao modificar o requisito funcional RF1: cadastrar disciplinas
que so pr-requisitos da disciplina Engenharia de Software pode ser necessrio
consultar os coordenadores dos cursos que adotam esta disciplina na sua grade
curricular. Esses coordenadores foram identificados atravs de solicitaes registradas.
Para tanto, essas solicitaes devem estar registradas em um documento que fornea
esta informao. Um exemplo deste documento a matriz de rastreabilidade.
Matrizes de rastreabilidade so estruturas de dados que informam os
relacionamentos entre os Requisitos Funcionais (RFi, i=1,..n) e diferentes aspectos.
Figura 3.5: Exemplo de uma matriz de rastreabilidade
A1 A2 A3 ... An RF1 RF2 ...
RFn
Exemplos de aspectos: Fontes de requisitos Solicitaes de stakeholders Regras de negcio
-
EADDCC032 Fundamentos de Engenharia de Software
25
Exerccios Resolvidos:
(1) Pesquise outros motivos que podem dificultar o levantamento e a anlise dos requisitos do sistema que ser desenvolvido.
Resposta: Problemas de escopo (limite do sistema mal definido, detalhes tcnicos desnecessrios so especificados); Problemas de entendimento; Problemas de volatilidade.
(2) Por que em algumas situaes entrevistas no so to teis para apoiar o levantamento de requisitos?
Resposta: (i) Especialistas usam terminologias e jarges especficos. (ii) Alguns conhecimentos de domnio so to familiares que so difceis de explicar.
Exerccios
(1) Qual a diferena entre requisitos funcionais e no funcionais?
(2) Considere um sistema para gerenciar o atendimento de pacientes em uma clnica mdica e idealize algumas funes e restries existentes.
(3) Algumas tcnicas foram apresentadas no corpo do texto para apoiar o levantamento de requisitos. Pesquise na literatura outra tcnica que poderia ser utilizadas para esta finalidade.
(4) Alm dos requisitos no funcionais apresentados no corpo do texto, pesquise outros requisitos no funcionais que podem ser especificados para um sistema.
(5) Os requisitos funcionais so mais difceis de serem quantificados? Podemos ento afirmar que, em etapas posteriores, caso eles no sejam quantificados, podemos ter custos elevados para analis-los e verificar se eles esto de acordo com a especificao?
(6) Uma falha na especificao de um requisto funcional (RF) no tem o mesmo efeito em relao falha na especificao de um requisto no funcional (RNF). Ao cometermos um erro em um RF, podemos afirmar que apenas aquela funcionalidade no ter serventia, enquanto que uma falha em um RNF pode significar a inutilidade do sistema. Comente esta afirmao e apresente umexemplo para ilustrar a sua resposta.
(7) Pesquise outras tcnicas que poderiam ser utilizadas para apoiar as revises de requisitos.
-
EADDCC032 Fundamentos de Engenharia de Software
26
(8) Alguns formatos de documento de requisitos so propostos na literatura de Engenharia de Software. Pesquise sobre esses formatos e proponha um formato identificando o contedo de cada seo. Defina um sistema bem simples e gere um documento de requisitos para este sistema.
(9) O gerenciamento de requisitos necessrio por diversos motivos. Alm daqueles apresentados no corpo do texto pesquise outros motivos que justificam as atividades de gerenciamento de requisitos.
(10) Por que utilizamos matrizes de rastreabilidade?
(11) Alm dos relacionamentos ilustrados no corpo do texto, pesquise outros que podem ser documentados em uma matriz de rastreabilidade.
(12) Como justificar a importncia da engenharia de requisitos e dos produtos gerados ao longo de cada etapa deste processo?
-
EADDCC032 Fundamentos de Engenharia de Software
27
4. Projeto de Sistemas
Este captulo tem como objetivo apresentar a etapa de projeto (design) no contexto do processo de desenvolvimento de software. Adicionalmente, busca relacionar os artefatos produzidos nesta etapa com aqueles que foram descritos nos captulos anteriores. Ao trmino deste captulo, o leitor deve ser capaz de compreender a importncia desta etapa, e dos artefatos gerados, para o desenvolvimento de software.
4.1 Introduo
A etapa de projeto (design) de software est relacionada s atividades cujo
objetivo gerar artefatos que representam modelos do software. Tais modelos podem
ter como foco os seguintes aspectos: arquitetura, interface humano-computador, banco
de dados, ou classes que compem o sistema, entre outros. So construdos tendo
como objetivo atender aos requisitos funcionais, bem como aos requisitos no
funcionais. Ao utilizarmos representaes atravs de modelos atributos de qualidade
podem ser avaliados e melhorados tendo como foco os requisitos no funcionais
especificados previamente. Por exemplo, ao definirmos uma estrutura de dados no
momento de projeto estamos interessados no apenas nas funcionalidades que esta
estrutura poder fornecer, mas tambm em nos aspectos como desempenho, custo,
entre outros.
Modelos e representaes geradas na etapa de projeto tm como objetivo
detalhar e definir tecnologias a serem utilizadas na criao do software. Por exemplo: o
projeto de dados e classes gera, como artefatos, as classes de projeto (com um nvel
de detalhamento maior) e as estruturas de dados mais adequadas s necessidades do
sistema que est sendo desenvolvido. J o projeto arquitetural tem como foco os
estilos arquiteturais que sero utilizados e o projeto de interface humano-computador
busca definir as formas de interao com os usurios, bem como o desenho das telas
(interfaces) que sero utilizadas.
Mas, qual objetivo de gerar esses modelos e representaes? Alm de produzir
uma documentao do sistema, que servir de base para futuras modificaes e
evolues, esses artefatos permitem a realizao de revises com o foco na qualidade.
-
EADDCC032 Fundamentos de Engenharia de Software
28
Atravs desses artefatos possvel modificar e testar determinadas funcionalidades
antes de implement-las. Como resultado, podemos antecipar a identificao de
possveis defeitos no software e reduzir os custos de implementao e garantir que
determinados requisitos (funcionais e no funcionais) sejam atendidos.
De uma forma geral, o objetivo produzir modelos e descries que satisfaam
aos requisitos (funcionais e no funcionais) considerando a diversidade de situaes
que foram percebidas na Engenharia de Requisitos, bem como buscando uma
convergncia para os negcios e objetivos da organizao. Os artefatos gerados
devem servir no apenas como uma referncia para as etapas posteriores
(implementao teste e implantao), mas como recursos para comunicar as decises
tomadas com o foco nos requisitos. Mais ainda servem para apoiar as revises e, como
resultado, informar sobre a corretude dessas decises. atravs dessas atividades
que as ambiguidades, erros e omisses podem ser identificados.
Para exemplificar alguns tipos de projetos e os diagramas gerados, podemos
citar:
(i) o projeto de classes, apresenta cada classe, desenhada na etapa de anlise,
em elementos com um nvel de detalhamento maior. A figura abaixo ilustra um
diagrama de projeto a partir do diagrama de classes:
Figura 4.1: Exemplo de um modelo com classes de projeto
-
EADDCC032 Fundamentos de Engenharia de Software
29
(ii) o projeto arquitetural define o relacionamento entre os diferentes elementos
que compem o sistema. A figura abaixo ilustra a arquitetura de alto nvel
(viso geral) de um sistema de administrao escolar. As representaes dos
sistemas e relacionamentos no mostram propriedades entre eles.
Figura 4.2: Exemplo de um modelo abstrato de uma arquitetura para um sistema
(iii) o projeto de banco de dados apresenta as diferentes estruturas e seus
relacionamentos considerando-se os requisitos funcionais e no funcionais,
bem como as consultas frequentes que so realizadas. A figura abaixo ilustra
um projeto de banco de dados apresentado na disciplina de Banco de Dados.
Figura 4.3: Exemplo de um modelo de dados para o projeto de um BD
Autor
Livro
Editora
Autor
Livro
EditoraPublicadoPublicado
EscreveEscrevecod_autornomenascimento
cod_editorarazaoenderecocidade
titulocod_autorcod_editoravalorpublicacaovolume
cod_autornomenascimento
cod_editorarazaoenderecocidade
titulocod_autorcod_editoravalorpublicacaovolume
(1,1)
(0,1)
(1,N)
(0,N)
(1,1)
(0,1)
(1,N)
(0,N)
-
EADDCC032 Fundamentos de Engenharia de Software
30
Mas, existem algumas diretrizes para a construo dos diagramas de projeto?
Quais os princpios que norteiam as suas construes? Inicialmente, vamos partir do
princpio de que todo projeto de software deve ser modular. A modularidade permite
que a evoluo do projeto acontea de uma forma mais simples, sem que a alterao
de uma parte exija a modificao de outras partes. Alm disso, incrementos podem ser
liberados mais facilmente. Por exemplo, considere que um mdulo trate da matrcula
dos alunos em um sistema de administrao escolar, e outro mdulo considera a
matrcula das disciplinas, e as suas dependncias. A modularidade permite que apenas
a relao de dependncias entre as disciplinas seja modificada sem que o mdulo de
matrcula seja alterado. Adicionalmente, um mdulo de avaliao de disciplinas pode
ser liberado posteriormente.
Alm da modularidade, um projeto de tratar das representaes dos dados, da
arquitetura, das interfaces entre os mdulos e dos seus componentes. Mais ainda,
cada componente deve tratar das estruturas de dados adequadamente, considerando-
se as vantagens e desvantagens da utilizao de cada uma delas. Esses componentes
devem utilizar uma notao que comunique para os interessados os seus significados,
e tratar as funcionalidades de forma independente.
4.2 Alguns conceitos de projeto de software
Alm da modularizao, um conceito que deve ser considerado no projeto de
software a abstrao. Ele se refere simplificao das caractersticas que interessam
em um contexto especfico. Ao abstrair, apresentamos apenas as caractersticas que
interessam para uma determinada realidade. Por exemplo, no contexto de um sistema
de administrao escolar os diagramas apresentam apenas as caractersticas que
interessam em relao aos alunos. Ao tratarmos a matrcula de um determinado curso,
no cabe apresentarmos o endereo de cada aluno. Esta caracterstica pode ser
abstrada para este contexto. Entretanto, ao considerarmos o mdulo de cadastro de
cada aluno o endereo um atributo que deve ser considerado.
No basta criarmos mdulos sem nenhum critrio. Dois conceitos so
fundamentais quando consideramos a definio de um mdulo. So eles: a coeso e o
acoplamento. Ao falarmos da coeso de um mdulo estamos interessados na sua
robustez funcional. Ele est relacionado a uma nica atividade. J o acoplamento est
-
EADDCC032 Fundamentos de Engenharia de Software
31
relacionado dependncia do mdulo com outros para realizar uma determinada
atividade. Para realizar uma atividade ser necessria a execuo de um mdulo que
por sua vez chama outros mdulos. Desta forma, a modificao de um mdulo pode
acarretar na modificao dos mdulos a eles associados. Por exemplo, um mdulo de
cadastro de alunos deve realizar apenas o cadastro (alta coeso). Se ao realizar o
cadastro ele necessita executar funes de um mdulo financeiro (alto acoplamento),
as modificaes no mdulo de cadastro poderiam no ficar limitadas apenas a este
mdulo. Portanto, para um projeto satisfatrio devemos buscar sempre uma alta
coeso e um baixo acoplamento entre os mdulos.
Outro conceito diz respeito aos padres que podem ser utilizados no projeto. Mas,
muitas vezes os projetistas questionam a necessidade de utilizarmos padres. Por que
eles so importantes? Padres esto relacionados documentao das melhores
prticas, eles descrevem uma estrutura que foi anteriormente utilizada e que foi bem
sucedida. Normalmente eles esto relacionados s melhores prticas considerando-se
o contexto e as foras que atuam na utilizao do padro. Por exemplo, alguns padres
de projeto mencionam a estrutura de classes mais adequadas para serem utilizadas
em um contexto.
Muitas vezes os mdulos devem ser projetados de uma forma que o acesso s
informaes desnecessrias seja controlado. Nem todos os usurios necessitam
acessar e visualizar determinadas informaes. Por exemplo, um aluno no necessita
ter acesso s informaes financeiras da escola. Se ele necessita apenas acessar os
dados da disciplina, os custos associados mesma no necessita ser apresentado ao
aluno. Este conceito est relacionado ocultao de informao. Mas, apenas a
visualizao e o acesso so as vantagens da ocultao de informao? Quais as
consequncias da ocultao de informao? Ao abstrairmos uma informao e, ao
mesmo tempo, ocultarmos esta informao alguns erros no so propagados para
outros mdulos. Somente as informaes necessrias so enviadas para outros
mdulos associados. Portanto, a associao entre ocultao de informao e
abstrao sempre vantajosa para o projeto de sistemas.
A modularizao adequada, associada aos conceitos de abstrao e ocultao de
informao nos leva ao conceito de independncia funcional. Desta forma, no basta
considerarmos apenas uma alta coeso e um baixo acoplamento, se as caractersticas
desnecessrias no forem desconsideradas, bem como os aspectos de acesso
-
EADDCC032 Fundamentos de Engenharia de Software
32
informao tambm no forem tratados. A independncia funcional resulta em um
mdulo que possui poucas interaes com outros mdulos. Mais ainda, apresenta
interfaces desses mdulos simplificadas, pois mostram apenas os parmetros
necessrios para as interaes. Consequentemente, as manutenes sero mais
fceis, pois as alteraes no mdulo no acarretam alteraes nos mdulos a eles
associados. Mais ainda, este mdulo poder ser substitudo por outro que trar mais
funcionalidades, ou poder ser reutilizado em outro projeto.
O conceito de refinamento est relacionado ao conceito de abstrao. Ao
refinarmos um mdulo estamos tratando do detalhamento das funcionalidades ali
encontradas. Samos de um conceito mais abstrato, em alto nvel, e refinamos o
mdulo com o intuito de apresentar os detalhes, por exemplo, da sua implementao.
Sucessivos refinamentos podem ser aplicados ao mdulo at o momento em que os
detalhes necessrios so apresentados. Por exemplo: considere um mdulo para tratar
a matrcula de um aluno. Como submdulos podemos exemplificar: (i) o mdulo de
incluso; (ii) o mdulo de excluso de um aluno; e (iii) o mdulo de alterao de um
registro de aluno. Cada um desses submdulos possui um submdulo de busca pelo
nome do aluno ou pelo nmero de matrcula, alm dos algoritmos de busca utilizados.
Muitas vezes os mdulos so construdos de uma forma inadequada, ou ento ele
evolui para um projeto que no corresponde s melhores prticas da Engenharia de
Software. Consequentemente, ele pode ser refatorado no sentido de melhorar as suas
caractersticas, funes e comportamentos. Mas, o que pode ser refatorado para
melhorar as suas caractersticas. Por exemplo, um determinado trecho de cdigo foi
construdo utilizando-se uma estrutura em Java , entretanto, percebeu-
se que este trecho poderia ser tratado utilizando-se o conceito de polimorfismo
(Orientao a Objetos). Neste caso, uma refatorao poderia ser aplicada a este
cdigo no sentido de aproveitar as vantagens que o conceito de polimorfismo pode
trazer para o projeto. A refatorao pode retirar do cdigo elementos que so
desnecessrios, ou ento que podem facilitar as manutenes do mdulo. Neste
contexto, redundncias de cdigos podem ser eliminadas e algoritmos ineficientes
podem ser substitudos.
-
EADDCC032 Fundamentos de Engenharia de Software
33
Exerccio Resolvido:
(1) Um sistema com um nico mdulo (monoltico) apresenta uma srie de problemas principalmente no que diz respeito evoluo do sistema. Entretanto, se dividirmos em uma quantidade significativa de mdulos, o custo de integrao dos mdulos pode se tornar muito alto, enquanto o custo para manter cada mdulo pode ser reduzido. Por que no devemos projetar os sistemas como monolticos? Quais as desvantagens desta deciso de projeto?
Resposta: Ao tomar uma deciso de projeto de um sistema monoltico algumas dificuldades, principalmente no que diz respeito evoluo do sistema. Mdulos que esto relacionados a uma funcionalidade especfica e que so independentes funcionalmente permitem uma integrao mais fcil com um custo mais baixo. Entretanto, o custo para manter o mdulo pode aumentar. Encontrar o tamanho adequado de cada mdulo um desafio que dever ser resolvido pelo projetista.
(1) Alm dos exemplos apresentados no coropo do texto, pesquise, pelo menos, dois tipos de refatorao que poderiam ser aplicados a um cdigo para melhorar a sua qualidade.
(2) Pesquise o conceito de framework para apoiar o projeto de software e verifique a(s) forma(s) pela(s) qual (is) ele pode apoiar o projeto de software.
Exerccios
(1) Relacione os seguintes conceitos de projeto: (i) modularizao e reutilizao; e (ii) abstrao e modularizao.
(2) Por que a abstrao, a modularizao e a ocultao da informao so conceitos fundamentais para o projeto de software? Utilize um para ilustrar a sua resposta.
(3) Relacione os princpios de projeto com as diferentes etapas do modelo RUP.
(4) De que forma a modularizao pode facilitar o planejamento da construo de um sistema e o processo de teste de cada mdulo?
(5) Em algumas situaes devemos implementar sistemas monolticos pois, somente assim podemos conseguir o desempenho desejado. Comente esta afirmao apresentando exemplos para ilustrar a sua resposta.
-
EADDCC032 Fundamentos de Engenharia de Software
34
(6) Pesquise, pelo menos, dois padres que podem ser utilizados no projeto de um sistema de administrao escolar. Descreva as vantagens e as foras associadas aos padres especificados.
(7) A reutilizao de um mdulo est relacionada ao uso do mdulo em outros contextos. Portanto, basta tratarmos a independncia funcional que garantiremos a reutilizao do mdulo. Pesquise os elementos que afetam diretamente a reutilizao de um mdulo e relacione esses elemntos ao conceito de independncia funcional.
(8) Considere o conceito de refatorao e apresente as formas pelas quais ele interage com os conceitos previamente discutidos (modularizao, acoplamento, abstrao e ocultao de informao).
-
EADDCC032 Fundamentos de Engenharia de Software
35
5. Implementao
Este captulo tem como objetivo apresentar alguns aspectos da etapa de implementao de um sistema. Ao trmino deste captulo o leitor ser capaz de identificar duas abordagens para apoiar a implementao de software. So elas: reutilizao de componentes e gerncia de configurao. Associadas a essas abordagens algumas prticas de implementao duas discutidas.
5.1 Introduo
Segundo Sommerville (2011), esta etapa pode ser considerada como a mais
crtica do processo de desenvolvimento. Neste momento do processo, o cdigo
executvel ser gerado conforme as especificaes das etapas anteriores.
O desenvolvimento de um cdigo executvel frequentemente apoiado por uma
plataforma de desenvolvimento de software. Esta plataforma oferece um conjunto de
ferramentas para apoiar as diferentes atividades de desenvolvimento, tais como: (i) um
editor grfico de modelos, por exemplo, UML, que sero transformados em cdigo
executvel. Este cdigo necessita ser editado e, portanto necessita de um suporte de
um editor de cdigo para uma linguagem especfica, apoiado por um compilador
integrado; (ii) um sistema que permita realizar a depurao do cdigo que est em
desenvolvimento; e (iii) ferramentas integradas de testes de integrao dos mdulos.
Ferramentas de apoio ao desenvolvimento normalmente so integradas em um
ambiente, denominado IDE (Integrated Development Environment).
Figura 5.1: Elementos de uma IDE
IDE
Editor LP
Depurador Editores Modelos
Testes
-
EADDCC032 Fundamentos de Engenharia de Software
36
Alm dos aspectos envolvidos na programao, tais como as boas prticas de
programao, esta etapa trata da aderncia aos padres de processo e de produto
determinados pela equipe de qualidade. Mais ainda: importante considerar os
artefatos gerados nas etapas anteriores, bem como os processos definidos em cada
etapa.
Alguns exemplos de IDE: o NetBeans (www.netbeans.org); e o Eclipse (www.eclipse.org), baseado em plug-ins.
No contexto desta disciplina (Fundamentos da Engenharia de Software) cabe
ressaltar duas abordagens normalmente consideradas quando tratamos dos aspectos
de implementao de software. So elas: reutilizao de software e gerncia de
configurao.
5.2 Reutilizao de software
Reutilizao de artefatos no processo de implementao no recente.
Desenvolvedores frequentemente lanam mo desta tcnica ao utilizarem as
bibliotecas de linguagens de programao. Entretanto, com o surgimento de novas
demandas para o desenvolvimento de software, tais como qualidade dos artefatos, alta
produtividade e baixo custo, as abordagens para reutilizao tambm evoluram.
Desenvolvimento de software a partir da reutilizao est associado ao processo
de construo de sistemas a partir de um conjunto de artefatos, incluindo cdigos, j
existentes. Portanto, podemos pensar que se vamos unir trechos de cdigo
(bibliotecas) para construir um sistema, ento o processo de desenvolvimento ser
simplificado. Porm, isto nem sempre verdade. Em sistemas relativamente pequenos
que exigem um conhecimento limitado do domnio no qual ele ser aplicado,
provavelmente a implementao ser simplificada. Entretanto, os processos
frequentemente encontrados na prtica so aqueles que podemos denominar de ad-
hoc. No existe uma sistematizao do reuso.
Ao sistematizarmos a reutilizao atravs de padres de procedimentos podemos
obter uma srie de benefcios, tais como: os custos de implementao podem ser
-
EADDCC032 Fundamentos de Engenharia de Software
37
reduzidos, a produtividade e a qualidade podem ser aumentadas. Alm disso, aspectos
relacionados portabilidade de artefatos podem ser adequadamente tratados, bem
como a confiabilidade e a segurana desses artefatos (Sametinger, 1997).
A reutilizao pode apoiar no apenas a etapa de implementao, mas qualquer etapa do processo de desenvolvimento, pois esta abordagem no est restrita apenas ao cdigo produzido. Podemos afirmar que a reutilizao est associada a qualquer artefato que foi especificado, projetado, implementado e avaliado para reuso.
Podemos ento generalizar a utilizao desta abordagem para os processos de
implementao. Certamente, no podemos afirmar que a reutilizao sempre oferecer
benefcios. Se os artefatos foram desenvolvidos para reutilizao, a probabilidade de a
implementao ser bem sucedida maior.
Por outro lado, desenvolver software sem um suporte adequado da reutilizao
pode significar que muitas partes so redundantes. Uma modificao em uma
funcionalidade que se repete em uma quantidade significativa de artefatos pode
significar um aumento no custo de implementao e teste, e, ao mesmo tempo, uma
reduo na confiabilidade desses artefatos. Mais ainda, como resultado, o tempo para
a liberao de um mdulo pode ser maior.
Considere, por exemplo, um mdulo que verifica os pr-requisitos das disciplinas
de um determinado curso. Este mdulo reutilizado em dois mdulos diferentes. So
eles: o mdulo de matrcula e o de excluso de disciplina do curso. Uma alterao no
sistema de pr-requisitos requer apenas que o mdulo correspondente seja modificado.
Esta alterao ir refletir em ambos os mdulos que o reutilizam. Caso contrrio, a
mesma modificao deveria ser replicada para os dois mdulos.
Figura 5.2: Relao entre alguns mdulos de um sistema de administrao escolar
Mdulo de pr-requisitos
Mdulo de excluso de disciplinas
Mdulo de matrcula
-
EADDCC032 Fundamentos de Engenharia de Software
38
Em relao tecnologia utilizada para apoiar a reutilizao, podemos afirmar que
a programao orientada a objetos contribui significativamente para a adoo desta
abordagem na etapa de implementao. Entretanto, o reuso no depende desta
tecnologia. A adoo de reuso poder ser mais difcil, mas ela no est associada a
uma tecnologia especfica.
Se a modificao de um determinado artefato necessria para decidirmos pela
adoo de reuso para a implementao, cabe avaliarmos os efeitos que esta atividade
trar para o projeto como um todo. Nem sempre a adoo de reso pode ser vantajosa.
Necessitamos, portanto de formas para julgarmos se as funcionalidades disponveis em
um determinado mdulo so adequadas para a implementao de um novo artefato.
Reuso est associado s ideias e conceitos utilizados para a implementao de um
artefato e, portanto, necessitamos de mecanismos para documentar este artefato para
que ele possa, posteriormente, ser reutilizado.
5.3 Gerenciamento de Configurao
Finalizadas as atividades de implementao, mudanas podero ocorrer a
qualquer momento. Elas decorrem no apenas do surgimento de novos requisitos, mas
tambm de alteraes naqueles j existentes.
Pesquise: por que mudanas ocorrem nos sistemas que j esto em produo?
A partir do momento em que as alteraes foram aprovadas e o processo de
modificao inicia, problemas podem ocorrer. Por exemplo, um mdulo foi alterado,
testado e disponibilizado (Mdulo matrcula (1) Figura xx). Posteriormente, a
alterao pode ser desfeita por falta de informaes, tais como: por que foi feita?
(Mdulo matrcula (2) Figura xx). Mais ainda, ela no foi desfeita, porm a verso
incorreta foi utilizada para ser integrada ao sistema.
-
EADDCC032 Fundamentos de Engenharia de Software
39
Figura 5.3: Mdulo com alterao desfeita pelo Desenvolvedor 2
Gerenciamento de Configurao um processo cujo objetivo adotar medidas e
prticas para garantir que as mudanas durante o processo de desenvolvimento sero
bem sucedidas. Isto significa que as verses corretas sero utilizadas, bem como
informaes relacionadas ao processo de mudana estaro disponveis, tais como: (i)
quem alterou?; (ii) por que alterou?; (iii) quem solicitou? (iv) por que solicitou? , dentre
outras. Associadas a essas mudanas podemos mencionar as atividades que delas
decorrem, tais como: integrao dos componentes, e compilao dos mdulos de
acordo com a configurao desejada. Por exemplo: considere um sistema de
administrao escolar com os seguintes mdulos: matrcula, pagamento, e incluso de
disciplinas. Suponha que dois desenvolvedores estejam alterando dois mdulos
distintos: matrcula e pagamento (Figura xx (1)), mas no tm o suporte de um
sistema de gerncia de configurao. Ao trmino das modificaes, verses erradas
podem ser integradas (Figura xx (2) e (3)), alteraes realizadas no mdulo de
matrcula tambm podem deixar de funcionar.
Figura 5.4: Alteraes em mdulos distintos: problemas de integrao de
mdulos
Duas atividades so frequentemente mencionadas na literatura ao abordar o
gerenciamento de configurao: gerenciamento de verses e integrao de mdulos
-
EADDCC032 Fundamentos de Engenharia de Software
40
que compem o sistema. Sommerville (2011) acrescenta o rastreamento de problemas
como outra atividade bsica para o gerenciamento de configurao. Esta ltima trata
das sinalizaes de desenvolvedores que esto trabalhando em um determinado
mdulo para identificar um problema especfico. No exemplo anterior do sistema de
administrao escolar o desenvolvedor do mdulo de matrcula poderia ser informado
sobre a alterao que est em andamento tanto no mesmo mdulo, quanto em outro
mdulo que se relaciona a este. Como resultado, um sistema de gerenciamento de
configurao poderia adotar diferentes polticas para tratar esta situao. Por exemplo:
no permitir que dois desenvolvedores modifiquem o mesmo mdulo ao mesmo tempo,
permitir que eles alterem o mesmo mdulo ao mesmo tempo, porm ao gravar o
mdulo o desenvolvedor seria informao que o mdulo est sendo alterado por outro
e permitiria que eles interagissem para resolver um possvel impasse.
Pesquise outras polticas de gerncia de configurao diferentes daquelas que foram apresentadas no corpo do texto.
Portanto, podemos considerar que a gerncia de configurao est relacionada
ao controle de verses de mdulos que foram geradas em decorrncia de solicitaes
de mudanas, de correes identificadas posteriormente entrega do sistema, de
defeitos identificados a qualquer momento, ou ento de alteraes no hardware que
podem exigir tambm mudanas na implementao. Sem um sistema de gerncia de
configurao esforos podem sem desperdiados a partir do momento em que um
desenvolvedor altera uma verso equivocada. Mais ainda, podem gerar retrabalho e,
como consequncia, aumentar os custos, gerar atrasos e reduzir a qualidade do
sistema.
As atividades de gerncia de configurao (GC) no esto associadas apenas etapa de implementao e aos artefatos produzidos nesta etapa. GC deve ser utilizada em todas as etapas do processo de desenvolvimento de software. Desde a Engenharia de Requisitos at a Implantao do sistema, passando pela Gerncia de Qualidade.
-
EADDCC032 Fundamentos de Engenharia de Software
41
Alm de apoiar o processo de mudana oferecendo informaes relativas s
diferentes verses produzidas, podemos encontrar tambm dentre as atividades de GC
procedimentos para registrar e processar as mudanas. So esses procedimentos que
nos apoiaro, por exemplo, nas anlises das viabilidades de mudanas. Atravs
desses registros poderemos encontrar informaes tais como: por que a mudana foi
realizada, quais os requisitos que esto associados a ela, quantas vezes ela foi
solicitada, dentre outras informaes.
Se um mecanismo eficiente para gerenciar a configurao durante a
implementao de um mdulo, problemas relacionados qualidade podem surgir em
decorrncia, por exemplo, da no utilizao de um padro estabelecido, ou ento pela
liberao de um artefato equivocado para a equipe de qualidade. Podemos afirmar,
portanto, que as atividades de Gerncia de Configurao esto fortemente
relacionadas Gerncia de Qualidade.
A gerncia de configurao no est associada apenas ao controle de verses
resultantes de modificaes durante o processo de implementao. Ela est associada
tambm ao gerenciamento de diferentes verses em decorrncia da liberao do
produto para diferentes plataformas de hardware e software. Por exemplo, sistemas
operacionais diferentes que so utilizados por clientes distintos que necessitam adquirir
o produto, ou ento em funo de requisitos especficos de determinados clientes que
necessitam ser gerenciados.
Figura 5.5: Exemplo de gerncia de configurao entre plataformas distintas
Os gerentes de configurao necessitam manter o controle das diferenas entre
as verses produzidas e liber-las corretamente para clientes especficos. Esses
clientes podem utilizar sistemas operacionais diversificados e, portanto, necessitam de
-
EADDCC032 Fundamentos de Engenharia de Software
42
configuraes tambm especficas para as suas necessidades. Por exemplo, para as
verses que utilizam o sistema operacional Windows foi disponibilizado o mdulo que
permite realizar matrculas atravs de dispositivos mveis. Portanto, h necessidade de
liberar este mdulo apenas para os clientes que utilizam a plataforma Windows.
Exerccios Resolvidos:
(1) Considerando a produtividade e a confiabilidade, por que podemos afirmar que a abordagem de reutilizao oferece benefcios para as atividades de implementao?
Resposta: Em relao produtividade podemos afirmar que uma quantidade reduzida de cdigo ser construda, ao mesmo tempo em que podemos utilizar cdigos j amplamente avaliados (confiabilidade).
(2) Suponha que verses incorretas de mdulos foram utilizadas e, mesmo assim, o sistema continua executando sem indicar erros. Por que isso possvel? Quais as consequncias de se utilizar verses incorretas de um mdulo para compor um sistema?
Resposta: Mdulos com verses que no pertencem a uma mesma verso do sistema podem executar sem apresentar erro, entretanto, as funcionalidades no esto de acordo com os requisitos especificados. Frequentemente, no uma atividade fcil a identificao desse tipo de erro. Como resultado, inconsistncias podero ser geradas afetando o banco de dados do sistema.
Exerccios
(1) Por que vantajosa a utilizao de IDE para apoiar a implementao de um artefato?
(2) Quais os fatores no tcnicos que podem significar obstculaos para adoo de reso para as atividades de implementao?
(3) Alm das IDE exemplificadas no corpo do texto, pesquise outras que esto disponveis para utilizao.
(4) Compare as funcionalidades de duas IDE disponveis para utilizao.
-
EADDCC032 Fundamentos de Engenharia de Software
43
(5) Considerando a qualidade e o custo, por que podemos afirmar que a abordagem de reutilizao oferece benefcios para as atividades de implementao?
(6) Identifique, pelo menos, dois riscos para as atividades de implementao que podem surgir com a adoo de reso.
(7) Alm da possibilidade de controlar as verses que esto sendo geradas, por que gerenciar a configurao de um sistema durante a implementao?
(8) A rastreabilidade est associada associao de diferentes artefatos no processo de desenvolvimento de software. Por que um suporte rastreabilidade importante durante o processo de implementao? De que forma um sistema de gerncia de configurao pode apoiar a rastreabilidade?
(9) De que forma a gerncia de configurao dos artefatos produzidos nas etapas de Engenharia de Requisitos e Projeto podem afetar os mdulos produzidos na etapa de Implementao?
(10) Uma funo da gerncia de configurao controlar sistematicamente as mudanas do software. Para tal, torna-se necessrio uma ferramenta para apoiar o controle de verses. Cite pelo menos trs funcionalidades dessa ferramenta.
-
EADDCC032 Fundamentos de Engenharia de Software
44
6. Teste de Software
Este captulo tem como objetivo discutir sobre a importncia dos processos de teste de software, bem como sobre os artefatos produzidos nesta etapa. Adicionalmente, apresenta os conceitos relacionados a teste de software, de uma forma geral, evidenciando as atividades de verificao e validao.
6.1 Introduo
Muitas vezes nos depararmos com a seguinte pergunta: se o software
construdo considerando as metodologias, os processos e as ferramentas, por que
ainda encontramos tantos erros nos produtos? Erros e defeitos em software podem
acarretar falhas na execuo do cdigo, acarretar uma insatisfao do usurio e gerar
custos altssimos para a reparao. Nosso dia a dia est cada vez mais dependente
dos softwares. Eles podem ser encontrados em toda a parte. Portanto, a cada dia
percebemos que no mais espao para sistemas com baixa qualidade.
A qualidade est relacionada a diversos fatores, tais como: o produto
desenvolvido no realiza as funes de acordo com o que foi especificado, ou realiza
as funcionalidades que no foram especificadas. Mais ainda, muitas vezes no
encontramos uma funcionalidade na especificao do sistema, mas que deveria ser
definida. Outros problemas se relacionam indiretamente com os erros e defeitos. So
eles: no existe um cuidado na construo dos artefatos e eles acabam sendo de difcil
compreenso.
Mas, por que um erro ou defeito de software ocorre? Diferentes razes podem
acarretar em um erro ou defeito, mas frequentemente elas esto relacionadas a
especificaes erradas ou imprecisas. Portanto, podemos deduzir que um erro na
especificao pode se arrastar durante todo o processo de desenvolvimento, e, como
resultado, o custo para identificarmos e corrigir certamente ser maior. Por qu?
Quanto mais cedo identificarmos e corrigirmos um erro, maior ser a probabilidade de construirmos software com qualidade.
-
EADDCC032 Fundamentos de Engenharia de Software
45
Um erro ou defeito tambm pode estar relacionado ao processo de
desenvolvimento, ou at mesmo qualificao da mo de obra envolvida neste
processo que pode gerar artefatos equivocados. Por exemplo, um erro em um modelo
pode gerar srios problemas que so difceis de serem identificados.
Mesmo que todos os possveis caminhos em um programa sejam testados, no
podemos garantir que ele estar correto e que nenhuma falha ocorrer a partir deste
momento. Isto se relaciona ao fato de que no podemos garantir que todos os
possveis dados (entradas e sadas) foram avaliados. Mesmo que tivssemos todas as
entradas e sadas conhecidas elas podem ser inmeras tornando invivel o processo
de teste, por exemplo, como poderamos testar todas as entradas e sadas de uma
calculadora? Outro motivo est relacionado forma pela qual as especificaes so
construdas, gerando muita impreciso e ambiguidade. Portanto, no podemos garantir
que em um software nunca encontraremos uma falha ou defeito. Uma forma de reduzir
esta probabilidade utilizar diferentes formas de verificao e validao nas etapas do
processo de desenvolvimento.
6.2 Verificao e Validao
As formas de verificao buscam garantir que o programa atende a sua
especificao, se os diferentes artefatos esto de acordo com a sua especificao. J,
atravs das formas de validao buscamos ter a certeza de que todas as
funcionalidades esperadas foram implementadas. Se o produto corresponde s
expectativas do usurio, no apenas realizando todas as funcionalidades, mas
resolvendo o problema que foi definido no momento da especificao.
Frequentemente alguns autores relacionam as formas de verificao a uma busca
constante seguinte pergunta: estamos desenvolvendo o software corretamente? J
as formas de validao se associam s respostas seguinte pergunta: estamos
desenvolvendo o software correto? Os processos de verificao e validao (V&V)
ocorrem, portanto, nas diferentes etapas do desenvolvimento do software. Por
exemplo, podemos desenvolver um sistema de administrao escolar para o qual o
documento de requisitos foi desenvolvido, supostamente, de acordo com as
necessidades dos usurios. Desta forma, as outras etapas ocorreram conforme
previstas pelo modelo de processo adotado. So elas: projeto (design), implementao
-
EADDCC032 Fundamentos de Engenharia de Software
46
e testes. Alm disso, todas as revises foram feitas nos artefatos, conforme previsto.
Entretanto, o sistema no foi aprovado pelos usurios, ou seja, as funcionalidades
esperadas no foram adequadamente implementadas. O sistema, portanto, no foi
validado e necessita de correes.
Em relao ao processo de desenvolvimento, quanto mais cedo os erros e
defeitos forem identificados, menor o esforo para resolv-los. Requisitos devem ser
validados no sentido de identificar erros, omisses, ambiguidades e inconsistncias. No
momento da validao dos requisitos eles sero revistos e atravs dos casos de testes
verifica-se se eles so capazes de serem testveis.
Percebemos, ento que a Verificao e a Validao so abordagens que se
complementam. Ao utilizarmos as tcnicas de V&V estticas (inspees e revises)
defeitos podem ser identificados agilizando o processo de desenvolvimento e
aumentando a qualidade dos artefatos. Entretanto, as tcnicas estticas no so
capazes de avaliar se o software cumpre todas as necessidades do usurio em relao
aos processos operacionais. Ou seja, o software atende s especificaes, mas no
apoia os processos operacionais conforme as necessidades dea organizao. Mais
ainda, essas tcnicas no so capazes de avaliar aspectos como desempenho,
escalabilidade, portabilidade, entre outros requisitos no funcionais.
J os testes de software esto relacionados s tcnicas dinmicas, atravs das
quais as implementaes so avaliadas com a utilizao de dados de teste. Esto
relacionados execuo do programa, e seus diferentes caminhos, no sentido de
identificar os defeitos considerando-se os dados de entrada e sada. A partir dos
resultados, anomalias so identificadas e os cdigos dos diferentes caminhos so
corrigidos. So denominados na literatura de testes funcionais.
6.3 Testes Unitrios
Outro tipo de teste que devemos realizar em um sistema durante a etapa de
implementao diz respeito aos elementos utilizados. Por exemplo, mtodos ou
funes devem ser testados considerando-se as diferentes chamads realizadas e os
parmetros utilizados.
-
EADDCC032 Fundamentos de Engenharia de Software
47
Ao projetarmos os testes unitrios devemos ter certeza de que todos os possveis
caminhos foram exercitados e que no existem erros em relao entrada e sada dos
dados esperados. Portanto, todos os valores provveis dos atributos associados, por
exemplo, a um objeto especfico devem ser conhecidos. Adicionalmente, todos os
possveis estados do objeto tambm devem ser exercitados com os dados de entrada e
observando as sadas esperadas.
Mas, se considerarmos todos os estados, e as suas possveis combinaes, no
podemos elevar os custos de testes e, como resultado os custos de desenvolvimento?
Certamente, isso possvel. Portanto, devemos selecionar aqueles casos de teste que
nos fornecero resultados satisfatrios, tanto no que diz respeito s funcionalidades
bem sucedidas, como naquelas que possuem defeitos. Um caso de teste est
relacionado avaliao de uma funcionalidade especfica, por exemplo, uma tentativa
de matricular um aluno no cadastrado.
6.4 Testes de Sistema
Esses testes esto relacionados integrao dos componentes. Neste momento,
todos os componentes so avaliados considerando-as suas interfaces e o
comportamento esperados por eles a partir do momento em que so integrados. No
uma atividade trivial, e necessita de uma estratgia para que possam ser integrados.
Por exemplo, o acrscimo de um mdulo de cadastro de disciplinas, j devidamente
testado, pode levar identificao de defeitos em outros mdulos, tais como, os
mdulos de cadastro de alunos e/ou de matrcula.
Exerccios Resolvidos:
(1) Suponha que um determinado sistema seja desenvolvido de acordo com os conceitos do paradigma de orientao a objetos. Assim sendo, os testes funcionais, ou de caixa preta, parecem adequados. Comente esta afirmao.
Resposta: Os testes funcionais, ou de caixa preta, no so suficientes para que todos os caminhos sejam testados. Nos sistemas que implementam o paradigma de Orientao a Objetos difcil prever todas as combinaes de eventos, entradas e sadas, que permitem que os objetos se comuniquem.
-
EADDCC032 Fundamentos de Engenharia de Software
48
(2) Testes de software podem ser caros e demorados, tendo em vista a quantidade de testes a serem realizados. Alm disso, nem todos os defeitos podem ser detectados. De que forma as revises e inspees podem auxiliar no processo de teste de software?
Resposta: A afirmao est correta. Os testes podem ser caros e demorados principalmente quando tratamos de sistemas complexos. Mais ainda, no podemos garantir que todos os defeitos sejam detectados, considerando-se, sobretudo, todos os possveis conjuntos de dados, e as suas combinaes que deveriam ser testados. As inspees e revises poderiam reduzir as incertezas de forma que os erros poderiam ser identificados em etapas anteriores aos testes, como tambm no permitir que os erros sejam propagados para as etapas seguintes do processo de desenvolvimento de software.
Exerccios (1) De que forma a compreenso inadequada dos artefatos pode acarretar erros e
defeitos?
(2) Suponha que um defeito foi identificado e devidamente corrigido. Por que devemos repetir os testes associados ao elemento aps o reparo do defeito?
(3) Considere um sistema de administrao escolar e apresente, pelo menos, trs casos de testes hipotticos