• Nenhum resultado encontrado

A3_Processos de Software_6x1

N/A
N/A
Protected

Academic year: 2021

Share "A3_Processos de Software_6x1"

Copied!
17
0
0

Texto

(1)

Processos de Software

Engenharia de Software I

Processos de software

Atividades para especificar, projetar, implementar e testar sistemas de software.

Processos de software

Uma Visão Genérica: 3 Fases

Definição - “o que”

Engenharia do Sistema Planejamento do Projeto Análise de Requisitos Desenvolvimento - “como” Projeto Geração do Código Teste Manutenção

Processos de Software

Um processo de software é um método para desenvolver ou produzir software.

A pesquisa em processo de software lida com métodos e tecnologias estimativas, suporte e melhoria das atividades de desenvolvimento de software.

Definequem faz o que,quandoecomo.

Processos de software

O processo é o instrumento capaz de responder a qualquer momento: O que é feito? Produto

Como é feito? Passos Por quem é feito? Agente O que usa? Insumos O que produz? Resultados

Modelo de Processo de software

Estado Atual Definição do problema Integração da solução Desenvolvimento Técnico

(2)

Modelagem

Modelagem é uma técnica de engenharia aprovada e bem aceita

modelos de arquitetura de casas e de grandes prédios

modelos matemáticos a fim de analisar os efeitos de ventos e tremores de terra --> causas

Modelos

Modelos

São construídos para permitir um melhor entendimento sobre o sistema que está sendo construído.

especificar a estrutura e comportamento

guia para construção do sistema

documentam as decisões tomadas

Objetivos da modelagem

Auxiliar no processo de produção: produtos de alta qualidade, produzidos mais rapidamente e a um custo cada vez menor.

Atributos: abstração, visibilidade, especificação, construção, confiabilidade, manutenibilidade, segurança, documentação.

Modelos de processo de software

Abstração

Melhor entendimento e maior compreensão

Visualização

Visualização antecipada antes da implementação Visões complementares do software

Modelos de processo de software

Especificação

Descrição precisa do que deve ser feito

Construção

Geração automática com ferramentas baseadas em modelos

Documentação

(3)

Objetivos da modelagem

Possibilitam:

Ao gerente: controlar o processo de desenvolvimento de sistemas de software.

Ao desenvolvedor: obter a base para produzir, de maneira eficiente, software que satisfaça os requisitos pré-estabelecidos.

Modelos de processo de software

Um conjunto de atividades fundamentais exigida para desenvolver um sistema de software Especificação. Projeto e implementação. Validação. Evolução.

Modelo x Processo

Um modelo é algo teórico, um conjunto de possíveis ações.

O processo deve determinar ações práticas a serem realizadas pela equipe como prazos definidos e métricas para se avaliar como elas estão sendo realizadas

Modelo x Processo

MODELO + PLANEJAMENTO = PROCESSO

Processo de software

Inicia com:

Processo de software

Processo de Engenharia de Requisitos

Estudo de viabilidade Econômica – relação custo/benefício; Técnica – tecnologia e capacitação; Jurídica – aspectos legais.

Levantamento e análise de requisitos Entrevista, observação, reuniões

(4)

Processo de software

Especificação de requisitos

Documento contendo os requisitos do usuário e do sistema – funcionais e não-funcionais

Validação de requisitos

Avaliação do documento de requisitos –consistência e integralidade.

Modelos de processo de software

-paradigmas

Uma estratégia de desenvolvimento que englobe processos, métodos e ferramentas, e as fases de desenvolvimento.

Modelo Sequencial Linear (ciclo de vida clássico)

Modelos Evolucionários Prototipação Incremental Espiral Métodos Ágeis

Modelo sequencial linear

(ciclo de vida clássico)

Método sequencial

O resultado de uma fase se constitui na entrada da outra.

Cada fase é estruturada como um conjunto de atividades que podem ser executadas por pessoas diferentes.

Modelo clássico

Modelo clássico

ENGENHARIA DE SISTEMAS

envolve a coleta de requisitos em nível do sistema, pequena quantidade de projeto e análise de alto nível

definir quais os requisitos do produto de software, sem especificar como esses requisitos serão obtidos.

Modelo clássico

ENGENHARIA DE SISTEMAS

deve-se analisar os requisitos, recursos e restrições para:

apresentar soluções;

estudar a viabilidade;

planejar e gerenciar o desenvolvimento a partir de estimativas e análise de riscos que se utilizam de métricas.

(5)

Modelo Clássico

Estudo de viabilidade

Modelo Clássico

Estudo de viabilidade

Analisar o problema em nível global

Identificar soluções alternativas (custos / benefícios)

Simulação do futuro processo de desenvolvimento.

Modelo Clássico

Estudo de viabilidade (cont)

Resultado documentação contendo: Definição do problema

Soluções alternativas, com os benefícios esperados

Fontes necessárias, custos e datas de entrega para cada solução proposta.

Modelo Clássico

Gerenciamento Definição de políticas:

Como produtos ou resultados intermediários vão ser armazenados acessados e modificados.

Como versões diferentes de sistemas são construídos.

Modelo Clássico

Gerenciamento (cont.)

Quais autorizações são necessárias para acessar os componentes de entrada/saída do banco de dados do sistema.

Recursos que afetam o processo de produção, particularmente com os recursos humanos.

Modelo Clássico

ANÁLISE DE REQUISITOS DE SOFTWARE

processo de coleta dos requisitos é intensificado e concentrado especificamente no software.

deve-se compreender o domínio da informação, a função, desempenho e interfaces exigidos.

(6)

Modelo Clássico

ANÁLISE DE REQUISITOS DE SOFTWARE

os requisitos (para o sistema e para o software) são documentados e revistos com o cliente.

Resultado o contrato de desenvolvimento

Modelo Clássico

PROJETO

É definida a solução do problema:

Decomposição do produto (subsistema, componentes etc).

Representação das funções do sistema em uma forma que possa ser transformada em um ou mais programas executáveis.

Modelo Clássico

PROJETO

Definição de “como” o produto deve ser implementado.

Dividido em:

Projeto de alto nível – decomposição lógica Projeto detalhado – decomposição física.

Modelo Clássico

PROJETO Concentra-se em: Estrutura de Dados; Arquitetura de Software; Detalhes Procedimentais e Caracterização de Interfaces.

Resultado documentação de especificação de projeto

Modelo Clássico

IMPLEMENTAÇÃO

Tradução das representações do projeto para uma linguagem “artificial” resultando em instruções executáveis pelo computador.

Resultado coleção de programas implementados e testados.

Modelo Clássico

INTEGRAÇÃO

Programas ou unidades de programas são integrados e testados como sistema.

Programas ou unidades são integradas à medida em que forem sendo desenvolvidos.

(7)

Modelo Clássico

OPERAÇÃO

Instalação e configuração

Utilização

inicialmente operado por um grupo de usuários

Modelo Clássico

MANUTENÇÃO

Corretiva: correção de erros remanescentes

Adaptativa: adaptação dos produtos às mudanças novas versões e novas situações de operação – hardware, sistemas operacionais.

Evolutiva: alteração dos requisitos e manutenção da qualidade.

Resultado

produto em funcionamento.

Modelo Clássico

Modelo Clássico

Modelo Clássico

Contribuições

Processo de desenvolvimento de software deve ser sujeito à disciplina, planejamento e gerenciamento.

A implementação do produto deve ser postergada até que os objetivos tenham sido completamente entendidos.

Deve ser utilizado quando os requisitos estão bem claros no inicio do desenvolvimento.

Modelo Clássico

Problema

Rigidez

Qualquer desvio é desencorajado

Todo o planejamento é orientado para a entrega do produto de software em uma data única.

(8)

Modelo Clássico

Problema (cont.)

Processo de desenvolvimento pode ser longo e a aplicação pode ser entregue quando as necessidades do usuário já tiverem sido alteradas.

Projetos reais raramente seguem o fluxo sequencial que o modelo propõe.

Modelo Clássico

Problema (cont.)

Logo no início é difícil estabelecer explicitamente todos os requisitos. No começo dos projetos sempre existe uma incerteza natural.

O cliente deve ter paciência. Uma versão executável do software só fica disponível numa etapa avançada do desenvolvimento

Modelo Clássico

Modelo Evolucionário

Abordagem baseada na ideia de desenvolver uma

implementação inicial, expor o resultado ao

comentário do usuário e fazer seu aprimoramento

por meio de muitas versões.

Especificação e desenvolvimento são intercalados

Modelo Evolucionário

As atividades de desenvolvimento e validação são desempenhadas paralelamente, com um rápido feedback entre elas.

Os detalhes e extensões ainda devem ser definidos. Ex: editor de texto.

Modelo Evolucionário

Tipos:

Desenvolvimento exploratório

(9)

Modelo Evolucionário

Modelo Evolucionário

Trabalhar junto com o cliente, a fim de explorar seus requisitos e entregar um sistema final.

O desenvolvimento se inicia com as partes do sistema que são mais bem compreendidas.

Modelo Evolucionário

O sistema evolui com o acréscimo de novas características à medida que elas são propostas pelo cliente.

Importante quando é difícil, ou mesmo impossível, estabelecer uma especificação detalhada dos requisitos do sistema a priori.

Modelo Evolucionário

Modelo Evolucionário

Obter os requisitos do cliente e, a partir disso, desenvolver uma melhor definição de requisitos para o sistema.

Concentra em fazer experimentos com partes dos requisitos que estejam mal entendidos.

Modelo Evolucionário

Usuário define uma série de objetos para o

produto de software, mas não consegue

identificar detalhes de entrada,

processamento ou requisitos de saída.

O desenvolvedor está incerto sobre a

eficiência de um algoritmo, a adaptação de

um sistema operacional ou ainda sobre a

forma da interação homem-máquina.

(10)

Modelo Evolucionário

Modelo Evolucionário

Modelo Evolucionário

Modelo Evolucionário

(11)

Modelo Evolucionário

Modelo Evolutivo: contribuições

Sistemas pequenos

Útil quando os requisitos estão obscuros

Especificação é construída gradativamente

Possibilitam um rápido desenvolvimento da aplicação

Testes podem ser mais efetivos.

Modelo Evolutivo: problemas

O processo não é visível

Os sistemas são frequentemente mal-estruturados

e mal-documentados

Processo não é claro, dificuldade de

planejamento e gerenciamento

Modelo Evolutivo: problemas

Cliente não sabe que o software que ele vê, não considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo. Não aceita bem a ideia que a versão final do software vai ser construída e “força” a utilização do protótipo como produto final.

Modelo Espiral

Modelo Espiral

Desenvolvido para englobar as melhores características do ciclo de vida . São avaliados riscos explicitamente e são solucionados ao longo do processo. Processo é representado como uma espiral em lugar de ser representado como uma sequência de atividades.

(12)

Modelo Espiral

Cada loop na espiral representa uma fase do processo de software. Não existem fases fixas.

Engloba as melhores características do ciclo de vida Clássico como o da Prototipação, adicionando um novo elemento: a ANÁLISE DOS RISCOS

Modelo Espiral: funcionamento

À medida que a volta na espiral acontece, versões mais completas do software vão sendo progressivamente construída.

Durante a primeira volta, são definidos objetivos, alternativas e restrições. Se a análise de risco indicar que há incerteza nos requisitos, a prototipação pode ser usada para auxiliar o desenvolvedor e o usuário.

O usuário avalia o produto e faz sugestões de modificações.

Modelo Espiral

Modelo Espiral

São identificados objetivos específicos, tais como

desempenho e funcionalidade.

São determinadas alternativas para atingir estes

objetivos.

São identificadas restrições do processo e do produto

e é elaborado um relatório de gestão detalhado.

(13)

Modelo Espiral

Modelo Espiral

O projeto é revisado e a próxima fase da espiral é planejada. Toma-se decisão sobre avançar para mais uma volta na espiral. Se for para avançar são desenhados os planos para a próxima fase do projeto.

Desenvolvimento rápido de software

Desenvolvimento Rápido de Software

Métodos ágeis

Extreme Programming Desenvolvimento rápido de aplicações Prototipação de software

Desenvolvimento Rápido de Software

Devido à rápida mudança dos ambientes de negócio, os negócios devem responder às novas oportunidades e à competição.

Isso requer software e desenvolvimento rápido, e a entrega é, frequentemente, o requisito mais crítico para sistemas de software.

Métodos Ágeis

Movimento iniciado por programadores experientes e consultores em desenvolvimento de software.

Objetivo: satisfazer o cliente entregando, rapidamente e com frequência, sistemas com algum valor.

Os métodos ágeis são, provavelmente, os mais adequados para sistemas de negócio de porte pequeno/médio.

(14)

Métodos Ágeis

A insatisfação com os antigos métodos de projeto levou à criação dos métodos ágeis. Esses métodos:

Enfocam o código ao invés do projeto;

São baseados na abordagem iterativa para desenvolvimento de software;

São destinados a entregar software de trabalho e evoluí-lo rapidamente para atender aos requisitos que se alteram.

Princípios dos métodos Ágeis

Envolvimento do cliente

Seu papel é fornecer e priorizar novos requisitos do sistema e avaliar as iterações do sistema.

Clientes devem ser profundamente envolvidos no processo de desenvolvimento.

Princípios dos métodos Ágeis

Entrega incremental

O software é desenvolvido em incrementos e o cliente especifica os requisitos a serem incluídos em cada incremento.

Princípios dos métodos Ágeis

Pessoas, não processo

As habilidades da equipe de desenvolvimento devem

ser reconhecidas e exploradas.

Os membros da equipe devem desenvolver suas

próprias

maneiras

de

trabalhar

sem

processos

prescritivos.

Princípios dos métodos Ágeis

Aceite as mudanças

Projete o sistema para acomodar mudanças.

Mantenha a simplicidade Elimine a complexidade do sistema.

Extreme Programming

É talvez o mais conhecido e mais amplamente usado dos métodos ágeis. A extreme Programming (XP) leva uma abordagem “extrema” para desenvolvimento iterativo.

(15)

XP

Novas versões podem ser compiladas várias vezes por dia. Os incrementos são entregues para os clientes a cada 2 semanas.

Todos os testes devem ser realizados para cada nova versão.

Os valores de XP

Comunicação Simplicidade Retorno (feedback) Coragem

XP

Grupos de 2 a 10 programadores Projetos de 1 a 36 meses (calendário) De 1000 a 250 000 linhas de código Papéis:

Programadores foco central (sem hierarquia) “Treinador” ou “Técnico” (coach) “Acompanhador” (tracker) Cliente

XP

Treinador ou técnico:

Em geral, o mais experiente do grupo. Identifica quem é bom no que. Concentra-se na execução e evolução técnica do projeto. Eventualmente faz programação pareada. Chama a atenção para oportunidades de melhorias. Seu papel diminui à medida em que o time fica mais maduro.

XP

Tracker (Acompanhador)

Coleta estatísticas sobre o andamento do projeto. Número de testes funcionais definidos e funcionando. Número de classes, métodos, linhas de código

Mantém histórico do progresso. Faz estimativas para o futuro.

Um dia na vida de um programador XP

Escolhe uma estória do cliente.

Procura um par livre.

Escolhe um computador para programação pareada (

pair programming).

Seleciona uma tarefa claramente relacionada a uma

característica

(feature)

desejada pelo cliente.

(16)

Práticas do XP

Planejamento Incremental Registrados em cartões de histórias

Pequenos releases

Conjunto mínimo útil de funcionalidade é desenvolvido.

Práticas do XP

Projeto simples

Projeto suficiente para atender aos requisitos atuais.

Desenvolvimento test-first

Uso um framework automatizado.

Refactoring

Espera-se que todos os desenvolvedores recriem o código continuamente.

Programação em pares

Os desenvolvedores trabalham em pares.

Práticas do XP

Propriedade coletiva

Os pares trabalham em todas as áreas do sistema.

Integração contínua

Tarefa concluída é automaticamente integrada ao sistema.

Ritmo sustentável

Não aceitar grande quantidade de horas extras.

Cliente on-site

Um usuário do sistema deve estar disponível em tempo integral..

Cenários de requisitos

Em um processo XP, os requisitos de usuários são expressos como cenários ou histórias de usuários.

Essas histórias são escritas em cartões, e a equipe de desenvolvimento quebra-os em tarefas de implementação. Essas tarefas são as bases das estimativas de cronograma e de custo.

O cliente escolhe as histórias para inclusão no próximo release, baseado nas suas prioridades e nas estimativas de cronograma.

Cartão de estória para baixar

documentos

Programação em pares

Erro de um é detectado imediatamente pelo outro

(grande

economia de tempo).

Maior diversidade de ideias, técnicas, algoritmos.

Enquanto um escreve, o outro pensa em contra exemplos, problemas de

eficiência, etc.

(Vergonha de escrever código feio

(17)

Propriedade coletiva de código

Padrões de estilo adotados pelo grupo inteiro. O mais claro possível.

XP não se baseia em documentações. Comentários sempre que necessários e padronizados.

O código do XP pertence a todos.

Todo código é integrado e testado depois de algumas horas, um dia no máximo.

Quando XP não deve ser usada

Quando o cliente não aceita as regras do jogo.

Quando o cliente quer uma especificação detalhada do sistema antes de começar.

Quando os programadores não estão dispostos a seguir (todas) as regras. Se (quase) todos os programadores do time não são experientes.

Quando XP não deve ser usada

Grupos grandes (>10 programadores).

Quando feedback rápido não é possível: sistema demora 6h para compilar. testes demoram 12h para rodar. exigência de certificação que demora meses.

Quando o custo de mudanças é essencialmente exponencial. Quando não é possível realizar testes (muito raro).

Referências

Documentos relacionados

Quando os dados são analisados categorizando as respostas por tempo de trabalho no SERPRO, é possível observar que os respondentes com menor tempo de trabalho concordam menos que

Para disciplinar o processo de desenvolvimento, a Engenharia de Usabilidade, também conceituada e descrita neste capítulo, descreve os métodos estruturados, a

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no

Dessa forma, o Artigo II intitulado “Validação da World Health Organization Disability Assessment Schedule (WHODAS 2.0) na Versão Brasileira para Uso em Pessoas com

Meus estudos recentes comprovam que as vacinas recombinantes contra a cinomose canina são capazes de proteger completamente filhotes de cães contra a cinomose canina após apenas

motivo superveniente, o CRCDF convocará o(s) fornecedor(es) signatário(s) para negociar(em) a redução dos preços aos valores praticados pelo mercado.. Não havendo êxito

Bendito louvado seja Nosso Senhor Jesus Cristo Para sempre seja louvada A Nossa Mãe Maria Santíssima O Minha Mãe, Minha Rainha Tenha de nós compaixão Para nós poder sairmos