Escolar Documentos
Profissional Documentos
Cultura Documentos
Agenda
4 Exercícios de Fixação
Definição
É uma área da Computação destinada a investigar os desafios e propor solu-
ções que permitam desenvolver sistemas de software – principalmente aqueles
mais complexos – de maior tamanho – de forma produtiva e com qualidade.
Engenharia de Requisitos
Engenharia de Requisitos
Engenharia de Requisitos
Definição
Requisitos de software é a área de conhecimento preocupada com a elicita-
ção, especificação, e validação de requisitos de software, bem como o gerenci-
amento dos requisitos durante todo o ciclo de vida do produto de software.
Engenharia de Requisitos
Requisitos
Os requisitos de um software definem o que ele deve fazer e como ele deve
operar. Os requisitos podem ser funcionais ou não funcionais.
Engenharia de Requisitos
Definição
Os requisitos funcionais definem o que um software deve fazer, ou seja, quais
as funcionalidades e/ou serviços ele deve implementar.
Engenharia de Requisitos
Definição
Os requisitos não-funcionais definem como um software deve operar, sob
quais restrições e com qual qualidade de serviço. São exemplos de requisitos
não funcionais: desempenho, disponibilidade, tolerância a falhas, segurança,
privacidade, interoperabilidade, capacidade, manutenabilidade e usabilidade.
Engenharia de Requisitos
Projeto de Software
Projeto de Software
Projeto de Software
Definição
Projeto de software se preocupa com o processo de definição da arquitetura,
componentes, interfaces e outras características de um sistema ou componente
de software.
Projeto de Software
Projeto de Software
Definição
Projeto arquitetural de software desenvolve a estrutura de alto nível e orga-
nização do software, e identifica os vários componentes do software.
Projeto de Software
Definição
Projeto detalhado de software preocupa-se em especificar cada componente
de software com maior detalhamento possível para facilitar sua construção.
Projeto de Software
Projeto de Software
Construção de Software
Construção de Software
Construção de Software
Definição
A construção de software preocupa-se com a construção detalhada do soft-
ware mediante a combinação de codificação, verificação, testes unitários, tes-
tes de integração e depuração. Esta área de conhecimento está ligada às
outras áreas de conhecimento da engenharia de software, mas é fortemente
ligada às áreas de Projeto de Software e Teste de Software.
Construção de Software
Exemplo
Durante a construção de um software, os engenheiros de software precisam
tomar diversas decisões, como, por exemplo:
• Definir algoritmos e estruturas de dados que serão usadas;
• Definir frameworks e bibliotecas de terceiros que serão usados;
• Definir técnicas de tratamento de exceções;
• Definir padrões de nomes, layout e documentação de código;
• Definir as ferramentas que serão usadas no desenvolvimento, incluindo
compiladores, ambientes integrados de desenvolvimento (IDEs), depura-
dores, gerenciadores de bancos de dados, ferramentas para construção
de interfaces, etc.
Testes de Software
Testes de Software
Testes de Software
Definição
Testes de Software preocupa-se com a verificação de um software, a fim de
que ele forneça os comportamentos esperados com base em um conjunto finito
de casos de testes, adequadamente selecionados de um domínio de execução
geralmente finito.
Testes de Software
Testes de Software
Testes de Software
Definições
• A Validação de Software é a atividade que usa testes com o objetivo de
garantir que um software atende à sua especificação;
• A Verificação de Software é a atividade que usa testes com o objetivo de
garantir que um sistema atende às necessidades de seus clientes.
Testes de Software
Verificação X Validação
Existem duas frases, muito usadas, que resumem as diferenças entre verifica-
ção e validação:
• Verificação: estamos implementando o sistema corretamente? Isto é, de
acordo com os requisitos.
• Validação: estamos implementando o sistema correto? Isto é, aquele que
os clientes ou o mercado está querendo.
Testes de Software
Testes de Software
Resumindo
O código defeituoso é aquele que não está de acordo com a sua especificação.
Se esse código for executado e de fato levar o programa a apresentar um re-
sultado incorreto, dizemos que ocorreu uma falha.
Definição
Uma vez que o software tenha sido criado e entregue, Manutenção e Evo-
lução de Software preocupa-se com as melhorias e atualizações para que a
qualidade do produto de software se matenha.
Definição
Manutenção corretiva é aquela que tem como objetivo corrigir bugs reporta-
dos por usuários ou outros desenvolvedores.
Definição
Manutenção preventiva é aquela que tem como objetivo corrigir bugs latentes
no código, que ainda não causaram falhas junto aos usuários do sistema.
Definição
Manutenção adaptativa é aquela que tem como objetivo adaptar um sistema
a uma mudança em seu ambiente, incluindo tecnologia, legislação, regras de
integração com outros sistemas ou demandas de novos clientes.
Definição
Refactoring são modificações realizadas em um software preservando seu
comportamento e visando exclusivamente a melhoria de seu código ou pro-
jeto.
Exemplo de Refactoring
São exemplos de refactorings:
• Operações como renomeação de método ou variável (para um nome mais
intuitivo e fácil de lembrar);
• Divisão de um método longo demais dois métodos menores (para facilitar
o entendimento);
• Movimentação de um método para uma classe apropriada.
Definição
Manutenção evolutiva é aquela realizada para incluir uma nova funcionalidade
ou introduzir aperfeiçoamentos importantes em funcionalidades existentes.
Gerência de Configuração
Gerência de Configuração
Gerência de Configuração
Definição
Gerência de Configuração preocupa-se com definição de um conjunto de polí-
ticas para gerenciar diversas versões de um software, identificando a configura-
ção de um software em diferentes pontos ao longo do tempo, a fim de controlar
sistematicamente as mudanças na configuração e manter a integridade e ras-
trabilidade da configuração ao longo do ciclo de vida do software.
Definição
Gerência de Engenharia de Software preocupa-se com aplicação de ativi-
dades de gerenciamento (planejamento, coordenação, mensuração, monitora-
mento, controle e registro) para garantir que produtos de software e serviços
de engenharia de software sejam entregues de forma eficiente e efetiva para
os stakeholders.
Stakeholders
Em um projeto, normalmente usa-se o termo stakeholder para designar todas
as partes interessadas no mesmo; ou seja, os stakeholders são aqueles que
afetam ou que são afetados pelo projeto, podendo ser pessoas físicas ou orga-
nizações.
Exemplos de stakeholders
Stakeholders comuns em projetos de software incluem:
• Seus desenvolvedores e seus clientes;
• Gerentes da equipe de desenvolvimento; ’
• Empresas subcontratadas;
• Fornecedores de qualquer natureza;
• Talvez algum nível de governo, etc.
Definição
Processo de Engenharia de Software preocupa-se com as atividades de tra-
balho realizadas por engenheiros de software dentro do ciclo de vida de soft-
ware, levantamento de requisitos, análise, projeto, codificação, testes, implan-
tação e manutenção.
Definição
Modelos e Métodos de Engenharia de Software preocupa-se em impor es-
trutura à engenharia de software com o objetivo de tornar essa atividade siste-
mática, repetível e, em última análise, mais orientada a sucesso.
Modelos X Métodos
• Modelos fornecem uma abordagem para a solução de problemas,
notações e procedimentos para construção e análise de modelos.
• Métodos fornecem uma abordagem para a especificação sistemática,
projeto, construção, teste e verificação de software.
Exemplo de modelo
Exemplo de método
São exemplos de métodos de engenharia de software:
• XP (eXtreme Programming);
• Scrum;
• Lean Software Development;
• etc.
Qualidade de Software
Qualidade de Software
Qualidade de Software
Definição
Qualidade de Software preocupa-se em garantir a qualidade do software por
meio da definição e normatização de processos de engenharia de software.
Qualidade de Software
Qualidade de Software
Definição
Qualidade Externa considera fatores que podem ser aferidos sem analisar o
código, tais como correção, robustêz, eficiência, portabilidade, facilidade e com-
patibilidade.
Qualidade de Software
Definição
Qualidade Interna considera propriedades e características relacionadas com
a implementação de um sistema, tais como modularidade, legibilidade de có-
digo, manutenibilidade e testabilidade.
Definição
Prática Profissional de Engenharia de Software preocupa-se com o conhe-
cimento, habilidades e atitudes que os engenheiros de software devem possuir
para praticar a engenharia de software de maneira profissional, responsável e
ética.
Art. 4º: Atuar dentro dos limites de sua competência profissional e orientar-se
por elevado espírito público.
Art. 5º: Guardar sigilo profissional das informações a que tiver acesso em
decorrência das atividades exercidas.
Art. 9º: Pautar sua relação com os colegas de profissão nos princípios de
consideração, respeito, apreço, solidariedade e da harmonia da classe.
Art. 10º: Não praticar atos que possam comprometer a honra, a dignidade e
privacidade de qualquer pessoa.
Definição
Economia de Engenharia de Software preocupa-se com a tomada de deci-
sões em um contexto de negócios.
Definição
São sistemas nos quais qualquer falha pode causar um imenso prejuízo, in-
cluíndo a perda de vidas humanas. São sistemas para controlar um carro autô-
nomo, uma usina nuclear, um avião, os equipamentos de uma UTI, um trem de
metrô, etc.
Sistemas B (Business)
Sistemas B (Business)
Sistemas B (Business)
Definição
São sistemas que incluem as mais variadas aplicações corporativas (financei-
ras, recursos humanos, logística, vendas, contabilidade, etc.), sistemas Web
dos mais variados tipos, biblioteca e frameworks de software, aplicações de
uso geral (editores de texto, planilhas, editores de imagem) e sistemas de soft-
ware básico (compiladores, gerenciadores de bancos de dados, IDEs, etc.).
Sistemas C (Casuais)
Sistemas C (Casuais)
Sistemas C (Casuais)
Definição
São sistemas que podem ter alguns bugs, os quais não vão comprometer fun-
damentalmente o seu funcionamento, tais como um script feito para um traba-
lho acadêmico, um programa de conversão de dados, um sistema para controlar
os sócios do Diretório Acadêmico da universidade, um sistema para gerenciar
as salas disponíveis para reuniões em uma empresa.
Exercícios de Fixação
Exercícios de Fixação
3 Explique por que testes podem ser considerados tanto uma atividade de verificação
como de validação de software. Qual tipo de teste é mais adequado se o objetivo for
verificação? Qual tipo de teste é mais adequado se o objetivo for validar um sistema
de software?
Exercícios de Fixação
6 Se considerarmos o contexto histórico, por que foi natural que os primeiros proces-
sos de desenvolvimento de software tivessem características sequenciais e fossem
baseados em planejamento e documentação detalhados?
7 Alguns estudos mostram que os custos com manutenção e evolução podem alcan-
çar 80% ou mais dos custos totais alocados a um sistema de software, durante todo
o seu ciclo de vida. Explique por que esse valor é tão alto.