Escolar Documentos
Profissional Documentos
Cultura Documentos
ENGENHARIA DE SOFTWARE
Agenda 01
● O software é uma sequência de instruções a serem executadas. É composto
principalmente por funções, bibliotecas, módulos, entre outros elementos.
● A criação de software é uma tarefa extremamente complexa, por isso, é importante
que o desenvolvedor: Entenda o problema; Realize testes; Tenha clareza do código;
Produza uma documentação do software.
● As camadas da Engenharia de Software são: Foco na qualidade; Processo; Métodos;
Ferramentas.
● A engenharia de software utiliza conceitos de engenharia para obter software de
maneira econômica e confiável.
● Os métodos ágeis foram apresentados com o intuito de propiciar entregas de software
mais simples e com maior rapidez, perfeito para projetos com requisitos que podem ser
incertos. Este método reduz os riscos e melhora consideravelmente a capacidade de
gerenciar mudanças.
● Os métodos tradicionais são mais eficazes em projetos com escopo e requisitos bem
definidos.
● No modelo incremental o software é dividido em partes que são entregues de forma
independente, elas partes juntam-se progressivamente ao sistema, para que ao fim,
resultem em um sistema completo.
o As vantagens: redução de custos com manutenção do sistema; melhor controle
de cronograma; maior probabilidade de atendimento dos requisitos do cliente.
o Desvantagens: dificuldade de gerenciamento; necessidade de disposição
constante do cliente para feedbacks; necessidade de compreensão do cliente
sobre entregas incrementais.
Agenda 02
● Ciclo de vida de Software: É a estrutura dos estágios de concepção, projeto, criação
e implementação de um software. Nele contém todos os processos, atividades, e
tarefas previstas no desenvolvimento do software.
● As fases de ciclo de vida de software genérico seguem:
o 1. Levantamento de Necessidades;
o 2. Análise;
o 3. Projeto;
o 4. Implementação.
● Tipos de ciclo de vida de software: Cascata; Modelo em V; Incremental; Evolutivo;
RAD; Prototipagem; Espiral; Modelo de ciclo de vida associado ao RUP.
● Os problemas de um projeto e a influência de ciclo de vida de software:
● Métodos ágeis de desenvolvimento e seu funcionamento dos processos de
software:
o OpenUp: Segue o processo unificado de engenharia de software, porém com
uma cultura aberta e enxuta.
o Extreme Programming [XP]: Neste modelo, os requisitos são expressos
através de cenários e implementados através de tarefas;
o Scrum: No Scrum as iterações são chamadas de Sprints e podem durar de 1 à
4 semanas.
Agenda 03
www.catolicasc.org.br
● Conceitos gerais de manutenção de software: É um procedimento de atualização e
aperfeiçoamento um software já em operação, assim como conserto de defeitos e
imperfeições deste software.
● Problemas que podem ocorrer na manutenção de software: Baixa qualidade na
documentação de software, problemas no desenvolvimento, problemas na definição
dos requisitos, entre outros.
● Tipo de de mudanças de software e seus motivos:
o Manutenção Corretiva: Visa o reparo de defeitos do software.
o Manutenção Adaptativa: Adaptações no software para funcionar em um
ambiente alterado;
o Manutenção Evolutiva: Manutenção que visa melhorar o funcionamento do
sistema;
o Manutenção Preventiva: Tem por objetivo, prevenir falhas no software.
● Conceitos de testes: Teste de software é a investigação do software a fim de fornecer
informações sobre sua qualidade em relação ao contexto em que ele deve operar.
o Testes unitários: Os testes unitários visam a validação de uma pequena parte
do sistema.
o Testes de integração: Os testes integrados visam validar o funcionamento de
várias partes do sistema em conjunto.
o Testes de sistemas: Atestar o funcionamento do software em ambiente de
produção.
o Testes de aceitação: Verificar o atendimento dos requisitos antes da entrega
do software.
o Outros testes: De configuração; de instalação; de integridade; de segurança;
funcional; de volume; de performance; de usabilidade; de caixa branca e caixa
preta; de regressão; de manutenção.
● Ciclo de vida de testes de software: São as tarefas, atividades e tarefas, do
processo de software, que compreende todo o ciclo de vida do software. As etapas
deste processo seguem:
o Levantamento de necessidades: Nesta fase um modelo preliminar dos
requisitos é criado e validado;
o Análise: Os requisitos elencados na fase anterior são refinados e o software é
especificado;
o Projeto: É definida a arquitetura do sistema entre outros detalhes do sistema;
o Implementação: Codificar o sistema na plataforma definida;
o Manutenção e pós entrega: Treinamento e correção de bugs.
● Recursos técnicos que atuam nos testes: Unitários; JUnit; PHPUnit; Flask; Sistema
e aceitação; Sikuli; Selenium WebDriver; Robotium.
Agenda 04
● O indicador é composto por uma ou mais métricas e proporciona uma visão mais
aprofundada do projeto.
● Métricas de software: É definida por medições referentes a um sistema de software,
processo ou sua documentação. São úteis na avaliação de eficácia que o gestor
acompanha.
● A classificação das métricas é composta por:
○ Diretas: São medidas realizadas em termos de atributos observados (exemplo:
custo, esforço, número de linhas de código, ...).
○ Indiretas: São medidas obtidas a partir de outras métricas (exemplo:
complexidade, eficiência, confiabilidade).
● A orientação das métricas pode ser feita em:
○ Métricas orientadas a tamanho: Tamanho dos artefatos gerados no projeto
de software;
www.catolicasc.org.br
○ Métricas orientadas por função: Métricas que visam determinar o tamanho e
a complexidade do software;
○ Métricas orientadas a fatores humanos: Métricas obtidas a partir dos
participantes do projeto;
● Os tipos de métricas são:
○ Métricas de produtividade: Velocidade de desenvolvimento;
○ Métricas de qualidade: Nível de atendimento aos requisitos;
○ Métricas técnicas: As características do técnicas do software como
reusabilidade, modularidade, etc.
● O processo de planejamento de software consiste nos seguintes passos:
○ 1. Estabeleça o escopo do projeto: Define os limite de atuação do projeto.
○ 2. Determine a viabilidade: Verifica a viabilidade técnica e financeira do
projeto;
○ 3. Analise os riscos: E lenca os riscos do projeto, sua probabilidade e ações
para mitigar os riscos;
○ 4. Defina os recursos necessários: Define os recursos, tanto humanos
quanto materiais necessários para o projeto.
○ 5. Estime o custo com a mão de obra: Estima o custo do desenvolvimento,
tanto de mão de obra quanto outros recursos.
○ 6. Desenvolva um cronograma de projetos: Define as atividades, sua
atribuição e prazos;
● Métricas de gerenciamento do projeto: A utilização de métricas reduz
consideravelmente os problemas no gerenciamento de software, ainda que não
existem um conjunto comum de métricas que atende amplamente a todos os tipos de
projetos de software. As métricas mais utilizadas estão relacionadas a requisitos;
Linhas de código (LOCs); pontos de função (FPs); Atividades; Tempo; Risco; Custo.
● Ferramentas para auxílio na coleta de métricas e estimativas de software: Trello;
Jira; MS Project.
● Técnicas de estimativas de tamanho e custo:
○ FPA (Function Points Analysis): Visa quantificar o esforço para o
desenvolvimento do software baseando-se em fatores como complexidade e
tarefas necessárias para a conclusão.
○ UCP (Use Case Points): Visa quantificar o esforço para o desenvolvimento do
software baseando-se em fatores como complexidade e tarefas necessárias
para a conclusão.
○ COCOMO (Constructive Cost Model): Cria estimativas de software
baseando-se em informações de projetos passados.
Agenda 05
● A qualidade de processo de software visa garantir que os processos e artefatos
necessários para a criação do software foram realizados.
● A qualidade de produto de software tem por objetivo, garantir que o software atende
aos requisitos definidos no projeto.
● Processo de garantia da qualidade de software: O processo de qualidade de
software visa criar etapas e atividades no processo para garantir o atendimento
aos atributos de qualidade de software. Para isto, algumas ações são necessárias:
o Aplicar modelos técnicos: aplicar modelos formais para garantir um nível de
maturidade de processo;
o Aplicar padrões e procedimentos formais: Atividades relacionadas ao
planejamento, revisão e testes de software;
o Anotar e manter registros: controle de documentos gerados durante o
processo de software;
www.catolicasc.org.br
● Revisões de softwares: Revisões técnicas com o objetivo de prever possíveis defeitos
de software e antecipar problemas.
● Processo de inspeções de softwares: 1. Planejamento; 2. Visão Geral; 3.
Preparação Individual; 4. Reunião de inspeção; 5. Retrabalho; 6. Acompanhamento.
Durante a inspeção, um Checklist é preenchido avaliando os itens:
o Defeitos de dados: Defeitos ligados à má especificação dos dados;
o Defeitos de controle: Defeitos ligados ao controle do fluxo da aplicação;
o Defeitos de entrada/saída: Defeitos ligados a inserção ou leitura de
informações na aplicação;
o Defeitos de interface: Defeitos na interface do usuário, normalmente ligados a
usabilidade;
o Defeitos de gerenciamento de armazenamento: Defeitos ligados ao
armazenamento e recuperação dos dados;
o Defeitos de gerenciamento de exceções: Defeito no tratamento de exceções
da aplicação.
● Gerenciamento da qualidade de software: Existem três níveis de preocupação para
que qualidade de um produto de software seja alcançada:
o Preocupação no nível organizacional: Se preocupa em estabelecer um
quadro de processos organizacionais e padrões que resultarão em um software
de alta qualidade;
o Preocupação no nível do projeto 1: O gerenciamento envolve processos
quanto à aplicação de processos de qualidade;
o Preocupação no nível do projeto 2: O gerenciamento da qualidade
preocupa-se com o desenvolvimento de um plano de qualidade para o projeto;
o
● Atributos e princípios de qualidade de software:
Segurança Compreensibilidade Portabilidade
Agenda 06
● SWEBOK: É um guia com assuntos essenciais na engenharia de software. Ele é
mantido pelo IEEE e a ACM (Association for Computing Machinery) .
● Os objetivos do SWEBOK são:
o Alinhar critérios e normas adequados para a prática profissional de engenharia
de software e seus conteúdos.
o Esclarecer os limites da área de Engenharia de Software e outras disciplinas.
www.catolicasc.org.br
o Classificar os tópicos das áreas de Engenharia de Software.
o Servir como base para desenvolvimento curricular e para certificação
individual.
o Auxiliar como material de apoio para execução dos projetos.
● As áreas de conhecimento do SWEBOK: São compreendidas 15 áreas de
conhecimento: Requisitos; Design; Construção; Testes; Manutenção; Configuração;
Gerenciamento; Processo; Ferramentas e métodos; Qualidade; Prática profissional de
software; Economia engenharia de software; Fundamentos da computação;
Fundamentos matemáticos; Fundamentos de engenharia.
● Modalidades de certificação do SWEBOK: Possui duas certificações:
o CSDA – Certificação de Associados para o Desenvolvimento de Software –
Certified Software Development Associate;
o CSDP – Certificação Profissional para Desenvolvimento de Software – Certified
Software Development Professional.
Agenda 07
● O processo unificado (PU) é um processo interativo e adaptativo para condução de
projetos de software.
● O PU tem como principal vantagem o fato de ser um processo robusto e bem definido.
Já entre as desvantagens, destaca-se o fato de ser complexo e trabalhoso.
● Relacionar o desenvolvimento iterativo com o incremental:
● O PU é constituído das seguintes fases:
o Concepção/iniciação: Nesta fase são realizadas tarefas de comunicação com
o cliente, planejamento do projeto, avaliação de riscos, estimativa de custos e
prazos, priorização e levantamento de requisitos;
o Elaboração: Efetua-se a análise de forma mais detalhada, revisando os
requisitos do projeto;
o Construção: construção do software visando o atendimento aos requisitos, a
componentização e a reutilização;
o Transição: realização dos testes, treinamentos e entrega do software ao
cliente.
Agenda 08
● As principais metodologias de desenvolvimento de software e suas etapas são:
o No modelo cascata (ou sequencial linear), as fases do projeto são
executadas de maneira sequencial, sendo efetuada apenas uma entrega no
fim do projeto. Suas fases são: Análise; Projeto; Codificação; Testes;
Implementação.
o No desenvolvimento por prototipação, é desenvolvido um protótipo para
esclarecer as principais dúvidas sobre o comportamento e funcionalidade do
software. Podem ser divididos em 3 categorias: Wireframes e rascunhos;
Protótipos visuais; Protótipos interativos.
o Nos métodos ágeis o desenvolvimento é dividido em ciclos, sendo feitas
entregas ao final de cada ciclo.
● Os papéis existentes em uma equipe de metodologia ágil são:
o Product Owner: Potencializa o valor de retorno do produto enviado ao cliente,
e abastece o Development Team com tarefas.
o Development Team: Executam as tarefas. É uma equipe normalmente de três
a cinco pessoas e são responsáveis por entregar uma versão de produto com
as incrementações requisitadas ao final de cada iteração.
o Scrum Master: Responsável por esclarecer todos sobre o processo e remover
obstáculos.
● Os artefatos que uma metodologia ágil possui são:
www.catolicasc.org.br
o Product backlog: requisitos que precisam ser implementados, são mantidos e
priorizados pelo Product Owner;
o Sprint Backlog: l ista de itens que define o objetivo do Sprint;
o Definition of done: documento que explica as definições de pronto para as
user stories.
o Burndown: gráfico que mostra o desenvolvimento do produto.
● As cerimônias em uma metodologia ágil possui são:
o Sprint planning: Planejamento do sprint baseando-se no product backlog;
o Daily scrum (ou daily meeting): Reunião diária para acompanhamento do
projeto;
o Sprint review meeting: Revisão das funcionalidades desenvolvidas no
produto;
o Sprint retrospective: São elencados pontos positivos e negativos da Sprint.
● A história de usuário é uma curta e simples definição das necessidades do cliente,
contada sob a sua ótica.
● O acrônimo INVEST garante a qualidade na criação de uma história do usuário, e
significa:
o I de independent (independente);
o N de negotiable ( negociável);
o V de valuable (de grande valor);
o E de estimable ( estimável);
o S de small (pequena);
o T de testable ( testável).
Agenda 09
● Os modelos de melhoria e maturidade de processos e as normas internacionais
são ferramentas úteis para que as empresas avaliem a qualidade de suas estratégias
internas e aprimorar suas rotinas e processos. Dois modelos são:
o CMMI (integração do modelo de maturidade da capacidade): é um modelo
de qualidade de processo de software utilizado mundialmente.
o MPS-BR: é um modelo de qualidade de software brasileiro, mantido e
coordenado pela SOFTEX, permitindo a empresas com menos recursos,
adotarem um modelo de qualidade.
● O TSP é um modelo de processo de software ideal para equipes autogerenciadas.
www.catolicasc.org.br