Baixe o app para aproveitar ainda mais
Prévia do material em texto
Processo de Software Fundamentos de Engenharia de Software Professor Alexandre Cidral, Dr • Ao final desta unidade o estudante deverá ser capaz de • Conceituar processo de software • Caracterizar as atividades fundamentais da engenharia de software • Descrever os três modelos fundamentais de processo de software • Caracterizar as formas de gerenciar a mudança de requisitos de software Objetivos • Processo de software • Atividades fundamentais da engenharia de software • Modelos de processo de software • Gerenciamento de mudanças de requisitos de software Agenda • É um conjunto de atividades relacionadas que levam à produção de um produto de software • Este uso cada vez mais intenso tem sido justificado pela busca da melhoria da qualidade, da produtividade, da competitividade e da lucratividade das empresas Processo de Software • Ao descrever um processo de software é comum caracterizar • Etapas/fases • Atividades/tarefas • Produtos/entregas/artefatos • Papéis • Métodos, técnicas e ferramentas • Pré-condições • Pós-condições Processo de Software • As atividades fundamentais da engenharia de software são: • Especificação de software • Projeto e implementação de software • Validação e verificação de software • Evolução e manutenção de software Atividades fundamentais • A forme de organizar um processo de software é uma decisão da empresa • Por outro lado, há modelos de processo consagrados e que podem ser usados como base pelas empresas para organizarem o seu processo de produção: • Modelo em cascata • Modelo de desenvolvimento incremental • Modelo da engenharia de software orientada a reúso Modelos de processo de software • As atividades fundamentais são consideradas como etapas distintas do processo em que o resultado/saída de uma etapa é a entrada da etapa seguinte • No modelo original, havia baixa interação/feedback entre as etapas • O modelo evoluiu e passou a considerar que a cada etapa há uma retroalimentação das etapas anteriores como forma de lidar com as mudanças das necessidades dos cliente/requisitos do software Modelo em cascata Modelo em cascata Especificação •Requisitos são levantados, analisados, especificados e validados Projeto e implementação •Software é projetado e programado Verificação e validação •Software é verificado e validado por meio de testes Evolução e manutenção • Software é implantado, mantido e evoluído Modelo em cascata Especificação •Requisitos são levantados, analisados, especificados e validados Projeto e implementação •Software é projetado e programado Verificação e validação •Software é verificado e validado por meio de testes Evolução e manutenção • Software é implantado, mantido e evoluído F e e d b a c k • O modelo em cascata tende a ser adequado em situações de desenvolvimento de sistemas e software onde: • O escopo abrange uma ampla gama de funcionalidades • Há um nível de complexidade razoável • Envolve um equipe de desenvolvimento maior • Há uma maior estabilidade dos requisitos Modelo em cascata • O modelo em cascata apresenta algumas desvantagens: • Dificuldade em gerenciar a mudança de requisitos ao longo do próprio desenvolvimento • Tendência a maior tempo de liberação do produto para o cliente Modelo em cascata • As atividades fundamentais são intercaladas em uma série de ciclos ao final dos quais são geradas versões que incrementam a versão anteriormente liberada • Em alguns casos é chamado de modelo incremental interativo • Apresenta um certo nível de atividades realizadas simultaneamente Desenvolvimento incremental Desenvolvimento incremental Descrição de esboço Especificação Projeto e implementação Validação e verificação Versão Inicial Versões intermediárias Versão Inicial Atividades simultâneas • O desenvolvimento incremental tende a ser adequado em situações de desenvolvimento de sistemas e software onde: • O escopo vai gradualmente abrangendo mais funcionalidades • Há maior dificuldade de definir os requisitos a priori • Há uma pressão do cliente pela entrega de funcionalidades com maior rapidez Desenvolvimento incremental • O desenvolvimento incremental tem sido considerado o mais adequado quando se trata de desenvolvimento de software, por outro lado apresenta algumas desvantagens ou exigências: • Maior complexidade do gerenciamento do desenvolvimento inclusive considerando a necessidade de controle de versões • Uma maior probabilidade de retrabalho ao se considerar que um versão pode ser liberada a partir de requisitos não plenamente definidos e com bugs Desenvolvimento incremental Desenvolvimento orientado ao reúso • As atividades fundamentais são organizadas considerando a ideia de construir componentes de software que são utilizados no desenvolvimento de novos sistemas/softwares • O objetivo é reaproveitar especificações e códigos com vistas a melhorar a produtividade do desenvolvimento Desenvolvimento orientado ao reúso Especificação requisitos Análise de componentes Alteração de requisitos Projeto com reúso Implementação com reúso Validação e verificação • O desenvolvimento orientado ao reuso tende a ser adequado em situações de desenvolvimento de sistemas e software onde: • A software house pretende comercializar componentes para outras produtoras de software • Há o emprego pela software house de um framework de desenvolvimento • A software house busca aplicar o conceito de fábrica de software Desenvolvimento orientado ao reúso • O desenvolvimento orientado ao reuso tem sido considerado o mais adequado quando se trata pretende implantar o conceito de fábrica de software e se emprega algum framework de desenvolvimento, no entanto apresenta algumas desvantagens ou exigências: • Maior complexidade do gerenciamento do desenvolvimento inclusive considerando a necessidade de controle de versões • Uma equipe de arquitetura de software capaz de gerenciar o framework empregado Desenvolvimento orientado ao reúso • As atividades fundamentais são organizadas de forma diferente de acordo com as necessidades da empresa de software e seus clientes e de acordo com características do tipo de produto a ser desenvolvido. Atividades do processo Especificação Projeto Validação Evolução Especificação de software • Viabilidade técnica, financeira e operacional ESTUDO DE VIABILIDADE • Definir o que o software atenderá LEVANTAMENTO E ANÁLISE DE REQUISITOS • Descrever os requisitos considerando aspectos de negócio e de tecnologia ESPECIFICAÇÃO DE REQUISITOS • Verificar realismo, consistência e completude dos requisitos VALIDAÇÃO DE REQUISITOS Projeto e implementação de software • Definir estrutura do sistema identificando componentes e os relacionamentos entre estes componentes PROJETO DE ARQUITETURA • Definir interface entre componentes do sistema PROJETO DE INTERFACE • Definir como cada componente funcionará PROJETO DE COMPONENTE • Definir como os dados serão armazenados PROJETO DE BANCO DE DADOS Validação de software • Empregar técnicas para verificar os componentes TESTES DE DESENVOLVIMENTO • Empregar técnicas para testar a integração dos componentes TESTES DE SISTEMA • Empregar técnicas para averiguar se o sistema atende as necessidades do cliente TESTES DE ACEITAÇÃOEvolução de software • Manter o sistema em funcionamento e atendendo as necessidades do cliente MANUTENÇÃO DE SOFTWARE • Especificar, projetar, implementar, validar novas tecnologias e novas funcionalidades para atender necessidades do cliente EVOLUÇÃO Gerenciando mudanças no software • Antecipar as mudanças do produto antes que haja retrabalho • Pode envolver prototipação PREVENÇÃO • Acomodar as mudanças a um baixo custo • Pode envolver desenvolvimento incremental TOLERÂNCIA Prototipação Estabelecer objetivos do protótipo Plano de prototipação Definir funcionalidade do protótipo Definição geral do protótipo Desenvolver o protótipo Protótipo executável Avaliar o protótipo Relatório de avaliação Entrega incremental Definir esboço de requisitos Atribuir requisitos aos incrementos Projetar arquitetura do sistema Desenvolver incrementos Validar incrementos Integrar incrementos Validar sistema Implantar incrementos Sistema final Sistema Completo Sistema incompleto Framework: modelo espiral Boehm Framework: Rational Unified Process Considerações finais • Processos de software descrevem as etapas, métodos, técnicas, ferramentas, artefatos e papéis envolvidos no desenvolvimento de um produto de software • Há quatro atividades fundamentais para engenharia de software • Especificação • Projeto e implementação • Verificação e validação • Evolução e manutenção Considerações finais • Modelos de processo de software são formas de organizar um processo • Há três modelos de processo de software principais • Desenvolvimento em cascata • Desenvolvimento incremental • Engenharia orientada ao reuso Considerações finais • O gerenciamento da mudança de requisitos é um dos desafios a serem enfrentados pelos processos de software • Pode-se considerar como exemplo de formas de gerenciar as mudanças • Prototipação • Entrega incremental Considerações finais • Um framework é um modelo que serve de referência a implementação de processos de software • Pode-se considerar como exemplos de frameworks • Modelo de desenvolvimento em espiral de Boehm: inclui a análise de riscos no desenvolvimento de software • Rational Unified Process: modelo desenvolvimento orientado a objetos que inclui abordagem incremental interativa • SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson Prentice Hall, 2011. Capítulo 2 – Processos de software. Referências univille.br
Compartilhar