Logo Passei Direto
Buscar

Engenharia Software pptx

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Engenharia
Software
Introdução
O que é?
Definição: É a aplicação de uma abordagem
sistemática, disciplinada e quantificável ao
desenvolvimento, operação e manutenção de
software.
Objetivo: Transfomar o "artesanato" de programar
em uma engenharia robusta.
Foco: Entregar produtos de alta qualidade, dentro
do prazo e do custo estimados.
01
Fundamentos da
Engenharia de
Software
Modelos de Processo
de Software
Modelo Cascata (Waterfall): Abordagem clássica e
linear. Uma fase só começa quando a anterior termina
(Requisitos $\rightarrow$ Design $\rightarrow$
Implementação).
Modelos Incrementais e Evolutivos: O software é
entregue em partes. Permite feedback rápido e ajustes
durante o percurso.
Modelos Ágeis (Agile): Foco em iterações curtas,
colaboração com o cliente e resposta rápida a
mudanças (Ex: Scrum, Kanban).
Requisitos e Especificação
Definindo o Produto
O que são: Descrições dos serviços que o sistema deve fornecer e as restrições sob as quais ele deve operar.
O Grande Desafio: Garantir que o que o desenvolvedor entende seja exatamente o que o cliente precisa.
Tipos de Requisitos
Funcionais: Descrevem o comportamento do sistema (o que ele faz).
Ex: "O sistema deve emitir um relatório de vendas mensal."
Não Funcionais: Descrevem restrições e qualidades (como ele deve ser).
Ex: "O sistema deve processar a busca em menos de 2 segundos" (Desempenho).
Arquitetura de Software
A Estrutura do Sistema
Definição: A organização fundamental de um sistema, seus componentes, seus relacionamentos e o ambiente em
que operam.
Importância: Define a escalabilidade, a segurança e a facilidade de manutenção a longo prazo.
Padrões Arquiteturais Comuns
Arquitetura em Camadas (Layered): Separa as responsabilidades (ex: Interface, Lógica de Negócio e Banco de
Dados).
Microserviços: O sistema é dividido em pequenos serviços independentes que se comunicam via rede.
Client-Server: Um modelo distribuído onde o cliente solicita e o servidor processa.
01
Desenvolvimento e
Manutenção
Técnicas de
Codificação e Testes
Escrevendo Código de Qualidade
Clean Code (Código Limpo): O código deve ser autoexplicativo. Nomes de variáveis e funções devem revelar
sua intenção.
Refatoração: O processo de reestruturar o código existente sem alterar seu comportamento externo, visando
melhoria interna.
Padronização: Uso de guias de estilo (Style Guides) para que todo o time escreva de forma consistente.
Princípios e Práticas
DRY (Don't Repeat Yourself): Evite duplicar lógica; se você copiou e colou, algo está errado.
KISS (Keep It Simple, Stupid): A solução mais simples é geralmente a melhor. Evite complexidade
desnecessária.
SOLID: Cinco princípios de design orientado a objetos que tornam o software mais compreensível e flexível.
Controle de Versão e Gerenciamento de
Configuração
O Coração da Colaboração
O que é: Sistemas que registram as mudanças feitas em arquivos ao longo do tempo, permitindo recuperar versões
específicas.
Por que usar? Histórico completo de alterações, trabalho em equipe sem conflitos e facilidade para desfazer erros.
Conceitos Fundamentais
Repositório: O local onde o projeto e seu histórico ficam armazenados.
Commit: Uma "foto" do código em um determinado momento (com uma mensagem explicativa).
Branch (Ramo): Permite criar uma linha de desenvolvimento separada para testar novas ideias sem quebrar o código
principal.
Merge: O processo de unir as alterações de diferentes ramos.
Manutenção e Evolução de Software
O Software como Organismo Vivo
O que é: O processo de modificar um sistema após a entrega para corrigir erros, melhorar o desempenho ou adaptar a
novas necessidades.
A Lei de Lehman: O software deve ser continuamente adaptado, caso contrário, torna-se progressivamente menos útil.
Tipos de Manutenção
Corretiva: Conserto de falhas e bugs encontrados pelos usuários.
Adaptativa: Ajustes para novos ambientes (ex: nova versão do Windows, mudança de servidor).
Perfectiva: Adição de novas funcionalidades e melhorias de performance.
Preditiva: Alterações para evitar que problemas ocorram no futuro.
Legado e Evolução
Sistemas Legados: Sistemas antigos, mas essenciais, que precisam de cuidados especiais para não travarem o
negócio.
Evolução Contínua: No modelo moderno (SaaS/Cloud), as atualizações são constantes e incrementais.
Finalmente
O Valor da Engenharia de Software
Qualidade além do Código: Engenharia de Software é sobre processos, pessoas e ferramentas trabalhando em
harmonia.
Sustentabilidade: Um software bem projetado sobrevive ao tempo e às mudanças de mercado.
Previsibilidade: Reduz o caos, permitindo estimativas de custos e prazos mais realistas.
O Futuro da Área
IA e Automação: Novas ferramentas que aceleram a codificação e os testes.
Segurança por Design: A proteção de dados como prioridade desde o primeiro requisito.
Cultura DevOps: A união definitiva entre o desenvolvimento e a operação do software.

Mais conteúdos dessa disciplina