Conceitos Essenciais de Engenharia de Software e Gestão

Classificado em Computação

Escrito em em português com um tamanho de 6,85 KB

Definições Fundamentais

Reengenharia: Consiste em repensar e redesenhar radicalmente os processos de negócio com o objetivo de conseguir grandes melhorias de desempenho.

Engenharia Reversa: Processo de análise de um determinado sistema com o objetivo de identificar os componentes do sistema, seus relacionamentos e criar representações do sistema em outra forma ou em níveis mais altos.

Ciclo de Vida de Desenvolvimento de Software (SDLC)

Fases Genéricas do Ciclo de Vida

  • Sistema: Por que o sistema deverá ser feito? (Viabilidade)
  • Requisitos: O que o software irá fazer? (Especificação)
  • Desenvolvimento: Concepção dos documentos e transformação para o projeto real.

Etapas do Desenvolvimento de Software

  1. Análise: Levantamento de requisitos.
  2. Projeto: A partir dos requisitos levantados, inicia-se o uso de diagramas e a alocação de recursos.
  3. Codificação: Com base no diagrama, o projeto é codificado baseado nos documentos.
  4. Testes: Homologação e auditoria do software.

Passos de Produção de Software

  • Análise: Levantamento de requisitos.
  • Projeto: Diagramas de classe, Use Case.
  • Implementação: A partir dos artefatos de projeto, realiza-se a codificação do software.

Manutenção: Se faz um novo processo ou se refaz algo. A Engenharia Reversa é utilizada quando não se tem documentação.

Abstração e Engenharia Progressiva/Reversa

Abstração: É o ato de focar no que é importante na questão, removendo as irrelevâncias.

Em cada fase do desenvolvimento, o nível de abstração é refinado: no início, é de alto nível; no fim, é de baixo nível.

O que define o grau de abstração:

  • Quanto menor o grau, mais detalhadamente você sabe.
  • Quanto maior o grau, menos informações detalhadas você possui.

Engenharia Progressiva: Processo de engenharia de software caracterizado pelas atividades progressivas do ciclo de vida, partindo de um alto nível de abstração para um baixo nível.

Engenharia Reversa: Processo inverso à Engenharia Progressiva, partindo de um baixo nível para um alto nível.

Elementos da Engenharia Reversa/Reengenharia

  • Nível de Abstração: Quanto maior o nível, mais compreensíveis se tornam as informações.
  • Completude do Processo: Nível de detalhes em cada nível de abstração.
  • Interatividade: O grau de participação do ser humano no processo de engenharia reversa.
  • Direcionalidade: Sentido que se dá às informações (ex: diagrama, workbench).

Recursos Utilizados na Engenharia Reversa e Reengenharia

  • Código-fonte.
  • Informações de usuários ou analistas.
  • Documentação existente.

Contextos para Aplicação

A Engenharia Reversa/Reengenharia é aplicada quando:

  • Se faz manutenção.
  • Há o mesmo paradigma, mas linguagem diferente.
  • Há mudança de paradigma.
  • Há mudança de paradigma e linguagem.

Alocação e Gestão de Recursos

A partir da alocação, você saberá o que é necessário para desenvolver o software (pessoal, recursos). A alocação exige uma Gestão.

  • Alocação: Colocação, distribuição para diversos locais ou finalidades.
  • Gestão: Planejar, organizar, compreender.
  • Gestão de Pessoas: Valoriza a cultura de ter pessoal de desenvolvimento motivado.

Recursos Necessários para Criar o Software (SW)

  • Recursos Humanos: Pessoas.
  • Recursos de Software Reusáveis: Componentes que já estão prontos (reutilização de componentes).
  • Recursos de Ambiente: Plataforma onde o SW será executado.

Gestão de Recursos Humanos

  • Seleção: Avaliação das aptidões necessárias para o desenvolvimento. Se houver perfil interno, não é necessária a contratação de novas pessoas.
  • Posição da Organização: Contrata ou realoca pessoas nas áreas necessárias.
  • Especificações Necessárias: Se for preciso programar web, é necessário um web designer.
  • Quantidade de Pessoas: Definida de acordo com o tamanho do SW.
  • Divisão das Equipes: Dividir o trabalho em equipes.

Recursos de Software Reusáveis

A reutilização de componentes é facilitada por:

  • A catalogação dos componentes facilita a referência.
  • A padronização facilita a aplicação.
  • A validação facilita a integração.
Tipos de Componentes Reusáveis
  • Componentes de Prateleira: Componente desenvolvido por si ou terceiros, pronto para uso.
  • Componente de Experiência Plena: Componente desenvolvido sob domínio, onde se pode seguramente mudar algo, pois há domínio e documentação.
  • Componente de Experiência Parcial: Componente adquirido, não se sabe como funciona, mas se tem documentação não segura; não há segurança para modificá-lo.
  • Componentes Novos: Não encontrados no mercado, então serão desenvolvidos.

Recursos de Ambiente: Englobam hardwares e softwares necessários para a execução e o desenvolvimento do SW.

Práticas Chave na Alocação de Recursos

Os recursos alocados no desenvolvimento do Software incluem:

  • Software Reusável: Componentes de prateleira, novos componentes, componentes de experiência plena, componentes de experiência parcial.
  • Pessoal: Habilidades, número, localização.
  • Ambiente: Hardware, recursos de rede, ferramentas de software.
  • Práticas Chave: Formação da equipe, comunicação, gerenciamento do ambiente de trabalho.

Papéis no Projeto de Software

  • Gerentes Seniores: Grande influência no projeto.
  • Gerentes Técnicos: Planejam, motivam, organizam e controlam os programadores.
  • Programadores: Possuem habilidades técnicas para desenvolver o projeto.
  • Clientes: Especificam os requisitos.
  • Usuários Finais: Interagem com o SW uma vez liberado para uso.

Entradas relacionadas: