Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

ARQIESW - Introdução à engenharia de softaware 1
ARQIESW - Introdução à 
engenharia de softaware 
29/03/2023
Escritores de livros 
Ian Sommerville
Roger Pressman
O que é software ?
É um conjunto de códigos(instruções) para máquina que tem como 
objetivo resolver algum problema, chegar em um objetivo. Segundo 
Pressman conjunto de instrução de computador composto de 
estrutura de dados e documentos - Software é o resultado das 
instruções geradas pelo código
ARQIESW - Introdução à engenharia de softaware 2
Curiosidade : Cobol linguagem antiga que ainda é utilizada em 
certos sistemas de bancos. 
💻 Curiosidades/questionamentos sem entrega
💻 Um pouco sobre a história e conceitos básicos 
💻 O que é processo de software?
💻 Processos e modelos
💻 Análise de documentos
💻 Métodos Ágeis
💻 SCRUM
💻 Kanban
💻 Teste de software
💻 Manutenção de Software
https://www.notion.so/Curiosidades-questionamentos-sem-entrega-69f0f36cc9344c7ba5e681b112b34875?pvs=21
https://www.notion.so/Um-pouco-sobre-a-hist-ria-e-conceitos-b-sicos-449578fe669443a7ba94067048a1c69a?pvs=21
https://www.notion.so/O-que-processo-de-software-da601b37ca214bf1aec40a33c1592239?pvs=21
https://www.notion.so/Processos-e-modelos-3d6e5eda7de6486fb6bd9b39c9e3e60b?pvs=21
https://www.notion.so/An-lise-de-documentos-5db843159fd34b4c94df7653cbc3c584?pvs=21
https://www.notion.so/M-todos-geis-d12f253ed8ba4c3e8622a150bc5772bf?pvs=21
https://www.notion.so/SCRUM-85b34fea5b1541eea08b4c466f73f060?pvs=21
https://www.notion.so/Kanban-c455e5f0019f4c45a319351b420df819?pvs=21
https://www.notion.so/Teste-de-software-ec46d7edf75a42a5890a242fc8cfafa0?pvs=21
https://www.notion.so/Manuten-o-de-Software-868eed40f6a644d7b0631d92592f6f69?pvs=21
Um pouco sobre a história e conceitos básicos 1
💻
Um pouco sobre a história 
e conceitos básicos 
Um pouco da História e conceitos básicos
Crise do software - entrega atrasada, orçamento estourado, 
falhas durante a elaboração.
Evolução do hardware X evolução do software - Custo do hardware 
decrescente e custo do software em ascensão
Década de 50 - Surgiram os primeiros softwares. Pesquisas eram 
voltadas para componentes eletrônicos, software era 
desenvolvidos sem conhecimentos de engenharia de software
Década de 60 - Software se tornou o foco na pesquisa, 
organizações começam a elaborar software para gerenciar, grandes 
sistemas. Hardware deixou de ser a pedra no sapato do software
Crise do software - Equipes não tinham um modelo de como 
desenvolver software, não havia documentação adequada.
Como dar manutenção em um software sem projeto ? Manutenção 
muito difícil e tem que começãr tudo do 0 algumas vezes 
Um pouco sobre a história e conceitos básicos 2
a partir de tudo citado acima surgiu a engenharia de software
Objetivo da Engenharia de software - Criar técnicas, métodos, 
formulas, para reduzir custos do projeto. respeitando os prazos 
e qualidade desejada. Software é abstrato, integravel não é 
limitado por materiais, ou controlado pelas leis da física.
Papel do Engenheiro de software - Adotar uma abordagem 
sistemática e organizada para seu trabalho, além de utilizar 
ferramentas e técnicas apropriadas, dependendo do problema a ser 
resolvido saber identificar qual técnica/ferramenta utilizar.
Princípios para manter o bom funcionamento do produto final
Evitar dependência de determinadas pessoas ou processos - 
desenvolvimento e criação deve ser colaborativo para não 
ficar dependente de uma pessoa só
Abstrair aspetos importantes - Pegar apenas o que é 
importante em determinado cenário
Subdividir problemas complexos - Dividir e conquistar, divide 
um grande problema em problemas menores para você conseguir 
resolver o problema por um todo
Reutilizar resultados (códigos) 
Flexibilização e modularização para facilitar a manutenção 
Fundamentos - A engenharia de software é multidisciplinar 
podendo abranger outras áreas
Ciências da Computação - saber programar, arquitetura, 
estrutura de dados, lógica de programação e etc.
Um pouco sobre a história e conceitos básicos 3
Administração - gerir prazos, equipe, custos, resultados e 
etc.
Comunicação - saber conversar com os clientes que podem ser 
leigos em TI 
Solucionar problemas 
Desafios da engenharia de software 
Reduzir custos
Melhorar a qualidade
Atender as expectativas 
Tipos de software
Software de prateleiras/genérico - Pode ser que seja positivo 
ou negativo, pode ser bom ou não para o usuário.
Software personalizado - Atende as expectativas para certa 
situação dos clientes
Software comerciais - Controle financeiro, controle de 
estoque.
Software embarcado - geladeira, micro-ondas, carros, 
relógios.
Sistema de tempo real - usados em usina nuclear, tráfego 
aéreo
Atributos de um bom software
Fácil manutenção - deve evoluir para atender as necessidades 
de mudança
Confiança - Deve ser confiável
Um pouco sobre a história e conceitos básicos 4
Eficiência - não deve desperdiçar recursos do sistema, sem 
ocupar muita Ram e Processador.
Usabilidade - Deve ser aceito pelos usuários, que seja fácil 
de usar
Onde tudo isso é desenvolvido ?
Empresas de desenvolvimento de software.
O que é processo de software? 1
💻
O que é processo de 
software?
O que é um processo? Conjunto de etapas com prazos, como devo 
proceder em cada uma. 
método utilizado para desenvolver ou produzir software 
é definir como e quando será feito
o que é feito? -> produto 
como é feito -> passos 
por quem é feito -> agente 
o que usa ? -> insumos 
o que se espera ? -> resultados
Boas praticas
A estrutura genérica de um processo inclui as seguintes At : 
Comunicação (Dev e o cliente, levantamento de infos); 
planejamento(Já tenho as infos, a partir do planejamento 
estimasse o prazo, preço, custo) ; 
modelagem(Fazer um pequeno protótipo, modelo) ; 
construção(Pegar todas as infos e passar para códigos); 
implantação(Entregar o software para o cliente );
após isso, temos as manutenções de software e antes da 
implantação temos o teste.
Modelo de processo de software
deve encorpar uma estratégia de desenvolvimento
Definição do problema → desenvolvimento técnico -> integração da 
solução -> estado atual -> definição do problema...
O que é processo de software? 2
Técnica de modelagem
Modelo é uma simplificação da realidade 
-São construído para permitir um melhor entendimento sobre o 
sistema que está sendo construído 
-Vários tipos de modelagem
Modelagem uma das maneiras é uma descrição textual de como o 
sistema vai funcionar, outra é o diagrama de caso de uso
ferramentas CASE computer aided software engineering - auxilia 
nas etapas de desenvolvimento de software * tarefa pesquisas 
sobre
Objetivo da modelagem (porém um modelo não consegue representar 
100%)
Abstração 
melhorar o entendimento
visualização
especificações
construção
Documentação
Processos e modelos 1
💻
Processos e modelos
Modelo X Processo
Modelo - documento teórico conjunto de possíveis ações
Processo - deve determinar as ações a serem realizadas pela 
equipe com prazos definidos.
Modelo prescritivo - é capaz de prever, incluir ações, 
mecanismos que garantem a qualidade e controle 
a principal função desses modelos é colocar a ordem no caos, 
podem ser adaptativos as fases e etapas de acordo com o 
problema, com a equipe.
Modelo Cascata - Ciclo de vida clássico : é ideal para 
problemas nos quais os requisitos são bem definidos. 
Abordagem sistemática e sequencial ou seja uma nova atividade 
só pode ser iniciada quando a anterior for concluída. 
 Desvantagem não pode voltar para trás 
 Vantagem muito simples de gerenciar, modelo para outros, 
modelo sequencial. 
 Problemas com o modelo cascata raramente os projetos 
seguem um fluxo, dificulta estabelecer os requisitos do 
inicio da projeto 
 Cliente só recebe o produto quando ele está numa etapa 
avançada de desenvolvimento, no final do projeto.
Modelos incrementais - desenvolvimento iterativo, ciclos que 
permitem revisões de atividades anteriores.
→ Entrega pequenosincrementos durante o desenvolvimento 
projeto, são desenvolvidos vários modelos em cascatas e vão 
Processos e modelos 2
fazendo uma entregas parcial. fragmentado em partes 
independentes. 
→ A arquitetura do sistema deve possibilitar a entrega das 
partes independentes. 
→ Características - incrementos como protótipos, podendo ser 
alterados, novos requisitos podem ser incorporadas, deve-se 
identificar funcionalidades prioritárias que serão desenvolvidas 
primeiro, os processos de cada incrementos podem ser 
independentes(podendo se utilizar o cascata), risco menor de 
fracasso completo no sistema. 
→ Avaliação do cliente pode ser feita a partir das experiencias 
com esses fragmentos.
→ Vantagens - em cada incremento é adicionada novas 
funcionalidades Impacto pequeno - são resolvidos antes de um 
investimento muito grande(durante o desenvolvimento)Cliente tem 
um feedback, entregas parciais desde o inicio do projeto
→ Quando o cliente vê a funcionalidade já esta pronta para a 
implementação
→ Desvantagem - não podem deixar que se aproxime do método 
cascata
→Todos os requisitos precisam ser conhecidos para decompor o 
produto em módulos
Modelo Evolucionário(Interativo) - Cliente não tem ideia do 
que quer, e a ideia vai evoluindo.
Prototipação - Vai entregando protótipos, desenvolve mostra pro 
cliente, da o feedback
Espiral - Conjunto de etapas, comunicação, planejamento, 
modelagem... Partindo de onde o cliente não sabe o que quer, vai 
evoluindo até chegar no produto final. 
Diferenciam apensa que na prototipação não tem as fases 
definidas, e na entrega prototipação entrega protótipos e 
Processos e modelos 3
espiral pode ser entrega pode ser o software
Incremental X Interativo
Em um modelo sabe o que quer e outro não sabe
Modelo incremental - vai entregando por partes
Modelo Interativo - dentro de um todo vai sofrendo alterações e 
vai evoluindo
Análise de documentos 1
💻
Análise de documentos
https://s3-us-west-2.amazonaws.com/secure.notion-static.co
m/4a2771d9-0878-45c4-a626-09b7e822b3eb/analise_documentaca
o.pdf
https://medium.com/lfdev-blog/como-escrever-requisitos-de-
software-de-forma-simples-e-garantir-o-mínimo-de-erros-no-
sistema-app-74df2ee241cc
https://asana.com/pt/resources/feasibility-study
💡 Na etapa de análise vários documentos são gerados.
O que é um sistema?
É um conjunto de elementos que é organizado para realizar 
certo método, procedimento ou controle ao processar 
https://www.notion.so/signed/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4a2771d9-0878-45c4-a626-09b7e822b3eb%2Fanalise_documentacao.pdf?table=block&id=8063460f-0d2e-4649-8e7e-11cdf3906857&spaceId=103f04c2-450e-42e6-b0b2-08ca14f988fd&userId=7b1b405e-91f7-4404-87a9-37d556adc12a&cache=v2
https://medium.com/lfdev-blog/como-escrever-requisitos-de-software-de-forma-simples-e-garantir-o-m%C3%ADnimo-de-erros-no-sistema-app-74df2ee241cc
https://asana.com/pt/resources/feasibility-study
Análise de documentos 2
informações
Componentes de um sistema 
Papel do analista
Coletar as informações e extrair o que é relevante dentro de um 
projeto.
Passos da análise de sistemas
1 - Estudo das necessidades - Resultado: Documento conceitual do 
sistema
 com reuniões com os clientes
 sentir desejos e necessidades
 buscar definir funções/desempenho metas globais. 
2 - Estudo de viabilidade - Resultado: documento sobre o assunto
Introdução - aqui posso dizer algumas restrições
Análise de documentos 3
Resumo Adm. análise de custo beneficio.(Tem detalhado no 
slide)
3 - Análise de requisitos - Ao final é gerado o Documento de 
requisitos 
Serve para mostrar o que o meu software deve ter 
Tipos de requisitos, tem no slide.
Modelos de documento de requisitos - Este documento serve para 
trazer uma visão geral e funcional do produto, para ser capaz de 
lembrar todas as regras e funcionalidades que o sistema deve 
ter.
Requisitos funcionais - Tem haver com as funcionalidades do meu 
sistema, são os serviços que o sistema deve prover, como o 
sistema se comporta em situações especificas, Ex: Desenvolvendo 
um editor de texto, as principais funções seriam o usuário 
conseguir escrever, apagar, salvar.
Requisitos não funcionais - Não tem haver com funcionalidades, 
Tem haver com as característica do produto, por exemplo 
interface do produto quão fácil de utilizar o software é. Tem 
haver com os atributos do software. O software deve funcionar em 
um navegador Firefox (não tem haver com a funcionalidade porém é 
uma exigência). 
 
Caso de Uso - Uma outra forma de especificar requisitos é 
através de caso que uso, onde contém o nome da funcionalidade e 
pode ser conter sua respectiva descrição. No caso de uso você 
define o ator de maneira a relacionar com as funcionalidades, a 
Análise de documentos 4
partir dessa fase fica melhor descrito os requisitos para então 
iniciar o modelagem do banco, desenvolvimento e outras etapas.
Métodos Ágeis 1
💻
Métodos Ágeis
Manifesto ágil - Princípios, surgiu no inicio dos anos 2000
União de 17 pessoas, muito conhecidas dentro da engenharia de 
software
Definiram o que é ágil, scrum é mais antigo que o manifesto 
ágil.
Após isso começaram utilizar o termo metodologias ágeis no 
processo de desenvolvimento de software.
https://agilemanifesto.org/iso/ptbr/manifesto.html
Indivíduos e interações - valor humano de conversar cara a 
cara
Software em funcionamento mais importante do que documento
Colaboração com o cliente - mais que negociação de contratos, 
conversa entre ambos os lados sem ficar preso em contratos
Responder a mudanças - mais do que seguir um plano. Durante o 
desenvolvimento se o cliente peça uma pequena alteração, já 
fazer no desenvolvimento durante o processo do que seguir um 
plano e deixar para o final.
É mais valorizado os itens à esquerda que estão em negrito do 
que os itens à direita
https://agilemanifesto.org/iso/ptbr/manifesto.html
Métodos Ágeis 2
Ser ágil - não é ser rápido igual um trem bala, é ser igual um 
guepardo, se a pressa desviar bruscamente a direção o guepardo 
consegue mudar bruscamente também, essa analogia pode ser 
comparada com o desenvolvimento de software.
Mais uma atitude, não um processo prescritivo
Funciona na prática
Não é um ataque para as ferramentas case
Não é um ataque para documentação, é indicado que tenha 
documentação
A cada final de release entrego uma porção do software para o 
cliente, os riscos são bem menores que no cascata, vai 
eliminando os riscos durante o desenvolvimento. Cliente pode dar 
o feedback sobre sobre o que já foi desenvolvido e entrega 
podendo pedir correções. Risco muito menor que os modelos 
tradicionais é interativa e incremental.
Métodos Ágeis 3
SCRUM 1
💻
SCRUM
Todos estão de certa forma juntos, conectados de forma a 
alcançar um objetivo, vindo do rugby 
É um processo para construir software onde o ambiente não tem 
processos bem definidos ou mudam com muita frequência, essa 
equipe não tem somente programadores a equipe é pequena porém é 
interdisciplinar.
Formado por time box, segue a risca esses tempos, fala sobre 
reuniões diárias, falar de 3 assuntos durando 15 minutos, em um 
time muito grande o tempo já seria ultrapassado e seria difícil 
gerenciar. Utiliza times de 7 à 9 pessoas.
SCRUM 2
Metodologia baseada em princípios semelhantes do XP
Divide o desenvolvimento em sprints, que são as rodadas, o 
máximo é 30 dias por sprint.
Trabalham em cima das funcionalidades definida em cada inicio 
de rodado e devem ser desenvolvidos naquele sprint.
A equipe toda é responsável pelo projeto, se alcançar os 
resultados todo mundo é valorizado e caso não de certo todo 
mundo é responsável também.
Existe a possibilidade de ter alguém com rendimento baixo, 
corpo mole, podendo ser desligado do projeto e tals.
Reunião equipe expõe o que pretendo fazer no próximo dia, o 
que estou fazendo e se estou tendo algum problema para 
atingir os objetivos. 
Eventos do sprint
→ Sprint planning - Antes de começaré feito uma reunião de 
planejamento do sprint, onde é criado o backlog da sprint, 
define quantas funcionalidades podem ser completamente 
construídas no tempo da sprint
→ Execução do sprint - É pego o backlog priorizado para ser 
realizado no sprint e é a etapa que é feito o desenvolvimento do 
sprint.
→ Daily Scrum - É uma reunião diária de 15 minutos realizada 
todos os dias com o objetivo de saber o que foi feito no dia 
anterior, o que vai ser feito hoje e se existe algum 
impedimento, para todos visualizarem de uma maneira geral como 
está fluindo o desenvolvimento do produto.
→ Revisão do sprint - É a verificação do que foi feito no 
sprint, é uma validação e adaptação do produto que está sendo 
construído, é a apresentação daquilo que foi feito no sprint
SCRUM 3
→ Retrospectiva do sprint - Verificar necessidades de adaptação 
no processo, ver o que foi positivo e o que foi negativo durante 
o processo, o que devemos melhorar ou parar de fazer
Artefatos do SCRUM
→ Product backlog - Lista de pendências do produto, somente o 
dono do produto mexe nisso.
→ Sprint backlog - Lista de pendências da sprint, é dividido a 
box anterior em varias tarefas e definir o que irão entregar no 
final
→ Sprint - Corrida, rodada de desenvolvimento, dentro do sprint 
todo dia tem reuniões diárias.
→ Working increment of the software - Incremento de trabalho de 
software, é a entrega do que foi realizado na sprint para o 
cliente.
SCRUM 4
Papeis do SCRUM
Product Owner (Proprietário do produto) - Entende sobre o 
produto.
Scrum Master - Conhece o SCRUM por completo, é o responsável 
por aplicar o SCRUM no projeto, vai liderar as reuniões, tomar 
conta do dono do produto não conversar com a equipe, remove 
impedimentos quando ver algum problema é ele que resolve, 
pesquisa soluções para resolver o impedimento. Pode ou não 
programar depende da política da empresa.
Equipe de desenvolvimento - Pessoas que criam o banco de dados, 
programam, gerenciam o projeto.
Kanban 1
💻
Kanban
É uma ferramenta de gestão visual, conhecida pelos seu quadro. 
Utiliza colunas e cartões, facilitando a visualização e gestão 
das atividades, permite medir o progresso da equipe, kanban veio 
da linha de produção.
TRÊS FUNÇÕES
Gerenciar fluxo de trabalho
Equilibrar os processos
Limitar quantidade de trabalho, para que não haja uma demanda 
maior do que é possível ser produzido.
COMPOSIÇÃO
Cartões
Colunas - um quadro básico tem 3 colunas
A fazer
Fazendo
Finalizado
Quadro
TIPOS DE KANBAN
Kanban de produção é utilizado para medir estoque, controlar 
o estoque.
Kanban 2
Kanban de movimentação tirava os cartões ao utilizar os 
lotes
Surgiu na Toyota, com ideia de just in time, com ideia de 
controlar o estoque.
Ferramenta trello → quadro kanban virtual 
Teste e manutenção de software 1
💻
Teste e manutenção de 
software 
TESTE DE SOFTWARE 
É o que garante qualidade, fazer experimentos com o produto, se 
tiver falhas registrar quando acontece a falha.
Erro - É ação humana que produz um resultado incorreto
Defeito - Manifestação do erro, conhecido como BUG
Falha - Produto se comportando desta maneira citada acima, um 
software que não cumpriu o seu propósito
Conceitos básicos de teste
Artefato de teste - Documentação gerada no processo de teste
Caso de teste - Composto por conjunto de entradas, por passos 
de execução e um resultado esperado;
Testador elabora um plano de testes com possíveis cenários.
MITOS SOBRE TESTE
Testador é inimigo do desenvolvedor.
Os testadores devem ser os desenvolvedores menos qualificados
O sistema está pronto quando é terminado de codificar
Um programador consegue testar eficientemente seu código
Teste e manutenção de software 2
TERMINOLOGIA
Níveis de abstração
Teste de unidade → Funções, métodos
Teste de módulo → Módulos, classes
Teste de componentes → Conjunto de módulos ou componentes, 
bibliotecas…
Teste do programa
Teste de sistema
Teste estrutural 
Caixa aberta, branca - quando tem acesso ao código 
Caixa entreaberta - Baseado em aspectos do código
Caixa fechada - não tem acesso a nada de documentação ou 
código. 
MANUTENÇÃO DE SOFTWARE
Custo da manutenção é maior que o custo de desenvolvimento.
Cada vez menos sistemas são desenvolvidos do 0 são 
desenvolvidos e adaptados a partir de outros sistemas.
Faz mais sentido ter o desenvolvimento e manutenção continuo
Outros custos não monetários
Adiantamento de oportunidades de desenvolvimento
Insatisfação do cliente
Redução da qualidade global do software
Insatisfação do pessoal da manutenção
Teste e manutenção de software 3
Problemas da manutenção
Difícil entendimento do código de outra pessoa
Documentação inexistente ou desatualizada
Deficiência no planejamento e desenvolvimento
Software não foi projetado para manutenção
Planejamento de manutenção
Estabelecer uma organização para o processo
Descrever procedimentos de avaliação
Empresas mais maduras o cliente não liga e fala com qualquer 
programador e já sai fazendo o que o cliente quer.
Procedimentos para registrar o histórico das atividades de 
manutenção(ver Swanson)
Evolução do software
Devem mudar para permanecer uteis 
Mudanças no ambiente requer atualização de software
Sistemas computacionais geralmente possuem vida longa - pois 
custam muito caro dependendo da sua complexidade.

Mais conteúdos dessa disciplina