GoConqr hat ein neues Design! Sag uns, wie es dir gefällt.

Mindmap

Engenharia de Software Cap. 1: Introdução

Edicleiton Alves Portugiesisch

Mapa mental sobre Engenharia de Software: Conferência da OTAM, crise do software e dificuldades no desenvolvimento

Mapa mental: Engenharia de Software Introdução

Inhalt der Mindmap

Engenharia de Software Cap. 1: Introdução

  1. 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
  2. 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
  3. 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
        • 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
      • 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
          • 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
      • 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
        • 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.
      • 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
        • 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
        • 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
      • 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)
      • 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?
  4. 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

Informationen

Beschreibung
Mindmap am Engenharia de Software Cap. 1: Introdução, erstellt von Edicleiton Alves am 26/05/2021.
Erstellt von
Edicleiton Alves
Aufrufe
0
Bewertung

Feedback

Worum geht es?

Wie gefällt dir das neue Design?

Dein Eindruck