Buscar

exercicios 2021

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 50 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 50 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 50 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

MODELOS DE CICLO DE VIDA DE SOFTWARE
O ciclo de vida do desenvolvimento de sistemas (Systems Development Life Cycle – SDLC), conhecido também como ciclo de vida do software, refere-se aos estágios de concepção, projeto, criação e implementação de um Sistema de Informação (SI).
Um desdobramento possível para SDLC é mostrado na figura a seguir.
Fundamentos de Engenharia de Software
1
Fundamentos de Engenharia de Software
2
Levantamento de necessidades:
 
essa atividade compreende diversas tarefas para o entendimento e o levantamento das necessidades da área de negócio, dos clientes ou dos usuários que precisam de um software de automação de suas atividades;
tem como resultados mais importantes a lista de requisitos do sistema a ser construído, as informações que serão tratadas e armazenadas e, se necessário, um protótipo das interfaces entre os usuários e o sistema de software.
Fundamentos de Engenharia de Software
3
Análise de alternativas:
 
essa atividade consiste na identificação e na avaliação de alternativas sistêmicas que melhor atendam aos requisitos do software a ser construído;
seria interessante, para que essa atividade fosse padronizada e a organização possuísse uma arquitetura de referência, que a base fosse para todas as soluções de tecnologia de todos os sistemas da empresa.
Fundamentos de Engenharia de Software
4
Projeto:
 
trata da construção das especificações detalhadas para o projeto selecionado;
essas especificações incluem projeto das interfaces, banco de dados, características físicas do sistema, tais como número, tipos e localizações das estações de trabalho, hardware de processamento, cabeamento e os dispositivos de rede; deve especificar os procedimentos para testar o sistema completo antes da instalação.
Fundamentos de Engenharia de Software
5
Desenvolvimento:
inclui o desenvolvimento ou a aquisição do software, a provável aquisição do hardware e o teste do novo sistema.
 
Implementação:
ocorre após o sistema ter passado satisfatoriamente por testes de aceitação. O sistema é transferido do ambiente de desenvolvimento para o ambiente de produção;
o sistema antigo (se existir) deve migrar para o novo.
Fundamentos de Engenharia de Software
6
Manutenção:
 
refere-se a todas as atividades relacionadas a um sistema depois que ele é implementado, devendo incluir atividades como a correção de software que não funcione corretamente, a adição de novos recursos aos sistemas em resposta às novas demandas dos usuários etc.
Fundamentos de Engenharia de Software
7
Não há modelo de SDLC uniformemente aceito. Alguns combinam desenvolvimento e implementação em uma única etapa. Outros combinam o levantamento e a análise das necessidades, também, em uma única etapa. Alguns modelos dividem o projeto em lógico e físico.
Fundamentos de Engenharia de Software
8
Os principais modelos de ciclo de vida de software
O modelo codifica-remenda (caixa-preta)
O modelo codifica-remenda significa um processo de ciclo de vida de software mais caótico. Partindo apenas de uma especificação ou simplesmente de uma reunião de trabalho, os desenvolvedores começam imediatamente a codificar, remendando, à medida que os erros vão sendo descobertos. Não existe nenhum processo definido e nenhum é seguido.
Fundamentos de Engenharia de Software
9
Esse modelo, provavelmente e infelizmente, seja o ciclo de vida mais usado na atualidade. Para alguns desenvolvedores, ele é atraente porque não exige nenhuma sofisticação técnica ou gerencial. Todavia, é considerado um modelo de alto risco, impossível de ser gerenciado e que não permite assumir compromissos confiáveis.
Fundamentos de Engenharia de Software
10
Esse modelo persistiu durante algumas décadas, e, como não existia separação de papéis, todos faziam um pouco de tudo. Às vezes, uma única pessoa analisava, codificava e testava um sistema inteiro.
Na busca de eliminar os problemas causados pelo método codifica-remenda, foram sendo criadas as metodologias conhecidas hoje como tradicionais, sendo a mais conhecida a chamada cascata, que é, também, referida como o modelo clássico de desenvolvimento de software.
Fundamentos de Engenharia de Software
11
Fundamentos de Engenharia de Software
12
Neste modelo com muita sorte existe uma especificação por escrito.
A codificação é iniciada imediatamente e os erros são corrigidos na medida em que são encontrados.
Este modelo não oferece nenhum mecanismo de gerenciamento, a não ser liberar um produto depois que os volumes de defeitos críticos tenham sido reduzido a níveis aceitáveis.
Fundamentos de Engenharia de Software
13
A garantia da qualidade do software é restrita a teste de níveis de sistema (testes do tipo caixa–preta, aquele que você entra com um dado e espera um resultado).
Essa abordagem é inaceitável para alguns cenários:
Requisitos que implicam na segurança de vidas humanas;
Existência de requisitos de qualidade;
Previsão de custo e cronograma preciso.
Fundamentos de Engenharia de Software
14
O modelo cascata (waterfall)
O modelo clássico ou cascata, que também é conhecido por abordagem top-down, surgiu na década de 1970. Até meados da década de 1980, foi o único modelo com aceitação geral; derivado de modelos de atividade de engenharia com o fim de estabelecer ordem no desenvolvimento de grandes produtos de software. 
Fundamentos de Engenharia de Software
15
Comparado com outros modelos, este é mais rígido e menos administrativo. Um dos mais importantes e é referência para muitos outros, servindo de base para projetos modernos. A versão original desse modelo foi melhorada e retocada ao longo do tempo, e este continua a ser muito utilizado hoje em dia.
Fundamentos de Engenharia de Software
16
Grande parte do sucesso do modelo cascata está no fato de ser orientado para a documentação. No entanto, esta abrange mais do que arquivo e texto: incluindo representações gráficas e mesmo simulações. Uma abordagem que incorpora processos, métodos e ferramentas deve ser utilizada pelos criadores de software.
Fundamentos de Engenharia de Software
17
O paradigma do ciclo de vida clássico demanda uma abordagem sistemática e sequencial para o desenvolvimento de software. Começa no nível do sistema e progride, através da análise, do design, da codificação, do teste e da manutenção, como apresentado na figura a seguir.
Fundamentos de Engenharia de Software
18
Fundamentos de Engenharia de Software
19
Problemas encontrados no ciclo clássico de desenvolvimento de software são fartamente documentados pelos autores consagrados da engenharia de software:
 
 - os projetos reais raramente seguem o fluxo sequencial que o modelo propõe; ocorrem interações, bem como voltas a níveis anteriores, provocando problemas na aplicação do paradigma;
 
Fundamentos de Engenharia de Software
20
  - frequentemente os usuários têm dificuldade de estabelecer explicitamente todos os requisitos do software, acompanhada das incertezas naturais que existem no início de muitos projetos;
 - uma versão do software somente estará disponível quando todo o sistema for definido e desenvolvido; qualquer alteração pode ocasionar um desastre no desenvolvimento do sistema; isso requer paciência dos usuários.
Fundamentos de Engenharia de Software
21
Esses problemas são reais, porém o paradigma do ciclo clássico de software tem um definitivo e importante lugar na engenharia de software: proporciona um modelo real para a colocação e uso dos métodos para analisar, projetar, codificar, testar e manter softwares.
Fundamentos de Engenharia de Software
22
Originou-se dos processos mais gerais de engenharia de sistemas. Devido ao encadeamento de uma fase com a outra, esse modelo é conhecido como modelo cascata ou modelo de ciclo de vida de software.
Para ocasiões em que os requisitos de um problema são razoavelmente bem compreendidos (quando o trabalho flui de modo razoavelmente linear). Isso algumas vezes acontece em uma adaptação bem definida desistemas já existentes ou aperfeiçoamento dos mesmos e é onde o modelo cascata pode ser melhor utilizado.
Fundamentos de Engenharia de Software
23
Os principais estágios desse modelo demonstram as atividades fundamentais de desenvolvimento:
- Análise e definição de requisitos: Os serviços, restrições e objetivos são definidos em conjunto com os usuários.
- Projeto de sistema de software: Divide os requisitos em hardware e software, estabelece uma arquitetura geral do sistema.
- Implementação e teste de unidade: O projeto de software é realizado, e testes unitários são realizados.
Fundamentos de Engenharia de Software
24
- Integração e teste de sistema: As unidades individuais do sistema são integrados e testados como um sistema completo para garantir que os requisitos foram atendidos.
- Operação e Manutenção: Geralmente é a fase mais longa. O sistema é instalado e colocado em operação.
Em princípio o resultado de cada fase resulta em um ou mais documentos aprovados. A fase seguinte não pode começar sem que a anterior tenha terminado. Porém na prática esses estágios se sobrepõem e trocam informações entre si.
Fundamentos de Engenharia de Software
25
Devido aos custos de produção e aprovação de documentos, as iterações são onerosas e envolvem um retrabalho significativo. É norma que depois de algumas iterações suspender parte dos desenvolvimentos com as especificações e prosseguir com os estágios posteriores do desenvolvimento.
Durante a fase final do ciclo de vida o software é colocado em uso. Erros e omissões nos requisitos originais de software são descobertos. Os erros de programação e projeto emergem e a necessidade de novas funcionalidades é identificada.
Fundamentos de Engenharia de Software
26
A vantagem do modelo cascata consiste na documentação produzida em cada fase e a sua aderência a outros modelos. Seu maior problema é a divisão inflexível do projeto em estágios distintos.
Hoje em dia com o ritmo rápido dos desenvolvimentos de software e as grandes torrentes de modificações de requisitos que os softwares sofrem o modelo cascata é inviável.
Fundamentos de Engenharia de Software
27
O modelo incremental
O modelo incremental pode ser visto como a aplicação do modelo cascata por diversas vezes em um mesmo projeto. Isso ocorre ao se dividir o desenvolvimento de um sistema complexo em pequenas partes, o que pode ocorrer de forma sequencial, parte a parte ou em paralelo, com equipes diferentes desenvolvendo partes diferentes.
Para apresentar o modelo, é utilizada uma visão do ciclo de vida em cascata considerada por Peres, Laskoski e Radaelli, mostrada na próxima figura.
Fundamentos de Engenharia de Software
28
Fundamentos de Engenharia de Software
29
As fases desse modelo significam:
 
 - comunicação: consiste de atividades para o levantamento dos requisitos do sistema e envolve a comunicação entre os desenvolvedores e o cliente;
Fundamentos de Engenharia de Software
30
- planejamento: consiste de atividades para o estabelecimento de um plano de desenvolvimento do sistema ou projeto de software. Descreve, também, as técnicas a serem conduzidas, os riscos prováveis, os recursos que serão necessários, os produtos de trabalho a serem produzidos e um cronograma;
Fundamentos de Engenharia de Software
31
 - modelagem: composta de atividades que incluem a criação de modelos que permitem ao desenvolvedor e ao cliente entender melhor os requisitos do software e o projeto que vai satisfazer a esses requisitos;
 
 - construção: essa fase combina a geração de código e os testes necessários para revelar erros no código implementado;
 - implantação: o software é entregue ao cliente, que avalia o produto e fornece feedback com base na avaliação.
Fundamentos de Engenharia de Software
32
Se essas fases se repetirem e pequenos pedaços do software forem sendo liberados ou agrupados para serem entregues ao cliente, teremos o que se chama de modelo incremental, mostrado na figura a seguir.
Fundamentos de Engenharia de Software
33
Fundamentos de Engenharia de Software
34
Vantagens apontadas pelos autores para o modelo incremental em relação ao modelo em cascata puro:
 
 - entregas parciais facilitam a identificação e a correção de erros entre os componentes do software;
 
 - necessidades não especificadas nas fases iniciais podem ser desenvolvidas nos incrementos;
Fundamentos de Engenharia de Software
35
 - cada iteração produz um conjunto de itens utilizáveis (se possível);
 
 - os feedbacks de iterações anteriores podem ser usados nos próximos incrementos;
 
 - os incrementos podem ser desenvolvidos por menos profissionais;
 
 - a entrega dos incrementos permite o cumprimento do prazo especificado.
Fundamentos de Engenharia de Software
36
 Como todo modelo conceitual, porém, o modelo incremental apresenta algumas desvantagens:
 
 - o número de iterações não pode ser definido no início do processo, o que pode não ser aceito pelo cliente;
 - o fim do processo também não pode ser previamente definido;
 - o gerenciamento e a manutenção do sistema completo podem se tornar complexos, principalmente, se ocorrem durante o desenvolvimento dos incrementos;
Fundamentos de Engenharia de Software
37
 - o gerenciamento do custo do projeto é mais complexo, em razão do número de iterações que pode acabar com a verba disponível.
Fundamentos de Engenharia de Software
38
Com o modelo incremental é possível entregar parte do projeto, ou chamada parte de funcionalidades básicas de um projeto, antes que o mesmo seja concluído na sua totalidade.
            
Quando um módulo incremental é usado, o primeiro incremento é frequentemente chamado de núcleo do produto. Isto é os requisitos básicos são satisfeitos, mas muitas características suplementares deixam de ser elaboradas.
Fundamentos de Engenharia de Software
39
O modelo Rapid Application Development (RAD)
Na busca de produtividade e qualidade no processo de desenvolvimento de sistemas, especialistas e autores da engenharia de software, baseados nos problemas do ciclo clássico (cascata), na evolução das técnicas estruturadas, no impacto das linguagens de programação orientadas a objetos e no surgimento dos conceitos de qualidade, no final da década de 1980 e início da década de 1990, propuseram um novo paradigma denominado de Rapid Application Development (RAD).
Fundamentos de Engenharia de Software
40
A metodologia RAD propõe um conjunto de elementos que criaram um novo paradigma incluindo a prototipação interativa, o desenvolvimento espiral e o uso intensivo de ferramentas de automação do desenvolvimento (CASE), com uso de linguagens de quarta geração, orientação a objetos e modelos- padrão de desenvolvimento, como a Unified Modeling Language (UML).
Tem-se sobre o modelo RAD:
Fundamentos de Engenharia de Software
41
 - é sequencial linear e enfatiza um ciclo de desenvolvimento extremamente curto;
 
 - o desenvolvimento rápido é obtido usando uma abordagem de construção baseada em componentes;
 
 - os requisitos devem ser entendidos corretamente, e o alcance do projeto deve ser restrito;
Fundamentos de Engenharia de Software
42
 - é usado principalmente para aplicações de sistemas de informação;
 
 - cada função principal pode ser direcionada para uma equipe RAD separada e, então, integrada para formar o todo.
 
A próxima figura mostra uma visão gráfica do modelo RAD:
Fundamentos de Engenharia de Software
43
Fundamentos de Engenharia de Software
44
Alguns autores consideram que nem todos os tipos de aplicação são apropriados para o modelo RAD. Para que este seja aplicado corretamente, as seguintes considerações devem ser levadas em conta:
 
 - a aplicação deve permitir uma efetiva modularização, com ciclos curtos de desenvolvimento;
 - se a aplicação exigir alto desempenho e se este for obtido sintonizando as interfaces dos componentes, a abordagem RAD poderá não funcionar a contento;
Fundamentos de Engenharia de Software
45
 - a prototipaçãointerativa e viva, aliada ao desenvolvimento incremental e não linear, são aspectos extremamente positivos para atingir os objetivos do desenvolvimento rápido;
 
 - a adoção da orientação a objetos ou o uso de linguagens de quarta geração é também um fator altamente positivo, principalmente, na aplicação de reuso de código;
 
 - o modelo RAD propõe-se a ser um método leve, flexível e adaptável às novas tecnologias emergentes que considerem o RAD um processo organizado, gerenciado e padronizado.
Fundamentos de Engenharia de Software
46
Considerações sobre o modelo RAD……
O RAD(Rapid Application Development, Desenvolvimento Rápido de Aplicação) é um modelo de processo de software incremental que enfatiza um ciclo de desenvolvimento curto.
O Modelo RAD é uma adaptação de “alta velocidade” do modelo em cascata, no qual o desenvolvimento rápido é conseguido com o uso de uma abordagem de construção baseada em componentes.
Fundamentos de Engenharia de Software
47
No modelo RAD a comunicação trabalha para entender os problemas dos negócios e as características informais que o software precisa acomodar.
O planejamento é essencial, porque várias equipes de software trabalham em paralelo em diferentes funções do sistema.
A modelagem abrange três das fases principais – modelagem de negócios, modelagem dos dados e modelagem dos processos.
Fundamentos de Engenharia de Software
48
A construção enfatiza o uso de componentes de software preexistentes e a aplicação de geração de códigos automática.
A implantação estabelece a  base das iterações subsequentes se necessárias.
Se uma aplicação comercial pode ser modularizada de modo a permitir que cada função principal possa ser completada em menos de três meses é uma candidata ao RAD.
Fundamentos de Engenharia de Software
49
A abordagem RAD tem desvantagens:
 - Para projetos grandes, mas passíveis de sofrer aumento, o RAD exige recursos humanos suficientes para criar um número adequado de equipes RAD.
 - Se desenvolvedores e clientes não estiverem comprometidos com as atividades continuamente rápidas, para completar o sistema em curtíssimo espaço de tempo, o projeto RAD falhará.
 - Se o sistema não puder ser adequadamente modularizado, as construções dos componentes necessários ao RAD serão problemáticas.
 - O RAD pode não ser ajustado quando os riscos técnicos são altos.
Fundamentos de Engenharia de Software
50

Outros materiais