aula 2 processo
DESCRIPTION
aula 2 engenharia de softwareTRANSCRIPT
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.