Skip to content

Instantly share code, notes, and snippets.

@cassiocardoso
Last active December 2, 2022 18:50
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cassiocardoso/6de81e0c755352bc7d2a to your computer and use it in GitHub Desktop.
Save cassiocardoso/6de81e0c755352bc7d2a to your computer and use it in GitHub Desktop.
2015 04 27 - Engenharia de Software

Engenharia de Software e Sistemas

  • email: prof.monesi@gmail.com
  • V Model
  • Avaliações:
    • Trabalho em grupo (40%)
    • Participação nas aulas (10%)
    • Prova individual (50%) - Diagrama de classe; Faça duas representações estáticas e duas dinâmicas.
  • Referências:

Trabalho em grupo

  • Contexto da solução
    • Backlog (requisitos ou histórias)
    • Definir tipo de priorização de tarefas utilizado no projeto
    • Priorização Moscow (MSCW - Must, Should, Could, Would)
    • Tempo de duração
    • Custo (fictício)
    • Estruturação estática e dinâmica

Introdução

  • Versionamento condizente - Semantic Versioning
  • Manter um padrão bem definido de código. Ex: CheckStyle para o Java
  • Procurar livro do Pressman relacionado a Engenharia Web. 5ª ed; livro; slides.
  • SWEBOK v3.0 - Software Engineering Body of Knowledge
  • Qualidade do produto de software - ISO 25.000. Norma (modelo de referência). Mostra o que deve ser feito, não como deve ser feito.
  • Engenharia de Software para web: requisitos não-funcionais, mobile, time-to-market.

Aula 02

  • Processos de desenvolvimento de software
  • Requisitos não-funcionais para aplicações web

Processos de desenvolvimento de software

Sucessão sistemática de mudanças numa direção definida.

Requisitos não-funcionais para aplicações web

Exigência imprescindível para consecução de certo fim.

  • Existe uma disciplina específica apenas para requisitos: Engenharia de Requisitos
  • Requisitos funcionais: definem comportamento e funções específicas (projeto).
  • Requisitos não-funcionais: como o software fará algo, não o que será feito (arquitetura).
  • Principais requisitos não-funcionais para web:
    • Confiabilidade
    • Desempenho
    • Disponibilidade
    • Gestão de configuração
    • Segurança
    • Portabilidade
    • Usabilidade
  • ATAM: Architecture tradeoff analysis method; Link 2.
  • Gráfico de porcentagem de uso das funcionalidades do sistema.

Trabalho em grupo

  • Estruturação de projeto de sistema web
  • Foco nos requisitos-chave para aplicações web
    • Requisitos não-funcionais
    • Velocidade de instalação
    • Arquitetura
  • Tema a critério do grupo
  • Aplicação dos assuntos abordados em sala
  • Entregas
    • Versão escrita, de acordo com padrão fornecido
    • Apresentação, em sala de aula, a ser realizada na última aula

Aula 03

Processos de desenvolvimento de Software

  • Web Engineering - Roger Pressman
  • Design: Concepoção de um proejto ou modelo; planejamento.
  • IEEE 1016-2009 - SDD - Software Design Descriptions
  • Analogia com o processo arquitetural de uma casa.
  • Adotar normas para resolução de determinados problemas dentro do ambiente de trabalho.
  • Utilizar padrões existentes (frameworks) para resolução de problemas repetitivos.
  • Documentar coisas que precisam ser documentadas.
  • Testar regras de negócios importantes. Não é preciso ter 100% de cobertura de testes.
  • Balancear o risco de não ter testes para ações básicas, rotineiras.
  • IDEF0
  • Padrões de projeto (Design patterns)
  • São blocos de construção para os projetos. Dizem como problemas comuns podem ser solucionados.
  • Zachman Framework

UML (Unified Modeling Language)

  • Linguagem de comunicação entre as partes interessadas.
  • Tipos de diagramas: Classes, Sequência, Atividades, Estado, Deployment.
  • Utilizar a que melhor se encaixa no dia-a-dia com o conhecimento dos envolvidos no processo.
  • Ferramenta para criação de diagramas UML: Astah
  • 5W2H (What, Why, Where, Who, When, How, How much)
  • Computer.org
  • SWEBOK v3 Book

Aula 04

Teste de software

  • Erro (engano; erro humano) != Defeito (bug) != Falha (bug em produção).
  • Pesquisar: Outras fontes oficiais do significado de verificação e validação.
  • Métodos de teste: estático; dinâmico; caixa branca; caixa preta; caixa cinza.
  • Níveis de teste: unitário, integração, interface, sistema.
  • Tipos de teste: fumaça, regressão, usabilidade, concorrência, alpha, beta.
  • Processos de teste/desenvolvimento: Waterfall, Agile, XP.

Trabalho em grupo

  • Diagrama de Casos de Uso.
  • Gerar Backlog do Produto.
    • Histórias de usuário (papel de Product Owner).
    • Priorização.
    • Expectativa de duração/quantidade de sprints (prazo).
    • Simulação de time necessário para entrega do software.

Aula 05

Arquitetura da aplicação


Aula 07

DevOps (Development and Operations)

  • Entrega contínua (continuous delivery)
  • Integração contínua
  • Foco em qualidade de software em todas as etapas
  • Ferramentas para DevOps
    • Jenkins
    • Chef
    • Puppet
    • Ansible
    • Salt Stack
    • OpsWorks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment