Mind map
Engenharia de Software Cap. 1: Introdução

Mapa mental: Engenharia de Software Introdução
Map content
Engenharia de Software Cap. 1: Introdução
No mundo moderno, tudo é software.
- Software
- Produtos Genéricos São produzidos por uma empresa e vendidos no mercado
- Produtos Sob Encomendas Sistemas encomendados por clientes particulares
- Tipos de Sistemas ABC
- Proposto por Bertrand Meyer
- Tipo A
- Missão crítica
- São sistemas nos quais qualquer falha pode causar um imenso prejuízo, incluindo a perda de vidas humanas
- Desenvolvidos de acordo com processos rígidos
- Baseada em teoria de conjuntos
- Sistema rodando paralelamente em duas máquinas
- Requerem certificações
- Tipo B
- Business
- Incluem as mais variadas aplicações corporativas, sistemas Web, redes sociais ou sistemas de busca
- A ES pode tornar o sistema
- Mais produtivo o desenvolvimento de Sistemas B
- Podem propiciar a construção de Sistemas B com melhor qualidade
- Tipo C
- Casuais
- São sistemas que podem ter alguns bugs, os quais não vão comprometer seu funcionamento.
- Sistemas pequenos e não críticos.
- Risco de over-engineering
- Uso de recursos mais sofisticados em um contexto que não demanda tanta preocupação
- Software
Conferência da OTAM
- Alemanha, 1968
- Foi escrito um relatório
- A construção de um software teria como base os princípios práticos e teóricos, tal como ocorre em na Engenharia.
- Surgiu na Crise de Software
Engenharia de Software
- Disciplina da Engenharia
- Lida com todos os aspectos da produção de software, desde os estágios iniciais da especificação do sistema até sua manutenção, quando o sistema já está sendo usado, de forma produtiva e com qualidae
- Área da Computação
- É destinada a investigar os desafios e propor soluções que permitam desenvolver sistemas de software — principalmente aqueles mais complexos e de maior tamanho — de forma produtiva e com qualidade
- Processo de Software
- Seqüência de atividades que leva à produção de um produto de software.
- 12 áreas de conhecimento da Engenharia de Software
- Engenharia de Requisitos
- Inclui atividades com o objetivo de definir, analisar, documentar e validar os requisitos de um sistema.
- Funcionais
- Define quais funcionalidades e serviços ele deve implementar
- Não-funcionais
- Definem como um sistema deve operar, sob quais restrições e com qual qualidade de serviço.
- Exemplos
- Desempenho
- Disponibilidade
- Tolerância a falhas
- Segurança
- Privacidade
- Interoperabilidade
- Capacidade
- Usabilidade
- Requisitos
- Define o que ele deve fazer e como deve operar
- Projeto de Software
- Define os principais componentes de um sistema e suas interfaces
- Interfaces Providas
- São os serviços abertos/públicos para ser usado pelo resto do sistema
- Interfaces requeridas
- São interfaces das quais um sistema depende para funcionar
- Podem ser chamadas de Dependências
- Áreas abordadas
- Propriedades de projeto
- Princípios de projetos
- Padrões de projetos
- Construção de Software
- Implementação (codificação) do sistema
- Fase para definir
- Algoritmos e estruturas de dados
- Frameworks e bibliotecas
- Padrões de nomes
- Tratamento de exceções
- Ferramentas: IDEs, depuradores, etc;
- Teste de Software
- "Testes de software mostram a presença de bugs, mas não a sua ausência." Edsger W. Dijkstra
- Testes de unidade
- Quando se testa uma pequena parte do código, como uma classe
- Testes de Integração
- Testa partes maiores como um conjunto de classes
- Teste de performace
- Verifica o desempenho do sistema por meio de testes
- Teste de usabilidade
- Verifica a usabilidade da interface do sistema
- Verificação de Software
- Garante que um sistema atenda suas especificações
- O sistema está sendo implementado corretamente?
- Está seguindo todos os requisitos?
- Validação de Software
- Teste de aceitção com os usuários
- Garante que um sistema atenda às necessidades de seus clientes.
- O sistema está sendo implementado correto?
- Testes Manuais
- Testes Automatizados
- Uma falha é a manifestação do defeito, onde uma anomalia no software que pode causar um comportamento que não condiz com suas especificações, falhas e defeitos são chamados de bugs.
- Manutenção de Software
- Processo de melhorias, otimização e reparos de defeitos em um software
- Tipos de Manutenção
- Corretiva
- Corrige bugs reportados por usuários ou outros desenvolvedores
- Preventiva
- Corrige bugs antecipadamente que ainda não causaram falhas aos usuários
- Adaptativa
- Adapta um sistema a novas tecnologias, regras de integração ou novas demandas
- Refactoring
- Visa a melhoria no código ou projeto, preservando o comportamento do software
- Evolutiva
- Inclui uma nova funcionalidade ou introduzir aperfeiçoamentos importantes em funcionalidades existentes
- Corretiva
- Sistemas Legados
- Sistemas antigos, baseados em linguagens, banco de dados e tecnologias ultrapassadas
- Manutenção custosa e arriscada
- Muitas vezes esses sistemas realizam operações críticas ainda hoje.
- Gerência de configuração
- Todo software é desenvolvido utilizando um sistema de controle de versões
- Usa sistemas de controle de versões
- Permite recuperar versões antigas
- Um exemplo: Git
- Inclui um conjunto de políticas para gerenciar as diversas versões de um sistema
- Esquema de numeração de releses
- Conhecido como versionamento semântico
- Esquema de numeração de releses
- Gerência de Projetos
- Aplicação de conhecimentos, habilidades, ferramentas e técnicas nas atividades do projeto de software a fim de atender aos seus requisitos.
- Algumas atividades:
- Negociação de Contratos
- Gerência de RH
- Gerenciamento de riscos
- Marketing
- Finanças
- Lei de Brooks
- "Incluir novos desenvolvedores em um projeto que está atrasado, vai deixá-lo mais atrasado ainda"
- Frederick. P. Brooks Jr.
- Livro: The Mythical Man-Month
- 1ª Ed. Publicada em 1975
- Stakeholder
- São os que afetam ou que são afetados pelo projeto
- Todas as "partes interessadas" em um projeto de software
- Desenvolvedores, clientes, usuários, gerentes, empresas terceirizadas, fornecedores, governo etc
- Processos de Desenvolvimento de Software
- Define quais atividades e etapas devem ser seguidas para construir e entregar um sistema de software.
- Processos Waterfall (Cascata)
- Processos dirigidos por planejamento
- Construção do sistema em etapas
- 1º Levantamento de Requisitos
- 2º Análise
- 3º Projeto
- 4º Codificação
- 5º Testes
- 6º Implantação
- 5º Testes
- 4º Codificação
- 3º Projeto
- 2º Análise
- 1º Levantamento de Requisitos
- Proposto na déc. 70
- Muito usado até 1990
- Levantamento completo de requisitos demanda tempo
- Clientes as vezes não sabem o que querem
- Processos Ágeis
- Surgiu com o manifesto ágil
- Produzido por 17 engenheiros de software
- Um sistema deve ser construído de forma incremental e iterativa
- Utah, E.U.A, fevereiro de 2001
- Crítica modelos sequenciais (Waterfall)
- Alguns métodos ágeis
- XP (Extremme Progrmming)
- Scrum
- Kanban
- Open Up
- Ajuaram a disseminar práticas de desenvolvimento de software
- Testes automatizados
- Integração contínua
- Integração do código que produzem imediatamente, se possível todo dia
- Test-driven development
- Isto é, escrever os testes primeiro, antes do próprio código
- Surgiu com o manifesto ágil
- Modelagem de Software
- Modelo
- Representação em mais alto nível do sistema do que o código
- Permite que desenvolvedores analisem propriedades e características essenciais de um sistema, de modo fácil e rápido
- Modelos criados antes do código
- Apoiam a Engenharia Avante (Forward Engineering)
- Forma de documentar o código de um sistema
- Apoiam a Engenharia Avante (Forward Engineering)
- Modelo feito para entender um código exitente
- Apoiam a Engenharia Reversa (Reverse Engineering)
- Baseados em notações gráficas
- UML
- Define vários diagramas gráficos para representar propriedades estruturais e comportamentais de um sistema.
- UML
- Modelo
- Qualidade de Software
- Externa
- considera fatores que podem ser aferidos sem analisar o código.
- Fatores
- Correção
- Robustez
- Eficiência
- Portabilidade
- Facilidade de Uso
- Compatibilidade
- Pode ser avaliada por usuários comuns
- Interna
- Considera propriedades e características relacionadas com a implementação de um sistema.
- Somente pode ser avaliada por um especialista em Engenharia de Software
- Fatores
- Modularidade
- Legibilidade do código
- Manutenibilidade
- Testabilidade
- Considera propriedades e características relacionadas com a implementação de um sistema.
- Estratégias
- Métricas
- Código-fonte
- Incluem número de linhas de um programa
- Processos
- Inclui número de defeitos reportados em produção por usuários finais em período de tempo
- Código-fonte
- Métricas
- Práticas
- Revisões de código
- Código produzido por um desenvolvedor somente entra em produção depois de ser revisado e inspecionado por um outro desenvolvedor do time
- Revisões de código
- Externa
- Prática Profissional
- Responsabilidade ética na TI
- É a análise de como problemas evitáveis (desvantagens ou danos individuais ou de grupo) podem resultar de um sistema de TI e, em seguida, tomar medidas para evitá-los;
- Formação
- Cursos de Graduação
- Nível técnico
- Currículos de referência
- Cursos específicos
- Regulamentação da Profissão
- Código de Ética da Sociedade Brasileira de Computação (SBC)
- Responsabilidade ética na TI
- Aspectos Econômicos
- Toda decisão possui um custo de oportunidade,
- Custos
- Benefícios
- Riscos
- Oportuniddes
- Retorno dos investimentos
- Monetizando o software
- Quanto cobrar pelo desenvolvimento de um sistema?
- Engenharia de Requisitos
- Disciplina da Engenharia
Dificuldades no Processo de Desenvolvimento de Software
- Acidentais
- Associadas a problemas tecnológicos
- Essenciais
- Complexidade
- Conformidade
- Facilidade de Mudanças
- Invisibilidade
- Estas tornam a engenharia de Software diferente das outras engenharias
- Acidentais
Information
- Description
- Mind Map on Engenharia de Software Cap. 1: Introdução, created by Edicleiton Alves on 26/05/2021.
- Created by
- Edicleiton Alves
- Views
- 0
- Rating