Escolar Documentos
Profissional Documentos
Cultura Documentos
Livro-Texto - Unidade II
Livro-Texto - Unidade II
Unidade II
3 PROCESSO DE SOFTWARE
Weber et al. ([s.d.]), no artigo escrito para apresentar os resultados alcançados e as lições aprendidas
com a implantação do modelo MPS.BR de melhoria do processo de software brasileiro, afirmam:
Para tratar especificamente dos processos de software, é muito importante localizá-los no contexto
da engenharia de software.
Como já foi visto, a engenharia de software estuda e propõe soluções que abrangem todo o ciclo
de vida de um produto de software. Para isso, deve incluir diversas facetas que se apresentam nesse
contexto.
A figura a seguir apresenta uma visão holística, em forma de pilares, do desenvolvimento de software,
que abrange todos os aspectos envolvidos nos modelos de engenharia de software.
Gerenciamento
Ferramentas
Qualidade
Processos
45
Unidade II
• Processos de software:
• Métodos e técnicas:
— para isso, a engenharia de software propõe um conjunto de técnicas e métodos para que os
desenvolvedores consigam executar suas tarefas com o máximo de produtividade e qualidade.
• Ferramentas:
— ao longo de quarenta anos, e ainda em evolução, têm surgido ferramentas de automação que
dão suporte às atividades do processo de software;
• Qualidade:
— com a pressão cada vez maior pela qualidade nos produtos de software, a engenharia de
software vem propondo e desenvolvendo diversos modelos para a garantia da qualidade, tanto
no nível dos processos quanto no dos produtos desenvolvidos e mantidos dentro das áreas de
software das organizações.
• Gerenciamento:
— são todas as propostas para a gestão da área de software e para os projetos de software. A
grande procura é pelo aumento da eficiência no uso dos recursos e na eficácia na produção de
sistemas de informação;
46
ENGENHARIA DE SOFTWARE I
— diversos aspectos do gerenciamento são abrangidos por esse pilar: gerência de equipe, gerência
de projetos, gerência da qualidade, governança de TI etc.
Esses pilares se inter-relacionam e trabalham juntos (ou de forma paralela) na busca das melhores
práticas nos processos de software, como mostra a figura 5.
Métodos e técnicas
Processo de
desenvolvimento
Gerenciamento Ferramentas
Qualidade de
software
Lembrete
Os modelos brasileiros têm, ao longo do tempo, dado especial atenção às pequenas empresas de
software, em virtude da seguinte constatação: as pequenas empresas de desenvolvimento de software
possuem poucos recursos financeiros para investir na utilização das melhores práticas do mercado;
diante disso, perdem competitividade no mercado nacional e no internacional, e deixam de atender a
padrões de qualidade.
Uma das alternativas que o mercado vem implementando é o uso de métodos ágeis que foram
desenvolvidos exatamente para atender aos pequenos projetos e para pequenas equipes de
desenvolvimento. Esses métodos procuram deixar os processos de software mais simples, menos
burocráticos, porém não menos organizados, com o intuito de se construir softwares de forma mais
47
Unidade II
rápida e com grande qualidade. A garantia de que as empresas praticam processos com qualidade tem
advindo dos processos de certificação, tanto nacionais como internacionais.
Saiba mais
<http://www.abnt.org.br>.
<http: www.ibqts.com.br>.
<http://www.sei.cmu.edu/>.
<http://www.softex.br/mpsbr/>.
Como acontece com todo produto industrial, o software tem um ciclo de vida que possui os seguintes
elementos ou fases:
• entra em operação, sendo utilizado dentro de algum processo de negócio, por um tempo
indeterminado, e podendo sofrer evoluções ao longo do tempo;
O esquema a seguir mostra uma visão do ciclo de vida de um produto de software que segue os
mesmos princípios do ciclo de vida de qualquer produto da manufatura ou industrial.
48
ENGENHARIA DE SOFTWARE I
Decadência
Evolução
Criação
O ciclo decadência ocorre quando o produto de software atingiu um ponto em que não existem mais
possibilidades para sua evolução. Ele entra em decadência por diversos motivos, tais como: obsolescência
da tecnologia, mudanças de regras de negócio, mudanças radicais nas regras dos órgão públicos etc.
O ciclo de vida do software apresentado na figura pode, ainda, ser dividido em diversas etapas
detalhadas, e cada modelo existente, norma certificadora e/ou autor do mercado apresenta uma visão
diferenciada dessas divisões.
O quadro 3 apresenta visão típica da estrutura do ciclo de vida de um processo de software, mas que
não necessariamente seria apresentada por outros autores ou modelos existentes.
49
Unidade II
Saiba mais
Não deixe de ler:
PEZZÉ, M.; YOUNG, M. Teste e análise de software: processos, princípios
e técnicas. Porto Alegre: Bookman, 2008.
Nesse livro, os autores fazem um estudo profundo com relação ao
processo de teste de software e às diversas técnicas que permitem a
melhoria de sua qualidade.
PRADO, J. C. S. Gerenciando a qualidade de software com base em
requisitos. Rio de Janeiro, [s.d.]. Disponível em: <http://www-di.inf.puc-rio.
br/~julio/Slct-pub/Livro-qualidade.pdf>. Acesso em: 31 mar. 2014.
Nesse ensaio, o autor discute a obtenção da qualidade no
desenvolvimento de software. O autor faz uma análise do capítulo 17 do
livro Qualidade de Software, de Rocha, Maldonado e Weber (2001), que dá
uma visão simples e clara sobre os problemas e as alternativas na busca da
qualidade em software.
50
ENGENHARIA DE SOFTWARE I
Processo de
gestão de
software Médio
Baixo
Pessoas, Notação/linguagens
organização, Ferramentas (automação)
cultura
Processo de qualidade
51
Unidade II
O modelo PSP (2009) sugere práticas e métodos para que o próprio indivíduo consiga identificar e
corrigir seus pontos fracos. É uma sugestão para organizar e disciplinar os processos individuais e não
diminui nem restringe a capacidade criativa dos indivíduos.
O modelo foi originalmente derivado do modelo de qualidade Capability Maturity Model (CMM), e
o autor desse processo é o mesmo, Whatts Humphrey, que adaptou 12 das 18 áreas-chave de processo
CMM (Key Process Area – KPA) da época ao trabalho individual de profissionais de software. Aplica
conceitos importantes de engenharia de software em nível individual para desenvolver softwares, e não
apenas para codificar programas.
O modelo PSP (2014) faz uso de um conjunto de sete etapas sequenciais e progressivas, cada uma
com um conjunto de roteiros, formulários e gabaritos associados. É apoiado por um livro-texto e um
curso introdutório oferecido por esse mesmo livro (exercícios de programação e relatórios), principal
veículo de aprendizado.
De acordo com Humphrey, autor do PSP, à medida que os profissionais de desenvolvimento de software
aprendem a avaliar seus trabalhos, a analisar essas medidas e a definir e atingir metas de melhoria, passam a
enxergar os benefícios de usar o processo definido e são motivados constantemente a isso.
Observação
De acordo com o SEI (2014), a qualidade de um software é governada
pelo indivíduo que o desenvolve (rotinas ou componentes) e exige
conhecimento, disciplina e comprometimento.
Processo cíclico
PSP3
Desenvolvimento cíclico
Qualidade pessoal
PSP 2.1
PSP 2 Gabaritos de projeto
Revisões de código
Revisões de projeto
Planejamento pessoal
PSP 1.1
PSP1 Planejamento de tarefa
Estimativa de tamanho Planejamento deescalonamento
Relatório de teste
Medição pessoal
PSP 0.1
Padrão de codificação
PSP 0 Medição de tamanho
Processo atual Proposta de melhoramento do processo
Registro de tempos e defeitos
53
Unidade II
O PSP 1 introduz o Proxy-Based Estimating Method (Método PROBE) para estimar tamanhos e
tempos de desenvolvimento para novos programas, com base nos próprios dados individuais, utilizando
regressão linear para calcular parâmetros de estimativa e gerar intervalos de confiança para indicar a
qualidade dessa estimativa de tamanhos e tempos.
O PSP 2 introduz o gerenciamento de defeitos. Com esses dados reunidos previamente, os profissionais
de software constroem e usam listas de verificação para revisão de projeto e código (checklists).
No PSP 3, os profissionais de software combinam múltiplos PSP 2.1, de uma forma cíclica, para
construir módulos com milhares de linhas de código (Kilo Lines of Code – KLOC). Exploram os métodos
de verificação de projeto, assim como os princípios e métodos de definição de processo.
Lembrete
No paradigma do PSP, cada desenvolvedor estabelece metas pessoais, define os métodos que usará,
mede seu trabalho, analisa seus resultados e os ajusta para se aproximar das metas. O PSP tem sido
usado com sucesso em atividades pessoais estruturadas, tais como escrever um livro e desenvolver um
autotreinamento.
De acordo com o PSP (2009) é muito útil, caso seja empregado em conjunto com o modelo de
qualidade CMMI. Tem mostrado resultados significativos:
Observação
Saiba mais
O Team Software Process (TSP) (2010), de acordo com o SEI, significa um guia ou framework para:
• processos definidos;
• papéis distribuídos;
• baseado no PSP;
Uma equipe é um grupo de pessoas que deve estar comprometido com um objetivo comum e dispor
de um quadro de trabalho comum; é composta de, no mínimo, duas pessoas, e cada uma tem um papel
específico atribuído. A conclusão da missão requer alguma forma de dependência entre os membros do
grupo.
55
Unidade II
Para serem eficazes, as equipes devem estar devidamente qualificadas e ser capazes de funcionar
como unidades coesas. Equipes eficazes têm certas características comuns:
Outra característica das equipes eficazes é sua capacidade de inovar. A inovação é mais do
que pensar somente em ideias brilhantes, já que exige criatividade e muito trabalho. Praticamente
todas as tarefas de engenharia são parte de um esforço inovador, e equipes inovadoras devem
ter pessoas qualificadas e capazes, além de muito motivadas. Elas devem ser criativas, flexíveis e
disciplinadas.
Equipes ou times devem se esforçar para cumprir prazos apertados, enquanto se ajustam às novas
necessidades. Devem também manter os custos e os horários sob controle, mantendo a gerência
informada de seu progresso; são compostas por pessoas que podem sentir falta de confiança no projeto.
Quando os engenheiros não se sentem seguros e respeitados, muitas vezes, sentem-se hostilizados e
manipulados.
Para estabelecer essas condições, são dez as orientações do TSP (2010), no modelo do SEI:
• forma um grupo coeso: os participantes cooperam, e todos estão empenhados em atingir a meta;
56
ENGENHARIA DE SOFTWARE I
• os engenheiros conhecem sua situação, buscam o feedback sobre seu trabalho e têm uma liderança
que sustenta a sua motivação;
• essas condições não são óbvias: o TSP fornece orientação explícita do que as organizações
necessitam para construir equipes de engenharia eficazes.
De acordo com o modelo TSP, cada papel nesse processo é considerado como uma espécie de gerente
e será responsável por uma lista de tarefas. O gerente de desenvolvimento decide o número de iterações
que a equipe precisa executar na construção do software e desenvolve uma estratégia para fabricar
o produto; o gerente de planejamento acompanha as iterações planejadas, para auxiliar a equipe na
estimativa e no balanceamento de carga; o gerente de qualidade produz artefatos como o plano de
gerência de configuração e os testes de aceitação.
O gerente de processo deve ter respostas para a maioria das questões sobre o processo. É responsável
pela alocação de recursos, pela execução de reuniões e pela gerência de riscos, tendo, no entanto,
responsabilidade menor nos demais processos. Ele precisa da participação de diversos atores na
organização: os gerentes, os desenvolvedores, os usuários e os clientes.
A missão do framework TSP é ser simples e baseado nos fundamentos do PSP, para:
57
Unidade II
A figura a seguir apresenta uma visão holística dos princípios do modelo TSP.
Equipes
autogerenciáveis
Gerência da Coaching
qualidade (tutorial)
Fatores -
princípios
do TSP
Arcabouço Personal
(framework) Software
de medição Process
integrada (PSP)
Com relação aos indicadores, o TSP apresenta um conjunto necessário para a avaliação dos produtos
desenvolvidos pelas equipes de projeto. Os indicadores apresentados pelo modelo são:
• precisão de estimativas;
• produtividade;
58
ENGENHARIA DE SOFTWARE I
• porcentagem de reúso;
• índice de desempenho;
• custo da qualidade;
• perfis de qualidade;
• taxas de revisão;
• rendimento do processo;
Para o TSP, o desenvolvimento de software está dividido em oito fases, que estão definidas como:
• desenvolvimento da estratégia;
• desenvolvimento do plano;
• implementação;
• post mortem.
59
Unidade II
Oferece, ainda, métodos prontos para serem utilizados de forma que não precisem ser reinventados
ou descobertos e possam, portanto, ser reutilizados, diminuindo, assim, o tempo do projeto.
O TSP baseia-se no PSP, utilizando as medidas de tamanho, tempo e defeito, e, ainda, adiciona a data
de término das tarefas.
Para todas as medidas e projeções, os dados são coletados individualmente e, ainda, são analisados
semanalmente pela equipe, para que esta possa ter ideia do andamento do projeto em relação ao seu
plano.
• que o primeiro requisito para aplicações do TSP é que cada membro da equipe tenha sido treinado
no PSP;
• que este é o primeiro passo para montar uma equipe de trabalho no TSP;
• o TSP adiciona elementos necessários para que se possa realizar o trabalho em equipe, como
mostrará a próxima figura;
• todos os membros da equipe devem trabalhar para executar uma determinada tarefa, que, no TSP,
são denominadas de lançamentos do time.
A figura que segue apresenta a estrutura do TSP, a partir da proposta do autor Koscianski e Soares
(2007).
Times integrados
60
ENGENHARIA DE SOFTWARE I
Como mostra a figura, é necessário que o pessoal tenha formação no PSP antes de dar início à
implantação do modelo TSP. Os engenheiros de software devem ser treinados nas habilidades do PSP
antes que possam participar das equipes ou times do TSP.
Equipes TSP são relançadas periodicamente, pois o processo segue uma estratégia de desenvolvimento
iterativo e evolutivo. Os relançamentos periódicos são necessários para que cada fase ou ciclo possam
ser planejados com base nos conhecimentos adquiridos no ciclo anterior. O relançamento também é
necessário para atualizar os planos dos engenheiros em detalhes, os quais, normalmente, são necessários
apenas por alguns meses.
No lançamento TSP, as equipes fazem um plano global e outro detalhado, por cerca de três a quatro
meses. Após os membros (todos ou a maioria) da equipe terem completado a fase do projeto ou ciclo,
é feita uma revisão do plano global e, se necessário, um novo plano detalhado para cobrir os próximos
três ou quatro meses. Eles são guiados a fazer isso pelo processo de relançamento do TSP.
O lançamento da equipe compreende a fase inicial do processo TSP, na qual são discutidos
vários temas, durante os quatro dias de duração dessa fase. Segundo Koscianski e Soares (2007),
o processo de lançamento é composto por uma série de atividades de planejamento do trabalho
a ser realizado.
Após o lançamento da equipe, é preciso que esta desenvolva uma estratégia de trabalho. Essa etapa
tem como principal objetivo minimizar o risco de o desenvolvimento exceder o tempo programado para
a conclusão do projeto. Para o modelo, definiram-se os seguintes passos:
• esse produto, resultante do primeiro ciclo, deve ser uma base para o restante do produto, para que
possa facilmente ser estendida;
• em todos os ciclos, gerar um produto com alta qualidade, permitindo que este possa ser facilmente
testado;
• ter uma arquitetura modular, para que membros da equipe possam trabalhar independentemente.
Com relação ao desenvolvimento do plano, o modelo indica que o planejamento ajuda os engenheiros
da equipe a trabalharem de maneira mais eficiente, com mais produtividade e sem desperdício de tempo.
Além disso, algumas atividades poderão ser esquecidas, se não forem planejadas. Portanto, planejar um
projeto não é uma tarefa muito fácil, pois projetos grandes e complexos consomem muitas horas de
planejamento.
Com a utilização do TSP, é possível analisar a sobrecarga de tarefas de alguns membros da equipe,
enquanto outros estão mais “folgados”. Isso faz aqueles que não estão sobrecarregados terem, em alguns
casos, de esperar pela conclusão do trabalho daqueles sobrecarregados, atrasando, assim, o grupo. Para
61
Unidade II
resolver esse problema, o TSP propõe que, nessa fase de planejamento, seja feito um balanceamento de
trabalho entre os membros da equipe.
Observação
De acordo com Gordon e Gordon (2006), o ciclo de vida do desenvolvimento de sistemas (Systems
Development Life Cycle – SDLC), conhecido também como ciclo de vida do software, refere-se aos
estágios de concepção, projeto, criação e implementação de um Sistema de Informação (SI). Um
desdobramento possível para SDLC é mostrado na figura a seguir.
Levantamento das
necessidades
Implementação Projeto
Desenvolvimento
Analisando-se as atividades propostas para o ciclo SDLC, com base em Gordon e Gordon (2006),
tem-se o exposto a seguir.
62
ENGENHARIA DE SOFTWARE I
• Levantamento de necessidades:
— tem como resultados mais importantes a lista de requisitos do sistema a ser construído, as
informações que serão tratadas e armazenadas e, se necessário, um protótipo das interfaces
entre os usuários e o sistema de software.
• Análise de alternativas:
— seria interessante, para que essa atividade fosse padronizada e a organização possuísse uma
arquitetura de referência, que a base fosse para todas as soluções de tecnologia de todos os
sistemas da empresa.
• Projeto:
— essas especificações incluem projeto das interfaces, banco de dados, características físicas
do sistema, tais como número, tipos e localizações das estações de trabalho, hardware de
processamento, cabeamento e os dispositivos de rede; deve especificar os procedimentos para
testar o sistema completo antes da instalação.
• Desenvolvimento:
• Implementação:
— ocorre após o sistema ter passado satisfatoriamente por testes de aceitação. O sistema é
transferido do ambiente de desenvolvimento para o ambiente de produção;
• Manutenção:
63
Unidade II
Observação
Esse modelo, provavelmente e infelizmente, seja o ciclo de vida mais usado na atualidade. Para
alguns desenvolvedores, ele é atraente porque não exige nenhuma sofisticação técnica ou gerencial.
Todavia, é considerado um modelo de alto risco, impossível de ser gerenciado e que não permite assumir
compromissos confiáveis.
Esse modelo persistiu durante algumas décadas, e, como não existia separação de papéis, todos
faziam um pouco de tudo. Às vezes, uma única pessoa analisava, codificava e testava um sistema inteiro.
Na busca de eliminar os problemas causados pelo método codifica-remenda, foram sendo criadas
as metodologias conhecidas hoje como tradicionais, sendo a mais conhecida a chamada cascata, que é,
também, referida como o modelo clássico de desenvolvimento de software.
O modelo clássico ou cascata, que também é conhecido por abordagem top-down, surgiu na década
de 1970. Até meados da década de 1980, foi o único modelo com aceitação geral; derivado de modelos
de atividade de engenharia com o fim de estabelecer ordem no desenvolvimento de grandes produtos
de software. Comparado com outros modelos, este é mais rígido e menos administrativo. Um dos mais
importantes, é referência para muitos outros, servindo de base para projetos modernos. A versão original
desse modelo foi melhorada e retocada ao longo do tempo, e este continua a ser muito utilizado hoje
em dia.
Grande parte do sucesso do modelo cascata está no fato de ser orientado para a documentação.
No entanto, esta abrange mais do que arquivo e texto: incluindo representações gráficas e mesmo
simulações. Uma abordagem que incorpora processos, métodos e ferramentas deve ser utilizada pelos
criadores de software.
64
ENGENHARIA DE SOFTWARE I
O paradigma do ciclo de vida clássico demanda uma abordagem sistemática e sequencial para o
desenvolvimento de software. Começa no nível do sistema e progride, através da análise, do design, da
codificação, do teste e da manutenção, como apresentado na figura a seguir.
Engenharia de
sistemas
Análise
Design
Codificação
Testes
Manutenção
• os projetos reais raramente seguem o fluxo sequencial que o modelo propõe; ocorrem interações,
bem como voltas a níveis anteriores, provocando problemas na aplicação do paradigma;
• uma versão do software somente estará disponível quando todo o sistema for definido e
desenvolvido; qualquer alteração pode ocasionar um desastre no desenvolvimento do sistema;
isso requer paciência dos usuários.
Observação
De acordo com Pressman (2006), Sommerville (2007), Paula Filho (2003) e outros autores, o modelo
incremental seria a aplicação do modelo cascata por diversas vezes em um mesmo projeto. Isso ocorre
ao se dividir o desenvolvimento de um sistema complexo em pequenas partes, o que pode ocorrer de
forma sequencial, parte a parte ou em paralelo, com equipes diferentes desenvolvendo partes diferentes.
65
Unidade II
Para apresentar o modelo, é utilizada uma visão do ciclo de vida em cascata considerada por Peres,
Laskoski e Radaelli (2014), mostrada na próxima figura.
Comunicação
Planejamento
Modelagem
Construção
Implantação
As fases desse modelo, de acordo com Peres, Lakosky e Radaelli (2014, p. 2) significam:
• construção: essa fase combina a geração de código e os testes necessários para revelar erros no
código implementado;
• implantação: o software é entregue ao cliente, que avalia o produto e fornece feedback com base
na avaliação.
Se essas fases se repetirem e pequenos pedaços do software forem sendo liberados ou agrupados
para serem entregues ao cliente, teremos o que se chama de modelo incremental, mostrado na figura
a seguir.
66
ENGENHARIA DE SOFTWARE I
Incremento n
Comunicação
Planejamento
Funcionalidades e características do software
Modelagem
Incremento 2
Construção
Comunicação
Implantação
Planejamento
Entrega do n
Incremento 1 Modelagem incremento
Comunicação Construção
Entrega do 2º
Planejamento Implantação incremento
Modelagem
Construção
Entrega do 1º incremento
Implantação Núcleo do produto
Vantagens apontadas pelos autores para o modelo incremental em relação ao modelo em cascata
puro:
• necessidades não especificadas nas fases iniciais podem ser desenvolvidas nos incrementos;
Como todo modelo conceitual, porém, o modelo incremental apresenta algumas desvantagens:
• o número de iterações não pode ser definido no início do processo, o que pode não ser aceito pelo
cliente;
67
Unidade II
A metodologia RAD propõe um conjunto de elementos que criaram um novo paradigma incluindo
a prototipação interativa, o desenvolvimento espiral e o uso intensivo de ferramentas de automação do
desenvolvimento (CASE), com uso de linguagens de quarta geração, orientação a objetos e modelos-
padrão de desenvolvimento, como a Unified Modeling Language (UML).
O RAD foi originalmente utilizado por James Martin, em seu livro RAD, publicado em 1991.
• os requisitos devem ser entendidos corretamente, e o alcance do projeto deve ser restrito;
• cada função principal pode ser direcionada para uma equipe RAD separada e, então, integrada
para formar o todo.
A próxima figura mostra uma visão gráfica do modelo RAD proposta por Ramos (2009).
68
ENGENHARIA DE SOFTWARE I
Equipe nº3
Equipe nº1 Equipe nº2
Modelagem
Modelagem do negócio
Modelagem do negócio Modelagem
do negócio dos dados
Modelagem
dos dados Modelagem
Modelagem do processo
dos dados Modelagem Geração de
do processo aplicação
Modelagem
do processo Geração de Teste e
aplicação modificação
Geração de Teste e
aplicação modificação
Teste e
60 a 90 dias modificação
Alguns autores consideram que nem todos os tipos de aplicação são apropriados para o modelo
RAD. Para que este seja aplicado corretamente, as seguintes considerações devem ser levadas em
conta:
• a aplicação deve permitir uma efetiva modularização, com ciclos curtos de desenvolvimento;
• se a aplicação exigir alto desempenho e se este for obtido sintonizando as interfaces dos
componentes, a abordagem RAD poderá não funcionar a contento;
• a prototipação interativa e viva, aliada ao desenvolvimento incremental e não linear, são aspectos
extremamente positivos para atingir os objetivos do desenvolvimento rápido;
• o modelo RAD propõe-se a ser um método leve, flexível e adaptável às novas tecnologias
emergentes que considerem o RAD um processo organizado, gerenciado e padronizado.
Saiba mais
69
Unidade II
Os modelos evolucionários ou modelos evolutivos, como o próprio nome sugere, são os explicitamente
projetados para acomodar um produto de software que evolui com o tempo. A cada iteração, os modelos
evolucionários ou evolutivos têm por objetivo produzir uma versão melhor e mais completa do software.
A prototipação é uma ferramenta que pode ser usada em qualquer um dos modelos apresentados
até agora. Essa técnica auxilia o engenheiro de software e o cliente a entenderem melhor o que deve ser
construído quando os requisitos estão confusos. Um protótipo é uma espécie de versão preliminar do
software. Pode ser um software ou um plano no papel e concentra-se na representação dos aspectos do
software que são visíveis para o cliente.
O objetivo é entender os requisitos do usuário e, assim, obter melhor definição dos requisitos do
sistema. Possibilita que o analista crie um modelo (protótipo) do software que será construído. Esse
protótipo é apropriado para quando o cliente não tiver definido detalhadamente os requisitos, mas
tiver prazo curto para o desenvolvimento. O protótipo dá maior assertividade ao projeto com relação às
necessidades do cliente ou usuário.
Obter requisitos
Refinamento do protótipo
Construir protótipo
Avaliar protótipo
A função da atividade obter requisitos é permitir que desenvolvedor e cliente definam os objetivos
gerais do software, identifiquem quais requisitos são conhecidos e as áreas que necessitam de definições
adicionais; elaborar projeto rápido é aquela em que se faz a representação dos aspectos do software
que são visíveis ao usuário por meio de abordagens de entrada e formatos de saída; a atividade construir
70
ENGENHARIA DE SOFTWARE I
Percebe-se claramente que a intenção desse modelo é apoiar o entendimento do software a ser
construído e que o resultado da prototipagem não pode ser considerado a aplicação final que será
colocada em produção ou operação. Quando todos os requisitos estiverem identificados e detalhados, e
as interfaces, totalmente definidas, o protótipo deverá ser descartado, e a versão de produção, construída,
considerando os critérios de qualidade.
O modelo espiral foi proposto por Barry Boehm, em 1986, e tem como objetivo acoplar a natureza
iterativa da prototipação aos aspectos controlados e sistemáticos do modelo em cascata; é dividido
em uma série de atividades de trabalho ou regiões de tarefas e combina as características positivas da
gerência de baselines (conjunto de documentos associados ao processo).
A seguir, a figura apresenta o modelo de Boehm, de 1986, com quatro regiões de tarefas.
Avaliar e planejar
próxima fase Desenvolvimento
engenharia
O modelo espiral é uma evolução dos modelos clássicos e da prototipagem. Valoriza os pontos
positivos desses modelos, desprezando os considerados negativos. Organiza o desenvolvimento como
um processo iterativo em que vários conjuntos com quatro fases se sucedem, até que seja obtido o
sistema ou software final.
Um novo ciclo se inicia (primeira fase) com a determinação de objetivos, alternativas e restrições, em
que ocorre o comprometimento dos interessados e o estabelecimento de uma estratégia para alcançar
os objetivos. Na segunda fase, a avaliação de alternativas, bem como a identificação e a solução de
riscos se executam numa análise de riscos. Na terceira fase, ocorre o desenvolvimento do produto de
71
Unidade II
software. Nesse quadrante, outros modelos podem ser empregados, inclusive, o modelo cascata. Na
quarta e última fase, o produto é avaliado e prepara-se para iniciar um novo ciclo.
• o modelo baseado em componentes tem como ênfase criar sistemas de software que envolvam
a composição de componentes, permitindo que sejam adicionadas, adaptadas, removidas
e substituídas partes do sistema sem que seja necessária sua completa substituição; é a
implementação do conceito da reusabilidade no desenvolvimento de software, tão comum em
outras engenharias;
• esse tipo de desenvolvimento auxilia a manutenção dos sistemas, visto que foca a integração de
novos componentes já prontos ou, então, a atualização dos já existentes;
• dessa forma, essa abordagem enfatiza a criação ou a adaptação de componentes para que
sejam utilizados em diversos sistemas; com isso, temos como resultado a reutilização, que busca
flexibilizar o desenvolvimento;
• um tipo de desenvolvimento que utiliza essa filosofia é o formado pelos componentes de software
comercial de prateleira, ou Commercial Off-The-Shelf (COTS), componentes desenvolvidos por
vendedores que os oferecem como produtos e disponibilizam as suas funcionalidades juntamente
com interfaces bem-definidas que permitem que esses componentes sejam integrados ao software
a ser desenvolvido;
• esses componentes podem ser comprados, e a sua principal desvantagem, na maioria dos casos, é
que não há código-fonte disponível; assim, a definição de como usar o componente é dada pelo
fabricante e deve ser documentada, além de ser oferecido suporte na instalação e no uso desses
componentes;
Saiba mais
• o modelo de métodos formais possui um conjunto de atividades que conduzem a uma especificação
matemática formal do software e possibilita a especificação, o desenvolvimento e a verificação de
um sistema baseado em computador por meio da aplicação de uma rigorosa notação matemática;
— nível 0: em que o software é descrito por meio de uma especificação formal que será usada
como base para a implementação do sistema; esse nível é opcional e deve ser de custo-benefício
menor;
— nível 2: em que provadores de teoremas ou simuladores podem ser utilizados, a fim de conduzir
testes completos das propriedades de um sistema, de forma mais automatizada; esse nível é
mais apropriado em sistemas nos quais o custo provocado por erros é extremamente alto.
• a vantagem dos métodos formais durante o desenvolvimento é que eles oferecem a eliminação
de diversos problemas encontrados em outros modelos, como a ambiguidade, a incompletude e a
inconsistência;
• todos esses problemas podem ser descobertos e corrigidos mais facilmente com a aplicação
da análise matemática; os métodos formais, quando utilizados durante o projeto, servem para
verificar a programação, possibilitando, assim, a descoberta e a correção de erros que poderiam
passar despercebidos;
• em razão da sua característica, os modelos de métodos formais são mais utilizados quando se
desenvolvem softwares que possuem fator crítico de segurança, ou quando a empresa pode sofrer
pesados problemas econômicos caso ocorram erros no software;
• alguns exemplos de software em que os métodos formais são aplicados são os sistemas de controle
de aeronaves, engenharia aeroespacial e equipamentos médicos.
O UP foi desenvolvido na década de 1990 pela empresa Rational, que hoje pertence à IBM.
É caracterizado como um arcabouço (framework) que pode ser personalizado de acordo com as
necessidades específicas e os recursos disponíveis para cada projeto.
Todo UP deve descrever quem (papel) está fazendo o que (artefatos das atividades), como
(execução das atividades) e quando (no tempo, representa a disciplina no processo). Artefato é
qualquer documento ou modelo que precisa ser construído nas atividades do processo. Dentro do
processo unificado, aparece a figura do trabalhador ou ator, que é alguém que desempenha um
papel e é responsável pela realização de atividades para produzir ou modificar um artefato. Um
trabalhador pode ser um analista de negócio, um analista de sistema, um programador, um testador
etc. Atividade, no UP, representa uma tarefa a ser realizada por um trabalhador ou ator, a fim de
produzir ou modificar um artefato. Como exemplos, podemos citar os requisitos do sistema, o plano
do projeto, os códigos, os casos de testes etc.
das disciplinas são realizadas a qualquer momento durante o ciclo de desenvolvimento, que, no UP, é
denominado de fase do UP. Como exemplo de uma sequência de atividades, temos: requisitos, análise,
projeto, implementação e teste.
• em cada ciclo ocorrem as atividades de análise de requisitos, projeto, implementação e teste, bem
como a integração dos artefatos produzidos com os artefatos já existentes.
Requisitos Requisitos
Projetos Projetos
Implementação e Tempo Implementação e O sistema cresce
testes testes incrementalmente
Integração e testes Integração e testes
de sistema de sistema
Ciclo 1 Ciclo N
As iterações são
de tamanho fixo
Vinte dias, ou limitadas pelo
por exemplo tempo
• um caso de uso ou use case da UML é uma sequência de ações executadas por um ou mais
atores e pelo próprio sistema, que produz um ou mais resultados de valor para um ou mais
atores;
• o modelo unificado UP é dirigido por casos de uso, pois os utiliza para dirigir todo o trabalho de
desenvolvimento, desde a captação inicial e a negociação dos requisitos até a aceitação do código
(testes).
• os casos de uso são centrais ao processo UP e a outros métodos iterativos, pois os requisitos
funcionais são registrados, preferencialmente, por meio deles; ajudam a planejar as iterações,
podem conduzir o projeto, e o teste é baseado neles.
75
Unidade II
• a arquitetura, juntamente com os casos de uso, deve orientar a exploração de todos os aspectos
do sistema;
Fases do processo
unificado
Entrega do
produto para a
produção
76
ENGENHARIA DE SOFTWARE I
Na fase de transição, o sistema é entregue ao cliente para uso em produção; testes detalhados são
realizados, e um ou mais incrementos são implantados; erros ou defeitos são corrigidos, caso apareçam
nesse momento.
Com relação às disciplinas que determinam as atividades de trabalho, são realizadas a qualquer
momento no ciclo de desenvolvimento do UP e entrecortam todas as fases do processo unificado,
podendo ter maior participação em uma fase e menor influência em outras, mas ocorrendo em qualquer
uma delas.
A próxima figura mostra uma visão da organização das disciplinas no modelo UP. O gráfico também
é chamado de Gráfico das Baleias, em razão do seu formato peculiar.
Requisitos
Análise
Análise
Implementação
Testes
O processo unificado propõe que as disciplinas ocorram em paralelo nas fases e que podem ocorrer
a qualquer momento. Isso significa que diversas atividades ou trabalhos são realizados de forma
simultânea, dependendo do momento em que estão ocorrendo e de acordo com o plano do projeto.
Cada disciplina pode gerar um ou mais artefatos, que são documentos produzidos, modelos, diagramas,
especificações, códigos, planos de testes etc.
O RUP é uma instância do Processo Unificado desenvolvido pela empresa Rational e hoje mantido
pela IBM. Trata-se de um processo configurável de engenharia de software e serve como um guia de
como se deve usar a linguagem de modelos UML no ciclo de desenvolvimento de software.
• assegurar uma produção de alta qualidade de software, que realiza a necessidade do usuário
seguindo os prazos e o orçamento;
77
Unidade II
O RUP, como processo de desenvolvimento de software, tem quatro regras básicas, semelhantes ao
processo unificado UP:
• servir de guia;
• especificar quais artefatos devem ser desenvolvidos e quando devem ser desenvolvidos;
• dirigir as tarefas individuais e do time em sua totalidade;
• oferecer critérios para monitorar e medir os produtos e atividades do projeto.
Esse processo também apresenta as quatro fases semelhantes às do processo unificado: concepção
ou iniciação, elaboração, construção e transição. As disciplinas, dentro das fases, são orientadas por
modelos desenvolvidos com o uso da UML, como mostra a próxima figura.
Modelo
Design design
Modelo de
Implementação implementação
Modelo de
Testes teste
78
ENGENHARIA DE SOFTWARE I
• modelagem de negócio;
• levantamento de requisitos;
• análise e design;
• implementação;
Saiba mais
O processo Praxis é desenhado para dar suporte a projetos realizados individualmente ou por
pequenas equipes, com duração de seis meses a um ano. Com isso se pretende que ele seja utilizável
para projetos de fim de curso de graduação e congêneres, ou similares de aplicação de disciplinas de
engenharia de software. Abrange tanto métodos técnicos, como requisitos, análise, desenho, testes e
implementação, quanto métodos gerenciais, como gestão de requisitos, gestão de projetos, garantia da
qualidade e gestão de configuração. Propõe um ciclo de vida composto por fases que produzem um
conjunto precisamente definido de artefatos (documentos e modelos). Para construir cada um desses
artefatos, o usuário do processo (estudante ou engenheiro de software) precisa exercitar um conjunto
de práticas recomendáveis da engenharia de software. Na construção desses artefatos, o usuário do
processo é guiado por padrões e auxiliado pelos modelos de documentos e pelos exemplos constantes
do material de apoio.
Saiba mais
Esse processo é considerado como uma aplicação prática de matemática e da estatística para produzir
software de alta qualidade. Também considera o conceito de hardware cleanroom. Aplica fortemente
prevenção de erros versus remoção de erros, o design correto com certificação por teste e apresenta as
metas: processo de desenvolvimento gerenciável mais prevenção de erros.
• controle sobre o processo – progresso evidente mais garantia de integridade dos artefatos;
80
ENGENHARIA DE SOFTWARE I
De acordo com Linger e Trammell (1996), o cleanroom combina métodos formais de requisitos e
desenho com uso no teste estatístico para produzir software com quase nenhum ou nenhum defeito.
• codificação por incremento: desenvolver código e verificá-lo usando métodos informais; compilar
código ou efetuar teste às unidades é proibido;
• teste estatístico por incremento: o código é compilado, linkado e testado; os resultados são
validados.
Linger e Trammell (1996) apontam, ainda, as razões para que uma organização adote a abordagem
do cleanroom quando, com o mesmo trabalho, poderia usar sua estratégia tradicional de engenharia de
software:
• a organização que pretende adotar o cleanroom tem de estar preparada para uma mudança
radical; adotar uma filosofia “sem erros na cultura da empresa”;
• uma vez que o principal objetivo do cleanroom é prevenir erros, o produto final é praticamente
sem erros, com um certificado de fiabilidade científica;
• isso faz baixar o preço de produção e manutenção de um produto feito em grande escala;
– Não. O cleanroom utiliza muitas das práticas existentes e, ao contrário do que dizem as
críticas, não vai substituir todas as técnicas tradicionais.
81
Unidade II
– Não. O cleanroom utiliza muitas das práticas existentes e, ao contrário do que dizem as
críticas, não vai substituir todas as técnicas tradicionais do SE.
Esses princípios apontam para um número de práticas específicas em que a única regra é que fiquem
nos limites dos princípios fundamentais. É vital para o sucesso do projeto que o cleanroom seja adequado
à necessidade.
Saiba mais
Resumo
82
ENGENHARIA DE SOFTWARE I
Exercícios
Questão 1. Um dos pilares da engenharia de software é a qualidade, que indica, de acordo com
os autores Pressman (2006) e Sommerville (2007), que as empresas também precisam desenvolver
um processo de garantia da qualidade de software. A partir dessa constatação, analise as seguintes
afirmativas:
I – Os requisitos de software são a base a partir da qual a qualidade é medida. A falta de conformidade
com os requisitos significa falta de qualidade.
III – A engenharia de software, para atender à pressão pela qualidade nos produtos, vem desenvolvendo
diversos modelos para a garantia da qualidade de software.
83
Unidade II
I) Afirmativa correta.
Justificativa: se os critérios definidos nos padrões ou nas metodologias de software forem seguidos,
o resultado quase seguramente será a existência de qualidade no software produzido.
Justificativa: assegurar a qualidade de um software não é tarefa trivial, uma vez que produtos
de software são geralmente complexos, mas, ao longo do tempo, modelos como o CMMI do SEI, o
MPS.BR brasileiro e as normas ISO têm contribuído significativamente para a qualidade dos softwares
desenvolvidos.
Justificativa: existem diversas normas internacionais e nacionais, bem como modelos de qualidade
de software que definem um conjunto de critérios de desenvolvimento que orientam a maneira pela
qual o processo de software é semelhante a um trabalho de engenharia. Se esses critérios, segundo as
normas de qualidade, não forem seguidos, o resultado quase seguramente será a falta de qualidade.
Relativamente ao processo de software, a ISO 12207, o RUP e o SCRUM têm estabelecido padrões e
normas de suporte aos processos ativos no mercado.
84
ENGENHARIA DE SOFTWARE I
V) Afirmativa incorreta.
Justificativa: pois os critérios de qualidade estão intrinsecamente amarrados aos processos definidos
na engenharia de software.
I – Um processo de software tem um ciclo de vida como os outros produtos das outras engenharias
(engenharia naval, engenharia mecânica, engenharia civil etc.).
II – No ciclo de evolução, o software sofre intervenções, tanto para melhorá-lo como para corrigir
possíveis distorções.
III – É no modelo PSP de software que o SEI (2014) se preocupa com a melhoria e a otimização dos
trabalhos dos times de software.
IV – O modelo TSP é um guia voltado para os times de software e os prepara para estarem
comprometidos com um objetivo comum, que é o sucesso do projeto.
V – O processo Praxis para desenvolvimento de software não segue os princípios dos modelos
internacionais (já que é brasileiro) e propõe um caminho próprio no desenvolvimento de software.
85