Buscar

Engenharia de Software - Semana 3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Engenharia de Software
Semana 4
SOMMERVILLE – CAPÍTULO 9	 – Evolução de Software
O desenvolvimento de software não é interrompido quando o sistema é entregue, mas continua por toda a vida útil do sistema justamente para que este permaneça útil. 
Mudanças e modificações ocorrem para correção de problemas, melhoria do desempenho e para o atendimento de expectativas dos usuários. 
Softwares são verdadeiros ativos das empresas, representam altos investimentos e a manutenção pode chegar a 2/3 dos custos. Ou seja, organizações gastam mais com evolução do que com desenvolvimento. 
evolução DE SOFTWARE
Desenvolvimento de software brownfield: termo que descreve situações nas quais os sistemas de software precisam ser desenvolvidos e gerenciados em um ambiente em que dependem de vários outros sistemas de software.
Evolução de software raramente acontece de forma isolada.
O alto custo de desenvolvimento resulta em sistemas com vida útil muito longa. É comum sistemas militares e de estruturas de grande porte serem usados por cerca de 30 anos ou até terem retorno do investimento.
evolução DE SOFTWARE
MODELO em espiral
Teste de defeito
O modelo ilustra toda a vida útil do sistema, em que cada etapa da engenharia de software é realizada após cada release.
Esse modelo implica que uma única organização é responsável tanto pelo desenvolvimento inicial como pela evolução.
Vida útil de software
MANUTENÇÃO - envolve atividades adicionais de processo, como o entendimento de programa, além das atividades normais de desenvolvimento de software.
EVOLUÇÃO - fase em que mudanças significativas na arquitetura e funcionalidade do software podem ser feitas. O software é usado com sucesso até sua estrutura ser degradada e demandar mudanças ambientais, como de hardware e sistemas operacionais.
SERVIÇO - as únicas mudanças feitas são relativamente pequenas e essenciais. Durante essa fase, o software ainda é útil, mas é considerado como substituível e não recebe novas mudanças.
Processos de evolução
A evolução pode ser informal com conversas entre usuários de desenvolvedores ou formal com documentação estruturada produzida em cada estágio do processo.
Propostas de mudança no sistema são os acionadores para a evolução.
As propostas de mudança podem vir de requisitos já existentes que não tenham sido implementados no release de sistema, solicitações de novos requisitos, relatórios de bugs do sistema apontados pelos stakeholders e novas ideias para melhoria do software vindas da equipe de desenvolvimento.
PROCESSOS de evolução
Etapas da evolução:
Solicitação de mudança.
Análise do impacto.
Planejamento da release.
Implementação de mudança.
Liberação do sistema
Você pode pensar em implementação de mudanças como uma iteração do desenvolvimento, em que as revisões do sistema são projetadas, implementadas e testadas.
PROCESSOs de evolução
Mudanças urgentes podem surgir por três motivos:
Defeito grave no sistema que precisa ser corrigido para permitir a continuidade do funcionamento normal.
Alterações no ambiente operacional com efeitos inesperados que interrompam o funcionamento normal.
Mudanças inesperadas no funcionamento do negócio que executa o sistema, como o surgimento de novos concorrentes ou a introdução de nova legislação que afete o sistema.	
Dinâmica da evolução
O processo de evolução de sistema envolve a compreensão do programa que tem de ser mudado e, em seguida, a implementação dessas mudanças
A dinâmica da evolução de programas é o estudo da mudança de sistema.
Estudos realizados sobre a mudança de sistema com intenção de compreender mais sobre as características de evolução de software nas décadas de 1970, 1980 e 1990 por Lehman e Belady resultaram em oito proposições denominadas Leis de Lehman.
Leis de Lehman
Mudança contínua - a manutenção de sistema é um processo inevitável.
Aumento da complexidade - quando um sistema é alterado, sua estrutura se degrada. A única maneira de evitar que isso aconteça é investir em manutenção preventiva.
Evolução de programa de grande porte - sistemas de grande porte têm uma dinâmica própria, estabelecida em um estágio inicial do processo de desenvolvimento
Estabilidade organizacional - a maioria dos grandes projetos de programação trabalha em um estado saturado. Ou seja, uma mudança de recursos ou de pessoal tem efeitos imperceptíveis sobre a evolução do sistema a longo prazo. 
Conservação da familiaridade - preocupação com o aumento das mudanças em cada release de sistema.
Crescimento contínuo - A funcionalidade oferecida pelos sistemas tem de aumentar continuamente para manter a satisfação do usuário.
Declínio de qualidade - A qualidade dos sistemas cairá, a menos que eles sejam modificados para refletir mudanças em seu ambiente operacional. 
Sistema de feedback - Os processos de evolução incorporam sistemas de feedback multiagentes, multiloop, e você deve tratá-los como sistemas de feedback para alcançar significativa melhoria do produto.
Manutenção de software
A manutenção de software é o processo geral de mudança em um sistema depois que ele é liberado para uso e entregue.
O termo geralmente se aplica ao software customizado em que grupos de desenvolvimento separados estão envolvidos antes e depois da liberação.
As alterações feitas no software podem ser simples mudanças para correção de erros de codificação, até mudanças mais extensas para correção de erros de projeto, ou melhorias significativas para corrigir erros de especificação ou acomodar novos requisitos.
Manutenção é uma atividade contínua.
Manutenção de software
Existem três diferentes tipos de manutenção de software:
 1. Correção de defeitos ou corretiva: mudanças para reparo de defeitos do software.
 2. Adaptação ambiental ou adaptativa: mudanças para adaptar o software a outro ambiente
3. Adição de funcionalidade ou evolutiva: mudanças para adicionar funcionalidade ao sistema.
Manutenção de software
A figura ilustra a distribuição dos custos de manutenção. 
Evoluir o sistema para lidar com novos ambientes e novos ou alterados requisitos consome mais esforço de manutenção e mais custos.	
Geralmente, é mais caro adicionar funcionalidade depois que um sistema está em operação do que implementar a mesma funcionalidade durante o desenvolvimento 
Custo da Manutenção
A manutenção costuma custar 3 vezes mais do que o desenvolvimento.
Como alternativa, é válido investir mais em desenvolvimento nas etapas iniciais para reduzir custos futuros de manutenção.
Manutenção de software
Prever o número de solicitações de mudança para um sistema requer uma compreensão do relacionamento entre o sistema e seu ambiente externo.
 Para avaliar os relacionamentos você deve considerar:
O número e a complexidade das interfaces de sistema.
O número de requisitos inerentemente voláteis de sistema. 
Os processos de negócio em que o sistema é usado
softwares legados
Muitos sistemas legados mais velhos são difíceis de serem compreendidos e mudados.
Os programas podem ter sido otimizados para o desempenho ou uso de espaço à custa de inteligibilidade, ou, ao longo do tempo, a estrutura inicial do programa pode ter sido danificada por uma série de mudanças. 
Para fazer com que os sistemas legados de software sejam mais fáceis de serem mantidos, é preciso aplicar reengenharia nesses sistemas visando a melhoria de sua estrutura e inteligibilidade.
A reengenharia pode envolver:
A redocumentação de sistema.
A refatoração da arquitetura de sistema.
A mudança de linguagem de programação para uma linguagem moderna.
E modificações e atualizações da estrutura e dos dados de sistema.
Processo de reengenharia
As etapas da reengenharia são:
Tradução de código-fonte.
Engenharia reversa.
Melhoria de estrutura de programa.
Modularização de programa. 
Reengenharia de dados.
Os custos aumentam de cima para baixo, de modo que a tradução de código-fonte é a opção mais barata. A reengenharia como parte da migração da arquitetura é a mais cara.
O problema com a reengenharia de softwareé que existem limites práticos para o quanto você pode melhorar um sistema por meio da reengenharia
Manutenção preventiva
A refatoração é o processo de fazer melhorias em um programa para diminuir a degradação gradual resultante das mudanças.
Isso significa modificar um programa para melhorar sua estrutura, para reduzir sua complexidade ou para torná-lo mais compreensível. 
Quando você refatorar um programa, não deve adicionar funcionalidade, mas concentrar-se na melhoria dele. Portanto, você pode pensar em refatoração como uma “manutenção preventiva”, que reduz os problemas de mudança no futuro.
Manutenção preventiva
	REENGENHARIA	REFATORAÇÃO
	Ocorre depois que um sistema foi mantido por algum tempo e com o aumento dos custos de manutenção.
Reestruturação e redocumentação do software para torná-lo mais fácil de se entender e mudar	É o processo contínuo de melhoria ao longo do processo de desenvolvimento e evolução para evitar a degradação do código.
Preserva sua funcionalidade, pode ser pensada como manutenção preventiva
Softwares legados
Mais e mais empresas estão começando a entender que o processo de desenvolvimento de um sistema é um processo integral de ciclo de vida e que uma separação artificial entre desenvolvimento de software e manutenção de software é inútil.
De uma perspectiva de negócio, você precisa decidir se o negócio realmente necessita do sistema. 
De uma perspectiva técnica, você precisa avaliar a qualidade do software de aplicação e o apoio de software e hardware do sistema.
Softwares legados
Manter esses sistemas em funcionamento se tornará caro com baixo retorno. Esses sistemas devem ser descartados.
Esses sistemas são importantes para o negócio, portanto, eles não podem ser descartados. 
Esses sistemas não contribuem muito para o negócio, mas seus custos de manutenção podem não ser altos.
Esses sistemas precisam ser mantidos em operação
Softwares legados
Para avaliar um sistema de software a partir de uma perspectiva técnica, é preciso considerar tanto o sistema de aplicação em si, quanto o ambiente no qual ele opera.
O ambiente inclui o hardware e todos os softwares de apoio associados (compiladores, ambientes de desenvolvimento etc.) necessários para manter o sistema.
O ambiente é importante porque muitas mudanças de sistema resultam de mudanças no ambiente, como atualizações no hardware ou sistema operacional.

Continue navegando