- email: [email protected]
 - 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:
 
- 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
 
 
- 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.
 
- Processos de desenvolvimento de software
 - Requisitos não-funcionais para aplicações web
 
Sucessão sistemática de mudanças numa direção definida.
- Keywords: Maneira; mudança; melhoria;
 - Melhoria é o objetivo. Mudança é o caminho.
 - Processo de desenvolvimento é uma das disciplinas da engenharia de software.
 - ISO/IEC 12207 - Software life cycle process
 - Chaos Report
 - Tipos de processos: Waterfall, Espiral, RAD, RUP, ICONIX, XP, Scrum, Kanban, FDD, TDD, BDD, DDD
 - Domain driven design - Livro de Eric J Evans
 - Let's Code: JavaScript TDD
 - Livro: TDDJS; Frameworks: Karma, Jasmine, QUnit, Mocha.
 - Building offline mobile HTML5 Apps
 - Designing Front-End Components
 
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.
 
- 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
 
 
- 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
 
- 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
 
- 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.
 
- 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.
 
 
- 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