Buscar

SEGURANCA DA INFORMACAO 2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Curso Online: 
Segurança da Informação 
 
 
 
1 
 
 
Fundamentos da qualidade de software..............................................................2 
Processos de desenvolvimento de software........................................................4 
Métricas da qualidade de software......................................................................7 
Normas ISO 12207 / ISO 15504........................................................................10 
Reengenharia....................................................................................................13 
Engenharia de software cliente/Servidor...........................................................15 
O desenvolvimento do plano de projeto de Software........................................17 
Processos de gerência de qualidade de software.............................................19 
Referências bibliográficas..................................................................................22 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2 
 
FUNDAMENTOS DA QUALIDADE DE SOFTWARE 
 
 
O termo Qualidade possui diferentes definições na literatura. O glossário 
do IEEE define qualidade como ―Grau de conformidade de um sistema, 
componente ou processo com os respectivos requisitos‖, ou, alternativamente, 
como ―Grau de conformidade de um sistema, componente ou processo com as 
necessidades e expectativas de clientes ou usuários‖. 
A norma NBR ISO 9000:2005 define qualidade como sendo o grau no qual um 
conjunto de características inerentes satisfaz aos requisitos. Ou seja, pode-se 
afirmar que se algum produto ou serviço atende aos requisitos especificados, 
este mesmo produto ou serviço possui a qualidade desejada. 
Outra visão diferente é no contexto de desenvolvimento de software: qualidade 
pode ser entendida como um conjunto de características a serem satisfeitas em 
um determinado grau, de modo que o produto de software atenda às 
necessidades explícitas e implícitas de seus usuários. 
Fundamentos de qualidade de software: 
 
 Cultura e ética de engenharia de software 
 Valores e custos de qualidade 
 Modelos e características de qualidade 
 Melhoria da qualidade de software 
 Segurança de Software (Software Safety) 
 
Garvin apresenta cinco formas de entender qualidade: 
 
A definição transcedental: onde qualidade é uma "excelência inata, absoluta e 
que todos podem reconhecer", sendo semelhante ao conceito de "Qualidade 
sem um nome" proposta por Christopher Alexander. 
A definição baseada em produto: onde qualidade é algo que pode ser medido 
em um objeto. 
A definição baseada no usuário: onde qualidade é algo ligado ao atendimento 
das necessidades do usuário. 
https://pt.wikipedia.org/wiki/Qualidade
https://pt.wikipedia.org/wiki/Instituto_de_Engenheiros_Eletricistas_e_Eletr%C3%B4nicos
https://pt.wikipedia.org/wiki/ISO_9000
https://pt.wikipedia.org/wiki/Software
https://pt.wikipedia.org/wiki/Christopher_Alexander
 
 
 
3 
 
A definição baseada na fabricação: onde qualidade está ligado a produção 
correta de acordo com os requisitos 
A definição baseada em valor: onde "um produto de qualidade é aquele que 
fornece desempenho a um preço aceitável ou conformidade a um custo 
aceitável". 
 
 
Fundamentos de Qualidade de Software é o primeiro dos 4 tópicos de 
Qualidade de Software do SWEBOK. Nele são tratados à discussão e a 
definição dos aspectos da Qualidade de Software, seus conceitos, 
características, valores e sua aplicação no software sendo desenvolvido ou em 
manutenção. 
 
 
Modelos e Características de Qualidade de Software 
Modelos de Processo de Software 
CMMI 
MPS.BR 
Padrões Internacionais de Processo de Software 
ISO 12207 
Padrões Internacionais de Qualidade de Software 
ISO 9126 
ISO 15504 
ISO/IEC 25010 (SQuaRe) 
Padrões de certificação de Qualidade de Software 
SCAMPI para o CMMI 
Fórum de credenciamento e controle -FCC para o MPS.br 
 
 
https://pt.wikipedia.org/wiki/CMMI
https://pt.wikipedia.org/w/index.php?title=MPS.BR&action=edit&redlink=1
https://pt.wikipedia.org/wiki/ISO_12207
https://pt.wikipedia.org/wiki/ISO_9126
https://pt.wikipedia.org/wiki/ISO_15504
https://pt.wikipedia.org/wiki/ISO/IEC_25010
https://pt.wikipedia.org/wiki/CMMI
 
 
 
4 
 
PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE 
 
 
Um processo de desenvolvimento de software é um conjunto de atividades, 
parcialmente ordenadas, com a finalidade de obter um produto de software. É 
estudado dentro da área de Engenharia de Software, sendo considerado um 
dos principais mecanismos para se obter software de qualidade e cumprir 
corretamente os contratos de desenvolvimento, sendo uma das respostas 
técnicas adequadas para resolver a crise do software. 
A arquitetura de um sistema de software remete a uma representação abstrata 
daquele sistema. Arquitetura é concernente à garantia de que o sistema de 
software irá ao encontro de requisitos do produto, como também assegurar que 
futuros requisitos possam ser atendidos. A etapa da arquitetura também 
direciona as interfaces entre os sistemas de software e outros produtos de 
software, como também com o hardware básico ou com o sistema operacional. 
 
 Modelo em cascata (Waterfall development) 
 Prototipação (Prototyping) 
 Desenvolvimento incremental (Incremental development) 
 Desenvolvimento iterativo e incremental (Iterative and incremental 
development) 
 Modelo em espiral (Spiral development) 
 Desenvolvimento Rápido de Aplicação (Rapid application development - 
RAD) 
 Desenvolvimento ágil de software (Agile development) 
 Programar e Arrumar (Code and fix) 
 Metodologias leves (Lightweight methodologies) 
 
 
O Modelo em Cascata (do inglês: Waterfall Model) é um modelo de 
desenvolvimento de software sequencial no qual o processo é visto como um 
fluir constante para frente (como uma cascata) através das fases de análise de 
requisitos, projeto, implementação, testes (validação), integração, 
e manutenção de software. A origem do termo cascata é frequentemente citado 
como sendo um artigo publicado em 1970 por W. W. Royce; ironicamente, 
Royce defendia um abordagem iterativa para o desenvolvimento de software e 
https://pt.wikipedia.org/wiki/Engenharia_de_Software
https://pt.wikipedia.org/wiki/Qualidade_de_software
https://pt.wikipedia.org/wiki/Crise_do_software
https://pt.wikipedia.org/wiki/Interface
https://pt.wikipedia.org/wiki/Sistema_de_software
https://pt.wikipedia.org/wiki/Hardware
https://pt.wikipedia.org/wiki/Sistema_operacional
https://pt.wikipedia.org/wiki/Modelo_em_cascata
https://pt.wikipedia.org/wiki/Prototipa%C3%A7%C3%A3o
https://pt.wikipedia.org/w/index.php?title=Desenvolvimento_incremental&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Desenvolvimento_iterativo_e_incremental&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Modelo_em_espiral
https://pt.wikipedia.org/wiki/Rapid_Application_Development
https://pt.wikipedia.org/wiki/Desenvolvimento_%C3%A1gil_de_software
https://pt.wikipedia.org/w/index.php?title=C%C3%B3digo_Cowboy&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Modelo_de_desenvolvimento_de_software
https://pt.wikipedia.org/wiki/Modelo_de_desenvolvimento_de_software
https://pt.wikipedia.org/wiki/An%C3%A1lise_de_requisitos
https://pt.wikipedia.org/wiki/An%C3%A1lise_de_requisitos
https://pt.wikipedia.org/wiki/Projeto_de_software
https://pt.wikipedia.org/wiki/Implanta%C3%A7%C3%A3o_de_software
https://pt.wikipedia.org/wiki/Teste_de_software
https://pt.wikipedia.org/wiki/Integra%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Manuten%C3%A7%C3%A3o_de_software
https://pt.wikipedia.org/wiki/1970https://en.wikipedia.org/wiki/Winston_W._Royce
https://pt.wikipedia.org/w/index.php?title=Desenvolvimento_iterativo&action=edit&redlink=1
 
 
 
5 
 
nem mesmo usou o termo cascata. Royce originalmente descreve o que é hoje 
conhecido como o modelo em cascata como um exemplo de um método que 
ele argumentava ser um risco e um convite para falhas. 
O modelo em cascata apresenta uma grande vantagem quando o escopo do 
trabalho é claramente definido, como licitações e serviços específicos para 
órgãos públicos, neste cenário o modelo em cascata leva vantagem. Entretanto 
percebe-se a fragilidade do modelo nos dias de hoje em virtude da pouca ou 
quase nenhuma flexibilidade do modelo, daí então surgem os modelos lineares 
e iterativos. 
No modelo em cascata original de Royce, as seguintes fases são seguidas em 
perfeita ordem: 
 
 Requerimento 
 Projeto 
 Implementação 
 Integração 
 Teste e depuração (verificação) 
 Manutenção de software 
 
O Protótipo é um produto de trabalho da fase de testes e/ou planejamento de 
um projeto. 
Pode se referir a um automóvel (como um carro conceptual), avião, nave 
espacial, navio ou qualquer outra embarcação, veículo de transporte, moveis 
ou produto da engenharia, como, por exemplo, um porto ou uma usina 
hidrelétrica, uma turbina, uma bomba hidráulica, etc. 
Geralmente estes produtos são testados antes em modelos físicos, em 
laboratórios especializados de aerodinâmica ou de hidrodinâmica. A grande 
diferença desse elemento para uma maquete, é que a maquete seria em 
miniatura e o protótipo é em tamanho real. 
Na Engenharia de Software, protótipo é um sistema/modelo (um website ou 
outro software) sem funcionalidades inteligentes (acesso a banco de dados, por 
exemplo), podendo conter apenas funcionalidades gráficas. Utilizado para fins 
de ilustração e melhor entendimento, geralmente em reuniões entre a equipe 
de Análise de Sistemas e o contratante. 
 
https://pt.wikipedia.org/wiki/An%C3%A1lise_de_requerimento_de_software
https://pt.wikipedia.org/wiki/Projeto_de_software
https://pt.wikipedia.org/wiki/Implanta%C3%A7%C3%A3o_de_software
https://pt.wikipedia.org/wiki/Teste_de_integra%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Teste_de_software
https://pt.wikipedia.org/wiki/Depura%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Manuten%C3%A7%C3%A3o_de_software
https://pt.wikipedia.org/wiki/Produto_(ind%C3%BAstria)
https://pt.wikipedia.org/wiki/Trabalho_(economia)
https://pt.wikipedia.org/wiki/Projeto
https://pt.wikipedia.org/wiki/Autom%C3%B3vel
https://pt.wikipedia.org/wiki/Carro_conceptual
https://pt.wikipedia.org/wiki/Avi%C3%A3o
https://pt.wikipedia.org/wiki/Nave_espacial
https://pt.wikipedia.org/wiki/Nave_espacial
https://pt.wikipedia.org/wiki/Navio
https://pt.wikipedia.org/wiki/Embarca%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Ve%C3%ADculo
https://pt.wikipedia.org/wiki/Engenharia
https://pt.wikipedia.org/wiki/Porto
https://pt.wikipedia.org/wiki/Usina_hidrel%C3%A9trica
https://pt.wikipedia.org/wiki/Usina_hidrel%C3%A9trica
https://pt.wikipedia.org/wiki/Turbina
https://pt.wikipedia.org/wiki/Bomba_hidr%C3%A1ulica
https://pt.wikipedia.org/wiki/Modelos_f%C3%ADsicos
https://pt.wikipedia.org/wiki/Aerodin%C3%A2mica
https://pt.wikipedia.org/wiki/Hidrodin%C3%A2mica
https://pt.wikipedia.org/wiki/Maquete
https://pt.wikipedia.org/wiki/Engenharia_de_software
https://pt.wikipedia.org/wiki/Banco_de_dados
https://pt.wikipedia.org/wiki/An%C3%A1lise_de_sistemas
 
 
 
6 
 
Existem inúmeros frameworks de processos para desenvolvimento de software. 
A maioria dos métodos ágeis tenta minimizar o risco pelo desenvolvimento do 
software em curtos períodos, chamados de iteração, os quais gastam 
tipicamente menos de uma semana a até quatro. 
Cada iteração é como um projeto de software em miniatura de seu próprio, e 
inclui todas as tarefas necessárias para implantar o mini-incremento da nova 
funcionalidade: planejamento, análise de requisitos, projeto, codificação, teste e 
documentação. Enquanto em um processo convencional, cada iteração não 
está necessariamente focada em adicionar um novo conjunto significativo de 
funcionalidades, um projeto de software ágil busca a capacidade de implantar 
uma nova versão do software ao fim de cada iteração, etapa a qual a equipe 
responsável reavalia as prioridades do projeto. 
Métodos ágeis enfatizam comunicações em tempo real, preferencialmente cara 
a cara, a documentos escritos. A maioria dos componentes de um grupo ágil 
deve estar agrupada em uma sala. Isso inclui todas as pessoas necessárias 
para terminar o software: no mínimo, os programadores e 
seus clientes (clientes são as pessoas que definem o produto, eles podem ser 
os gerentes, analistas de negócio, ou realmente os clientes). Nesta sala devem 
também se encontrar os testadores, projetistas de iteração, redatores 
técnicos e gerentes. 
Métodos ágeis também enfatizam o software funcional como uma medida 
primária de progresso. Combinado com a comunicação cara-a-cara, métodos 
ágeis produzem pouca documentação em relação a outros métodos, sendo 
este um dos pontos que podem ser considerados negativos, mas reduzindo o 
tempo de produção de documentação mais útil. 
A codificação cowboy, também chamada de Modelo Balbúrdia, é a ausência de 
metodologias de desenvolvimento de Software: os membros da equipe fazem o 
que eles sentem que é correto. Como os desenvolvedores que utilizam 
métodos ágeis freqüentemente reavaliam os planos, enfatizam a comunicação 
face a face e fazem o uso relativamente esparso de documentos, 
ocasionalmente levam as pessoas a confundirem isto com codificação cowboy. 
Equipes ágeis, contudo, seguem o processo definido (e freqüentemente de 
forma disciplinada e rigorosa). 
Como em todas as metodologias, o conhecimento e a experiência dos usuários 
definem o grau de sucesso e/ou fracasso de cada atividade. Os controles mais 
rígidos e sistematizados aplicados em um processo implicam altos níveis de 
responsabilidade para os usuários. A degradação de procedimentos bem-
intencionados e organizados pode levar as atividades a serem caracterizadas 
como codificação cowboy. 
https://pt.wikipedia.org/wiki/An%C3%A1lise_de_requisitos
https://pt.wikipedia.org/wiki/Teste_de_software
https://pt.wikipedia.org/wiki/Sala
https://pt.wikipedia.org/wiki/Gerente
https://pt.wikipedia.org/wiki/Analista_de_neg%C3%B3cio
https://pt.wikipedia.org/wiki/Cliente_(com%C3%A9rcio)
https://pt.wikipedia.org/w/index.php?title=Redactores_t%C3%A9cnicos&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Redactores_t%C3%A9cnicos&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Codifica%C3%A7%C3%A3o_cowboy&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Modelo_Balb%C3%BArdia&action=edit&redlink=1
 
 
 
7 
 
MÉTRICAS DA QUALIDADE DE SOFTWARE 
 
 
 
 
Imagem: Medições de previsão e de controle — SOMMERVILLE, 2011 
 
 
É um conjunto de métodos, ferramentas e procedimentos com o objetivo 
de construir software com qualidade. 
A combinação desses 3 elementos fundamentais possibilita ao gerente o 
controle do processo de desenvolvimento do software desde as fases iniciais 
de concepção do projeto até sua manutenção, e oferece ao profissional uma 
base para a construção de softwares de alta qualidade, para além dos 
processos técnicos. (Pressman, 2002) 
―A qualidade de software não é diretamente comparável à qualidade da 
manufatura. A ideia de tolerâncias não é aplicável aos sistemas 
digitais.‖ Sommerville(2011) 
 
 
 
 
8 
 
As métricas podem mensurar fatores diversos, dependendo de sua intenção. 
Desde detectar tendências até medir quantitativamente a eficácia dos 
processos, sua premissa é ser simples, de fácil coleta e manipulação de 
informações, de forma a garantir sua competitividade ao longo do tempo e, 
portanto, seu monitoramento. 
No contexto do desenvolvimento de softwares, é necessário que as metas 
sejam construídas a partir dedados estatísticos históricos, para que sejam 
projetadas o mais próximas da realidade possível, de modo a permitir a 
existência de processos verdadeiramente mais eficientes e eficazes. Tão 
importante quanto coletar e manipular os dados corretos, é papel do gerente 
sempre avaliar a necessidade de auditar seus processos periodicamente, 
evitando desperdício de tempo e esforço em algo sem propósito específico 
definido. 
A medição é algo comum no mundo da engenharia. A engenharia de 
software está longe de desenvolver uma medição padrão amplamente aceita e 
com resultados sem fatores subjetivos. Há discordâncias sobre o que medir e 
como avaliar o resultado obtido das medições. 
Métricas de softwares possibilitam realizar uma das atividades mais 
fundamentais do processo de gerenciamento de projetos: o planejamento. A 
partir desse, pode-se identificar a quantidade de esforço, de custo e 
das atividades que serão necessárias para a realização do projeto. 
As métricas de software, do ponto de vista de medição, podem ser divididas em 
duas categorias: medidas diretas e indiretas. Podemos considerar como 
medidas diretas do processo de engenharia de software o custo e o esforço 
aplicados ao desenvolvimento e manutenção do software e do produto, a 
quantidade de linhas de código produzidas e o total de defeitos registrados 
durante um determinado período de tempo. Porém, a qualidade e 
a funcionalidade do software, ou a sua capacidade de manutenção, são mais 
difíceis de serem avaliadas e só podem ser medidas de forma indireta. 
Também podemos dividir as métricas de software, sob o ponto de vista 
de aplicação, em duas categorias: métricas de produtividade e de qualidade. 
As métricas de produtividade concentram-se na saída do processo de 
engenharia de software. As métricas de qualidade indicam o quanto o software 
atende aos requisitos definidos pelo usuário. 
A medida de software mais familiar é a contagem de linhas de código. Esta 
métrica pode parecer simples, mas existe discordância sobre o que constitui 
uma linha de código. A medida de linhas de código não deveria contar linhas 
de comentário e linhas em branco, pois não afeta a sua funcionalidade. Está 
https://pt.wikipedia.org/wiki/Medi%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Engenharia
https://pt.wikipedia.org/wiki/Engenharia_de_software
https://pt.wikipedia.org/wiki/Engenharia_de_software
https://pt.wikipedia.org/wiki/Padr%C3%A3o
https://pt.wikipedia.org/wiki/Gerenciamento_de_projetos
https://pt.wikipedia.org/wiki/Custo
https://pt.wikipedia.org/wiki/Atividade
https://pt.wikipedia.org/wiki/Projeto
https://pt.wikipedia.org/w/index.php?title=Linhas_de_c%C3%B3digo&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Qualidade
https://pt.wikipedia.org/wiki/Funcionalidade
https://pt.wikipedia.org/wiki/Software
https://pt.wikipedia.org/wiki/Manuten%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Aplica%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Produtividade
https://pt.wikipedia.org/wiki/Requisitos
https://pt.wikipedia.org/wiki/Usu%C3%A1rio
 
 
 
9 
 
fortemente ligado à linguagem de programação utilizada, impossibilitando a 
utilização de dados históricos para projetos que não utilizam a mesma 
linguagem. Um conjunto de métricas de qualidade e produtividade pode ser 
desenvolvido com esta técnica. 
Exemplos de métricas: 
 Número de defeitos introduzidos por programador / hora. 
 Número de patches disponibilizados. 
 Número de mudanças no documento de requisitos 
 Número de linhas de código. 
Análise de pontos de função (APF) : mede o tamanho funcional do software, 
subsídios para o cálculo da produtividade do processo de desenvolvimento 
com base na funcionalidade ou utilidade dos programas. Esta avaliação é 
realizada sob o ponto de vista do usuário que avalia o tamanho e a 
complexidade de um software. Nesta contagem são consideradas os seguintes 
itens da aplicação(software):Arquivos Lógicos Internos, Arquivos de Interface 
Externa, Entradas Externas, Consultas Externas e Saídas Externas. Cada item 
deste define um peso que no final determina a quantidade de pontos de função 
da aplicação, para o desenvolvimento de um novo sistema ou os pontos 
necessários para se realizar uma manutenção em um sistema já existente. Os 
pontos calculados servem para se chegar as horas totais do projeto. 
 
 
Objetivos da Medição de Software e utilidade das métricas 
 
Entender: ajudam a entender o comportamento e o funcionamento de produtos 
de software. 
 
Avaliar: utilizadas para determinar padrões, metas e critérios de aceitação. 
 
Controlar: utilizadas para controlar processos, produtos e serviços de 
software. 
 
Prever: utilizadas para prever valores de atributos. 
https://pt.wikipedia.org/wiki/Defeito_de_software
https://pt.wikipedia.org/wiki/Patch_(computa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/An%C3%A1lise_de_pontos_de_fun%C3%A7%C3%A3o
 
 
 
10 
 
NORMAS ISO 12207 / ISO 15504 
 
A ISO/IEC 12207 é a norma ISO/IEC que define processo de Engenharia de 
Software, atividades e tarefas que são associados com os processos do ciclo 
de vida do software desde sua concepção até a retirada/descontinuação do 
software. 
A norma internacional ISO/IEC 12207 tem como objetivo principal estabelecer 
uma estrutura comum para os processos de ciclo de vida e de desenvolvimento 
de softwares visando ajudar as organizações a compreenderem todos 
os componentes presentes na aquisição, desenvolvimento e fornecimento de 
software e, assim, conseguirem firmar contratos e executarem projetos de 
forma mais eficaz. Para isso é necessário que compradores, fornecedores, 
desenvolvedores, mantenedores, operadores, gerentes e técnicos envolvidos 
no desenvolvimento de software usem uma linguagem/framework comum. 
A descrição por atividade é a abordagem mais conhecida e intuitiva. Nela são 
descritas as atividades com as inter-relações e o algoritmo de execução de 
cada atividade. As atividades devem atingir o propósito do processo. Para isso 
deve adotar as premissas: 
 Que procedimentos e métodos serão usados para a execução das 
atividades; 
 Que ferramentas e equipamentos suportarão a realização das 
atividades, de forma a simplificar e automatizar o trabalho; 
 Qual o perfil adequado de quem irá executar as atividades e qual 
o treinamento requerido nos procedimentos, métodos, ferramentas para 
que se possam realizar as atividades de forma adequada; 
 Quais as métricas de processo que poderão ser empregadas para que a 
execução do processo possa ter a qualidade avaliada. 
A norma ISO/IEC 12207 estabelece uma arquitetura de alto nível do ciclo de 
vida de software que é construída a partir de um conjunto de processos e seus 
inter-relacionamentos. Os processos são descritos tanto em nível de 
propósito/saídas como em termos de atividades. 
Os processos da ISO/IEC 12207 são modulares, ou seja, são fortemente 
coesos e fracamente acoplados. Isto significa que todas as partes de um 
processo são fortemente relacionadas, mas a quantidade de interfaces entre os 
processos é mínima. 
As regras listadas a seguir são fundamentais para identificação, escopo e 
estruturação dos processos. 
https://pt.wikipedia.org/wiki/Organiza%C3%A7%C3%A3o_Internacional_para_Padroniza%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Comiss%C3%A3o_Eletrot%C3%A9cnica_Internacional
https://pt.wikipedia.org/wiki/Engenharia_de_software
https://pt.wikipedia.org/wiki/Engenharia_de_software
https://pt.wikipedia.org/wiki/Softwares
https://pt.wikipedia.org/wiki/Organiza%C3%A7%C3%B5es
https://pt.wikipedia.org/wiki/Componente_de_software
https://pt.wikipedia.org/wiki/Contrato
https://pt.wikipedia.org/wiki/Arquitetura_de_software
https://pt.wikipedia.org/wiki/Acoplamento_(programa%C3%A7%C3%A3o_de_computadores)
 
 
 
11 
 
Um processo deve ser modular, isto é, convém que um processo execute uma 
e somente uma função dentro do ciclo de vida e é conveniente que as 
interfaces entre dois processosquaisquer sejam mínimas; 
Cada processo é invocado na arquitetura; 
Se um processo A é invocado por um processo B e somente por ele, 
então A pertence a B; 
Se uma função é invocada por mais de um processo, então esta função torna-
se um processo; 
Deve ser possível verificar qualquer função dentro do modelo de ciclo de vida; 
Convém que cada processo tenha uma estrutura interna suficientemente 
definida para que possa ser executável. 
Algumas atividades importantes para o desenvolvimento de software serão 
descritas a seguir. São elas: 
 Elicitação de requisitos; 
 Análise dos requisitos do software; 
 Projeto da arquitetura do software; 
 Projeto detalhado do software; 
 Implementação; 
 Codificação e testes do software; 
 Integração do software; 
 Teste de qualificação do software; 
 Instalação do software; 
 Testagem e aprovação do software. 
 
Com os requisitos elaborados e validados, pode-se estabelecer uma 
arquitetura de alto nível para o sistema. A arquitetura deve identificar itens de 
hardware, software e operações manuais. Após a arquitetura ser estabelecida, 
é necessário avaliá-la, considerando os critérios listados a seguir: 
Rastreabilidade para os requisitos do sistema; 
Consistência com os requisitos do sistema; 
Adequação dos métodos e padrões de projeto utilizados; 
Viabilidade dos itens de software atenderem seus requisitos alocados; 
Viabilidade da operação e da manutenção. 
 
 
 
12 
 
ISO / IEC 15504, também conhecida como Spice, é um modelo que possui 
como foco a melhoria dos processos de desenvolvimento de software e a 
determinação da capacidade de processos de uma organização. Além dos 
processos, a SPICE define também os seis níveis de capacitação de cada 
processo (Executado, gerenciado, estabelecido, previsível e otimizado) 
A norma ISO/IEC 15504 propõe uma estrutura para realização de avaliações 
de processos em organizações. A mesma pode ser aplicada em empresas que 
buscam uma melhoria e performance interna ou terceiros que utilizam a 
prestação de serviços e fornecimento de produtos. 
Se o objetivo for a melhoria de processos, a organização pode realizar a 
avaliação gerando um perfil dos processos que será usado para a elaboração 
de um plano de melhorias. A análise dos resultados identifica os pontos fortes, 
os pontos fracos e os riscos inerentes aos processos. No segundo caso, a 
empresa tem o objetivo de avaliar um fornecedor em potencial, obtendo o seu 
perfil de capacidade. 
A dimensão do processo define os processos divididos em cinco categorias: 
 Fornecedor do cliente 
 Engenharia 
 Suporte 
 Gestão 
 Organização 
 
Cada atributo do processo é avaliado em uma escala de classificação de 
quatro pontos (NPLF): 
Não atingido (0 - 15%) 
Parcialmente atingido (> 15% - 50%) 
Em grande parte alcançado (> 50% - 85%) 
Totalmente alcançado (> 85% - 100%). 
 
A classificação é baseada em evidências coletadas contra os indicadores da 
prática, que demonstram o cumprimento do atributo do processo. 
 
 
https://pt.wikipedia.org/wiki/Software
 
 
 
13 
 
REENGENHARIA 
 
 
Os fundamentos científicos para a engenharia de software envolvem o uso 
de modelos abstratos e precisos que permitem ao engenheiro especificar, 
projetar, implementar e manter sistemas de software, avaliando e garantindo 
suas qualidades. A área que estuda e avalia os processos de engenharia de 
software, propondo a evolução dos processos, ferramentas e métodos de 
suporte a engenharia de software é a Engenharia de Software Experimental. 
Os princípios da Engenharia de Software constituem a base dos métodos, 
tecnologias, metodologias e ferramentas adotadas na prática e que norteiam a 
prática de desenvolvimento de soluções de software. Os princípios se aplicam 
ao processo e ao produto de software se tornando em prática de 
desenvolvimento de software através da adoção de métodos e técnicas. 
Geralmente, métodos e técnicas constituem uma metodologia, as quais, são 
apoiadas pela utilização de ferramentas. 
Os princípios-chave são: 
 
 Rigor e Formalidade; 
 Separação de Interesses; 
 Modularidade; 
 Alta Coesão; 
 Baixo Acoplamento. 
 Abstração; 
 Antecipação a Mudanças; 
 Generalidade; 
 Incrementação; 
 Requisitos de Software; 
 Goob. 
 
A reengenharia para Stair e Reynolds (2002, p. 39) é vista como 
―redesenho de processos, envolve a readequação dos processos 
empresariais, estruturas organizacionais, sistemas de informação e valores da 
organização objetivando uma guinada nos resultados dos negócios da 
organização‖. 
 
https://pt.wikipedia.org/wiki/Ci%C3%AAncia
https://pt.wikipedia.org/wiki/Modelo_(matem%C3%A1tica)
https://pt.wikipedia.org/w/index.php?title=Engenharia_de_Software_Experimental&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Metodologia_(engenharia_de_software)&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Estrutura
https://pt.wikipedia.org/wiki/Sistemas_de_informa%C3%A7%C3%A3o
 
 
 
14 
 
Na avaliação de um re-projeto de um sistema legado procedimental, apoiar a 
melhoraria da qualidade dos processos de software e do planejamento de 
questões administrativas em projetos de TI e, garantir a qualidade do processo 
de reengenharia de software orientado a objetos[/lead] 
A opção pela reconstrução de um software legado também tem problemas 
associados. O fato de que software tem regras de negócios embutidas, que 
podem não estar documentadas e a possibilidade das pessoas que as 
dominam não estarem mais na empresa, faz com que a sua completa 
reconstrução não seja tão confiável. Além disso, outro problema dessa opção é 
o custo do re-desenvolvimento global do software, geralmente muito alto, 
consumindo tempo e recursos que, na maioria das vezes, as empresas não 
dispõem. 
A engenharia reversa e/ou reengenharia são as formas que muitas 
organizações estão buscando para manter/refazer seus softwares, livrando-se 
das manutenções difíceis e da degeneração de suas estruturas. Por esse 
motivo, é importante que o resultado desse processo seja confiável. 
As tecnologias e técnicas de criação de sistemas estão em constante evolução, 
os sistemas legados inflexíveis devem acompanhar esse avanço, ou podem 
tornar-se obsoletos ou até extintos no mercado. Sendo assim, é necessário a 
compreensão de algumas formas de acompanhar essa evolução, podendo 
fazer uso das técnicas de engenharia reversa ou reengenharia. Em razão da 
semelhança entre as técnicas de engenharia reversa e reengenharia pode 
surgir a dúvida entre qual melhor se adequa ao problema proposto, e a escolha 
da técnica errada poderá ocasionar custos extras e desnecessários. O objetivo 
desta pesquisa é esclarecer os conceitos sobre as técnicas de engenharia 
reversa e reengenharia através de uma revisão sistemática da literatura, 
definindo suas diferenças no que diz respeito a recriação de sistemas ou 
documentação de sistemas legados. 
A reengenharia de software não é aplicável quando um sistema de software 
legado possui alta qualidade técnica e baixo valor de negócio. Em sistemas 
como esse, deve ser aplicada a evolução de software. Com tais características 
é dispensada a necessidade de esforço de mudança. 
A análise é essencial para priorizar sistemas candidatos à reengenharia e qual 
será a estratégia de desenvolvimento. A maior justificativa de reengenharia é o 
alto risco de falhas, problemas de desempenho, confiabilidade, etc. 
 
 
 
 
 
15 
 
ENGENHARIA DE SOFTWARE CLIENTE/SERVIDOR 
 
 
O modelo cliente-servidor (em inglês client/server model), em computação, é 
uma estrutura de aplicação distribuída que distribui as tarefas e cargas de 
trabalho entre os fornecedores de um recurso ou serviço, designados 
como servidores, e os requerentes dos serviços, designados como clientes. 
Geralmente os clientes e servidores comunicam através de uma rede de 
computadores em computadores distintos, mas tanto o clientequanto o 
servidor podem residir no mesmo computador. 
 
 
 
 
Imagem: Wikipédia, a enciclopédia livre. 
 
 
 
Após vários modelos estudados de cliente-servidor caracterizou-se chamar 
tecnicamente de arquitetura multicamada, inspirado nas camadas no Modelo 
OSI, o processo de dividir a arquitetura de cliente-servidor em várias camadas 
lógicas facilitando o processo de programação distribuída, existe desde o 
modelo mais simples de duas camadas, e o mais utilizado atualmente que é 
o modelo de três camadas que é paralelo ao modelo de arquitetura de 
software denominado MVC (Model-view-controller). 
https://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o_distribu%C3%ADda#Aplica%C3%A7%C3%B5es
https://pt.wikipedia.org/wiki/Servidor
https://pt.wikipedia.org/wiki/Cliente_(computa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Rede_de_computadores
https://pt.wikipedia.org/wiki/Rede_de_computadores
https://pt.wikipedia.org/wiki/Arquitetura_multicamada
https://pt.wikipedia.org/wiki/Modelo_OSI
https://pt.wikipedia.org/wiki/Modelo_OSI
https://pt.wikipedia.org/w/index.php?title=Programa%C3%A7%C3%A3o_distribu%C3%ADda&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Thin_client
https://pt.wikipedia.org/wiki/Modelo_em_tr%C3%AAs_camadas
https://pt.wikipedia.org/wiki/Arquitetura_de_software
https://pt.wikipedia.org/wiki/Arquitetura_de_software
https://pt.wikipedia.org/wiki/MVC
 
 
 
16 
 
Características do Cliente: 
Inicia pedidos para servidores; 
Espera por respostas; 
Recebe respostas; 
Conecta-se a um pequeno número de servidores de uma só vez ; 
Normalmente interage diretamente com os servidores através de seu software 
aplicação especifico, que lhe possibilita a comunicação com o servidor; 
Utiliza recursos da rede . 
 
Características do Servidor: 
Sempre espera por um pedido de um cliente; 
Atende os pedidos e, em seguida, responde aos clientes com os dados 
solicitados; 
Podem se conectar com outros servidores para atender uma solicitação 
específica do cliente; jamais podem se comunicar. 
Fornece recursos de rede. 
Normalmente interage diretamente com os usuários finais através de qualquer 
interface com o usuário; 
Estrutura o sistema. 
 
Os protocolos do nível de transporte fornecem serviços que garantem uma 
transferência confiável de dados e aplicativos entre computadores (ou outros 
equipamentos) remotos. Os programas na camada de aplicação usam 
os protocolos de transporte para contactar outras aplicações. Para isso, a 
aplicação interage com o software do protocolo antes de ser feito o contacto. A 
aplicação que aguarda a conexão informa ao software do protocolo local que 
está pronta a aceitar mensagem. A aplicação que estabelece a conexão usa os 
protocolos de transporte e rede para contactar o sistema que aguarda. As 
mensagens entre as duas aplicações são trocadas através da conexão 
resultante. 
 
https://pt.wikipedia.org/wiki/Protocolo_de_transporte
https://pt.wikipedia.org/wiki/Protocolo
https://pt.wikipedia.org/wiki/Conex%C3%A3o
 
 
 
17 
 
O DESENVOLVIMENTO DO PLANO DE PROJETO DE SOFTWARE 
 
 
Na computação, o desenvolvimento de software é o ato de elaborar e 
implementar um sistema computacional, isto é, transformar a necessidade de 
um utilizador ou de um mercado em um produto de software. Também é 
entendido como a aplicação dos processos da engenharia de 
software combinados com a pesquisa das necessidades do produto para 
desenvolver software. 
Existem diversos processos de desenvolvimento de software, no entanto há 
algumas atividades básicas comuns à grande parte dos processos existentes, 
nesse artigo será descrito algumas dessas atividades, como: 
 Levantamento de requisitos; 
 Análise de Requisitos; 
 Projeto; 
 Implementação; 
 Testes; 
 Implantação. 
 
O interesse nessa atividade é criar uma estratégia de solução, sem se 
preocupar como essa estratégia será realizada, ou seja, utilizar as 
necessidades dos clientes, depois de compreendido o problema, para 
resolução do problema solicitado. Assim é necessário definir o que o sistema 
deve fazer, antes de definir como o sistema irá fazer. 
Nesta fase é que deve ser considerado, como o sistema funcionará 
internamente, para que os requisitos do cliente possam ser atendidos. Alguns 
aspectos devem ser considerados nessa fase de projeto do sistema, como: 
arquitetura do sistema, linguagem de programação utilizada, Sistema 
Gerenciador de Banco de Dados (SGBD) utilizado, padrão de interface gráfica, 
entre outros. 
Em um processo de desenvolvimento orientado a objetos, o projeto da 
arquitetura normalmente é realizado por um arquiteto de software. O projeto da 
arquitetura visa distribuir as classes de objetos relacionados do sistema em 
subsistemas e seus componentes, distribuindo também esses componentes 
pelos recursos de hardware disponíveis. 
https://pt.wikipedia.org/wiki/Ci%C3%AAncia_da_computa%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Sistema_computacional
https://pt.wikipedia.org/wiki/Software
https://pt.wikipedia.org/wiki/Engenharia_de_software
https://pt.wikipedia.org/wiki/Engenharia_de_software
https://www.devmedia.com.br/guias/
https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264
https://www.devmedia.com.br/arquitetura-de-software-desenvolvimento-orientado-para-arquitetura/8033
https://www.devmedia.com.br/arquitetura-de-software-desenvolvimento-orientado-para-arquitetura/8033
 
 
 
18 
 
Um software normalmente é composto por diversas funções, bibliotecas e 
módulos que gera um programa executável ao final do processo de 
desenvolvimento e este, quando executado, recebe algum tipo de ―entrada‖ de 
dados (input), processa as informações segundo uma série de algoritmos ou 
sequências de instruções lógicas e libera uma saída (output) como resultado 
deste processamento. Um software bem desenvolvido é normalmente criado 
pela área engenharia de software e inclui não apenas o programa de 
computador em si, mas também manuais, especificações e configurações. 
Um programa de computador é composto por uma sequência de instruções, 
que é interpretada e executada por um processador ou por uma máquina 
virtual. Em um programa correto e funcional, essa sequência segue padrões 
específicos que resultam em um comportamento desejado. 
O termo "software" foi criado na década de 1940, e é um trocadilho com o 
termo hardware. "Hardware", em inglês, significa "ferramenta 
física". Software seria tudo o que faz o computador funcionar excetuando-se a 
parte física dele. 
Um programa pode ser executado por qualquer dispositivo capaz de interpretar 
e executar as instruções de que é formado. 
Quando um software está representado como instruções que podem ser 
executadas diretamente por um processador, dizemos que está escrito 
em linguagem de máquina. A execução de um software também pode ser 
intermediada por um programa interpretador, responsável por interpretar e 
executar cada uma de suas instruções. Uma categoria especial e o notável de 
interpretadores são as máquinas virtuais, como a máquina virtual Java (JVM), 
que simulam um computador inteiro, real ou imaginado. 
O dispositivo mais conhecido que dispõe de um processador é o computador. 
Atualmente, com o barateamento dos microprocessadores, existem outras 
máquinas programáveis, como telefone celular, máquinas de automação 
industrial, calculadora etc. 
Normalmente, programas de computador são escritos em linguagens de 
programação, pois estas foram projetadas para aproximar-se das linguagens 
usadas por seres humanos. Raramente a linguagem de máquina é usada para 
desenvolver um programa. Atualmente existe uma quantidade muito grande de 
linguagens de programação, dentre elas as mais populares no momento 
são Java, Visual Basic, C, C++, PHP, dentre outras. 
 
 
https://pt.wikipedia.org/wiki/Programa_de_computador
https://pt.wikipedia.org/wiki/Algoritmo
https://pt.wikipedia.org/wiki/Processadorhttps://pt.wikipedia.org/wiki/M%C3%A1quina_virtual
https://pt.wikipedia.org/wiki/M%C3%A1quina_virtual
https://pt.wikipedia.org/wiki/Hardware
https://pt.wikipedia.org/wiki/L%C3%ADngua_inglesa
https://pt.wikipedia.org/wiki/Processador
https://pt.wikipedia.org/wiki/C%C3%B3digo_de_m%C3%A1quina
https://pt.wikipedia.org/wiki/M%C3%A1quina_virtual
https://pt.wikipedia.org/wiki/M%C3%A1quina_virtual_Java
https://pt.wikipedia.org/wiki/Computador
https://pt.wikipedia.org/wiki/Microprocessador
https://pt.wikipedia.org/wiki/Telefone_celular
https://pt.wikipedia.org/wiki/Automa%C3%A7%C3%A3o_industrial
https://pt.wikipedia.org/wiki/Automa%C3%A7%C3%A3o_industrial
https://pt.wikipedia.org/wiki/Calculadora
https://pt.wikipedia.org/wiki/Java_(linguagem_de_programa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Visual_Basic
https://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/C%2B%2B
https://pt.wikipedia.org/wiki/PHP
 
 
 
19 
 
PROCESSOS DE GERÊNCIA DE QUALIDADE DE SOFTWARE 
 
 
O rumo que a Qualidade de Software tomou na história se iniciou a partir da 
reunião da OTAN em 1968 onde o termo ―Engenharia de Software‖ foi utilizado 
pela primeira vez por F. L. Bauer. 
Naquela reunião foi a primeira vez que o termo ―Crise do Software‖ foi utilizado 
para dizer sobre os maus tempos que a indústria de software 
E a crise foi atribuída à complexidade de desenvolver sistemas cada vez 
maiores, bem como à falta de gerenciamento no processo de desenvolvimento 
de software. 
A partir daí ―engenheiros de software‖ passaram a imitar a engenharia 
convencional para resolver problemas de qualidade e falhas em sistemas de 
informação. O modelo inicial adotado pela engenharia de software foi orientado 
fortemente à melhoria do produto final de software. 
No início da década de 1990, o próprio mercado substituía o Controle pela 
Garantia da Qualidade com um foco centrado no processo e que utilizava 
auditorias durante todo o ciclo de vida de desenvolvimento. 
A partir daí, foram surgindo normas aplicadas para a área tais como a ISO 
9000-3, ISO 15504, ISO 12207, padrões IEEE 1074, IEEE 1298 e 
Modelos SW-CMM, CMMI e MPS.BR para Qualidade de Software. 
Uma forte motivação para o foco em qualidade é que o custo relativo de corrigir 
erros aumenta drasticamente com a evolução do Ciclo de Vida do Software. 
Segundo Boehm, citado por Pressman, há corrigir um erro ou defeito na fase 
de manutenção do software custa 100 vezes mais que corrigi-lo na fase de 
requisitos. 
Pressman indica os seguintes custos relacionados a qualidade de software, 
podendo eles ocorrerem tanto na prevenção quanto no tratamento dos 
problemas: 
Custos de Prevenção 
 Planejamento da qualidade 
 Revisões técnicas formais 
 Testes 
 Treinamento 
https://pt.wikipedia.org/wiki/Engenharia_de_software
https://pt.wikipedia.org/wiki/Crise_do_software
https://pt.wikipedia.org/wiki/ISO/IEC_15504
https://pt.wikipedia.org/wiki/ISO_12207
https://pt.wikipedia.org/wiki/Instituto_de_Engenheiros_Eletricistas_e_Eletr%C3%B4nicos
https://pt.wikipedia.org/wiki/Instituto_de_Engenheiros_Eletricistas_e_Eletr%C3%B4nicos
https://pt.wikipedia.org/wiki/Capability_Maturity_Model
https://pt.wikipedia.org/wiki/CMMI
https://pt.wikipedia.org/w/index.php?title=Ciclo_de_Vida_do_Software&action=edit&redlink=1
 
 
 
20 
 
Custos de Falha Interna 
 Retrabalho 
 Reparo 
 Modo de análise de falha 
Custo de Falha Externa 
 Resolução das reclamações 
 Devolução e substituição 
 Suporte 
 Atendimento à garantia 
 
A Série ISO/IEC 25000, denominada Software product Quality Requirements 
and Evaluation (SQuaRE), é a mais moderna norma de qualidade de software, 
sendo organizada da seguinte forma: 
 
2500n: Divisão da gestão da qualidade 
2501n: Divisão de modelo de qualidade 
2502n: Divisão de medição de qualidade 
2503n: Divisão de requisitos de qualidade 
2504n: Divisão de avaliação de qualidade 
 
Ela define 3 perspectivas de qualidade (ou modelos): 
 Qualidade Externa, uma visão de caixa preta do software 
 Qualidade Interna, uma visão de caixa branca do software 
 Qualidade em Uso, uma visão operacional do software 
 
Existem quatro subcategorias de Gerência de Qualidade de Software: 
Planejamento da Qualidade de Software 
Garantia da Qualidade de Software 
Controle da Qualidade de Software 
Melhoria da Qualidade de Software. 
 
 
 
21 
 
Para auxiliar a garantir a qualidade de software existem várias ferramentas, 
que podem atuar em análises estáticas ou dinâmicas do software. 
Entre a grande variedade de ferramentas existentes, é possível caracterizar 
alguma categorias de análise estática: 
 Ferramentas de apoio a revisões e inspeções 
 Ferramentas de apoio a análise de riscos de segurança 
 Ferramentas de rastreamento de problemas 
 Ferramentas de análise de dados capturados em ambientes de 
Engenharia de Software. 
 
No Brasil existe o Programa Brasileiro da Qualidade e Produtividade em 
Software, PBQP-Software, cuja principal contribuição é o programa de Melhoria 
do Processo de Software Brasileiro, MPS.Br, apoiado pelo Softex. Além disso 
a ABNT nacionaliza as normas internacionais. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
https://pt.wikipedia.org/w/index.php?title=Programa_Brasileiro_da_Qualidade_e_Produtividade_em_Software&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Programa_Brasileiro_da_Qualidade_e_Produtividade_em_Software&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=PBQP-Software&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=MPS/Br&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=MPS/Br&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Mps.br&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Softex
https://pt.wikipedia.org/wiki/ABNT
 
 
 
22 
 
Referências Bibliográficas 
 
Wikipédia, a enciclopédia livre.Qualidade de software. 
Disponível em: 
https://pt.wikipedia.org/wiki/Qualidade_de_software 
 
Wikipédia, a enciclopédia livre.Processo de desenvolvimento de software. 
Disponível em: 
https://pt.wikipedia.org/wiki/Processo_de_desenvolvimento_de_software 
 
Wikipédia, a enciclopédia livre.Modelo em cascata. 
Disponível em: 
https://pt.wikipedia.org/wiki/Modelo_em_cascata 
 
Wikipédia, a enciclopédia livre.Protótipo. 
Disponível em: 
https://pt.wikipedia.org/wiki/Prot%C3%B3tipo 
 
Wikipédia, a enciclopédia livre.Desenvolvimento ágil de software. 
Disponível em: 
https://pt.wikipedia.org/wiki/Desenvolvimento_%C3%A1gil_de_software 
 
Felipe Corniani de Genaro.Como usar métricas para garantir a qualidade de 
software. 
Disponível em: 
https://medium.com/launchpad-labs/como-usar-m%C3%A9tricas-para-garantir-
a-qualidade-de-software-a2a0a77b0a40 
 
 
 
23 
 
 
Wikipédia, a enciclopédia livre.Métrica de software. 
Disponível em: 
https://pt.wikipedia.org/wiki/M%C3%A9trica_de_software 
 
Wikipédia, a enciclopédia livre.ISO/IEC 12207. 
Disponível em: 
https://pt.wikipedia.org/wiki/ISO/IEC_12207 
 
Wikipédia, a enciclopédia livre. ISO/IEC 15504. 
Disponível em: 
https://pt.wikipedia.org/wiki/ISO/IEC_15504 
 
Wikipédia, a enciclopédia livre.Reengenharia. 
Disponível em: 
https://pt.wikipedia.org/wiki/Reengenharia 
 
Wikipédia, a enciclopédia livre.Engenharia de software. 
Disponível em: 
https://pt.wikipedia.org/wiki/Engenharia_de_software 
 
DEVMEDIA.Reengenharia de Software Orientado a Objetos - Engenharia de 
Software 33. 
Disponível em: 
https://www.devmedia.com.br/reengenharia-de-software-orientado-a-objetos-
engenharia-de-software-33/19304 
 
 
 
 
24 
 
Pedro Luis Saraiva Barbosa, Adriano Lima Cândido.DIFERENÇAS ENTRE 
ENGENHARIA REVERSA E REENGENHARIA NOS SISTEMAS DE 
INFORMAÇÃO. 
Disponível em: 
https://interfaces.leaosampaio.edu.br/index.php/revista-
interfaces/article/view/263 
 
Nycolas Batista Medeiros. QUANDO APLICAR A REENGENHARIA DE 
SOFTWARE. 
Disponível em: 
https://www.webartigos.com/artigos/quando-aplicar-a-reengenharia-de-software/90537 
 
Wikipédia, a enciclopédia livre.Modelo cliente–servidor. 
Disponível em: 
https://pt.wikipedia.org/wiki/Modelo_cliente%E2%80%93servidor 
 
Wikipédia, a enciclopédia livre.Desenvolvimento de software. 
Disponível em: 
https://pt.wikipedia.org/wiki/Desenvolvimento_de_software 
 
DEVMEDIA. Atividades básicas ao processo de desenvolvimento de Software. 
Disponível em: 
https://www.devmedia.com.br/atividades-basicas-ao-processo-de-
desenvolvimento-de-software/5413 
 
Wikipédia, a enciclopédia livre.Software. 
Disponível em: 
 
 
 
25 
 
https://pt.wikipedia.org/wiki/Software 
 
Wikipédia, a enciclopédia livre.Qualidade de software. 
Disponível em: 
https://pt.wikipedia.org/wiki/Qualidade_de_software

Outros materiais