Escolar Documentos
Profissional Documentos
Cultura Documentos
Tópicos Abordados:
O Processo de Software
Existem muitos processos de software diferentes, mas todos devem incluir quatro atividades
fundamentais para a engenharia de software:
1. Especificação de software. A funcionalidade do software e as restrições a seu
funcionamento devem ser definidas.
2. Projeto e implementação de software. O software deve ser produzido para atender às
especificações.
3. Validação de software. O software deve ser validado para garantir que atenda às demandas
do cliente.
4. Evolução de software. O software deve evoluir para atender às necessidades de mudança
dos clientes.
Esses modelos não são mutuamente exclusivos e muitas vezes são usados em conjunto,
especialmente para o desenvolvimento de sistemas de grande porte.
Com base na reutilização sistemática onde os sistemas são integrados a partir de componentes
existentes ou sistemas COTS (Commercial-off-the-shelf). (sistemas de prateleira)
Estágios do processo:
1. Análise de componentes. Dada a especificação de requisitos, é feita uma busca por
componentes para implementar essa especificação.
2. Modificação de requisitos. Durante esse estágio, os requisitos são analisados usando-se
informações sobre os componentes que foram descobertos. Em seguida, estes serão
modificados para refletir os componentes disponíveis.
3. Projeto do sistema com reuso. Durante esse estágio, o framework do sistema é projetado
ou algo existente é reusado.
4. Desenvolvimento e integração. Softwares que não podem ser adquiridos externamente são
desenvolvidos, e os componentes e sistemas COTS são integrados para criar o novo sistema.
A reutilização é agora a abordagem padrão para construir muitos tipos de sistemas de negócios.
Reutilização abordada com mais profundidade no Capítulo 16.
Existem três tipos de componentes de software que podem ser usados em um processo
orientado a reúso:
1. Web services desenvolvidos de acordo com os padrões de serviço e que estão disponíveis
para invocação remota.
2. Coleções de objetos que são desenvolvidas como um pacote a ser integrado com um
framework de componentes, como .NET ou J2EE.
3. Sistemas de software stand-alone configurados para uso em um ambiente particular.
2 - Atividades do Processo
Atividades de projeto
- Validação de software ou verificação e validação (V & V), tem a intenção de mostrar que
um software se adequa a suas especificações ao mesmo tempo que satisfaz as
especificações do cliente do sistema. Envolve verificação e revisão de processos e testes
de sistema.
- O teste do sistema envolve a execução do sistema com casos de teste que são
derivados da especificação dos dados reais a serem processados pelo sistema.
- O teste é a atividade de V & V mais comumente usada.
Estágios do processo
A Figura 2.7 ilustra como os planos de teste são o elo entre as atividades de teste e de
desenvolvimento. Esse modelo é, às vezes, chamado modelo V de desenvolvimento.
A flexibilidade dos sistemas de software é uma das principais razões pelas quais os softwares
vêm sendo, cada vez mais, incorporados em sistemas grandes e complexos.
À medida que os requisitos mudam por meio de circunstâncias de negócios em constante
mudança, o software que suporta os negócios também deve evoluir e mudar.
Embora tenha havido uma demarcação entre desenvolvimento e evolução (manutenção), isso é
cada vez mais irrelevante, pois cada vez menos sistemas são completamente novos.
Em vez de dois processos separados, é mais realista pensar na engenharia de software como
um processo evolutivo, no qual o software é constantemente alterado durante seu período de
vida em resposta às mudanças de requisitos e às necessidades do cliente.
Existem duas abordagens que podem ser adotadas para a redução de custos de retrabalho:
1. Prevenção de mudanças, em que o processo de software inclui atividades capazes de
antecipar as mudanças possíveis antes que seja necessário qualquer retrabalho. Por exemplo,
um protótipo de sistema pode ser desenvolvido para mostrar algumas características-chave do
sistema para os clientes.
2. Tolerância a mudanças, em que o processo foi projetado para que as mudanças possam ser
acomodadas a um custo relativamente baixo. Isso normalmente envolve alguma forma de
desenvolvimento incremental. As alterações propostas podem ser aplicadas em incrementos que
ainda não foram desenvolvidos. Se isso for impossível, então apenas um incremento (uma
pequena parte do sistema) deve ser alterado para incorporar as mudanças.
O autor discute outras duas maneiras de lidar com mudanças e mudanças nos requisitos
do sistema. São elas:
Benefícios da Prototipação
Protótipos Descartáveis
Os protótipos devem ser descartados após o desenvolvimento, pois não são uma boa base para
um sistema de produção:
- Pode ser impossível ajustar o sistema para atender a requisitos não funcionais;
- Os protótipos normalmente não são documentados;
- A estrutura do protótipo geralmente é degradada por meio de mudanças rápidas;
- O protótipo provavelmente não atenderá aos padrões normais de qualidade
organizacional
2. Entrega Incremental
● Desenvolvimento incremental:
- Desenvolva o sistema em incrementos e avalie cada incremento antes de
prosseguir para o desenvolvimento do próximo incremento;
- Abordagem normal utilizada em métodos ágeis;
- Avaliação feita por proxy de usuário/cliente.
● Entrega incremental:
- Implante um incremento para uso pelos usuários finais;
- Avaliação mais realista sobre o uso prático do software;
- Difícil de implementar para sistemas de substituição, pois os incrementos têm
menos funcionalidade do que o sistema que está sendo substituído.
Vantagens de entrega incremental
- Os clientes não precisam esperar até todo o sistema ficar pronto para obter lucro.
- Os incrementos iniciais atuam como um protótipo para ajudar a elicitar requisitos para
incrementos posteriores.
- Menor risco de falha geral do projeto.
- Os serviços de sistema de prioridade mais alta tendem a receber mais testes.
- A maioria dos sistemas requer um conjunto de recursos básicos que são usados por
diferentes partes do sistema.
- Como os requisitos não são definidos em detalhes até que um incremento seja
implementado, pode ser difícil identificar recursos comuns que são necessários para
todos os incrementos.
- A essência dos processos iterativos é que a especificação é desenvolvida em conjunto
com o software.
- No entanto, isso entra em conflito com o modelo de aquisição de muitas organizações,
onde a especificação completa do sistema faz parte do contrato de desenvolvimento do
sistema.
Um framework de processo de software dirigido a riscos (o modelo em espiral) foi proposto por
Boehm (1988).
- O processo é representado como uma espiral e não como uma sequência de atividades
com retrocesso.
- Cada loop na espiral representa uma fase do processo.
- Nenhuma fase fixa, como especificação ou design - os loops na espiral são escolhidos
dependendo do que é necessário.
- Os riscos são explicitamente avaliados e resolvidos ao longo do processo.
Setores do Modelo em Espiral
- O modelo espiral tem sido muito influente em ajudar as pessoas a pensar sobre iteração
em processos de software e introduzir a abordagem orientada a riscos para o
desenvolvimento.
- Na prática, no entanto, o modelo raramente é usado como publicado para o
desenvolvimento prático de software.
Fases do RUP
Iteração do RUP
● Os processos devem incluir atividades para lidar com a mudança. Isso pode envolver
uma fase de prototipagem que ajuda a evitar decisões ruins sobre requisitos e design.
● Os processos podem ser estruturados para desenvolvimento e entrega iterativo, de modo
que as mudanças possam ser feitas sem interromper o sistema como um todo.
● O Rational Unified Process é um modelo de processo genérico moderno que é
organizado em fases (início, elaboração, construção e transição), mas separa as
atividades (requisitos, análise e projeto, etc.) dessas fases.