42
Engenharia de Software II Processos de Software Profª Luciana Bolan Frigo

Aula Processos de Software

Embed Size (px)

Citation preview

Page 1: Aula Processos de Software

Engenharia de Software II Processos de Software

Profª Luciana Bolan Frigo

Page 2: Aula Processos de Software

Objetivos

Conhecer os modelos de processos de software, suas vantagens e desvantagens

Page 3: Aula Processos de Software

Tamanho de Software

Retirado de prof. Anderson Cavalcanti UFRN

Page 4: Aula Processos de Software

Tamanho de Software

Michael Cusumano, na revista Communications of the ACM de Julho de 2006

Um dado interessante é a progressão do tamanho da base de código do Windows : a versão 95 possuía 15 milhões de linhas de código, o Windows XP possui 35 milhões. Já o Windows Vista deve possuir acima de 50 milhões (4.000 programadores).

Page 5: Aula Processos de Software

Processos de Software

Um processo é uma série de etapas envolvendo atividades, restrições e recursos, tendo em vista a produção de determinado produto.

Processo de Software: Especificação

Projeto e implementação

Validação

Evolução

Page 6: Aula Processos de Software

Modelo

Um modelo de processo de software é uma representação abstrata de um processo de software.

Apresenta uma descrição do processo sob uma perspectiva em particular.

Page 7: Aula Processos de Software

Desenvolvimento de Software

Definição: qual o problema?

Desenvolvimento: quais as possíveis soluções e como implementá-las?

Manutenção: mudanças para correção de erros e melhoria

Page 8: Aula Processos de Software

Fase de Definição

O que será desenvolvido?

Quais as funções e desempenhos desejados?

Qual o comportamento esperado do sistema?

Quais os critérios de validação para definir se o sistema foi bem definido?

Quais informações serão processadas?

Que interfaces serão estabelecidas?

Que restrições existem?

Page 9: Aula Processos de Software

Fase de Desenvolvimento

Como o software será desenvolvido? Como os dados serão estruturados? Como os detalhes procedimentais serão

implementados? Como serão as interfaces? Como serão feitos os testes? Como o projeto será traduzido para uma linguagem

de programação?

Modelagem Podem ser estruturais (organização do sistema) ou

comportamentais (dinâmica do sistema)

Page 10: Aula Processos de Software

Fase de Manutenção

Focaliza as mudanças no software após a liberação para o uso operacional

Repete os passos das fases de definição e desenvolvimento, mas no contexto de um software existente

Page 11: Aula Processos de Software

Processo de desenvolvimento Software ou Ciclo de Vida de Software

Apresenta um conjunto de atividades que vai desde a concepção até a “morte” do software.

A transição entre as fases é marcada por algum evento.

A escolha do modelo depende da complexidade do problema e da solução, da frequência esperada de mudanças, da utilidade das funcionalidades parciais.

Page 12: Aula Processos de Software

Processo de Software ou Ciclo de Vida de Software

Todos os processos de software existentes conduzem a uma solução de software.

A cada novo projeto, um processo deve ser definido, baseado no tipo de aplicação, prazos, custos, recursos e riscos.

Page 13: Aula Processos de Software

O que é processo?

Uma receita é um processo?

Ela pode ser executada de formas diferentes?

Uma torta para diabéticos ou para que tem intolerância a lactose são executadas da mesma forma?

Page 14: Aula Processos de Software

Escolha do processo de desenvolvimento de software

Características da aplicação (domínio do problema, tamanho, complexidade, etc.)

•Tecnologia a ser adotada na sua construção (paradigma de desenvolvimento, linguagem de programação, etc.)

•Organização onde o produto será desenvolvido

•Características da equipe

•Estabilidade dos requisitos

•Outros

Page 15: Aula Processos de Software

Atividade

Desenvolva um modelo de processo de software e aponte as principais vantagens e desvantagens do modelo.

Tempo: 15 min.

Page 16: Aula Processos de Software

Modelos de Processo de Software

Um processo de software é formado por um conjunto de atividades, métodos, práticas e transformações que guiam as pessoas no desenvolvimento do software.

Um processo deve considerar as relações entre as atividades, os artefatos produzidos, as ferramentas e procedimentos necessários e as habilidades e treinamento das pessoas envolvidas.

Para cada atividade de um processo tem-se: Pré-atividades;

Artefatos de entrada (insumos) e de saída (produtos);

Recursos necessários (humanos, hardware, software, etc.)

Procedimentos (métodos, técnicas, modelos de documento etc.)

Page 17: Aula Processos de Software

Categorias de Modelos de Processo

Os modelos de processo, de maneira geral, contemplam as fases Análise e Especificação de Requisitos, Projeto, Implementação, Testes e Entrega e Implantação.

O modelo de processo escolhido depende fortemente das características do projeto.

Categorias:

Sequencial

Incremental

Evolutivo

Page 18: Aula Processos de Software

Modelo Sequencial

Organizam o processo em uma sequencia linear de fases.

O principal modelo desta categoria é o modelo em cascata, a partir do qual diversos outros modelos foram propostos, inclusive a maioria dos modelos incrementais e evolutivos.

Page 19: Aula Processos de Software

Modelo Clássico ou Cascata Proposto na década de 70

Requisitos são estabelecidos para todos os elementos do sistema

As atividades estão organizadas em forma sequencial

O trabalho anterior deve estar finalizado, verificado e aprovado antes de se iniciar a próxima fase.

Reflete o que é mais usado em outros projetos de engenharia.

Page 20: Aula Processos de Software

Modelo de Processo Cascata

v

Page 21: Aula Processos de Software

Vantagens do Modelo Cascata

Documentação produzida em cada fase e sua aderência a outros modelos de processo de engenharia;

Pode parecer atraente por não exigir nenhuma sofisticação gerencial;

Torna o processo de desenvolvimento estruturado;

Indicado para problemas pequenos e bem definidos, onde os desenvolvedores conhecem bem o domínio do problema e os requisitos podem ser claramente estabelecidos.

Page 22: Aula Processos de Software

Desvantagens do Modelo Cascata

Falta de flexibilidade em separar o projeto em etapas distintas

Dificuldades em responder as mudanças de requisitos solicitadas pelo cliente

Este modelo é apropriado nas situações onde os requisitos estão bem definidos

Alto risco, difícil de gerir

Projetos reais raramente seguem o fluxo sequêncial

Versão executável em etapa avançada de desenvolvimento

Page 23: Aula Processos de Software

Modelo V

Similar ao cascata, mas com planejamento de testes nas fases de desenvolvimento

Engenharia de Sistemas

Análise

Projeto

Codificação

Teste de Sistemas

Teste de Validação

Teste de Integração

Teste de Unidade

Page 24: Aula Processos de Software

Modelo V

A ligação entre os lados direito e esquerdo do modelo V implica que, caso sejam encontrados problemas em uma atividade de teste, a correspondente fase do lado esquerdo e suas fases subsequentes podem ser executadas novamente para corrigir ou atenuar esses problemas.

Os modelos sequenciais pressupõem que o sistema e entregue completo, após a realização de todas as atividades do desenvolvimento.

Page 25: Aula Processos de Software

Modelo Incremental

Ha muitas situações em que os requisitos são razoavelmente bem definidos, mas o tamanho do sistema a ser desenvolvido impossibilita a adoção de um modelo sequencial, sobretudo pela necessidade de disponibilizar rapidamente uma versão para o usuário;

No desenvolvimento incremental, o sistema é dividido em subsistemas ou módulos, tomando por base a funcionalidade.

A cada ciclo ou iteração, uma versão operacional do sistema será produzida e entregue para uso ou avaliação detalhada do cliente.

Page 26: Aula Processos de Software

Entrega Incremental

Modelo Cascata + Prototipagem

Cliente identifica os serviços (+ importantes e – importantes) definindo o número de incrementos de software e as funcionalidades de cada etapa

Difere da prototipação pois a cada incremento produz uma versão operacional do software

Page 27: Aula Processos de Software

Entrega Incremental

Page 28: Aula Processos de Software

Entrega Incremental

Vantagens: Os clientes não precisam esperar até a entrega do

sistema inteiro para se beneficiarem dele O risco de falha geral do projeto é menor Partes mais importantes são entregues primeiro e

tendem a serem mais testadas

Desvantagens: Os incrementos devem ser relativamente pequenos

(20 mil linhas de código) podendo ser difícil mapear os requisitos do cliente em tamanho adequado

Métodos Ágeis (XP: programação em pares e aprimoramento constante do código)

Page 29: Aula Processos de Software

Evolutivos

Surgem para minimizar os pontos fracos do processo Cascata.

Permitem que se trabalhe com um subconjunto de requisitos do produto completo os quais são incrementados, gradualmente e entregues aos clientes.

Enquanto modelos incrementais tem por base a entrega de versões operacionais desde o primeiro ciclo, os modelos evolutivos não tem essa preocupação.

Na maioria das vezes, os primeiros ciclos produzem protótipos ou até mesmo apenas modelos. A medida que o desenvolvimento avança e os requisitos vão ficando mais claros e estáveis, protótipos vão dando lugar a versões operacionais, até que o sistema completo seja construído.

Quando o problema não é bem definido e ele não pode ser totalmente especificado no início do desenvolvimento, deve-se optar por um modelo evolutivo.

Page 30: Aula Processos de Software

Prototipação

Possibilita que o desenvolvedor crie um modelo (protótipo) do software que deve ser construído

Apropriado quando: O cliente tem uma visão geral do software mas não

identificou os requisitos de entrada, processamento e saída com detalhes

Desenvolvedor não tem certeza da eficiência de um algoritmo, forma de interação homem- máquina

Protótipo serve para identificar os requisitos

Page 31: Aula Processos de Software

Prototipação

Investigatório ou Exploratório

Objetivo é trabalhar com o cliente para explorar os requisitos e entregar um sistema final. Implementação inicial e refinamento de versões

Evolucionária

Desenvolve o protótipo e valida os requisitos e, à medida em que novos requisitos são fornecidos.

Page 32: Aula Processos de Software

Prototipação

Page 33: Aula Processos de Software

Prototipação

Desvantagens

O processo não é visível

Sistemas são mal estruturados

Cliente “força” a utilização do protótipo como produto final

Vantagens

Recomendado para sistemas:

De pequeno e médio porte (até 500 mil linhas)

Com ciclo de vida curto

Page 34: Aula Processos de Software

Modelo evolutivo mais difundido.

Novo elemento: Análise de riscos

Processo é representado como uma espiral, tem-se em cada loop: Definição dos objetivos

Avaliação e redução de riscos

Desenvolvimento e validação

Planejamento

Não tem fases específicas para especificação e projeto

Reconhecimento explícito dos Riscos

Modelo Espiral

Page 35: Aula Processos de Software

Modelo espiral

Page 36: Aula Processos de Software

Modelo Espiral

O produto resultante do primeiro ciclo pode ser uma especificação do produto ou um estudo de viabilidade. As passadas subsequentes ao longo da espiral podem ser usadas para desenvolver protótipos, chegando progressivamente a versões operacionais do software, ate se obter o produto completo.

É a abordagem mais realista para o desenvolvimento de software

Capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva

De cada iteração ao redor da espiral derivam versões mais completas: concepção, desenvolvimento, melhoria, manutenção

Integram gerenciamento de projetos com engenharia

O cliente está sempre envolvido

Page 37: Aula Processos de Software

Outros Modelos

Page 38: Aula Processos de Software

Modelo de Métodos Formais

Descrição Matemática Precisa

Não ambígua

Permite verificar propriedades (ex. consistência, ambiguidade, completude)

É a base para

Documento contratual

Documentação do produto

Referência para etapas seguintes

Page 39: Aula Processos de Software

Desenvolvimento Formal de Sistemas

Desvantagens

Necessita de treinamento para aplicar a técnica

Consome muito tempo (caro)

Dificuldade em especificar formalmente alguns aspectos do sistema como a interface do usuário

Vantagens

Usado em sistemas críticos em termos de segurança (equipamentos médicos, sistemas para aviões, foguetes)

Page 40: Aula Processos de Software

Desenvolvimento baseado em Componentes

Baseado em componentes reusáveis ou em COTS (Commercial-off-the-shelf)

Etapas do Processo

Análise do Componente

Modificações dos requisitos

Projeto de sistema com reuso

Desenvolvimento e integração

Page 41: Aula Processos de Software

Exercícios

1. Sugira e justifique o modelo mais apropriado para o desenvolvimento dos seguintes sistemas:

• Um sistema para controlar um antibloqueador de freios em um automóvel

• Um sistema de contabilidade de universidade que substitui um sistema existente

• Um sistema interativo que permite aos passageiros encontrar o horário dos trens por terminais nas estações

2. Explique porque um sistema de software usado em um ambiente real deve mudar sob pena de tornar-se progressivamente menos útil.

Page 42: Aula Processos de Software

Referências

• SOMMERVILLE, Ian, Software Engineering, Addison-Wesley , 9th Edition, 2011

• PRESSMAN, Roger, Engenharia de Software, Makron Books, 2002