Aula 2 Processo

Preview:

DESCRIPTION

aula 2 engenharia de software

Citation preview

Fernanda Campos

DCC/UFJF

Aula 2

Engenharia de Software

Processo de Software

� O desenvolvimento de software compreende um conjunto de etapas que envolve métodos, ferramentas e procedimentos, chamadas Modelo de Processo de Software.

� Estes modelos são escolhidos considerando:� domínio da aplicação� os métodos e as ferramentas a serem usadas� os controles e os artefatos que precisam ser entregues� as características do grupo desenvolvedor� o grau de conhecimento sobre o problema.

Processo de Software

Processo de Software

� Definições (Sommerville)Processo de Software

� Conjunto de atividades para especificação, projeto, implementação e teste de sistemas de software

� Modelo de Processo Software� Um modelo de processo software é uma

representação abstrata de um processo.� Apresenta a descrição de um processo a partir

de uma perspectiva particular.

Modelo de Ciclo de Vida Clássico

� Às vezes chamado de modelo cascata ouainda de modelo linear seqüencial oparadigma desse ciclo de vida requer umaabordagem sistemática e seqüencial aodesenvolvimento.

� É o paradigma mais antigo e o maisusado.

Modelo de Ciclo de Vida Clássico

Modelo de Ciclo de Vida Clássico

� Problemas

� Os projetos reais raramente seguem o fluxoseqüencial que o modelo propõe;

� Muitas vezes é difícil para o cliente declarar todasas exigências explicitamente;

� Uma versão do programa não estará disponívelaté um ponto tardio do cronograma;

� O cliente precisa ter paciência.� Indicado somente se os requisitos são bemconhecidos.

Modelo de Prototipagem

� Em situações em que a incerteza está presente na definiçãode requisitos, objetivos e procedimentos a prototipagempode representar uma abordagem interessante.

� A prototipagem permite a criação de um modelo dosoftware que será desenvolvido, em uma das seguintesformas:

� Um protótipo que retrata a interação homem-máquina de forma que o usuário entenda estainteração;

� Um protótipo de trabalho que implemente umsubconjunto das funções do software;

� Um programa que executa parte ou toda a funçãodesejada, mas que tem outras características queserão melhoradas em um novo esforço dedesenvolvimento.

Modelo de Prototipação

• Problemas

• O cliente vê o protótipo como uma versão detrabalho do software e exige a sua adequaçãopara o produto, pensando no prazo e nãoconsiderando as questões de qualidade emanutenibilidade;

• O desenvolvedor muitas vezes faz concessões deimplementação a fim de colocar um protótipo emfuncionamento.

Modelo Desenvolvimento Rápido da

Aplicação - RAD

� É um modelo de desenvolvimento de software incremental que enfatiza um ciclo de desenvolvimento extremamente curto.

� É uma adaptação do modelo seqüencial linear, no qual o desenvolvimento rápido se utiliza da construção baseada em componentes.

� Se os requisitos são bem compreendidos e o objetivo do projeto é restrito, o processo RAD permite a uma equipe de desenvolvimento criar um sistema plenamente funcional, dentro de períodos muito curtos (60 a 90 dias).

� Muito aplicado a sistemas de informação.

Modelo Desenvolvimento Rápido

da Aplicação - RAD

� Fases:� Modelagem do negócio: o fluxo de

informação entre as funções do negócio é modelada.

� Modelagem de dados: o fluxo de informação é refinado num conjunto de objetos de dados necessários para dar suporte ao negócio. Os atributos e e as relações são definidas.

� Modelagem do processo: descrições do processamento são criadas para adicionar, modificar, descartar ou recuperar um objeto de dados.

Modelo Desenvolvimento Rápido da

Aplicação - RAD

� Fases� Geração da aplicação: usa técnicas de

quarta geração, reuso e desenvolvimento de componentes, e ferramentas automatizadas para facilitar a construção.

� Teste e entrega: reutiliza componentes o que reduz o tempo de teste, porém os novos componentes precisam ser testados e as interfaces exercitadas.

Modelo Desenvolvimento Rápido da

Aplicação - RAD

� Desvantagens� Para projetos grandes exige RH suficientes para criar um

número adequado de equipes RAD� Exige desenvolvedores e clientes compromissados.� Nem todos os tipos de aplicação são apropriadas.� Quando riscos técnicos forem elevados o RAD não é

adequado (novas tecnologias, interoperabilidade com outros sistemas)

Modelos de Desenvolvimento

Evolucionários

� O software evolui durante um período de tempo� Requisitos do negócio e do produto mudam

frequentemente à medida que o desenvolvimento prossegue

� Prazos reduzidos de mercado exigem versão reduzida

� Os modelos evolucionários são interativos e permitem o desenvolvimento de versões cada vez mais completas do software.

Desenvolvimento Evolucionário

Incremental

� Modelo incremental� Combina elementos do modelo sequencial

linear (aplicado repetidamente) com a filosofia interativa da prototipagem.

� Cada sequência linear produz um incremento factível do software,operacional.

� È particularmente útil quando não há mão-de-obra disponível para uma implementação completa, dentro do prazo estabelecido.

Desenvolvimento Evolucionário

Incremental

Desenvolvimento Evolucionário

Incremental

Desenvolvimento Evolucionário

Incremental

Modelo Evolucionário - Espiral

� Foi desenvolvido para abranger asmelhores características tanto do ciclode vida clássico como de prototipação,acrescentando ao mesmo tempo umnovo elemento a análise de riscos.

Modelo Evolucionário - Espiral

� Atividades� Planejamento: determinação dos objetivos,

alternativas e restrições.� Análise de riscos: análise de alternativas e

identificação e resolução dos riscos.� Engenharia: desenvolvimento do produto no “nível

seguinte”.� Avaliação: feita pelo cliente: avaliação dos resultados

da engenharia.

Modelo Evolucionário - Espiral

Modelo Evolucionário - Espiral

Modelo Evolucionário - Espiral

Modelo Evolucionário - Espiral

� Cada interação ao redor da espiral possibilita a construção de versões progressivamente mais complexas. Para tal outros modelos de ciclo de vida podem ser usados para elucidar requisitos como o de prototipagem.

� O paradigma do modelo espiral é, atualmente, a abordagem mais realística para o desenvolvimento de software em grande escala. Ele usa uma abordagem evolucionária, capacitando o desenvolvedor e o cliente a

entender e reagir aos riscos de cada etapa evolutiva.

Desenvolvimento Orientado a Reuso

� Incorpora as características do modelo espiral e compõe aplicações a partir de componentes de software previamente desenvolvidos ou desenvolvidos durante o processo.

� Enfatiza a reutilização, isto é desenvolve para e com reuso.