Manutenção de Software é amplamente aceite como parte integrante do SDLC hoje em dia. Ele se destaca de todas as modificações e updations feito após a entrega do produto de software. Há um número de razões, por isso são necessárias alterações, algumas delas são brevemente mencionados abaixo:
As condições de mercado - políticas, que muda com o passar do tempo, tais como a tributação e recém-introduzidas restrições assim, como que para manter escrituração contábil, podem desencadear necessidade de modificação.
Requisitos do Cliente - Com o passar do tempo, o cliente pode pedir para os novos recursos ou funções no software.
Host modificações - Se o hardware e/ou plataforma (como sistema operacional) do host de destino as alterações, mudanças de software são necessários para manter a adaptabilidade.
Organização Muda - se é que existe algum nível de negócios mudança no cliente final, como, por exemplo, redução da organização força, adquirindo uma outra empresa, a organização se aventurando em novos negócios, a necessidade de modificação do software original pode surgir.
Em um software duração, tipo de manutenção pode variar de acordo com sua natureza. Ela pode ser apenas uma as tarefas de manutenção de rotina, como alguns bug descoberto por algum usuário ou pode ser um grande acontecimento em si próprio com base na manutenção tamanho ou natureza. Seguem-se alguns tipos de manutenção baseados em suas características:
Manutenção Corretiva - isso inclui as modificações e updations feito a fim de corrigir ou consertar os problemas, que são detectados pelo usuário ou celebrado por usuário relatórios de erro.
Manutenção Adaptativa - isso inclui as modificações e updations aplicado para manter o produto de software até a data e sintonizados com o mundo sempre em mudança da tecnologia e do ambiente de negócios.
Perfective Manutenção - isso inclui as modificações e atualizações feitas, a fim de manter o software utilizável por longo período de tempo. Ele inclui novas funcionalidades, novos requisitos do usuário para refinar o software e aumentar a confiabilidade e o desempenho.
Manutenção preventiva - isso inclui as modificações e updations para evitar futuros problemas de software. Ele tem por objetivo atender os problemas, que não são significativas neste momento, mas pode causar problemas sérios no futuro.
Relatos sugerem que o custo de manutenção é alto. Um estudo sobre a estimativa manutenção de software descobriu que o custo de manutenção é tão alta quanto 67% do custo do software todo ciclo de processo.
Em média, o custo de manutenção de software é mais do que 50% de todo O SDLC fases. Há vários fatores, que desencadeiam custo de manutenção vai alta, tais como:
O IEEE fornece uma estrutura para manutenção seqüencial atividades do processo. Ela pode ser usada em modo iterativo e pode ser estendida para que itens padronizados e processos podem ser incluídos.
Estas actividades vão lado a lado com cada um da fase seguinte:
Identificação e Rastreabilidade - que envolve atividades relativas à identificação da exigência de modificação ou manutenção. Ele é gerado pelo usuário ou sistema pode-se relatório via logs ou mensagens de erro.Aqui, o tipo de manutenção é classificado também.
Análise - a modificação é analisada pelo seu impacto sobre o sistema, incluindo segurança e implicações em termos de segurança. Se provável impacto é grave, solução alternativa é procurado. Um conjunto de modificações necessárias é então se materializou em especificações de requisitos. O custo da alteração/manutenção é analisado e a estimativa é celebrado.
Design - Novos módulos, que têm de ser substituídos ou modificados, são projetados contra especificações de requisitos definidos na etapa anterior. Casos de teste são criadas para validação e verificação.
Aplicação - Os novos módulos são codificados com a ajuda do projeto estruturado criado no projeto passo.cada programador é esperado para fazer testes de unidades em paralelo.
Teste de Sistema - teste de integração é feito entre os módulos recém-criado. Teste de Integração é também realizado entre novos módulos e o sistema. Finalmente, o sistema é testado como um todo, após testes regressivos dos procedimentos.
Teste de Aceitação - Depois de testar o sistema internamente, ele é testado para a aceitação com a ajuda dos usuários. Se a este estado, as queixas dos usuários algumas questões que são abordadas ou observado ao endereço na próxima iteração.
Entrega - após teste de aceitação, o sistema seja implantado em toda a organização, quer pelo pequeno pacote de atualização ou nova instalação do sistema. O teste final é feita no cliente final depois que o software é entregue.
Local de treinamento é fornecido, se necessário, além de uma cópia impressa do manual do usuário.
Gestão da Manutenção - gerenciamento de configuração é uma parte essencial da manutenção do sistema. Ele é auxiliado com ferramentas de controle de versão controle de versões, semi-versão ou patch management.
Quando temos necessidade de atualizar o software para mantê-lo para o mercado atual, sem afetar a sua funcionalidade, é chamada de software re-engenharia. Trata-se de um profundo processo onde a concepção de software é alterado e os programas são re-escritos.
Software de legado não pode manter sintonia com a mais recente tecnologia disponível no mercado. Como o hardware tornar-se obsoleta, a atualização do software torna-se uma dor de cabeça. Mesmo se o software envelhece com o tempo, sua funcionalidade não.
Por exemplo, inicialmente Unix foi desenvolvido em linguagem assembly. Em linguagem C entrou em existência, o Unix foi re-desenvolvido em C, porque o trabalho desenvolvido em linguagem assembly era muito difícil.
Além disso, algumas vezes os programadores aviso que algumas peças de software necessitam de mais manutenção do que os outros, e eles também precisam ser re-engenharia.
Há alguns termos importantes usados no Software re-engenharia
Trata-se de um processo para obter especificações do sistema através de uma profunda análise, compreensão do sistema existente. Este processo pode ser visto como modelo SDLC inversa, isto é, tentar obter maior nível abstração abstração inferior através da análise dos níveis.
O sistema existente é implementado anteriormente, sobre a qual não sabemos nada. Os Designers, em seguida, fazer engenharia reversa, olhando para o código e tentar fazer o projeto. Com o projeto em mãos, eles tentam concluir as especificações. Assim, vai no sentido inverso do código de especificação do sistema.
Trata-se de um processo de re-estruturação e re-construir o software existente. É tudo sobre re-organizar o código-fonte, quer na mesma linguagem de programação ou de uma linguagem de programação para outra. Reestruturação pode ter código-fonte de dados e reestruturação reestruturação ou ambos.
Re-estruturação não afeta a funcionalidade do software, mas aumentar a confiabilidade e mantenabilidade. Os componentes do programa, que podem causar erros muito freqüentes podem ser alteradas, ou atualizado com re-estruturação.
A confiabilidade do software em hardware obsoleto plataforma pode ser removida por meio re-estruturação.
Frente, a engenharia é um processo de obtenção do software desejado as especificações de mão que foram trazidos por meio de engenharia reversa. Supõe-se que houve alguma engenharia de software já feito no passado.
A engenharia é o mesmo que engenharia de software processo com apenas uma diferença - é realizada sempre após engenharia reversa.
Um componente é uma peça de software código de programa, que executa uma tarefa independente do sistema. Ele pode ser um pequeno módulo ou sub-sistema em si.
O procedimentos de login usado na web podem ser considerados como componentes, sistema de impressão no software pode ser visto como um componente do software.
Os órgãos têm alto nível de coesão de funcionalidade e menor taxa de acoplamento, ou seja, trabalhar de forma independente e podem executar tarefas sem depender de outros módulos.
Em OOP, os objetos são projetados são muito específicos para a sua preocupação e têm menos chances de ser usado em algum outro software.
Em programação modular, os módulos são codificados para executar tarefas específicas que podem ser utilizadas em vários outros programas de software.
Há toda uma nova vertical, que é baseado na reutilização de componentes de software, e é conhecida como Component Based Software Engineering (CBSE).
Re-uso pode ser feito em vários níveis
Nível de Aplicação - Onde toda uma aplicação que é utilizada como sub-sistema de novo software.
Nível de Componentes - onde os sub-sistema de uma aplicação que é utilizada.
Nível - Onde Módulos módulos funcionais são re-utilizados.
Componentes de Software fornecem interfaces, que podem ser utilizados para estabelecer a comunicação entre os diferentes componentes.
Dois tipos de método pode ser adotado: quer mantendo os requisitos mesmo e ajustar componentes ou, mantendo os órgãos mesmo e modificar os requisitos.
Especificação de Requisitos - funcionais e não-funcionais requisitos estão especificados, que um produto de software deve obedecer, com a ajuda do sistema existente, entrada do usuário ou ambos.
Design - Esta é também uma etapa do processo padrão SDLC, nos casos em que os requisitos são definidos em termos de software linguajar. Arquitetura básica do sistema como um todo e os seus sub-sistemas são criados.
Especificar os componentes - Através do estudo do projeto de software, os designers segregar todo o sistema em componentes menores ou sub-sistemas. Um completo projeto de software transforma-se em uma coleção de um enorme conjunto de componentes que trabalham em conjunto.
Busca adequada dos componentes - o componente de software repository é referida por designers para procurar o órgão correspondente, sobre a base da funcionalidade e destina requisitos de software.
Incorporar Componentes - todos combinados elementos estão embalados em conjunto para moldar-lhes como software completo.