Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

QUALIDADE E TESTE DE SOFTWARE 
 
 
Testes e qualidade de software, fatores, objetivos e características. 
 
O teste do software é uma das fases do processo de Engenharia de Software que visa atingir 
um nível de qualidade de produto superior. O objetivo, por paradoxal que pareça, é mesmo o 
de encontrar defeitos no produto, para que estes possam ser corrigidos pela equipe de 
analistas/programadores, antes da entrega final. A maioria das pessoas pensam que o teste de 
software serve para demonstrar o correto funcionamento de um programa, quando na 
verdade ele é utilizado como um processo da engenharia de software para encontrar defeitos. 
 
O conceito de teste de software pode ser compreendido através de uma visão intuitiva ou 
mesmo de uma maneira formal. Existem atualmente várias definições para esse conceito. De 
uma forma simples, testar um software significa verificar através de uma execução controlada 
se o seu comportamento corre de acordo com o especificado. O objetivo principal desta tarefa 
é encontrar o número máximo de erros dispondo do mínimo de esforço, ou seja, mostrar aos 
que desenvolvem se os resultados estão ou não de acordo com os padrões estabelecidos. 
 
Nas indústrias qualidade é algo percorrido há tempos, diversas metodologias surgiram, sempre 
com o objetivo de melhorar a qualidade ao mesmo tempo em que reduz custo, pois o custo do 
defeito pode ser desastroso, não só para as finanças, mas também para o nome da empresa, 
há diversos exemplos de defeitos que poderia ser citado aqui, mas um dos mais conhecidos e 
desastrosos é o incidente que ocorreu na década de 80, mais especificamente entre junho de 
85 a janeiro de 87, o Therac-25, dispositivo computadorizado para tratamento por radiação 
para câncer, teve diversos equipamentos ministrando doses elevadas a pacientes, pelo menos 
6 pacientes tiveram doses elevadas e alguns foram mortos outros incapacitados. O FDA (Food 
and Drug Administration) investigou o caso e descobriu um programa mal documentado, sem 
especificação e nem plano de testes, Frank Houston da FDA escreveu em 85 "Uma quantidade 
significativa de software para sistemas críticos para a vida vêm de pequenas empresas, 
especialmente na indústria de equipamentos médicos; empresas que enquadram no perfil 
daquelas que resistem aos princípios tanto da segurança de sistemas quanto da engenharia de 
software ou os desconhecem", notem a importância da qualidade do software? 
 
Já se imaginou sendo você o paciente em tratamento em um equipamento com software que 
não foi testado adequadamente e os testes serão realizados quando você estiver sendo 
atendido? 
 
 
 
Segundo Bastos et. al. Há três dimensões de qualidade que precisam ser consideradas: 
 
Confiança: O sistema é resistente a falhas durante a execução, isto é, não entra em loop, não 
interrompe a execução por falta de recursos, etc. 
 
Funcionalidade: O sistema se comporta conforme o esperado e definido em seus requisitos. 
 
Performance: O sistema tem um tempo de resposta adequado e aceitável, mesmo quando 
submetido a um volume de processamento próximo de situações reais ou de pico? 
 
E para atender as três dimensões, o desenvolvedor e o analista, tem uma nova tarefa, 
desenvolver com foco em qualidade, além das dimensões, a equipe de análise e 
desenvolvimento pode fazer uso do tão conhecido ciclo PDCA: Planejar, Executar, Verificar, 
Agir. 
 
Testes de software 
 
Teste de Software é um processo que faz parte do #desenvolvimento de software, e tem como 
principal objetivo revelar falhas/bugs para que sejam corrigidas até que o produto final atinja a 
qualidade desejada / acordada. 
Profissionais que trabalham com testes (denominados analistas de testes, técnicos de testes, 
homologador, ou simplesmente testes) estão habituados a realizar uma bateria de testes de 
diferentes naturezas e propósitos, envolvendo não apenas os testes funcionais da aplicação, 
mas diversas outras atividades como: 
 
• avaliação da especificação de requisitos, 
• avaliação de projeto técnico, 
• verificações em outros documentos, 
• testes de performance e capacidade, 
• avaliação de interface, 
• dentre outros. 
 
Para ter uma ideia a respeito da diversidade e abrangência de atividades que fazem parte do 
processo de testes, é apresentada a seguir uma tabela com alguns tipos de testes comuns. 
 
Ciclo de Testes 
 
O ciclo de vida consiste em uma série de etapas dependentes, consideradas como o esqueleto 
do Processo de Teste, que visam estruturar as atividades definindo como os testes serão 
conduzidos no projeto. 
Essas etapas podem variar de acordo com a metodologia utilizada 
A execução de cada etapa do ciclo de vida tem um tempo estimado de duração. Assim, é 
recomendável seguir essa estimativa para que seja possível executar todas as fases do 
processo, minimizando riscos e consequentemente garantindo mais qualidade ao software. 
 
Classes de Testes 
 
Quando falamos em testes de software devemos sempre lembrar que estes são divididos em 
diversos tipos, de acordo com seu objetivo particular. Para clarear os conceitos, conheça aqui, 
os 13 principais tipos de testes de software e o que cada um aborda. 
 
Teste de Configuração 
Testa se o software funciona no hardware a ser instalado. 
 
Teste de Instalação 
Testa se o software instala como planejado, em diferentes hardwares e sob diferentes 
condições, como pouco espaço de memória, interrupções de rede, interrupções na instalação 
etc. 
 
Teste de Integridade 
Testa a resistência do software a falhas (robustez). 
 
Teste de Segurança 
Testa se o sistema e os dados são acessados de maneira segura, apenas pelo autor das ações. 
 
Teste Funcional 
 Testa os requisitos funcionais, as funções e os casos de uso. “A aplicação faz o que deveria 
fazer?” 
 
Teste de Unidade 
Testa um componente isolado ou classe do sistema. 
 
Teste de Integração 
Testa se um ou mais componentes combinados funcionam de maneira satisfatória. Há quem 
diga que o teste de integração é composto por vários testes de unidade. 
 
Teste de Volume 
Testa o comportamento do sistema operando com o volume “normal” de dados e transações 
envolvendo o banco de dados durante um longo período de tempo. 
 
Teste de Performance 
O teste de performance se divide em 3 tipos: 
 
- Teste de carga: 
Testa o software sob as condições normais de uso. Ex.: tempo de resposta, número de 
transações por minuto, usuários simultâneos etc. 
 
- Teste de stress: 
Testa o software sob condições extremas de uso. Grande volume de transações e usuários 
simultâneos. Picos excessivos de carga em curtos períodos de tempo. 
 
- Teste de estabilidade: 
Testa se o sistema se mantém funcionando de maneira satisfatória após um período de uso. 
 
Teste de Usabilidade 
Teste focado na experiência do usuário, consistência da interface, layout, acesso às 
funcionalidades etc. 
 
Testes de Caixa Branca e Caixa Preta 
Basicamente, teste de caixa branca envolve o código e o de caixa-preta, não. 
 
 
Teste de Regressão 
Reteste de um sistema ou componente para verificar se alguma modificação recente causou 
algum efeito indesejado, além de, certificar se o sistema ainda atende os requisitos. 
 
Teste de Manutenção 
Testa se a mudança de ambiente não interferiu no funcionamento do sistema. 
 
Conceito de qualidade de processo e produto de software 
A aplicação QUALIDADE, foi idealizada seguindo fielmente o modelo CMMI com o 
planejamento do estudo da aderência e a implementação do modelo MPS.BR. 
Esta aplicação por idealização e concepção será disponibilizada para utilização gratuita através 
do site www.maturidade-academica.com.br/Qualidade para as empresas e instituição de 
ensino que tenham interesse em estudos e melhoria da qualidade dos processos de software. 
É uma aplicação web e para ser utilizada todos deverão estar cadastrados. A identificação da 
organização no momentodo cadastro pode ser fantasia, em caso da organização não querer 
ser identificada. 
 
Estará à disposição para esclarecimento de eventuais dúvidas o e-mail duvidas@maturidade- 
academica.com.br ou para o e-mail contato@maturidade-academica.com.br, onde os 
pesquisadores/autores da ferramenta, esporádica e voluntariamente poderão orientá-los em 
alguma questão ou direcionar para a busca da melhor orientação. 
 
Este é um trabalho voluntário e acadêmico, resultado de pesquisa e desenvolvimento, e 
poderá ser utilizado como base estatística de pesquisa em qualidade de software, onde será 
utilizado para o entendimento estatístico de fragilidades nos processos de forma geral e 
consequentemente propor pesquisa o desenvolvimento de mecanismos e processos a ser 
oferecido as organizações para auxiliar na conquistar das melhores classificações nos Modelos 
de Qualidade de Processos de Software. 
 
Considerações: 
O Uso desta aplicação não irá eliminar a necessidade da organização em contratar um 
especialista ou uma consultoria em modelos de qualidade, mas poderá minimizar o tempo 
desta contratação, pois o uso responsável irá proporcionar ao usuário um panorama do 
processo pré-auto-avaliado com relação aos modelos CMMI e MPSBR. 
Para ser um usuário da aplicação não é necessário ter conhecimento profundo dos modelos, 
porem quanto maior a familiaridade maior a facilidade em organizar os processos. O termo 
pré-auto-avaliação está se referindo a uma avaliação interna da organização com relação aos 
seus processos de software, não com relação aos processos oficiais de avaliação do CMMI ou 
MSPSBR. 
 
Uma Linha de Produto de Software (LPS) consiste em uma estratégia de realizar o reuso de 
forma sistemática para a construção de sistemas com menos esforço desde que estes 
pertençam a uma mesma família, ou seja, que tenham em comum pertencer a um mesmo 
domínio de mercado. A definição de linha de produto mais aceita na indústria diz o seguinte: 
“Uma linha de produto de software é um conjunto de sistemas que usam software 
intensivamente, compartilhando um conjunto de características comuns e gerenciadas, que 
satisfazem as necessidades de um segmento particular de mercado ou missão, e que são 
desenvolvidos a partir de um conjunto comum de ativos principais e de uma forma 
preestabelecida”. 
 
A ideia básica é o trabalho sobre um grupo de sistemas compartilhando um conjunto comum 
de domínio e gerenciado por features, desenvolvidos a partir de um aglomerado comum de 
artefatos base e de forma previamente planejada. Os artefatos que são reutilizáveis abrangem 
todos os tipos tais como documento de requisitos, projeto de arquitetura, componentes de 
software, planos de testes e etc. Para facilitar a customização em massa, a plataforma deve 
 
fornecer os meios para satisfazer as necessidades dos diferentes stakeholders. Para este 
propósito, o conceito de variabilidade foi criado (explorar as características que variam em 
relação aos diversos produtos). Como consequência de aplicar este conceito, os artefatos que 
podem ser diferentes nas aplicações da linha de produtos são modelados usando variabilidade. 
Uma das características principais da LPS é o reuso, sendo muito presente devido ao 
reaproveitamento de produtos ou partes de produtos em criação de novos produtos. O 
processo de desenvolvimento de software, por uma linha de produto de software, ocorre em 
duas etapas: 
 
Engenharia de Domínio: processo responsável por estabelecer a plataforma de reutilização 
definindo o que é comum e o que é variável da linha de produtos. A plataforma consiste em 
todos os tipos de artefatos de software (requisitos, design, testes, etc.) também chamados de 
ativos base; 
 
Engenharia de Aplicação: processo responsável por derivar aplicações concretas a partir da 
plataforma estabelecida na engenharia de domínio. Ela explora a variabilidade da linha de 
produtos e assegura sua correta instanciação de acordo com as necessidades específicas das 
aplicações finais. 
 
Inicialmente é preciso compreender o plano de negócio da empresa, informações sobre os 
produtos contidos nos ativos bases e dos novos produtos que serão construídos, e os novos 
requisitos. Depois é feita uma análise sobre os potenciais artefatos para reuso sistematizado 
pela engenharia de domínio. Na fase de engenharia de domínio, é feita uma análise dos 
potenciais artefatos para reuso nos ativos bases de acordo com as etapas de processo de 
desenvolvimento, por exemplo: análise de domínio nos artefatos de requisitos, arquitetura de 
domínio nos projetos arquiteturais, implementação de domínio nos ativos de implementação e 
testes de domínio nos documentos de testes reutilizáveis. 
 
Como pode ser observado na figura, o fluxo de informações entre as etapas é feito de forma 
sequencial. Além disso, é necessário fazer rastreabilidade do produto ou produtos que serão 
reusados para encontrar os artefatos correspondentes para serem reutilizados. Após verificar 
os potenciais artefatos para reuso, começa a etapa de engenharia de aplicação. Nesta etapa, é 
construído um novo produto a partir de reuso de artefatos. Nesta etapa é feita análise de 
produto com os requisitos recuperados, projeto arquitetural do produto, implementação e 
testes. 
 
Vale salientar que um novo produto pode ser construído a partir do reuso de artefatos de um 
ou vários produtos. Por fim, é feito um feedback da evolução de produtos no processo de 
desenvolvimento. Este feedback é feito analisando o novo produto e verificando se houve 
evolução de software. Caso isto aconteça, este novo produto pode ser incorporado aos ativos 
bases para o projeto de novos produtos. 
 
Definição de Processo 
A utilização de um processo de software tem sido apontada como um fator primordial para o 
sucesso de empresas de desenvolvimento de software. 
 
Para poder melhor compreender o assunto é necessário definir o que é um processo de 
software. 
 
Um processo de software pode ser entendido como um conjunto estruturado de atividades 
exigidas para desenvolver um sistema de software. Assim Sommerville traz a seguinte 
definição: 
 
"[O processo é] um conjunto de atividades e resultados associados que produzem um produto 
de software". 
 
Jalote conclui que um processo de software é: 
 
"é um conjunto de atividades, ligadas por padrões de relacionamento entre ela, pelas quais se 
as atividades operarem corretamente e de acordo com os padrões requeridos, o resultado 
desejado é produzido. O resultado desejado é um software de alta qualidade e baixo custo. 
Obviamente, um processo que não aumenta a produção (não suporta projetos de software 
grandes) ou não pode produzir software com boa qualidade não é um processo adequado." 
 
A partir destas definições podemos considerar que de forma geral um processo de software 
padrão pode ser visto como um conjunto de atividades, métodos, ferramentas e práticas que 
são utilizadas para construir um produto de software. Na definição de um processo de 
software devem ser consideradas as seguintes informações: atividades a serem realizadas, 
recursos necessários, artefatos requeridos e produzidos, procedimentos adotados e o modelo 
de ciclo de vida utilizado. 
 
Sucintamente podemos definir o processo de software como um conjunto de atividades 
uniformizadas a serem aplicadas sistematicamente que se encontram agrupadas em fases, 
cada uma das quais com os seus intervenientes com responsabilidades, que possui diversas 
entradas e produz diversas saídas. Isto é, define quem faz o quê, quando e como para atingir 
um certo objetivo. 
 
Humphrey define as seguintes razões para a definição de um processo padrão: 
 
• Redução dos problemas relacionados a treinamento, revisões e suporte à ferramentas; 
• As experiências adquiridas nos projetos são incorporadas ao processo padrão e 
contribuem para melhorias em todos os processos definidos; 
• Economiade tempo e esforço na definição de novos processos adequados a projetos. 
 
Para Schwartz as principais fases de um processo de software são: 
 
Especificação de Requisitos: tradução da necessidade ou requisito operacional para uma 
descrição da funcionalidade a ser executada. 
Projeto de Sistema: tradução destes requisitos em uma descrição de todos os componentes 
necessários para codificar o sistema. 
Programação (Codificação): produção do código que controla o sistema e realiza a 
computação e lógica envolvida. 
Verificação e Integração (Verificação): verificação da satisfação dos requisitos iniciais pelo 
produto produzido. 
 
Ao contrário do que possa parecer não existe uma sequência obrigatória de fases, sendo que 
diversos autores apontam a natureza não simultânea das fases como uma realidade na 
aplicação de processos de software, e também defendem que o processo de software é muito 
mais interativo e cíclico do que a ideia de fases simples pode sugerir. 
 
Dimensões 
O processo de desenvolvimento de software definido pela ISO 15504 é divido em três 
categorias principais de processos: 
 
 
Processos Primários 
Processo de Aquisição: 
O objetivo é obter um produto ou serviço que satisfaça o cliente, passando por quatro fases: 
preparação, seleção do fornecedor, monitoração do fornecedor e aceitação. 
 
Processo de Fornecimento: 
É o processo de fornecer ao cliente um software que satisfaça suas necessidades, incluindo a 
preparação do contrato, entrega do produto e a instalação. 
 
Processo de levantamento de Requisitos: 
Tem como objetivo capturar e processar todos os requisitos do cliente. É utilizado durante 
todas as fases de desenvolvimento para o processo de revisão do plano de desenvolvimento e 
comunicação com o cliente para possíveis alterações de requisitos. 
 
Processo de Operação: 
Tem como função fazer o produto de software operar no ambiente para o qual foi 
desenvolvido e oferecer suporte ao usuário. 
 
Categoria de Engenharia de Software: 
Vai da parte de construção do software, que é composta da análise de requisitos, construção, 
integração e testes à manutenção do software que tem o objetivo de alterar modificações, 
migrações e desativação do software, de acordo com os desejos do cliente. 
 
 
 
 
Processos Organizacionais 
Processos de Gestão: 
- Alinhamento aos objetivos estratégicos da organização; 
- Estabelecimento de práticas de gestão em geral, e especialmente gestão de projeto; 
- Gestão da qualidade; 
- Gestão de riscos; 
- Medição; 
 
Processos de Melhoria de Processos: 
- Definição de processos; 
- Avaliação de processos: Avaliar como os processos estão contribuindo para a organização 
alcançar seus objetivos; 
- Melhoria de processos: Comprometimento, priorização, gestão das ações de melhoria; 
 
Processos de Recursos e Infraestrutura: 
- Gestão de RH; 
- Treinamento; 
- Gestão do conhecimento; 
- Infraestrutura: Recursos materiais, ambiente de trabalho, ferramentas; 
 
Processos de Reuso: 
- Gestão de Ativos (Componentes/módulos/informações) suscetíveis de reuso; 
- Gestão do programa de Reuso: Estratégia, definição de domínios, procedimentos, melhoria; 
- Engenharia de Domínio: A partir da definição de um ou mais domínios, de aplicação, 
Desenvolvimento e manutenção de modelos, arquiteturas e 
componentes/módulos/informações relativos ao domínio; 
 
Processos de Apoio 
Garantia de Qualidade: 
- Os produtos e atividades de um processo ou projeto devem estar de acordo com os 
requisitos especificados, planos e regras. 
 
Verificação: 
- Cada produto ou serviço resultado de um processo obedecem às especificações de entrada 
do processo. 
 
Validação: 
- Os requisitos para o uso desejado de cada produto ou serviço resultado de um processo deve 
ser atendido. 
 
Revisão Conjunta: 
- O cliente pode ter visibilidade completa do andamento do desenvolvimento quando 
comparada ao estabelecido no contrato. 
 
Auditoria: 
- Os produtos identificados devem estar em conformidade com as atividades com planos, 
requisitos e com o contrato. 
- Documentação: 
- Documentos que registrem informações produzidas por um outro processo ou atividade 
devem ser mantidos. 
 
Gestão de Configuração: 
- Integridade de todos os produtos de algum processo ou do projeto. 
 
 Solução de Problemas: 
- Todos os problemas encontrados devem ser analisados, resolvidos e que tendências sejam 
observadas visando o planejamento de ações preventivas. 
 
Avaliação de Produto: 
- Garantir a devida avaliação do produto de acordo com as diretrizes estabelecidas do 
contrato. 
 
Gestão de Mudança: 
- Garantir que todos os pedidos de mudança serão gerenciados, acompanhados e controlados. 
 
 
Usuário 
 
Um usuário (pt-BR) ou utilizador (pt) é um agente, tanto um agente humano (usuário final) 
como um agente de software, que usa um computador ou serviço de rede. Os usuários de 
sistemas computacionais e produtos de software geralmente não possuem o conhecimento 
técnico necessário para entender completamente como eles funcionam. Os usuários 
avançados usam recursos avançados dos programas, embora não tenham, necessariamente, 
habilidades de programação de computadores e administração de sistemas. 
Um usuário, muitas vezes tem uma conta de usuário e é identificado por um nome de usuário. 
Outros termos para nome de usuário incluem o nome de login, nome de 
tela (screenname), apelido (nick) ou identificador, que é derivado do termo do Serviço Rádio 
do Cidadão. 
 
Alguns produtos de software fornecem serviços para outros sistemas e não possuem usuários 
finais diretos. 
Os usuários também são amplamente caracterizados como a classe de pessoas que usam 
um sistema sem conhecimento técnico completo necessário para compreender totalmente o 
sistema. Em contextos relacionados a hackers, tais usuários também estão divididos 
em lusers e usuários avançados. 
Em projetos em que o ator do sistema é um outro sistema ou um agente de software, é muito 
possível que não haja usuário final para o sistema. Neste caso, os usuários finais para o sistema 
seriam usuários finais indiretos. 
 
Desenvolvimento 
 
Um processo de desenvolvimento de software pode ser visto como um conjunto de atividades 
organizadas, usadas para definir, desenvolver, testar e manter um software. A seguir, alguns 
objetivos do processo de desenvolvimento: 
 
• Definição das atividades a serem executadas; 
• Quando determinada atividade deve ser executada; 
• Pessoa ou grupo a executar tais atividades; 
• Padronização no processo de desenvolvimento. 
 
 
Desenvolvimento de 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. 
 
Levantamento de Requisitos 
Esta atividade tem como objetivo, compreender o problema, dando aos desenvolvedores e 
usuários, a mesma visão do que deve ser construído para resolução do problema. 
Desenvolvedores e clientes, em conjunto, buscam levantar e priorizar as necessidades dos 
futuros usuários do software (necessidades essas denominadas como requisitos). 
 
O Levantamento de Requisitos é a etapa mais importante, no que diz respeito ao retorno de 
investimentos no projeto. Vários projetos são abandonados pelo baixo levantamento de 
requisitos, ou seja, membros da equipe não disponibilizaram tempo suficiente para essa fase 
do projeto, em compreender as necessidades dos clientes em relação ao sistema a ser 
desenvolvido. 
 
E como um sistema de informações geralmente é utilizado para automatizar processos de 
negócio em uma organização, esses processos da organização devem ser bem compreendidos 
para que o restante das atividades do processo de desenvolvimento flua de acordo comas 
reais necessidades do cliente. 
 
Análise de Requisitos 
Esta etapa, também chamada de especificação de requisitos, é onde os desenvolvedores 
fazem um estudo detalhado dos dados levantados na atividade anterior. De onde são 
construídos modelos a fim de representar o sistema de software a ser desenvolvido. 
 
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. 
 
O que acontece com frequência, é quando as equipes de desenvolvimento partem para a 
solução do problema do software, sem antes ter definido completamente o problema em 
questão. Nesta fase deve-se então realizar a validação e verificação dos modelos construídos, 
antes de partir para solução do problema. 
 
• Validação: tem por objetivo, assegurar que o sistema de software está atendendo as 
reais necessidades do cliente; 
• Verificação: verifica se os modelos construídos na análise estão em conformidade com 
os requisitos do cliente. 
 
Projeto 
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. 
 
No projeto é gerada uma descrição computacional, mencionando o que o software deve fazer, 
e deve ser coerente com a descrição realizada na fase de análise de requisitos. 
 
O projeto possui duas atividades básicas: projeto da arquitetura (ou projeto de alto nível), e 
projeto detalhado (ou projeto de baixo nível). 
 
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. 
 
Já no projeto detalhado, são modeladas as relações de cada módulo com o objetivo de realizar 
as funcionalidades do módulo. Além de desenvolver o projeto de interface com o usuário e o 
projeto de banco de dados. 
 
Implementação 
Nessa etapa, o sistema é codificado a partir da descrição computacional da fase de projeto em 
uma outra linguagem, onde se torna possível a compilação e geração do código-executável 
para o desenvolvimento software. 
 
Em um processo de desenvolvimento orientado a objetos, a implementação se dá, definindo 
as classes de objetos do sistema em questão, fazendo uso de linguagens de programação 
como, por exemplo: Delphi (Object Pascal), C++, Java, etc. Pode-se também utilizar na 
implementação ferramentas de software e bibliotecas de classes preexistentes para agilizar a 
atividade, como também o uso de ferramentas CASE, que dinamizam o processo de 
desenvolvimento, nas várias atividades, onde inclui-se geração de código-fonte, 
documentação, etc. 
 
Testes 
Diversas atividades de testes são executadas a fim de se validar o produto de software, 
testando cada funcionalidade de cada módulo, buscando, levando em consideração a 
especificação feita na fase de projeto. Onde o principal resultado é o relatório de testes, que 
contém as informações relevantes sobre erros encontrados no sistema, e seu comportamento 
em vários aspectos. Ao final dessa atividade, os diversos módulos do sistema são integrados, 
resultando no produto de software. 
 
Implantação 
Por fim a implantação compreende a instalação do software no ambiente do usuário. O que 
inclui os manuais do sistema, importação dos dados para o novo sistema e treinamento dos 
usuários para o uso correto e adequado do sistema. Em alguns casos quando da existência de 
um software anterior, também é realizada a migração de dados anteriores desse software. 
 
Comercialização 
 
Os contratos são instrumentos jurídicos que existem há mais de um século. Seu conceito e sua 
função social estão intimamente ligados à definição econômica que lhe é dada: instrumento 
que operacionaliza a circulação de riquezas e acomodação de diversos interesses. É 
importante destacar que o contrato não é só o documento escrito que formaliza obrigações, 
mas é, sobretudo, um acordo de vontades dirigida a determinado fim. O Direito, portanto, 
atenta-se constantemente às mudanças sociais e econômicas que demandam, cada dia mais, 
um novo desafio aos instrumentos contratuais. 
 
Nessa lógica, atravessa-se momento de ampla evolução tecnológica, iniciada pela revolução 
digital, na qual a tecnologia se apresenta progressivamente presente em nossas relações 
sociais e nas atividades econômicas. O quadro contemporâneo é de constante transformação, 
de modo que requer do ordenamento jurídico atual uma rápida adaptação para atender suas 
necessidades. 
 
Atualmente, há previsto em nossa legislação diferentes espécies de contratos, que se agrupam 
em categorias distintas consoante às suas particularidades. É importante destacar que as 
espécies variam de acordo com o negócio jurídico a ser realizado, e apesar 
do Código Civil prever diversas categorias, a legislação e normatização jurídicas estão em 
processo de adaptação e recepção acerca das questões de tecnologia, exigindo maior 
preocupação daqueles que atuam nesse mercado. 
 
Como exemplo, a transferência de tecnologia, ou Contrato de Fornecimento de Tecnologia, 
tem como principal objeto a técnica e conhecimento exclusivo utilizado para produção e/ou 
 
comercialização de bens. A transferência desse conhecimento não implica no direito de 
titularidade do bem, ou seja, o detentor da tecnologia continua sendo o mesmo. Para cada 
tipo haverá um contrato de licenciamento ou de cessão, a depender do propósito da 
transferência. Qualquer que seja a modalidade, deverá haver registro no Instituto Nacional da 
Propriedade Industrial (INPI). 
 
Para a transferência de propriedade de bens tecnológicos, a modalidade utilizada é a cessão, 
na qual o detentor da tecnologia transfere a titularidade do direito de propriedade intelectual, 
ou seja, não terá mais a tecnologia e nem os direitos que dela decorre m, como por exemplo, 
de licenciamento de uso, ou de outra qualquer transferência. Entretanto, dentre as formas de 
negociação de tecnologia, a comercialização de software destaca -se no mercado tecnológico e 
também no ordenamento jurídico. 
 
Os softwares são programas que comandam o funcionamento de um computador. Há algumas 
décadas os programas somente eram comercializados por fabricantes de hardwares 
(equipamentos) e vinham pré-instalados, ou seja, o consumidor o adquiria na compra de um 
equipamento. Ocorre que, com a evolução da tecnologia, os softwares passaram a ser 
comercializados em separado, diretamente por seus desenvolvedores, surgindo, dessa forma, 
um novo modelo de contratação. O mercado de software tem operado, sobretudo, através do 
Contrato de Licença de Uso, conforme definiu a lei 9.609, de 19 de fevereiro de 1998. Esse 
modelo consiste em uma modalidade de negócio jurídico através do qual alguém, denominado 
licenciante, concede ao licenciado o direito de exploração econômica e/ou utilização do 
programa de computador. 
 
No licenciamento ocorre a transferência do direito de uso, fruição, e gozo daquela tecnologia, 
por isso, tendo em vista a natureza e a função dos softwares, essa é a modalidade mais 
comum para quem comercializa tais tecnologias. Nessa modalidade, o detentor da tecnologia 
do software, desenvolvedor ou licenciante, estabelece junto ao licenciado uma forma de uso, 
bem como pode ou não determinar o tempo e algumas formas de utilização.É natural perceber que, para aqueles interessados em negociar a tecnologia de software a fim 
de obter interessados na utilização de seu programa, o contrato de licenciamento de uso 
permite exatamente o ajuste de (i) quantidade de usuários do licenciado, (ii) valor por unidade 
ou por conexão, (iii) inclusão ou não de manutenção evolutiva, (iii) atualizações do sistema e 
formas de cobrança, (iv) sistema de manutenção, e todas as matérias afetas ao uso do 
software, que fazem do contrato não apenas uma formalidade para concretizar o uso e os 
direitos do licenciado ou do licenciador, mas que abrangem todas as questões, inclusive 
técnicas, que devem vigorar a tempo e a modo na duração do contrato. 
 
Desse modo, o contrato de licenciamento de software vai além de uma simples burocratização 
para licenciado e licenciante, mas um instrumento que permite delimitar os limites, regras, 
valores, formas de uso, e, inclusive, pode abrir espaço para novas negociações, como no caso 
de manutenção evolutiva, por exemplo. Apesar disso, é comum que alguns contratos deixem à 
parte termo de confidencialidade quando se trata de questões sigilosas e tecnologia da 
informação, mas como um apenso ao contrato principal com todas as informações 
necessárias. Portanto, a utilização do instrumento contratual proporciona segurança ao 
desenvolvedor de software, evitando, dessa forma, 
 
vulnerabilidade de dados, utilização indevida e a própria comercialização ilegal da tecnologia. 
 
Fatores de Qualidade 
 
Ao final do projeto de desenvolvimento, além de conter o mínimo possível de erros, o 
software deve apresentar características como: agilidade de funcionamento, facilidade de 
manuseio, atender as expectativas do cliente e agregar valor à empresa. 
Durante os testes, diversos padrões do software devem ser analisados. Esse processo 
permitirá que a ferramenta tenha um diferencial positivo em relação a outras que produzem o 
mesmo serviço no mercado, mas não funcionam da maneira adequada. 
Vale destacar que a qualidade do software está sempre sendo aprimorada, haja vista que as 
tecnologias evoluem de acordo com o tempo. 
É necessário o entendimento de que é um trabalho contínuo, constante e que exige alto 
investimento. Mesmo após o software ter se transformado em produto final, novos testes e 
aprimoramentos devem ser realizados, geralmente pela criação de novas versões ou até novos 
softwares para atender a demanda. 
Mas, na realidade, o que influência na qualidade final do software desenvolvido? O que faz 
com que a ferramenta funcione da maneira que foi projetada ou não tenha o sucesso que foi 
pretendido? O que deve ser utilizado para aperfeiçoar o seu desenvolvimento? 
Alguns pontos são imprescindíveis para que o software funcione da forma correta. Os fatores 
que influenciam na qualidade do software e contribuem para o sucesso do produto final são: 
 
 
Etapa de desenvolvimento 
A etapa de desenvolvimento é um dos fatores que mais contribui para o desempenho final do 
software. É necessário focar não somente na parte prática e técnica, mas também em tudo 
que colaborou para que a ferramenta chegasse naquele momento de ação. 
Tudo que foi planejado no início dessa etapa deve ser levado em consideração, como: público-
alvo de destino do software, a realização das pesquisas, análise dos dados obtidos, e por fim, 
mas não menos importante, a avaliação do mercado em que se está introduzido. É de 
imensurável importância ter consciência da demanda que existe em busca do produto. 
 
Equipe de profissionais 
É claro que ter acesso a uma tecnologia de ponta, assim como ter um projeto impecável do 
produto que se planeja desenvolver é importante. 
No entanto, não adianta muita coisa ter a melhor tecnologia e o produto mais bem produzido 
se o seu projeto não tiver a melhor equipe de profissionais para executar a aplicação. 
Um dos fatores mais importantes que influenciam na qualidade do software é a captação de 
recursos humanos. Deve-se sempre trabalhar com os melhores funcionários dentro da 
possibilidade e treiná-los para que estejam sempre em constante evolução. 
 
Uma equipe de sucesso nem sempre é formada de início, mas é preciso que haja um 
supervisor capacitado para identificar as falhas e acertos do grupo de profissionais que 
trabalham no projeto. 
É importante saber identificar os colaboradores certos, mas, também, capacitá-los para que 
estejam sempre aptos a acrescentar novidades. 
 
Influenciadores gerais 
Os influenciadores gerais podem estar relacionados a diversos fatores, como a assistência 
técnica, escolha das ferramentas e recursos disponibilizados para o desenvolvimento do 
software. 
Possuir um software de qualidade comprovada exige muito trabalho, estrutura, tecnologia e 
uma equipe adequada. É inevitável que esses e outros fatores estejam sempre em harmonia 
para que o projeto tenha sucesso ao fim do desenvolvimento do produto. 
 
Softwares com interação humana 
Vale lembrar que os softwares com interação humana, ou seja, aplicativos que não servem 
exclusivamente para cálculos matemáticos, geralmente passam por aprimoramentos após o 
seu lançamento. 
Esse fato se dá não necessariamente por conta de falhas no sistema, mas, sim por causa da 
percepção que os usuários têm do aplicativo. 
Inclusive, há uma máxima conhecida, adaptada do princípio da incerteza da física das 
subpartículas que diz: “o usuário só sabe o que ele precisa a partir do momento em que ele 
obteve o que pediu”.

Mais conteúdos dessa disciplina