Escolar Documentos
Profissional Documentos
Cultura Documentos
SOFTWARE
Lucia Tavares
E-book 1
Neste E-Book:
INTRODUÇÃO����������������������������������������������������������� 3
QUALIDADE DE SOFTWARE:
HISTORICIDADE E FUNDAMENTOS������������������ 4
Engenharia de Software: Cultura e Ética���������������������������������4
Engenharia de Software���������������������������������������������������������11
Modelos e Características de Qualidade������������������������������22
Melhoria da Qualidade de Software��������������������������������������36
Segurança de Software����������������������������������������������������������45
CONSIDERAÇÕES FINAIS������������������������������������51
SÍNTESE�������������������������������������������������������������������� 52
2
INTRODUÇÃO
Falar de qualidade de software não se resume a fa-
lar de sistemas, plataformas e desenvolvimento. É
preciso entender a qualidade no seu sentido mais
básico. Por isso, neste módulo estudaremos os con-
ceitos de qualidade e seu diferencial no mercado em
todos os seguimentos, inclusive no que se refere ao
desenvolvimento de softwares.
3
QUALIDADE DE SOFTWARE:
HISTORICIDADE E
FUNDAMENTOS
Engenharia de Software:
Cultura e Ética
4
parceiros). Isso garante a qualidade e a continuidade
do software.
5
cresceu, e agora cada um tem sua função e partici-
pação como especialista em um projeto de software.
Nisso, surgiu o conceito de “trabalho em equipe para
desenvolver softwares”.
6
Ao trabalhar com a Engenharia de Software, esquece-
-se do desenvolvimento solitário, da bagunça e dos
ambientes sem planejamento e organização. A ética
na tecnologia não é uma ficção tampouco um campo
não explicado da filosofia (GOTTERBARN, 1999).
7
Assim, o “[...] código de princípios resume o que se
quer da engenharia de software numa escala mui-
to alta de abstração e aspirações” (GOTTERBARN;
MILLER; ROGERSON, 1999). Isso porque, na última
versão, tudo fica no ar para se pensar. Já na versão
completa, temos um verdadeiro manual com deta-
lhes, até do modo de agirmos como profissionais. Se
os detalhes nos cansam, a falta deles nos dão peças
para pensar. Por isso, é interessante ler o código de
conduta completo e o resumido.
8
3. Produto: a Engenharia de Software garante que
tudo que for produzido a partir das premissas propos-
tas, alterações e melhorias atendam aos melhores
padrões possíveis, sejam profissionais, de estrutura
e prazo.
9
SAIBA MAIS
Saiba mais sobre os fundamentos, conceitos e
padrões básicos da Engenharia de Softwares, con-
sultando Engenharia de Software: fundamentos,
métodos e padrões, de Paula Filho (2009).
10
Engenharia de Software
A primeira vez que se usou o termo “engenharia de
software” foi em 1960, devido ao boom de jogos ele-
trônicos e sistemas criados, visto que tudo na área
da tecnologia era novidade. Contudo, foi em 1968
que se batizou oficialmente, pelo comitê científico
da Otan (North Atlantic Treaty Organization).
11
● Processos: são o funcionamento de todas as par-
tes, ou seja, são o elo entre os métodos e as fer-
ramentas, que possibilitam o desenvolvimento de
um software embasado em lógica, racionalidade e
usabilidade. A partir desses processos, monta-se
toda a base para a Engenharia de Software.
● Métodos: trata-se do caminho, isto é, como fazer.
São as regras, as diretrizes, os testes, as premissas
para construir um bom software.
● Ferramentas: são o apoio, o suporte aos métodos
e estabelecem a união entre hardware, software e
banco de dados.
12
Cabe aos especialistas da equipe propor a metodo-
logia científica a ser aplicada em conformidade com
os modelos abstratos, a fim de especificar, projetar,
implementar e manter funcionando os softwares
desenvolvidos, com garantia de uso e de qualidade.
13
lado, de que maneira a Engenharia de Software ofere-
ce apoio a esse processo de formação de atividades.
Como
Ferramentas
automatizar?
Como
Métodogias
aplicar?
Como
Métodos e técnicas
fazer?
O que
Princípios
fazer?
14
Por exemplo, podemos citar o levantamento de re-
quisitos e a análise dos processos de um software,
pois a atividade de análise implica o rigor, a abstra-
ção e a aplicação e separação de conceitos para a
montagem de modelos que vão tratar várias faces
do sistema.
15
● Modularidade: é a divisão de sistemas e, para sua
melhor visualização, podemos pensar em um sis-
tema complexo que é tratado em partes menores.
Assim, cada parte é tradada mais simplesmente de
acordo com suas características dentro do levan-
tamento do projeto (Coesão e Acoplamento). Por
isso, chamamos partes dos sistemas de software de
módulo. Trabalhar com módulos implica o trabalho
com a composição e decomposição: na composição,
juntamos os módulos para deixar o sistema com-
pleto; na decomposição, dividimos os problemas
em subproblemas para tratá-los mais eficazmente.
A modularidade funciona com foco no entendimen-
to de um problema complexo, dividindo em partes
menores como uma estratégia de tratamento. Com
isso, facilitam-se tanto as melhorias quanto a ma-
nutenção do sistema.
● Separação de conceitos: separar os conceitos pos-
sibilita a chance de trabalhar com formas particulares
e diferentes de um mesmo problema. Isso faz com
que a situação seja entendida de uma maneira mais
fácil em todos seus aspectos. Pontos que em con-
junto não seriam vistos, são enxergados e tratados
em um processo particular de abstração.
● Generalidade/Especialidade: refere-se às questões
de soluções genéricas e específicas. Visto que ge-
neralidade trata do todo, impacta nos custos, pois
são necessários mais recursos e mais tempo de
desenvolvimento, o que impacta diretamente na parte
financeira. As soluções específicas são tratadas por
módulos, portanto, recorrem aos mesmos recursos e
16
a um tempo de desenvolvimento menor. Em processo
de desenvolvimento de sistemas, deve-se analisar
muito cuidadosamente para não ter impacto nem
na entrega nem tampouco no custo do projeto de
software.
● Rigor e formalidade: todo processo de criação
surge instável e impreciso, pois para uma ideia ter
valor, ela tem que ter formato, e com o processo de
criação de software não é diferente. Uma ideia chega
abstrata, e o rigor dá forma a essa ideia, tornando-
-a um projeto. A formalidade, por sua vez, trabalha
essa forma até que ela seja entendida por todos e o
processo seja factível de ser implantado, dirigido e
avaliado por regras e leis matemáticas.
● Incrementabilidade: apesar de ser um pouco difícil,
essa palavra determina como vamos fazer acontecer.
Ela prepara o caminho para que todo o processo de
desenvolvimento seja acompanhado passo a passo.
Funciona como um manual para chegar ao objetivo
desejado dentro do desenvolvimento. É muito útil
quando não temos ainda todos os requisitos prontos,
antes do início do desenvolvimento da aplicação.
● Antecipação de mudanças: diz respeito a criar e
desenvolver um software que seja capaz de uma
possível evolução e melhorias no futuro, de forma a
tornar sua manutenção e perpetuação mais fáceis e
a um custo baixo. Depois de pronto e em uso, todo o
sistema pode ser incrementado, melhorado a partir
do feedback dos usuários.
17
Métodos e metodologia em Engenharia
de Software
18
● Metodologia Estruturada.
● Metodologia Orientada a Objetos.
● Metodologias de Desenvolvimento Ágil.
19
○ Evolucional ou prototipação: no projeto, são mon-
tados protótipos das fases do resultado a partir do
planejamento e da especificação.
○ V-Model: é mais bem organizado e tem compara-
tivos com modelos mais modernos.
○ Espiral: são demonstrações dos ciclos completos
de especificação através da evolução espiral do pro-
jeto e desenvolvimento.
○ Componentizado: são as melhorias e o uso do
módulo para o desenvolvimento de outros módulos
a partir de componentes já existentes.
produto de efeitos do
processo software produto de
software
influencia
depende de
20
Projetos em Engenharia de Software
A ideia de projeto carrega, mesmo que implicitamen-
te, o desenvolvimento de software. Vamos, então,
entender o conceito de projeto.
A gerência/gestão de projetos
21
to e intangível, pois toda a execução pode mudar o
escopo ao longo do projeto. Cabe, então, ao gerente
de projeto trabalhar dentro desse cenário de maneira
que o produto alcance um bom resultado, ou seja,
dentro do acordado, respeitando limitações financeira
e o prazos.
Modelos e Características de
Qualidade
Normas, modelos e métodos da Engenharia de
Software somados à qualidade têm como objetivo
maior o sucesso do software criado. Para isso, du-
rante o processo de criação, levantamento de escopo
e montagem do projeto, a qualidade precisa atender
tanto ao processo quanto ao produto.
22
dos durante o desenvolvimento de um projeto de
software, o que torna possível criar um sistema de
qualidade (GUERRA; COLOMBO, 2009).
23
a qualidade. Observe, na Figura 3, que as normas
convergem nessa estrutura:
Composta de Gera
Características de Função de
qualidade medição
O que é qualidade?
24
Em linhas gerais, no mundo empresarial, pode-se
definir qualidade como um conjunto de atributos cuja
finalidade é o atendimento das necessidades dos
clientes e ao padrão de produtos e serviços dispo-
nibilizados por uma empresa.
25
Linha do tempo - Evolução de qualidade
Sistema de gestão de
anos 90
qualidade
Garantia de
anos 80
qualidade
Controle de
qualidade anos 60
Inspeção anos 30
26
Guerra Mundial (1939-1945), expandiram-se os con-
ceitos de qualidade e prazos. Na década de 1960, o
Japão entra na guerra pela qualidade com o modelo
5S, evoluindo para o controle de qualidade com os
conceitos:
27
O Controle Total da Qualidade (CTQ) foi trazido para
o Brasil pelo engenheiro Vicente Falconi Campo. O
conceito do CTQ é formado pelos seguintes itens:
28
rotinas de processos realizados. A partir desse ponto,
como se pode conferir em um mapa, promovem-se
melhorias dentro das normas ditadas pelos critérios
de qualidade.
● Referente ao produto.
● Referente ao processo de desenvolvimento.
● Referente ao nível de maturidade.
29
trazendo facilidade e economia ao dia a dia, promo-
vendo o sucesso. Tudo isso com a garantia de que
os produtos consumidos foram submetidos a um
controle de qualidade, o que nos dá segurança de
ter algo realmente bom nas mãos.
30
momento, há um sistema de gestão de qualidade,
que é a série de normas da ISO 9000 (de 9000 a
9004), as quais têm orientado desde o atendimento
até a produção final da empresa, implementando um
novo conceito de qualidade total.
Qualidade
interna
e externa
• Maturidade • Adaptabilidade
• Adequação • Inteligibilidade • Comportamento em • Analisabilidade
• Tolerância e falhas • Capacidade para ser
• Acurácia • Apreensibilidade relação ao tempo • Modificabilidade
• Recuperabilidade instalado
• Interoperabilidade • Operacionabilidade • Utilização de • Estabilidade
• Conformidade • Coexistência
• Segurança de acesso • Atividade recursos • Testabilidade
• Capacidade para
• Conformidade • Conformidade • Conformidade • Conformidade
substituir
• Conformidade
31
Seguindo a lógica de conceito quanto às normas
ISO, temos:
• Confidencalidade • Modularidade
• Maturidade • Integridade • Recusabilidade
• Disponibilidade • Não recuperação • Analisibilidade • Adaptabilidade
• Tolerancia a Falhas • Accountability • Modificabilidade • Instabilidade
• Recuperabilidade • Autenticidade • Testabilidade • Substituibilidade
Qualidade de produto de
sistema e software
32
FIQUE ATENTO
O que significa IEC?
IEC é um acrônimo de International Electrotechnical
Commission. Trata-se de uma organização mundial
que prepara e publica Normas Internacionais em
parceria com a ISO. Assim, comprova a qualidade
para as áreas de tecnologia, elétrica, eletrônica e cria
normas e certificados para áreas como eletrônica, re-
des, eletromagnética, performance, segurança e meio
ambiente. As Normas da IEC atestam e facilitam o
comércio internacional, tendo como base as normas
que servem de referência para o funcionamento do
acordo sobre Barreiras Técnicas ao Comércio da
Organização Mundial do Comércio (OMC).
33
ambos caminham com a qualidade esperada, prazos
e recursos acordados.
FIQUE ATENTO
Muitas são as normas e certificações na área de
qualidade de software. Para aprofundar seu en-
34
tendimento em normas ISO, acesse o site: http://
www.abnt.org.br.
Você pode entender mais do modelo CMMI se ins-
crevendo em: https://cmmiinstitute.com/. Também
pode acessar o modelo brasileiro na integra em:
http://softex.br/mpsbr/modelos/#mpssw
35
adicionaram o 9 aos celulares, sem a aplicação de
qualidade, seria uma grande catástrofe.
Melhoria da Qualidade de
Software
Dentro de todo o processo de qualidade, temos o
de melhoria contínua, desde a fase de testes até a
implantação. Serve tanto para pequenos projetos
(aplicativo de smartphone) quanto para projetos de
grandes empresas. Nesse processo, o usuário final
tem um papel primordial, porque parte da premissa
que todos os processos são avaliados, o usuário é a
melhor pessoa para nos falar se o software entregue
é condizente com o que foi pedido, planejado e feito.
36
que é uma falha relevante. Isso entra em um padrão
de não conformidade, dentro dos padrões de quali-
dade, e que pode ser melhorada. As ações corretivas
podem acontecer depois da implantação também.
● Ações preventivas: são ações levantadas antes
que o problema aconteça, antes de gerar uma não
conformidade. Em geral, durante o levantamento de
riscos, são levantados os riscos, as ações preventivas
que eliminam ou diminuem o impacto na implantação
do software.
37
Otimização nos processos de criação de
software
38
de desenvolvimento. Esses ciclos de entregas par-
ciais dão ao cliente o valor agregado de resultado,
antes mesmo de o projeto terminar.
39
valor ao que foi produzido e entregue a ele. O trabalho
aqui é conjunto e agregado.
40
● Uso da comunicação contínua e pessoal sem
muitas barreiras para a equipe e para os clientes,
entrosamento das partes. Aqui chamamos a aten-
ção especial para reuniões presenciais sempre que
possível, pois são as mais eficientes para o sucesso
do projeto.
● Um projeto entregue com sucesso é um projeto
entregue no prazo e funcionando. No caso da tecno-
logia, o produto entregue consiste em entregar um
software funcionando.
● O ritmo de trabalho dos profissionais envolvidos
no processo em que usamos a metodologia ágil tem
que manter o ritmo de trabalho independente de mu-
danças, porque os processos de fluxos ágeis tendem
a estimular uma entrega harmoniosa e sustentável.
● Ater-se sempre à excelência de design e técnica,
melhora e atinge resultados mais satisfatórios do
que os esperados, além da rapidez das entregas.
● Cortar os esforços que não agregam valor ao pro-
duto, porque a otimização, a desburocratização e a
simplicidade são primordiais.
● Equipes coesas e autogeridas, bons profissionais
que conseguem deslanchar tanto o desenvolvimento
quanto a comunicação com o cliente sem burocra-
cia, capazes de resolver problemas sem colocar o
projeto em risco.
● Intervalos regulares de planejamento, o time de
colaboradores do projeto em processo de melhoria
contínua busca otimizar o seu comportamento e
prazos ao longo do projeto.
41
Com o aumento da satisfação do público com entre-
gas rápidas e comunicação constante entre a equipe
de desenvolvimento do projeto e os clientes, a redu-
ção de custos é clara, porque não há necessidade
de um time enorme, mas sim de um time eficiente.
42
● Contato com o cliente: é o momento de interação
com o cliente e com o qual se expressa sua opinião,
ou seja, se é satisfatória ou não.
● Gargalos no desenvolvimento: são os pontos crí-
ticos, com grau de risco médio ou alto que afetam o
projeto de software e têm impacto direto no tempo
do projeto, provocando atrasos, acúmulo de tarefas
e, caso não sejam resolvidos a tempo, tornam o de-
senvolvimento de software um fracasso.
● Valor agregado a entregas e atividades: as entre-
gas e atividades de um projeto de desenvolvimento
de software têm que agregar valor ao negócio do
cliente, por isso devem caminhar para melhorar ao
máximo seu valor para o negócio, pois são os pro-
cessos que agregam vantagens aos clientes.
● Integração de sistemas: pode-se ter a opção dos
softwares com integração com outros sistemas,
facilitando as melhorias e com um plano de conti-
nuidade, pois há condições da troca de informações
e economia com a compra de outros softwares.
43
processos assim que podem ser melhorados. Como
trabalha em cima dos processos da empresa e com
transparência, promove uma gestão e controle ad-
ministrativo eficazes, com mais automação e ganho
de produtividade.
● Ciclo PDCA: é uma poderosa ferramenta usada
pelas empresas devido à sua simplicidade e eficácia,
pois em quatro passos é possível fazer um planeja-
mento estratégico, estudar os processos, melhorá-
-los e promover um acompanhamento contínuo, pois
suas quatro fases são: Planejar, Fazer, Avaliar e Agir.
É extremamente importante nos ciclos de melhoria
contínua (Figura 8):
contínua
Estudar Executar
Ajustar Planejar
Padrão
Estudar Executar
Melhoria
de qualidade
Consolidação
Padrão através de
padronização
Tempo
44
○ CMMI-DEV: criada para desenvolvimento de
softwares.
○ CMMI-SVC: criada para o fornecimento de serviços.
○ CMMI-ACQ: criada para a aquisição de produtos
e serviços.
Segurança de Software
Atualmente, a informação é uma arma estratégica
em qualquer empresa e um triunfo ou fracasso de
acordo com a gestão. A segurança da informação
tem função primordial e faz parte do negócio, não
do suporte das empresas.
45
O que é vulnerabilidade?
A vulnerabilidade é definida como uma falha que
pode ser explorada e que pode terminar como uma
inacessível. As vulnerabilidades dos softwares não
estão restritas ao desenvolvimento, mas a todo o
ambiente relacionado, como estrutura, dados e am-
biente. Dentre milhares de formas de ataques às vul-
nerabilidades, enumeramos oito para nosso melhor
entendimento:
1. Controle de acesso físico e remoto a áreas restri-
tas da empresa: controle de acesso tem que passar
por um crivo da segurança da informação. Muitas
falhas acontecem por acesso indevido.
46
5. Investimento em sistemas: atualizações de sis-
temas de acordo com a política da empresa e a le-
gislação vigente.
6. Dispositivos externos: voltamos à política de se-
gurança, HD externo, pen drives etc., têm que ter
local e política dentro da empresa para ser usados,
tudo isso respeitando acesso, hierarquia e proteção
de dados.
7. Softwares de comunicação: Skype, WhatsApp,
Messenger do Facebook, acessos fora da rede, sem
notificação também tem que se enquadrar nas polí-
ticas de segurança da empresa.
8. Alinhamento na comunicação da empresa: uma
política de segurança da informação só funciona
quando é disseminada por toda a empresa.
47
Por outro lado, é preciso que os usuários entendam
quais são os riscos que correm por conta da priva-
cidade dos seus dados. Os princípios que norteiam
a lei são os seguintes:
48
precisa ser correta e autorizada para uso. Dados falsos
levam a fraudes, um cenário que deve ser evitado.
49
● Comunicação: há uma mudança na comunicação
entre empresa e cliente. No que se refere à transpa-
rência, caso a empresa sofra algum crime virtual ou
ataque, ela deve comunicar ao usuário que cedeu os
dados a ela. A empresa tem que comunicar os órgãos
fiscalizadores, informando quais são as medidas
adotadas por parte da empresa.
REFLITA
O que você precisa saber sobre a lei de proteção
de dados?
A lei de proteção de dados visa a diminuir ou aca-
bar com os problemas de segurança. Devido aos
avanços da internet e da tecnologia, muitos da-
dos são manipulados sem o consentimento das
pessoas. A pertinência da lei mostra-se em casos
como o da Netshoes, empresa que vazou dados
pessoais de milhares de clientes e só informou as
vítimas semanas ou meses depois que o incidente
aconteceu. Entenda o caso acessando: https://
introduceti.com.br/blog/seguranca-os-maiores-
-vazamentos-de-dados-em-2018/
Após estudar e discutir esse caso da Netshoes,
você tem ideia o que as empresas fazem com to-
dos os dados que você coloca na internet? Reflita.
50
CONSIDERAÇÕES FINAIS
51
SÍNTESE
QUALIDADE DE
SOFTWARE
HISTÓRIA E FUNDAMENTOS
DA QUALIDADE DE SOFTWARE
Neste módulo, estudamos os conceitos de Engenharia de Software, Qualidade de Software,
Normas e Metodologias e Segurança de Software. Com isso, entendemos como chegamos
às metodologias que praticamos atualmente, bem como o quanto a Engenharia de Software
colaborou para isso.
Para isso, apresentamos e discutimos sobre os seguintes tópicos:
• Engenharia de Software.
• Principais conceitos de Engenharia de Software.
• Projetos em Engenharia de Software.
• Gerência/gestão de projetos.
• O que é qualidade?
• Modelos e normas de qualidade.
• Aplicação da qualidade em softwares.
SEGURANÇA DE SOFTWARE: