Skip to content

Instantly share code, notes, and snippets.

@candidosouza
Last active March 22, 2022 22:19
Show Gist options
  • Save candidosouza/8100fb89d894fa48626a8c8ec1f314da to your computer and use it in GitHub Desktop.
Save candidosouza/8100fb89d894fa48626a8c8ec1f314da to your computer and use it in GitHub Desktop.
Pós graduação em Engenharia de Software - Conceitos gerais e principais abordagens de desenvolvimento do software.

Conceitos gerais e principais abordagens de desenvolvimento do software

  • Surgimento
  • Propostas e desafios
  • Ciclo de desenvolvimento do software
  • O papel do Engenheiro de software no processo de desenvolvimento
  • Modelo de certificação CMMI e propostas para garantia de qualidade de software

Surgimento

O termo de engenharia de software surgiu em 1968 em uma conferência na Alemanha, essa conferência era para debater sobre a crise de software... A crise de software está associada com o avanço dos hardwares, escancarando que o desenvolvimento de software era um desenvolvimento informal. A partir do momento que as maquinas avançaram, com os novos recursos de hardware, desenvolver sistemas, se tornou algo complexo.

Características de software com problemas

  • Projetos que estouram o orçamento
    • Orçamentos preestabelecidos não conseguem se cumpridos
    • Software produzido de baixa qualidade
      • Com falhas e defeitos
      • Não atende os requisitos especificados pelos clientes
      • Projetos ingerenciáveis
      • Com códigos de difícil manutenção

Esses problemas foram escancarados na crise de software, que até hoje não foram resolvidos...

Propostas e desafios

Propostas e desafios para resolver os problemas da crise de software com maturidade.

Utilizar técnicas ou métodos para controlar a grade complexidades dos grandes sistemas. Criar um processo de desenvolvimento de software que tenha um conjunto de atividade para produção de um software de qualidade. Esse processo de desenvolvimento deve ser implantando e difundido por todos os membros da organização.

Atividades fundamentais para o processo de desenvolvimento de software.

  • 1º - Especificação
    • Fazer todo o levantamento de requisitos
    • Fazer o entendimento da necessidade do negócio do cliente
  • 2º - Projeto e desenvolvimento do software
    • Projetar o software com base na sua especificação
    • Validação do software, para ser validado o que foi desenvolvido comparado com a especificação
  • 3º - Evolução do software
    • Etapa em que o cliente utiliza, e conforme a necessidade o sistema evolui.

Atributos de um bom software

  • Facilidade de manutenção
  • Sistema confiável, sem perdas de informações
  • Software eficiente, com funcionalidade ao que ele se propõe
  • De fácil uso e operação por parte do usuário

Principais desafios

  • Heterogeneidade, lidas com diversidade grande de sistemas
  • Desafio da entrega, com prazos apertados...
  • Criar um cronograma real
  • Desenvolver um sistemas de confiança

Ciclo de desenvolvimento do software

  • Necessidade do cliente
  • Definição dos requisitos
  • Analise dos requisitos
  • Projeto de desenvolvimento
  • Processo do desenvolvimento
  • Implementação o sistema
    • Testes de unidades
    • Testes de integração
  • Entrega ao cliente para seu uso
  • Processo de manutenção e treinamento

O papel do Engenheiro de software no processo de desenvolvimento

  • Responsável pelo levantamento dos requisitos e pelo projeto e construção do sistema
    • Ter o domínio técnico pelas ferramentas usadas no projeto
    • Pela linguagem de programação usada no projeto
      • Orientação a Objetos
      • Linguagens para web
  • Ter jogo de cintura para entender a necessidade do cliente
  • Buscar todo o entendimento do projeto
  • Responsável por testar o software
  • Garantir que o software tenha maior qualidade possível
  • Aspectos humanos
    • Senso de responsabilidade individual
    • Consciência aguçada
    • Ser honesto com os clientes com estipulação de prazos, custos e o que é possível ou não de ser feito
    • Bastante resiliência sobre pressão
    • Leal
    • Ser atento aos detalhes
    • Ser bastante pragmático

Modelo de certificação CMMI e propostas para garantia de qualidade de software

  • CMMI Capability Maturity Model Integration (Modelo de Capacidade e Maturidade Integrado)
    • Modelos de Certificações CMMI
      • PP (Planejamento do Projeto)
      • REQM (Gerenciamento dos requisitos)
      • MA (Medição e Análise)
      • CM (Gerenciamento de Configurações)
      • PPQA (Garantia de Qualidade de Processo Produtivo)

Áreas de processo CMMI

Representação Contínua

Define uma sequência para melhoria de uma área de processos e ao mesmo tempo permite uma flexibilidade na escolha das áreas de processo a serem melhoradas, possibilitando a organização direcionar seus esforços de melhoria nas áreas que julgar mais relevante. É caracterizado por: Níveis de Capacidade (Capability Levels):

  • Nível 0: Incompleto (Ad-hoc)
  • Nível 1: Executado
  • Nível 2: Gerenciado / Gerido
  • Nível 3: Definido
  • Nível 4: Gerenciado quantitativamente --- REMOVIDO DA v.1.3
  • Nível 5: Em otimização --- REMOVIDO DA v.1.3

Representação Por Estágios

Disponibiliza uma sequência pré-determinada para melhoria baseada em estágios que não deve ser desconsiderada, pois cada estágio serve de base para o próximo. É caracterizado por Níveis de Maturidade (Maturity Levels):

  • Nível 1: Inicial (Ad-hoc)
  • Nível 2: Gerenciado/Gerido
  • Nível 3: Definido
  • Nível 4: Quantitativamente gerenciado / Gerido quantitativamente
  • Nível 5: Em otimização

Vantagens do modelo CMMI

  • Indentificar o estágio atual em que a organização está e fazer melhorias
  • Melhoria do processo de desenvolvimento de software
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment