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
- Análise: Levantamento de requisitos.
- Projeto: A partir dos requisitos levantados, inicia-se o uso de diagramas e a alocação de recursos.
- Codificação: Com base no diagrama, o projeto é codificado baseado nos documentos.
- 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.