processos de desenvolvimento de software professora: aline vasconcelos cefet campos...

28
Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos [email protected]

Upload: internet

Post on 17-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

Processos de Desenvolvimento de Software

Professora: Aline Vasconcelos

Cefet Campos

[email protected]

Page 2: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

2

Problemas Recorrentes:

Estimativas de prazo e custo são freqüentemente imprecisas.

Baixa Produtividade no desenvolvimento e alto custo. Baixa qualidade do software produzido. Custos em manutenção de software acabam

superando custos em desenvolvimento. Manutenção de software é ameaçada por projetos

ruins e falta de controle e gerência adequados.

Page 3: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

3

Processo: Um processo de desenvolvimento de software, em geral,

define:– Um ciclo de vida para o software, com atividades

de desenvolvimento, e um paradigma. – Os métodos que serão utilizados ao longo do

desenvolvimento. – As ferramentas que suportam estes métodos. – Quem participa (papéis) e quando.– Sub-produtos (ou artefatos) a serem produzidos

como saída de cada atividade. – Entradas e recursos consumidos por cada

atividade. – Restrições impostas.

Page 4: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

4

Processo: 3 Fases Genéricas DefiniçãoDefinição: identificação do “que”!

– O que o software deve fazer????– Que informação deve ser processada e

gerada????– Quais são as restrições do projeto????– O desempenho é crítico???

– ETAPA 1: ANÁLISE!!!!!!!ANÁLISE!!!!!!!– Foca no Domínio do Problema!!!!!Foca no Domínio do Problema!!!!!

Page 5: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

5

Processo: 3 Fases Genéricas DesenvolvimentoDesenvolvimento: identificação do “como”!

– Estruturas de dados/Banco de Dados!!– Definição de Arquitetura!!!!!!

• Módulos de Programas!– Definição de Programas/Algoritmos!!!!!– Tecnologia!!!!– Projeto de Telas!!!!!!– Projeto e Realização de Testes!!!

– ETAPA 2: PROJETO, PROGRAMAÇÃO, TESTES!!!!!!!PROJETO, PROGRAMAÇÃO, TESTES!!!!!!!– DOMÍNIO DA SOLUÇÃO!DOMÍNIO DA SOLUÇÃO!

Page 6: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

6

Processo: 3 Fases Genéricas SuporteSuporte: mudanças!!!!!

– Reaplica os passos das fases de Definição de Desenvolvimento, mas no contexto de um software existente.

– Tipos de Manutenção:Tipos de Manutenção:

• Corretiva: Corretiva: correção de erros encontrados pelo usuário.correção de erros encontrados pelo usuário.• Adaptativa:Adaptativa: modificações no software para se acomodar a mudanças do modificações no software para se acomodar a mudanças do

ambiente. Mudanças do ambiente envolvem os itens: CPU, Sistema ambiente. Mudanças do ambiente envolvem os itens: CPU, Sistema Operacional, Regras de Negócio, Paradigma de Desenvolvimento etc.Operacional, Regras de Negócio, Paradigma de Desenvolvimento etc.

• Evolutiva:Evolutiva: à medida que o software é usado, o cliente\usuário reconhece à medida que o software é usado, o cliente\usuário reconhece funções adicionais que podem ser úteis. Manutenção evolutiva estende o funções adicionais que podem ser úteis. Manutenção evolutiva estende o software para além dos seus requisitos funcionais originais.software para além dos seus requisitos funcionais originais.

• PreventivaPreventiva: :

– ETAPA 3: Manutenção!!!!!!!Manutenção!!!!!!!

Page 7: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

Ciclo de Vida Clássico: (Waterfall Model ou cascata)

Análise de Requisitos

Codificação

Teste de Unidade e Integração

Teste de Sistema

Teste de Aceitação

Entrega e Manutenção

Projeto do Sistema

Projeto dos Programas

-Projeto de Alto Nível

- Projeto de Baixo Nível

Características:•Seqüencial•Conceitualmente Simples•Guiado por documentos

Page 8: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

8

Contribuições x Problemas – Ciclo de Vida Clássico:

Define claramente as fases de desenvolvimento de software, permitindo a definição de métodos e atividades em cada fase.

Permite a definição dos “workproducts” ou artefatos a serem entregues em cada atividade.

Outros modelos representam simplesmente variações do ciclo clássico, incorporando loops e atividades extra.

Problemas: – projetos de software na prática raramente seguem um fluxo

seqüencial; – não suporta mudança de requisitos que pode ocorrer ao longo do

projeto; – cliente acaba esperando muito tempo por algum resultado concreto

do trabalho.

Page 9: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

Ciclo de Vida Modelo em V

Análise de Requisitos

Projeto do Sistema

Projeto dos Programas

Codificação

Teste de Aceitação

Teste de Sistema

Teste de Unidade e Integração

Entrega e Manutenção

Valida requisitos

Verifica Projeto

Características:•Relaciona Teste à Análise e Projeto.•As conexões implicam em retrabalho se problemas são encontrados.•O foco reside na atividade e na corretude.

Page 10: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

10

Ciclo de Vida Modelo em V Foco em testes.

Casos de Teste vão sendo criados ao longo das atividades de análise e projeto.

A ligação existente entre os lados direito e esquerdo do V implica no fato de que se problemas são encontrados durante testes (verificação e validação), então atividades do desenvolvimento podem ser re-executadas fixando erros em requisitos, projeto e código.

Adequado para sistemas com alta criticalidade.

Page 11: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

11

Verificação x Validação

=> Verificação: “Estamos construindo certo o produto?”

=> Validação: “Estamos construindo o produto certo?”

Validação: assegurar que o sistema implementou todos os requisitos.

Verificação: assegurar que cada função executa corretamente.

Page 12: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

Ciclo de Vida baseado em Prototipação

Lista de Revisões

Lista de Revisões

Lista de Revisões

Protótipo deRequisitos

Protótipo do Projeto

Protótipo do Sistema

revisaprotótipo

Revisãode usuário e cliente

Teste

Características:Reduz os riscos e incertezas do desenvolvimento.

Requisitos do sistema

Sistema Entregue

Page 13: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

13

Prototipação: Protótipo: produto parcialmente desenvolvido,

permitindo que usuários, clientes e desenvolvedores avaliem aspectos do sistema proposto e decidam se estes estão apropriados ao produto final.

Defeitos podem ser detectados mais cedo no desenvolvimento de software.

Prototipação Descartável x Evolutiva. Prototipação descartável pode ser útil para elicitação

de requisitos.

Page 14: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

Ciclo de Vida Baseado em Desenvolvimento por Fases: Incrementos e Iterações

Sistema em DesenvolvimentoDESENVOLVEDORES

Construção da Release 1

Construção da Release 2

Construção da Release 3

Utiliza Release 1

Utiliza Release 2

Utiliza Release 3

Tempo

USUÁRIOS

Características: •Reduz o tempo de entrega, pois permite que o sistema sejaentregue em partes. •Geralmente há dois sistemas funcionando em paralelo: sistema operacional ou de produção e sistema em desenvolvimento.

Page 15: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

Ciclo de Vida Baseado em Desenvolvimento por Fases: Incremental e Iterativo

Desenvolvimento Incremental

Release 1 Release 2 Release 3

Parte das Funcionalidades

Desenvolvimento Iterativo

Page 16: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

16

Desenvolvimento Iterativo e Incremental Desenvolvimento Incremental: o sistema, como

definido na especificação de requisitos, é particionado em subsistemas por funcionalidade.

Desenvolvimento Iterativo: permite a entrega de um sistema completo no início do processo, e, então, aumenta a funcionalidade de cada subsistema a cada nova versão.

Page 17: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

Modelo em Espiral

Planejamento

Coleta Inicial dos Requisitos e Planejamento do Projeto

AVALIAÇÃO DO CLIENTE ENGENHARIA

PLANEJAMENTO ANÁLISE DE RISCOS

Avaliação do Cliente

Análise dos Riscos baseada nos requisitos iniciais

Protótipo deSoftware Inicial

Protótipo de Nível Seguinte

Sistema construído pela Engenharia

Análise de Riscos baseada na reação do cliente

Page 18: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

18

Ciclo de Vida em Espiral: Guiado pelos Riscos. Pode ser usado como um meta-modelo. Ressalta a importância de duas atividades de

engenharia de software:– Planejamento: determinação dos objetivos, alternativas e

restrições. – Análise dos Riscos: identificação, análise e monitoramento

dos riscos.

Abordagem evolucionária ao desenvolvimento de software, capacitando o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva.

Page 19: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

19

Ciclo de Vida em Espiral:

Pode ser visto como desenvolvimento iterativo, onde, a cada volta na espiral (a cada iteração do desenvolvimento) as atividades do desenvolvimento podem ser re-executadas com maior ou menor intensidade sobre determinados artefatos de software.

Page 20: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

20

RUP:THE RATIONAL UNIFIED PROCESS

Processo de engenharia de software, desenvolvido e mantido pela Rational Software Corporation.

Muito utilizado pela indústria para desenvolvimento de software utilizando a linguagem de modelagem unificada UML.

Pode ser visto como um framework, o qual pode ser adaptado e estendido para atender às necessidades específicas de uma organização.

Page 21: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

21

RUP: THE RATIONAL UNIFIED PROCESS

Princípios:– Desenvolver software iterativamente;– Gerenciar requisitos;– Utilizar arquiteturas de software baseadas em

componentes;– Modelar software visualmente utilizando a UML;– Verificar a qualidade do software continuamente;– Controlar mudanças no software (gerência de

configuração).

Page 22: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

RUP: um Processo Iterativo e Incremental

Management Environment

Requirements

Analisys and Design

Implementation

Test

Avaliação

Planejamento

Deployment

Initial Planning

Each Iteration Results in an executable release.

Page 23: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

23

Processo – Elementos:

Elementos que compõem um modelo de processo [RUP2000]:– Workers: the who (trabalhadores/desenvolvedores

- pessoas)– Activities: the how (atividades)– Artifacts: the what (artefatos) – Workflows: the when (quando)

Page 24: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

24

WORKERS (pessoas): Define o comportamento e responsabilidades de um

indivíduo ou grupo de indivíduos trabalhando juntos como um time.

Comportamento = atividades que o desenvolvedor executa

Responsabilidades = artefatos que o desenvolvedor deve produzir, modificar ou controlar

O termo worker refere-se ao papel desempenhado pelo indivíduo. Exemplos: analista, projetista, projetista de testes, revisor de projeto, gerente de configuração, etc.

Page 25: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

25

Activities (Atividades): Definem o trabalho que deve ser executado pelos

desenvolvedores. Unidade de trabalho que um indivíduo em um

determinado papel deve executar. Atividades possuem artefatos de entrada e artefatos

de saída. Exemplos de atividades:

– Produzir casos de uso: worker: analista de sistemas;– Revisar o projeto: worker: revisor de projeto;– Executar teste de desempenho, etc.

Page 26: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

26

Artifacts (Artefatos): Artefato: pedaço de informação que é produzido,

modificado ou utilizado por um processo. Artefatos são os produtos (ou sub-produtos)

tangíveis ao longo do processo. Exemplos (em diferentes níveis de granularidade):

– Um modelo:modelo de casos de uso, modelo de classes, etc.

– Um elemento de modelo: uma classe, um caso de uso, ou um subsistema.

– Um documento: como um documento de requisitos, lista de itens de riscos, plano de projeto, etc.

– Casos de Teste, Código fonte, executáveis, etc.

Page 27: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

27

Workflows: Workflow: seqüência de atividades que produz um

resultado observável. Workflows definidos no RUP:

– Core Workflows:• Modelagem de Negócio• Modelagem e Especificação de Requisitos• Análise e Projeto• Implementação• Teste• Entrega

– Support Workflows:• Gerência de Projeto• Gerência de Mudanças e Configuração• Ambiente

Page 28: Processos de Desenvolvimento de Software Professora: Aline Vasconcelos Cefet Campos aline.vasconcelos@terra.com.br

28

RUP Workflows: O RUP é caracterizado por fases genéricas, cada

uma definindo loops (iterações) de trabalho no desenvolvimento.

Cada workflow é revisitado, executado novamente a cada iteração de desenvolvimento, com maior ou menor ênfase dependendo do estágio em que se encontra o projeto.