Académique Documents
Professionnel Documents
Culture Documents
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.
Organizao
Jos Maria Nazar David
Comisso Editorial
Eduardo Barrre
Fernanda Claudia Alves Campos
Reviso Gramatical
Hortncia Cezar Pinto
Editorao Eletrnica
Eduardo Barrre
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 partese 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.
3.
4.
5.
6.
7.
2.1
Introduo ......................................................................................................................10
2.2
2.3
2.4
Introduo ......................................................................................................................17
3.2
3.3
Introduo ......................................................................................................................27
4.2
Implementao ......................................................................................................................35
5.1
Introduo ......................................................................................................................35
5.2
5.3
Gerenciamento de Configurao....................................................................................38
Introduo ......................................................................................................................44
6.2
Verificao e Validao...................................................................................................45
6.3
6.4
Introduo ......................................................................................................................49
7.2
7.3
Reengenharia..................................................................................................................51
8.
9.
Gerncia da Qualidade...........................................................................................................53
8.1
Introduo ......................................................................................................................53
8.2
8.3
8.4
Controle de Qualidade....................................................................................................58
8.5
Introduo ......................................................................................................................64
9.2
9.3
9.4
Programao de projeto.................................................................................................70
Referncias Bibliogrficas..........................................................................................................72
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.
7
de evoluo de um software.
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?
2. Processos de Software
2.1
Introduo
se uma previsibilidade dos eventos ocorridos, e uma melhoria contnua das atividades
ali desempenhadas.
2.2
Modelo em Cascata
2.3
(Fonte: http://www.wthreex.com/rup/process/ovu_proc.htm)
12
2.4
O Modelo Evolucionrio
14
Entretanto,
alguns
problemas
surgem
ao
utilizarmos
este
modelo
de
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,
15
16
3.1
Introduo
17
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.
Requisitos
Funcionais
Modifica
Requisitos no
Funcionais
18
3.2
Estudo de
viabilidade
Levantamento e
anlise de requisitos
Especificao
de requisitos
Validao de
requisitos
20
21
Como resultado, artefatos podem ser produzidos para serem utilizados nas
prximas etapas da Engenharia de Requisitos. So eles:
Escopo do problema;
Lista de requisitos;
Prottipos
Dentre os artefatos produzidos nesta etapa, cabe citar tambm os diferentes
Especificao de Requisitos
(iv)
Validao de Requisitos
23
3.3
Gerenciamento de requisitos
Uma vez finalizados os artefatos relacionados ao levantamento e anlise de
A1
RF1
RF2
...
RFn
A2
A3
...
An
Fontes de requisitos
Solicitaes de stakeholders
Regras de negcio
24
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.
25
26
4. Projeto de Sistemas
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.
27
28
Autor
(1,1)
cod_autor
nome
nascimento
Escreve
(1,N)
Livro
(0,N)
Publicado
titulo
cod_autor
cod_editora
valor
publicacao
volume
(0,1)
Editora
cod_editora
razao
endereco
cidade
29
4.2
32
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.
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.
33
(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
34
5. Implementao
5.1
Introduo
Segundo Sommerville (2011), esta etapa pode ser considerada como a mais
Editor LP
Testes
IDE
Depurador
Editores
Modelos
35
5.2
Reutilizao de software
Reutilizao de artefatos no processo de implementao no recente.
implementao
ser
simplificada.
Entretanto,
os
processos
frequentemente encontrados na prtica so aqueles que podemos denominar de adhoc. 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
36
Mdulo de pr-requisitos
Mdulo de excluso
de disciplinas
Mdulo de
matrcula
5.3
Gerenciamento de Configurao
Finalizadas as atividades de implementao, mudanas podero ocorrer a
38
40
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?
(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.
42
43
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
44
6.2
Verificao e Validao
As formas de verificao buscam garantir que o programa atende a sua
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
46
6.4
Testes de Sistema
Esses testes esto relacionados integrao dos componentes. Neste momento,
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.
47
(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 para os seguintes mdulos: (i) mdulo de matrcula,
(ii) mdulo de cadastro de aluno, e (iii) mdulo de cadastro de disciplina.
(4) Suponha que o sistema especificado em sala de aula ser desenvolvido de
acordo com os conceitos de orientao a objetos. Assim sendo, os testes de
caixa preta, ou funcionais, parecem ser adequados. Comente esta afirmao e
utilize exemplos para ilustrar a utilizao desta abordagem.
(5) Testes de software podem ser caros e demorados, tendo em vista a
quantidade de avaliaes a serem realizadas. Alm disso, nem todos os
defeitos podem ser detectados. Comente essa afirmao e apresente as
formas pelas quais as revises podem auxiliar no processo de teste de
software.
(6) Como podemos planejar um teste em um processo de desenvolvimento que
adota o RUP?
48
7.1
Introduo
At o momento vimos os aspectos relacionados ao desenvolvimento de software,
incluindo os diferentes processos e os contextos nos quais eles podero ser utilizados.
Posteriormente ao trmino do desenvolvimento, a entrega do produto ao cliente, e a
sua colocao em operao, parece que nenhuma atividade ser feita, no mesmo?
Pois no desta forma que sempre acontece em relao ao software. Comeam agora
as atividades de manuteno e evoluo do produto. Algumas modificaes ocorrem
para corrigir erros que no foram detectados no momento que deveriam, por exemplo,
nas atividades de verificao e validao. Outras modificaes acontecem para
otimizar alguns requisitos no funcionais, tais como desempenho, portabilidade,
escalabilidade, entre outros.
Ento, se nada disso acontecer parece que no precisamos modificar o produto.
Podemos considerar isso como verdadeiro?
Isso seria verdade se as condies que afetam os requisitos funcionais no
alterassem, ou seja, se o contexto no qual o produto executa no modificasse. Dentre
as condies que afetam o contexto podemos citar: as regras de negcio, o mercado,
as legislaes que apoiam o mercado, o surgimento de novos requisitos funcionais,
que por sua vez podem demandar alteraes nos requisitos no funcionais, as
imposies de modificaes no oramento que demandam alteraes no cronograma,
entre outras.
Mas, dependendo do tempo em que o produto foi desenvolvido, no poderia ser
melhor refazer todo o projeto? s vezes isto pode acontecer, mas uma deciso difcil
de ser tomada levando-se em considerao a importncia e o valor que o sistema
legado representa para a organizao. Os funcionrios j foram treinados, o
49
50
7.2
Transformao de Arquitetura
Muitas vezes a arquitetura do software necessita ser modificada, por exemplo, de
uma arquitetura centralizada para distribuda. Essa modificao pode ser decorrente de
alguns fatores, tais como (SOMMERVILLE, 2009): (i) sistemas distribudos oferecem
um custo menor para desenvolvimento; (ii) as interfaces grficas oferecidas podem
promover as interaes em diferentes locais; e (iii) o acesso distribudo pode viabilizar
os negcios das organizaes. Entretanto, migrar sistemas, que foram desenvolvidos
em uma ocasio em que as tecnologias eram bem diferenciadas podem oferecer
dificuldades para a transformao de arquitetura. Por exemplo, a estrutura em que eles
foram projetados, em termos de componentes, pode dificultar a reorganizao do
sistema.
7.3
Reengenharia
Sistemas legados necessitam ser modificados e, para tanto, fundamental que
eles possuam uma estrutura que facilite a sua compreenso e alterao, considerandose tempo e custo. Muitas vezes, eles no podem ser descontinuados e, portanto,
precisam passar por um processo de reengenharia. Neste processo, nenhuma
funcionalidade acrescentada ao sistema. Envolve alteraes na sua estrutura com o
objetivo de tornar a manuteno mais fcil.
sempre possvel fazermos reengenharia? Um dos objetivos da reengenharia
reduzir os riscos e os custos de manuteno. Entretanto, os custos dependem de uma
srie de fatores. Por exemplo, de pessoal qualificado para realizar as atividades de
reengenharia e, das tecnologias e recursos de hardware disponveis.
Em alguns tipos de sistema, em especial aqueles que foram desenvolvidos para
web necessitam de modificaes frequentes. Essas modificaes decorrem de
aspectos de usabilidade, de desempenho ou de algum ajuste em outros requisitos no
funcionais. Mais ainda, sistemas cujos requisitos tm uma probabilidade maior de
alterao e necessitam de um prazo de entrega mais rpido. Como resultado,
necessitam de mudanas para adequar a estrutura e arquitetura s necessidades.
51
Exerccios Resolvidos:
(1) Considere os conceitos envolvidos na manuteno de software e cite pelo
menos dois fatores, alm daqueles j mencionados no texto, e justifique a
adoo de cada um deles, que poderiam contribuir para a elevao dos custos
das atividades de manuteno.
Resposta: Outros fatores que elevam os custos de manuteno:
Instabilidade da equipe: frequentemente h necessidade de
contrataes para substituir um participante. Mesmo que a contratao
tenha um nvel de exigncia compatvel com o projeto, existem riscos
envolvidos em relao adaptao do participante ao projeto.
Habilidade da equipe para conduzir o processo de manuteno
considerando os padres de qualidade estabelecidos pela empresa.
Exerccios
(1) Cite os tipos de manuteno e apresente exemplos para ilustrar a sua
resposta.
(2) Qual a diferena entre transformao de arquitetura e reengenharia no
contexto de manuteno de software?
(3) sempre possvel realizarmos manutenes em software? Caso no seja
possvel, apresente situaes nas quais a manuteno no seria vivel.
(4) Considere um sistema web cujos requisitos sofrem modificaes
frequentes. Diante desta situao sugira um processo de
desenvolvimento e justifique a sua utilizao neste contexto.
(5) Considerando que um dos objetivos da reengenharia reduzir os riscos
de manuteno, apresente as formas pelas quais esses riscos podem ser
reduzidos e cite exemplos para ilustrar a sua resposta.
(6) Alm da habilidade e estabilidade da equipe, existem outros fatores que
poderiam contribuir para a reduo dos custos de manuteno?
52
8. Gerncia da Qualidade
8.1
Introduo
Ao falarmos de qualidade de software normalmente estamos preocupados em
os processos de
desenvolvimento
de
software
de
53
Padres de
processo
Padres de
produto
Processo
Produto
Melhorias
Medies
um
aperfeioamento.
Muitas
vezes
os
prprios
analistas
8.2
8.3
Planejamento de Qualidade
O planejamento da qualidade envolve as atividades que tm por objetivo definir
Controle de
Qualidade
Planejamento da
Qualidade
Definio de padres
de processo e de
produto
Definio de padres
de processo e de
produto
Verificao da
aderncia aos
padres
57
8.4
Controle de Qualidade
Envolve os processos de verificao de que os padres esto sendo utilizados.
8.5
Melhoria de Processos
61
Outras reas de processo, bem como uma descrio mais detalhada sobre
cada uma delas pode ser encontrada em http://www.sei.cmu.edu/
Exerccios Resolvidos:
(1) Considerando o conceito de padres de produto e a importncia para a
determinao de padres de processo, exemplifique um padro de um produto e
relacione com um processo ressaltando a importncia neste contexto.
Resposta: Nem todo processo pode ter um impacto positivo nos resultados. Por
exemplo: um processo de inspeo pode reduzir o esforo e custo de teste, mas,
por outro lado, pode aumentar o tempo de desenvolvimento devido s reunies.
62
Exerccios
(1) Pesquise outros padres que podem auxiliar no gerenciamento da
qualidade de software.
(2) Cite pelo menos trs tipos de inspees e justifique a sua adoo em um
processo de verificao de inspeo.
(3) Considerando os stakeholders e a caracterstica intangvel do software,
por que no podemos afirmar que a qualidade est associada
verificao dos requisitos previamente especificados.
(4) Defina dois atributos de qualidade, pesquise o seu significado, e
determine a forma pela qual eles sero avaliados em um plano de
qualidade de software.
(5) Alm dos atributos apresentados no corpo do texto, pesquise um
atributo de processo e apresente a forma pela qual ele pode se
relacionar com a melhoria do processo.
(6) Escolha uma etapa do processo de desenvolvimento, e um processo
63
Este captulo tem como objetivo apresentar uma viso geral do planejamento e
programao de projetos, bem como discutir alguns apectos sobre estimativa de
preo de um software no contexto de gerenciamento de projetos. Ao trmino
deste captulo, o leitor deve ser capaz de compreender a importncia desses
conceitos para a construo de software.
9.1
Introduo
Um projeto de desenvolvimento de software pode iniciar de diferentes maneiras.
9.2
perguntas que fazemos qual o preo que devemos atribuir para este produto?.
Muitas vezes os desenvolvedores se enganam ao associar o preo apenas aos custos
de desenvolvimento, por exemplo, tempo estimado para o desenvolvimento vezes o
valor da hora de trabalho de um analista, mais o lucro desejado. Entretanto, no a
forma adequada para o clculo do preo do produto, principalmente quando estamos
tratando de um sistema complexo, que utiliza uma quantidade significativa de
ferramentas e abordagens para a melhoria da qualidade do sistema. Podemos afirmar
ento que um dos fatores que influenciam diretamente na composio do preo do
produto est relacionado aos requisitos (funcionais e no funcionais), e forma pela
qual eles so apresentados ao desenvolvedor.
Mas, cabe aqui uma pergunta: dependendo do modelo de processo utilizado, no
temos uma viso geral, completa, dos requisitos. No modelo incremental, por exemplo,
o produto ir evoluir conforme o conhecimento dos requisitos, do processo de negcios
e do domnio. Neste caso, como podemos realizar uma estimativa do produto? Muitas
vezes a estimativa deve ser baseada no conhecimento prvio do domnio da aplicao,
ou ento nas informaes obtidas em um nvel de detalhamento nem sempre
suficiente. Com o andamento do projeto, novas estimativas devem ser feitas e um
replanejamento se faz necessrio. Existe, portanto, uma probabilidade de apresentar
um custo irreal, mas devemos buscar a utilizao de tcnicas que nos levem a uma
estimativa razovel para compor o custo do software.
Suponhamos que uma empresa deseja desenvolver um sistema de administrao
escolar e que ela ainda no tem exatamente os requisitos necessrios para este
sistema. O desenvolvedor estima um valor com base no seu conhecimento e na sua
experincia, bem como no oramento que a escola possui. Posteriormente,
negociaes sero necessrias para que, de posse dos requisitos, as funcionalidades
65
66
9.3
Plano de projeto
Planos de projeto so documentos que contm os registros das atividades que
Durante o tempo do projeto eventos negativos para que as atividades sejam bem
sucedidas podem ocorrer, tais como: um equipamento no foi entregue no momento
previsto, oramento do projeto foi reduzido, demisses ocorreram, entre outros. Tais
eventos podem significar um risco para o projeto e, portanto necessitam ser
devidamente monitorados e mitigados. Eles podem afetar tanto a programao prevista
quanto a qualidade dos artefatos gerados. Portanto, medidas so necessrias para
evit-los.
Por que o gerenciamento de riscos importante para o projeto? Eles devem
receber toda a ateno necessria para que as entregas sejam realizadas conforme
planejadas, bem como para que os produtos sejam desenvolvidos a acordo com os
padres e procedimentos de qualidade adotados.
Diversos fatores podem gerar riscos para um projeto, tais como: (i) mudana de
tecnologia; (ii) descontinuidade de um processo organizacional; (iii) descontinuidade do
suporte de um fornecedor de uma ferramenta de apoio ao desenvolvimento de
software; (iv) requisitos que modificaram; e (v) estimativas incorretas.
Identificao
Anlise
Planejamento
Monitoramento
69
9.4
Programao de projeto
70
Exerccios
(1) Ao se planejar um projeto de software marcos devem ser estabelecidos,
bem como os produtos a serem entregues devem ser definidos. Com
base nesta afirmao, discuta a importncia da definio de marcos e de
produtos no planejamento e no gerenciamento de projetos de software.
Utilize um exemplo para ilustrar a sua resposta.
(2) Considerando os fatores que podem compor os custos de um projeto de
software, descreva outros fatores, alm daqueles que foram
mencionados no corpo do texto, que podem influenciar o preo do
produto.
(3) Para cada fator identificado no corpo do texto, que pode gerar um risco
para o projeto, exemplifique uma situao associada a um projeto de
desenvolvimento de um sistema de administrao escolar.
(4) Alm dos fatores apresentados no texto, identifique outros fatores de
risco e exemplifique com uma situao para ilustr-lo.
(5) Identifique dois riscos para um projeto de desenvolvimento de software,
analise a sua probabilidade de ocorrncia e estabelea uma estratgia
para mitig-los.
71
Referncias Bibliogrficas
PRESSMAN, R., 2011, Engenharia de Software: Uma Abordagem Profissional,
7. ed. , McGraw-Hill.
SOMMERVILLE, I., 2011, Engenharia de Software, 9.ed., So Paulo: Pearson
Prentice Hall.
SAMETINGER, J., 1997, Software Engineering with Reusable Components,
Springer-Verlag.
Eclipse.org. Site oficial do ide eclipse. Disponvel em: http://www.eclipse.org/.
Acesso em: maro de 2013.
NetBeans.org. Site oficial do ide netbeans. Disponvel em:
http://www.netbeans.org/. Acesso em: maro de 2013.
Software Engineering Institute Disponvel em: http://www.sei.cmu.edu/. Acesso
em: abril de 2013.
MPS.BR - Melhoria de Processos do Software Brasileiro Disponvel em:
www.softex.br/mpsbr/. Acesso em abril de 2013.
72